|||||| |||||| || || |||||| |||||| || || ||| || || || || ||| |||| |||||| || |||| Your || || || || ||| || || |||||| |||||| || || |||||| |||||| GEnieLamp Computing || |||||| || || |||||| RoundTable || || || ||| ||| || || || |||||| |||||||| |||||| RESOURCE! || || || || || || || ||||| || || || || || ~ WELCOME TO GENIELAMP A2Pro! ~ """"""""""""""""""""""""""" ~ PROGRAMMER TURNS YETI! ~ ~ Menu Fun in 6.0.1 ~ Foundation Update ~ ~ Wordy Cursors ~ Beagile Compiler Blues ~ ~ HOT NEWS, HOT FILES, HOT MESSAGES ~ ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ GEnieLamp A2Pro ~ A T/TalkNET OnLine Publication ~ Vol.4, Issue 22 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 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? <<< """"""""""""""""""""""""""""""""""""""""""""""""""""""" ~ December 1, 1994 ~ 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) _____________| _____|__ _|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. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" [EOA] [FRM]////////////////////////////// FROM MY DESKTOP / ///////////////////////////////// Notes From My Desktop """"""""""""""""""""" o TOP OF THE PAGE >>> TOP OF THE PAGE <<< """"""""""""""""""""""" BURIED ALIVE IN SNOW?!?! Well, Yours Truly has been buried in bug """""""""""""""""""""""" report after bug report, 'snowed in' (literally!) at work, and has had a flat-out Real Crazy Month (tm). BUT, at long last, GEnieLamp A2Pro is here! Things should be back to normal next month, but once again all I really have to say is... Enjoy the issue! Nate Trost GEnieLamp A2Pro [EOA] [DIR]////////////////////////////// A2PRO ROUNDTABLE STAFF / ///////////////////////////////// By Nate Trost [A2PRO.GELAMP] ______________________________________________ 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) /__/ |__|________// / \/_/ 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 WHAT'S NEW o PROGRAMMER'S TIPS o MESSAGE SPOTLIGHT >>> BULLETIN BOARD HOT SPOTS <<< """""""""""""""""""""""""""""""" [*] CAT3, TOP5, MSG{79}..........Using assembly from other languages [*] CAT9, TOP7, MSG{163}................Applesoft BASIC help please! [*] CAT13, TOP2, MSG{33}....................Where to find information [*] CAT16, TOP2, MSG{202}...........................Programmer's Cafe [*] CAT18, TOP3, MSG{27}.................................Stack Design [*] CAT18, TOP5, MSG{3}...................Using XCMDs/XFCNs in stacks >>> WHAT'S NEW <<< """""""""""""""""" FOUNDATION UPDATE Well... it's been quite a while since Foundation """"""""""""""""" was made freeware, and we're finally getting around to starting to organize some folks to work on updating the program. We're looking for a few good -- great -- programmers! This is an unusual venture. It's not a commercial project, and it's not intended to bring any profits to anyone. All this project is is an effort to update and revise Foundation. We also need one or more people to, eventually, write a new manual -- the original hasn't been sent to us yet, so we're probably going to start from scratch. Anyone's welcome to join the effort, but we do ask two things: that you actually do work on the project in some manner, and that you don't pass around partially-updated versions. We're hoping to make the upcoming freeware versions of Foundation cohesive and to avoid the confusion that would arise if lots of incompatible and incomplete versions were floating around. If you have suggestions for Foundation revisions, feel free to post them in the Foundation topic here in A2Pro. However, keep in mind that for the time being, no major changes are planned -- we just want to get Foundation to compile under current versions of ORCA. Because the source for version 1.0.3, which was never completed, has not been made available (after months of waiting and numerous requests for it), we've decided to forge ahead and start with version 1.0.4, which will be a minor revision of 1.0.2. So if you have C and/or assembly programming skills, or can write really well, and want to work on Foundation, please drop me an email including information on what you'd like to work on. We're just starting to get the ball rolling, but things are finally pulling together! Eric Shepherd (Sheppy) [Team PPCPro] (POWERPC.PRO [Sheppy], CAT16, TOP2, MSG:202/M530) >>> PROGRAMMER'S TIPS <<< """"""""""""""""""""""""" COMPILER MEETS COMPILER Okay, idle question : """"""""""""""""""""""" I read in a mailing from the Byte Works that the Modula-2 compiler itself was written in Modula-2. How is that possible? Chris P.S. Which languages did you mean by "ivory tower languages" in the same mailing? Certainly not Pascal! :) (C.KLIMAS, CAT14, TOP4, MSG:30/M530) <<<<< Yes, ORCA/Modula-2 was written in Modula-2. ORCA/M is written """"" in ORCA/M. ORCA/Pascal is written in ORCA/Pascal. ORCA/C is written in... well, ORCA/Pascal. I'm not crazy! ;) In all cases with the high-level languages, some speed critical subroutines were later translated to assembly language. That's just for speed, though. I recently ported ORCA/C to MPW on the Mac, and in the process, converted all of the assembly back to Pascal. It works just fine without the assembly; it's just a bit slower. When a language is written in itself, it's generally bootstrapped. ORCA/Pascal is a good example. It started life as the P4 compiler, which I compiled to p- code on an IBM PC. I then wrote a p-code interpreter which ran under ORCA/M on the 6502; that gave me a working version of the compiler which could compile itself on either the IBM or Apple, and the result (remember, it was p- code) could run on either machine, too. This compiler was used to develop the ISO compiler, which eventually got a native code code generator for the 65816. Modula-2 was similar. Peter started with Niclaus Wirth's compiler, which he licensed, and developed a 65816 code generator on another machine. (An IBM again, I think, but I'm not positive about that.) This version of the compiler was compiled on a Modula-2 compiler on the IBM, and the result moved to the GS. Eventually, the bugs were worked out so the compiler could compile itself on the GS. Mike Westerfield (BYTEWORKS, CAT14, TOP4, MSG:32/M530) GIVING THE CURSOR SPACE I just wanted to see what you guys know about """"""""""""""""""""""" this. In the process of disassembling QuickDraw II, I noticed that the cursor drawing routines seem to behave slightly incorrectly, at least from what I've been able to understand. I just want to know if I'm misundstanding, or if this is a bug (in which case, I can easily write a patch). When SetCursor is called to set the cursor shape, a buffer is allocated to save the screen contents covered by the cursor and also to hold a series of pre-shifted copies of the cursor image and mask. It allocates enough space to hold the images with an extra word at the end of each row, to hold any "carry over" when the image is pre-shifted. (In 640-mode, the image and mask rows are shifted a total of 14 bits, so it's quite possible to overflow the original image row space.) However, when the pre-shifted shape is actually generated, the extra word is not used -- any pixel bits shifted off the right side of the row are lost. This is carried over to the cursor drawing and erasing routines. This should result in cursors with the right sides of the images disappearing at certain pixel positions. I had never noticed this myself, but the standard arrow (pointer) cursors have enough empty space on the right side of the image and mask that even after shifting they remain intact. So I wanted to ask others, who might have played with custom cursors on their systems, whether you had ever noticed any oddities. BTW, padding the image with an extra blank word on the right will solve any such problems. Oh, I just checked the cursors that came with Cool Cursor and Anna Matrix from GS+, and it appears that Anna Matrix is adding that extra blank word onto the image rows automatically. For example, when the program shows a cursor of 16 pixels wide (2 words), the actual file holds a 3 word wide cursor image. Was this done to work around the problem? Anyway, I'd just like to know if this a known problem I've just never heard of before, if I am misunderstanding how the cursor routines work, or if I have found something new. Thanks. Mike (M.HACKETT [Michael], CAT15, TOP4, MSG:127/M530) <<<<< I fell victim to this 'bug' once myself. It actually -is- """"" documented, in small print (but with the description) in the cursors part of TBR II's QuickDraw II chapter. (Specifically, 16-37, but -only- on the record diagram itself - ACK!). And, yes, cursor creation programs do auto-correct for this. (A2PRO.HELP [ Sloanie ], CAT15, TOP4, MSG:128/M530) >>>>> Speaking of cursors, I've found that unless blank space is left at """"" the TOP of a cursor, the mask will get glitched in some pixel positions (resulting in white/ colored pixels on the cursor's top row). This is really easy to reproduce with Genesys: make a new cursor, using the most of the top row, and test it: you should get the extra junk. -Greg Templeman, GS Product Manager/GS Software Engineer Softdisk Publishing (BARNABAS [G.Templeman], CAT15, TOP4, MSG:131/M530) BEAGLE COMPILER DEBUGGING I've got a problem with the Beagle Compiler, """"""""""""""""""""""""" and I was hoping someone could help me out... My compiled program works fine most of the time, but every so often it crashes for no reason at all, with a RETURN WITHOUT GOSUB ERROR AT $C1F1. Now, that's obviously a bogus error ($C1F1??), but is it the Compiler's fault or mine? I'm using version 3.2 of the Compiler, which I THINK is the latest, but I'm not sure. Anyone have any experience here and can help me out? (If worse comes to worse, I suppose I'll just have to slap an ONERR GOTO statement in there and watch the smoke pour out of the machine... :) -Bret (B.VICTOR1 [> Slix <], CAT9, TOP10, MSG:25/M530) <<<<< Actually, it's probably a real program error. It's been my """"" experience that BB- compiled programs don't give "real" Applesoft line numbers in errors but list where the coding error is in the compiled code. If you can duplicate the error at will, the easiest way for you to find this is to run the original uncompiled Applesoft program, to get a "real" line number for the error. Failing that, you'll have to put in messages and stuff to tell you where you are in the program when it happens. TomZ (T.ZUCHOWSKI, CAT9, TOP10, MSG:26/M530) >>>>> I do quite a bit of work with the Beagle Compiler. I do find that """"" on rare occasions it will indeed have a problem with gosubs especially the ON X GOSUB. The ON X - 1 GOSUB often does not work. Whenever possible, I use IF THEN statements. They're faster anyway with BC. If that creates problems, I do any calculations outside of the ON GOSUB. This almost always cures any problems. On very rare occasions, I've inserted a bit of useless code just before the GOSUB such as VTAB 1. That seems to cure the problem. >>> Now, that's obviously a bogus error ($C1F1??) Two things: 1) Sometime the error returned in AppleSoft is different from that returned using the compiler. I always try to get my error to occur in AppleSoft. I trust it more and it will give me a line number. 2) Your BC disk program disk has a program called PRINT.LINES that will translate that "bogus error" line number for you. Consult your manual. The very best way to find a possible bug is to find it in AppleSoft as TomZ suggest. >>> I'm using version 3.2 of the Compiler, which I THINK is the latest I'm 99% sure you're correct. The first versions of BC was full of bugs. They're almost all gone now. >>> watch the smoke pour out of the machine... :) Sometimes I've wanted to use a sledge hammer!!!! Good Luck in finding the bug. Sometimes I've just given up only to find it by accident a year later. >>>Barry B<<< (B.LUMPKIN [>>Barry B<<], CAT9, TOP10, MSG:27/M530) CONVERTING S-C ASSEMBLER FILES I bought a used TimeMaster II clock. Now """""""""""""""""""""""""""""" I'm trying to figure out how to fetch the time. All the source code is in S-C assembler format (DOS 3.3 filetype INT). I found my S-C manual, but no disks. ugh. Is there a program that will convert it to normal text file? I searched the libaries using S-C and I was given pretty much the entire old Apple Assembly Lines. Any help or pointers would be greatly appricated. (A.PHELPS5 [A. Phelps], CAT2, TOP4, MSG:25/M530) <<<<< Yes, it is... Check out the Apple Assembly Line topic in Category """"" 1, Topic 19 for file listings... Message 1 documents the existance of Shell commands for ORCA and Davex to do this, created by the people who converted Apple Assembly Line to the electronic form we have in the library right now. Whether they're in the library or not I don't know... Vol. 1 No. 2 (file #3329) contains a DOS 3.3 program to convert from S-C to TXT. Vol. 8 No. 7 (file #3836) contains the ProDOS version. Please note that the files in the AAL magazine files are source code listings and will need to be compiled (but you can probably get enough of the file format from looking at them and write a Applesoft program to do it). The source files in the AAL files in the A2Pro library are all in text format already, so it won't be a problem to load it into, say, ORCA/M, and do some minor editing to compile it. Dave (JUST.DAVE, CAT2, TOP4, MSG:29/M530) MERLIN HUMOR Due to a typo this evening, I just found something really """""""""""" cool in Merlin, but completely pointless. You can specify: LDA 1,STACK In fact you can even do: LDA 1,SCHMUCK And: LDA 1,STUPID And... well, you get the idea. I bet ORCA/M... Nah, just kidding Mike! Regards, Richard (RICHARD.B [Richard], CAT3, TOP4, MSG:98/M530) MENU ON, MENU OFF... 'elp! """""""""""""""""""" I know that with either System 6.0 or 6.0.1 (was it earlier?), there is a new tool call for dealing with enabling / disabling edit menu items (with a single toolcall, instead of having to track the front window and enable / disable items individually) I've dug thru my docs, and I can't find it (of course if I wasn't trying to find it so I could use it, I'd have found it several times over...) If anyone knows the call I'm refering to, please post what toolset it's in, and where it's documented. (TBRV3, Sys 6.0 update, Sys 6.0.1 update) Thanks -Harold (H.HISLOP [CryptKeeper], CAT13, TOP2, MSG:59/M530) <<<<< I think you mean _MWSetUpEditMenu, which is on page 308 of """"" _Programmer's Reference for System 6.0_. ...Sloanie (A2PRO.HELP [ Sloanie ], CAT13, TOP2, MSG:60/M530) >>>>> Yeah, right after I posted my question I ran into """"" _MWSetUpEditMenu... figures, doesn't it. :/ I also found that it doesn't touch the Undo item... or rather it does touch the Undo item in a very unpleasing way... It enables it, but never disables it! ICK! I had hoped to avoid _FrontWindow, _GetSysWFlag, _En(Dis)ableMItem, but... I can't. Oh well... just another almost usefull toolcall... [Yes, I would have done things differently, including passing a flag word to indicate which edit menu items should be affected and how. The other thing I would have done... NOT mention it affecting the Close menu item... as it doesn't do this properly (if at all... I haven't snooped far yet)] -Harold Well... The _MWSetUpEditMenu tool (System 6.0.1) is sorta nice (it eliminates the need to loop thru enabling / disabling the Copy, Cut, Paste, Clear menu items) but it doesn't really treat the Undo and Close menu items in a particularly sane manner... Here's a small & simple routine that handles these items in a reasonably sane manner. (Merlin format, *'s changed to %'s to keep GEnie from choking) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % FixEd should be called once each time thru the event % loop. It handles enabling / disabling the edit menu % items. The Undo and Close items are also handled. % % This routine keeps the Close item disabled unless a % window is open. Further it keeps the Undo item disabled % unless the frontmost window is a system window. % % Note that as of System 6.0 it became Ok to pass a nil % window pointer to GetSysWFlag, it's now guarenteed % to return false for this condition. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % FixEd _MWSetUpEditMenu ;fixup Copy, Cut, Paste, Clear phw #$FA ;Undo menu item ID phw ;space for GetSysWFlag phl ;space for FrontWindow _FrontWindow ;get front window ptr % phw #$FF ;Close menu item ID lda 4,s ;middle of window ptr beq :no ;no window is open % _EnableMItem ;enable Close item bra :wind ;go take care of Undo % :no _DisableMItem ;disable Close item :wind _GetSysWFlag ;get front window type pla ;true = system window bne :EnUn ;enable Undo item % _DisableMItem ;disable Undo item rts % :EnUn _EnableMItem ;enable Undo item rts % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Harold (H.HISLOP [CryptKeeper], CAT13, TOP2, MSG:61/63/M530) POP-UP XCMDS I just started work on a new HCGS stack, and realized that """""""""""" I really need a couple of pop-up menus to allow selections from a list of items. Having a whole bunch of radio buttons is really messy, and takes up more space than I can afford. I don't think HCGS includes pop-up menus anywhere, but I figured it might be possible through an XCMD. Before I go to the trouble of trying to figure it out, has anyone already written such an XCMD. Alternatively, does anyone have any other suggestions. (Just so you know, I have written an XCMD before, but I'm not an expert by any means.) Mike (M.HACKETT [Michael], CAT18, TOP5, MSG:3/M530) <<<<< Mike, good news! Look in the Tools stack and you'll find that """"" Apple DID in fact include a popUp Xcmd, I believe it's called AddPopUp. Check the list of Xfcns and you'll find it. Aren't you glad you checked A2Pro first? B-)> (HANGTIME [Da Boss], CAT18, TOP5, MSG:4/M530) >>> MESSAGE SPOTLIGHT <<< """"""""""""""""""""""""" DUM TRICKS Had to comment on a really neat usage of DUM and DEND in Merlin. """""""""" With a two-iteration loop, conditional assembly, and DUM/DEND, you can make a global entry point into the middle of a routine that uses local labels WITHOUT upsetting the scope of the local labels (i.e. a local label will be available "across" the global entry point). It is somewhat tricky, but it can be really useful when you need to add another entry point in a routine and don't want to recode it to use global instead of local labels. How is this done? Well, I'll give a little example here (I've used some LST controls to minimize the impact on the assembly listing): MainEntry nop bra :local ;Access local label ACROSS global label! lst off ;Make things pretty ]pass = 0 ;Set up to "skip" AltEntry! lup 2 ;Make two passes through this code do ]pass ;Do this on the SECOND pass: AltEntry ;Alternate entry point (note: no code here!) else ;Do this on the FIRST pass: dum * ;Start dummy code at current PC fin :local nop ;Rest of routine goes here... :exit rts do ]pass ;Do on the SECOND pass: lst off ;Make things pretty else ;Do on the FIRST pass: * Note: "dummy" variables can go here * (see subsequent discussion) dend ;End of "dummy" pass ]pass = 1 ;Starting the second pass lst rtn ;Fix the listing back the way it was fin ;End of conditional-passes --^ ;Back to "lup" (next pass) That's all there is to it! Note that, since dummy statements can't be nested, you could only use this technique for one "invisible" entry point. However, there is a slight modification of this technique that will work in that case: the code starting at the second "do ]pass" can go right after any local labels that occur AFTER the AltEntry point which need to be referenced BEFORE AltEntry (in this case, right after :local, since it is the only local label referenced before AltEntry). Any local labels that get referenced between AltEntry and the second "do ]pass" statement, but which actually reside AFTER the second "do ]pass", can be included where I have noted in the code (just the label, example :branchPt, on a line by itself). This gives the assembler something to reference on the first pass, while on the second pass it will see only the actual location of the local label. Make sense, everybody? I think it's a neat technique (I came up with it to avoid rewriting a routine to use all global labels, anybody want to bet whether I actually saved time the first time I used it? ;) -Greg Templeman, GS Product Manager/GS Software Engineer Softdisk Publishing (BARNABAS [G.Templeman], CAT3, TOP19, MSG:104/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 THE BYTE WORKS <<< """""""""""""""""""""""""""""""" MACGEN BUGS I've been having some problems with the MacGen utility. """"""""""" Relevant version numbers are: ORCA/M 2.0.3 MacGen 2.0.1 ORCA/Shell 2.0.2 System Sw. 6.0.1 It seems that not all character I/O is working with MacGen. Here are some examples: ORCA>macgen MacGen 2.0.1 File name: ORCA> Notice that I wasn't able to input a filename. MacGen thinks I input nothing and so drops back to the prompt. ORCA>macgen myprogram.src MacGen 2.0.1 Output file name: ORCA> Same as before! ORCA>macgen myprogram.src myprogram.mac MacGen 2.0.1 Unresolved macros: Macro file name: ORCA> The macro names don't display, along with the earlier problem. ORCA>macgen myprogram.src myprogram.mac 13:ainclude:m= MacGen 2.0.1 Processing Processing Processing Processing Processing Unresolved macros: Macro file name: ORCA> Notice that the pathnames of the macro files being processed do not display. The other problems still persist. At the time I ran into this problem, it was on a weekend and I figured I wouldn't get a reply from you quickly. So I spent a few hours snooping around in MacGen's code. I found so interesting things: o MacGen uses both the Text Tools and the .CONSOLE driver to display text. o Only the .CONSOLE driver is used to get input from the user. o All the I/O that does not work uses the .CONSOLE driver. o This happens even if the system is shift-booted. What I ended up doing is writing a utility that loads MacGen, patches it to use the Text Tools instead of the .CONSOLE driver, and runs it. Everything works fine now, but it should have worked fine to start with :/ I hope you have a bug fix in the works for this! Thanks :) -- Brian Wells (B.WELLS5 [Brian], CAT36, TOP9, MSG:117/M530) <<<<< The latest version of MacGen is a bit hosed, due to a partial """"" conversion from the old I/O mechanism to the new. (In other words, I really goofed.) If you put everything on one line (as I always do, and happened to do during testing), it will work fine. Otherwise, you might want to drop back to an older version. I'll be working on this as soon as I get a chance. Mike Westerfield (BYTEWORKS, CAT36, TOP9, MSG:119/M530) >>>>> > I also have that same MacGen Problem and would appreciate a fix. """"" Done! Look for file #4400, MACGENFIX.BXY to appear in the A2Pro library in the near future. :) -- Brian Wells (B.WELLS5 [Brian], CAT36, TOP9, MSG:120/M530) MPW ORCA/C It came up in another topic that I've done a translation of """""""""" ORCA/C to MPW on the Mac. It's the same language, the same libraries, but it runs under MPW using Apple's MPW IIGS tools (specifically their linker). I gave some thought to releasing this as a commercial product, but decided in the end it wouldn't be worth the effort. If I did release it, the product would look like this: Price: $150-$250 Documentation: 3-ring binder with color inserts. You would need to supply MPW and any parts of MPW IIGS you need on your own. Out of curiosity, how many people would be interested in something like this? Mike Westerfield (BYTEWORKS, CAT36, TOP11, MSG:358/M530) [EOA] [LIB]////////////////////////////// LIBRARY BIT BONANZA / ///////////////////////////////// HOT Files You Can Download """""""""""""""""""""""""" By Tim Buchheim [T.BUCHHEIM] >>> Utilities <<< """"""""""""""""""" File #4401 GNOSNOOP2.BXY (GS) Uploaded on 11/12/94 by D.MITTON About 15K (d/l time approx. 1 minute 30 seconds @ 2400 baud Ymodem) This is the newest GNO/ME Snooper CDA (V2.0) I found on the Internet at 'grind'. File #4377 RESLIN.BXY V0.46 (GS) Uploaded on 10/27/94 by RICHARD.B About 73K (d/l time approx. 7 minutes @ 2400 baud Ymodem) Reads IIGS and Macintosh resource forks, allows viewing, editing, copying, minimal derezing and other manipulations. This version is a minor bug fix. >>> Patches & Modifications <<< """"""""""""""""""""""""""""""""" File #4400 MACGENFIX.BXY (GS) Uploaded on 11/10/94 by B.WELLS5 About 5K (d/l time approx. 30 seconds @ 2400 baud Ymodem) This utility patches MacGen 2.0.1 so that it's display works properly and input of filenames work. More details can be found in the included source code :) [Editor's note: DO NOT use this on any version of MacGen other than 2.0.1!] File #4393 CHECKPLUS.BXY (ALL) Uploaded on 11/6/94 by S.ALFTER About 3K (d/l time approx. 20 seconds @ 2400 baud Ymodem) Number: 4393 Name: CHECKPLUS.BXY This is a diff file for 'CheckIt Plus,' a modified version of the checksum-generation program that was published in every issue of Nibble magazine after whatever time they began using CheckIt instead of Key Perfect. You'll need an unmodified copy of CheckIt punched in from any issue of Nibble (copyright restrictions prevent the full program from being uploaded here). Once you have CheckIt loaded in, EXEC this file to apply the diff. (Make sure you SAVE the modified program back to disk--preferably as CHECKIT.PLUS, but the name isn't too important.) The program works like regular CheckIt, but you'll get a list of all the checksums in a program by entering (BASIC) CALL 768 or (Monitor) 300G. >>> Sample Source Code <<< """""""""""""""""""""""""""" File #4405 P8TOD.BXY (ALL) Uploaded on 11/13/94 by E.WAGNER10 About 11K (d/l time approx. 1 minute @ 2400 baud Ymodem) The purpose of this ProDOS 8 system program (P8TOD.SYSTEM) is to display the ProDOS 8 Date and Time in internal and human-readable formats. In of itself, this program is not really useful or practical. However, it demonstrates several techniques that may prove useful to individuals that are [learning to] writing 6502 assembler programs. Many of the techniques used in this program have been borrowed from other sources and are well documented in the source code. File #4402 FORTUNE.BXY (GS) Uploaded on 11/12/94 by D.MITTON About 70K (d/l time approx. 7 minutes @ 2400 baud Ymodem) This is a shell utility which will display a 'fortune' each time it is executed. I find it great for my login shell. It was ported from QNX and includes the ORCA/C source. Enjoy!!! >>> HyperStudio <<< """"""""""""""""""""" File #4421 CLAYS.NBAS.SHK (GS) Uploaded on 11/18/94 by C.JUNIEL About 30K (d/l time approx. 3 minutes @ 2400 baud Ymodem) Here are four New Button Action (NBA)s which I wrote. They are: Music Player Run Basic Show Text Set Sound [*][*][*] [EOA] [RTC]////////////////////////// RTC WATCH / ///////////////////////////// Bits and Pieces from A2Pro Real Time Conferences """""""""""""""""""""""""""""""""""""""""""""""" By Tim Buchheim [T.BUCHHEIM] >>> Understanding the Stack <<< """"""""""""""""""""""""""""""""" I have a question about the stack I want to understand it more Do other languages as opposed to assembly use the stack? Well, all programs use the stack, but assembly languages uses it directly. Pascal, C, etc.. don't manipulate the stack directly. I understand that the stack is a temporary storage area that uses LIFO Right. I thought C is condsidered a middle level language and makes use of the stack all use the stack, but only in assembly do you directly push and pull values on the stack doesn't C operate on the bit level Ex: bit fields Yes, you can do bit-wise calculations, etc. But the stack is used indirectly. Does the stack put bit cvalues in part of the processor? The analogy I read is that of bins or a postal l box The stack is a part of the computer's memory set aside for that purpose (not part of the processor). It is used to store return addresses for subroutines and transfer data between processor registers (A,X,Y, etc)... the best analogy is a stack of plates you can put a plate on the stack, or pull it off. when you run a subroutine, you push all the parameters (plates) onto the stack when it returns, you pull results off of it in in a sense it's optional Well, the stack is need for the processor to call routines, pass values, etc. Without it, programs would be severely limited. processors without stacks would be extremely limited I don't know how the processor would store the return address for subroutines it's like a queue for routines? the stack can be used for a lot of things the processor itself uses the stack to remeber where it was when you call a subroutine could you give some examples ? sure.. say you're calling a tool function.. how about LGetPathName2 to find out your program's pathname.. you push the parameters onto the stack so if you use the analogy of a stack of plates, the plates on top hold the parameters then you call the routine..the processor stores the current address it is on the stack LGetPathName2 looks at the parameters you passed. it removes them from the stack and puts the plate with the pathname there then when the computer returns from the subroutine, it looks at the top plate to see what address to return to (otherwise, how would it know where you called the subroutine from?!) so it pulls that address off the stack and jumps to it when it's back at your program, your program would pull the pathname off the stack Like a phone book? or address book? well, each byte of memory in the computer is numbered. so a number, say 197123, represents the part of memory where the program was when it called the subroutine when the subroutine ends, the computer sees the number 197123 on the stack so it returns to that address Where you left off yep! and the stack is how it knows where you left off Thanks for clarifying this for me I thought some high level languages could access the stack, but only indirectly They do. whenever you call a subroutine you're messing with the stack :) For example, Applesoft BASIC uses a stack to keep track of where you were in the program when you GOSUB a subroutine. When it hits RETURN, it looks at the stack to see where it was before the GOSUB Oh..I didn't realize this All the high-level languages use the stack without the programmer ever knowing about it :) yep or in C when you're making function calls exactly Right. I didn't know this Thanks [*][*][*] [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 and many public and commercial BBS systems worldwide. o To reach GEnieLamp on Internet send mail to genielamp@genie.geis.com 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 (FREQ FILES for names of back issues of GEnieLamp IBM): Platform Magic Name To Use """""""" """"""""""""""""" GEnieLamp IBM .................. GLIBM GEnieLamp ST ................... GLST GEnieLamp A2Pro ................ GLA2PRO GEnieLamp Macintosh ............ GLMAC GEnieLamp TX2 .................. GLTX2 GEnieLamp A2 ................... GLA2 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 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/Editor """"""""" IBM o Bob Connors [DR.BOB] IBM EDITOR """ o Nancy Thomas [N.NOWINSON] MultiMedia Editor/Writer o Brad Biondo [B.BIONDO] IBM Staff Writer o Tika Carr [T.CARR4] IBM Staff Writer o Dave Nienow [D.NIENOW] IBM Staff Writer o Don Lokke [D.LOKKE] Cartoonist o Sandy Wolf [S.WOLF4] Contributing Columnist WINDOWS o Tippy Martinez [WIN.LAMP] WINDOWS EDITOR """"""" o John Osarczuk [J.OSARCZUK] Asst Editor/Columnist o Rick Ruhl [RICKER] Windows Sysop/Columnist o Brad Biondo [B.BIONDO] Windows Staff Writer o Rick Pitonyak [R.PITONYAK] Windows Staff Writer o Ed Williams [E.WILLIAMS24] Windows Staff Writer o Dave Nienow [D.NIENOW] Windows Staff Writer 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 ATARI ST o John Gniewkowski [GENIELAMP.ST] ATARI 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 ATARI ST/TX2 o Cliff Allen [C.ALLEN17] EDITOR/TX2 """""""""""" ATARI [PR] o Bruce Faulkner [R.FAULKNER4] EDITOR/GEnieLamp [PR] """""""""" APPLE II o Doug Cuff [EDITOR.A2] EDITOR """""""" o Phil Shapiro [P.SHAPIRO1] A2 Staff Writer o Darrel Raines [D.RAINES] A2 Staff Writer o Gina E. Saikin [A2.GENA] A2 Staff Writer o Charlie Hartley [C.HARTLEY3] A2 Staff Writer A2Pro o Nate C. Trost [A2PRO.GELAMP] EDITOR """"" o Tim Buchheim [T.BUCHHEIM] Co-Editor ETC. o Jim Lubin [J.LUBIN] Add Aladdin Scripts """" o Scott Garrigus [S.GARRIGUS] Search-ME! o Mike White [MWHITE] (oo) / DigiPub SysOp o Susie Oviatt [SUSIE] ASCII Artist o Al Fasoldt [A.FASOLDT] Contributing Columnist o Phil Shapiro [P.SHAPIRO1] Contributing Columnist o Sandy Wolf [S.WOLF4] Contributing Columnist \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////// 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 sign-up information. Call (voice) 1-800-638-9636 for more information. ////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ [EOF]