|||||| |||||| || || |||||| |||||| || || ||| || || || || ||| |||| |||||| || |||| Your || || || || ||| || || |||||| |||||| || || |||||| |||||| GEnieLamp Computing || |||||| || || |||||| RoundTable || || || ||| ||| || || || |||||| |||||||| |||||| RESOURCE! || || || || || || || ||||| || || || || || ~ WELCOME TO GENIELAMP A2Pro! ~ """"""""""""""""""""""""""" ~ AWESOME OPTIMIZING ~ SPOTLIGHT ON: HangTime ~ ~ MANY BOOKS MADE AVAILABLE AGAIN BY THE BYTE WORKS ~ ~ ORCA/C HELP ~ TAKING THE P OUT OF PIF ~ ~ HOT NEWS, HOT FILES, HOT MESSAGES ~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// GEnieLamp A2Pro ~ A T/TalkNET Publication ~ Vol.5, Issue 30 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Publisher.................................................John F. Peters Editor....................................................Tim Buchheim \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// ~ GEnieLamp IBM ~ GEnieLamp Atari ~ GEnieLamp PowerPC ~ ~ GEnieLamp A2Pro ~ GEnieLamp Macintosh ~ GEnieLamp TX2 ~ ~ GEnieLamp Windows ~ GEnieLamp A2 ~ LiveWire (ASCII) ~ ~ Member Of The Digital Publishing Association ~ GE Mail: GENIELAMP Internet: genielamp@genie.com ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ >>> WHAT'S HAPPENING IN THE A2Pro ROUNDTABLE? <<< """"""""""""""""""""""""""""""""""""""""""""""""" ~ September 1, 1995 ~ FROM MY DESKTOP ......... [FRM] HEY MISTER POSTMAN ...... [HEY] Notes From The Editor. Is That A Letter For Me? A2PRO ROUNDTABLE STAFF .. [DIR] DEVELOPERS CORNER ....... [DEV] Directory of A2Pro Staff. News From Online Developers. LIBRARY BIT BONANZA ..... [LIB] RTC WATCH ............... [RTC] HOT Files You Can Download. Real Time Information. LOG OFF ................. [PUB] 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) _____________| _____|__ _|___ |____ |_____________ |Name of sender CATegory TOPic Msg. Page number| In this example, to respond to Smith's message, log on to page 530 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, 2400 or 9600 baud. 2. Call (with modem) 1-800-638-8369. 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. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" [EOA] [FRM]////////////////////////////// FROM MY DESKTOP / ///////////////////////////////// Notes From My Desktop """"""""""""""""""""" by Tim Buchheim [A2PRO.GELAMP] o TOP OF THE PAGE >>> TOP OF THE PAGE <<< """"""""""""""""""""""""" ~ A Letter From the Editor ~ SCHOOL It is now September. Summer is over, school is about to begin. """""" I'll be a senior in high school this year, which will be nice, but I doubt it will be that much different from all those other years. As usual, they managed to completely mess up my schedule. It took my sister quite a while to sort it out. (I was at Lake Powell on a houseboat, so she registered for me.) The program they use to assign classes is designed to mess up as many schedules as possible. I'm sure of it. I was only able to get five of the six classes I wanted. Why? Well, AP Computer Science and AP Latin IV (yes, I speak Latin.. why are you looking at me that way?) were both scheduled for second period. ONLY second period. :: sigh :: I have no fifth period, and will take AP Computer Science as "Independant study" which means I'll sit in the back of a classroom full of BASIC students and write my Pascal programs. Not too bad, actually.. I should be able to finish a semester's worth of work in two weeks or so. Then maybe I will be able to use class time for REAL programming. :) Or, maybe I'll just go home (since I won't officially have a 5th period:) or go places with other friends who don't have a fifth period. (This year the computer decided to schedule almost no classes that period. Well, there is a fifth period calculus class. But as far as I can tell, anyone who is in my third period calculus class has no fifth period.:) In any case, school seems to be a waste of time. After all, I only need twenty more credits to graduate. That's two semesters of English, a semester of government, and a semester of economics. But, of course, they won't let me just take those four classes and be done with it. I have to take five classes in each of the next two semesters. Why? Well, to keep me out of trouble, of course. (but then they make it impossible for me to take six classes. Why is that?) Oh well. Maybe when I'm in college things will make more sense. I'll be waiting for reports from Sloanie (who is now a freshman at Harvey Mudd College in Claremont, CA, which, by some odd coincidence, is the same place I want to go. :) This talk about school is depressing me. I'd better stop before it gets to you, too :) So enjoy the issue!! -- Timothy Carl Buchheim Editor, GEnieLamp A2Pro [*][*][*] Do you have something to say about GEnieLamp A2Pro? Please post any questions or comments you may have in Category 1, Topic 15 in A2Pro's BB (m530;1). Or, feel free to talk to me (A2PRO.GELAMP) anytime you see me in a Real Time Conference. Readers out there on the Internet: feel free to email me at a2pro.gelamp@genie.com When writing, please tell me where you got your copy of GEnieLamp, if it wasn't on GEnie. I'm always interested to see how many places GEnieLamp ends up :) By the way, the current issue and most back issues are available online in many places. GEnie users should check Library #2 in the DigiPub libraries (DIGIPUB, page 1395;3) Those of you not on GEnie should use gopher software to connect to gopher.genie.com for issues; all recent issues and most older ones are there. [*][*][*] /////////////////////////////////////////// GEnie_QWIK_QUOTE //// / Actually, I'm stunned I thought of it. It just popped into my / / head when I read the previous posts. / //////////////////////////////////////////////// RICHARD.B //// [EOA] [DIR]////////////////////////////// A2PRO ROUNDTABLE STAFF / ///////////////////////////////// By Tim Buchheim [A2PRO.GELAMP] o A2Pro STAFF LIST o SPOTLIGHT ON: HangTime >>> A2Pro STAFF LIST <<< """""""""""""""""""""""" ______________________________________________ APPLE II PROGRAMMERS & DEVELOPERS ROUNDTABLE _____ ______ ______________________________________________ /_____|/______\ /__/|__| ___|__| Head Sysop: Hangtime (HANGTIME) /__/_|__| /_____/ Your Sysops: Greg Da Costa (A2PRO.GREG) /________|/__/ __ __ __ Todd P. Whitesel (A2PRO.TODDPW) /__/ |__|__/______ /_//_// / Nathaniel Sloan (A2PRO.HELP) /__/ |__|________// / \/_/ Tim Buchheim (A2PRO.GELAMP) ASSISTANTS: Although they don't show up on A2Pro's banner when you come """"""""""" in, they do just as much around here as everyone else. (maybe more :) They are (in no particular order) Brian Wells (B.WELLS5), Russell Nielson (R.NIELSON1), and Nate Trost (N.TROST). Working on "Special Projects" are Tim "Joat" Tobin (A2.TIM, on loan from A2) and Richard Bennett (RICHARD.B). >>> SPOTLIGHT ON: HangTime <<< """""""""""""""""""""""""""""" DEJA VU? Starting with this issue, GEnieLamp A2Pro is going to take a """""""" closer look at the people who bring you A2Pro. I was recently looking at some old issues of GEnieLamp and I noticed that back when Jim Couch was editor (even before Nate Trost was editor!) he ran a series of short biographies about the A2Pro staff members. Well, only a few of those staff members are still with A2Pro and many others have joined us. Therefore it's about time for GEnieLamp to do this again. We begin this month with HangTime, head sysop of A2Pro. I'll let him tell you about himself in his own words: My first experiences with a computer were back when I was a '''''''''' "wee-one", in the days before the Apple II, using an IMSAI 8080. Back then it seemed like a pretty incredible machine (and actually, it was)! I started learning assembly (which sure beat the snot out of entering code using the binary switches on the front panel), but then discovered that scourge of programming languages, BASIC. Cranking out programs in BASIC was so much quicker that, sadly, I lost interest in asm. During this time I also had the opportunity to play with a couple of VAX machines, and learn Pascal. Too late, the viral infection of BASIC had grown too strong and I found Pascal was just too darned structured for me to really keep on with it. Of course by the time I was learning Pascal I had an Apple ][+, so this too stole my interest from the VAX. I found the ][+ to be a very powerful machine, and used it for all kinds of things, from fun little animations using shape tables to a full featured Data Base Manager used to keep track of a mailing list for the band I was playing in at the time (I even used it to put together our ad posters and mailings). I continued coding in Applesoft on that machine for quite a few years, and infact skipped the //e generation completely, leaving me pretty clueless about ProDOS when I got my GS shortly after its introduction. Within a very short time of getting the GS I bought a modem and joined GEnie. Having had lots of experience with sound I immediately began U/Ling digital samples as well as D/Ling others', and frequently editing and then re-U/Ling these (giving appropriate credit, of course). All this U/Ling didn't go unnoticed and when then Head Librarian Dean Esmay approached me for a position on the Library staff of A2, I naturally jumped at the chance. After D/Ling the entire sound library, editing and updating where appropriate, I moved on to other duties including working in the bulletin board, and hosting RTCs. This all kept me out of trouble for a couple of years, but of course I needed to move on to bigger and better challenges, so when I heard that Resource Central was about to launch a new publication for and about HCGS, I applied for the job (I had purchased HCGS the day it was released, and had my first stack [hack that it was] completed and U/Led within 12 hours of cracking the manuals). Script-Central went on to become the Premiere publication for HyperCard, and was getting rave reviews from everyone that saw it, it even received a 5 star rating in A+ magazine (SCript was the only one of Resource Centrals publications to get a 5 star rating too!). If I may put in one "plug", if you haven't seen Script-Central, there's a demo available in the A2 library that'll give you a _taste_ of what Script-Central is. Sadly, as most of you know, Resource Central was forced to cancel all of its publications due to declining readership, however not wanting to see all my work disappear, I requested that all the rights revert back to me and Tom Weishaar was kind enough to oblige. After a couple of weeks of hashing out details with Joe Kohn, Script-Central back issues are once again available through Shareware Solutions II. And while not a Shareware product, the entire back issue catalog is available for $4.50 per issue (and each issue is TWO disks [and once the compression technology was avialable, these two disks comprised around two and a half megabytes of stuph!]) if you purchase the entire catalog ... not bad, eh? Hopefully there will be enough interest to warrant at least one NEW issue of SCript ... we'll see B-)> Meanwhile, these days, I'm the manager of the A2Pro RT. So why do I deserve to be running this RT? I dunno, I love my Apple IIs. 'Nuph said? [EOA] [HEY]////////////////////////////// HEY MISTER POSTMAN / ///////////////////////////////// Is That A Letter For Me? """""""""""""""""""""""" By Tim Buchheim [A2PRO.GELAMP] o BULLETIN BOARD HOT SPOTS o WHAT'S NEW o PROGRAMMER'S TIPS o MESSAGE SPOTLIGHT >>> BULLETIN BOARD HOT SPOTS <<< """""""""""""""""""""""""""""""" [*] CAT 1, TOP 21, MSG {153}....Don't know where to post? Post here! [*] CAT 2, TOP 5, MSG {51}.....Using the Merlin 8 assembler [*] CAT 2, TOP 6, MSG {96}.....Assembly Language [*] CAT 3, TOP 19, MSG {106}....General Assembly Questions [*] CAT 15, TOP 14, MSG {188}....Window Manager [*] CAT 20, TOP 15, MSG {11}.....Writing Permanent Inits (PIFs) >>> WHAT'S NEW <<< """""""""""""""""" GSLIB UPDATE Just to update folks on the status of GSLib: """""""""""" Those of you who were at KFest will recall that my PowerBook Duo broke down the day of my GSLib presentation, preventing me from completing the sample code. I promised I'd have it ready as soon as the Duo was fixed. Tony Diaz has been working on it since then, but he finally gave up in disgust a few days ago and shipped it back to Apple. Them's strange hardware... Anyway, I haven't been able to work on any GSLib stuff since mid-KFest, and won't be able to until my Duo gets back from Apple. Sorry for the inconvenience. -G.T. Barnabas (BARNABAS, CAT2, TOP5, MSG:58/M530) >>> PROGRAMMERS' TIPS <<< """"""""""""""""""""""""" AWESOME OPTIMIZING Stupid / Slick Assembly Tricks $65 (%01101001 for you """""""""""""""""" bitheads ;) It is assumed that these sample fragments are entered with the processor in native mode, with 16 bit registers. It is also assumed, except where noted, that the general operating enviroment is already set up (stack location, direct page, data bank, etc) The examples here all use Merlin-16+ syntax, though similar syntax should work with other assemblers. Problem: How to get a known-at-asssembly-time 8 bit value onto the stack while in native mode in the most efficient manner. (the meaning of efficient, in this context, is left to the reader to determine, as it doesn't always mean the same thing in all cases) For sake of example, the value $A5 is used here, but the methods shown will of course work for any eight bit value. Solutions: The clasic way of doing this is presented below: sep #$20 ;switch to an 8 bit acc 3 cycles lda #$A5 ;load acc with value 2 cycles pha ;stack it 3 cycles rep #$20 ;switch back to 16 bit acc 3 cycles This produces seven bytes of object, and consumes eleven processor cycles. Not too shabby, and it is very readable. An alternate method would be: pea $A500 ;desired value in hi byte 5 cycles tsc ;stack ptr -> acc 2 cycles inc A ;bump pointer by 1 2 cycles tcs ;set fixed stack pointer 2 cycles While this too requires eleven cycles, it only produces six bytes of object... hey, don't laugh, those 1 byte savings here and there add up in a hurry (especially if this is coded into an often used macro!) If the object size is more critical than the cycle count then the following method is even better... it only needs five bytes (but requires thirteen CPU cycles to execute... ewww...) pea #$A500 ;desired value in hi byte 5 cycles php ;push additional 8 bits 3 cycles pla ;pop off word of trash 5 cycles One final example to make you go "Hmmmmmmmmm"... If you need to push an 8 bit value onto the stack =and= you also need to set your data bank to the same as your code bank, and you need it to work right regardless of register sizes, then this might fit your needs. It only requires 9 cycles to execute, and only takes up four bytes of object! Now THAT's tight coding! (tighter than the reason ducks float ;) Label pea ^Label ;push the code bank 5 cycles ds -1 ;back up object pointer assy pseudo op db $A5 ;8 bit value desired assy pseudo op plb ;set the data bank 4 cycles (think carefully and use at your own risk... ;) -Harold (HAROLD.H, CAT3, TOP19, MSG:106/M530) >>>>> > Stupid / Slick Assembly Tricks $65 (%01101001 for you bitheads ;) """"" Yikes! My $10 Radio Shack dec/hex/bin calculator has finally given up the ghost... Trying to push/pull one byte on the stack has been awkward with the 65816. Maybe the mvn/mvp opcodes could have been deleted for those. It is my understanding that tight code can outdo the built-in instructions, which seems strange. Was there public discussion about the 65816 instruction set? - Mr. Bithead - Who's trying to program in C. (J.GRAY38, CAT3, TOP19, MSG:107/M530) >>>>> I'd rather have MVP/MVN than specific one-byte stack instructions. """"" Of course, I'd also rather have MVP/MVN not waste so darn many cycles on "internal operations", but as I understand it they were a last minute addition as things were being frozen anyway, so "it" happens... Todd Whitesel (A2PRO.TODDPW, CAT3, TOP19, MSG:108/M530) >>>>> Harold, """"" > PEA label|-16.or.$A500 > PLB Hey, neat. Of course, assuming full native, you could also do: PEA $A500 PLP (This approach is still 4 bytes/9 cycles, but it saves object space by not needing to be relocated. Still, your method trades the extra relocation entry for setting the data bank register, so in some situations it might be nicer). Hmm. Then again, my version gives you a free SEP/REP pair, come to think of it, by storing the low byte of the PEA into the p-register for you. This might actually be nicer in some situations). ...Sloanie (JNSLOAN, CAT3, TOP19, MSG:110/M530) >>>>> Which reminds me... it's time for another one of my "I have no """"" reference materials and basically don't know anything because I learned IIgs programming by reading other people's source code" -type of questions... :) What is the layout of the P-register? I know which bits are there, but I don't know what order they come in... And, for that matter, what exactly do SEP and REP -do-? -Bret >>> so sez CoPilot 2.55 (B.VICTOR1, CAT3, TOP19, MSG:111/M530) <<<<< Sloanie, """"" >> PEA label|-16.or.$A500 >> PLB You might want to look at that code a little closer... and think about how code is loaded on the IIgs, under GS/OS... There's a very good reason I included that little "use at your own risk" comment ;-) [when you spot it don't feel too bad, I didn't realise it myself till I tried the code... when you spot it I'll let you bang your head in the wall right next to the mark my head left on it :)] If nobody spots and notes it here, then I'll explain it :) >> PEA $A500 >> PLP This is SLICK! :) Infact I may even wind up using it myself... beleive it or not I never really though of PLP as being a combined SEP/REP, SEI/CLI, SED/CLD, SEC/CLC, SEV/CLV (hey, there's one of the missing opcodes :-) etc. command, even though I'm very particular about things when dealing with 'rupts (I always use a PHP before killing 'rupts, and a PLP when finished... I refuse to use CLI under GS/OS... if somebody ahead of me killed 'rupts, they probably had a very good reason for doing so, and I'd rather be safe than sorry) -Harold (HAROLD.H, CAT3, TOP19, MSG:112/M530) >>>>> That's pretty cool Sloanie. Personally I've used: """"" > PEA $A500 > PHB > PLA ...but these days I'm more likely to go traditional: SEP $20 LDA #$A5 PHA REP $20 I rarely comment code (can you believe that Harold?! Wow!) and it saves me have THINK too hard when I go back and read it. 2.8MHz may be slow, but rarely do you need to save so few cycles. And remember, we usually have up to 4MB of RAM available, AND very little time to do fancy coding, when people are hounding you to get products working and out the door. Regards, Richard (RICHARD.B, CAT3, TOP19, MSG:113/M530) >>>>> Harold, """"" I'm afraid I can't bang my head against the wall quite yet, as whatever problem with the PEA label|-16.eor.$a500 is there, it's not one I can see. :) (JNSLOAN, CAT3, TOP19, MSG:114/M530) <<<<< Bret, """"" You =NEED= IIgs docs if you're going to program this beast... trust me, I tried like heck to avoid this, and couldn't. >> What is the layout of the P-register? I know which bits are there, but I >> don't know what order they come in... E - Emulation bit (1 = 65C02, 0 = 65C816) NVMXDIZC ||______M is acc width (1 = 8 bit) X is X,Y reg width, see above SEP - SEt P register bits REP - ResEt P register bits Both are commonly used for changing register sizes on the fly, although they can be used for many other purposes when appropriate (such as combining a SEC and SEI and setting some/all registers to 8 bit width all with one 2 byte instruction (advanced slick programming tricks :) -Harold (RICHARD.B, CAT3, TOP19, MSG:113/M530) <<<<< Sloanie, et-al, """"" >> I'm afraid I can't bang my head against the wall quite yet, as whatever >> problem with the PEA label|-16.eor.$a500 is there, it's not one I can >> see. :) No exclusivity here, please, that should read "PEA label|-16.or.$a500" :) That I was able to stump Paul P the other night in an RTC with this problem, and that you didn't spot the problem makes me feel a little better... apparently this really is an obscure thing, and not a case of my brain being fueled by the gasious byproduct of fermented fava beans ;) Lets look at this very carefully here. [I know that you don't need the level of detail I go into here, but others might, and as this whole thing got started by a beginers question, detailed explaination is called for] PEA is considered to be a word operative, as regardless of register size settings it always pushes a word (it's operand) onto the stack. The expression "label|-16" produces one null byte and one byte of meaningfull object (the bank byte). As the bank number of a label is being worked with, it will need to be patched, by the system loader's relocator (or rCode resource converter) to reflect the actual bank that the code gets loaded into by GS/OS. The expression "$A500" produces one byte of meaningfull object ($A5) and one null byte. This is a constant, and thus should never be altered in any manner by the system loader's relocator or the rCode resource converter. By combining these two values together (using .OR. or adding them, the results being the same), such that the resulting high byte is the constant $A5 and the low byte is the bank byte refering to "label" one winds up with a word that is a combination of static and dynamic values. By hand reducing the expression, one gets the following: (assuming, for sake of example, that "label|-16" equates to $0077) PEA label|-16.or.$a500 - original source PEA #$0077.or.$A500 - partially reduced expression PEA $A577 - fully reduced expression ready for assembly ^ ^______________ - Dynamic, changes with bank loaded into |________________ - Static, should never be changed by anything One =could= tweak / hand polish the relevant cReloc or cSuper record associated with such a code fragment so that only one byte of the operand would be affected by the relocator, but lets face it, that kind of thing is beyond probably 99% of all IIgs programmers (Mike W. being a notable exception :). Arguably this could be considered a flaw in the typical implimentation of IIgs linkers and assemblers, or in the specifications of OMF itself, but lets face it, how many years has the GS been around, and how often has anyone tried using PEA to handle both a static and a dynamic byte at the same time? Note however that PEA label|-16.or.$A500 would produce perfectly acceptable absolute code... eg: if a ProDOS-8 application loaded this object and =moved= it to the address it was originally assembled to run at, it would function exactly as expected and designed.. The problems only shows up in OMF packaged relocatable code that is relocated by one of the system code relocators (I suspect that the relocator used by _InitialLoad / 2 and by the rCode resource converter is one and the same, but I don't know this for certain, Apple never saw fit to publicly document this) Your example of pushing two bytes of constant data (using PEA) and then popping the top byte into the status register (PLP) would of course not be affected by this, as both bytes of the word being pushed are constants. Oh, the mark my head left on the wall is right over ---------> here :-) -Harold (HAROLD.H, CAT3, TOP19, MSG:121/M530) >>>>> I wasn't aware that the OMF 2.0 format wasn't robust enough to """"" handle combo static/dynamic words. If this is the case, then, obviously, it ain't gonna fly. :-) Jay, (re: futzing the interrupt flag) Well, if it's your code, you should know how the interrupt is set anyway. If you simply spush $A504 instead of $A500, the pull the processor, you end up with interrupts still disabled. :) (JNSLOAN, CAT3, TOP19, MSG:123/M530) >>>>> >I wasn't aware that the OMF 2.0 format wasn't robust enough to """"" >handle combo static/dynamic words. OMF deals in bytes, not words; it should have no problem implementing this, as long as the assembler is able to break up the pea operand. >Well, if it's your code, you should know how the interrupt is set anyway. Only if I'm an application, and even then I'm extremely reluctant to ever cli. I always php, sei, plp. - Jay (JAY.KRELL, CAT3, TOP19, MSG:125/M530) <<<<< Sloanie, Jay, """"" jns>> I wasn't aware that the OMF 2.0 format wasn't robust enough to handle jns>> combo static/dynamic words. If this is the case, then, obviously, it jns>> ain't gonna fly. :-) jk>> OMF deals in bytes, not words; it should have no problem implementing jk>> this, as long as the assembler is able to break up the pea operand. Jay's comments got me to dig out, and re-read yet again the OMF format info (in the GS/OS Ref, pgs 454, 455, the RELOC example in particular) While this example deals with an LDA instruction, it is quite applicable to a PEA as well. It does indeed appear that the OMF format =is= robust enough to handle mixed constant / dynamic data for a PEA instruction, as it does operate at a byte (not word) level... oops, my error. (I was basing my comment about OMF on the "note" associated with the RELOC description, which was the wrong thing to do... read too much into it.) Even more embaressing... Now I can't get Merlin-16+ to generate incorrect OMF! When I try using an expression (^Label!Value) I get an error msg (as I did the other night) but when using DS -1 (to back up the obj pointer by one byte) the OMF generated has a correct RELOC record (patches 1 byte) and when that's loaded by _InitialLoad the results in memory are correct. I don't know what I did the other day to get it to generate improper OMF... Apparently I've been hoisted on my own petard by typo(s)... AURGH!!!!! :( (banging head on wall again, different place though...) Could one of you code the example in ORCA/M and see if it produces a correct RELOC / SUPER? (though Mike probably got it right... sigh) -Harold crawling back into the crypt... :/ (HAROLD.H, CAT3, TOP19, MSG:126/M530) >>>>> > Stupid / Slick Assembly Tricks $65 (%01101001 for you bitheads ;) """"" Let's see... $65 = %01100101 : %01101001 = $69 ...Chris (K.FLYNN, CAT3, TOP19, MSG:132/M530) CONVERTING TO MERLIN Hey guys...gotta a quick question...I'm trying to """""""""""""""""""" convert some source over to Merlin 16..(although 8 bit mode) Its one of the example programs in the book _Beneath Apple Prodos_... Its the Zap program. The assembler is the Apple Prodos Assembler One: What does the pseudo-op MSB ON do ?!? Two: More pseudo-ops..I think DFB $03 DW $1000 I assume DFB is Define Byte? and what is DW...and would merlin's DFB and DDB do the job ?? any help would be appreciated /\/\ike (M.HRUSOVSKY, CAT2, TOP6, MSG:96/M530) >>>>> MSG ON causes bit7 to be set for ASCII strings. (Most Significant """"" Bit) DFB is DeFine Byte and is the same in Merlin. DW if Define Word and is the same in Merlin (assuming you're using Merlin 16+, if not use either DDB or preferably DA). Regards, Richard (RICHARD.B, CAT2, TOP6, MSG:97/M530) >>>>> > MSG ON causes bit7 to be set for ASCII strings. (Most Significant """"" > Bit) This should be MSB, not MSG (I think Richard has carry out Chinese food on his mind ;) In Merlin simply use the " (double quote) around your string. (the ' (single quote) will produce MSB Off ascii instead) -Harold (HAROLD.H, CAT2, TOP6, MSG:98/M530) >>>>> > In Merlin simply use the " (double quote) around your string. """"" > (the ' (single quote) will produce MSB Off ascii instead) Yep, that's one of my pet peeves about ORCA/M. I wish, I wish, I wish it would allow both kinds of quotes to signify MSB on/off. :) (A2.TONY, CAT2, TOP6, MSG:99/M530) TIF TROUBLES if a temp INIT file opens a couple other files, and then """""""""""" leaves them open, will the system take care of closing the files before the START program is run, anyone know? 'Cause for some reason... In this TIF I'm writing, everything's cool if I leave the files open (and by the time it gets to Finder, they're no longer open), but if I have the INIT close them itself, sometimes GS/OS will yell at me later down the road with an error $0043 (file reference num not open)... weird. (B.VICTOR1, CAT1, TOP21, MSG:153/M530) >>>>> Temporary inits shouldn't be leaving files open, but I don't know """"" what the system does if they do. You shouldn't be getting invalid ref num responses later, unless, of course, you're somehow accessing these files later. As you're a TIF, this shouldn't be possible. Hmm. (A2PRO.HELP, CAT1, TOP21, MSG:155/M530) <<<<< Yeah, I can't explain it... I admit I'm a somewhat sloppy """"" programmer :) but I traced thru my code and I'm sure that I'm ONLY closing the files that -I- opened... but what'll happen is that everything the TIF does will work out fine, and the system will load, and it will be right at the point where it's about to launch Finder, and it pops up the ol' error box with error $0043... Which suggests that I'm closing one of the system's files, although I can't imagine how.... In a fit of desperation I simply replaced all the _CloseGS with _FlushGS and the problem has miraculously disappeared... and SOMEONE's closing those files, 'cause they're no longer open when I get to Finder.... hmm... :) -Bret (B.VICTOR1, CAT1, TOP21, MSG:157/M530) >>>>> Hmm. I have no idea what to tell you. (?). Um, make sure you're """"" not doing a close on ref num 0 (perhaps if there's an error, a zero is being stored as a ref num, then closed). That closes -everything-. ...Sloanie (A2PRO.HELP, CAT1, TOP21, MSG:158/M530) >>>>> Check your data bank register. Perhaps you're storing your ref num """"" into a random bank, meaning your real close defaults to 0 (as Sloanie mentioned). Just a thought. Regards, Richard (RICHARD.B, CAT1, TOP21, MSG:159/M530) <<<<< Hmm, yeah... I'll check if there is an error that might be """"" returning a zero... but one thing I did was in my parm table, instead of making space for the refnum result (in the _OpenGS table) with a "ds 2", I actually used a "da $EEEE", figuring that the $EEEE would be overwritten with the real refnum if all goes well, and if all didn't go well, it would try to work on / close file number $EEEE, which couldn't HARM anything... but that didn't stop the problem one bit.... ::sigh:: :( Right now, I'm just flushing the files and leaving 'em open for the system to close, and all seems to be going well, so... "?" :) -Bret (B.VICTOR1, CAT1, TOP21, MSG:160/M530) THAT ANNOYING OPTION KEY Does anyone know what event code(s), if any, """""""""""""""""""""""" TaskMaster returns when the apple and option keys are held down to make a menu selection (i.e. apple-option-W)? I'm trying to implement a "close all" function, like the Finder has. Holding down option appears to disable menu hotkeys (or at least it makes TaskMaster not hilight the menu title and/or possibly return something different from wInMenuBar). I'm using regular resource-template-based menu items, and TaskMaster with all of the TBR3-defined wmTaskMask flag bits set. "Menu help" is turned OFF, if that makes any difference. (oh...the "Close" item _is_ enabled, BTW ) Any suggestions would be appreciated. Thanks. :) --Greg Betzel (SNAKEBYTE, CAT15, TOP14, MSG:188/M530) Greg, I'd guess that it returns "W" with the option and open-apple (ok, well, command) modifiers set. Actually, no, I take it back. Figure out what ASCII codes Option-W and Option-w get. You're probably getting -those- keys with the open-apple modifier set. Anyway, my best advice is to try it and see what happens. :) ...Sloanie (A2PRO.HELP, CAT15, TOP14, MSG:189/M530) >>>>> two things can happen: """"" 1) You have the event manager's key translation set to "none" GetNextEvent will return a keyDown event with "w" and the option and command keys set in the eventModifiers field. TaskMaster will call MenuKey with "w".. then will return to you with wInMenu (with command and option bits set in eventModifiers) 2) You have the event manager's key translation set to something else, such as "standard" (which is what 90% of GS users use) GetNextEvent will return a keyDown event with whatever key code it uses for option-w (depends on what key translation you're using) the command key bit (but not the option-key bit, I think) will be set in eventModifiers TaskMaster will call MenuKey with the code for option-w (again, it depends on what your key translation is set to) You don't have a menu defined as using this key, so MenuKey doesn't do anything. TaskMaster will return a keyDown event to you, with the option-w character and the eventModifiers field set to have the command key (but not option, I think) down (A2PRO.GELAMP, CAT15, TOP14, MSG:190/M530) <<<<< Sloanie, Tim- """"" ACK! I completely overlooked the possibility that the friendly EventMGR key translation table might be getting involved. _Thanks_ for the help. :) --Greg Betzel (SNAKEBYTE, CAT15, TOP14, MSG:191/M530) TAKING THE P OUT OF PIF I'm trying to write myself a PIF that is only """"""""""""""""""""""" sorta-permanent -- it stays in memory for a while, doing its thing, and then when it's had enough, I want it to be unloaded from memory. My question is, how do I get it to unload itself when the time comes? Also, on a completely different note (but what the hell, the same post) I have this handle that I can't dispose of -- I call DisposeHandle, DisposeAll, MMShutDown, everything, and it still sticks around. (Yeah, I tried unlocking it). Weird thing is, I copied some DisposeHandle code into bank zero and ran it from there, and it worked! But from any other bank, no go... maybe I'm hallucinating from the heat, has anyone heard of this? -Bret (B.VICTOR1, CAT20, TOP15, MSG:11/M530) <<<<< 'Tis me again... I found a way to kill my PIF -- anyone wanna tell """"" me how illegal this is? RightHere ~FindHandle #RightHere _DisposeHandle Hey, it works. As for the other thing, it seems that DisposeHandle has started working after all, but DisposeAll still does nothing. Oh well, at least I've got everything goin' okay... -Bret (B.VICTOR1, CAT20, TOP15, MSG:12/M530) >>>>> Bret, """"" >> I found a way to kill my PIF -- anyone wanna tell me how illegal this >> is? >> RightHere ~FindHandle #RightHere >> _DisposeHandle Not legal or safe at all. Ever. After the _DisposeHandle returns you still have code executing, but in "free" memory... What would happen if something grabbed memory right after the call returned and before you hit your exit point? KRASH! :( -Harold (HAROLD.H, CAT20, TOP15, MSG:13/M530) >>>>> Bret, that is seriously dangerous. """"" There is NO safe way for a PIF to dispose of itself. HOWEVER, here are two ways you can free MOST of its memory: 1. Have the data fork of your PIF just contain code to install the code resource converter and run a code resource that contains your real code. When the code resource is done doing its thing, it can call a routine located in the data fork that disposes of the resource, thereby freeing all but a small amount of memory. 2. Have your PIF overwrite the first few bytes of itself with code to shrink its own handle down to be just big enough to contain the code that shrinks the handle down. The code would be something like: NukeMe pea $0000 pea NukeEnd-NukeMe ;Size of block pea NukeMe|-16 per NukeMe _FindHandle ;Get handle of myself _SetHandleSize ;Fix our size to be JUST right rtl ;Exit the PIF for good NukeEnd anop When you want to "remove" your PIF from memory, just copy the above code over the top of the first few bytes of your PIF and then call it at the new address. Don't forget to fix the stack, remove HeartBeat and Run Queue tasks, etc. first. :) Sheppy [Team PPCPro] (SHEPPY, CAT20, TOP15, MSG:14/M530) >>>>> How about leaving the GS/OS return address on the stack and doing a """"" JML to the tool dispatcher for _DisposeHandle? As long as all your regs are set up OK, it should dispose of your code and return immediately to the System Loader. Regards, Richard (RICHARD.B, CAT20, TOP15, MSG:16/M530) <<<<< Richard, """"" Hey, yeah, I like that! If nobody says that THAT'S illegal too, that's what I'll do. Thank ya! -Bret (B.VICTOR1, CAT20, TOP15, MSG:17/M530) >>>>> Actually, I'm stunned I thought of it. It just popped into my head """"" when I read the previous posts. Regards, Richard (RICHARD.B, CAT20, TOP15, MSG:19/M530) >>>>> Also, if an permanent init decides at boot time it doesn't want to """"" stick around, it can set some flag above the return address. Pifs -might- also get their own stack, but..hm..I think they do, but only at boot time; very unsure. - Jay (JAY.KRELL, CAT20, TOP15, MSG:21/M530) >>>>> re: PIF's have an unload flag space on their stack """"" BEFORE you depend on this being available, be certain you READ and UNDERSTAND the file type notes related to PIFs. (and don't assume that nobody will be loading you (booting) over an AppleTalk system. That is legal, and while it's slow there are quite a few people who do this for various reasons) In a nutshell, the "Unload Me" flag space may not always be available, and depending on it being there at all times is a BIG no-no, which if ignored can and will bring a users system to a screaching BRK during the boot process... ick. The FTN reveals all :) -Harold (HAROLD.H, CAT20, TOP15, MSG:22/M530) >>>>> Yes, PIFs get a 4k DP/stack area by default (which can be changed """"" by linking in a stack segment). Sheppy [Team PPCPro] (SHEPPY, CAT20, TOP15, MSG:23/M530) >>>>> Harold, I thought they fixed the AppleTalk unload-me flag problem """"" in 6.0 or 6.0.1 ... Of course, if you want to be 5.0 compatible, you still have to be careful. Todd Whitesel (A2PRO.TODDPW, CAT20, TOP15, MSG:24/M530) <<<<< Here's what the FTN has to say about it: """"" | WARNING: This WORD space is not available to permanent | initialization files that execute from a user's folder on | an AppleShare file server at boot time unless you're | using System Software 6.0 or later. So you're both right. :) -Bret >>> so sez CoPilot 2.55 (B.VICTOR1, CAT20, TOP15, MSG:26/M530) >>>>> Bret, """"" Ah ha! So you DO have some docs :) And yes, that is =exactly= the warning I was refering to, thanks for posting it :) -Harold (HAROLD.H, CAT20, TOP15, MSG:27/M530) >>>>> As I recall (but didn't feel like checking), the file type note """"" doesn't say you can 'easily' check for the result space. It leaves you thinking you have to look for Appletalk/share/? and such and figure if you were run from it (LGetPathname2, GetFileInfo?), but Matt's IR 2.x source shows an easier method, along the lines of, if the space above the return address is zero, it's result space. (JAY.KRELL, CAT20, TOP15, MSG:28/M530) >>>>> Jay, """"" re: PIF "Unload Me" flag space on entry stack >>...if the space above the return address is zero, it's result space. Bingo. This is the reccomended procedure, and it hasn't failed me so far :) The only thing is... what if your code determines that the result space isn't there, and your code has also determined that it doesn't want to stick around... Guess that's when Richard's idea of JML'ing to the tool dispatcher (for the _DisposeHandle) call comes in handy :) -Harold (HAROLD.H, CAT20, TOP15, MSG:29/M530) >>>>> You could always make yourself a TIF and if you want to stay """"" resident just allocate some permanent memory and hop right in! Talking about turning a problem on it's head... (RICHARD.B, CAT20, TOP15, MSG:30/M530) <<<<< Harold, """"" > Ah ha! So you DO have some docs :) Okay, in a fit of desperation the other day I d/l'd the Tech notes and FTNs... (And they actually DID help... amazing!) Forgive me? :) -Bret >>> so sez CoPilot 2.55 (B.VICTOR1, CAT20, TOP15, MSG:31/M530) <<<<< Richard, """"" > You could always make yourself a TIF and if you want to stay resident > just allocate some permanent memory and hop right in! Ooh, how, how, please tell me!!! I could not for the LIFE of me get the handles my TIF grabbed to stay in memory! (Then again, I don't really know what I'm doing, so... :) -Bret >>> so sez CoPilot 2.55 (B.VICTOR1, CAT20, TOP15, MSG:32/M530) >>>>> Bret, """"" The safest way is to use _GetNewID (I think that's the name, I haven't used it in years and my manuals aren't here right now) from the Miscellaneous Toolset to allocate a new ID, which the loader will not dispose of. The you can either _NewHandle with it, or _SetUserID on a current handle, your choice. _NewHandle is the easiest and safest. Regards, Richard (I am assuming you have AT LEAST TBR1&2. If not, you MUST get them!) (RICHARD.B, CAT20, TOP15, MSG:33/M530) >>>>> Richard, """"" yes, it's _GetNewID. But there's no such thing as _SetUserID. It's _SetHandleID :) (A2PRO.GELAMP, CAT20, TOP15, MSG:34/M530) >>> MESSAGE SPOTLIGHT <<< """"""""""""""""""""""""" FUTURE MERLIN ENHANCEMENT? I'm just tossing around some ideas here. How """""""""""""""""""""""""" about these for possible projects. Merlin assembler memory resident that can assemble code via IPC requests. Merlin able to edit/assemble files larger than 64K. Merlin able to read standard OMF (ORCA/APW) libraries. Merlin able to INPUT OBJ files during a link (it can already OUTPUT OBJ files during assembly). Merlin as an MPW cross assembler. Do any of these take peoples' fancies? BTW, FWIW, I've listed them in order of difficulty. Regards, Richard (RICHARD.B, CAT2, TOP5, MSG:51/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 urges you to give the bulletin board area a try. There are literally thousands of messages posted from people like you from around the world. [*][*][*] [EOA] [DEV]////////////////////////////// DEVELOPER'S CORNER / ///////////////////////////////// News From The A2Pro Online Developers """"""""""""""""""""""""""""""""""""" By Tim Buchheim [A2PRO.GELAMP] o MANY BOOKS MADE AVAILABLE AGAIN BY THE BYTE WORKS! o BYTE WORKS CLEARANCE SALE o DEBUGGER DEFICIENCY o ORCA/C HELP >>> 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. >>> MANY BOOKS MADE AVAILABLE AGAIN BY THE BYTE WORKS! <<< """""""""""""""""""""""""""""""""""""""""""""""""""""""""""" HyperCard Books I explored some of the contractual issues behind APDA """"""""""""""" with Uncle Tom [he means Uncle DOS, or Tom Weishaar -ed.] at KansasFest this year, and to make a long story short, I can reprint the HyperCard manuals. Now that I know I _can_, I need to decide if I _should_... and that's where you folks come in! If they are reprinted, the books would be laserprinted on 3 hole paper for notebooks. You would need to supply your own notebook, although we can see about getting some for non-US customers, who may have trouble finding them the correct size. There are 3 volumes, and of course the disks. Here's the prices we will need to charge: APDA 48 Getting Started with HyperCard IIGS 156 pages $15 APDA 49 HyperCard IIGS Reference 389 pages $25 APDA 50 HyperTalk Beginner's Guide IIGS 171 pages $15 APDA 51 HyperCard IIGS Disks 6 disks $20 APDA 52 APDA 48-51 in a package $60 It costs some money to set up the orignal masters, too, so what I need to know is whether you folks want these books, and want them bad enough to order them. Here's how I will tell: You can order these books now by credit card. You won't be charged right away. If we get 10 orders, we'll put HyperCard back in print. At that time, you'll be charged, and we'll start the reproduction process. About 2 weeks later, We'll ship your copies of HyperCard. If we don't get 10 orders, we won't put it back in print. Once it's back in print, it stays in print. The cost for us is getting things set up and producing originals for laserprinting; once that's done we can print manuals in very small numbers. If you would like to place an order for HyperCard, please do! All of the normal contact and shipping apply; specifically: Byte Works, Inc. 8000 Wagon Mound Drive NW Albuquerque, NM 87120 (505) 898-8183 AOL : MikeW50 Internet: MikeW50@AOL.COM GEnie : ByteWorks Shipping: $5 in US, shipping cost rounded to the next higher dollar elsewhere If you order by mail and send a check, please use two checks--one for this product, and one for everything else, so we won't have to cash the check to send what we have now! If you have access to other online services, magazines, or other places where Apple II people gather, please spread this message around. Mike Westerfield (BYTEWORKS, CAT18, TOP4, MSG:38/M530) HyperCard IIGS Manuals Back In Print Yesterday the number of orders for """""""""""""""""""""""""""""""""""" HCIIGS orders soared from 7 to 11. We hit the break-even point, and placed the first order for books today. Thanks to all of you who decided to place an order for a product that might or might not have eventually become a reality. You made it one! And for all you bashful people who were waiting to see, you can now order HCIIGS manuals from us. I'll repost the details in a couple of days with an official press release. For those of you who have placed an order, it will probably be about a week to 10 days before you are charged, and the packages will ship from here 2-3 days later. Mike Westerfield (BYTEWORKS, CAT36, TOP34, MSG:43/M530) New APDA Products Hopefully some of you have already seen the notice in """"""""""""""""" Cat 18, Top 4 about the HyperCard manuals. Here's the basic story: The simple version of the APDA contract is that we can put pretty much any Apple II technical information back in print, so long as it was developed at Apple and published by Apple (i.e., not Addison-Wesley, darn it all). That's pretty broad, though. It means we can put some classic as well as some useful stuff back in circulation. Everything from the Red Book to the Apple //e Applesoft books to the Apple //e Reference Manual are fair game. So, if there's an Apple II publication you want to see available again, let me know. If I can find a copy to use as a master, and there are at least 10 people interested in buying the product, we'll try to put it back in print. If you know of a product you'd like to see, send the name of the product to me, and watch GEnie or AOL for ordering information and announcements of ship dates. Mike Westerfield Byte Works, Inc. 8000 Wagon Mound Dr. NW Albuquerque, NM 87120 AOL : MikeW50 GEnie : ByteWorks Internet: MikeW50@AOL.COM Phone : (505) 898-8183 (BYTEWORKS, CAT36, TOP34, MSG:33/M530) >>> BYTE WORKS CLEARANCE SALE <<< """"""""""""""""""""""""""""""""""" Sale on Some Byte Works Products! Hurry -- this offer expires """"""""""""""""""""""""""""""""" October 31st, 1995. We're cleaning house, and you're the winner! In the best summer tradition, the Byte Works is having a garage sale to clear out boxes of high-quality, printed manuals from the days before laserprinting. Back in those days, we had to print 1000 copies of a product to keep the unit cost down. Today, we're faced with several boxes each of some products. We don't want to throw them out, but we don't want to store more than we'll ever need. Se we decided to sell these popular products to you at garage sale prices. How low will we go? As low as 60% off of mail order prices! You decide the price, because the more you buy, the lower the price. Buy just one product from this list, and you already get a substantial 25% discount. But if you buy two programs, either from this list or from our general catalog, you take 33% off of any program in the sale list. Buy any 4 or more programs from our current catalog and you take 60% off of any program in our sale list! At one time, distributors paid more for these programs when they ordered them by the hundred! Of course, you might be wondering if we'll ever do the same thing with our other programs. In a word, no. You see, all of our other programs are printed as we need them, so we don't have boxes of them sitting in storage. Only the products on this sale list will ever be sold at prices like these. But hurry, because even these products won't be sold at garage sale prices forever! On Halloween night, October 31, 1995, we'll throw out all of the extra programs. And if we get down to the last box of any program, we'll stop selling it at the sale price--we want to keep a few for desparate people in the years to come! So if you want unbelievable garage sale prices on some of our most popular programs ever, get your order in fast! Cat # Product Retail Buy 1 Buy 2 Buy 3 Buy 4+ ----- --------------- ------ ------ ------ ------ ------ II-03 ORCA/M 4.0 $60.00 $45.00 $40.20 $30.00 $24.00 Add AW-20, Assembly Language for Applesoft Programmers, $18.95 from our current catalog to learn how to program in 6502 assembly language! II-04 MON+ $25.00 $18.75 $16.75 $12.50 $10.00 II-05 O/S Source $25.00 $18.75 $16.75 $12.50 $10.00 II-06 Floating Point $25.00 $18.75 $16.75 $12.50 $10.00 GS-04 ORCA/M GS $75.00 $56.25 $50.25 $37.50 $30.00 Add BD-06, GS Assembly Book Bonanza, $25 from our current catalog to learn Apple IIGS assembly language programming! GS-08 Integer BASIC $30.00 $22.50 $20.10 $15.00 $12.00 GS-09 Design Master $40.00 $30.00 $26.80 $20.00 $16.00 GS-10 Disassembler $30.00 $22.50 $20.10 $15.00 $12.00 GS-11 ORCA/Debugger $30.00 $22.50 $20.10 $15.00 $12.00 GS-12 Talking Tools $35.00 $26.25 $23.45 $17.50 $14.00 If you have questions or would like to place an order, please get in touch with us at: Byte Works, Inc. 8000 Wagon Mound Dr. NW Albuquerque, NM 87120 AOL : MikeW50 GEnie : ByteWorks Internet : MikeW50@AOL.COM Phone : (505) 898-8183 If you would like a complete catalog, just ask! Be sure and include you mailing address; our catalog is printed. (BYTEWORKS, CAT36, TOP31, MSG:53/M530) >>> DEBUGGER DEFICIENCY <<< """"""""""""""""""""""""""""" INDENT 40 Someone mentioned a long time ago that it would be nice to be """"""""" able to scroll the listing while in step mode. I've been using this program for a few weeks now, and I think that being able to scroll horizontally while in step mode would be great.. it can be annoying sometimes to hit escape, type an indent command, and then go back into step mode.. (I guess I'll have to learn to stop indenting my pascal code too much :) (A2PRO.GELAMP, CAT36, TOP29, MSG:39/M530) >>>>> Sounds reasonable, Tim. I need to beef that program up a bit; """"" maybe I'll add this feature when I do. You should see _my_ Pascal code. Some of it is literally indented 40 columns or so! Mike Westerfield (BYTEWORKS, CAT36, TOP29, MSG:40/M530) >>> ORCA/C HELP <<< """""""""""""""""""""" CAN I DO THIS? Is the following legal? """""""""""""" int test; unsigned bit1:1; . . . test=bit1; If not, how would I get a bit field moved into an int variable? With the regular variables, I can stuff a lower class into a higher class, e.g., float_variable=int_variable; and I was wondering if the same is true for bit fields. The ORCA/C manual is silent on this, and so is the other manual I am using, the one for PowerC for the PC. (At least I couldn't find it in either.) -=Joat=- (A2.TIM, CAT36, TOP11, MSG:569/M530) >>>>> Yes, it's legal. So is the reverse, although there are clearly """"" values that would not fit in a bit; in that case the result is "implementation defined" (the language designer's way of saying the compiler can do anything it wants, including crash), although ORCA/C and most others would simply and the value down to a number of bits that would fit. Mike Westerfield (BYTEWORKS, CAT36, TOP11, MSG:570/M530) <<<<< OK, I got another one. ORCA/C is telling me I have problems with """"" this. I know what the problem is, but I don't know how to get around it. What I want to do is pass a long integer source number, and an integer number telling the function how many string characters to return. I wrote this last night before I found out today that there is a _INT2DEC call. :) In any case, I learned a lot doing this, but apparently not enough. ORCA is telling me I can't use the [digits] subscript in the char Output[] declaration. If I don't put it there, then I get errors later, and ORCA gives me a type mismatch error when I try to stuff the overflow '*'s later. I have another one that does a similar thing for Hex, which is later in the source file, so I presume it has the same error, but ORCA halts on error checking with this one. I did a oa-L to find errors, and then tried to compile for a lark. Is there a way to get ORCA to go through the complete file to find all the errors, rather than stopping at the first error? BTW, any other hints as to the way I coded would be appreciated. Please speak slowly and be very kind. This is essentially my first C programming attempt for about 4-5 years. (Special thanks to Joe Wankerl for some major help last night to get me at least this far. :) char *DecToString(long input, int digits) { int i; long dec; char Output[digits]; char DecString[]={"0123456789"}; dec=input; if (pow(10,digits)0; i--) { Output[i-1]="*"; } else for (i=digits; i>0; i--) { Output[i-1]=DecString[dec%10]; dec=dec/10; } } return (Output); Thanks for any help. -=Joat=- (A2.TIM, CAT36, TOP11, MSG:571/M530) <<<<< I vaguely remembered from a C programming class I took 6 years ago """"" that there was an exponent operator in C (**). I could find no reference to it in the ORCA manuals. Am I confusing it with another language? The only way I could see to raise to powers was the pow() function, which was not exactly what I was looking for. I thought it was used thus.... int c, a, b; a=5; b=2; c=a**b; in which case c would be 25. Am I in the early stages of senility here? Or is it compiler dependent? -=Joat=- (A2.TIM, CAT36, TOP11, MSG:572/M530) >>>>> You can't define your output array that way. The compiler has no """"" notion of how big the array is at compile time, and that's sort of important. You can either define your output array at a fixed size (and make sure you don't overflow the array) or you could dynamically allocate space for your array. (WANKERL, CAT36, TOP11, MSG:574/M530) <<<<< > You can't define your output array that way. """"" No duh! :) > The compiler has no notion of how big the array is at compile time, and > that's sort of important. I figured that was the cause, but..... > You can either define your output array at a fixed size (and make sure > you don't overflow the array) or you could dynamically allocate space > for your array. How do I dynamically allocate space for the array? For the meantime, I will probably just fix the space at my largest callable size. I can always put a check to make sure the parameter is never larger than the array size. But I guess I need some help with a concept. Let's say I do the following.... char array[10]; array[]={"Test"} When I take the value in array[], and send it to print out, will I get... Test...... /*the '.' are spaces */ or will I get Test /* only the word itself */ -=Joat=- (A2.TIM, CAT36, TOP11, MSG:575/M530) >>>>> Joat, """"" You can allocate memory with the malloc() and free() standard C library functions. They work well for what you're thinking of doing. However, looking at your DecToString() function reminds me of the sprintf() function (p 359). It'll output just about anything into a formatted string. Michael (ANIMASIA, CAT36, TOP11, MSG:576/M530) >>>>> C (and ORCA/Pascal, for that matter) uses the character (char) 0 to """"" indicate the end of a string. So, when you create char array[10] = {"test"}; the array is filled with 4 characters, followed by 6 (char) 0 characters. When you print this string, or manipulate it with any of C's string functions, only the first 4 characters are used. BTW, the syntax you used: char array[10]; array[] = {"test"}; won't work. You can only use an initializer on the original declaration. To assign a string after the fact, use strcpy, like this: strcpy(array, "test"); C has no way of knowing if you are overflowing the available memory for a string. You have to add extra code to test for that situation, or risk a crash. If you want that kind of safety, use ORCA/Pascal. Pascal _does_ know how long a string buffer is, and will guard against overflows. There is no exponent operator in C. The syntax you refer to is from Fortran. It's also implemented in many BASICs and in ORCA/Pascal. From C, use pow() from . It won't always be as efficient as an exponent operator in a high-level language--none of C's math operations are, since they are built in via libraries, and thus can't be optimized properly--but it will raise one number to the power of another. Mike Westerfield (BYTEWORKS, CAT36, TOP11, MSG:577/M530) ///////////////////////////////////////////// GEnie_QWIK_QUOTE //// / ACK! I completely overlooked the possibility that the friendly / / EventMGR key translation table might be getting involved. / ////////////////////////////////////////////////// SNAKEBYTE //// [LIB]////////////////////////////// LIBRARY BIT BONANZA / ///////////////////////////////// HOT Files You Can Download """""""""""""""""""""""""" By Tim Buchheim [A2PRO.GELAMP] o NEW FILES IN THE A2Pro LIBRARIES >>> NEW FILES IN THE A2Pro LIBRARIES <<< """""""""""""""""""""""""""""""""""""""""" ~ Get Them While They're Hot! ~ File # 4841 ADDINLINE.BXY (GS) Uploaded on 9/1/95 by WANKERL About 21K (d/l time approx. 2 minutes @ 2400 baud) AddInline is a utility that runs under the ORCA/Shell which imbeds inline procedure names in object code. The object code you use is best if it comes from a high level language like C or Pascal. You can then use GSBug to step through your compiled code and actually see the subroutines! :-) File # 4823 MANPACK30.BXY (GS) Uploaded on 8/14/95 by S.REEVES2 About 179K (d/l time approx. 18 minutes @ 2400 baud) Various programs for working with manual pages, by Devin Reade . This archive includes: apropos v3.0 locate commands by keyword catman v1.0 format cat pages from man pages makewhatis v1.2 create the whatis database man v3.0 display reference manual pages whatis v3.0 locate commands by name ORCA/C source code for these utilities is included. Requires an Apple IIgs and GNO/ME v2.0 or higher. [*][*][*] I'm sorry this list is so short this month, but that's all there was. (Although the jump in file numbers indicates that private beta test libraries must have been active.) Maybe this month more of you will upload your files to share with us. Don't worry about whether your source code is beautiful or whether your programs look professional. A2Pro is for programmers. We can deal with your program's command line or unfinished features! :) [*][*][*] [EOA] [RTC]////////////////////////// RTC WATCH / ///////////////////////////// Bits and Pieces from A2Pro Real Time Conferences """""""""""""""""""""""""""""""""""""""""""""""" By Tim Buchheim [A2PRO.GELAMP] o A2Pro WEEKLY RTC SCHEDULE o SPOTLIGHT ON: HangTime >>> A2Pro WEEKLY RTC SCHEDULE <<< """"""""""""""""""""""""""""""""" _______ __________ _________ /_______| /_________/ /________/ SEVEN days a week!! /__/__/__/ /__/ /__/ /________/ EAL /__/ IME /__/ ONFERENCES in A2Pro!! /__/ /__| /__/ /__/_____ /__/ /__/ /__/ |________/ WEEKLY SCHEDULE Stop in and say "Hi!" at one of these conferences. We've been giving away quite a few GEnie usage credits (free time) at these conferences, and you may just win the next one! :) Day Time Event Host --- --------------- ----------------------------------- ----------- Sun 8:30pm-11:00pm Weekly Programmers' RTC Sloanie Mon 9:30pm-11:00pm GS/OS and Toolbox Calls Dave Miller Tue 9:30pm-11:00pm 8-bit Programming Russ Nielson Wed 9:30pm-11:00pm HangTime's HyperBar & Grill HangTime Thu 9:30pm-??:?? Informal - Q&A, chat, whatever A2Pro Staff Fri 9:30pm-11:00pm Getting Started with Programming Tim Buchheim Sat 8:30pm-10:00pm Assembly Language Programming Brian Wells NOTE: All times are in Eastern Time. ~~~~ >>> SPOTLIGHT ON: HangTime <<< """""""""""""""""""""""""""""" HE'S EVERYWHERE! Right now you're probably saying to yourself, "Wait a """""""""""""""" minute! Didn't I read a section earlier in this issue with the exact same title?" Well, yes, you did. (Unless you are reading this backwards, or something.) But HangTime didn't even mention that he hosts not one but TWO Real Time Conferences each week! So I felt that I should say something about it here. :) Everyone [who reads this issue at least] knows that HangTime is a certified HyperCard freak. (I think I'm allowed to say that. If I still have a job in A2Pro the day after this is published, I'll know that for sure. ;) On Wednesday nights, he hosts HangTime's HyperBar & Grill. (How's that for an alliteration? :) If you ever need to know anything about HyperCard GS, HyperTalk, XCMDs, XFCNs, or anything else 'hyper', this is your chance! By the way, if you don't have HyperCard, you can download it from A2Pro's libraries. Keep in mind that HyperCard requires a hard drive and a decent amount of memory to operate. If you need printed manuals, contact Mike Westerfield (email BYTEWORKS). On Thursday night, HangTime is back again. (Yes, I am aware of the fact that the schedule listed above says "A2Pro Staff." But nine times out of ten, that means HangTime. He must be crazy to host two RTCs per week; it's not as easy as it looks :) Thursday nights have no official topic. Yes, you can ask HangTime all the HyperCard questions you want. He'll love it. :) But you don't have to. (BTW: If you're wondering why there are no "Bits and Pieces from A2Pro Real Time Conferences" this month, it's because I was on vacation and didn't attend enough RTCs to have anything interesting to print here. Also, I forgot to tell the other A2Pro staff to turn on their capture buffers for RTCs and send them to me. :) [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 IBM PC Prog IBMPCPRO 617 PowerPC PPC 1435 PowerPCProg PPCPRO 1440 GEnieLamp is also distributed on CrossNet and many public and commercial BBS systems worldwide. o To reach GEnieLamp on Internet send mail to genielamp@genie.com o Back issues of GEnieLamp are available in the DigiPub RoundTable Library #2 on page 1395 (M1395;3). Internet users should use the GEnie gopher (gopher.genie.com) which has most back issues (but might be missing a few of them). o GEnieLamp pays for articles submitted and published with online GEnie credit time. Upload submissions in ASCII format to library #31 in the DigiPub RoundTable on page 1395 (M1395;3) or Email it to GENIELAMP. On Internet send it to: genielamp@genie.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 the GEnieLamp staff "live" we meet every Wednesday night in the Digi*Pub Real-Time Conference at 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 """"""""" o Mike White [MWHITE] Managing Editor APPLE II o Doug Cuff [EDITOR.A2] A2 EDITOR """""""" o Gina E. Saikin [A2.GENA] A2 Staff Writer o Charlie Hartley [A2.CHARLIE] A2 Staff Writer A2Pro o Tim Buchheim [A2PRO.GELAMP] A2Pro EDITOR """"" ATARI o Sheldon H. Winick [GELAMP.ST] ATARI EDITOR """"" o Bruce Smith [B.SMITH123] EDITOR/TX2 o Mel Motogawa [M.MOTOGAWA] ST Staff Writer o Richard Brown [R.BROWN30] ST Staff Writer o Al Fasoldt [A.FASOLDT] ST Staff Writer o Timothy V. Steed [T.STEED1] ST Staff Writer IBM o Sharon La Gue [SHARON.LAMP] IBM EDITOR """ o Tika Carr [LAMP.MM] MULTIMEDIA EDITOR o David Leithauser [D.LEITHASUER] HyperRead Editor o Bob Connors [DR.BOB] IBM Staff Writer o Susan M. English [S.ENGLISH1] Multimedia Graphics Artist MACINTOSH o Richard Vega [GELAMP.MAC] MACINTOSH 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 POWER PC o Ben Soulon [BEN.GELAMP] POWER PC EDITOR """""""" WINDOWS o Bruce Maples [GELAMP.WIN] WINDOWS EDITOR """"""" o Marlene Gaberel [M.GABEREL1] Windows Staff Writer ETC. o Jim Lubin [J.LUBIN] Add Aladdin Scripts """" o Scott Garrigus [S.GARRIGUS] Search-ME! o Mike White [MWHITE] (oo) / DigiPub SysOp o John Peters [GENIELAMP] DigiPub SysOp o Al Fasoldt [A.FASOLDT] Contributing Columnist o Phil Shapiro [P.SHAPIRO1] Contributing Columnist o Sandy Wolf [S.WOLF4] Contributing Columnist o Lloyd E. Pulley [LEPULLEY] Contributing Columnist \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// Opinions expressed herein are those of the individual authors, and do not necessarily represent opinions of GEnie Information Services, GEnieLamp Online Magazines, or T/TalkNet Online Publishing. Bulletin board messages are reprinted verbatim, and are included in this publi- cation with permission from GEnie Information Services and the source RoundTable. GEnie Information Services, GEnieLamp Online Magazines, and T/TalkNet Publishing do not guarantee the accuracy or suitability of any information included herein. We reserve the right to edit all letters and copy. Material published in this edition may be reprinted under the fol- lowing 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. Please include the fol- lowing at the end of all reprints: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////// The preceeding article is reprinted courtesy of GEnieLamp Online Magazine. (c) Copyright 1995 T/TalkNET Publishing and GEnie Infor- mation Services. Join GEnie now and receive $50.00 worth of online credit. To join GEnie, set your modem to 9600 baud (or less) and half duplex (local echo). Have the modem dial 1-800-638-8369. 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. GEnie will then prompt you for your signup information. For more information call (voice) 1-800-638-9636. ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ [EOF] ÿÿ .