Skip to main content

Open Apple 1986 07 July 1986 Vol 2 No 6

  • PublicationApple Periodicals
  • Date1986-07-01
  • Pages8
  • SourceOpen_Apple_1986-07_July_1986_Vol_2_No_6.pdf
← Magazines Open Apple 1986 07 July 1986 Vol 2 No 6
/ 8
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
Open-Apple Releasing the power to everyone. July 1986 Vol. 2, No.6 ISSN 0885-4017 newstand price: $2.00 Photocopy charge per page: $0.15 Shift away from superstition It's easy to get as superstitious as a baseball player around computers. You may notice, for example, that disks boot better ifyou scratch your nose with the tip of your elbow before typing PR#6. Some of these superstitions may have an electrical basis, but here’s one that doesn’t—1 read in a user group letter this month that AppleWorks printer setup strings seem to work better if you enter them by holding the shift key down rather than by using CAPS LOCK. Let's stamp this out before it gets serious. On an Apple Il there is absolutely no difference between a character entered using the shift key and the same character entered using CAPS LOCK. From inside the machine you can't tell the two apart even ifyou want to. (It IS important, however, to enter most printer setup strings using capital, rather than lower case, letters.) ProDOS directory sorters have become popular in the general computer press. Byte published one in its June issue (page 117) that contains the same old bug most ProDOS directory sorters have. Don’tuse it. For more information see the March 1986 Open-Apple, page 2.10. Then tell us why a magazine like Byte, which almost never mentions the Apple II to begin with, is writing about ProDOS directory sorters when there are so many more important Apple II technical loose ends to tie up. Computes July sorter (page 96) doesn't have the usual bug, but only because it doesn’t save the sorted directory back on the disk. It just prints it out to your choice of screen or printer. This and game reviews were Computes total contribution to the Apple II literature in July. Apple's AppleWorks marketers are looking for interesting stories about how real people use AppleWorks. Since Open-Apple's readers are by and large real, they asked me to ask you to bang out a couple of paragraphs on how you use AppleWorks and send them to Daniel Paul, Mail Stop 3-P, Apple Computer Inc, 20525 Mariani Ave, Cupertino, CA 95014 by July 15. Uncle DOS recently received a letter headlined TOP SECRET and signed by a character named Sore Throat. The letter divulged that Apple's Software Licensing department has a package available called the Apple I! Filecard Tool Kit Licensing department documents newly obtained by Open-Appledescribe the package as “four software modules for the ‘filecard’ (AppleWorks) interface. The ‘User Input Routine’ object module implements recommended Apple keyboard input for Pascal, Applesoft, and assembly language programs. The ‘Console Driver’ object module offers fast, efficient 80- column text output and screen control for Pascal, Applesoft, and assembly language programs. A Pascal object ‘Console Stuff’ unit offers text formatting aids, as well as utilities for overlaying message boxes and Help screens. A Pascal source ‘Filecard’ unit provides utilities for implementing the filecard interface. Demo source files are also included.’ I can find no evidence that Apple has ever mentioned the existence of this tool kit in any of its developer publications. I wish someone would explain to me why Apple seems so dedicated to trashing the filecard interface in favor of the mouse desktop, which is more complicated for both users and programmers. There are more copies of AppleWorks being used today than there are copies of the Macintosh itself. The filecard interface is intuitive, understood by people all over the world (even computer salespeople), and requires only two hands. Nonetheless, during the last two years I have never seen or heard Apple encourage anyone to use it, with one exception. The mouse desktop, on the other hand, is shrilly promoted wherever Apple gathers developers. The one exception is in Apple II Human Interface Guidelines. This manual includes a 14-page chapter on the filecard interface. The more complicated mouse interface requires a 55-page chapter. Apple's Software Licensing department collects fees from people who use Apple-created software in their own software packages. In exchange for Paying the fees you get the right to include Apple's software in an unlimited number of copies of your own package. You also get free updates to the licensed software. With some items you get a copy of the licensed software, technical documentation not available elsewhere, or both. To get in touch with these people, call 408-973-4667 or write Software Licensing, Mail Stop 28-B, Apple Computer Inc, 10101 N DeAnza Blvd, Cupertino, CA 95014. Here is a complete list of the Apple II products currently available for licensing, Items marked with “*” will be provided ("*R” means provided by request only), items marked “U" are unsupported: 005 3.3 $50 RU FIO 350 RU FPBASIC/INTBASIC $25 OR OU 00S TOOL KIT $50 u ProOS/Basic.systen/ FILERICONVERT $50 Basic.systen source code 3100 * ProdOS disk formatter 350 * ProdOS USERS DISK 350 u (German) eu (French) eu (Italian) rou ProDOS BACKUP II 335 u Filecard Tool Kit 350 Desktop Tool Kit sso Printer Tool Kit $50 * 6502 Std Apple Numerics (SANE) $50 * “WE'RE VERY PROUD TO OFFER SOFTWARE INCORPORATING THE LATEST ADVANCE IN 2.42 Open-Apple SuperPilot $50 U SuperPilot Library $25 * U Pascal operating system 3100 ProDOS access unit $50 Volume manager unit 350+ Pascal formatter 1.3 325 Pascal filer 1.3 $50 Attach tools 1.3 30 Pascal short graphics unit $25 Pascal 1.2 48K runtime pkg $50 Pascal 1.3 64K or 126K runtine $50 * Pascal 1.3 treesearch, idsearch $50 * If you're wondering whether you have to be a “third-party developer” to license these packages, you'll be glad to hear that Apple seems to define “developer” as someone who has licensed something from them. If you'd like a copy of the Filecard Tool Kit, for example, call and ask for copies of Apple's Software License Agreement. Be prepared to provide a business name—these folks know me as Tom Weishaar Productions, for example. They/Il send you some long legal forms and “Exhibit B,’ which isa list of the packages available for licensing, Sign the forms, send them back with a check, and they'll send you disks and documentation. The most interesting stuffis the three tool kits, the SANE package, and the Pascal collection. I'm not sure what's in the Filecard Tool Kit at the moment; when | ordered it together with the Desktop Tool Kit I got the Printer Tool Kit instead. (A quick phone call and the right package is on the way.) Meanwhile, I can tell you the Desktop Tool Kit consists of eight disks —four assembly language/Applesoft and four Pascal. Two of each set of four disks includes routines for doing the mouse desktop on the 80-column text screen, the other two have routines for doing the mouse desktop on the double-high resolution graphics screen. In addition to the eight disks, you get photocopied versions of the following manuals: Apple I] Human Interface Guidelines, Developer's Handbook for the Apple II MouseText Tool Kit, Mouse Graphics Tool Kit: External Reference Specification, and Apple II Graphics Primitives Handbook. This is an immense amount of material for $50, especially from the tightwads at Apple. The Printer Tool Kit consists of two ProDOS disks that are filled with assembly-language color-and-monochrome-graphics printer-drivers for the Apple Scribe, Imagewriter, and Imagewriter II printers. It includes a photocopied manual called the Developer's Handbook for the Apple II Printer Tool Kit. The drivers support control of picture size and aspect ratio; RGB 8- and 16-color, NTSC 8- and 16-color, and high-resolution and double- high-resolution monochrome graphics; screen pre-view and cropping; and Page positioning and rotation. The SANE (Standard Apple Numerics Environment) package consists of three disks—one ProDOS and two Pascal—full of assembly language routines and a printed copy of the Apple Numerics Manual. SANE is one of the first widely-available products that conforms to a binary floating-point arithmetic standard called IEEE 754. It provides for four types of variables with 7, 15, 18, and 19 significant decimal digits. (Applesoft provides nine significant digits, Apple Pascal six.) None of the manuals listed here was included in Open-Apple’s March list of technical documentation available from Apple (page 2.11). More technical support for anyone who wants it (and can afford it) is available from Apple in the form of subscriptions to the Apple [1 Technical Notes. Open-Apple published a list of the current tech notes in March (page 2.11) and updated it last month (page 2.54). Apple is nowselling subscriptions to the notes to anyone who's interested. A complete set of 1985's notes is $45 (all active notes were revised in 1985, so this is the equivalent of a complete set of back issues); a subscription to this year's notes, which are issued every other month, is $25. Subscriptions are available from the Apple Computer Mailing Facility, 467 Saratoga Ave, Suite 621, San Jose, CA 95129 (408-988-6009). Also available, for a mere $75 each, are Inside Apple Talk and Inside LaserWriter. Apple's lawyers were stung by their first big defeat in May, when Australia's High Court ruled that, prior to the amendment of the Australian Copyright Act in 1984, software in ROM was not eligible for copyright under Australian law. The court, which is the highest in Australia, overturned a decision of the full Federal Court, which had upheld Apple’s claim of copyright infringement against Computer Edge Pty Ltd, importer of the Taiwanese-made Wombat Apple II-compatible into Australia. The earlier decision of the full Federal Court, which put Computer Edge out of business, had itself overtumed an original Federal Court decision in Vol. 2, No.6 this long legal battle, which Apple lost in December 1983. That decision led the Australian government to rewrite its Copyright Act in 1984. The new act gives all software, even that written before 1984, full copyright protection. Thus Apple's loss is largely academic in Australia. It could be more significant in other Commonwealth countries, such as Canada and Hong Kong, however, that have not yet rewritten their copyright laws to specifically include software. Cases such as Australia’s can be cited in courts throughout the Commonwealth when the underlying laws are similar. Meanwhile, in other legal action in May, Apple won a lower court copyright decision against Canadian importers of Apple Il-compatibles. In that case the importers conceded that source code can be copyrighted, but argued that ROM was not a suitable material for a literary work. The court decided that the wording of the copyright act was broad enough to include silicon chips. It isn’t yet known what effect this case may have on an ongoing update to Canada’s copyright law. Question: why do all these suits focus on whether software in general is copyrightable rather than on whether the Apple II Monitor in particular was placed in the public domain by Steve Wozniak prior to being copyrighted by Apple Inc? Picking Up Applesoft Exercises in self:modification Back in March Uncle DOS got a question about how to capture a user's formula interactively on the keyboard and enter it into a running program (page 2.16). Uncle didn’t know how, but referred to four articles in Call - A.PPL.E. and inCider that explained how it could be done. In April Open-Apple carried a long article on breaking the 48K memory limit of Applesoft using a RAMdisk (page 2.17-2.21). This article went into Great detail on the structure of Applesoft programs as they appear in memory. Among other things, it showed how to split Applesoft programs to avoid the graphic screens and how to overlay program segments. Then, in June, Open-Apple built upon the April article by showing how to examine the value of all currently defined variables. The program presented in that article, using April's information on the structure of an Applesoft program in memory, modified itself. It introduced a routine that could identify the memory location ofany program line. Once that is accomplished, itis a fairly simple matter to POKE changes into the line. This month, we'll build upon the June article and answer March’s question about getting a user's formula into a program. We'll also show how to hide short assembly language routines inside the body of an Applesoft program. Self-modifying Applesoft. Let me begin by reminding you that data processing professionals abhor self-modifying code. Don’t discuss what you learn here in polite company or during any job interviews. In last month's article, | showed you a program that could make fixed- length changes to itself. For example, we had the line: 37824 : PRINT NS;* = “3XXS Our goal was to change the “XX$" to the actual name of the variable we wanted to print— maybe “OZ%", for example, or "OZ" (with a space after the Z to denote a floating-point variable). This was easy because we always knew ahead of time exactly how many characters were involved. When you start letting people enter command strings on the keyboard, however, you don’t know ahead of time how long the string will be. Somehow, we have to write a program line that can be modified later and that reserves the maximum amount of space we'll ever need. How about this one: 370: REN 3000000000 2K KKK EERE Last time I counted there were 60 asterisks in that line, which gives us a 60- byte command line to work with. If the user enters a 30-byte command, however, we also need a way to tell Applesoft to ignore the extra asterisks at the end of the line. We can do this by adding a colon and a REM to the end of the user's command. For example, ifthe user wants to insert the formula FOR duly 1986 X=0 TO 30; Y=1000 * 108", then line 370, after modification, should look something like this: 370 FOR X= TO 30 : ¥=1000 * 1,08" : REWAXKHExxAHEKxHEEEKREEEKEEEEE Nowall we have to dois find the location of line 370 in memory. Here's the routine we used last month to do this. You call this routine after putting the number of the line you want to find in L. It retums the address of that line in ACL. Line 100 was numbered 37700 last month; | had to move it to the beginning of the program to get everything to work: 100 DEF FN PK(ADR)=PEEK (ADR) +PEEK (ADR#1)*256 37990 REM * Find line nunber L * 37991 REM * ACL=address of current line * 37992 REM * ANL=address of next line ® 37993 REM set ACL to start of program (TXTTAB) 37994 ACL=FN PK2(103) : REM address of current line 37995 ANL=FN PK2(ACL) : REM address of next Line 37996 REM Find Line number L. 37997 IF L=FN PK2{(ACL+2) THEN RETURN 37998 V=FN PK2(ANL) : IF V>@ THEN ACL=ANL : ANL=V 37999 PRINT “There’s no Line “;L3” in this program. GoTo 37997 : STOP Unfortunately, simply collecting a command string with an INPUT statement and POKEing it into line 370 doesn’t work. The reason it doesn’t work is that Applesoft expects command words such as PRINT and IF to appear as tokens, as discussed in April (page 2.18). When I found this out, I read the four articles Uncle DOS recommended in March to see how those authors had solved the token problem. The most helpful article, as is often the case, was the one by Comelius Bongers. Bongers identifies the routine inside Applesoft that converts program lines typed on the keyboard into tokens. After reading the four articles, I decided the best way to proceed was to use a smidgen of assembly language. The Applesoft tokenization routine is at $D56C. Under normal conditions, it converts the ASCII contents of the keyboard input buffer ($200-2FF) into a tokenized program line. The converted line is never longer than the original, so the converted line is stored right over the top of the original in the buffer. The routine expects the address of the keyboard buffer to be stored at byte $B8-$B9 (184-185) and requires a couple of other bytes to be initialized. The following routine, which we'll call PARSE, saves and restores the contents of $B8-$B9, does the other required initialization, and executes $D56C: 84: AS 8B —LOA $BB ec: 48 PHA save bee-eight and -nine on stack 87: ASB9 LOA $89 ees: 48 PHA EA: A201 LOX H1_—— avoid having a zero in the program eEc: cA DEX make @ zero BED: 8688 © STX $88 store at bee-eight eer: CA DEX make it SFF for PARSE ere: A002 = LOY W2 6F2: 8469 —STY $85 $88 now paints at keyboard buffer at $0200 ea: 8413 STY $13 initialize data flag ers: 9004 = LOY Ha initialize ¥ eFe: 20 6C DS JSR SDSEC execute PARSE ere: 68 PLA 6FC: 8589 STA $89. rrestore adr at bee-eight to previous value ere: 68 PLA oFF: 8588 STA SBB 901: 60 Rts Assume we have this routine in memory and have told the variable PARSE its address. We can now have the user enter a desired formula using INPUT and convert it to tokens like this: 300 L=370 : GOSUB 37990 : AOR-ACL+4 : REN find line that will be modified 310 INPUT “ENTER APPLESOFT CMD: “; COS 320 CALL PARSE ADR points to the colon in line 370. The colon is four bytes beyond the beginning of the program line (two bytes for the next-line pointer, two bytes for the line number), thus the ADR=ACL+4 in line 300. Now let's move the tokenized line from the keyboard input buffer into line 370: 325 ROOM=60 : REM this is the number of asterisks in line 370 330 FOR I= TO ROOM-1 335: EEK(S12+1) = I1=1 340 : IF V=@ THEN I=ROOM : GOTO 350 345 : POKE ADR+I,V 350 NEXT Open-Apple 2.43 PARSE will leave a zero at the end of the tokenized line. Line 340 looks for this zero and gets us out of the loop when it finds it If a user enters a command that takes up more than 60 bytes, we need to print an error message: 355 IF VX >0 THEN PRINT “FORMULA TOD LONG” : PRINT : GOTO 310 And don't forget that we always need to add “REM” at the end of the user's command: 360 POKE ADR+I1,S8 : POKE ADR+I1+1,178 : REM “:REN” A hidden beauty of this trick is that the user can include commas and colons in the formula, even though INPUT won'taccept them and will printan EXTRA IGNORED message. The reason for this is that everything the user types goes into the keyboard buffer, whether Applesoft ignores it or not. Notice that we never actually do anything with the CMDS that we collect with INPUT in line 310. Instead, we let PARSE work directly on the contents of the keyboard buffer. What if the user types a commandline that has a SYNTAX ERROR? Let's trap it and let the user re-enter the line: 365 ONERR GOTO 400 : REM syntax error trap 370: RENE N0E NE 360 POKE 216,0 : PRINT : GOTO 31@ : REM clear onerr, restart 400 IF PEEK(222) < > 16 THEN PRINT “ERROR H”;PEEK(222); “IN LINE “;PEEK(218) + PEEK(219)*256 : ENO 410 PRINT “THIS CHO HAS A SYNTAX ERROR.” 420 CALL -3288 : GOTO 380 : REM clear stack--see Jan 85, page 2 Line 380 sends us back to line 310 for another command. Let's use CMD$ after all to give the user the option to quit by entering an empty line. And when the user quits, let's have our little demo program list the formula we've placed in line 370, as well as some other stuff we're going to put in line 230: 31S IF LEN(CHDS)=0 THEN LIST 230: LIST 370 : END Embedding machine code in Applesoft REMs. To finish our little program, we have to figure out some way to get our PARSE routine into memory. In the past, Open-Apple has always tucked such routines into the free memory in page three. Because this area is used for so many different purposes, however, you virtually have to reload code there every time you want to use it You can’t depend on a piece of code still being there from the last time you used it. This is no good. One way around the problem is to actually store your machine language code in REM statements. If you do this, you definitely don‘twant Applesoft to attempt to execute the program line, so leave a REM at the beginning to make Applesoft ignore it. Use exactly as many asterisks as there are bytes in your assembly language routine: 20 L=230 : GOSUB 37990 : PARSE-ACL+6 : REM find line that will be modified 230. :REMAKKKRKE ER CEK KERR KEE This time we want line 200 to point at the first asterisk in line 230, rather than at the colon as we did with line 370. Thus the PARSE=ACL+6 in line 200. The colon and REM are already tokenized and thus fill one byte each. There are a number of techniques for inserting assembly language code into memory from Applesoft, such as READ-DATA loops and so on. Here we'll use my favorite, the Lam technique, which has been discussed in Open- Apple a number of times (pages 12, 23, 77, 2.16). One problem, however, is that we don’t know ahead of time the exact address where the routine is to be placed. Normally with the Lam routine, youwould putan RTS at $300, for example, with the Monitor command string “300:60". Rather than messing around converting Applesoft's decimal number to hexadecimal and inserting it at the beginning of the command string, let's POKE the address in bytes $40 and $41 (64-65), which is where the Monitor stores the “next changeable location.’ Then, rather than beginning the command string with an address, we simply start with a colon, like this: 210 POKE 65,PARSE/256 : POKE 64,PARSE-(PEEK(65)*256) 220 C$=":AS BB 48 AS B9 48 A201 CA BG BB CA AQ G2 B4 B93 6413 AQ 4 20 GC DS 6B BS B9 68 85 BB GO” : GOSUB 500 The rest of the Lam technique can be found in the listing at the end of this article at lines 500 through 530, There are two tricks to writing assembly language routines that are to be stored inside Applesoft programs. First, of course, the routine must be relocatable. It can’t refer to any locations within itself except with relative 2.44 Open-Apple i his The system works I took a copy of your answer to my April letter (page 2.23) to the technician at the local Computerland. The letter was about the trouble I've been having getting disks to boot since buying an Apple color monitor. When the technician checked my machine, he discovered that you were right; a shield was missing from my disk drive, and he replaced it. All of the programs that would not boot properly before work well now. As an added bonus, the shield also solved some difficulties | have experienced in making copies of some disks. Thank you for your help. Even though most of the discussion in your pages is way over my head, | will remain a loyal subscriber. Bernice Eaton Northridge, Calif. My subscription is up and six months ago | thought 1 wouldn't renew. Your paper is for the computer sophisticate. Your paper is too far above the layman. Then little by little I started getting a glimmer of what was going on. I've been going over all the back issues, and I'm UNDERSTANDING them. Gee, what next? I can learn what has heretofore seemed esoteric jargon. Thanks. Harry Charles Nederland, Texas Understanding the Apple II requires neither superior intelligence nora chip-like personality. Open-Apple really is dedicated to “releasing the power to eve- ryone.” It does take awhile to absorb enough of the language and of the concepts to get started, but thousands of perfectly normal people have learned enough to make their Apple IIs jump through hoops of fire. Remember—the more you read, the more you understand; the more you understand, the more you understand. Roots What is the nature of the mysterious appendix that appears when you LIST the Integer BasicAPPLEVISION program found on old DOS 3.3 system master disks? Where is the machine code with the dancing man and the little tune? Len Lipschutz Jersey City, NJ. In the Olden Dayes, when | myself was just an Apple II beginner, APPLEVISION was a maddening program. I wanted to write programs like that one, but Apple’s manuals had no clues whatsoever about how to proceed. Now I know enough at least to tell you that you spoiled the fun by answering your own question; the “mysterious appendix” IS the machine code. My understanding is that itis fairly easy in Integer Basic Vol. 2, No.6 to attach machine code routines to the end of programs, although I still don’t know how to do it. Back in the days of cranky cassette tape, attaching the machine code to the program made loading and saving a great deal easier. If you're really curious, the January 1984 issue of Apple User has an article that shows how to capture the hi-res character generator buried in APPLEVISION for your own use. Apple User is published by Database Publications Ltd., Europa House, 68 Chester Road, Hazel Grove, Stockport, SK7 5NY, U.K. (061- 480-0171). Annual subscription rates are 15 pounds in the U.K,, 23 pounds in Europe, and 38 pounds elsewhere (airmail). Double page 2 Oh yes there IS page 2 double-high res! When 80STORE is on, the PAGE2 softswitch flips between main and auxiliary memory justas you demonstrated last month (page 2.40). However, when 80STORE is off (POKE 49152,0), the PAGE2 switch flips between double-high res pages 1 and 2. I got this from Roland ustafasson, who's motto is "Don’t believe everything you see in the manuals.” David Eisler Littleton, Colo. Well, to quote what J said last month, “there is no more obscure arena in the Apple II world than double-resolution.” My apologies to the author of Apple’s RGB manual, who got it right after all. MacroWorks’ mouse Ive been using MacroWorks for several weeks. My IIc mouse works fine when I am in the MacroWorks program; however, it does nothing when I am in AppleWorks. The MacroWorks manual says nothing branch instructions. Second, things work best if you avoid having any zero bytes embedded within the code. For example, LDA #0 becomes AQ 00 in actual machine code. Ifyou embed this in a REM statement and then edit the program, the Applesoft editing genie will see that zero, assume it marks the end ofa program line, change some next-line pointers around, and create the conditions for a certain SYNTAX ERROR the next time the program is run. Notice the trick used in the fifth and sixth lines of our PARSE routine to avoid a zero. If you can't avoid zero, all is not lost. The limitation is that you must take great care to edit your program only when there are asterisks in the REM statement. Don’t attempt to edit or save the program after RUNning it. If you can avoid zeros, on the other hand, you can actually SAVE the program with the assembly code embedded in the REM statement. Before saving you can delete lines such as 210, 220 and 500 through 530. You can leave them out of your program from that point on. Note that you will will still need a line like 200, however, to figure out where the routine has ended up. Here's a complete listing of this month's tricks: SELF .MODS DEMO + by Ton Weishaar July 1986 public dosain program 100 DEF FN PK(ADR)=PEEK(ADR)+PEEK(ADR+1) #256 200 L=230 : GOSUB 37990 : PARSE=ACL+6 : REM Find line that will be modified 210 POKE 65,PARSE/256 : POKE 64,PARSE-(PEEK(65)*256) 220 C$=":AS BB 48 AS 89 48 AZ 01 CA 86 BBCA AO 02 a4 89 8413 AC 04 20 GC 05 G8 a5 69 68 85 BB GO” : GOSUB S00 230. :REMAXXKE REE ExxxxK HAH xxKKKEEEEEEEE 320 CALL PARSE 325 ROON=60 330 FOR I=@ TO ROOM-1 EK(S12+1) +: POKE ADR+I,V 350 NEXT 360 POKE ADR+I1, 5! 365 ONERR GOTO 400 380 POKE 216,0 : 300 L=370 : GOSUB 37990 : ADR-ACL+4 : 310 INPUT “ENTER APFLESOFT CHO: 315 IF LEN(CHDS)=0 THEN LIST 230: LIST 370 : END : IF V=@ THEN T=ROOM : 355 IF VC >@ THEN PRINT “FORMULA TOO LONG’ OKE ADR+I1+1,178 : REI EN syntax error trap 2370: REH 052K XK PRINT : GOTO 310 : REM clear onerr, restart REM Find line that will be modified cros GoTo 350 : GOTO 310 400 IF PEEK(222) <> 16 THEN PRINT “ERROR H”;PEEK(222); * IN LINE “;PEEK(218) + PEEK(219)#256 : END 410 PRINT “THIS CMD HAS A SYNTAX ERROR.” 420 CALL -3288 : GOTO 380 500 CS=Cs + * N DSCEG™ : 510 FOR I=1 TO LEN(CS) : REM see Jan 85, page 2 REM space required before and after N S12 : POKE L141, ASC(MIDS(CS,1,1))+126 514 NEXT 520 POKE 72,4 : CALL -144 530 RETURN 37990 REN * Find line number L * 37991 REN * ACL=address of current Line x 37992 REN * ANL=address of next Line x 37993 REN set ACL to start of program (TXTTAB) 37994 ACL=FN PK2(103) : REN address of current Line 37995 ANL=FN PK2(ACL] : REN address of next line 37996 REM Find line number L 37997 IF L=FN PK2(ACL+2) THEN RETURN 37998 V=FN PK2(ANL) : IF VO THEN ACL=ANL : 37999 PRINT “There’s no line “; ANL=V : GOTO 37997 in this program.” : STOP July 1986 about the mouse support you described (June issue, page 2.33). How do I get it to work? Robert C. Moore Laurel, Md. Beagle Bros has a free upgrade for you. Send them the proof of purchase tab from the back cover of your manual and they'll send you a new disk and documentation. Randy Brandt, MacroWorks author, tells me the most creative use of macros he’s heard of so far was froma user who wrote macros to change his custom printer settings. These macros allowed him to work around the AppleWorks limit of a single custom printer. The macros take 18 seconds to completely redefine the custom printer. SuperCalc 3a defended I'm curious to know the reasons behind your personal vendetta with SuperCalc 3a. You've panned the program twice now (January 86, page 98; May 1986, page 2.28), Ican't believe we're talking about the same program. SuperCalc 3a uses slash commands familiar to every user of VisiCalc or its clones. It includes all the numeric functions AppleWorks left out, on-line context- sensitive help screens, a superb graphing function, and built-in sideways printing. Plus it's unprotected, automatically recognizes the extra memory on my RamWorks and Apple memory cards, and runs from floppies, UniDisk 3.5, hard disk, or RAMdisk, I suggest you take another look. Marc S, Renner St Paul, Minn. Ithink it's important to realize I'm cynical, grumpy, hot, and tired when | test new products. Consequently, even I don’t consider my opinion the last word on a Product's quality or importance. I appreciate it when those of you who disagree with my impressions say $0. My problems with the SuperCalc interface center on the unusual use of the escape key when “pointing” to cells while building formulas and the way the arrow and retum keys work, Other than having reservations about the interface, however, | agree with you—as I said in May, the program is the most powerful Apple II spreadsheet I've used. I'll take another look at it next time I have some real number crunching to do. LDA (83,Y)??? In the SU2.0BJ letter in your May issue (page 2.32), shouldn't the LDA (83,Y) instructions be LDA (83),Y? Dick Ellicott Baltimore, MD Yes. And that's how they appeared in Ruth's original letter, too, We're now investigating how those closing Parentheses managed to move themselves to where they didn't belong. Whence come these pauses? One of my programs uses three nested FOR-NEXT loops to deal with a sequential text file. The loops cause the disk drive to start and stop several times when transferring data between the disk and memory. In some cases pauses last as long as five seconds. Ast hadnotseen this happen before, I undertook a scientific investigation to determine the cause. Of course I realized that with my first loop 1 to 12, the second loop 1 to 9, and the third loop 1 to 10 that there were alot ofloose strings running around in the system. Isn't it 12 * 9 * 10 (or something like that)? Rather than play around with that complicated program, I wrote a simple one to determine what the break point was for the disk drive to run continuously or to play stop and go. | created a file that consisted only ofa list of numbers from 1 to 5000. I discovered that when X <= 88 the drive ran only once, but that when X=89 the drive would run, stop, then run again. Beginning at X=156 the drive would stop twice. At X=220 the drive stopped three times. The first incremental stop happened at 88, the second incre- mental stop 67 numbers later, and the third incre- mental stop 64 numbers after that. At this point it was obvious there was no rhyme or reason to the progression of stoppings, so | gave up. Why is my lazy Ile telling the disk drive to take a rest every now and then while it chews on the data? Is my faultless programming at fault? Barney Woodruff Camp Springs, MD When you PRINT a number to a text file, the text file actually gets one character for each digit in the number, plus a carriage retum at the end. So, for 1 through 9, you print two characters (a digit and a carriage return) per number. For 10 through 99, you print three characters (two digits and a carriage return). There were 88 numbers written before the first drive access occurred. That's 1 through 9 (2 characters each), plus 10 through 88 ( 3 characters each), or a total of 255 characters, Then you printed 89 through 155. This is 11°S (for 89-99) plus 56*4 (for 100-155) — 257 characters. Then you printed 156 through 219. This is 64*4 or 256 characters. When you print characters to a file, DOS takes the characters and stores them in an area called a DOS buffer, which holds the same number of bytes as one storage unit on the disk (256 for DOS 3.3, 512 for ProDOS). Only when the DOS buffer is full does DOS actually turn on the disk drive and store your numbers on your disk. When you are reading from the disk, the opposite occurs. DOS gets a bufferfull of digits from the disk, then feeds them one number at a time to your INPUT statements. The pauses occur because Applesoft can’t process the bufferfull of digits as fast as DOS can fill the buffer. So DOS has to stop and wait while Applesoft works. This usually happens only with text files, because binary and Applesoft files are loaded into memory in mass. You'll find that some Applesoft programs and most assembly language programs can process a buffer full of bytes fast enough to keep the drive from turing off. With Applesoft, this would happen with Programs that use longer strings and require fewer PRINT or INPUT statements to process a whole buffer. The reason the first two numbers you came up with don't match (255 characters versus 257) is that the three characters of 89 (two digits plus the carriage retum) were split between the first two sectors written. After your loop has PRINTed the numbers 1 though 88, 255 bytes of the DOS 3.3 buffer have been filled. The 8 digit of 89 fills the 256th and final byte, so Uncle DOS writes the buffer to the disk. Applesoft then starts filling the now- empty buffer with new data, starting with the 9 digit and the carriage retum remaining from 89. This takes so long that Uncle DOS gets tired of waiting and turns the drive off. Open-Apple . 2.45 The bytes in the final DOS buffer don’t get saved on your disk until you issue a CLOSE command (under ProDOS, a FLUSH command also does this). This is why it is very important to always CLOSE files. Because your pauses occurred where they did, incidentally, we can tell you were using DOS 3.3. If you had been using ProDOS to run this test you would have encountered pauses only half as often, because a ProDOS buffer is twice the size of a DOS 5.3 buffer. The slow DOS 3.3 garbage collector may also be involved in the length of the pauses you experienced with your original program. For possible fixes, see the Open-Apples for January 1985, pages 45; March 1985, pages 17-19; October 1985, page 76; and May 1986, page 2.31:32. Basic.system tricks I knew you were tired of the same old ProDOS boot filename STARTUP, so | wrote this little routine to enable you to change it to any legal ProDOS filename of seven characters or less: 10 DS=CHRS(4) : INPUT “NEW BOOT FILENAME: “; FS 15 IF LEN(FS) > 7 THEN PRINT “TOO LONG” : GOTO 10 20 PRINT D5;“BLOAD BASIC.SYSTEM, TS¥S,A82000" 25 V=PEEK(B192) 30 IF V=169 THEN A=8677 : REM version 1.0 35 IF V=76 THEN A-8198 : REM version 1.1 40 IF =O THEN PRINT “Version unrecognized” : END 50 POKE A, LEN(FS) 55 FOR X=1 TD LEN(FS) 60 : POKE AFX,ASC(MIDS(FS,X,1)) 65 NEXT 70 PRINT D5;“BSAVE BASIC.SYSTEN, TSYS,AS2000" 80 END Apple neglects to mention it in the manuals, but the ,T(ype) parameter can also be used with CAT and CATALOG to limit the display to files of a single type. For example, CAT, TBAS lists only the Applesoft programs found in the active directory. Other file types are not listed. This is helpful when looking for a particular file on a crowded disk. Joseph Kline APO New York CATALOG, Tpublic.domain 1 am working on a descriptive catalog of some public domain software | obtained at the North Carolina Educational Computing Conference. | am wondering if any of your readers have ever compiled or would be interested in such a catalog, | am hoping for some advice about format and detail as well as some input as to possible interest. | find it very frustrating to pick over this software to find the good and throw out the bad and duplicate. Is some moral support or feedback possible? Janice Kay O Donovan Oak Ridge, N.C. The task of writing descriptive catalogs for public domain software has nearly killed many a good person. While there are a few real jewels in the public domain, you have to sift through tons of semi- precious and not-so-precious rocks to find them. It's the sifting that tends to kill people. I myself would find a list of the “best of the public domain” interesting. | think lots of people would. Here are two descriptive catalogs you might want to look at to see how other people do it. These two list both jewels and mundane stones, but seem to have washed away at least some of the mud, 2.46 Open-Apple Apple Software for Pennies, by Bertram Gader and Manuel V, Nodar, costs $9.95 plus $1 shipping from Wamer Books, PO Box 690, New York, NY 10019. It lists hundreds of public domain programs for the Apple Il in the following categories: games, demon- strations and art, musicand sound, utilities, education, business and home, and communications. It also has a long list of Apple User Groups and complete details on how to order public domain software from about a dozen of these groups. A highlight of the book is an 11-page instruction manual for the public domain EAMON adventure games. The second descriptive catalog of public domain software that I've heard of is available from the Big Red Apple Club, 1105 § 13th, #103, Norfolk, NE 68701 Big Red was started for people who don't have ready access to a local user's group. Dues are $12 a year, for which you get a monthly newsletter that describes new software added to the library. Public domain disks are sold to members for $2.50. Compiling your own public domain catalog should be treated just like a major programming project— begin by dividing the task into small pieces and attack the pieces one at a time. Otherwise the work will swallow you whole and you'll never be heard from again. It's awful to lose subscribers that way. Mouse trace I have recently confirmed that a mouse cannot be used successfully as a tracing device. Let's get the word out on this before others waste energy trying. In my first attempt, | clamped the mouse to a drafting board, glued toothpicks to it, and meticulously traced over a street map of Boston. My primitive tracing device has lately shown up in various forms, including the $50 "M.A.C; Make Another Copy” advertised in various Apple magazines by Innovative Products of Oakbrook, IL. The M.A.C. promises a bonus; the ability to enlarge or shrink the traced artwork via a pantograph mechanism that clamps onto the mouse. Using the M.A.C. requires practice, patience, and a desk the size of pool table. I spent three days creating this trace ofa photograph of you from an old Softalk. Please let me know when the Thunderscan is available for the Apple Il. Brad Walters Boston, Mass. PS. would have returned the M.A.C. within 10 days for my money-back guarantee, but it took me three weeks just to assemble the darn thing, Back when Apple first introduced the mouse I came up with an idea for a program to be called Paperwork (no, not “works”). The core of my idea was that word processors had made the typewriter obsolete in all areas but one—filling out forms. Itis nearly impossible to fill out a form with a word Processor—something that was quite easy to do with a typewriter. | was convinced (and still am) that the world needed a good solution to the filling-out- forms with a computer problem. One of the really odd consequences of the computer revolution is that more formsare filled out by hand now than ten years ago. My plan was to have people identify the upper-left comer of a form and the relative positions of its cells by moving the mouse around the form. A few mouse movements would, in theory, recreate an image of the form on the screenand in the computer's memory. The idea crashed when I found, as you have, that the mouse is totally incompetent as a measuring device. Trecently ran across another solution to the blank form problem on AppleWorks User Group disk #28 (see page 2.33), however. Robert Merrill of Carpinteria, CA created a grid with the AppleWorks word processor that can be printed on a spare copy of the form you want to fill out. The grid shows you the line and column numbers of the cells on the form. Using the line and column information that AppleWorks displays at the bottom of the word processor screen, you can easily move the cursor to a cell's exact page position. Another possibility is to print the grid on a sheet of clear plastic and lay it over the form—this technique works even if you have only one copy of the form. Merrill suggests that you print out your file on a blank sheet of paper to make sure everything is going where you expected before you actually print ‘on your form. Hex calculators Open-Apple readers may be interested in a new Casio calculator (Model CM-100). It features binary, octal, hexadecimal, and decimal conversions, arith- meticand logical shifting, left and right rotation, NOT, AND, OR, EOR, and handles numbers up to 32 bits. I got one for under $20, which I believe is around list price. Michael Gruenthal Durham, N.C. Thanks for this tip. I've been using a hexadecimal calculator for several years—I can’t imagine doing much in assembly language without one. Examining high memory Aprils discussion of RAM cards has renewed my interest in how to use the 16K RAM card in my Apple IFPlus, The card was purchased some time ago and I know that the hardware is okay because Integer Basic loads and runs, and programs such as VisiCalc find and use the extra memory. Thanks to your discussion, | now understand why Applesoft will never use the additional space, but I don't understand why I can’t seem to get at this memory with the Monitor. When I try to set a value at any address in the upper 16K space, then listit back, | find that I have accomplished nothing, J also have your ProntoDOS and have tried using the subroutine at $BEAF to turn the card on after running DOS-UP. The result is that the card still won't accept inputs. lassume that | am not tuning the card on properly. Can you tell me how to tum the card on from DOS 3.3? I would like to store binary data and also small assembly language programs there. Ifthese assembly language programs cannot be called directly from Applesoft, they should be able to be linked by a routine within the 48K range which would, in turn, call the program on the language card. Any help or hints you can provide would be much appreciated. Ferd G. Fender Glenview, Ill. Vol. 2, No.6 Begin by remembering that the Apple can only “see” 64K of memory at any one instant and that your Apple II-Plus had that much before you bought the 16K RAM card. The memory in your 16K card shares the same address range ($D000-$FFFF) as the ROMs that hold Applesoft and the Monitor. Here is a chart of the softswitches used for turning on and off this memory area, which Apple likes to call “bank-switched memory” and old-timers like to call “language-card memory “: Softsuitches for Apple IT language card menory +++$0000 to SOFFF--- BANK 2 BANK 1 Write-protect card read motherboard R scee2 R scoea read card R sce80 R sce88 Write-enable card read motherboard RR SCOBL ——=RR S089 read card RR SCOB3 RR SC08B Status (IIe/IIc only) high bit of sCeLL Asbank 2 Oebank 1 high bit of scoiz leread card @=read nbd ReRead once Reread tice The bank I-bank 2 stuff refers to the fact that the addresses from $D000 to $FFFF are really only big enough for 12K of RAM. To fit ina whole 16K, the area from $D000 to $DFFF is used twice. Bank 2, by tradition, is the primary bank. The bank I-bank 2 setting doesn’t affect what you see in the area from $E000 to $FFFF, neither does it have an effect on what yousee when the motherboard is turned on (ie, the switches at $CO080 and $C088 do the same thing). The R and RR stuff refers to the fact that the switches should be read, not written to, and that urite-enabling the RAM card requires two reads of the respective switch, not just one. The status stuff refers to two bytes you can read to determine the current setting of the “card” on Iles and lics, Your II-Plus doesn’t have these switches. Rather than try to remember all the numbers in the chart, concentrate on the two in the middle of the left column. Peeking at $C081 twice in a row lets you write to the 16K card while reading the motherboard, $C083 is the same but lets you read the card as well as write to it. The difficult part of using the memory on the 16K card is that whenever you turn it on, Applesoft and the Monitor disappear. Consequently, you cannot examine the memory in the 16K card with the Monitor unless you move an extra copy of the Monitor onto the card. This, however, isn’t hard. Loading Integer Basic is one easy way to get a copy of the Monitor in the card. Another is with the following series of Monitor commands: COB1 N COB N Fa0e<FEOO.FFFFM CoB3 N COS The $CO81s fix it so you are reading from the motherboard but writing to the card. The F80(0F800.FFFFM moves a copy of the Monitor from $F800 to $F800, thus giving usa Monitor to use while the RAM card is turned on. Finally, the $CO83s tum the card on completely. Now, to prove to yourself that this worked, poke a bunch of 55s at $£000 and then examine memory to see if they stuck: €000.£007 £000- 00 FF FF FF 00 00 00 00 €000:55 55 55 55 55 55 S5 55 July 1986 £000.£007, Ee0- 55 55 55 55 55 55 SS 55 They did, so this must be RAM. To use this RAM effectively, you must approach it from assembly language. Again, you absolutely cannot get at the card from Applesoft, because when you turn the card on, Applesoft disappears and your program crashes. Your idea of linking the routines on the card to Applesoft by means of other routines in the lower 48K shows you have a basic understanding of this. Assembly language programs will run just fine on the card, but they can’t call Applesoft routines. They can't use Monitor routines, either, unless you move a copy of the Monitor over to the card. The DOS-UP hook at $BEAF does in fact tum on the card (bank 2) for both reading and writing. You can't use this hook from the Monitor, however. Every time you type acharacter, DOS-UP has to tum the language card on twice —once so DOS can examine the char- acter as you type it and once so DOS can examine the character as the Monitor prints it to the screen. Just typing BEAFG and return causes $BEAF to be called (and the card to go on and off) twelve times. The routine at $BEAF will dutifully tum it on a thirteenth time for you, causing the Monitor to disappear. The RTS at the end of $BEAF that should return you to the Monitor sends you scurrying through DOS instead. Usually you'll hit a break before your disk drive goes up in flames, but that isn’t guaranteed. $BEAF is sold as-is; it is useful only from assembly language. PR#3 and ProDOS In plain, easy to read assembly code, how does one Properly activate the 80-column card when using ProDOS on a Ile (i.e., without using a form of PRINT CHRS(4);"PR#3”, but by direct manipulation). William M. Reed New Orleans, La. It all depends. Are you writing an assembly lan- guage program that will be in a binary file and co- exist with Basic.system, or are you writing one that will be in a system file and will manipulate the ProDOS kernel’s machine language interface? It's a critical difference. If you're writing a system program, you have to handle and keep track of all peripheral connections —screen, printer, and so on —yourself. All the ProDOS kemel was designed to help you with is mass storage (disk) devices. In this case, in pure, unadulterated machine language, the answer is to do just a touch more than the obvious: A999 LOA 8899, 20 00 C3 JSR $¢300 get a harmless ASCII chr cold start the card This assumes that you have checked to make sure there's a card to jump to first—use the ProDOS MACHID byte at $BF98; bit 1 (76545210) will be "1" if ProDOS recognized an 80-column card during the boot process. It’s also very important that you put something harmless in the A register before calling $C300—$99 is a control-y, the code for homing the cursor without clearing the screen. Dennis spent a whole afternoon once just figuring out that he was trying to initialize the card with a leftover $15 in the A register. This is control-U, the code for deactivating the 80-column firmware; you definitely can’t tum on 80-columns by printing that character. Now, onthe other hand, if your assembly language program runs under Basic.system, there are two ways to go. One is to simply poke $C300 into VECTOUT (vector out) in the Basic.sytem global page at $BE30 and then print something, like this: A900 = LDA 40 80 30 BE STA VECTOUT poke $8£30,$C300 9963 LOA HSC3 80 31 BE STA VECTOUTHL A999 LOA #899 get a control-¥ 20 £0 FO JSR COUT print it via SFDED The other way to go is to poke the ASCII string PR#3, followed by a return, into the keyboard input buffer at $200, and then call DOSCMD in the Basic.system global page at $BE03. According to Apple's ProDOS Technical Note #2, this trick works for all Basic.system commands except dash, RUN, LOAD, CHAIN, READ, WRITE, APPEND, and EXEC (the main ones you wanted to use, right?). The common technique under DOS 3.3 of printing command strings such as “control-D PR#3” directly from assembly language doesn’t work under Basic.system. If you use the keyboard input buffer-DOSCMD technique, you should check the carry for an error when Basic.system returns to you. If an error has occurred, you can do one of three things. A JSR ERROUT ($BEO9) will send control to your Applesoft ONERR routine. AJSR PRINTERR ($BEQC) will print a suitable error-message on the screen and retum to you. The third possibility is to handle the error yourself completely. In this case, make sure you Clear the carry before RTSing back to Applesoft. Echo overwrites program lam usinga Ile with Extended 80-Column Card and Epson MX-80 printer. The printer is connected through a Dumpling GX in slot L Occasionally, when using conditional branching (mainly IF...THEN), | get an UNDEF‘D STATEMENT ERROR and my program listing is garbled. After trial and error | have found the program will run normally when | change the printer interface card to a Prometheus PRT-L All switches on the Dumpling GX are set as recommended for my printer. Can you suggest a solution so that I can use the Dumpling GX? Gene Watson Sulphur Springs, TX Here's a wild guess. I suspect the Dumpling firmware that echos printer characters on your display screen expects you to use 40-column mode. If you print with the echo in 80-column mode, subtle bugs may cause the echoed characters to miss the Screen and overwrite the beginning of your program instead. There are two solutions. One is to tur off 80- column mode before you try to print. This is Apple's recommended solution to the problem (see “Errata to the Apple II 80-Column Text Card Manual,” page 4). Obviously programs such as AppleWorks and Apple Writer don't follow Apple's advice in this matter, however, so why should you? The other solution is to use the proper control codes to tell the Dumpling not to echo printed characters to the screen. I don’t have the Dumpling control codes handy, but for most cards the command sequence is something like “control-I 80N”. The eighty tells the card how often to add carriage retumns— if your card has a code for “never” (zero on many cards), it’s usually your best choice. For more, Open-Apple 2.47 see our November issue, pages 84 through 86. A final possiblity is that the manufacturer of the Dumpling can provide you with updated ROMs for the card that will solve the problem. Giving the company a call can’t hurt. Hard drives and Apple Writer Do you know how to put Appleltriter Ile on the Sider hard disk system? Louis A. Marinaccio Bel Air, Md. Good old DOS 3.3-based AppleWriter Ile uses a customized version of DOS and is copy-protected. Consequently, it is difficult to use from a Sider or RAMdisk. However, there is a secret provision within Apple Writer Ile that allows it to work with a Corvus hard drive, but only if the hard drive is in slot 6 and the floppy in slot 7 (backwards from most Sider installa- tions). Press "C” while the Apple Writer He disk is booting and a prompt will appear asking if you want to enable the Corvus. Paul Lutus, Apple Writer’s author, revealed this tidbit in a letter to Byte (August 1983, page 32). Lutus seems to like this sort of undocumented feature; a serial interface driver for the game connector was secreted within the original version of Apple Writer. The newer ProDOS version of Apple Writer is unprotected and can simply be copied to a ProDOS volume on any RAM or hard disk. To get it up and running, you must first set the prefix to the subdirec- tory the program is in, then execute AW.SYSTEM. If you are using a RAMdisk that appears to be in slot three, however, Apple Writer will disconnect it. The simpliest way to avoid this is to move the RAMdisk slot assignment somewhere else. If you are using an auxiliary-slot RAMGisk, you'll also need to make sure the RAMdisk driver doesn't try to use the auxiliary 64K memory bank, because Apple Writer also uses it ProntoDOS on the Sider How can | get ProntoDOS onto the Sider? In particular, would like to speed up floppy disk access, get the free sector list at the top of the catalog, and make sure that a disk initialization doesn't leave a copy of DOS or a HELLO program on a floppy. David Holladay Madison, Wisc. There are two primary ways to go about using ProntoDOS and the Sider. One is to actually put ProntoDOS on the Sider’s boot track, so that it comes up when you tum on the system. The other is to leave DOS 3.5 on the boot track, but modify it into ProntoDOS after the system is started. To get ProntoDOS on the Sider's boot track, begin by booting the ProntoDOS disk, then use the program PRONTO UPDATE to make the DOS enhance- ments you want (such as the free-sector and initiali- zation items you mention). You should now have an image of DOS in memory that is the one you want to come up when the Sider boots. Now insert the Sider DOS 3.3 utilities disk and RUN MAKE BOOT TRACK. The manual says the MAKE BOOT TRACK program is to be used when you move the Sider controller card from one slot to another, however, it can also be used to simply place an image of the DOS in memory onto the Sider. Don't be surprised, however, when it asks you which slot you intend to move the controller card to; just answer with the slot number it is already in. 2.48 Open-Apple You can skip MAKE BOOT TRACK if you have not yet initialized your Sider. Insert the Sider installation disk and RUN HELLO (do not boot the disk) after booting and enhancing ProntoDOS. During the initialization process the image of ProntoDOS in memory will be placed on the disk. If you have some DOS 3.3 programs that don’t work with ProntoDOS and would prefer to have virgin DOS 3.3 on the Sider, another alternative is to move the program HELLO PRONTO-DOS from the ProntoDOS disk onto the Sider and run it, after booting the Sider, whenever you want the DOS in memory changed into ProntoDOS. The two disadvantages of this technique are that there's no way to install the enhancements you want and sometimes it doesn't seem to work. The DOS 3.3 image on one version of the Sider installation utilities (distributed between about October 1985 and March 1986) accidentally had three mixed-up bytes in one of the areas HELLO PRONTO-DOS uses to Identify DOS. If your Sider boots with this DOS image, HELLO PRONTO-DOS will tell you it doesn’t recognize the DOS in memory and will refuse to execute, The solution is to use MAKE BOOT TRACK to puta clean copy of DOS 3.3 onto your Sider. Incidentally, ProntoDOS speeds up not only floppy disks, but hard disks and RAMAdisks as well. See February 1985, page 10, for the incredible details. 's written, edited, published, and © Copyright 1986 by Tom hi Business Consultant Richard Barger Technical Consultant Dennis Doms Circulation Manager _ Sally Tally Most nights reserved. All programs published in Open-Apple are public domain and may be copied and distnbuted wihout charge (ros are available nthe MAUG library on CompuServe. Apple user Oups and sgntican! others may obtain permission to repnintaricies rom time to time by spectic writen request, Requests and other editorial material. ncluding letters to Uncle DOS, shouldbe sentto: Open-Apple P.O, Box 7651 Overland Park, Kansas 66207 U.S.A. ISSN 0885-4017 Published monthly since January 1985. World-wide prices (in US. doliars. atmail delivery included at no addivonal Gharge) $243 year S46or2years $60 (or 3yeas. Albackissues are currently available fo $2 each: a bound, indexed edition of Volume 1 is $1495, index mailed wth the February issue. Please send all subscripbon-related correspondence to: Open-Apple Pi Boxes Syracuse, N.Y. 13217 U.S.A. Subscribers Ausala and New Zealandshoudsendsubscpton cotespondence 0 Open Apple. clo Cybernetic Research Li. 576 Main Rea Pavone te AUSTRALA n-Appie'savalable on dik speech synthesizer sets tom sgzeeretaes #0 Soroas Hos Year Pro (0-07 Unlike most commerical software, Open-Apple is sold in an ‘unprotected format for your convenience. You are encourgaged to ‘make back-up archival copies or easy-to-read enlarged copies for your own use without charge. You may also copy Open-Apple for distrbution to others. The dstibution fee is 15 cents per page per Sopy crue WARRANTY AND LIMITATION OF LIABILITY. | warrant that most of the information in Open-Apple is uselu and correct, although drivel and mistakes are included trom time to time, usually unintentionally Unsatisited subscribers may return issues within 180 days of delivery for a ful refund. Please include a note fom your parents or children onirming hat allarchvalcopeshave been desvojed The uiuliled portan of any pad subscapion wil be relunded on request MY LIABILTY FOR ERRORS AND OMISSIONS IS LIMITED TO THIS PUBLICATION'S PURCHASE PRICE. in no case shall | or my Contributors be lable for any incidental or consequential damages, or for any damages in excess ofthe fees paid by a subscriber. Open Apple's nether afiated with nor responsible forthe debts of Apple Compute, Inc. “tngja quesing’ 1S @ wademark of Don ancaster. ‘Source Mail: TCF238 CompuServe: 70120,202 More Sider secrets After several more Sider crashes similar to the disaster discussed in August (page 63) and October 1985 (page 79), | finally have an answer to the “hard disk life” I've been experiencing. After each new crash I would be fenced out of additional areas of the hard disk, losing files each time. I would have to reinitialize the Sider to put things right. The crashes occurred during disk accesses and it appears that my original association of the crash with pushing reset while Apple Writer was printing was just coincidental. Each time | reinitialized the Sider there was no indication ofa problem. The breakthrough came when I began to work with anew 20 meg Sider that | daisy-chained to the firstas /HARD3 and /HARD4. The new utilities package that came with the 20 meg unit included Apple's ProDOS BACKUP program. BACKUP would crash when creating the /HARD1 catalog for the backup disks. After each crash | would have to cold start to regain control of the Apple. The crashes weren't BACKUP’s fault, but resulted from the program attempting to access every file on /HARD1. When BACKUP began to do business with a poisoned section of the disk, the Sider would enter hyperspace and BACKUP would be left hanging, ‘The next time | reinitialized the Sider I got a “non- media error 95” during final verification. This was the first time I had seen this message. The Sider would apparently function normally after reinitialization until a file happened to hit on the track with the problem. Once this track was accessed the whole process of gradual bad-blocking of more and more of the Sider would begin anew. | called the Sider hotline to find out what a “non- media error 95” was. The very-helpful technician | talked with was not sure of the significance of this message, but suggested that it probably indicated a marginal track. He suggested that I use some undoc- umented features of INSTALL PT#4 (on the DOS 3.3 utilities disk) to run a system check. To access these utilities, BRUN INSTALL PT#4, then. hit the R key within one or two seconds. This results in. a menu-driven package of marvelous machinery. I don’t know why they keep these utilities a secret— there are some really useful tools in this program— perhaps because there is plenty of potential to wreak havoc on your disk if these tools are misused. Among other processes, you can run anon-destructive check ofall tracks — apparently this is the same routine that writes dots to the screen as it verifies the disk after initialization. This check gave me a “non-media error 95” again. An option during this check is to reassign one of a couple of dozen spare tracks to replace any marginal track. This option carries the obvious caveat that reassignment may destroy data on the disk. | was able to reassign the offending track, 03313, without a loss of data. Apparently I had not written to this track since last reinitializing the disk. My old Sider has performed flawlessly since the replacement. I suspect that this track had been marginal since | first began touse the disk. It looks as if any time the Sider is not able to complete a disk function because of a flaky track it can lose all sense of responsibility and viciously tear away at previously uncorrupted files—at least that was my experience. Some of the utilities hidden on INSTALL PT#4 include provision for reformatting just the DOS 3.3 portion of the disk without touching areas allotted to Vol. 2, No.6 other operating systems, Also included is a provision for zeroing the catalogs for just the ProDOS portion, leaving the other sections alone. Apple's BACKUP program is great. It works so well that backing up the entire disk is a piece of cake. According the tech | spoke with a new backup utility for the Siders DOS 3.3 section, which will work similarly, will be available soon. Their present DOS 3.3 utility is a loser because it prompts you for each file. You have to stay alert during the entire backup procedure and it’s painfully slow. The ProDOS BACKUP. program does almost everything for you but put the floppies in the drive and it won't let you make a mistake. The new utilities supplied with the Sider seem to place more emphasis on parking the heads before turning the unit off. | asked the tech about this, since they had told me earlier that parking the heads was only important before moving the unit around. His response was that there had been some kind of problem related to the Apple writing to the hard disk when itwasn’t up to speed ifthe heads were positioned over prime real estate on the disk. It seems that parking the heads is more of a precaution against this eventuality than against a head crash. Doyou have any more information on the upgrade for Apple Writer 2.0 you wrote about in January (page 97)? The dealer where | bought my original doesn’t now anything about an upgrade and if there are any improvements I'd sure like to have them even if they aren't significant Donald Beaty San Mateo, Calif. Thanks for all the Sider secrets. As of the end of March, when Dennis last talked a list of available updates out of Apple's district sales office here in KC, “customers having printing problems with Apple Writer 2.0 and third-party interface cards may take the disk to the seller, who will correct the fault through an update utility.” This is what you're looking for, but Apple has never clarified what you are supposed to do when the dealer doesn’t know what he’s supposed to have. Other Apple II updates on the list are: Apple Ile enhancenent $70 from dealer (installed). Self-installation reconnended so you can keep your old chips. AppleWorks 1.3 $20, get mailer fron dealer ProdOS 1.1.1 Free update from dealer SuperPilot Log Free update fron Apple Custoner Relations MS 27-F Pascal Version 1.3 $125 + original APPLE disk (no personal checks) Apple Computer Pascal 1.3 Upgrade P.O. Box 306 Half Moon Bay, CA 94019 Logo 64K Disks that don’t work on IIc because of spiral protection scheme can be replaced through Apple's Media Exchange Program. Upgrade to Logo II (128k) not available. Prob0S Users Disk If MouseText characters appear, disk can be replaced through Apple’s Media Exchange Progran. Apple's Media Exchange Program, incidentally, works like this. If you have a damaged Apple disk or manual, you get an “Exchange Program Card” from your dealer. Fill it out and send it to Apple along with the damaged disk or manual. Apple will send you a replacement at no cost within 3 to 4 weeks.
mp.ls