|||||| |||||| || || |||||| |||||| || || ||| || || || || ||| |||| |||||| || |||| Your || || || || ||| || || |||||| |||||| || || |||||| |||||| GEnieLamp Computing || |||||| || || |||||| RoundTable || || || ||| ||| || || || |||||| |||||||| |||||| RESOURCE! || || || || || || || ||||| || || || || || ~ WELCOME TO GENIELAMP A2Pro! ~ """"""""""""""""""""""""""" ~ Elvis Spotted in Podunk ~ ~ Switching Video Modes ~ Merlin Madness ~ ~ Sly Pascal RunQs ~ HyperTalk Troubleshooting ~ ~ Sparse Files Explained ~ Tour of 8/16 Central ~ ~ HOT NEWS, HOT FILES, HOT MESSAGES ~ ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ GEnieLamp A2Pro ~ A T/TalkNET OnLine Publication ~ Vol.4, Issue 15 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 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? <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""" ~ May 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] DEVELOPERS CORNER ....... [DEV] HOT Files You Can Download. News From Online Developers. LOG OFF ................. [LOG] GEnieLamp Information. [IDX]""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" READING GEnieLamp GEnieLamp has incorporated a unique indexing """"""""""""""""" system to help make reading the magazine easier. To utilize this system, load GEnieLamp into any ASCII word processor or text editor. In the index you will find the following example: HUMOR ONLINE ............ [HUM] [*]GEnie Fun & Games. To read this article, set your find or search command to [HUM]. If you want to scan all of the articles, search for [EOA]. [EOF] will take you to the last page, whereas [IDX] will bring you back to the index. MESSAGE INFO To make it easy for you to respond to messages re-printed """""""""""" here in GEnieLamp, you will find all the information you need immediately following the message. For example: (SMITH, CAT6, TOP1, MSG:58/M530) _____________| _____|__ _|O__ |____ |_____________ |Name of sender CATegory TOPic Msg. Page number| In this example, to respond to Smith's message, log on to page 475 enter the bulletin board and set CAT 6. Enter your REPly in TOPic 1. A message number that is surrounded by brackets indicates that this message is a "target" message and is referring to a "chain" of two or more messages that are following the same topic. For example: {58}. ABOUT GEnie GEnie's monthly fee is $8.95 which gives you up to four hours """"""""""" of non-prime time access to most GEnie services, such as software downloads, bulletin boards, GE Mail, an Internet gateway, multi-player games and chat lines. GEnie's non-prime time connect rate is $3.00 an hour. To sign up for GEnie, 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: JOINGENIE and hit RETURN. When you get the prompt asking for the signup/offer code, type: DSD524 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. SPECIAL OFFER FOR GEnieLamp READERS! If you sign onto GEnie using the """""""""""""""""""""""""""""""""""" method outlined above you will receive an *additional* six (6) free hours of standard connect time (for a total of 10) to be used in the first month. Want more? Your first month charge of $8.95 will be waived! Now there's no excuses! *** GET INTO THE LAMP! *** """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" [EOA] [FRM]////////////////////////////// FROM MY DESKTOP / ///////////////////////////////// Notes From My Desktop """"""""""""""""""""" o TOP OF THE PAGE >>> TOP OF THE PAGE <<< """"""""""""""""""""""" DAZE OF SUMMER? Well, it's early May already and summer is just around the """"""""""""""" corner already! I can't believe it. :-) With A2U on hiatus until the next session, the advent of spring, and such tasks as spring cleaning and the mowing of the lawn (after spending the equivalent of two long debugging sessions getting it in running condition!) one would expect A2Pro to be quiet. However, I was quite surprised by the amount of invaluable programming chatter in the BB this month. Enjoy the issue! I've got to figure out what to do with all these grass clippings... Nate Trost GEnieLamp A2Pro [EOA] [DIR]////////////////////////////// A2PRO ROUNDTABLE STAFF / ///////////////////////////////// By Nate Trost [A2PRO.GELAMP] ______________________________________________ APPLE II PROGRAMMERS & DEVELOPERS ROUNDTABLE _____ ______ ______________________________________________ /_____|/______\ /__/|__| ___|__| /__/_|__| /_____/ Your Sysops: 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 Trost [A2PRO.GELAMP] o BULLETIN BOARD HOT SPOTS o PROGRAMMER'S TIPS o FOR SALE o MESSAGE SPOTLIGHT >>> BULLETIN BOARD HOT SPOTS <<< """""""""""""""""""""""""""""""" [*] CAT3, TOP4, MSG{80}....................The Merlin 16+ Assembler [*] CAT15, TOP14, MSG{113}.............................Window Manager [*] CAT15, TOP16, MSG{89}.............................Control Manager [*] CAT15, TOP30, MSG{86}............................Resource Manager [*] CAT16, TOP2, MSG{165}...........................Programmers Cafe [*] CAT30, TOP2, MSG{122}........................Using the GNO Shell [*] CAT33, TOP3, MSG{157}...............Rumors, Wishes and Vaporware >>> PROGRAMMER'S TIPS <<< """"""""""""""""""""""""" STARTUP AND SHUTDOWN I have a question about StartUpTools. In my """""""""""""""""""" application, I call StartUpTools, which starts nearly all of the standard tools. I then JSR to a routine which looks at the contents of the Accumulator and displays an error message on the text screen where appropriate. My question is this. I faked A system error to see how my text messages would look, if a user received an error while launching my application. The messages were fine. However, when I relaunched my application, my error routine reported a fatal error of $1E12, which I believe is a duplicate ResourceStartUp call. Before I even call StartUpTools, I manually start the Tool Locator and Memory Manager. I have two exit entry points to my application. The first of these calls ShutDownTools and jumps to the second entry point. This second point shuts down the Memory Manager and Tool Locator, and then quits. If StartUpTools returns an error, the error-handling code, after displaying a nice message on the text screen, jumps to the second entry point without calling ShutDownTools. Should ShutDownTools be called when exiting an application, whether or not StartUpTools was successful? If not, what should I do to avoid the duplicate ResourceStartUp call the next time my application is launched? Tony Morales AKA. Hexman (T.MORALES [Hexman], CAT15, TOP1, MSG:76/M530) >>>>> ShutDownTools has been fixed (I think it's mentioned in the 6.0 """"" docs; if not, it's in the 6.0.1 update) to shut down the resource manager even if there's a bad input for the StartStopRec (presumably because of an error during StartUpTools) so that it shuts down the Resource Manager no matter what. If you have your error handler call the ShutDownTools exit entry point (nice terminology, BTW.. ;-) ), all should be fine. ...Sloanie (A2PRO.HELP [ Sloanie ], CAT15, TOP1, MSG:77/M530) RUN-QUEUE AND ORCA/PASCAL A few questions regarding the Desk Manager.. :) """"""""""""""""""""""""" (1) Is it possible to install a run-queue item from ORCA/Pascal, and (2) if it's indeed possible, does anybody know how it's done? In the run-queue description/reference (TBR3, pgs. 29-3...29-5) it appears that the run-queue system uses some sort of jsl/jsr mechanism, and not the stack (like IPC does). Does this mean that Pascal won't work? Note that I do have ORCA/M if a run-queue handler is impossible to do from Pascal, but I'd like to avoid using assembly if at all possible. Any suggestions would be greatly appreciated; I REALLY have no idea how to do this. Thanks in advance. :) --Greg (SnakeBytes:) (SNAKEBYTES [Greg B.], CAT15, TOP5, MSG:33/M530) <<<<< Greg, writing the actual subroutine to handle the run queue is easy """"" from Pascal. All Pascal subroutines end with an RTL, and that will continue to be true for the forseable future. The problem with a run queue is basically the same one as the problem with a hearbeat task: you are expected to have a record followed immediately in memory by executable code, and there is normally no way to guarantee that in Pascal (or any other high-level language I can think of). However, there is a trick. :) It's dirty; it's ugly; it's nasty -- just the sort of thing we all love to do simply to prove it can be done. Create a record like this, and declare a variable at the program/unit level: type runQueue = record reserved: longint; period: integer; signature: integer; reserved2: longint; jml: byte; proc: longint; end; var rq: runQueue; Fill in period and signature like you normally would. Jml is a byte we'll fill in with the machine code for a jmup long; proc is the address of the procedure to handle the run queue event. (The fourth byte is not used, but that doesn't hurt anything in this case.) rq.jml := $5C; rq.proc := ord4(@RunQueueHandler); RunQueueHandler should be declared like this, at the program or unit level: procedure RunQueueHandler; begin end. The same thing would work for a hearbeat interrupt, and the same general trick would work from C or Modula-2. Mike Westerfield (BYTEWORKS, CAT15, TOP5, MSG:34/M530) MERLIN EQUATE WEIRDNESS I was setting up a popup control and I equated, """"""""""""""""""""""" popUpControl equ $87000000, at the begining of my source and used that in the template for procRef as in; adrl popUpControl. This didn't work and I had to just use, adrl $87000000, which does work. No big deal but can't Merlin equate a 4-byte label? Also, the last field of the Task record, offset $2A, is listed as Point--Location of last mouse click. I understand if it says word I can code it as DW or DA and if it says long I use ADRL but this is shown with dotted lines which I think indicates varying size. Being a point, does this require two bytes for X and two for Y and so ADRL works (which is what I decided to use for now) or do I need to DS and if so how much storage. (M.WADE7 [Mark], CAT3, TOP4, MSG:80/M530) <<<<< Yeah, it kinda sucks rocks, but Merlin-16 (at least v4.08) has a """"" flaw in handling long equates... it can handle 1 byte, 2 byte and 3 byte fine, but when it comes to 4 byte... well it forces a null byte for the high byte. (Eeewwwwwww that stinks!) So... You ask how do I get around this? Simple! I use a macro :) * * Equates * (NOTE: only hi word of defProcs specified!) * popUpControl equ $8700 ;only hi word of the equate is used here! * * Macros * defProc mac adrl ]1*$100000 ;shift things around properly <<< * * neat stuff goes here * defProc popUpControl ;provides correct 4 byte long :) * ************* Obviously this stunt will only work if the low word of the defProc is null, but that is (normally) the case, esp when using system supplied procedures. (custom procedures obviously require some addition care & feeding): One could also specify the top 3 bytes of the defproc, and then multiply in the macro accordingly to achive the same results, this lets the top 3 bytes be used, but the low byte is still a null. (I prefer the way I gave in the example as it falls neatly on word boundaries :) A "point" is two words so... adrl 0 ;provides quick & easy space of the needed size ds 4 ;also provides quick & easy space required ds 2,0 ;for X word ds 2,0 ;for Y word dw $0000 ;for X word da $0000 ;for Y word When specifying storage (variable) space, using DA, DW, or DS (with appropriate syntax) all end up giving the same end result. (I prefer to reserve the use of DA for addresses, DW or DS for variables, and ADRL 0 for long variables) For sake of completeness, one could also do this as follows: hex 00,00 ;for X word hex FF,FF ;for Y word I don't like using hex (except when absolutely needed) but it works. The actual values don't matter in any of these examples of course as they're there only as placeholders until the real data is returned. -Harold mx %11 xc xc Foo lda #^Foo pha pea #Foo-1 rtl ;recursion at it's worst ;) (H.HISLOP [Harold], CAT3, TOP4, MSG:82/M530) CHANGING VIDEO MODES I want to change video modes within my app. I see """""""""""""""""""" the method proposed in TN #4, but it is pre-ToolStartUp. Is there a way to get QD's direct page so that I may re-use the area allocated by ToolStartUp? I seem to remember a toolcall(?) to do this. If not, what is the easiest way now to change video modes? I hope it doesn't require two toolstart recs, but that seems to be the easiest thing I can see. Thanks, Pauley (P.BENSON1, CAT15, TOP4, MSG:116/M530) <<<<< The best way to be able to shut down and start up QuickDraw II to """"" do mode switches is to start it yourself: _TLStartUp _MMStartUp _MTStartUp _QDStartUp _StartUpTools Just leave QuickDraw II out of the list of tools to be started by StartUpTools. Eric Shepherd (Sheppy) (POWERPC.PRO [Sheppy], CAT15, TOP4, MSG:117/M530) HYPERTALK TROUBLESHOOTING """"""""""""""""""""""""" On mouseUP Ask "How for this skill?" with "5" put it into temp if cd fld points >= temp then subtract temp from cd fld points add temp to CWPoints put CWpoints into cd fld CWpoints else show cd fld zinger wait 5 seconds hide cd fld zinger end if end mouseUP i This is a script that I've been having problems with. It seems that even after I put the contents of it into the variable temp, I can't use Temp for any further operations. The script bombs out at 'add temp to CWpoints. any help would be appricated. (F.GREATOREX [Fred], CAT18, TOP4, MSG:12/M530) >>>>> Sorry it took so long to get back to you, Fred, been swamped and I """"" am having crashing probs on three of four machines! Anyway, I can see what your problem(s) is right away! Try "Playing computer" and you'll see it too... Let's try it. Here's a snippet of your code followed by me "Playing Computer": On mouseUp Ask "How for this skill?" with "5" put it into temp if cd fld points >= temp then subtract temp from cd fld points add temp to CWPoints put CWpoints into cd fld CWpoints Line 1: IT is assigned 5 (First prob, what happens if the user 'cancel's, hmm?) (Hint: ERROR) Line 2: TEMP is assigned 5 Line 3: a fld named "Points" which happens to hold 8 is larger then 5 Line 4: we subtract 5 from 8 leaving 3 in the fld named "points" Line 5: Add 5 to nothing. Second problem, CWPoints is undefined!! You can't add something to a non-number, in this case a number that doesn't exist, in fact, what you are trying to do here is add 5 to "CWPoints" (This is also why you have to handle "cancel" or you'll try to add 5 to "cancel" ... no can do.) To continue we'll assume CWPoints is 0, we add 5 to 0 and CWPoints is 5 Line 6: put 5 into cd fld 5 Huh? Yup, here's your third error, you got lazy and didn't use quotes! Instead of putting a value into a cd fld named "CWPoints" the container CWPoints is evaluated to 5! Get it? You would've got bit by this as soon as your second error was corrected. You really MUST define variables and use quotes around literal names. So the corrected handler could be: On mouseUP global CWPoints Ask "How for this skill?" with "5" if if is not empty and the result is not "cancel" then put it into temp if cd fld points >= temp then subtract temp from cd fld "points" if CWpoints is empty then put 0 into CWPoints add temp to CWPoints put CWpoints into cd fld "CWpoints" else show cd fld "zinger" wait 5 seconds hide cd fld "zinger" end if end if end mouseUp (HANGTIME [Tyrant], CAT18, TOP4, MSG:13/M530) DETECTING EXTENDED KEYS I would like to support the function keys for """"""""""""""""""""""" the extended keyboard for some script commands in Spectrum v1.1 and can find no reference as to how to know from the EventRecord that they have been pressed. What, if any, are the EventRecord returns for these keys? Ewen Wannop (E.WANNOP, CAT15, TOP6, MSG:97/M530) <<<<< Ewen, the extended keys on the extended keyboard are simply regular """"" keys with the "keypad" bit set in the modifiers. Unfortunately, CoPilot won't let me type extended keys into this document, or I'd list them and their meanings. Undo, cut, copy, and paste are z, x, c, v, respectively. Help is "r." Aside from that, I haven't memorized any of them. Eric Shepherd (Sheppy) (POWERPC.PRO [Sheppy], CAT15, TOP6, MSG:98/M530) >>>>> What Eric said. Here are the equivalent keypresses for the """"" extended keys (as Eric said, the keypad bit [bit 13 of the modifier flags field in the event record] will be set for these): Key Equivalent ===== ========== F1 z (undo) F2 x (cut) F3 c (copy) F4 v (paste) F5 ` F6 a F7 b F8 d F9 e F10 m F11 g F12 o F13 i F14 k F15 q home s end w page up t page down y insert r delete u (true delete) I don't think I left any out. If you also check for the state of the shift key, those of us with an OmniMac keyboard (with its second set of F keys) will be able to use the shifted keys for separate duty. >> Eric > CoPilot won't let me type extended keys into this document, or > I'd list them and their meanings. ShadowWrite will! That's how I did it. (Co-Pilot will, too, but you have to uncheck the extended keyboard option, exit & return, and then reset the option--ugh.) David (D.WALLIS2, CAT15, TOP6, MSG:100/M530) SORTLIST AND STACK ADDRESSING What do I have to do to use _SortList with """"""""""""""""""""""""""""" a custom comparision routine from within an NDA? TBR1 pg.11-24 seems simple enough yet causes my system to crash. The way I first interpeted it was memberA is at bnk/0004 and memberB is at bnk/0008. Knowing NDA's don't have their own zp, I saved all these locations first before calling _SortList and restored them afterwards. That didn't work. Next I played with the 'input parameters' by saving the RTL address, pulling what I thought would be memberA & memberB, then restoring the RTL address, then RTL. No luck there either. I haven't even written the actual comparision routine yet, I just wanted to make sure the call can be entered and exited properly first -which it isn't- (which is why I do this in the first place :) anyway- I guess I should mention that the actual 'comparision' is just a CLC to cause natural ordering. I'd love to hear from someone who has a better understanding of custom comparision routines then I do! -Ron Sullivan- (R.SULLIVAN8 [Sully], CAT15, TOP28, MSG:95/M530) >>>>> The sample routine you looked at on p. 11-24 used stack relative """"" addressing. The 4 and 8 displacements were relative to the stack pointer at entry, not relative to a particular bank. For me, a picture works a little better. Try this: Location Length Use -------- ------ --- S+8 4 Address of memberB S+4 4 Address of memberA S+1 3 Return address The easiest way to use the addresses to to set up a local direct page area, like this: tsc phd tcd Now you can access the members using indirect long addressing. For example, to get the first word of memberB, you would use: lda [8] Before you start the stack cleanup shown on p. 11-24, just be sure to pop the DP address you saved with pld Mike Westerfield (BYTEWORKS, CAT15, TOP28, MSG:96/M530) FINDING POP-UP ITEMS I've created and drawn a popup control in a window """""""""""""""""""" and now I want to access the control record to see what item number has been selected, so I pulled the handle returned to me on the stack by _NewControl2. Then I have to dereference the handle to get the address of the control record ( I guess I have to lock the handle first, I did'nt do that, I'll have to try it when I go back). Then I need to offset into the record 18 bytes to get at ctlValue. Is this somewhere on track? As I'm typing this I'm checking my books and I see in TBR 1 _GetCtlValue. Sounds like what I'm looking for. I'll go try that now... I guess I should have hashed this out a while longer. I usually do, but the response around here is so fast... anyway, _GetCtlValue, of course, worked. For curiosity's sake; Shouldn't I have been able to access the control record directly like I started to describe above? I know I haven't supplied any code yet but I believe I dereferenced the handle correctly. Maybe I didnt index the record properly? Once the handle is dere ferenced and stored in PTR, PTR+2 could I access ctlValue by: LDA [PTR],Y ; where Y = 18 CMP #ItemNum ? Mark Wade - awash in a sea of reference manuals- (M.WADE7 [Mark], CAT15, TOP16, MSG:89/M530) <<<<< Although, yes, you can access the control record directly, you """"" should avoid doing that unless absolutely necessary -- if there's a Control Manager call to provide the information you want, use it. It avoids potential incompatibilities. Eric Shepherd (Sheppy) (POWERPC.PRO [Sheppy], CAT15, TOP16, MSG:90/M530) >>> FOR SALE <<< """""""""""""""" BOOKS AND SOFTWARE FOR SALE I have numerous books and such for Apple IIs """"""""""""""""""""""""""" I purchased over the years and no longer use. I would prefer to sell this equipment all at once, but let's face it, the shipping charges would about kill me :-) The following are Softcover books from Addison Wesley: (2) Technical Introduction to the //GS...........................$5.00 ea. (1) Apple //GS Hardware Reference 2nd edition....................$7.50 (1) Apple //GS GS/OS Reference...................................$7.50 (1) The Apple II Guide...........................................$2.50 (1) Apple //GS Owner's Guide (spiral bound)......................$5.00 (1) Apple II Utilities Guide (spiral bound)......................$3.50 (1) Applesoft Tutorial (spiral bound)............................$3.50 (1) Applesoft BASIC Programmer's Reference Manual................$3.50 The following are HardCover's from Addison-Wesley: (1) A Touch of AppleSoft BASIC...................................$5.00 (1) Apple II ProDOS 8 Technical Reference Manual.................$5.00 (1) BASIC Programming with ProDOS................................$7.50 (2) Programmer's Introduction to the Apple //GS.(one w/disk).....$10.00 ea (1) Apple //GS Toolbox Reference Volume 1........................$15.00 (1) Apple //GS Toolbox Reference Volume 2........................$15.00 (1) Apple //GS Toolbox Reference Voluem 3 (paperback)..........$15.00 The following are owner's manuals for various hardware: (2) Apple 3.5 Drive Owner's guide................................$1.00 ea (1) Apple //GS System Disk User's Guide..........................$1.00 (1) Setting Up Your Apple //GS...................................$1.00 (1) Apple 5.25 Drive Owner's Guide...............................$1.00 (1) AppleColor RGB Monitor Owner's Guide.........................$1.00 The following are an assortment of books of interest to programmers. All are large paperbacks in excellent condition. The price is right! BASIC and the Personal Computer by Dwyet and Critchfield.........$5.00 Exploring the Apple //GS by Little...............................$10.00 Exploring Apple GS/OS and ProDOS 8 by Little.....................$10.00 The Apple //GS Toolbox Revealed by Goodman.......................$10.00 The Big Tip Book for the Apple II Series by Kersey and Sanders...$7.50 Apple //GS Assembly Language Programming by Scanlon..............$10.00 Mastering the Apple //GS Toolbox by Gookin and Davis.............$12.50 Compute!s Apple //GS Machine Language for Beginners by Wagner....$10.00 Apple //GS Toolbox by Davis and Gookin...........................$10.00 (2) Technical Reference by Fischer...............................$12.50 ea Programming the Apple //GS in Assembly Language by Lichty and Eyes.$12.50 Apple 16 by Harrison.............................................$5.00 HiRes Graphics and Animation using Assembly Language by Malkin...$7.50 I also have a few 8/16 issues and a few Sourcerer's Apprentice issues, as well. Make an offer :-) I will sell the entire box of goodies for $150.00 + Shipping (less than half of my asking price for individual pieces) I (also) have some programming software for sale: TML Pascal II....................................................$10.00 (2) ORCA/C with Manual and Updates...............................$20.00 ea (2) ORCA/M with Manual and Updates...............................$20.00 ea ORCA/Desktop.....................................................$10.00 Donnie (Please reply in EMail as I rarely stop by here :-) Thanks. (D.A.GRIMES [Donnie], CAT1, TOP18, MSG:40-41/M530) >>> MESSAGE SPOTLIGHT <<< """"""""""""""""""""""""" OPCODE JOKES I found this list over in Chat (m400;7) and thought you'd """""""""""" all get a kick out of it. Enjoy! > Category 3, Topic 27 > Message 36 Fri Apr 08, 1994 > JOKEMASTER [Sir Laffalot] at 03:41 EDT Knowing that most programmers have little time to keep up with new OPCODEs, I have compiled the latest: JOKEMASTER OPCODE UPDATE, v. 1.4 OPCODE: AAR = Alter at Random OPCODE: AFVHD = Apply Five-hundred Volts to Hard Drive OPCODE: AND = Accelerate Noisy Disk OPCODE: AO = Annoy Operator OPCODE: AWTT = Assemble with Tinker Toys OPCODE: CAPH = Convert All Prime numbers to Hex OPCODE: CBNC = Close, But No Cigar OPCODE: CLBRI = Clobber Register Immediately OPCODE: CLD = Close Logical Door OPCODE: CMPSW = Copy Multiple Programs to Standard Window OPCODE: CNB = Cause Nervous Breakdown OPCODE: COLB = Crash for Operator's Lunch Break OPCODE: COZ = Change Ones to Zeros OPCODE: CNTC = Crunch Numbers in Trash Compactor OPCODE: CPPR = Crumple Printer Paper and Rip OPCODE: DAE = Delete All Executables OPCODE: DTUD = Display Totally Useless Data OPCODE: DXGR = Display X-rated GIFs at Random OPCODE: ECH = Engage in Computer Hex OPCODE: EXOP = Execute Operator OPCODE: EXPC = Execute Politically Correct OPCODE: EXPP = Execute Political Prisoner OPCODE: FLI = Flash Lights Impressively OPCODE: FSM = Fold, Spindle and Mutilate OPCODE: FSRA = Forms Skip and Run Away OPCODE: HLT = Hide Last Term paper OPCODE: IFC = Ignore Further Commands OPCODE: IAE = Ignore All Exceptions OPCODE: IAS = Ignore Annoy and Split OPCODE: IIB = Ignore Inquiry and Branch OPCODE: IRET = Ignore Request and Explode Terminal OPCODE: INT = Invade Next Terminal OPCODE: IAQ = Insert Another Quarter OPCODE: IRUN = Insert Random Useless Numbers OPCODE: JO = Jail Owner OPCODE: JP = Junk Program OPCODE: MRC = Move Registers - to Cleveland OPCODE: MC = Melt CPU OPCODE: PVLC = Punch Variable Length Card OPCODE: RA = Randomize Answer OPCODE: RAC = Randomize Alphabetic Code OPCODE: RASC = Read and Shred Card OPCODE: RCB = Read Command Backwards OPCODE: RDA = Refuse to Disclose Answer OPCODE: RDB = Run Disk Backwards OPCODE: RMM = Request More Memory OPCODE: SQPYC = Sit Quietly and Play with Your Crayons OPCODE: SRT = Steal Random Taglines OPCODE: SSJ = Select Stacker and Jam OPCODE: STA = Store Anywhere OPCODE: STROM = Store in Read-only Memory OPCODE: TARC = Take Arithmetic Review Course OPCODE: UER = Update and Erase Record OPCODE: ULDA = Unload Accumulator OPCODE: UP = Understand Program OPCODE: UPCI = Update Card In Place OPCODE: WBT = Water Binary Tree OPCODE: WEMG = Write Eighteen Minute Gap OPCODE: WF = Wait Forever OPCODE: WHFO = Wait Until Hell Freezes Over OPCODE: WSWW = Work in Strange and Wondrous Ways OPCODE: WWLR = Write Wrong-Length Record Compiled from various unknown sources; many additions: JOKEMASTER (A2.TONY [A2 Librarian], CAT16, TOP2, MSG:161/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 PROCYON INC. <<< """""""""""""""""""""""""""""" GSH IDENTITY I'm writing a shell utility to modify a rVersion resource. """""""""""" Because Merlin refuses to use the ORCA wildcard shell calls (gee, I wonder why! ;) I have to special-case shells. So... #1) What is the shell identifier for GSH? #2) Does GSH use the ORCA/Shell wildcard calls? (A2PRO.HELP [ Sloanie ], CAT30, TOP2, MSG:122/M530) <<<<< > #1) What is the shell identifier for GSH? """"" Strangely enough, it's "BYTEWRKS" :-) > #2) Does GSH use the ORCA/Shell wildcard calls? Yes. However, they do not handle the "=" wildcards; they use the full shell regular expression wildcards. Also note that wildcards passed on a command line are expanded by the shell _before_ your program is run, so your program should be written to support multiple filename arguments on the command line (as in "foo file_a file_b file_c"). Jawaid (PROCYON.INC, CAT30, TOP2, MSG:123/M530) DIALUP REQUEST I just uploaded '4082:DialUp.V121.BXY 30K' to library 30 """""""""""""" (If nothing went wrong :-)) I believe this is the newest version. If it is of any value to anyone I would like to ask a favor. Please compile the '.asm' file (very small) under Orca/M, SHK the OBJ file and either upload or Email the file to me. I want to experiment with the C source but I don't have Orca/M to do all of it. I am an old Merlin guy and I don't use assembly much anymore, only C. The things I want to modify/experiment with are: - a command line option to specify the number of rings rather than just one (before answering that is). - try to add the 'Calling-Number-Display' option that my new Supra 144LC has (this will be a command line option also). - I'll even rename the file 'xDialUp' to avoid confusion. If I get the OBJ's, I will upload the result here if anyone expresses an interest. Thanks in advance to anyone who can help with this ODD request. Doug Mitton (D.MITTON [Doug], CAT30, TOP3, MSG:119/M530) >>> NEWS FROM THE BYTE WORKS <<< """""""""""""""""""""""""""""""" ORCA FUTURE POSSIBILITIES Kaz, from what people have told me, here is a """"""""""""""""""""""""" short list off the top of my head of some of the things that I'll be seriously considering for the updates. Keep in mind, these are not commitments, and there are several things I'll probably forget here that I will remember when I look over my messages and notes. This is just to give you an idea of the level of things that may happen for the updates. Also, keep in mind that the primary reason for the updates is to fix bugs. The reason for adding a few other things at the same time is that it's convinient to do so. Testing and building disks for programs this size is very time consuming, so I don't redo the disks very often -- and consequently, I try to put as much in as I can when I _do_ rebuild the disks! 1. // comments in C. 2. Labels (aka markers) in both editors. 3. Support for international characters in PRIZM. 4. Minor internal improvements in objects in Pascal. 5. A script menu in PRIZM. 6. Better Finder support (basically allowing you to click on a document and have ORCA launch and do something sensible). 7. Allow strings as function return values in Pascal. 8. More search options for executable files in the shell (e.g. a list of prefixes the shell will search trying to find the file to execute). 9. A "default" header in C for setting global options for all compiles. Again, don't worry if your favorite change isn't here -- this is just a quick list to give you an idea of scope. Things that won't get done, but have been suggested, are things like: 1. Projects with automatic scanning of source files to build dependency lists. (But projects _may_ be added.) 2. C++ 3. Context sensitive editing that allows the editor to select blocks, build lists of procedures for editor labels, etc. (Although hooks to let you play with ideas _may_ be added.) It's not that these are bad ideas, it's just that I'm one person in a small market maintaining three major languages and a lot of support programs, trying to get a much-needed set of bug fixes out. :) I have to pick my targets carefully! Mike Westerfield (BYTEWORKS, CAT36, TOP3, MSG:178/M530) [EOA] [TOU]/////////////////////////////// TOUR OF 8/16 CENTRAL / ////////////////////////////////// The Great Programmers Magazine """""""""""""""""""""""""""""" Chris Budewig [K.FLYNN] 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 >> 8/16-Central - May, 1991 - File #3415 << """"""""""""""""""""""""""""""""""""""""""" /es.central.9105/ ..About.This.Disk Introduction and complete catalog listing ..Contents Table of Contents ..Columns/ ....WhatsNew (A) About the latest in the world of Apple II ....HyperLab/ (SA) HyperStudio tips and techniques for large projects plus an XCMD to turn on/off the menubar for all cards in a stack ....VaporWare (A) Murphy Sewall's industry snapshot ..Q.And.A/ ....LETTERS Readers Write - Problems with SuperCat (Apr 91 issue) ....AOL.TT America Online TechTalk - ejecting/detecting 3.5" disks from BASIC and a couple comments on Aztec C ....GE.TT GEnie TechTalk - Using MVN/MVP and fast animation methods ..Apple.II/ ....Designer/ (SXA) An 80-column text screen designer ....AztecC/ (SA) Using Apple's Desktop Toolkit from Aztec C ..Apple.IIgs/ ....NDA.Horrors/ (SXA) How to avoid all the little gotcha's that go with creating a new NDA - includes the Search-n-Rescue NDA which provides quick access to two user-definable text files ....TileScroll/ (SXA) How to do tiled animation - first of a two or three-part series on tiling. Inlcudes a shareware tile-grabbing program and a tile map maker ..Goodies/ ....ani640/ (XD) Demo of 640-mode animation ....superview/ (X) 3200-color picture viewer/converter ....ERROR.CODES (D) List of Apple IIGS error codes It takes much longer to PRINT complicated text screens while in Applesoft than it does to just BLOAD them into screen memory. With that in mind, the Screen Designer in this month's Apple II section will let you create text screens with normal, inverse, and mousetext characters that can quickly be shown to the user of your programs. In the NDA.Horrors article, Jay Jennings shows takes you step-by-step through the process of creating an NDA. He details all the pitfalls he ran into so that you won't have to! The NDA he constructed is also included and it allows you to specify two text files to be instantly available from the NDA menu. You can even type a word or phrase to be found and hilited within the file you've chosen. >> 8/16-Central - June, 1991 - File #3416 << """""""""""""""""""""""""""""""""""""""""""" /es.central.9106/ ..About.This.Disk Introduction and complete catalog listing ..Contents Table of Contents ..Columns/ ....WhatsNew (A) About the latest in the world of Apple II ....HyperLab/ (SXA) Two new XCMD's give you access to the Toolbox's ScrollRect and SetBackPat calls and allow simple animation or new screen transitions ....VaporWare (A) Murphy Sewall's industry snapshot ....DBMaster/ (A) First in a series of articles on developing applications with DBMaster Pro ..Q.And.A/ ....LETTERS Readers Write - Loading a DHR picture, trapping keypresses in HyperCard GS, and reading a text file into a TextEdit control ....AOL.TT America Online TechTalk - Apple IIGS Toolbox Programming conference ....GE.TT GEnie TechTalk - Script-Central RTC ....test (SX) Demo code for this month's Letters ..Apple.II/ ....DHR/ (SXA) How to load and display double hires pictures from both Applesoft and assembly language ....Dungeons/ (SXA) This article, the first in a series on writing adventure games, goes over some of the fundamentals of traversing a dungeon ..Apple.IIgs/ ....Game.Design/ (A) This is a screenfull of shapes for non-artist arcade game designers that can be cut out and used in your own games -- there are space ships, a space station, missiles and explosions. ....CTips/ (SXA) For ORCA/C programmers, APW/C libraries such as those from Apple DTS and on DEVELOP are not directly useable, but Ken Kashmarek shows how to call them from within your programs! ....Parsing/ (SXA) How to parse a command line into individual arguments and flags ..Goodies/ ....Lithium/ (SXD) Nifty little NDA to save and restore snapshots of the IIGS Battery RAM ....Repton/ (X) 8-bit arcade game similar to Defender ....KeyFilter/ (S) APW/C source to implement a TextEdit key filter ....FileCompare/ (SXD) Applesoft program to find differences in two files and display them on screen ....NDALib/ (SXD) A library of standard routines for NDA writers ..startup (SX) A cheesy little launcher that lets you pick from this issue's P8 programs The theme for this month's issue is supposed to be tools for game writing. On the Apple II side, we have an article than begins a series on programming adventure games. This goes over some of the basic concepts of navigating through a 'dungeon'. On the IIGS side, there's an article on how to parse command lines (which would be an essential part of a text adventure!). The accompanying demo program reads the line you typed, breaks it down into individual arguments and then displays them on the screen. It takes into account quoted arguments (so a parameter can contain a space) and flag arguments (e.g., +s and -p). [EOA] [LIB]////////////////////////////// LIBRARY BIT BONANZA / ///////////////////////////////// HOT Files You Can Download """""""""""""""""""""""""" By Tim Buchheim [T.BUCHHEIM] >>> GNO Utilities <<< """"""""""""""""""""" File # 4082 DIALUP.V121.BXY (GS) Uploaded on 4/24/94 by D.MITTON About 30K (d/l time approx. 3 minutes @ 2400 baud) This is Phillip Vandrys ... DialUp V1.2.1 for GNO/ME V2.0. This is the newest so far (I think). File # 4052 LAST1.1.BXY (GS) Uploaded on 4/8/94 by S.REEVES2 About 24K (d/l time approx. 2 minutes 24 seconds @ 2400 baud) "last", like the UNIX utility of the same name, reports the last logins for specified users or terminals by searching through the login accounting file /var/adm/wtmp. Version 1.1. Requires GNO 2.x and the multi-user update (init 2.0) by Phil Vandry. >>> rVersion utilities <<< """""""""""""""""""""""""""" File # 4048 SETRVERSION.BXY V1.0 (GS) Uploaded on 4/5/94 by RICHARD.B About 3K (d/l time approx. 18 seconds @ 2400 baud) Merlin EXE which sets the version number field of a chosen rVersion resource. Can be used from the command line, command box and linker file. No more popping into a resource editor just to update the last revision, just make it the last command in your linker file! File # 4035 RPERVERSION.BXY V1.0 (GS) Uploaded on 3/31/94 by A2PRO.HELP About 10K (d/l time approx. 1 minute @ 2400 baud) This EXE allows you to edit the rVersion of a file from the command line of a shell. Written for ORCA/Shell v1.2, it may or may not work under newer versions or other shells (I'd like to hear about it if you try it.. :). Read the rPV.ReadMe file for more information. No more fiddling with Rez code when you could be doing something productive! No more dropping to ResLin or LLRE to edit the resource by hand! rPerVersion v1.0! :-) Enjoy. :) >>> comp.sys.apple2 newsgroup digests <<< """"""""""""""""""""""""""""""""""""""""""" File # 4075 CSA2PROG.17.BXY (ALL) Uploaded on 4/21/94 by B.TAO About 88K (d/l time approx. 8 minutes 48 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.programmer Usenet newsgroup, for the week ending Apr 10, 1994. This week's highlights (total of 38 messages): o Mouse Bypass INIT o The PHOENIX Project o Which Tech Notes relate to custom window defs? File # 4074 CSA2GNO.17.BXY (GS) Uploaded on 4/21/94 by B.TAO About 29K (d/l time approx. 2 minutes 54 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.gno Usenet newsgroup, for the week ending Apr 10, 1994. This week's highlights (total of 40 messages): o DRWM 2.0 - what would YOU like to see? o TMTerm v1.1 o Xlogin and utmp probs... o getty(8) manpage File # 4073 CSA2SUBJ.17.BXY (ALL) Uploaded on 4/21/94 by B.TAO About 6K (d/l time approx. 36 seconds @ 2400 baud) Subject listing for the comp.sys.apple2, csa2.comm, csa2.marketplace, csa2.gno, csa2.programmer and csa2.usergroups digests for the week ending Apr 10, 1994. File # 4047 CSA2PROG.16.BXY (ALL) Uploaded on 4/5/94 by B.TAO About 23K (d/l time approx. 2 minutes 18 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.programmer Usenet newsgroup, for the week ending Apr 3, 1994. This week's highlights (total of 19 messages): o Format Options Choice Problem o Non-Blocking I/O in ANSI C? o The PHOENIX Project File # 4046 CSA2GNO.16.BXY (GS) Uploaded on 4/5/94 by B.TAO About 33K (d/l time approx. 3 minutes 18 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.gno Usenet newsgroup, for the week ending Apr 3, 1994. This week's highlights (total of 49 messages): o TMTerm v1.1 o Using Copycat and rz to download??? o xLogin help? File # 4045 CSA2SUBJ.16.BXY (ALL) Uploaded on 4/5/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 Apr 3, 1994. File # 4034 CSA2PROG.15.BXY (ALL) Uploaded on 3/31/94 by B.TAO About 19K (d/l time approx. 1 minutes 54 seconds @ 2400 baud) Digest of messages from the comp.sys.apple2.programmer Usenet newsgroup, for the week ending Mar 27, 1994. This week's highlights (total of 31 messages): o Dynamic Loadable Segments? o GS Modem Port o ProDOS 8 question (forked files?) o Parsing filename from MessageCenter File # 4033 CSA2GNO.15.BXY (GS) Uploaded on 3/31/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 Mar 27, 1994. This week's highlights (total of 51 messages): o DRWM 2.0 - what would YOU like to see? o TMTerm v1.1 File # 4032 CSA2SUBJ.15.BXY (ALL) Uploaded on 3/31/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, csa2.programmer and csa2.usergroup digests for the week ending Mar 27, 1994. >>> Miscellaneous <<< """""""""""""""""""""" File # 4063 CDIFF.BXY (GS) Uploaded on 4/16/94 by G.DESROCHERS About 38K (d/l time approx. 3 minutes 48 seconds @ 2400 baud) This is a (BSD) UNIX type diff program. It even puts out in ex format. Performs a diff of two files and displays what it thinks is the difference between them. Includes source. File # 4060 DEATHERAGE.TXT (ALL) Uploaded on 4/14/49 by DEAN.ESMAY About 17K (d/l time approx. 1 minutes 42 seconds @ 2400 baud) This is a file describing something that involves someone who used to be a very good friend to the Apple II world. We don't condone his actions but we do believe people should know another side to the story that's been getting so much attention in the media of late. And we need help from people who still think well of Matt, regardless of anything he's done. Please read. This file is identical to a message posted in A2Pro's bulletin board this evening. File # 4057 TC2.1.0.BXY (GS) Uploaded on 4/10/94 by A2.TONY About 1275K (d/l time approx. 1 hour 40 minutes @ 2400 baud) The Complex II is a multi-user online game system. The host requires an Apple IIgs to run, however the game includes Apple //e, Apple IIgs and Macintosh terminal programs to support the graphics and sound. Optionally, it will drive a PFP (Pascal 1.1 Firmware Protocol) emulation such as those used in Spectrum or ProTERM, but you don't get the cool graphics and sound. This file is 1.2MB, and contains everything a sysop needs to get started. The terminal programs are downloaded by users the first time they log on, so you do not need to download this file if just want to play the game. (However you do need someone to set this file up for you to dial in via modem!) Packed with ShrinkIt GS v1.1. [NOTE: Hard drive is REQUIRED for this file.] File # 4042 WAVELABV1B.BXY (GS) Uploaded on 4/4/94 by D.TRIBBY About 124K (d/l time approx. 9 minutes @ 2400 baud) waveLAB 1.0 fixes defects from version 0.1 and lets you: * create and edit MIDI Synth waveforms and instruments * load waveforms & instruments from MIDI Synth (".wav" & ".bnk") files * load an arbitrary binary file for use as a waveform * shuffle the order of instruments using the Edit menu * plot graphs of an instrument's waveforms or envelopes * save the instruments and waveforms you have created * load and play MIDI Synth sequence files This Beta version contains debug code and has not been fully tested. Packed with GS Shrinkit. [EOA] [RTC]////////////////////////// RTC WATCH / ///////////////////////////// Bits and Pieces from A2Pro Real Time Conferences """""""""""""""""""""""""""""""""""""""""""""""" By Tim Buchheim [T.BUCHHEIM] >>> RTC INTERVIEW WITH ADDREZ and DISREZ CREATOR <<< """""""""""""""""""""""""""""""""""""""""""""""""""" So, Brian, what what does one do if he wants to add resources to a program, but he uses Merlin rather than ORCA/M and Rez? Well, there is Richard's MAKERES Merlin command, but recently I wrote two new Merlin commands that make it very easy to add resources to programs. The first one is ADDREZ. This will convert data generated by the assembler (or another source) into a resource and add it to your program's resource fork. The resource's type, ID, and attibutes can all be set. For disassembly I wrote the second Merlin utility - DISREZ. This utility allows you to disassemble any resource as Merlin code. Which you then can modify, assemble, and put back into the resource fork using ADDREZ. When you select a file to open, DISREZ will help you select the resource to disassemble by putting up a list of all the ones in the resource fork. No guessing at resource type numbers! :) The source code generated is even commented for your convienence :) Wow! This sounds cool! Is it shareware? How much is it? In a moment of weakness, I released it as FreeWare. There is no charge for the software. Cool! :) One thing that makes DISREZ really spiffy is the use of modules. Oh? These modules contain code that can disassemble specific resources or control templates. As new resource types of control templates are designed (or changed), new modules can be written to disassemble them. Documentation on how to write the modules, as well as complete source code, is included with DISREZ. Sounds pretty good! Are any modules included? In fact, 25 modules come with the current version. Each is complete with source code, so that the user can modify any of them or write a module of their own. Are ADDREZ and DISREZ used from Merlin just like any other utility, or do you have to do something special to use them? Both can be used from Merlin's disk command line. However, due to a bug in Merlin, only ADDREZ can be used from the Command Box. That's not a big loss, though. I hope to rectify it in a future version. I plan to improve the disassembly routines as time allows me to. I'm planning on bit-value lists, as well as a few other improvements. Some people may wonder why I wrote these utilities, what with Apple's REZ and DEREZ utilities being so powerful. I did it because I think Merlin 16+ is the fastest, most powerful assembler available, and I want to support it and it's users :) >>> ProDOS STORAGE TYPE CONFUSION <<< """"""""""""""""""""""""""""""""""""" I just found part of the GS/OS Ref. is kinda misleading :( Oh? what part? And where is/was the rest of it? Look on page 156, which documents GetFileInfo.. It claims that the storageType is returned as $01-standard file, $05-extended file, or $0D-volume directory or subdirectory file. But, as we all have known for eons, the OS always returns the actual storageType code.. And $0D is not for both volumes and directories.. :( That's really confusing. $0F is volume, isn't it? Isn't 0E subdirectory? I wasn't bothered by the messup in Apple's docs at first, but this is the official documentation, and many people could be very confused. I think ProDOS stores 0E as the storage type of subdirectory entries. $0E is used in subdirectories, but not like you'd expect. In the actual directory information stored on disk, the first file entry is the Directory Header. $0E marks a Subdirectory Header and $0F marks a Volume Directory Header (Beneath Apple ProDOS). >>> ProDOS's MYSTERIOUS "SPARSE" FILE <<< """"""""""""""""""""""""""""""""""""""""" Imagine a 16 megabyte file on a 5.25 inch disk... :) It's possible, if the file is sparse. :) Yeah. CREATE BIGFILE,TBIN... BSAVE BIGFILE,A$2000,L1,B$FFFFFF You should be able to use L0, too, I think. That'd make a BIG file Jerry! :) Sheppy: how could you load 0 bytes? It would make a 16 megabyte file that would take 128 blocks on disk, I think. Maybe 129. Russ: yeah, but most of it would take no space, it would be a "sparse file" (ProDOS won't store all that unused bytes on the disk :) Yeah, it'd be a 16 MB file on disk, but it'd fit on a floppy. B) I should know the exact byte count; my tests at Apple were all on this kind of thing with weird EOFs. :) You can write zero bytes to disk using BSAVE. You can probably BLOAD zero bytes, too, but I've never tried. :) That's one of the best things about the ProDOS file system..of course, there is one small problem...you can make the file smaller, and it might not fit into the disk anymore! :) Very true, Tim. LOL Tim!.. smaller but bigger :) Yeah, but if you BSAVE 0 bytes, does it make the file sparse It ought to. Yeah, probably does a SET_EOF regardless Please.. explain sparsing A sparse file is one in which all the blocks aren't there Does that mean the file is corrupt? It's perfectly safe; it's a special feature of ProDOS that allows files with lots of zeros to take up less disk space. ProDOS' file structure permits a block with no data in it to be represented in such a way that the block doesn't exist on disk; there's just a special value in the file's directory structure that says "this block is full of zeros". Say with your picture file, you saved files one and three.. at $0000 and then at $4000... but you DID NOT save any data into $2000-$3FFF. The part of the file from $2000-$3FFF was never written to so it takes up no room on the disk Hmm.. fascinating It is. It's unique to ProDOS, I think. Well, unique to ProDOS, and DOS 3.3, and DOS 3.2... %) A 16 megabyte file of just zeros would fit on a 5.25" disk, while a 200k file of $01 wouldn't fit :) It's mutli-unique :) It's the most complex part of ProDOS. It's taken a long time to get that part of ProDOS thoroughly debugged. Gotcha! DOS has it? cool, I didn't know that :) I consider DOS 3.3 to be ProDOS 8, v0.3. :) However... writing zeroes to part of a file will NOT make it sparse Nope, it doesn't :( I'm pretty familiar with DOS, and I don't recall it being there. (not under ProDOS 8, anyway... GS/OS's ProDOS FST does sparsify files when you write zeroes into them) Right. Sheppy: Serious? One of the biggest problems when people tried to convert data files from DOS to ProDOS, was that Apple's convert utility wouldn't handle sparse files properly (stopped at the first $00 byte) How about that. After all my work with DOS, including updating it to have file date/time stamping and stuff, I had no idea... :) I must tell you.. the Apple is the funnest computer around to program on!! More likely, I just forgot all about it. It's been years since I've used DOS seriously. I agree, Russell. [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 WINDOWS 1335 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 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 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: Platform Magic Name To Use """""""" """"""""""""""""" GEnieLamp IBM .................. GLIBM GEnieLamp ST ................... GLST GEnieLamp A2Pro ................ GLA2PRO GEnieLamp Macintosh ............ GLMAC GEnieLamp TX2 .................. GLTX2 GEnieLamp A2 ................... GLA2 GEnieLamp Windows .............. GLWIN 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 David Holmes [D.HOLMES14] IBM Staff Writer o Nancy Thomas [N.NOWINSON] IBM Staff Writer o Don Lokke [D.LOKKE] Cartoonist Windows o Tippy Martinez [WIN.LAMP] EDITOR """"""" o Brad Biondo [B.BIONDO] Windows Staff Writer o John Osarczuk [J.OSARCZUK] Windows Staff Writer MACINTOSH o Richard Vega [GELAMP.MAC] EDITOR """"""""" o Tom Trinko [T.TRINKO] Mac Staff Writer o Robert Goff [R.GOFF] Mac Staff Writer o Bill F. Martin III [W.MARTIN3] 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 Terry Quinn [TQUINN] 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 Gina E. Saikin [A2.GENA] A2 Staff Writer o Steve Weyhrich [S.WEYHRICH] A2 Staff Writer A2Pro o Nate 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 do 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: JOINGENIE and hit the [return] key. When you get the prompt asking for the signup code, type DSD524 and hit RETURN. The system will then prompt you for your information. Call (voice) 1-800-638-9636 for more information. ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ [EOF]