|||||| |||||| || || |||||| |||||| || || ||| || || || || ||| |||| |||||| || |||| Your || || || || ||| || || |||||| |||||| || || |||||| |||||| GEnieLamp Computing || |||||| || || |||||| RoundTable || || || ||| ||| || || || |||||| |||||||| |||||| RESOURCE! || || || || || || || ||||| || || || || || ~ WELCOME TO GENIELAMP A2Pro! ~ """"""""""""""""""""""""""" ~ GEnieLamp A2Pro Turns 1 ~ ~ Underneath the Memory Manager ~ ~ Handle Locking Blues ~ QuickDraw Coordinates ~ ~ New Programming Digests ~ TEInsert Strangeness ~ ~ Tour of Apple Assembly Line ~ Tour of 8/16 Central ~ ~ HOT NEWS, HOT FILES, HOT MESSAGES ~ ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ GEnieLamp A2Pro ~ A T/TalkNET OnLine Publication ~ Vol.4, Issue 12 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Editor.......................................................Nate Trost Publisher.................................................John Peters Copy-Editor............................................Bruce Maples \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// ~ GEnieLamp IBM ~ GEnieLamp ST ~ GEnieLamp [PR] ~ GEnieLamp Windows ~ ~ GEnieLamp A2Pro ~ GEnieLamp Macintosh ~ GEnieLamp TX2 ~ ~ GEnieLamp A2 ~ LiveWire (ASCII) ~ GEnieLamp MacPRO ~ ~ Solid Windows ~ Config.sys ~ A2-Central ~ ~ 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? <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""" ~ February 1, 1994 ~ 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] RTC WATCH .............. [UDU] HOT Files You Can Download. Tales from A2Pro RTCs. DEVELOPERS CORNER ....... [DEV] OFF THE DEEP END ........ [OFF] News From Online Developers. It's Top-10 off the high dive. TOUR OF AAL ............. [AAL] LOG OFF ................. [LOG] Apple Assembly Lines Tour. 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 which gives you up to four free """"""""""" 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. GEnie's non-prime time connect rate at 2400 baud is $3.00. To sign up for GEnie service, just follow these simple steps. 1. Set your communications software to half duplex (local echo) 8 bits, no parity and 1 stop bit, at 300, 1200 or 2400 baud. 2. Call (with modem) 1-800-638-8369. Upon connection type HHH. 3. Wait for the U#= prompt. Type: XTX99014,DIGIPUB and hit RETURN. 4. Have a major credit card ready, as the system will prompt you for your information. If you need more information, call GEnie's Customer Service department at 1-800-638-9636. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" [EOA] [FRM]////////////////////////////// FROM MY DESKTOP / ///////////////////////////////// Notes From My Desktop """"""""""""""""""""" o TOP OF THE PAGE >>> TOP OF THE PAGE <<< """"""""""""""""""""""" HAPPY BIRTHDAY! GEnieLamp A2Pro is one year old! I hope everyone has """"""""""""""" found the Lamp useful during the past year. As we journey into 1994 the Apple II programming community is still alive and well. Over the past year we've seen powerful new tools (such as Object Oriented Programming), new compilers (like ORCA/Modula-2), and evolving environments (GNO/ME 2.0) that are making the Apple II easier and more fun to program than ever before! Hang onto your hats, there's going to be some _neat_ stuff in A2Pro this year, and we'll be here to let you know all about it. Enjoy the issue and happy hacking! Nate 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) /__/ |__|__/______ /_//_// / Nathaniel Sloan (A2PRO.HELP) /__/ |__|________// / \/_/ Nate Trost (A2PRO.GELAMP) [*][*][*] [EOA] [HEY]////////////////////////////// HEY MISTER POSTMAN / ///////////////////////////////// Is That A Letter For Me? """""""""""""""""""""""" By Nate C. Trost [A2PRO.GELAMP] o A2PRO ODDS AND ENDS o BULLETIN BOARD HOT SPOTS o WHAT'S NEW? o PROGRAMMER'S TIPS o MESSAGE SPOTLIGHT >>>BULLETIN BOARD HOT SPOTS <<< """"""""""""""""""""""""""""""" [*] CAT4, TOP2, MSG{16}.....................C Questions and Answers [*] CAT9, TOP7, MSG{89}................Applesoft BASIC help please! [*] CAT11, TOP15, MSG{14}..................Macintosh FOND file format [*] CAT15, TOP2, MSG{101}.............................Memory Manager [*] CAT15, TOP3, MSG{30}......................Miscellaneous Tool Set [*] CAT15, TOP6, MSG{79}...............................Event Manager [*] CAT15, TOP14, MSG{93}..............................Window Manager [*] CAT15, TOP15, MSG{52}................................Menu Manager [*] CAT21, TOP1, MSG{3}........................Why Human Interfaces? [*] CAT30, TOP2, MSG{70}.........................Using the GNO Shell >>> A2PRO ODDS AND ENDS <<< """"""""""""""""""""""""""" A2PRO 1993 IN REVIEW We added a lot of stuff in A2Pro in the past year """""""""""""""""""" to help Apple II programmers: o Six RTCs each and every week with live programming help o Apple Assembly Line and 8/16-Central Magazines available in our library o Apple II content from _develop_ in our library o GEnieLamp A2Pro (which celebrates its first anniversary in February) o Library and bulletin board reorganization and simplification o Release of GEM and CoPilot for the cost of downloads o "A2Pro Blue Plate Special" to call attention to great new downloads o Formal RTCs with guests you want to see the most, like Mike Westerfield, Jawaid Bazyar, Josh Thompson and more o Company support from those who help you make programs o A2 University courses on Resources, Compression and the List Manager o Excellent beta-testing facilities for programs from AutoPilot to AppleWorks 4.0 and Spectrum And, of course: o Cut the fee for accessing A2Pro in half for most users What we want to know now is "What next?" What do you want to see from us that we're not delivering on? We smell the signs of boredom from some of you, and we'd like to know what we could do to make things better, easier or simpler. We're here to make programming the Apple II more simple, more fun and more interesting. What should our next move be to help you feel that way? --Matt (M.DEATHERAGE [A2Pro Leader], CAT1, TOP3, MSG:95\3/M530) >>> WHAT'S NEW? <<< """"""""""""""""""" PROGRAMMING DIGESTS AVAILABLE Weekly digests of messages from the """"""""""""""""""""""""""""" Usenet newsgroups comp.sys.apple2.programmer (general Apple II programming discussion) and comp.sys.apple2.gno (discussion about GNO) will now be uploaded to Library I in A2Pro. You will be able to quickly locate them using the keyword "usenet" or "digest", or by my uploader name (B.TAO). The messages are compatible with the GEnie CoPilot offline reader (but you will not be able to reply directly). Please download the accompanying subject listing archive to see if there is anything of interest to you. I will highlight each week's most active subjects in the long description of the digest archives. The subject listings themselves cover three additional newsgroups that are available in Library 15 of A2. They are: comp.sys.apple2 (general Apple II chatter), comp.sys.apple2.comm (Apple II communications and networking) and comp.sys.apple2.marketplace (Apple II buy and sell). If you have any questions regarding these digests, or suggestions about their format, please leave a message in Cat 10, Top 10 (Internet and the Apple II) in A2. #3781 CSAGNO.04.BXY #3782 CSAPROG.04.BXY #3783 CSA2SUBJ.04.BXY BTW, the numbering here starts at 4 to keep these digests in sync with the ones already uploaded to A2. (B.TAO, CAT1, TOP17, MSG:129/M530) >>> PROGRAMMER'S TIPS <<< """"""""""""""""""""""""" BEHIND THE MEMORY MANAGER I've come upon something using the memory """"""""""""""""""""""""" manager that I don't understand. I ran the following in Orca C 2.0.1 (Sys 6.0.1) #include #include #include #include void main(void) { handle buf; Word MyID, error; long handsize; MyID = userid() + 0x100; buf = NewHandle(000001L, MyID, 0, 0L); if (toolerror()) printf("Unlikely here\r"); DisposeHandle(buf); if (!toolerror()) printf("\rHandle is disposed of.\r"); CheckHandle(buf); error = toolerror(); if (error) printf("CheckHandle error - %4X\r", error); else printf("Mem. manager says handle is okay???\r"); handsize = GetHandleSize(buf); if (!toolerror()) printf("\rAnd crazily enough--It has a size. -- %ld\r",handsize); } After disposing the handle the program follows the path of a valid handle. After DisposeHandle shouldn't I have gotten an INVALID HANDLE error on buf? Does anyone else get this result. TBR1, 3 and 6.0 update don't seem to cover this nor do the TN's (but I haven't exhaustively read the notes, only scanned them.) Is this a feature of the memory manager such that I should set my disposed handles to NULL after getting rid of them? Any insight would be appreciated. (P.LAWRENCE5 [Frank@Work], CAT15, TOP2, MSG:101/M530) <<<<< > After DisposeHandle shouldn't I have gotten an INVALID """"" > HANDLE error on buf? No. > Is this a feature of the memory manager such that I should set my > disposed handles to NULL after getting rid of them? Not really. (Helpful, aren't I?) The problem is that you're expecting CheckHandle to tell you whether or not a handle is currently usable. That's not what it does. It checks to see if the address you specify is really a handle data structure in one of the Memory Manager's lists. When you dispose a handle, it gets moved to the "Free" list so it can be reused. It still has a valid forwards and backwards link, so CheckHandle (correctly) says "Yes, this is a handle and it belongs to the Memory Manager." It just can't be operated on until the Memory Manager returns it again from NewHandle. (Handles in the "purge" list can be reused with ReallocHandle, though.) The Memory Manager indicates handles aren't in use by having them dereference to NIL. If you want any other indication, such as having NIL in your local variables (which are basically copies of the master pointer), you have to do it yourself, but strictly speaking it's unnecessary. --Matt (M.DEATHERAGE [A2Pro Leader], CAT15, TOP2, MSG:102/M530) >>>>> My usual luck I guess. Of the three issues of a handle (validity, """"" size and pointer value) I tried the two that would not give me what I wanted to know. ( No wonder it takes me so long to program things :-) next time I'll flip a coin or something :-) Just out of curiousity regarding the free list, are these freed handles actually deleted from the handle list when an app. is given a quit call? (Wait a minute--apps can restart, hmm... are they reassigned to whomever calls the memory manager (ie. given a new id))? Else it would seem that running the GS for a long time would generate a huge (unmanageable) free list. If this line is getting out of hand just ignore my ramblings. I very much appreciate the earlier explaination. Feels so good to know I can fix my code tonight. (P.LAWRENCE5 [Frank@Work], CAT15, TOP2, MSG:103/M530) <<<<< Once a handle is disposed, _you_ must not reference it again. """"" It can be returned in the future from NewHandle but it won't necessarily be returned to you. The IIgs has a big list of handles, over 1000 in normal cases, and they're allocated from the free list. Any handle you dispose goes back into the free list to be reused. If the free list ever empties, the Memory Manager has to allocate memory to hold more master pointers, and that can cause fragmentation, so it tries to avoid it. --Matt (M.DEATHERAGE [A2Pro Leader], CAT15, TOP2, MSG:104/M530) HANDLE LOCKING BLUES I am allocating some memory to hold an off-screen """""""""""""""""""" picture which I then transfer to the GrafPort which holds the window on-screen. I have a record which holds information relating to the window with a pointer to this memory being one of the data items. I am using this record (and thus the pointer to the off-screen memory) to do updates on the screen window. My question. I am currently locking the handle to this memory and leaving it locked. Would I be better off unlocking it after I get the pointer in my record and then relocking it everytime I do a screen update, or leaving it locked? If the former, would I do better to put the handle in my record rather than the pointer and thus be able to immediately lock it, or to find the handle each time? David R. Pierce (D.PIERCE8, CAT15, TOP2, MSG:110/M530) >>>>> When I was faced with the same issue in 3D Logo, I saved the """"" handle, not the pointer, and left the handle unlocked except when it was actually in use. Mike Westerfield (BYTEWORKS, CAT15, TOP2, MSG:111/M530) <<<<< True defensive programming would dictate that any time you unlock """"" the handle, the pointer is suspect. While the system typically guarantees that no handles will move unless you call some of the tools, you may be calling subroutines of your own that call those tools. The safest thing is to make the handle fixed and not just locked (both are options to NewHandle), but that promotes fragmentation much more than the next safest method, which is to always lock the handle while you have any pointers into it. (I'm sure this is only one of many opinions on the subject...) Todd Whitesel (A2PRO.TODDPW, CAT15, TOP2, MSG:112/M530) >>>>> Todd, as long as the update routine locks the handle before use, """"" you're completely safe. In many cases, you're save even if you don't lock the handle, as long as you dereference the pointer just before you use it. (I always lock the handle, though, just to be safe.) But true memory-efficient programming dictates that you use a moveable, not fixed handle, and leave it unlocked when not in use so it can be moved. That helps prevent memory fragmentation. Mike Westerfield (BYTEWORKS, CAT15, TOP2, MSG:113/M530) <<<<< What everyone said. :) """"" If you're going to leave the thing locked the entire time, use a fixed handle. The only system requirement is that the memory not move when QuickDraw is trying to draw into it. (QuickDraw expects pointers in grafPorts to be valid whenever it tries to use them. It doesn't care if the pointer is a dereferenced handle or not.) And definitely stash the handle. There's no need to make the Memory Manager walk its linked lists all the time by calling FindHandle just so you don't have to stash four bytes. :) --Matt (M.DEATHERAGE [A2Pro Leader], CAT15, TOP2, MSG:114/M530) QUICKDRAW COORDINATES I have a ORCA/PASCAL S16 program which uses the """"""""""""""""""""" 320-graphics mode. I always assumed that the screen coordinates are 0,0 to 319,199. When I do a MoveTo(0,199); LineTo(319,199) this draws a horizontal line at the very bottom edge of the screen. Similarly a MoveTo(319,0); LineTo(319,199) draws a vertical line at the very right edge. However, when I draw a rectangle using SetRect(0,0,319,199); PaintRect(theRect) this leaves a 1-pixel border on the right and bottom edges. I have to SetRect(0,0,320,200) to fill the entire screen. Why this inconsistency in coordinates between LineTo and PaintRect? (M.SAND1 [Mark], CAT15, TOP4, MSG:110/M530) <<<<< When QD draws a rectangle (or oval, rounded rect, etc.) the """"" coordinates are of the points that surround it. So the following 2 routines do the same thing: procedure FillbyLineTo(r:rect); var i: integer; {loop var} begin with r do for i := v1 to v2-1 do begin MoveTo(h1,i); LineTo(h2-1,i); end; end; procedure FillbyPaintRect(r:Rect); begin PaintRect(r); end; This is how QuickDraw is designed to work. I'm not sure why they did it this way, but they did. Live with it :) (T.BUCHHEIM, CAT15, TOP4, MSG:111/M530) >>>>> What Tim said. When drawing lines, there's no mathematical """"" specification for which pixels to draw between two points, since in QuickDraw, points are _between_ pixels. So to make it predictable, the pen draws to the lower right of the points on the line. Rectangles are mathematically determinable in this world, though -- since points are between pixels, a rectangle includes all the pixels between the points, and the "lower-right" rule doesn't apply. There's a picture of this in the beginning of the QuickDraw II chapter of Toolbox Reference, Volume II. --Matt (M.DEATHERAGE [A2Pro Leader], CAT15, TOP4, MSG:112/M530) ROM 3 SOUND LOCATION For the terminally curious (like me), here is the """""""""""""""""""" info on the "Apple II!" sound in the ROM 3 from my simple program that saves it to disk: ; The code to play the Apple II yell is at FE/07C6. ; The parameter block is at FE/080C. part1_loc gequ $FF1000 part1_size gequ $0C00 part2_loc gequ $FF1D00 part2_size gequ $1F00 (now I can throw out my notes I found while cleaning. :) (JAY.KRELL, CAT15, TOP8, MSG:103/M530) TASKMASTER EVENT HANDLING Quick question regarding Taskmaster. I have """"""""""""""""""""""""" written a subroutine that does a screen blanking after 5 minutes if no activity is detected. Activity is determined by Taskmaster returning a value other than zero. Certain functions, i.e. Text Edit, are handled internally by Taskmaster and there- fore, never return any value for the user to act on. As a result, if working on a text edit document, the screen blanks after five minutes. Is there a way to 'patch' and address into Taskmaster, or determine if Taskmaster has handled an event internally so that I can reset the count down timer and stop this irritating bug? Rob (R.SANT1, CAT15, TOP14, MSG:89/M530) >>>>> First, this is a really odd way of dealing with screen blanking, """"" but in any case, you're probably better off working with GetNextEvent (which is what TaskMaster calls). That way you'll know about every event and you'll work with programs that don't use TaskMaster (yes! there are some out there!) Also, check out the TaskMaster psuedo-code in TBR3, for many "automatic" cases that return null events, wmTaskData contains the original event (in your example, a keyDownEvt). (SOFTDISK.INC [Bryan Zak], CAT15, TOP14, MSG:90/M530) <<<<< Rob, the _result_ of TaskMaster indicates the action you're """"" supposed to take. If you want to know what TaskMaster _did_, look at the low word of wmTaskData. (This is only true if the return value is $0000, indicating TaskMaster handled everything.) --Matt (M.DEATHERAGE [A2Pro Leader], CAT15, TOP14, MSG:91\3/M530) TEINSERT PROBLEMS I do have a strange problem with TEInsert now. """"""""""""""""" I guess if I can make TESetText work correctly, then all I have to do is to exchange the TESetText with a TEInsert text, right? At least that was how I did it that far. But right now I write something to a TE control with TESetText, and I can overwrite this control with another TESetText just fine, with a TEInsert I never am able to display anything, no matter where I set the insertion point. Does anybody know situations, where the same TEInsert call fails when it works just right with TESetText? (A.CORRIERI [Alex], CAT15, TOP34, MSG:64/M530) <<<<< Yes, if the TextEdit record is read-only (fReadOnly is set in """"" the textflags field). My solution was to write TELock and TEUnlock routines which directly fiddle this bit (which I was told by DTS was okay). These routines are in GSLib if you are using ORCA/C :) Bryan (SOFTDISK.INC [Bryan Zak], CAT15, TOP14, MSG:66/M530) [*][*][*] >>> MESSAGE SPOTLIGHT <<< """"""""""""""""""""""""" The main problem with global variables is that they require the compiler to generate a global context for them. This varies from machine to machine, and if you start diving into parts of the operating system you may or may not get what you expect. Most IIgs C compilers put global variables in a separate segment, and set the processor's data bank register (DBR) to point to them, so they can generate 16- bit addressing to retrieve them. This works fine for most programs -- but what if you try to write a RunQ task or request procedure? Generally, the compiler doesn't know that a given procedure will be called from the system, so it generates code just as if everything is fine, but in reality the databank register is probably not set to point to your global variables in the middle of a request procedure, so unless you set it, any global access will write to the wrong place (or read from it). APW C has SaveDB/RestoreDB, and ORCA/C has #pragma databank, so these problems are not insurmountable -- but you have to be aware of them and code specifically for them, and the procedure changes for every machine you head to. (The Macintosh bases global variables off register A5, so all routines that are called from outside a program's main code have to set up their "A5 world," as it's called over there. On PowerPC-based Macintosh computers, it's based on register R2 (the "table of contents" register), but the OS manages to set it up for you automatically, unlike the 68K-based OS.) These kinds of things are part of why textbooks warn against global variables. --Matt (M.DEATHERAGE [A2Pro Leader], CAT4, TOP2, MSG:21/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] [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 38 EdIt-16 (Bill Tudor) 30 PROCYON, INC. 31 SOFTDISK PUBLISHING 33 GS+ MAGAZINE 34 JEM SOFTWARE 35 PRODEV, INC. 36 THE BYTE WORKS Each month this column feature highlights and news from various developers who provide support via A2Pro. >>> NEWS FROM BILL TUDOR <<< """""""""""""""""""""""""""" EDIT-16 STATUS EdIt-16 was up to version 1.2 when it was last handle """""""""""""" by that company that had your deskpak money. Lunar Production took over EdIt-16 publication in early 1993. They have now stopped operations, leaving EdIt-16 an orphan once again. Version 2.0 was the last shipped version. I am planning to make EdIt-16 available again, but I am not sure of the details (they still need to be worked out). Once it is available, I will let everyone know how they can get a copy of the current version if you do not already have one. Also, I am planning a maintenance realease so please send all bugs/suggestions to W.TUDOR (me). The major changes in version 2.0 are: o Multiple filename startup under Orca 1.x, 2.0, Merlin, ProSEL AND as an application (S16) file from Finder/etc. o Very large pathnames supported (up to 64k) o Read-only files can be loaded o Configuration file is now used (ed16.config), enabling network support amoung other things o A "Recently opened file" list of the last 10 files can be popped up for a real quick load. o "GoBack" command added (this is cool). After jumping to a line number or something, you can just "go back" to where you were. o Cursor position is "remembered" for the last 10 files o Find/Replace strings remain intact between uses. o Dialogs conform better to Apple UIG. I don't reccall offhand what v1.1-v1.2 changes were. I believe it was ORCA 2.0 and long pathname support. Anyway, EdIt-16 now has 90 commands. Editing buffers are still limited to 64k, however. Thanks, Bill {W.TUDOR} (W.TUDOR, CAT29, TOP38, MSG:99/M530) >>> NEWS FROM PROCYON INC. <<< """""""""""""""""""""""""""""" NEW 65816 ASSEMBLER I've been working on a simple assembler for the GS. """"""""""""""""""" It's written in C, and so far seems to be quite speedy. I'll be uploading it as an example of how _not_ to write language parsers :) This assembler is very, very simplistic because it is intended to be used with another program. I'll be using it with my experimental C compiler, but it would also be useful for anyone who wants to experiment with writing a compiler, but doesn't want to have to figure out OMF and all the associated data structures. I'll probably put it up sometime next week for people to look at. Jawaid (PROCYON.INC, CAT30, TOP5, MSG:40/M530) SPLAT! REQUIREMENTS Is GNO required for splat? """"""""""""""""""" I don't own GNO, I still use the ORCA shell :) Ken "KAZ" Kazinski (K.KAZINSKI, CAT30, TOP9, MSG:22/M530) >>>>> Splat! works great from ORCA, the Finder, or anywhere :) """"" Jawaid (PROCYON.INC, CAT30, TOP9, MSG:26/M530) <<<<< Well, to be picky, it works anywhere under GS/OS. It doesn't """"" work under ProDOS 8, but then its unlikely that any program written with Orca/C or Pascal would either. Mike Hackett (M.HACKETT [Majikthise], CAT30, TOP9, MSG:27/M530) SPLAT! EXIT() BUG I'm having a problem using Splat! with GNO 2.0.4 """"""""""""""""" and ORCA/C 2.0.1. gsh hangs after executing an exit() from within the debugger. This little example is enough to demonstrate: #pragma debug -1 #include main() { exit(0); } It works fine under ORCA. Also, it works if you return from main() rather than exit(). Pressing ^C, ^Z or ^\ after gsh hangs has no effect. I'm not sure if this is a problem with Splat! or GNO. (S.REEVES2 [Steve], CAT30, TOP9, MSG:15/M530) >>>>> Yeah, this has been reported, and possibly fixed. I'm just """"" waiting on Jawaid's approval on my fix. The reason the system seems hung is that Splat was unable to restore the original GNO I/O vectors before returning to the shell. The reason it only happens with exit() is that in this case C's cleanup code closes all open streams before Splat! gets a chance to shutdown, whereas if a program ends by finishing main(), Splat! gets to shutdown first. It also only happens with the GNO version of 'orcalib'. There should be an update (v1.0.1) to fix this bug and a couple of others available very soon. Mike (M.HACKETT [Majikthise], CAT30, TOP9, MSG:19/M530) >>> NEWS FROM SOFTDISK PUBLISHING <<< """"""""""""""""""""""""""""""""""""" GSLIB UPDATE Welp, I've got some good news and some bad news... """""""""""" The bad news: The GSLib documentation isn't done yet The good news: It looks like we'll be getting someone outside of Softdisk to finish this which means it'll actually get finished! In the meantime, as soon as I get caught up with things around here, I'll upload the latest GSLib which fixes a couple of minor bugs and adds a lot of new functionality. (For example, a super-cool, super-useful DecompressAPF routine!) (SOFTDISK.INC [Bryan Zak], CAT31, TOP9, MSG:103/M530) >>> NEWS FROM PRODEV, INC. <<< """""""""""""""""""""""""""""" DDT QUESTIONS AND ANSWERS As I've mentioned earlier, my present use for """"""""""""""""""""""""" DDT16 is to follow some tutorial programs which are 8-bit. These programs frequently start with a JSR to a Monitor routine, like Home ($FC58) to clear the screen. Other Monitor routines are used in some of the programs as well. When stepping through these programs I want to execute these Monitor routines in real-time by using the T- Trace range in the protection window. I'll give you the short sample program from my Roger Wagner text and then show you what happened when I attempted to trace it in DDT. Program 008000: 20 58 FC Begin JSR $FC58: clear screen 008003: A9 C1 LDA #$C1 : letter "A" 008005: 8D BC 05 STA $5BC : screen location 008008: 60 Done RTS DDT16 :PC = 8000 :PW [Protection Window Entry: T00/8000.8002] :ST ^ERR30 :DR A=F100 X=0000 Y=0000 S=01C2 D=0000 B=00 M=08 Q=88 P=00=----- L=0 E=1 I=0 00/8000: 20 58 FC JSR FC58 :P Flags NV1BDIZC Status 00000000 Enter As you can see, I bombed out when I got the ERR30 response to my ST command. I entered the DR and P instructions so you could status at the time. The ERR30 instruction is explained in the manual thusly, "'RT' or 'T' range JSL while in emulation mode". This doesn't help me because, while the E=1 shows I'm in emulation mode, the instruction JSR (20) is used in the program, not JSL. I've redone this several times, with the same, unhappy result. Can you help me, so I can get off first base? I can see that DDT will not only ease but cut my assembly language learning time in half (once I learn to use it). (R.HOYER1, CAT35, TOP2, MSG:20/M530) <<<<< Protection Window "T" Range Usage """"" The "T" Range in the Protection Window wants to know the address of the code that is to be executed at full speed. This area must be entered by using a JSR or JSL command. If the "T" range is set to include the location of the current Program Counter then the DDT will respond with ^ERR30 if you attempt to trace the code. This is because the DDT checks the Protection Window and sees that it is currently in an area where it should be running at full speed but it doesn't know how it got there. Try setting the "T" range to $F000.$FFF0 When you do an" "ST" at the JSR that takes you into a "T" range the real-time execution does not start until you press "return" and trace the instruction that the JSR went to. Also, as a side note. If you are tracing code and you find yourself at location $C074 you went there because an interrupt was generated by something other than the DDT and you are tracing through the interrupt handler. This can be very frustrating if you are not interested in interrupt handlers. If you find this happening there is the solution of not enabling interrupts to begin with, although GSOS does this which may make that option difficult, or use the "I" flag in the DDT to mask out other interrupts. Let me know if this helps. Thanks for the questions. (PRODEV [Chuck], CAT35, TOP2, MSG:19/M530) >>>>> > Try setting the "T" range to $F000.$FFF0 """"" I tried this-inserted it in the PW window as a T range followed by the T range in my program which I actually wanted executed in real time. Still got the ^ERR30 message. > If the "T" range is set to include the location of the current > Program Counter then the DDT will respond with ^ERR30 if you > attempt to trace the code. I gathered from this that my problem was that the very first instruction in my program was the JSR to the HOME subroutine and this instruction was included in the T range. So I bloaded the program into Merlin and added these instructions at the very beginning of the program: LDA #$00, TAX, TAY. This made the following JSR instruction $0304, so my T range would be T00/0304.0306. This eliminated the ^ERR30 message alright, but not my real problem which is to execute Monitor subroutines in real time. Using the changed program described above, I tried several variations: 1. No T range inserted in the PW: a) I = 0 DDT jumps to $C074 b) I = 1 DDT traces into the Home subroutine 2. T range 0304.0306 inserted in the PW: a) I = 0 DDT jumps to $C074 b) I = 1 DDT traces to the point where the JSR instruction shows as the next instruction to be executed. I pressed Return as you indicated above and the screen went totally blue and I could do nothing with the computer except type on the screen. I re-bloaded several times and repeated with the same result. At this point, it appears to me that I will always have to trace with I set to 1. Apparently, otherwise interrupts come out of "nowhere" (surely not from the simple little programs I'm tracing). Note that in my variations above, DDT jumped to $C074 whenever I = 0, whether I had inserted a T range or not.Is this "normal" for a GS Ram 01 to have to operate DDT with I always set to 1? Do you have any idea why I get a blank screen and a virtually "hung" computer when I press return to execute the JSR command (in my 2.b) variation above? HELP! I seem to have a tiger by the tail here! (R.HOYER1, CAT35, TOP2, MSG:20/M530) <<<<< The interrupts that keep getting in your way are caused by GSOS. """"" If you boot your IIGS with ProDOS 8 I don't think you will see system interrupts. (Until...) Some of the IIGS monitor routines will enable interrupts on their own. Blue screen? Hard to say exactly what was happening. Might be a problem with trying to run some of the monitor routines with the I flag set to 1. They might need to use interrupts and are just waiting for them but they never occur because I=1 sdisables interrupts. My suggestion is to try booting under ProDOS 8 and see if that fixes the problem. I know from experience those darn system interrupts are a real pain at times. (PRODEV [Chuck], CAT35, TOP2, MSG:22/M530) >>> NEWS FROM THE BYTE WORKS <<< """""""""""""""""""""""""""""""" ORCA/FORTRAN BETA ANNOUNCEMENT We are beginning final work on a new """""""""""""""""""""""""""""" program ported by GEnie's own Gary Desrochers. It's a FORTRAN to C cross compiler, hooked into the ORCA environment so you can use it two ways: 1. With ORCA/C, it can be used just like a native FORTRAN compiler. The C compiler is invoked automatically and transparently. It's slower than a true native compiler, but works the same way -- even supporting the debugger, which goes back to the original FORTRAN source. 2. As a porting tool, you can convert FORTRAN programs to C, then clean them up or move them to other platforms. Here's what we're looking for in beta testers: 1. You must own ORCA/C 2.0.1. 2. You must be willing to download files from GEnie and participate by reporting bugs and discussing possible improvements. 3. You must know FORTRAN, and preferably C, too. 4. I would prefer it if you have access to existing FORTRAN programs you are willing to run through the compiler. If you're willing to share it so we can all look, that would be great, too. If you meet the qualifications, or can code enough that you think your boundless entusiasm can make up for any defficiency, please send the following information to me by e-mail, and info copy G.DESROCHERS: Name Address Your version of ORCA/C Your experience level in C & FORTRAN, and whether and how much code you have access to to try the compiler out on. (Yikes. Sorry about the grammar, but you get the idea.) I'll look forward to hearing from you! Mike Westerfield (BYTEWORKS, CAT36, TOP3, MSG:66/M530) ORCA/PASCAL $CDEV DIRECTIVE \/\/hat, exactly, does the ORCA/Pascal """"""""""""""""""""""""""" {$cdev } compiler directive do to the program when it's compiled? I'm asking because I'm trying to use ORCA/Pascal (v1.4.2, BTW) to write a request procedure, and save it in a code resource. This is necessary because I'm installing the request procedure from within a control panel, and it needs to stick around in the system when the control panel is closed (I'm using SetHandleID and following the directions in its docs for detaching a code segment, if anyone's wondering). ___ |he reason I'm specifically asking about the {$cdev } compiler directive is because a control panel's main function and a request procedure's main function are ALMOST identical, but not quite, and I was wondering if I could just use the {$cdev } compiler directive to compile my code properly for use in a code resource. So that people don't need to look them up, here's the state of the stack before and after both a control panel and a request procedure are called: Stack when control panel code gets control: | Previous Contents | |___________________| | | |- space -| Long - Space for result |___________________| | message | Word - Action for CP to take |___________________| | | |- data1 -| Long - Data passed to control panel |___________________| | | |- data2 -| Long - Data passed to control panel |___________________| | | |- RTLAddr -| 3 Bytes - Return Address |___________________| | | <- Stack Pointer (SP) Stack just before the control panel code executes an RTL: | Previous Contents | |___________________| | | |- result -| Long - Result from control panel |___________________| | | |- RTL Addr -| 3 Bytes - Return Address |___________________| | | <- Stack Pointer (SP) Stack when request procedure gets control | Previous contents | |___________________| | space | Word - space for result |___________________| | reqCode | Word - request code |___________________| | | |- dataIn -| Long - input data or pointer to input data |___________________| | | |- dataOut -| Long - pointer to output buffer |___________________| | | |- RTL Addr -| 3 bytes - Return Address |___________________| | | <- Stack Pointer (SP) Stack just before the request procedure executes an RTL | Previous contents | |___________________| | result | Word - bit 15 set if the request was accepted |___________________| | | |- RTL Addr -| 3 bytes - Return Address |___________________| | | <- Stack Pointer (SP) _ /-\s you can see, the only difference is that a control panel returns a long on the stack, while a request procedure only returns a word. _ (_ __)o, is the {$cdev } compiler directive a kind of universal way to tell the program to accept parameters specified by the named procedure on the stack, and return the procedure's (function's) output on the stack, or is it hard coded to only accept a word and two longs, and return a long? i.e. does it actually LOOK at the named procedure to see what it accepts and returns? ___ |he two other options I can think of for using ORCA/Pascal to make a request procedure in a code resource involve using assembly glue code, and I'd rather not do that if I don't have to. (One way is to write the requestProc itself in assembly, linking the Pascal procedures that the requestProc calls in via a unit or something similar. The other would be to accept the passed parameters in the program header -- I'm not even sure this would work -- and use the glue code to return the word result on the stack.) -= Lunatic (: (A2.LUNATIC, CAT36, TOP10, MSG:115/M530) >>>>> First, you definitely don't want to use $CDev. Among other """"" things, it puts the CDev header at the start of the program. Here's the points I think you need to consider: 1. Upgrade to Pascal 2.0.1. One of the things that 2.0 does for you is give a documented, supported way to start the compiler's run-time facilities from a program that needs to be entered in a weird way. With Pascal 1.4.2, to create a program in Pascal that will run safely as a code resource, you must have the library source for the version you are using, and decipher the proper calls yourself. The code to make the calls also has to be done in assembly. 2. Use the $Rtl directive. This gives you a clean program that exits with an RTL, which is what you want for almost any code resource. 3. From a cursory glance, it looks like the parameters are basically tool-style parameters. To do what you want is a bit tricky, but this will work: Create a unit where the first executable procedure is the one you want to be the entry point. Use {$ToolParms and {$Databank, just like you would for a procedure that will be called by the tools. Be sure and do the appropriate environment startup/shutdown. Link this unit as if it were your program. Mike Westerfield (BYTEWORKS, CAT36, TOP10, MSG:116/M530) C COMPILER ASSUMPTIONS I'm working my way through the book _C """""""""""""""""""""" Programmer's Guide to Serial Communications_ by Joe Campbell. In the first section that starts discussing programming, he lists some assumptions about the compiler in order to use the routines that are developed. I'm interested in knowing if ORCA C meets these assumptions: o Integer storage: No assumptions are made about the size of the "natural" int, but a _short_ or _unsigned short_ is expected to occupy 16 bits. o Memory allocation: Memory is allocated from low to high. That is, when objects of the same type are allocated consecutively, the first one allocated has the lower address. o Structure Alignment: All structures are assumed to be _byte aligned_; that is, the compiler leaves no gaps between members (check your compiler's documentation for the details on how to enable this) - I didn't see this mentioned in the ORCA manual. o Stack probing: is turned off. A stack probe is code inserted when a function is compiled. The code causes the program to exit with a run-time error message if it discovers that there is insufficient room on the stack to accommodate the automatic (stack based) storage declared in the function. Because interupt handlers (developed in chap 20) use their own local stack, stack probing must be turned off for all functions called within an interrupt. o Compiler optimization: is turned off. I've found that the book explains the hardware side of serial communications at a level that I was easily able to follow, which impressed me because I have no knowledge of electronics or math other than random things I picked up on my own (or in Commerce math which is directed towards finance and away from engineering applications). Michael (M.POTTER4 [AppleNET Pro], CAT36, TOP11, MSG:107/M530) >>>>> Some of those assumptions are pretty horrid. Here's where ORCA/C """"" falls: Integer Storage: Short is indeed 16 bits. Memory Allocation: Depends what he means. If you allocate an array, this assumption holds. If he's talking about malloc(), forget it. Memory allocated by malloc() can come from anywhere. Structure Alignment: Holds for ORCA/C. Stack Probing: This is not done in ORCA/C unless you ask for it. Of course, if you overflow the stack, the program will crash. Compiler Optimization: I have no idea why he would recommend turning this off, unless he found bugs in a specific compiler. Mike Westerfield (BYTEWORKS, CAT36, TOP11, MSG:108/M530) <<<<< Just chiming in from the peanut gallery... """"" Integer Storage: It is a standard assumption in most software that short and unsigned short are 16 bits. Lots of code will break if this is not true, and at the same time there's usually little reason to make shorts any other size. This assumption is fairly safe, considering the pages and pages of unix application code out there that assumes ints are the same size as pointers. Memory Allocation: What Mike said. He may be talking about global variables (like int x; int y; outside of a function) which is a slimy thing to assume, because some optimizing compilers reorder variables a lot to get them to take less space. At work we have an old customer complaint that our global variables get allocated in reverse order and that caused their I/O code to fail... we basically told them that if they weren't using the official C facility (structs) then it wasn't our problem. Structure Alignment: There is no advantage (except maybe a trivial one if the sizes of things are even) that makes alignment worth doing on the IIgs. I don't think any languages on the IIgs bother to align anything, at least I can't think of any offhand. Stack Probing: this strikes me kind of funny. Interfacing C to interrupt handlers is tricky enough to begin with, you'd pretty much have to know about this already. There are Real-Time Operating Systems that require you to do stack-checking no matter what your code is, to keep yourself from crashing something else on the same board. Compiler Optimization: Mike, I'm disappointed. Really. Pre-ANSI compilers don't have "volatile", so there's no way to tell them not to optimize out code that does things like reading from hardware registers. I remember trying to use volatile with ORCA/C 1.x to read single bytes of IIgs machine registers, and the compiler wouldn't do it -- I always got a 16-bit load instead of the REP/SEP bracketed code you get for stores to a char variable. This issue with volatile plagues a lot of K&R C driver code and shared memory code on workstations -- modern compilers can do a lot of cool things to reduce memory traffic if they are allowed to assume that memory doesn't have side effects. With volatile you can let the compiler optimize everything that is safe to optimize without endangering your I/O code or semaphore logic or whatever. As far as I could tell, however, ORCA/C 1.x just ignored volatile. And it never seemed to do anything with const either. I hope the 2.x optimizer can substitute immediate operands for global const variables -- I hate using #define's because they cannot have types the way const variables can. Todd Whitesel (A2PRO.TODDPW [growf?], CAT36, TOP11, MSG:109/M530) >>>>> Assuming int is 16 bits is, indeed, very common. So is murder. """"" The fact that something is common doesn't make it a good idea. All of the C standards specifically and blatantly state that you must never assume anything about the size of an integer -- or even if it is in fact reppresented by bits -- other than the fact that long is at least as big as short, and int is at least as big as short and no bigger than long. There is a way to _check_ the size of available integers in ANSI C. ANSI C also provides some minimums for the sizes of the various integer types. There is no maximum, though. Unless I missed something (which is very possible), volatile guarantees that an access will take place, so the optimizer will not remove it. It says nothing about the way an access is done. So C 1.x was not at fault for loading a word and anding to get a byte, even if the variable was market volatile. If you are aware of something in the standard that says I'm wrong, quote it. I'd like to find out. The reason for volatile is indeed to prevent optimizing out accesses, which I forgot about in my last message. Thanks for reminding us. However, ORCA/C 1.x didn't do anything that optimized out accesses, so it did, in fact, ignore volatile. That's OK. ORCA/C 2.x does not ignore volatile, since it does do some optimizations that can remove accesses. Mike Westerfield (BYTEWORKS, CAT36, TOP11, MSG:110/M530) ORCA/C PROBLEM Hi Mike or whoever can help, """""""""""""" I'm sorry to bother you, but I'm in the process of learning 'C' programming using your Orca C, with Orca Shell 2.0.1 and Orca C 2.0.0 on a ROM 3 IIgs with 3 meg of memory and a hard drive running system 6.0 (not 6.0.1). I've been using Prizm and typing in programs (very small ones at that) from the Kernighan & Ritchie "The C Programming Language" book. (I also have your Learning C package.) For some reason I've been sporadically blowing my foot off. I usually Check For Errors, and get 0 errors found. But lots of times I will drop into the monitor during execution of my program. If I reboot and try again, often the program will run OK. I originally tried using the DEBUG GO command, which sometimes worked, but sometimes it too would drop me into the monitor. So I then began using Compile To Disk instead, which seemed more reliable. Basically, it's the sporadic nature of my difficulties that has me confused. Is there some basic thing that I am doing wrong? Is 3 meg enough memory? Are my problems something you've run into before? I recognize that the programs from K&R may cause a problem, but they are ANSI C, and isn't Orca C ANSI compatible? Anyway, any suggestions you might throw my way would be appreciated. Oh, and I've tried doing things after a Shift-Boot to get rid of any funny DAs, etc., and I still seem to get into trouble. Below is a simple little program that I've had some trouble with. Many other programs have dropped into the monitor, so this wasn't the only one. #include /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } } Thanks for any help. Craig Peterson :-)} (C.PETERSON5, CAT36, TOP11, MSG:118/M530) >>>>> Craig, you _may_ be running into a bug that was fixed in the C """"" 2.0.1 update. There was one rather nasty bug in the compiler in the 2.0 release. It's also possible you're running into a bug in the linker that was just recently fixed. That fix is in the private ORCA library, which is open to any registered user of the most recent version of one of the ORCA languages. Then again, you may be running into something entirely new. It's tough to tell for sure. The program certainly looks innocent enough, though. If it's not too much of a hastle, I'd suggest updating to C 2.0.1 to get the compiler bug fix (among other things), then downloading the new PRIZM and Linker from the private library. If the problem is still there, we'll need to do some detective work to find out where it's comming from. If updating is a burden for some reason, give me a call. My number is in the Tech Service file on your disks, as well as in the manuals. Mike Westerfield (BYTEWORKS, CAT36, TOP11, MSG:119/M530) [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 - November, 1990 (#3399) <<< """"""""""""""""""""""""""""""""""""""""""""" 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.9011/ ..READ.ME Intro and Welcome ..GENERAL/ ....VAPORWARE Murphy Sewall's industry snapshot ....PUBPEN.TXT Editor's editorial ..IIGS/ ....READ.ME16 Description of 16-bit contents! ....NDAMENU/ (SXA) Demonstration of how to add an NDA's menu to an application's menubar! Also includes a shell utility to install DA's ....SHOWPIC/ (S) Source code for the ShowPic NDA v4.70 - includes code for loading, saving, converting and displaying different kinds of pictures ....PHIL.DOTO/ (SXA) Pascal Pics - Loading and displaying picture files from Pascal ....ROSS.STR/ (SXA) rStringLists - how to create and use them ....ARCADEKING/ (XD) Shape editor/creator program for game programmers and animators ....MAB.GS/ (S) A set of Micol Advanced BASIC routines that convert between different sizes of integers and real numbers ..CLASSIC.APPLES/ ....READ.ME8 Description of 8-bit contents! ....BPU/ (XD) BASIC Programmer's Utility - a preprocessor for the Beagle Compiler that, among other things, implements include files and allows use of labels instead of line numbers ......LAUNCH/ (SXA) Replacement for BASIC's '-' command that will launch S16 files and SYS files too big for '-' ....RECURSIVE.CAT/ (SX) Apple approved method to read a directory - the example catalogs a directory as well as every subdirectory it contains ....GEN.DRAW/ (SXA) Generic shape drawing routine - animate bitmapped shapes from Applesoft or assembly ....WILDCARD/ (S) How to compare two strings, one of which may contain wildcard characters (= or ?)! ....XMODEM.INFO/ (A) Documents the ProDOS extension of the XMODEM protocol and shows how to do a fast CRC-16 withOUT a table lookup Note: The file in the MAB.GS directory is actually a ShrinkIt archive even though it doesn't have a .SHK extension on it. Be SURE to unpack before trying to read the source code with your favorite editor. Mac NDA's can put menu's into the system menu bar, but IIGS programs couldn't... until now! Check out the NDAMenu article to see how it's done! This is the last issue of 8/16 that was published. Every issue hereafter was known as 8/16-Central and was published by A2-Central instead of Ariel Publishing. >>> 8/16-Central - December, 1990 - File (#3400) <<< """""""""""""""""""""""""""""""""""""""""""""""""""" /ES.CENTRAL.9012/ ..About.This.Disk Intro and Welcome ..DLT16 New version using HyperStudio! ..DLT8 Karl Bunker's new version written in BASIC! ..Columns/ ....VAPORWARE Murphy Sewall's industry snapshot ....WhatsNew News in the world of Apple II ..Q.And.A/ ....LETTERS Readers Write - Multi-column Printouts, Great Programs & 16-bit BASIC Compilers, and The BSAVE Blues ..Apple.II/ ....GenDraw2/ (SXA) Son of GenDraw - Extensions and enhancements to the original generic shape drawing routines ....ZBasic/ (SXA) ZBasic Zealot - SFGetFile clone for ZBasic ..Apple.IIgs/ ....HyperLab/ ......HyperLab (A) An overview of Hyperstudio XCMD's ......SAMPLES/ (SXD) HyperStudio XCMD Exerciser XCMD - info on how to create XCMDs plus sample code in five different languages: ORCA/C, APW Asm, TML Pascal, Merlin Asm, and ORCA/Pascal ....C.Techniques/ (SXA) How to easily save screen images using C ....XASIC/ (SXA) Library routines and Merlin macros that let you use BASIC-like syntax for your assembly code and easily access the Console Driver ..Goodies/ ....RezWindow/ (SA) An updated version that handles the problem with window color table resources ....RTC.Xscript/ Real Time Conference with Dave Lyons on System 5.0.3 Welcome to the first issue of 8/16-Central! The general format of the magazine has changed a bit since it is solely a disk version now, instead of a paper/disk combo. There are completely new versions of the Display/Launcher Thingamajig: a 16-bit version that uses Hyperstudio to do all of its chores, and an 8-bit version written in Applesoft which uses Dogpaw to supplement its capabilities. And speaking of Hyperstudio, this month's Hyperlab is about Hyperstudio XCMDs. The article is a general overview (though it assumes you are familiar with HS itself) and complete specifications can be found in the SAMPLES directory. Not only that, but sample XCMD code is inlcuded for just about any language you care to use (that is capable of doing the job, that is). The ZBasic Zealot column this month gives you ZBasic programmers a way to simulate the Standard File tool's SFGetFile call, a GS Toolbox call that asks the user for a filename. The code's not as tight as it might be (by the author's own admission!), but it does work! [EOA] [LIB]////////////////////////////// LIBRARY BIT BONANZA / ///////////////////////////////// HOT Files You Can Download """""""""""""""""""""""""" By Tim Buchheim [T.BUCHHEIM] >>> GNO Utilities <<< """"""""""""""""""""" File #3846 LPR2.10.BXY (GS) Uploaded on 1/22/94 by B.TAO About 25K (d/l time approx. 2 minutes 30 seconds @ 2400 baud) Lpr is part of GNO's print spooler package. It primarily supports the ImageWriter II at this time. Version 2.1 can autowrap long lines, do text or binary dumps, eject the final page, reverse the final page back to top of form (PageSaver feature), print page headers, skip perforations, create a wide left margin (for 3-hole punches), send printer escape codes, select print pitch/quality and select the language font. Written by Frank Lin. File #3845 MKDMK1.11.BXY (GS) Uploaded on 1/22/94 by B.TAO About 37K (d/l time approx. 3 minutes 42 seconds @ 2400 baud) Makedmake is intended for use with dmake and presumably occ. The IIgs version requires GNO to run. The lenviron v1.1.2 library is required for recompilation. Creates Makefiles for dmake. Ported by G. Devin Reade. File #3801 DRWM1.1B17.BXY (GS) Uploaded on 1/15/94 by B.TAO About 35K (d/l time approx. 3 minutes 30 seconds @ 2400 baud) The Davius Rex Window Manager for GNO brings a convenient desktop interface for GNO users who want to access their NDA's and CDev's without having to start up the Finder. Includes the ability to iconify windows. Version 1.1b17. File #3800 COPYCAT1.50.BXY (GS) Uploaded on 1/15/94 by B.TAO About 23K (d/l time approx. 2 minutes 18 seconds @ 2400 baud) Copycat is a simple program that allows one tty in GNO (typically the user's terminal) to send and receive data from another tty (typically the modem serial port). In this way, it can be used as an extremely simple terminal program. This is version 1.5.0 which fixes a few bugs and simplifies the command line. Written by James Brookes. File #3799 CALLS2.0.BXY (GS) Uploaded on 1/16/94 by B.TAO About 45K (d/l time approx. 4 minutes 30 seconds @ 2400 baud) This utility is intended to help analyze the flow of a program by laying out the functions called in a hierarchical manner. It invokes the C preprocessor on the named C source files, and outputs the analyzed calling pattern to standard output. All filenames given will have their calling sequences combined into one hierarchy. If a filename of "-" is seen, standard input will be read. Ported to GNO 2.0 by G. Devin Reade. File #3798 BED1.1.BXY (GS) Uploaded on 1/15/94 by B.TAO About 29K (d/l time approx. 2 minutes 54 seconds @ 2400 baud) This is the only editor for GNO that can handle infinitely long lines, null bytes in a file and allow binary editing. It is intended to replace Prosel-16's "Block Warden" for patching files without leaving GNO. Version 1.1 adds the ability to execute script files for automated patching of programs. Other improvements are documented in the archive. Written by Phil Vandry. File #3796 TIMELIMIT11.BXY (GS) Uploaded on 1/15/94 by B.TAO About 22K (d/l time approx. 2 minutes 12 seconds @ 2400 baud) This utility limits the maximum time a particular program can run, then terminates it. Version 1.1, written by G. Devin Reade. File #3795 JOINPARA1.0.BXY (GS) Uploaded on 1/15/94 by B.TAO About 15K (d/l time approx. 1 minutes 30 seconds @ 2400 baud) This utility joins separate lines in a text file into a single paragraph. A possible use would be to prepare a text file capture from a BBS for importing into a word processor. Version 1.0, written by G. Devin Reade. >>> Source Code <<< """"""""""""""""""" File #3844 SPIN.BXY (GS) Uploaded on 1/21/94 by BYTEWORKS About 6K (d/l time approx. 36 seconds @ 2400 baud) This Pascal source shows how to implement the hourglass wait symbol and the spinner you see in many ORCA products. The calls also show how to safely send characters to the screen in a way that won't show up on the printer or in redirected output. File #3840 DICE.N.SRC.BXY (GS) Uploaded on 1/17/94 by THE.VAGRANT About 18K (d/l time approx. 1 minute 48 seconds @ 2400 baud) This is the source (& NDA) for my dice rolling NDA. It is written in Orca/C. The NDA alone was uploaded to A2 as Dice.bxy File #3838 REPORTER.BXY (ALL) Uploaded on 1/16/94 by M.WEAGLEY About 12K (d/l time approx. 1 minute 12 seconds @ 2400 baud) This is the upload in reference to my posted message. It contains 2 programs: Hello, and reporter. They both require PROCMDs USING to work properly and some data that is not included. USING is also not included. File #3770 READ320.BXY (GS) Uploaded on 12/26/93 by M.SAND1 About 4K (d/l time approx. 24 seconds @ 2400 baud) A general purpose routine to read keyed input from the Apple IIGS 320-graphics mode window. It allows the coder to specify the screen coordinates, length, and color of the text, and most important of all, it correctly handles backspaces and other special keys which normally would produce undesirable results when entered via read/readln in a 320-mode window. Written in ORCA/Pascal but easily modified for C or other Pascal compilers which can access the Toolbox. >>> comp.sys.apple2 <<< """"""""""""""""""""""" File #3809 CSA2PROG.05.BXY (ALL) Uploaded on 1/16/94 by B.TAO About 18K (d/l time approx. 1 minutes 48 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.programmer Usenet newsgroup, for the week ending Jan. 15, 1994. This week's highlights (total of 23 messages): o AppleTalk screen holes and aux memory use o Confused about GS/OS interrupts o Graphics and ML File #3808 CSA2GNO.05.BXY (GS) Uploaded on 1/16/94 by B.TAO About 37K (d/l time approx. 3 minutes 42 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.gno Usenet newsgroup, for the week ending Jan. 15, 1994. This week's highlights (total of 50 messages): o Using fileport and lpd o IPC o namespace problem? o _INITGNOSTDIO() outdated File #3807 CSA2SUBJ.05.BXY (ALL) Uploaded on 1/16/94 by B.TAO About 5K (d/l time approx. 30 seconds @ 2400 baud) Subject listing for the comp.sys.apple2, csa2.comm, csa2.marketplace, csa2.gno and csa2.programmer digests for the week ending Jan. 15, 1994. File #3783 CSA2SUBJ.04.BXY (ALL) Uploaded on 1/9/94 by B.TAO About 7K (d/l time approx. 42 seconds @ 2400 baud) Subject listing for the comp.sys.apple2, csa2.comm, csa2.marketplace, csa2.gno and csa2.programmer digests for the week ending Jan. 8, 1994. File #3782 CSAPROG.04.BXY (ALL) Uploaded on 1/9/94 by B.TAO About 61K (d/l time approx. 6 minutes 6 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.programmer Usenet newsgroup, for the week ending Jan. 8, 1994. This week's highlights (total of 75 messages): o 65816, obscure details o Controls won't show in NDA o Development system opinions o how to format LETextBox2 embedded changes in C? o ORCA/C 2.0.1 bug list, version 1.5 o ProDos and old Dos 3.3 $7FD BLOADS -- Help? File #3781 CSAGNO.04.BXY (GS) Uploaded on 1/9/94 by B.TAO About 58K (d/l time approx. 5 minutes 48 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.gno Usenet newsgroup, for the week ending Jan. 8, 1994. This week's highlights (total of 108 messages): o /usr or /var? o Direct Terminals under GNO o newuser o printer problems using gno lpr... o restartability o would you like to have iwiiLanguage? >>> AppleWorks <<< """""""""""""""""" File #3794 RFPV11.BXY (ALL) Uploaded on 1/14/94 by BRANDT About 9K (d/l time approx. 54 seconds @ 2400 baud) Randy's Free Patcher v1.1 customizes AppleWorks 4.01/4.02 with numerous patches including reverse Yes/No questions, swap OA-S/OA-Ctrl-S for saves, add MouseText in several places, use standard Getfile commands in file listings, use the IIgs Enter key as a Down arrow in spreadsheets, etc. File #3779 POUNDSMACRO.BXY (ALL) Uploaded on 1/5/94 by BRANDT About 2K (d/l time approx. 12 seconds @ 2400 baud) This TAPL program (Ultra 4) converts dollars and cents to English text for check-writing macro programs. It takes around 700 bytes or so. >>> Apple Assembly Line <<< """"""""""""""""""""""""""" File #3839 AAL.FEB.86.BXY (ALL) Uploaded on 1/17/94 by M.DEATHERAGE About 37K (d/l time approx. 3 minutes 42 seconds @ 2400 baud) This issue contains articles on a wildcard-capable CATALOG for DOS 3.3, the Mitsubishi 50740 series microprocessors (MPW IIgs assembler actually recognizes these guys), a faster CRC method, corrections to faster garbage collection and a DOS 3.3 patch to prevent directly-entered commands from working. File #3837 AAL.MAY.88.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 58K (d/l time approx. 5 minutes 48 seconds @ 2400 baud) This issue is the last issue of Apple Assembly Line, which is discussed. There are articles on a klaxon sound effect, AppleWorks segment functions, more auxtypes in ProDOS catalogs, a new version (1.2) of BASIC.SYSTEM, an Apple IIx wish-o-gram and many more small pieces of AppleWorks 1.3. File #3836 AAL.APR.88.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 65K (d/l time approx. 6 minutes 30 seconds @ 2400 baud) This issue contains articles on transforming S-C source files into ProDOS text files (a routine that helped make AAL available online!), modifying CATALOG to show auxiliary types for all files, BLOADing a ProDOS directory, a trip to Phoenix, and part 5 of AppleWorks 1.3, 'Menu Display and Selection.' File #3835 AAL.MAR.88.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 69K (d/l time approx. 6 minutes 54 seconds @ 2400 baud) This issue contains articles on backing up and restoring a RamFactor DOS partition, dissecting AppleWorks' SEG.M0 and SEG.M1 files, and the fourth part of the AppleWorks 1.3 inspection, 'Applications Overlay Manager.' File #3834 AAL.FEB.88.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 50K (d/l time approx. 5 minutes @ 2400 baud) This issue contains articles on printing percentages, another quick two-digit decimal printer and printing the ProDOS date and time field. The third part of the AppleWorks 1.3 exploration series is 'Keyboard input subroutines.' File #3833 AAL.JAN.88.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 72K (d/l time approx. 7 minutes 12 seconds @ 2400 baud) This issue contains more from AppleWorks 1.3 -- an interepretive string display routine this time. Also discussed are overhauling the S-C program selector, a special version of the S-C assembler for huge symbol tables and 'new' reference books available. File #3832 AAL.DEC.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 53K (d/l time approx. 5 minutes 18 seconds @ 2400 baud) This issue contains the first of the six-part series on peeking inside AppleWorks 1.3 -- this time examining passing parameters to subroutines and string handling. There's also Screen Dump PLUS! and an alert about the limited year table in the ProDOS 8 slot-based clock driver. File #3831 AAL.NOV.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 46K (d/l time approx. 4 minutes 36 seconds @ 2400 baud) This issue contains articles on a pretty-fast DOS text-file writer, strange decimal to binary conversions, getting a pointer from a handle and converting BCD to binary with packing fields. File #3830 AAL.OCT.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 41K (d/l time approx. 4 minutes 6 seconds @ 2400 baud) This issue contains articles on a key-edit utility program for the IIgs, an index to volume 7, how to clear the backup bit in ProDOS 8 file attributes (secret for a long time), and a proposed 'ProDOS 8 init' standard. File #3828 AAL.AUG.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 35K (d/l time approx. 3 minutes 30 seconds @ 2400 baud) This issue contains articles on using double lo-res graphics, patches to the S-C assembler for building .SYSTEM files, viewing AppleWorks word processor files and doing overlay assemblies with the S-C assembler. File #3827 AAL.JUL.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 42K (d/l time approx. 4 minutes 12 seconds @ 2400 baud) This issue contains articles on demystifying super hi-res, a warning to SmartPort programmers, reference books, another ProDOS 8 bug on the IIgs (now documented as unsupported), EXEC and INPUT problems in BASIC.SYSTEM and signed and unsigned comparisons. File #3826 AAL.JUN.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 42K (d/l time approx. 4 minutes 12 seconds @ 2400 baud) This issue contains articles on a selective CLEAR for Applesoft variables, saving and restoring your environment, corrections to previous patches, assembly listings in ProDOS text files and printing a tiny address booklet. File #3825 AAL.MAY.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 49K (d/l time approx. 4 minutes 54 seconds @ 2400 baud) This issue contains articles on a new pattern-search monitor command, reading the IIgs ROMs, more about patching ProDOS 8, the solution of a numerics puzzle, a problem with the IIgs 3.5' drive firmware and zero page, and IIgs tool set version numbers. File #3824 AAL.APR.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 44K (d/l time approx. 4 minutes 24 seconds @ 2400 baud) This issue contains articles on an 80-column screen display subroutine, revisions to the UniDisk 3.5 DOS 3.3 patches, using PER for position-independent code, a friendly decimal printing subroutine, a simple line-input subroutine, notes, more S-C assembler macros and reviews. File #3823 AAL.MAR.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 36K (d/l time approx. 3 minutes 36 seconds @ 2400 baud) This issue contains articles on the nasty bugs in ProDOS 8 v1.3, more notes on the IIgs monitor, a commented disassembly of ProDOS from $DEF3 through $DFE4, a conflict between $48 and 'G' (again) and bugs in, of all things, FID with 400K volumes. File #3822 AAL.FEB.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 36K (d/l time approx. 3 minutes 36 seconds @ 2400 baud) This issue contains articles on pre-allocating disk space for files under DOS 3.3, a smarter hexadecimal memory search, displaying 65802 registers and IIgs tool tables, plus S-C assembler stuff, announcements and general trivia. File #3821 AAL.JAN.87.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 35K (d/l time approx. 3 minutes 30 seconds @ 2400 baud) This issue contains articles on IIgs softswitches, a safer text speedup for DOS 3.3, using the monitor Control-Y command in the IIgs, bugs in the /RAM driver, new features of the IIgs monitor and more. File #3820 AAL.DEC.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 47K (d/l time approx. 4 minutes 42 seconds @ 2400 baud) This issue contains articles on eight ways to count bits in a byte, checksumming the IIgs ROM, finding the names of people who worked on the IIgs, a commented listing of ProDOS from $DE00 through $DEF2, the IIgs monitor, two simple IIgs tool demos and a recode of hi-res address calculations by Woz himself, plus more updates to older articles. File #3819 AAL.NOV.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 43K (d/l time approx. 4 minutes 18 seconds @ 2400 baud) This issue contains articles on ultra-fast integer square roots, a fix for a bug in older versions of ProDOS, timing programs with a second machine, the Apple IIgs reference manuals and the IIgs battery RAM and clock chip. File #3818 AAL.OCT.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 39K (d/l time approx. 3 minutes 54 seconds @ 2400 baud) This issue contains articles on the introduction of the IIgs, screen tricks, inverting a text window, a five-digit math puzzler from Woz, automatic SETUP for S-C assembler revised, more selector notes and converting hi-res to double hi-res. File #3816 AAL.AUG.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 41K (d/l time approx. 4 minutes 6 seconds @ 2400 baud) This issue contains articles on fast integer square roots, updated memory/file maps for ProDOS, a DUMP command for DOS 3.3, compatibility with the Laser 128, converting lo-res to double hi-res, two secret RGB modes, more about BRUN and PEA, PEI and PER on the 65802/65816. File #3814 AAL.JUL.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 34K (d/l time approx. 3 minutes 24 seconds @ 2400 baud) This issue contains articles on replacement ProDOS QUIT code, using DP18 (18-digit BCD arithmetic for Applesoft) with ProDOS, booting DOS 3.3 from the UniDisk 3.5 and counting the cycles used by BRL (and how you can do it without extra hardware). File #3813 AAL.JUN.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 50K (d/l time approx. 5 minutes @ 2400 baud) This issue contains articles on the 65816 stack relative addressing mode, fast 16X16 multiply and divide for the 65802, the real story about DOS and BRUN, toggling between two values, using SmartPort, generalized MLI error handling and a practical CRC use. File #3812 AAL.MAY.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 37K (d/l time approx. 3 minutes 42 seconds @ 2400 baud) This issue contains articles on modifying DOS 3.3 to use 3.5' disks, recovering lost programs in the S-C assembler environment and even more better division by seven. File #3811 AAL.APR.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 35K (d/l time approx. 3 minutes 30 seconds @ 2400 baud) This issue contains articles on tool for restoring lost catalogs, using primitive text windows, dividing BCD values by four, booting into 80 columns, a faster boot for DOS 3.3 with more disk space and a screen hole gaffe in the second Apple IIc ROM release. File #3810 AAL.MAR.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 55K (d/l time approx. 5 minutes 30 seconds @ 2400 baud) This issue contains articles on running ProDOS on non-Apple ROMs, even faster 16X16 multiplication for the 65802 (or 65816), making a smarter 65816 disassembler, the fastest 6502 multiplication yet, PAL programming hardware, reviews, and a routine to determine which 65XXX series processor you're using! File #3805 AAL.JAN.86.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 44K (d/l time approx. 4 minutes 24 seconds @ 2400 baud) This issue contains articles on converting lo-res pictures to hi-res, a question on returning from BRUN, text file transfer under DOS 3.3, fast 6502 and 65802 multiplication routines, a RAMWorks compatible auxmove routine, a correction to the dual DOS 3.3/ProDOS disk creator and trivia from Bill Mensch on the origin of the number '6502'. File #3804 AAL.DEC.85.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 28K (d/l time approx. 2 minutes 48 seconds @ 2400 baud) This issue contains articles on bugs in last month's RAM disk driver, tracing the ProDOS MLI, a review of the OKS Kache Card, more puzzle solutions, pseudo-variables in machine language and computing the day of the week. File #3803 AAL.NOV.85.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 36K (d/l time approx. 3 minutes 36 seconds @ 2400 baud) This issue contains articles on a 15K language card-based RAM disk for DOS 3.3, a patch to ProDOS QUIT to allow the right-arrow key, three solutiosn to the previous month's puzzle, a commented disassembly of the ProDOS QUIT call, and two ways to merge fields into one byte. File #3802 AAL.OCT.85.BXY (ALL) Uploaded on 1/16/94 by M.DEATHERAGE About 63K (d/l time approx. 6 minutes 18 seconds @ 2400 baud) This issue contains articles on a ProDOS driver that records what calls are made to it, a DOS 3.3 RWTS patch to do the same recording, a puzzle in a program that erases itself and more, more on putting 65C02 chips in older Apple II machines, a multiple-column disassembler, reviews, news and more. File #3778 AAL.SEP.85.BXY (GS) Uploaded on 1/4/94 by M.DEATHERAGE About 39K (d/l time approx. 3 minutes 54 seconds @ 2400 baud) This issue contains a prime benchmark for the 65802, putting DOS and ProDOS on the same disk, software sources for 65802 and 65816, problems putting 65802 chips in Apple II+ computers and a short binary-to-decimal conversion routine in 65802 (good for 65816 as well). >>> Miscellaneous <<< """"""""""""""""""""" File #3797 ANARCHDSGNS.BXY (GS) Uploaded on 1/15/94 by B.TAO About 343K (d/l time approx. 34 minutes 18 seconds @ 2400 baud) This packed HFS disk contains the complete works of David Roberts (aka Davius Rex) as of December 1993. They include: DungeonQuest II, LZSS Packer and KwikLoader, QuickC, Scroll Code Compiler, RexLib, Multiplication Table Maker and SpriteMaker/Viewer. Documentation for each package is included on the HFS disk. File #3793 MERLSYS6MAC.BXY (GS) Uploaded on 1/12/94 by E.SHEPHERD About 6K (d/l time approx. 36 seconds @ 2400 baud) This archive contains two macro files for Merlin 16+. The first, EDS.GSOS.Macs.s, contains ORCA/M-like macros for all GS/OS calls through System 6.0.1. The second, System.6.Macs.s, contains complete macros and supermacros for all toolbox calls documented in the Programmer's Reference for System 6.0, and in the Programmer's Reference for System 6.0.1. Note: these files are text with their hi bits set; viewing them with editors other than Merlin may cause them to appear as garbage. File #3784 UCASE.2.0.BXY (ALL) Uploaded on 1/9/94 by KEN.GAGNE About 1K (d/l time approx. 6 seconds @ 2400 baud) UCASE2 is version 2.0 of TJE public domain (free) program to instantly convert the AppleSoft program currently in memory to all upper case characters. This is useful on old ]['s that can't display lower case. To use UCASE2, simply load your AppleSoft program and BRUN UCASE2. It works under both DOS 3.3 and ProDOS. Once in memory, it can also be invoked with CALL 768. By Jim Ferr, author of Warp Six. File #3777 LILYPADS.BXY (GS) Uploaded on 1/3/94 by S.FORTIN3 About 13K (d/l time approx. 1 minutes 18 seconds @ 2400 baud) Lilypads is a simple children's game written in 3dlogo. It requires 3dlogo and (right now) the Talking Tools (that will change when the next version of 3dlogo is released in a week or so). See docs for more information. If you have version 1.0 of 3dlogo you will have to delete two lines to make the program work (there is an enclosed file describing which two). Comments appreciated. Shareware $2. File #3773 SPLASHER.BXY (GS) Uploaded on 12/31/93 by C.JUNIEL About 148K (d/l time approx. 14 minutes 48 seconds @ 2400 baud) Splasher is a program that puts an initial splash screen and music in a program. A programer can link a supplied dynamic to the program to put up the splash screen and play music. This will work with any S16 program There is a desk top program(Splash Editor) that can edit the graphic program and choose the music to play. File #3772 CLAYSMTOOL.BXY (GS) Uploaded on 12/30/93 by C.JUNIEL About 9K (d/l time approx. 54 seconds @ 2400 baud) Clays.MTool is a user tool that can play Music Studio, Sound Smith SynthLAB, and Music Composer music files If you have wanted to put music ability into your program, check this out! [EOA] [RTC]////////////////////////// RTC WATCH / ///////////////////////////// Bits and Pieces from A2Pro Real Time Conferences """""""""""""""""""""""""""""""""""""""""""""""" By Tim Buchheim [T.BUCHHEIM] >>> Character Devices and Generated Drivers <<< """"""""""""""""""""""""""""""""""""""""""""""" Hey, when accessing character devices, do you use the Write, or DWrite. GSOS manual says both will work. Both will work, but I like using Write myself. I've been playing around with trying to make my modem work form the desktop (which is why the character device questions), and I can see it receiving the data strings (lights blinking), but no return response (i.e. going off hook) Is this due to recieving data too fast? I'm not sure. I haven't done much in the way of accessing the modem (except through PT)... So the driver doesn't return anything? Can you make the modem dial through the driver? I do the open, no error, do a write of a string (one character at a time), of ATDT myotherphone#, and nothing happens (except lights flickering). So the modem light show that it is receiving the chars... Hmmmm... I think maybe the feed to the modem is too fast. Is the GS using the same baud rate as the modem? How fast is your modem, Rob? 2400 (Hayes) Just checked my control panel, and the modem port is at 2400 also. Should be receiving the chars at the right speed, then. I dunno either. Does the GSOS send charactars to the device in 8 bit or 16 bit format? GS/OS sends exactly the number of bytes you tell it to. If you tell it to send one char (byte length) that's all that is sent. Do you use DWrite or Write? I tried both, same result. Walking thru with GSBug, no errors returned. Have you done a DInfo on the device driver? Yes, that is how I determined which device is the modem (with a DInfo Loop) What is the Device characteristics word set to? 0100 0011 0110 0000 Hmmm....The Modem driver is a _generated_ device. Meaning that the driver isn't designed specificly for the modem and there might be some incompatibilities involved. It should work, though.... What about the wait status? Does that need to be set? The GS/OS Device Driver Reference has a few pages on Generated Drivers... p 167. "Generated devices support wait mode only." p 168. "attempting to set the mode to no wait status results in error $22 (invalid parameter)." I haven't reset it, so whatever the system has it set at, it is still there. In the charactaristics word, bit 8-9 is speed. Both are set, what does this correspond to? 00 = Slow, 01 = Normal, 10 = Fast, 11 = Real fast :) Actually, this means that the device is "Not speed dependent". Where is that found at? The Device Driver Reference? Yep. Page 22. I need to get that book too. It's somewhat useful. This is the first time I've really looked into it :) One problem with a generated driver is that it only supports wait mode. A modem really needs a no wait mode. See p 110 of the GS/OS Ref. for wait vs. no wait modes. Well, I don't see much that can be changed on the way a generated modem driver works. There _might_ be a modem driver or an example on using the generated driver in the library. I was looking at Steve's "Shellterm" program, and he is using the GSOS drivers, and setting it to a no wait status with DControl. Hmmm...Well according to the dox, only wait mode can be used...I wonder why that is? You can try to set the driver to no wait mode...the worse thing that can happen is an error code ($22). For the recieving portion of the code, I can see where that will be needed, but for just making it dial to see if it is recieving correct characters, I can't see how it will make a difference. Me either, Rob. It should work... Must have a hidden bug in the code. CALL TERMINEX!!!!! >>> Copyright issues <<< """""""""""""""""""""""" I've been in a debate with one of my users about its designation as shareware... Oh? What's the problem? Someone not want to pay, or something? He believes that since it is crippled, it is not classified as shareware. He also believes that $35 is above the level of a shareware program... Well, he's wrong He paid his fee right away... Rick: He's incorrect. Did you register the program? there are $200 shareware programs, I've seen them What Tim said. Also, re: the crippling.. he can call it a demo if he wants to. :) Rick: Is it truly a copyrighted work? (ie did you register a copyright with the Federal Gov't?) At the moment it is copyrighted simply because I say so. It is not yet registered. This is OK according to several discussions I have seen within the BB and text files related to this in the library...Has anything changed? Rick: I see. Were I you, I would register the program so that you could prosecute under Federal Copyright Law should you have a problem. Sloanie: it is still copyrighted, even if he hasn't registered it. but he can't prosecute if it isn't registered, or at least not win :) It's a lot more difficult to _prosecute_, as I understand it, without a registration. You can sue for copyright infringement any time, but it's a lot easier to win if your work is registered with the copyright office (Library of Congress). How much does it cost to register something with the Library of Congress (i.e., file for a copyright)? $10 I believe That's all? that $10 figure is from my encyclopedia which is from 1985 >>> TML Pascal and System 6 <<< """"""""""""""""""""""""""""""" Does anyone program with TML Pascal? I use ORCA/Pascal, never used TML John... I used to use TML Pascal. I've never used TML Pascal either... what are you having problems with? I switched to ORCA when I found that TML was _very_ buggy and lacked complete support. Mike Westerfield supports ORCA/Pascal _very_ well. I just loaded System 6.0 and TML Pascal compiles but does not run the program. It just comes back to the code. Hmmm...probably a problem with TML Pascal, it's a bit old TML Pascal has not been updated in a _long_ time. I've got 1.8 meg of ram. It works fine with 5.04 Will the program run okay from the Finder? (might be a memory problem, system 6 needs more memory than previous versions of the system software. I assume from your comment that it didn't work like this in earlier versions of the software... I'd suggest switching to ORCA/Pascal. I know. I've had that suggestion before. TML Pascal barely worked under 5.0.4. The environment has a bug list longer than all of our sleeves put together and there's been no update, ever. Well, there was _1_ update... to Complete Pascal, but that made it buggier! ; ) That figures. :) That's when _I_ switched to ORCA. And Oooooh, so much better! ORCA is from Byteworks, right? Besides... ORCA/Pascal can be combined with other languages... With optimizations turned on, the file size improvements and speed increases are great in ORCA/Pascal ...and you can use Bryan Pietrzak's GSLib to make programming easier. Yes, ORCA/Pascal (and all of the ORCA products) are produced by The Byte Works, Inc. and updates are quite frequent (GSLib is available right here in the A2Pro Library, BTW). The latest version is 2.0 something. 2.0.1 Does Orca/Pascal use the same standard that TML Pascal II uses? ORCA is fully follows ISO standard I don't know about TML :) a few changes might be necessary in your code to move it to ORCA, though, especially in toolbox interfaces and compiler directives [EOA] [AAL]/////////////////////////////////////// TOUR OF 8/16 APPLE ASSEMBLY LINE / ////////////////////////////////////////// The Apple Assembly Journal """""""""""""""""""""""""" By Dave Miller [JUST.DAVE] >>> Apple Assembly Line - Apr. 1981 - Vol. 1, No. 7 <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""" This file is in Library 22, it's AAL.APR.81.BXY, file #3334. Here's the directory layout for AAL.APR.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 a new (at the time) symbol cross- reference program to go with S-C Assembler II. Also, info on how to get an 80 column assembly listing with an Apple Parallel Printer Interface. Text.File.IO 'Text File I/O in Assembly Language Programs' - how to read and write a text file from Assembly Part.1 This file contains three articles: 'Patch S-C Assembler II for More Errors' - patch to allow the S-C Assembler to display more than one error at a time. 'Fast String Input Routine for Applesoft' - ampersand command for Applesoft to allow commas and colons in input statements. 'Applesoft Internal Entry Points' - chart showing where Applesoft processes all the BASIC commands. Hiding.Undr.DOS 'Hiding Things Under DOS' - how to move HIMEM and the DOS 3.3 buffers so that you have a protected area to put your programs in where Applesoft won't bother it. DOS.Format.List 'Commented Listing of DOS 3.2.1 Format', 'Commented Listing of DOS 3.3 Format' - articles that go with the DOS 3.x disassemblies found in the DOS.3.3 folder. It explains some of the differences between the two, also. AS.Substr.srch 'Substring Search for Applesoft' - ampersand command for Applesoft that will check if a substring exists inside a string, for example, 'el' can be found inside 'hello'. DOS.3.3/ Demo.Txt.Fl.Rd Demonstration of reading a text file from Assembly DOS321BEA0.BFFF DOS 3.2.1 disassembly DOS33.BEAF.BFFF DOS 3.3 disassembly FastStr.Input Source for fast 'input anything' command Substr.search Source for the substring search command Test.Str.Input Applesoft BASIC program that uses the &GET command Test.Subst.Srch Applesoft BASIC program that uses the substring command Wow... talk about nostalgia! For someone who remembers when DOS 3.3 was the 'in thing', this brings back a lot of memories :) The disassemblies are fun to browse through. If you ever wanted to find out how to format a disk in a Disk II drive, this is a good place to learn :) If you're planning to do text file I/O in DOS 3.3, the routines in this issue for text file I/O are very helpful. There are better ways to do it in ProDOS, but if you're in DOS 3.3, you'll need this, or else stick with RWTS and do it yourself :) As usual (this appears to be becoming a regular installment) we have more great ampersand commands to add to BASIC. This is another (as usual) must- have installment of Apple Assembly Line! [EOA] [OFF]/////////////////////////////// OFF THE DEEP END / ////////////////////////////////// Return of the Top 10 List """"""""""""""""""""""""" By Nate Trost [A2PRO.GELAMP] >> Top 10 Reasons A2Pro Real Time Conferences << >> Are Better Than #appleiigs On IRC << """""""""""""""""""""""""""""""""""""""""""""""" 10. No DCC, but we have Minidisc! 9. You can receive help from people who have written programs that actually made it to v1.0. 8. Fabio and Cindy's Tuesday RTC on improving the ol' firmware. 7. You can come in six nights a week and find actual programming discussion rather than some guy from Greenland babbling about his armpits. 6. No hordes of Amiga geeks with dreams of Super Nintendom asking about the 65816. 5. You can party with the bunch who discovered that the actor playing Barney is, in reality, Dr. Tom. 4. A2Pro has RTCs dedicated to everything from graphics and sound programming, to the toolbox, to assembly, general programming and more. 3. Frequent guest appearances by the beloved Mr T. ("No GSBug? Ooh, I pity da fool!") 2. Special Beginner's Night on Friday's that help those new to programming. 1. No netsplits! [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 Programming PROGRAMMING 1445 Data Comm. DATACOMM 1450 (Windows Coming Soon!) 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. Due to the added expense involved, we ask that when you get GEnieLamp via the anonymous ftp for GEnieLamp, that it _not_ be ftp'd during the hours of 9AM and 5PM Eastern Standard Time. We appreciate your cooperation in this matter. o Current issues of all versions of GEnieLamp as well as back issues of GEnieLamp IBM are File Requestable (FREQable) via FidoNet (Zones 1 through 6) from 1:128/51 and via OURNet (Zone 65) from 65:8130/3. SysOps should use the following "magic names" to request the current issue of the indicated GEnieLamp platform (FREQ FILES for names of back issues of GEnieLamp IBM): Platform Magic Name To Use """""""" """"""""""""""""" GEnieLamp IBM .................. GLIBM GEnieLamp ST ................... GLST GEnieLamp A2Pro ................ GLA2PRO GEnieLamp Macintosh ............ GLMAC GEnieLamp TX2 .................. GLTX2 GEnieLamp A2 ................... GLA2 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 send it 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 Connors [DR.BOB] EDITOR """ o David C. Leithauser [D.LEITHAUSER] HyperRead Editor o Brad Biondo [B.BIONDO] IBM Staff Writer o Tippy Martinez [WIN.LAMP] IBM Staff Writer o David Holmes [D.HOLMES14] IBM Staff Writer o Don Lokke [D.LOKKE] Cartoonist WINDOWS o Tippy Martinez [WIN.LAMP] EDITOR """"""" o John C. Osarczuk [J.OSARCZUK] Windows Staff Writer o Brad Biondo [B.BIONDO] Windows Staff Writer MACINTOSH o Richard Vega [GELAMP.MAC] EDITOR """"""""" o Tom Trinko [T.TRINKO] Mac Staff Writer o Bret Fledderjohn [FLEDDERJOHN] Mac Staff Writer o Ricky J. Vega [GELAMP.MAC] 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 Al Fasoldt [A.FASOLDT] ST Staff Writer o Fred Koch [F.KOCH] ST Staff Writer o Sandy Wolf [S.WOLF4] ST Staff 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 Tara Dillinger [TARA] Co-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 GEna E. Saikin [A2.GENA] A2 Staff Writer o Steve Weyhrich [S.WEYHRICH] A2 Staff Writer A2Pro o Nate C. Trost [A2PRO.GELAMP] EDITOR """"" o Tim Buchheim [T.BUCHHEIM] Co-Editor ETC. o Jim Lubin [J.LUBIN] Add Aladdin/Scripts """" o Scott Garrigus [S.GARRIGUS] Search-ME! o Bruce Maples [B.MAPLES] Copy Editor o Mike White [MWHITE] (oo) / DigiPub SysOp o Susie Oviatt [SUSIE] ASCII Artist \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// 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 1994 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]