AppleLink APPLE II DEVELOPMENT FORUM June 6, 1989 10:00 p.m. Eastern Time Topic: Assembly Language Forum Leader: Dave Sugar (AFL Dyfet) A2GS Has anybody accessed the DOC directly through the softswitches? AFA Gary J Hi Matt. Coach101 Good evening Matt AFA Parik (I have A2GS, time saved vs. using tools is VERY minimal. only recommended if AFA Parik you find your program going s l o w with sound. A2GS I don,t have any problem playing things directly through it, but... A GibberFC A2GS... don't fool with the softswitches... if you want future compatibility A GibberFC sometimes apple will pull a fast one and change them...expecting you to have A GibberFC made tool calls instead. Richbourne Hi guys, I have a pretty weird situation, can you people help me? :) AFA Gary J Hmmm... Dyfet isn't around, and it's time to start.... A GibberFC I don't know.. what type of weird situation is it.....;) A2GS I get this nagging FATAL SYSTEM error- Unclaimed sound Interrupt... Richbourne Well... (this is partly from Lets Discuss) I consider myself proficient at..... A2GS and I know that in the first place I turned off all of the Oscillators... Richbourne ATARI BASIC (was published numerous times), and dabbed a little in Atari's Richbourne machine language, but never got into it. I also dabbed a little into Apple A2GS Interrupts just to avoid this kind of error,Why is it happening anyways? AFA Gary J Wait just a second, Richbourne. Let's start this forum formally and we'll take Richbourne II machine language (Lisa assembler! In 1989!), but those attempts to get into AFA Gary J your question first. AE PhilM Hi Matt! Richbourne Whew! I should get a macro program! :) A GibberFC Hi Phil!!! what is up?? AFA Gary J :) AFA Gary J Welcome to the Apple II Developer's Forum. Tonight's topic is assembly AE PhilM Hi Gibber, Vulcan...that's up! Looking real good! AFA Gary J language. AFA Gary J We'll be using forum protocol starting *NOW*, which means... A2GS I realize I'm taking a chance on future compatibility by using the softswitches A2GS but, hey, that's life! :-) AFA Gary J If you have a question, type a question mark (?) followed by a return. AFA Gary J If you have a comment on the current topic, type an explanation point (!), AFA Gary J followed by a return. A2GS ? ASEMBLER13 ? AFA Gary J Richbourne has the first question....(which he has already partially asked) A GibberFC be bak AFA Gary J Can you continue where you left off? Richbourne ...continuing.... so how can I make a smooth transition from Atari/Applesoft... Richbourne to GS development-level assembly? AFA Gary J Q = Richbourne, A2GS, ASEMBLER13 Coach101 ! JSchober (Yo!) AFA Gary J GA Coach. Richbourne :: all ears :: Coach101 The list of books that were provided in the Lets Discuss section would Coach101 be a very good start. I would get one of the "machine language" books Richbourne oh yeah... I was going to mention... I HAVE Apple IIgs Technical Reference, Coach101 to learn the machine architecture and then proceed to the Apple Richbourne but it doesn't start you anywhere. AE PhilM ! Coach101 publication (via APDA) with HodgePodge implemented in "C", Pascal, and Coach101 assembler. Coach101 Beyond that, given the size of the II-GS (memory that is) I would Coach101 strongly consider using either Pascal or C instead of assembler (except Coach101 in those time critical spots you may find). GA AFL Marty AE PhilM ... GA AE PhilM You need to get several books: Tool Box Ref 1&2, Firmware Ref Manual, Hardware AFL Marty Q: Richbourne (Phil), A2GS, ASSEMBLER13 AE PhilM Ref Manual, GS/OS Ref Manual 1&2, and Assembler or Pascal or C books...if you AE PhilM want to get serious...also sign up to be a developer and get the Tech Notes. AFA Gary J You can also get the tech notes online, here. AFA Parik (sell your house, its the first step) AFL Marty Done Phil? AE PhilM That should give you all you need...(for a while) AE PhilM Done PsychoPunk ? AFL Marty A2GS Go ahead AFA Gary J Anything else, Rich? A2GS I'm accessing the DOC directly through the softswitches (risky business)... AFL Marty q+ punk AFL Marty Q= A2GS, ASSEMBLER13, PsychoPunk MAILMAN60 How do you sign up to be a developer? A2GS and I know I've turned off the Oscillators interrupts, why do I get (after a A GibberFC bak A2GS while) a FATAL SYSTEM error- Unclaimed sound interrupts? AFA Gary J Q = A2GS, ASSEMBLER13, PsychoPunk, MAILMAN60 AFA Parik ! Dave Lyons ! AFA Parik (ga Dave : Dave Lyons Sounds like you *haven't* successfully turned off the sound interrupt, to me. Are you using the Dave Lyons sound tools or dealing with the hardware directly? A2GS Hardware directly Dave Lyons Hmmm...I've never done that myself. If you have turned on the interrupt AFA Parik ! Dave Lyons temporarily, on purpose, you should install a routine to handle the Dave Lyons interrupt--do you? Dave Lyons (SetVector would be needed here.) A2GS I never turn on the sound interrupts, so I never put in an Interrupt Handler. AFA Gary J Q = A2GS (Dave, Parik), ASSEMBLER13, PsychoPunk, MAILMAN60 AFA Parik i use the DOC directly sucessfully, leave me email and we'll work it out. You Dave Lyons I'm confused. You "successfully turned off the oscillators interrupts" but never turned them on? AE PhilM ! AFA Parik still need to replace the IRQ.SOUND ($E1002C) with your own routine. AFA Parik ga A2GS I left the interrupts off while the sound continuously plays. AFL Dyfet Okay. GA Phil. AE PhilM I wrote Sonic Blaster and I can probably help you...send me a flash if you AE PhilM want to go into a private room and hack this one out. A2GS Why Parik? the interrupts are never being produced? AFA Parik (phil would help you better :-) Dave Lyons (*I'm* done...dunno about everybody else) AE PhilM Done AFL Dyfet Okay, any other comments? AFA Parik done AFA Gary J Q = ASSEMBLER13, PsychoPunk, MAILMAN60 AFL Dyfet I believe we then turn to our next question, From Assembler. GA Assembler. Nuzz ? A2GS done, thanks.. ASEMBLER13 Could somebody write a program which splits the screen in half so 1 program ASEMBLER13 could be on top and another on the bottom????? Dave Lyons ! JSchober ! AFL Dyfet GA Dave Dave Lyons Only if the programs are polite enough to follow whatever rules you Dave Lyons laid down for them. Many programs store directly to the screen memory, AFA Gary J Q = ASSEMBLER13 (Dave, Joe), PsychoPunk, MAILMAN60, Nuzz Dave Lyons and the hardware just displays whatever is there. I read something Dave Lyons interesting that came with Byte this month about a Dave Lyons patented method of dealing with this sort of thing on a competing brand of Dave Lyons blueish computers, and I don't know how well it would apply here. Apparently Dave Lyons the idea is to *notice* that an application stored a character Dave Lyons directly to the screen, and take it off & hide it somewhere before Dave Lyons the hardware actually manages to display it on the screen. I don't see how to Coach101 ! Dave Lyons apply this to the Apple II. (ga) AFL Dyfet Okay, GA Joe. JSchober There's a program out for the enhanced //e and //c with mouse card (doesn't JSchober seem to work on the GS) called SHARE, that does loosely what you ask -- let's JSchober you run 2 binary files under P8 simultaneously, so long as they don't compete AFA Gary J Q = ASSEMBLER13 (Joe, Coach), PsychoPunk, MAILMAN60, Nuzz JSchober for memory. Although the screen control isn't as you desire, since it's based JSchober on an interrupt scheme of some sort, you could probably patch the code to ... JSchober toggle text screen windows (33..36 or whatever in the Z-page) every time it JSchober switched the PC and whatever else it switches. Just a thought; I've never JSchober tried it. GA... AFL Dyfet Okay, GA Coach. Coach101 Or, in the future as 5.0 catches on and we start to see Text AFA Parik 641236984 Coach101 applications that use the Console driver, you could capture the JSchober (same to you, Parik) AFA Parik (sorry) Coach101 console driver calls (with a custom driver maybe) and then map the Matt DTS ! Coach101 programs calls into a "virtual" screen with some sort of scrolling. Coach101 Could be real cute. Of course you still have to consider the basic AFA Gary J Q = ASSEMBLER13 (Coach, Matt), PsychoPunk, MAILMAN60, Nuzz Coach101 horsepower of the II-GS in a "multi-taksing" environment. GA AFL Dyfet I see Matt wishes to add something. GA Matt. Matt DTS Actually, 5.0 provides limited capabilities for standard input, output and Matt DTS error using the Console Driver, as well as adding console driver traps for Matt DTS better control of such things. GA. AFL Dyfet Hmm. Sounds interesting. Any other comments? AFL Dyfet Will this mean the end of shells that patch the GS/OS service vector for I/O AFL Dyfet handling, Matt? AFL Dyfet (redirection=handling) HMT ! AFL Dyfet GA HMT. Matt DTS If you mean the $E100A8 vectors, perhaps. *Most* applications will not need HMT still here Matt DTS to patch that any longer, but there will be exceptions. Matt DTS (Things like APW which use $01xx calls to that vector, for example.) GA AFL Dyfet It seems the need for some of the $01xx functions will be eliminated in 5.0. AFL Dyfet In any case, GA HMT. Matt DTS That won't stop the old shell from making the calls. (GA) HMT Just Watchibg trying to see what I can lern! MarcSSSi ! AFL Dyfet Okay. Well, that's one of the reasons we're here :). Ga Marc. AFA Gary J Q = ASSEMBLER13 (MarcSSSi), PsychoPunk, MAILMAN60, Nuzz MarcSSSi The existing APW/Orca shell calls exceed simple redirection query so it seems MarcSSSi obvious that continued support into 5.0 and beyond is required for compatabilit MarcSSSi y! Matt DTS ! (I think I'm gonna have to explain this...) MarcSSSi ga AFL Dyfet I didn't mean to sidetrack into this issue, but since we have, GA Matt. Matt DTS (neither did I) What it is, is this: Matt DTS Before launching a program ($B3/$B5), GS/OS sets prefixes 10: 11: and 12: AFA Gary J Q = ASSEMBLER13 (Matt), PsychoPunk, MAILMAN60, Nuzz Matt DTS to .CONSOLE (requiring this device exists and is the Console Driver). A Matt DTS controlling program can set those prefixes to different devices or files and Matt DTS control redirection that way (for example, setting 11: for output to something Matt DTS like ":MYDISK:SPOOL.FILE".) 10 is input, 11 is output, 12 is error. Matt DTS This gets a lot more complicated when you get into the subtle issues of it, Matt DTS but that's the gist of it. It's not overly complicated, but it will work, Matt DTS since programs written for 5.0 can simply "open 10:" for input, "open 11:" for Matt DTS standard output (and 12 for error). This is really easy from higher-level Matt DTS languages. GA. AFL Dyfet Hmm...I see a few subtle problems with that in unusual situations as apposed to AFL Dyfet the more standard use of passing stdin/stdout/stderr handles, but I will bring AFL Dyfet this up with you in mail sometime. Now, I believe the next question is from AFL Dyfet Psychopunk. GA Psychopunk. ASEMBLER13 OK Thanks Alot :-) PsychoPunk I've got problems making programs to be used in auxilary memory. PsychoPunk I load it in normal memory, and move it to aux, but it crashes. PsychoPunk The program works fine in norm but is really screwed up in aux. Matt DTS ! (since Dave's not responding) AFL Dyfet GA Matt. PsychoPunk Also, if it does happen to work, the final rts will crash. Matt DTS How does it crash, exactly? Any more details at this point would "hep". Matt DTS "Final RTS" = this program ends with an RTS? PsychoPunk something like 6000- X=65 A=64 Y=53 etc... PsychoPunk Yes. Dave Lyons ! Matt DTS Which is supposed to return you to BASIC, I suppose? (getting warm?) AFA Gary J Q = PsychoPunk (Matt, Dave), MAILMAN60, Nuzz Dave Lyons Do the locations $0100 and $0101 mean anything to you, PP? (If not, somebody's going PsychoPunk I supposed if it was executed from monitor, it would return to monitor? Dave Lyons to have to explain them.) Matt DTS Ah. Diagnosis complete. Dr. Lyons will now issue a prescription. PsychoPunk I think they're used to check if under aux or norm? PsychoPunk (Am I close?) Dave Lyons Me? Ack. Well, the general idea is that you keep the stack pointer for the Dave Lyons non-active memory bank in one of those locations, but I don't Dave Lyons have the details right in front of me. Are you twiddling the $C0xx switches Dave Lyons directly, or are you using the AUXMOVE and XFER entries into the $C3xx space? (I Dave Lyons think those take care of the stack switching automatically.) Dave Lyons BTW, you definitely need to switch back to main memory somehow or other Dave Lyons before you can return to the monitor or whoever executed you. Coach101 ! Dave Lyons (I suppose I should be more careful: you need to return the environment to how it was Dave Lyons before you return, especially the stack.) Dave Lyons (done for now) AFL Dyfet Feel free to jump in here at this point, Coach. PsychoPunk Okay. Also, what happens if one tried to issue prodos cmds from aux? Coach101 The II-E and II-C technical reference manuals (one or both) Matt DTS Horribly, nasty things that we don't want to talk about. Dave Lyons Ack! Very bad, I think. Coach101 contain a pretty detailed explanation of how to make use of Coach101 the aux mem bank for either data or program. All of what Dave Matt DTS (some will tell you MLI calls from aux work in certain instances, but I Coach101 was saying is explained in those books (in excruciating detail). Coach101 ga Matt DTS wouldn't bet other people's disks on that.) AFL Dyfet The best way to call the MLI from aux memory is to setup an interface routine AFL Dyfet that switches back to standard memory before calling the real MLI and then AFL Dyfet sets auxmem active again for the return. Matt DTS In other words, the actual call to the MLI is in main memory. AE PhilM ! PsychoPunk Hmmm. Helpful! Well, I'm done. AFL Dyfet GA Phil. AE PhilM Dyfet, that is a good idea for some calls but it gets a little complicated AE PhilM when you are passing pointers to data areas that you want to pass or return AE PhilM stuff too. AE PhilM Then you need to copy all that stuff over manually...get's real messy. PsychoPunk done AE PhilM done AFL Dyfet You can solve that with a little more smarts in the interface routine, to AFL Dyfet recognize and automatically move data around for read/write calls, etc. I AFL Dyfet never said it would be easy :). PsychoPunk (looks hard!) AE PhilM A lot more smarts :)) AFL Dyfet Well, any other comments? PsychoPunk done AFL Dyfet Okay, Mailman left before his question was called. I believe the next AFL Dyfet question is from Nuzz. GA Nuzz. HMT Nuzz I want to set the rPage and rPaper fields on the Gs print mgr. I tried using Nuzz iVres * inches I want for rPage, and adding a few to rPaper, but I get a Matt DTS ! AFA Gary J Q = Nuzz Nuzz scrunched up picture when I copy in my bit map Nuzz any suggestions.GA AFL Dyfet GA Matt. Matt DTS Didn't we send you an answer to this? Nuzz Not as of yet Matt DTS Ack! Send another one in for tomorrow asking for your answer. Matt DTS Be indignant and insulting so we feel at home. Matt DTS GA. JSchober :) Nuzz I could never be that. You all helped too much AE PhilM LOL AFL Dyfet Okay, do we have any other questions for tonight? AE PhilM ? HMT ? Nuzz I'll ask for an answer in the morning. Thanks GA AFL Dyfet GA Phil AE PhilM Can we talk a little about the data structures used to maintain the cache block AE PhilM s in the cache manager? Matt DTS No. Those are OS internal structures, subject to change at strange times. AE PhilM It looks like it is a linked list and is giving me preformance degradation on AE PhilM my Vulcan native mode driver. Matt DTS Drivers should only access the cache through the system service calls. Dave Lyons So decrease the cache size. :-) Matt DTS Your driver has the ultimate authority on caching. If caching is slower than AE PhilM I do! And they are slow. Matt DTS not caching, then refuse the request to cache the blocks. AE PhilM On the 100Meg Vulcan, the cache manager slows me down...I guess it's best not AE PhilM to use it. Matt DTS The FSTs will not cache the blocks after you return them - they ask you to Matt DTS do it instead. AE PhilM Should have used a hashing technique...oh well a recommendation then. Coach101 ! AFL Dyfet GA Coach. AFA Gary J Q = Phil (Matt, Coach), HMT AE PhilM I know, Matt....but CacheFindBlock it terribly inefficient...you really should Matt DTS (I'm not getting into the internal structures - I'm just saying that if you AE PhilM take a look at it for next rev. Coach101 Just wanted to second AE's recommendation. Cache is a performance Matt DTS don't wanna cache, you don't have to) Coach101 option, and I think if it has a sluggishness problem it should Coach101 be addressed in future releases and not pushed back on the AE PhilM Yes, and not a very good implementation at that! The cache manager should be AE PhilM optimized for preformance!!! Coach101 device driver/manufacturer. GA AE PhilM done AFL Dyfet Anything more? AFL Dyfet Okay, I believe the next question is from HMT. GA HMT. HMT OK since uzz opened the printer can of worms, I have a ? about Imagewriter II HMT when it get to the end of the carriage it gives a carriage return but not a lin HMT feed has anything ewver been done about this?. HMT GA AFL Dyfet Hi Jim. Anyone wish to comment on this? Matt DTS Do you have the switches set to tell it put a line feed after a CR? Dave Lyons ! Dave Lyons There is a code you can send to the serial port firmware that tells it Coach101 Switch Sw1-8... HMT I have a question into Apple ab out this via APL, PE but haven't heard Dave Lyons to insert linefeeds. I think it's Ctrl-I LE...it's in the Firmware Reference for the GS. Matt DTS Or you can set your control panel to do that on a IIgs. Jump Long You can also write your application so it doesn't print past the end of the AFA Gary J Q = HMT (Dave) Jump Long carriage :) JimMensch how bout trying ctrl-i80N ctl-iC JimMensch that works with most apple interfaces (including IIgs and super serial card) HMT Sorry I cant agree. This is only used when thewre isn,t a program around HMT guiding the printer Matt DTS HMT: The printer or the interface is configured incorrectly. Jump Long type "PR#1", then type the keystrokes. The IWII will stay in that mode until HMT I GUESS I'M NOT EXPRESSING MYSELF VERY WQELL Jump Long you reset it. Matt DTS You're either going to have to change some dip-switch settings or change the Matt DTS Control Panel settings. HMT ok TNKS Jump Long or make a small BASIC program out of it to set up your printer whenever you Matt DTS There should be two "packages" of eight little switches each. Jump Long want to print some program listings. Matt DTS Take the left-most group of eight switches and look at the right-most switch Matt DTS within that group. Flip it the other way and try printing again. AFL Dyfet I've had a GS with an ImageWriter II for several years, and have not had any AFL Dyfet problem printing with it when configured correctly, so I know it does work :). AFL Dyfet I guess we have reached the end of this chat. Protocol disengaged :)