Skip to main content

Open Apple 1985 10 October 1985 Vol 1 No 9

  • PublicationApple Periodicals
  • Date1985-10-01
  • Pages8
  • SourceOpen_Apple_1985-10_October_1985_Vol_1_No_9.pdf
← Magazines Open Apple 1985 10 October 1985 Vol 1 No 9
/ 8
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
‘Apple releases new peripherals Apple, Inc. announced several new peripherals for the Apple II family on September 17—just in time for the Christmas season. The new products include two composite color monitors that can display 80-column text, an upgraded Imagevriter II printer, and an 800K double-sided 3-1/2 inch disk drive. Not included in the announcement, though widely expected, was the AppleTalk Network card. Also announced, but without a price or availability date, was a 256K memory card, which is expandable to 1 megabyte. At the same time, Apple announced that its sales during July and August (in the wake of this summer's Atari and Commodore product introductions) were stronger than it had expected. Apple said it was reinstating plans for a big Christmas advertising campaign, which had been cancelled earlier this year after Apple reported its first quarterly loss (see our July issue, page 49). In my opinion, the most significant of the new Apple products are the color .monitors— assuming they do what Apple's press releases say they will. These monitors, which will sell for about $400, display both color and 80- column text, yet hook up to the standard Apple video connector. Previously, the only way to get both color and 80-column text on the same screen was ewith RGB (red-green-blue) equipment. This was significantly more expensive. Apple announced that its new monitors — one matches the Ile styling, the other IIc styling—would replace its $600 RGB monitor. | hear bells tolling for RGB. Next in significance was the lack of an AppleTalk announcement. Earlier in September Apple sent letters to people who had purchased the AppleTalk Developer's Notes for the Apple II, refunding their money and saying that the notes should be disregarded. Apparently early developers had complained about the card’s performance and Apple decided to redesign it “This redesign will allow developers to shorten and ease their design cycle,” the letter said. The new $600 Imagewriter II printer has four significant enhancements. A fast 250 character-per-second draft mode and a slow 45 character-per- second near-letter-quality mode were added to the Imagewriter’s standard 180 character-per-second operation. With a special $14 ribbon, the Imagewriter Iwill print in color. It includes an expansion slot and Apple is producing a $100 32K memory board for the slot. Also available is a $225 single-sheet feeder, It also has one significant de-enhancement; the cable that used to come with the printer is now $50 extra. The most insignificant products are the new “UniDisk 3.5” and the “Apple .!I Memory Expansion Card.” The only bright things that can be said about *_ these products is that they work on all models of the Apple II. The price and availability of the memory expansion card had not even been set at the time of Apple's announcement. ‘The expansion card fits in a standard Apple II slotand appears to be useful * primarily as a RAM disk. Almost all of the software developers who say they are supporting the card are using it this way. Its addressing scheme is totally different from any other Apple I! memory card on the market. It reportedly » does not use bank switching, To read to or write from the card you repeatedly peek or poke at the same memory address in the softswitch area for the slot the cards in. The card provides a serial stream of data in response. You can move the “position in card” pointer elsewhere by poking a couple of other softswitches on the card. Meanwhile, Applied Engineering has dropped the price of its I-megabyte auxiliary-slot RAM card to $519 and announced that it can be expanded to 2.5 megabytes. Checkmate Technology has announced a 768K board for the n-Apple October 1985 Vol. 1, No.9 Apple Ile and a 512K board the Apple IIc that include 65816 microprocessors. And Apple made no announcements about supporting AppleWorks with its memory card; something both Applied Engineering and Checkmate have accomplished. What's the big deal? Apple's memory card almost looks significant, however, when compared to the new 3-1/2 inch disk drive. The UniDisk 3.5 costs $500 and requires a separate $69 controller card when used ona II-Plus or Ile. This controller is incompatible with 5-1/2 inch drives. The new drive does plug directly into a IIc, but the IIc requires a modification to its internal disk control firmware before the new drive will work. Apple dealers will make this modification, apparently without charge, when a IIc owner purchases the new drive. The new drive does not support DOS 3.3 or CP/M. Programs written in Pascal must be revised to use it. Compare the 800K UniDisk 3.5 at $568 to a 10,000K Sider hard drive at $700 and tell me how Apple expects to sell these things. Throw in the cost of a box of the special double-sided 3-1/2 inch disks the new drive requires and you are within $100 of the Sider. The Sider supports ProDOS, DOS 3.3, Pascal, and CP/M; the UniDisk 3.5 supports only ProDOS. The Sider is three times faster than a standard floppy; the UniDisk only two times faster. Perhaps realizing its problems, Apple notes in its press release on the UniDisk 3.5 that the drive's “mass storage capability also makes it a cost- effective backup solution for hard disk drive users.” You want a cost-effective backup solution for a Sider? Buy another one. It's cheaper and easier than anything else you can do. In addition, not only do you have your data backed up; you have your equipment backed up as well. The UniDisk 3.5 may find a niche marketas a ProDOS-only add-on drive for the Apple llc. | can think of no other cost-effective use for it. “HE'S LOST INTEREST IN COMPUTERS SINCE A LARGE CORRERATION BROKE INTO HIS SYSTEM AND ERASED ALL HIS BOCK REPORTS.” ‘74 Open-Apple ‘Butterflies turn to worms What | like best about Logo and the Logo philosophy is that bugs are : considered opportunities rather than disasters. A bug encounter to a Logo ~programmer is a leaming experience. I've had a lot of these learning experiences this month. Several of the public domain butterflies Open-Apple set loose upon the world earlier this * year have tumed to worms during the last 30 days. In this month’s issue we'll investigate what happened and all come out better people for it. Inpta anything bugs. Last month’s Input Absolutely Anything program and article had both dumb mistakes and exotic ones. Turn, ifyou will, to page 67 and look at the second program on that page, Install IAA.OBJ. Look at the amazifig sequence of line numbers given. We have scientifically determined that the program will work a lot better if you renumber the third through the seventh lines. Make the third line 115 and increment the line numbers by 5 until you get to line 130. The new line 125 and the old line 160 should also have the word REM after their colons (and stop that tittering). Moving beyond pure stupidity, a much more interesting discovery about Input Absolutely Anything is that, under DOS 3.3, strings don’t evaluate correctly with the VAL function, just as they didn’t with Crossley’s original input-anything routine, as mentioned on page 66. The problem is the same as Crossley's—the string characters are being stored with the high-bit set (high-value ASCII format) rather than with the high-bit clear as Applesoft expects. In addition to problems with the VAL function, string comparisions don’t work reliably when some strings are in high-value ASCII and some in low-value. (On page 66, | said this problem was originally solved in the June 1980 Call -A.PPL.E. by Eric Goez. This statement was an interpolated estimate that also turned out wrong, The Goez article, now that I have actually found it, was an Applesoft input-anything routine based on the GET command. The first input-anything routine | can find that solved the VAL problem was, appropriately enough, Val Golding's. It appeared in the July 1980 Call-A.PPL.E..) The difference between Crossley and me, of course, is that | knew about the patential high-bit problem. My routine takes pains to clear a character's high bit before storing it in the input buffer. | realized I was in big trouble, however, when I got the following letter from Jack James of Winfield, Ill: T recently wrote my own “Input Everything” routine for the same reasons you gave for writing yours. My immediate problem was comparing two text files holding LISTed versions of an Applesoft program. The program was a commercial product that packed lots of commands into single statements. The LISTed version of these statements was often longer than 255 characters. The program also included embedded backspaces and other control characters, some of which were intercepted by NXTCHAR and treated as editing commands. My program, like yours, is based on Peter Meyer's “Ultimate Input-Nearly- Anything Routine”. | replaced the NXTCHAR call with Applesoft's INCHR routine ($D553) rather than the Monitor's RDKEY. INCHR calls RDKEY and then clears the high bit of the returned character. | used COUT, as you do, to echo the character and, for disk reads, to satisfy DOS's eat-the-character mechanism. You didn't point out that our routines will read all 128 ASCII characters, including control-e (ASCII 0), which GET will not handle. (This character must have the high-bit set when it is data on the disk. This sets it apart from the text file terminator, which is a true zero — high bit clear.) You were also rather cryptic about dealing with strings longer than 255 characters. These routines blindly return the first 255 characters of long Strings without knowing whether the 256th is a carriage return. This means thaé.an application program that wants to handle long strings must check the returned string length. If it is 255, there is always more and a subsequent read must be done. If the string is, in fact, exactly 255 characters long, that read will yield a lone carriage return, and, hence, anull string. Otherwise, of course, you'll get more. In the process of developing my routine, | found (with the help of Lee Meador, Call -A.P-PL.Es DOS consultant in Dallas) an unusual characteristic of DOS 5.3. Although I was clearing the high bit of each character before putting it into the input buffer at $200, the high bit was set on all but the last character of my retumed strings. It turns out that DOS 3.3 expects page 2 to be used for the input buffer and goes through the trouble to make sure any characters it places there have the high bit set. Each time I asked DOS to Vol. 1 No.9 read another character from the file, it would set the high bit on the Previous character in the page-2 input buffer. I ended up using Applesoft's GDBUFS ($D539), as Meyer had done, to clear the high bits. The high-bit clear by DOS not only undid what I had already done, but it carries the potential of clobbering page 2 if you are using it for something else. So it's Uncle DOS himself who's spoiling Open-Apple’s input-anything routine. (And I thought we were friends.) The offending code inside DOS 3.3 (this isn't a problem under ProDOS) lives at $A64A-$A65D and is executed every time READ gets a character from the disk. Here's acomplete Applesoft fix for this problem. Use these lines in place of the originals given in September's Create IAA.OBJ (page 67—enter B where you see b; enter 8 where you see B or 8): : AF 84 BS 33-203 OF 20 GC DD AZ Ge 20 OC FO” : GOSUB S00 A829 7F C3 0008 48 FO a7 C9 20 be 93.69 40° : GOSUB Sa0 A898 20 £0 FD 68 26 F000 30 00 02 EB £0 FF” : GOSUS S00 @0 2060 FO a6 FO 203905 AG FO BA” : GOSUB 500 63 F002 60 IF $1 83 C8 bl 83.85 71” : GOSUB S00 83.8572 (57068 90 00 C5 GF 50 09° : GOSUB S00 RO 02 20 £2 £5 62 BA 20 52 £4 AZ 20° = GOSUB S00 £2ES AG 0 AS FO 91 83.CB AS GF 91” : GOSUB soo 7091 83 60° : GOSUB 500 110 FOR 1=768 0 694 : 120 IF x=16361 THEN 200 Assembly language programmers might want to make a note in the source code on page 68 of last month’s letter. Just before the TXA command at byte $333 enter this: JSR $0839 Apclesoft GOBUFS clears high bits that 00S 3.3 sessed up LOX LENINS recover string length Leave the TXA instruction intact; it may seem quicker to just LDA LENINS, but both X and A must have the string length for the program to work correctly later on. The routine James sent me is executed with a CALL command rather than with the ampersand my routine used. His Applesoft syntax is to puta comma after the CALL, followed by the string variable, like this: CALL 768,95 XSXePEEK(I) NEXT He executes this with three calls to Applesoft machine language routines: JSR CHKCOM (SOEBE) looks fo- and eats comma aft27 CALL command JSR PIRGET (SOFE3) digs use-'s variable out of program JSR CHKSTR (SOD6C) makes sure variable is a string variable Ifyou would prefer to use the CALL syntax, all you have to do is add the JSR COMCHK instruction before the JSR PTRGET in my program. The program assembles to run at $300 (CALL 768), but can be loaded anywhere that is convenient without reassembly. | didn’t know about CHKSTR. As presented last month, Input Absolutely Anything will choke if you give it a numeric variable instead of a string variable. For example, “& A” instead of “& A$" will cause problems. James avoids these problems by the call to CHKSTR, which will return a TYPE MISMATCH error if the variable isn’t a string variable. The new program lines for Create IAA.OBJ include the string-checking call to CHKSTR and the fix-the-high-bits call to GDBUFS. The byte that controls the maximum length of strings (originally mentioned on page 68, second paragraph) is now at byte 812 ($32C). Sony for the confusion. But chin-up, it gets worse. Basic Basic copy program can’t copy Basic programs. Geeesh, can you believe this one? Doesn't anyone test stuff before publishing it? July's basic Basic copy program (page 51) copies Applesoft programs just fine (I tested that thoroughly), it’s just that these copies won't RUN and won't LIST correctly (as several subscribers have pointed out). The problem here is that Open-Apple's basic Basic copy program does nothing to correct the AUX_TYPE entry in the copied file’s directory. AUX_TYPE holds various kinds of information, depending on the file's type. Applesoft program files use AUX_TYPE to store the address the program was at when it was saved. For more details about AUX_TYPE, see my comments after the letter BSAVE, T, and CREATE in the August issue, page 63. July's Basic copy program always leaves AUX_TYPE set to zero. To understand the problems this causes, you have to know what an Applesoft program line looks like in memory. Enter the following program and follow along: October 1985 ~NEW 10 INPUT AS 20 PRINT AS 3@ ENO cALL-1Si 800.818 2800- 00 09 08 2A 00 84 41 24 @828- 00 11 @8 14 00 BA 41 24 @810- 00 17 8 1€ 00 80 00 00 818-00 As stored in memory, Applesoft program lines are separated by zeros. All programs must also begin with a zero. Enter POKE 2048,1 : RUN and notice the crazy error messages you get. This is because byte 2048 ($800) is the rst byte of our Applesoft program (and most others). POKE 2048,0 is quite effective therapy for this mindlessness. The two bytes after the zero in every program line give the address of the next program line. Thus, the 09 08 in bytes $801-802 indicate the second program line is at $0809. The 11 08 there shows the third line starts at $811, and so on. The next two bytes ofa program line indicate the line number. The 0A 00 at bytes $803-804 is hexadecmial for 10, the 14 00 at $80A-80B is hex for 20, and so on. This is followed by a series of tokens and ASCII characters. The token for INPUT is $84, as you can see at byte $805. At byte $80D you can see PRINT’s $BA token, and at byte $815 END’s $80. The Applesoft manuals have lists of the tokens for all Applesoft commands. Note that the third line of the program points to a non-existant fourth line at $817. Bytes $817-818 both hold zeros. This pair of zeros, along with the zero separator, marks the end of the program. When a program is saved while residing at one location and then rerun ata new location, all of the next-line pointers have to be recalculated or the program won't execute. DOS 3.3 calls a routine in Applesoft at $D4F2 that frandles this. This Applesoft routine ends, however, by warmstarting Applesoft rather than by returning to its caller; DOS 3.3 has to pull some severe brute force tricks to get control back after calling the routine. « Unlike DOS 3.3, Basic.system simply resets the pointers itself. Itcalculates the difference between the program's current address and the address it was saved at and adds that difference to all the pointers. Obviously, if AUX_TYPE Says a program lived at $0000 when it was saved, this will mess up the loaded version. Programs subjected to such treatment neither RUN nor LIST properly. As noted in July (page 52) the incorrect AUX_TYPE also causes problems with text and binary files. | squirmed out of all this then with the line, "These problems are fixable, but not this month.” But, alas, now my bugs have come home to roost. The difficulty here — the reason | weasled around last time —is that there is no way to directly reset a file's AUX_TYPE bytes with Basic.system commands. We have to use the ProDOS Machine Language Interface for this. The ProDOS machine language interface. The MLI, as its name implies, expects to be called from machine or assembly language. In general, you get ready for a call by setting up a parameter table somewhere in memory that holds the information ProDOS will need to execute the command. Then you jump to a subroutine at the location known as MLIENTRY, which is at the beginning of the ProDOS global page ($BF00). (The ProDOS global page is a 256-byte area the ProDOS kemel uses for storing various pieces of information that application programs sometimes need * access to.) Each ProDOS command has a specific parameter-table format. These vary from one command to another. You tell the ProDOS kernel which command -you want to execute and where in memory you've stored its parameter table *sby embedding this information in your machine language program. The command byte and two bytes that point to the parameter table follow the JSR to $BFO0, like this: F MLIENTE~ ($8F90) The ProDOS kernel will dig the command and parameter table address out of your program and return back to your next instruction, which should always check for an error. tae c OpenApple 75 < Trying to use the machine language interface from inside an Applesoft program can‘get very complex, but | finally found a way we can avoid most of the complications (this time). Basic.system has its own global page (at $BE00), which includes a routine called GOSYSTEM. Basicsystem always uses GOSYSTEM to call the machine language interface. In addition, the Basicsystem global page contains all of the parameter tables that Basicsystem itself uses when calling the kemel. Unlike the MLI, which expects an embedded command, GOSYSTEM expects the command number to be in the A register. It embeds it where the kernel will find it later. Then, using this same command number as an index, GOSYSTEM figures out where in the global page the parameter table for that command is. It embeds that address also, then does its JSR to the MLI. On return, GOSYSTEM checks to see if an error occurred; if so, it converts the error number returned by the kernel into a Basicsystem equivalent before passing control back to the caller. It does no other error handling, however. Basic.system doesn’t care if we use its parameter tables for our own MLI calls. By poking a short machine language routine into some borrowed space in the Basic.system global page, in fact, we can use GOSYSTEM to make MLI calls for us from Applesoft. This is what keeps the number of required pokes to a minimum. Inside the Basic.system global page is a 19 byte area ($BE58-BE6B) that is used only when a DOS command is being executed. The numeric values of the command parameters (the $2000 in BLOAD RED.LEAVES,A$2000, for example) are stored here when a command is parsed or translated into DOS talk. As long as a command isn’t being executed, we can temporarily borrow some space in this area for a small machine language routine. Here's the one we'll use: BESa:A9 @@ LOA BScommand nunoer 6ESA:20 70 BE JSR GOSYSTEM ($8£70) e£50:80 AA GCS ERROUT ($8£09--entry to Basic.systen’s error handler) BES 60 RTs The two MLI commands that are used to diddle with AUX_TYPE (or other information stored in a file's directory entry) are GET_FILE_INFO ($C4), and SET_FILEINFO ($C3). Since the two parameter tables used by these commands are nearly identical, Basic.system uses the global page area from byte 48820 ($BEB4) to byte 48837 ($BECS) for both of them. Here’s what the tables look like: Basic system names GET_FILE_INFO SET_PILELINFO «seeB4) 49020 ssoit0 10 formant (OEE +0 fpremcant OS +i fpointer to filer +t pointer to flies eee asso s pattoase seozs Fincess +2 [access pereltted oa foccese pare tied 40024 FIFILIO o4 [ites o4 Friars 49025 FIAAKIO +s [eoctuee +s foo tpe 40027 FIFKINO 47 [Feoroge tue 47 [rat tial 48278 F1BLOKS 10 [blocks used 49800 FInDATE +10 [rocaate +10 frodae +12 feoatine +12 faodtine ou [ereatenaore Date mast be +16 [ereatetiee oy ProDOS parameter tables GET_FILE_INFO tells you what is currently stored ina file's directory entry. The GET_FILEINFO parameter table holds ten items. Because some of this information can’t be changed, the SET_FILEINFO parameter table holds just seven of these ten. The first item in each table, the parameter count, indicates how many parameters are in the table. The ProDOS kernel uses this count to make sure the command and parameter table combination it has been given are compatible. Allthe kernel needs to execute GET_FILE_INFO is a parameter count often and a pointer to the pathname of the file being examined. The kernel itself fills out the rest of the table. For SET_FILE_INFO, on the other hand, the kernel wants the parameter count to be seven and expects the rest of the table to hold the values to be stored in the file's directory entry. = 76 <Open-Apple Pokingall this into the parameter table could be quite tedious; particularly the pathname-related pokes. Fortunately, however, from inside the basic Basic copy program we can make a few assumptions about what: Basicsystem has left in this particular table. For example, after either a BLOAD or BSAVE command, the pathname pointer will, in fact, point to the pathname of the file that was just accessed. This will not be true for long, however— Basic.system uses the pathname buffer for lots of stuff—but it will be true long enough to solve our problems. To fix the copy program, we'll call GET_FILEINFO immediately after BLOADing the file to recover the original file's tue AUX_TYPE; after BSAVEing the copy of the file we'll poke the original file's AUX_TYPE into the parameter table and call SET_FILEINFO to fix the duplicate’s directory entry. The additional lines you need to add to July's program (page 51) are: 405 X1=0 : X22 : CMO=0 43 CHD=196 475 CHD=195 : GOSUB 600 : x1=PEEK( 48825) : POKE 48620,7 : POKE 46625,X1 K (48828) "OKE 48826,x2 + GOSUB 600 600 REM *** MUI caller for use with Basic.system *#* 601 POKE 48728,169 : POKE 48729,CNO : POKE 48730,32 682 POKE 48731,112 : POKE 48732,19@ : POKE 48733,176 503 POKE 48734,170 : POKE 48735,96 : CALL 49728 : RETURN Line 405 allocates memory for the three new variables we have to use (XL, X2, CMD). Line 455, which is executed immediately after the original file is BLOADed, does a GET_FILE_INFO on the file and saves the AUX_TYPE bytes as X1 and X2. Line 475 pokes these values back into the parameter table after the new file is BSAVEd, and does a SET_FILE_INFO to update the new file's AUX_TYPE field. Lines 600 to 603 make a subroutine that pokes our little MLI caller into the Basic.system global page and executes it Note that CMD must be given the value ofa ProDOS command before using this subroutine. Incinerator burns up page zero. I've taken a lot of grief about subscribers not being able to tell the Bs from the 8s in March's Incinerator program (pages 17-19) but otherwise it seemed bullet-proof. The Incinerator Vol. 1, No.9 is a high-speed garbage collector for DOS 3.3 written by Bill Basham of DiversiDOS fame. However, this month a subscriber discovered that his DOS commands wouldn't execute and his program wouldn't LIST when the Incineratorwas in use and memory was almost full. I traced the problem to the modifications I made to the Incinerator. Those modifications made the program automatically check the garbage cans every time a return was printed and empty them if necessary. Basham’s original was called manually with an ampersand command. His technique works better. The Incinerator uses a large number of zero- page locations whenever garbage is actually collected. If collection occurs while something else (such as a LIST or PRINT command) is using those locations, problems will occur. Our subscriber's program was using the common trick of defining D$ as CHRS(13) + CHR$(4). This technique, which works only with DOS 3.5, assures everyone that there is always a carriage return before control-Ds. However, in this case the CHR$(13)s also forced garbage collection even as Dr Basic was in the midst of printing DOS commands. This messed up enough zero-page locations that the DOS commands weren't executed. There are two possible solutions. One is to leave the Incinerator connected to DOS as it is now. However, test the potential negative effects garbage collection could have on your program by poking a zero at byte 48816 ($BEBO). When there's a zero at this location, complete garbage collection will occur every time a retum is printed. If the program executes properly, it is compatible with the Incinerator as written. Change byte 48816 back to a four and go. Don't expect the LIST command or the D$ = CHR$(13) + CHR8(4) trick to work, however. The other solution is to BLOAD the Incineratorat $4000 and change bytes 16517-18-19 to 234. This will prevent the high-speed garbage collection routines from being connected to DOS. To run them, you can either connect them to the ampersand hook or execute them directly with a CALL 48815 ($BEAF). This last technique is very dangerous, however. That particular call will initialize and erase the disk in the active drive if the Incinerator has not been installed. Perhaps a better syntax would be IF PEEK(48815)=169 THEN CALL 48815. That makes sure the Incinerator is what's at 48815 rather than the usual RWTS INIT routine. Miscellanea Apple II hacker profile. Apple’s marketing experts say that hackers — the kind of people who read Open-Apple—are mostly young, underfunded, and not responsible for a significant portion of Apple II sales. Surprise, they're wrong, Call -A.PPL.E. recently did a survey (I suspect Open-Apple readers are very similar) and discovered that their readers’ median age is 42; three-fourths are college graduates (45 per cent have master’s degrees or higher); nearly two-thirds have incomes above $40,000 (44 per cent have incomes above $50,000); more than two-thirds own or use two or more computers (35 per cent own or use 3 or more; 20 per cent, 4 or more); and two-fifths of them authorize the purchase of computer equipment for their employer or organization. Ninety-one per cent are males; 48 per cent have spouses who use their computer. More than three-fourths of Call -A.P 's readers are programmers. About 72 per cent consider themselves intermediate or expert in Basic; 24 per cent in assembly language; 19 per cent in Pascal; and 3 per cent in Logo. Of course, 100 per cent of them use Apples. This is a group Apple should want to keep happy, but when was the last time you saw Apple’s marketing wizards place an ad in this magazine? "RAM prices are dropping rapidly. You can save big money by buying RAM cards with a minimum amount of memory and installing your own chips. This month you could get a whole megabyte of 256K chips from Micropro- cessors Unlimited (24000 S Peoria Ave, Beggs, Okla. 74421, 918-267-4961) for only $86.08. These were NEC 150-nanosecond 256K chips at $2.69 each. (Ittakes eight of them to make 256K bytes of memory). These NEC chips are what Applied Engineering put in the last RamWorks card | got from them. Apple's new memory card had Hitachi 200-nanosecond chips in the photo they sent me. Hitachi chips are a little more expensive, but they supposedly run cooler. (The nanosecond rating refers to the chip's response time. It's appended to the chip’s part number. For example, "-15” indicates a 150- nanosecond chip.) Microprocessors Unlimited includes with each order very specific instructions for installing the chips without zapping them with static electricity. A Value Added Reseller or VAR is someone who buys computer equipment directly from the manufacturer, adds software or special hardware to create a system dedicated to a specific use, and resells it to end users. In the July issue (page 50) I suggested Apple should expend more effort cultivating these kind of people. Before that issue even hit the mail | got an unsolicited brochure from Apple describing their VAR program. All Apple VAR sales are handled by a sales agent, Professional Computer Marketing Associates. For more information, contact PCMAS's Dirk Eastman at 800- 821-1779 (800-824-6277 in California) or Tom Babecky, Apple’s VAR manager in Cupertino. Franklin Computer seems to have resuscitated itself. thas announceda new Apple Ile/IIc-compatible ACE 2000 that will retail for $699. The machine reportedly has a steel case, 90-key detachable keyboard with numeric keypad, 67-watt power supply, intemal fan, and the Franklin equivalent of Apple's MouseText characters. The machine is made in Taiwan; Franklin says it only has to sell a couple of thousand a month to make money. Schools are the targeted buyers. Steve Jobs has taken his Macintosh development team and gone home. The Apple II would never have become world-famous without him, but his contributions to the Apple II family ended years ago. The only Apple computer that has ever been a commercial success is the one Steve Wozniak designed. The mark of Jobs—a closed system and lots of publicity—just doesn't sell. Typically, Jobs turned his letter of resignation in to several newspapers before delivering it to Apple vice-chairman AC. Markkula, according to the Wall Street Journal. Jobs’ biggest contribution to Apple was its classy image. I had hoped Sculley would retain that. However, late word is that the women trading gold futures, playing basketball, and carrying sledgehammers are slated to disappear from Apple’s ads in favor of copy like, “Your suit is a vice- presidential shade of blue. Impeccably tailored: jacket sleeve five inches off the tip of your thumb. Your tie discreetly suggests the position you want, as opposed to the position you've got” (Please excuse me while | lose my lunch.) I suspect this campaign will lessen Apple's sales to traditional customers more than itwill increase sales to clotheshorses. The world goes on. Even Sculley’s former foe Coca-Cola abandoned the real thing, October 1985 Ask (or tell) Uncle DOS ‘Apple Assembly Line You've mentioned the publication Apple Assembly Line several times but I've been unable to find its address. Would you please mention it? Tony Alley APON.Y. Apple Assembly Line is a monthly newsletter published by S-C Software; P.O. Box 280300; Dallas, TX 75228; 214-324-2050. It has been covering assembly language programming for the Apple II since October, 1980. The current prices are $18 per year for bulk mail, $21 for first class mail, and $32 for international airmail. (It’s heavy stuff.) S-C Software also produces an assembler for the Apple Il and sells various books and software helpful “to assembly language programmers and leamers. If you need assistance with assembly lanquage on the ‘Apple, these folks have products and experience that can help. [ have done business with them for several years and find them completely reliable. A few weeks ago | ordered the ProDOS update to S-C’s assembler and got a copy of the June 1984 Assembly Line, which had been missing from my collection. It disclosed the rather amazing news that the POKE 72,0 ($48:0) trick for avoiding trouble with the Monitor's G(o) command doesn’t always work. When you issue a G(o) command from within the Monitor, the contents of byte 72 are placed in the 6502's status register. This was discussed in greater detail here in March (page 20) and April (pages 30-31). If byte 72 contains garbage when the Glo) command is executed, your computer can begin to do very Strange things. For years experts have recommended putting a zero in 72 before exiting the Monitor with the G(o) command. But now it turns out that a zero in 72 will enable interrupts. Interrupts have been available on the Apple since 1977, but were rarely used until the last couple of years. Consequently, no +” one noticed this interaction before. Nowadays, however, it would be important on many systems. Apple Assembly Line recommends « poking a 4 in 72 rather than a zero. The most *, frequent use of POKE 72,0 in Open-Apple has been as part of the S.H. Lam technique. It might be worth your time to correct line 520 (to POKE 72,4) in the Programs on pages 13, 24, 43, and 55 if you save our back issues. ] Apple Il phone machine | wrote a program that answers my phone...big hairy deal...anyone with a modem can do that But this isn’t any ordinary modem, it's a Novation Apple Cat. Why anyone buys a Hayes | do not know for this thing does what a Hayes can do for about the same Price plus oodles more. In the Novation manual there's a demo program that shows how to have the modem answer the phone with speech using a Votrax system wired to the auxiliary connector on the card (you won't find that on a Hayes). Once connected, the program would get the modem to answer the phone and have the Votrax speak to the person on the other end. Since | don’t have a Votrax | looked around for some other way and found one. The synthesizer is called Software Automatic Mouth (S.A.M). It consists of a card and a software routine. Just by accident (honestly!) I set the slot number for speech output to my modem slot. Low-and-behold voice over my phone WITHOUT wires and no need for the SAM card! Iwas estatic...my fingers went wild at the keyboard. | wrote a program | call the Answering Machine, then the Originate Machine (a phone number dial-out database). When | put the two together | had Phone Functions, which won first place at the computer fair here in Whitby. Andrew Reeves-Hall 19 Glenmount Ct Whitby, ONT L1N 5M7 Canada I find this kind of software very exciting. I've included your address so that people who want more information can contact you directly. I'm convinced that the Apple Il can be tumed into a telephone that would give AT&T and other telephone manufacturers the heebie-jeebies. (Here's something interesting to do with an Apple II-Plus.) For several years now the major Savings and Loan in Kansas, Capitol Federal, has offered a telephone bill payment service. It consists of a synthetic voice that answers the phone and tells you what to enter. You respond by pushing buttons on a touch-tone Phone. Systems like this can now be built out of Apple Ils. They could be used to take orders, to quote prices, to leave messages, and to retrieve messages. And all this could be done at a price the big manufacturers couldn't touch. | think I hear opportunity knocking. Another single-drive CONVERT I find the IIc /UTILITIES disk unsatisfactory for converting files between ProDOS and DOS 3.3 on my single-drive Apple llc. Since the program will only convert an entire disk, a lot of disk switching is involved just to convert a single file. | couldn't get CONVERT from the /USERS.DISK to work either. You presented one solution for this problem in the September issue (page 72). My solution involves an extra step, but it still seems to save time: use the ProDOS /RAM disk. To convert DOS 3.3 to ProDOS, use /RAM as the destination prefix. When finished with CONVERT, run FILER to copy the file from /RAM to your ProDOS disk. To convert the other way, run FILER first to transfer the ProDOS files to /RAM and then convert them onto a DOS 3.5 disk. Another /RAM disk ti jen starting work on anew program | transfer the utility programs | am likely to need to a new disk (GPLE and APA for Applesoft programs, for example). This often involves several source disks, and could mean some serious disk switching with a single drive. An easier way is to use the /RAM disk as a staging area: use FILER to copy all the individual files or programs from their respective disks to /RAM and then copy them from /RAM to a fresh disk with the "=" wildcard. Andrew K. Messersmith Ft Lauderdale, Fla, a ~“open-pple 77 Auxiliary memory fix At the junior college where my job is to keep the Apples running, we've had several Iles develop prob- lems with auxiliary memory. Symptoms included machines locking up, unusual characters showing up in Apple Writer files, and programs failing to detect the second 64K bank of memory. The manual that came with Applied Engineering's 7-80 card tipped me off to check the chip at position B-2 on the Ile motherboard. This chip is a 74 LS-245. Apparently the quality of this chip varies greatly from manufacturer to manufacturer. Applied Engineering suggests replacing this chip with one made by Texas Instruments. I have found that this simple change fixes auxiliary memory problems at least half the time. As it happens, there is usually a Texas Instruments 74 LS-245 at position B-4 on Apple auxiliary memory cards. I've had good results by just switching these two chips, though it would probably be better to buya new Texas Instruments chip for the motherboard. When these problems started, | also called the Call -A.PPL.E. hotline and was told a few Apple Iles were manufactured with a 74 LS-109 at motherboard position C-1 This chip is supposed to be a 74 S-109 or 74 F-109; the LS-109 won't work here. | haven't actually found any Iles with this problem, however. Jim Luther Kansas City, Mo. Bulletin board follow-up Thanks very much for including my questions and comments in the July issue of Open-Apple (page 53). We ordered a Sider hard drive for my department's lab and it arrived a few weeks ago in a very well- packed box. It almost seemed as though they were expecting it to be handled by the gorilla in the Samsonite luggage commercial, though thankfully this wasn’t the case. We now have a ProDOS version of the GBBS bulletin board you mentioned purring along (after a few minor adjustments) on the Sider with a Hayes Smartmodem 1200. The people at Micro Data were very helpful in getting their bulletin board on line. | also had to call technical support at First Class Peripherals and found them helpful, too. | obtained a Ile enhancement kit and greedily popped in the new ROMs, expecting nothing less than a fanfare and fireworks upon boot-up. That didn’t happen (and I'm glad), but I got the equivalent bang for the buck in terms of new features and enhance- ments. The direct entry of ASCII comes in handy, and many bugs were fixed. | like the new self-test routine very much. According to the source listing on page 66 of the Enhanced Ile Programmer's Guide, the new self-test covers both main and auxiliary memory and the MMU and |OU chips as well. Afriend mentioned that the screen-clear time when using a terminal-emulation program seemed much improved with the enhanced chips, so | set up a little test and found the new routines are over 3.5 times faster. | read somewhere that rerunning Basic.system is the ProDOS equivalent of DOS 3.3's FP. Does doing this also reset all the MLI links and the global page? | ask this because | often edit my bulletin obard with the ProDOS version of GPLE, then execute Basicsystem again so GPLE won't cause hiccups with GBBS. Is the Proper way, or should | just power down and restart? Peter Chin Brooklyn, 78 Open-Apple on The ProDOS equivalent of FP is “.BASICSSYSTEM”. This will reload Basic.system and set up anew copy of the Basic.system global page. It will also reset the memory-protection bitmap in the ProDOS global page, however, it doesn’t ficany other changes that might have been made there (none should be, but who knows?) If this might be a problem, you can do a “-PRODOS” to restart completely anew without actually powering down. Thanks for pointing out the source-code-embedded description of the enhanced Ile self-test, which | hadn't noticed before. It says the test will run continuously as long as the open- and closed-apple ketfs are both depressed or the keyboard is discon- nected. At the end of a successful test a “System OK” message will appear. You can execute another test cycte by pressing both apple keys again or you can exit the diagnostic routines by pressing control- reset, Releasing the power When I read my first issue of Open-Apple, | was pleased enough to order all the back issues. | said more “Amens” reading them than | usually say at my (Baptist) church. The folks at Apple, Inc. should not read Open-Apple, they should memorize it There's more sense in your columns in the April and July issues than in all the collected wisdom of Apple's management, if their blunders are any indication. One hopes that the reorganization will help. But why don’t they save the money and simply implement your columns? At the university where | teach, our department (sociology—not computer science, of course) has findlly persuaded the powers-that-be to begin a microcomputer lab with a dozen Apple Iles. And, at last, our computer center director (who is wedded to Heyiett-Packard) has agreed to help us interface the Apples with the HP mainframe. Naturally, it turned out there was already software to do just that. Therefore, we will have full access to all the computing power of the mainframe as needed (and at relatively low cost compared to buying HP equipment). To me, this is the future: good “old” Apple Ils serving as the base of ever-expanding computer capability through enhancements and interfaces to larger computers when necessary. Most of the time, the Apples can do the job offline. Today the HP mainframe was “down.” As my colleagues sighed and fumed, | happily worked away with my word processor and data files on my Apple. Long ago, | realized that computing was as much political as technical. | realized that the computer professionals often had a vested interest in the user's ignorance and dependence on the “experts.” And that is the great thing about the Apple-led, microcom- puter revolution—it is “releasing the power to everyone.” “S Alan G. Hill . Greenville, S.C. Amen. Call for Apple Writer calling help 'have a couple of questions about Apple Writer 2.0. One of the reasons | upgraded to the ProDOS version as for the communications capability, but | haven't been able to figure out how to get it to work with my Modem (this is embarrassing because | consider Myself a knowledgable Apple user). The Apple Writer manual provided no help at all ("Call your receiving Party using the instructions that came with your modem...” Does that mean | have to exit to Basic to use my modem with Apple Writer? | have a Hayes Micromodem tle and would simply like to dial the number ofa local BBS and use Apple Writerinstead of Smartcom |. T would also like to know if there is any way to get Apple Writer 2.0 to date files without a clock card, the way AppleWorks and SuperCalc 3A do. My last comment is on SuperCalc 3A. It is a super program. | recommend it to anybody that needs a powerful spreadsheet for the Ile or the IIc. James P. Cooney, Jr. Billings, Mont. | consider myself a knowledgeable Apple user, too. Maybe that's our problem. | haven't been able to figure out the Apple Writer communications option either. Has anyone out there gotten it to work? How did you do it? I suspect the problem may be that you and | both have slot-resident modems. Apple's own Access II communications software works only with modems connected to a serial card, according to a February 1985 review by Walter Mossberg that appeared in the Washington Apple Pi newsletter. Mossberg calls Access II “one of the worst products Apple has ever offered”, in large part because its inability to work with slot-resident modems, by far the leading type of modem used with Apple Ils, isn’t revealed on the outside of the package or in the tutorial program. “It is first mentioned more than 20 pages into the manual, and must come as a bitter surprise to many,” Mossberg says. You can use the STARTUP program on the ProDOS /USERS.DISK to tell ProDOS the date and time. Exit the program and set the prefix to the directory your Apple Writer files are in and enter “-AW.SYSTEM”. The date and time you set will appear on all files saved that session. You could also modify the /USERS.DISK startup program to create a special Apple Writer startup program. SuperCalc 3A is the most powerful spreadsheet- plus-graphics program for the Apple II that | have found. Its obvious CP/M heritage bothers me, however. Its developers either didn't bother to learn the Standard Apple II user interfaces or ignored them. For example, you can't initialize new disks from inside the program. This is standard operating procedure on CP/M systems but quite unusual for commercial Apple II software. Being forced to press the escape key before pointing at cells (while building a formula) is something | find particularly bothersome, but that’s probably my own problem. Although the SuperCalc developers are to be congratulated for including the ability to use command or exec files, they left out a true macro capacity like Lotus 1-2-3 has. How much longer do we have to wait for that in the Apple II world? Okidata 92 meets AppleWorks Jerry Cline asked how to putan Okidata 92 printer into correspondence quality when using AppleWorks (September, page 71-72). On the Okidata 92/93 and 192/193 printers, correspondence quality and boldface (emphasized/ enhanced) are not the same. Correspondence quality is obtained by sendingthe printer ESC L Emphasized or enhanced is obtained by sending ESC H or ESC T. The way to get correspondence-quality printing is to incorporate the ESC 1 contro! codes into the command that govern the characters-per-inch to be printed. The command for 10 characters-per-inch is control-’. Correspondence quality at 10 characters- Vol. 1, No.9 per-inch can be had by using ESC 1 control-’ as the control code. Data-processing-quality printingis selected with an ESC 0.1 code 12 characters-per-inch as ESC 0 control- \ to give me rough draft copy at high print speeds. | use the slower correspondence quality for finished work. This allows the boldface command to be used for boldface or another purpose. The other purpose | use is to select an alternate character set. The Okidata 92 has a RAM memory area that can accepta second set of characters. There are software packages (Personal Touch by Okidata, for example) that allow you to load italics, script, greek, math, and other special characters sets. This needs to be done before you startup AppleWorks. The Okidata prints the altemate set when it gets an ESC 2. | define boldface begin as ESC 2 and use the boldface begin command (or control-B from the keyboard) to get the alternate characters. Boldface endis then either ESC 1 or ESCO. Bruce W. Ristow 540 Antlers Dr. Rochester, NY. 14618 Ive included your complete address so that further Okidata 92—AppleWorks questions can find their way directly to you. The print samples you sent (which included a two-page demonstration of using an alternate character set to print the equations needed in mathematics and physics texts) were beautiful. Many printers have the ability to use alternate character sets, including Apple's Dot Matrix Printer and Imagewriter. Apple's documentation barely mentions this, however, and certainly doesn't show you how to do it. Programs that provide alternate character sets for various printers are available from Third Wave Technology, 16509 Elsienna Ave, Cleve- land, Ohio, 44135 (216-671-8991) and from Vilberg Brothers Computing, P.O. Box 4576, Madison, Wisc. 5371L Both companies have a reputation for reliable products at reasonable prices, but | don’t have their current product listings handy. Apple Ils in real estate Alter seeing you recommend Time Is Money (Sep- tember, page 71), | wonder ifyou could help me. I have purchased two programs for property man- agement and neither one serves the purpose. They are The Landlordand Continental Software's Property Management. When | asked Contintental for help they recommended | take the program back to my dealer and get my money back. The situation with the other is similar. Let's say I'm somewhat ticked-off. Are there any other property management programs. that you know of? Neither of the above provide “user- friendly’ operation. You almost need another program to identify the entities in the programs. Currently am using Time Is Money for transaction entries and the AppleWorks data base for tenant, owner, address, rent, and other informational entries. AppleWorks generates my reports. It sure would be nice to have all this wrapped in one program, however. Al Smith Fresno, Calif. I'lopen this one up to our subscribers. But | doubt you will find anything much better than the Time Is Money/AppleWorks combination. A company named Intuit (540 University Ave, Palo Alto, Calif. 94501 415- 522-0573) recently announced a checkbook program named Quicken ($79 — 128K required) that has two October 1985 important features that I wish Time Is Money had— an AppleWorks-like user interface and the ability to transfer data directly into AppleWorks spreadsheets. As | understand this second feature (it was disabled in the demo disk they sent me), you set up an AppleWorks spreadsheet with special labels for the data you want, then you start up Quicken, tell it about the spreadsheet file, and it will find it and fill in the data. You retum to AppleWorks to see the finished spreadsheet. Intuit’s program reminds me of the PFS series. Like Software Publishing's stuff it sacrifices features for ease-of-use and it's written in Pascal. It is stricken ivith the lethargic response typical of Pascal-based Apple II software. Quicken was not the name that came to mind when | tried the program. Time Is Money is infinitely better and faster; | sure wish it could pass data to a spreadsheet somehow, however. The hard disk life, continued Thanks for the comment (August, page 63) on the problem | had with the Sider (actually a Datamac, but apparently identical to a Sider). The bad-blocking of the files | experienced by pressing reset while printing an Apple Writer file only happened once (that was enough!), This has been the only anomaious behavior | have experienced with this hard disk in several hundred hours of operation. Guess | was lulled into complacency, so | hadn’t bothered to back up my files. When the bad-blocking problem occurred, the disk was on line but not active. | was printing along Apple Writer file, noticed something was wrong, and reflexively hit control-reset to Stop the printout. The file in RAM was uncorrupted and | finished my printout, then attempted to pull up another file to find that | was enced out permanently. I was four levels down in the pathname and lost everything in that subdirectory. Nothing outside that subdirectory was touched, and the drive continued to work as it should have except for the reduced effective size of the drive. When | reformatted, the media certified just as it had the first time I set it up. | have noticed a problem with the AppleWorks spreadsheet that I have never seen documented. When I rearrange an alphabetized spreadsheet with a sort ona column of numerical scores it always purges isolated but continguous blocks of cells of their formulas so that | must rebuild a large part of the template. Deleting rows or columns will occasionally corrupt other parts of the structure that are in independent regions. Apple is of no help, they only tell me to contact my dealer. Is a new revision upcoming on AppleWorks? I wonder why Apple doesn’t provide an easier way to modify only the tail end of a iong path name — the way you can in Sensible Speller's ProDOS version, for * example. It's a nuisance to have to type in an entire ‘pathname when you only want to jump to another twig on the same branch. Maybe I've missed something. % Donaid Beaty San Mateo, Calif. Apple Il wizard Ken Kashmarek wrote to say he + suspects your hard disk problem was caused by a runaway print-to-disk operation. If the reason you pressed reset was that nothing was coming out on your printer (because you had selected 8 (print-to- disk) as Apple Writer's “print destination”), reset could easily have caused the directory entry to be mangled. | haven't come up with any explanation for what happened to you that's nearly as plausable. a7 Ibe never experienced or heard of the formula- damage problems you mention with AppleWorks. The current AppleWorks version is 12; I don’t know if Apple has revisions in the wings but I suspect they do. They certainly make enough money off the Program to provide customer support; most marketing-oriented companies would love to have the customer feedback you tried to provide them. You haven't missed anything that | know about regarding ProDOS pathnames. | agree that the ProDOS kemel should support some kind of command for deleting or replacing the final filename ina prefix. Another graphic grabber In the July issue ("Printing Graphics”, page 53) you discussed a couple of cards that can interrupt a program at any time and print the graphic display. I'd like to put in a plug for Dark Star Systems’ products (78 Robin Hood Way, Greenford, Middlesex UB6 7QW England, Source Mail BCJ456). I have one of their SnapShot copy cards and their Printerrupt and Shuttle software. At the time of purchase (about a year ago), | was a bit hesitant about dealing with a firm based in Europe that had no local representative. Any fears I had proved absolutely groundless. Dark Star Systems personnel have proved to be helpful and responsive beyond the call of duty. With their card and its associated software packages there seems to be virtually nothing (digital, that is) that you can’t get out of your Apple onto onto the screen, disk, or printer. The copy card itself has 8K of RAM memory into which you load programs such as Printerrupt. This program does the same kinds of things as Thirdware's, FingerPrint card and Texprint’s Print-it!, but it uses the printer interface card you already have. The Shuttle software lets you run programs under different operating systems simultaneously—you do need, however, 64K of RAM for each such program you wish to have loaded at the same time. Dark Star now has a representative here in the U.S. Greengate Productions, 2041 Pioneer Ct, Suite 15, San Mateo, CA 94403, 415-345-3064, Source Mail BCHIOL. Paul Pagel Enfield, Conn. Any company that makes a copy card on Robin Hood Way deserves success. A comparison of the FingerPrint and Dark Star cards in the July 1985 issue of Apple User, an English Apple magazine, also came down in favor of Dark Star, though the FingerPrint card reviewed was obviously an earlier version than the one we use around here. Next program, please I'm running a Ile with a Sider hard drive. | modified the startup program Apple provides with ProDOS to allow selection of AppleWorks, Apple litter, or Sensible Speller in addition to the standard FILER, CONVERT, Rit. Can you—can anyone —give me away to quit each of those three programs and get directly back to my menu? Oper-apple/control/reset does it with detours; I'm looking for the direct route. ponald A, House Naugatuck, Conn. I solved this problem by renaming the first volume on my Sider */H1" (it's simple—use the ProDOS RENAME command) and putting a second copy of Basic.system, named GO, on that volume. (FP would be another suitable name.) Commercial-quality ProDOS-compatible software is supposed to issue a “quit” call to the ProDOS Open-Apple 79 kemel at exit The programs you mention, with the exception of FILER and CONVERT (which few people would say are commercial-quality anyhow), do this. The quit routine inside ProDOS, which Apple calls a “dispatcher,” asks you to enter a prefix and a path- name. It's pretty easy to enter /H1 and GO; on my system this brings up my own menu program. A more advanced technique would be to rewrite the ProDOS dispatcher. The. ProDOS developers expected people to do this and have made it pretty easy. The dispatcher code is embedded within the ProDOS kernel at bytes $D100-SDSFF in the second 4K bank of main memory. When ProDOS executes a quit call, it moves a copy of the dispatcher to $1000 and jumps to it. A better assembly language dispatcher could be written that would automatically run Basic.system and your Applesoft menu program. This would make anice projec: for someone. I'd do it myself if I could find a time warp to hide in till it was done. Anyone who wants to try should read Apple's ProDOS Techni- cal Notes #7 and #14 before starting. There's aslight chance your dealer's technicians would have these. They are also available in most user group software libraries on disk /IAC.45. You can say that again Joabs or Janbs? B. Walters Boston, Mass. According to the press relations department at Apple, it’s jahbs, as in ‘jobs for the poor” spoken by someone from Kansas City. But who knows how you Bostonians might pronounce it? Time short for ProDOS The ProDOS feature that enables a Thunderclock todate-stamp files expires on December 31, 1987.On January 1, 1988, ProDOS will stamp your files 1 JAN 82, This resul:s from the way that ProDOS derives the year. The clock “hat the ProDOS designers decided to support, the Thunderclock, doesn’t keep track of whatyear itis. So ProDOS has to perform a calculation based on the current date to figure out what day of the week it would de if it were 1984. It then subtracts the value found is Thunderclock’s day of week register from this value, and uses the resulting offset as an index into a 7-byte lookup table that contains the correspondir:; years. In all ProDOS versions to date this table contains the sequence $54, $54, $55, $52, $57, $56, $55. These are the 2quivalent of decimal 84, 84, 83, 82, 87, 86 and 85 respectively, which are the years in which these versio:s of ProDOS function properly. To breathe new life into either of these versions of ProDOS, you <an change the first four bytes of this table to $54. $59, $58, $58. This will extend its usefulness to the end of 1990. Keep this trick tucked away in your reference file, in case you are still using the same ProDOS five years from now. Notice that a leap year must be repeated in two successive bytes, and that the cable wraps around from the last byte back to the first (years in descending order). To make a 2atch, BLOAD PRODOS, A$2000, TSYS. Now you can find the offending bytes in main RAM, fix them up, ther. BSAVE PRODOS, A$2000, TSYS. Notice that you don: have to give the L parameter when saving—ProDOS will use the one stored in the directory. When you =LOAD ProDOS at $2000 the table of years is at $3976 in ProDOS 10.1 and 10.2 and at 80 Open-Apple $4F76 in versions 11 and 111 After testing the patch to make sure everything works OK. you can copy this updated PRODOS file to all of your bootable ProDOS disks. Asecond approach to the problem is to change the year-lookup routine and track the year separately in your STARTUP program. The command that picks the year out of the table is B9 BB F1 {LDA ($F1B8),Y} in versions 101 and 10.2 and appears at $5050. In versions 11 and 111 the command is B9 B8 D7 {LDA (D7B8),Y} and is at $4F50. In either case, change it to AD EF 03 {LDA $O3EF}. Bow you can keep the month and year ina text file, and have your STARTUP program compare the month currently shown on the clock to that last written to the file: Ifthe current month is less than the month found in the file, you add 1 to the year. In any event, you rewrite the file so it contains only the current month and year. Then you POKE the year into a new “date stamp buffer” we have just created at location 1007 ($3EF). As long as this disk gets booted a couple of times a year it will never get out of date. A word processor can easily make any correction required as a result of extended dormancy. lused this second method because | had to rewrite the ProDOS clock driver to work with my Mountain Computer AppleClock, which has neither year nor day of week. Ifyou use the Thunderclock, it's easier to just patch up the year table once every five or six years. Clay Ruth Dyer, Ind. Gotcha, Sider, ProDOS Trecently tracked down a bug in a program thatwas trying to PEEK at the expansion area ($C800-CFFF) firfnware on an interface card, Something was myste- riously turning the expansion area off just as | tried to PEEK atit. All interface cards are supposed to turn off their expansion area ROM when the value $CFFF appears on the address bus; some cards do it for any value in the $CFOO-CFFF range. In tracking down the problem | leamed that the 6502 has a bug in it that causes the wrong address to momentarily appear on the address bus when an indexed instruction crosses a page boundary. For example, the instruction LDASCFDCY (which appears within Applesoft at $DF3F), with Y holding $C4 (as it does when PEEK is executed), is supposed to load the A register with the value at $DOAO, and it does. However, italso momentarily puts the address $CFAO Open-Apple * Copyright 1985 by Ny Tom Weishaar Published monthly. World-wide price: USS24/year Send all correspondence to: Open-Appie 10026 Roe Ave Overland Park. Kans 66207 USA Source Mail ComouServe 70120202 Open-Apple 3 a sragemam of Over-A0% Comouter and Open-apoie are ts ante Bendent companies inat wish eyeryore ie Apoiew ($100 less than the correctvalue) on the address bus. This makes some peripheral cards, including the one Iwas trying to PEEK at, tum off their expansion ROM. Gotcha. The version of DOS 3.3 that comes with the Sider hard drive is only four bytes different from standard DOS 3.3. You can boot off a floppy and enable the Sider with the following patch: 10 REM ### Sider enable patch #** 20 REM Assumes 48K 00S 3.3 30 8000 = 46384 : 40 PCKE 000,32 50 POKE B020+1,17 60 POKE 6000+2,192+SLOT 70 POKE 8000+3,0 suoT = 7 By the way, the Sider doesn’t seem to follow the MSLOT protocol for the expansion area ROM. This lightly documented protocol says that peripheral cards should store their $Cslot value at $7F8 (MSLOT), MSLOT can then be used at the end of an interrupt routine to reset the expansion area if the interrupt has used the expansion ROM on other peripheral cards. | have also recently spent some time figuring out what ProDOS checks during booting; this may be of interest to others. After checking the $F8 ROM identity bytes to see what machine it's in, testing for the amount of RAM present, and preparing the results for saving later in the machine ID byte ($BF98) in the global page, ProDOS scans the slots for disk devices and other cards. The scan starts at slot 7 and works downwards. First ProDOS looks for a disk interface card. I'll describe this in more detail later. If a disk interface isn’t found, ProDOS next looks for the Thunderclock. signature ($08 at Cs00, $28 at $Cs02, $58 at $Cs04, $70 at Cs06). Ifa clock is found, the appropriate bitis set in the machine ID byte and the clock routine vector is enabled in the global page. Failing that, the slot is tested for the Pascal 11 interface card identification bytes ($38 at C05, $18 at Cs07, $01 at CsOB). Ifthis much is found, byte $CsOC, the Pascal 1.1 device signature byte, is checked for an 80-column card. Before ProDOS version 11 this byte had to equal $88, which is the ID for Apple's own 80- column “card”. In version 11 and later, only the high nibble has to equal 8, the low nibble can be anything, Since the low nibble is supposed to identify the manufacturer, the newer versions of ProDOS will accept anyone's 80-column card. If the three tests for a disk controller card, a clock card,and an 80-column card all fail, the slot is simply checked to see ifa ROM is present Ifso, the appropriate bitissetto 1 in the global page's SLTBYT ($BF99) flag, After all slots have been checked, a routine is called that does a checksum on the ROM to confirm that a genuine Apple I! is in use. If the routine fails it hangs the system. Now for the interesting part. If the disk interface card search finds the correct signature ($20 at $CsO1. $00 at $Cs03, $03 at $Cs05) in a slot, it then checks the last byte in that card's ROM space, $CsFF. If that byte is zero, the card is assumed to be a standard Apple I! floppy controller. Ifthe value is $FF the card is assumed to be an older DOS 3.2 13-sector controller and is rejected. Otherwise the value is saved for later placement in the global page, along with $Cs, as the entry point for access to the device. Next the byte at $CsFE is checked. This is supposed to be a status byte that defines the characteristics of the device hooked to the disk controller. If the device Vol.d-No. 9 doesn’t support read and status calls (its Oand1 equal 1), the card is rejected. Bit 4 of this byte is used to determine whether the device has two volumes (0 means 1 volume, 1 means 2 volumes). Both are assumed to be there if it's a floppy drive. Bit 5 is not tested. The ProDOS Technical Reference Manual says on page 110 that bits 5 and 4 of the $CsFE status byte indicate the number of volumes available on the device. Two bits indicates the possibility of four volumes, but the Apple manual says the possible range is zero to two— how many files does it take to fill zero volumes? The top nibble of the status byte is shifted down and saved, in the global page’s device list at $BF32- SF, as the low nibble of the device ID. The meaning of the device ID then becomes DSSSRIW, where Dis the drive number, SSS the slot number, R whether the device's storage medium is removable (1=yes), | whether the device is interruptable (1=yes), and W the number of volumes on the device. ProDOS zeros out this lower nibble when using the device ID to calla disk driver. Drives are added to the global page's device list as they are found and the device count (DEVCNT, $BF31) is incremented. If bit 4 of the controller card’s status byte indicates two volumes are available, both are added to the device list After the scan ofall slots has been completed, this list is shuffled so that the boot drive is placed first, followed by the others with the highest slot first. This becomes the order in which drives are searched when a volume isn’t found in the default drive. Tom Vier Reston, Va. Tve run into that bad-address-on-the-bus-with- indexed-instuctions problem before. ProntoDOS: goes crazy if you try to save the firmware on the card in slot 1 with a BSAVE FIRMWARE,A$C100,L$100 command. ProntoDOS uses an indexed instruction with the base back in page $CO for this and all the Apple's softswitches get hit as the file is saved. What amess. The newer 65C02 doesn’t have this problem. Nonetheless, people writing firmware for cards that might end up inslot 1 should be careful not to use an indexed instruction with a base in page $C0. The information you've developed on the ProDOS initialization routines is very interesting, especially the part about the meaning of the lower nibble of the device ID. Note, however, that while the 4 that the Profile and the 5 that the Sider put in this nibble make sense, floppies place a0 there instead of the 9 you would expect, and /RAM shows up as $F instead of a more meaningful 4. The purpose of having two bits in the $CsFE status byte to indicate the number of volumes available rather than one escapes me completely. Since only one of the two bits is actually tested it would appear ProDOS expects only one or two volumes per device. Once a device is called, of course, it could place additional volumes into the device list using phantom slot assignments; but nothing limits this trick to four volumes. Bit 5 looks meaningless to me. The hang-if-checksum-is-incorrect feature makes ProDOS inoperable on machines with custom Monitor ROMs. You can override this useless, arrogant feature by BLOADing ProDOS at $2000 and changing tu:o bytes to $EA. The bytes to change are: versions 14.1 and 10.2, $265B-5C; version Ll $264D-4E; version LLL $269E-9F. (In general terms, search for the sequence 69 OB DO 03 and change DO 03 to EA EA. The enhanced Ile Monitor's search command (March. page 20; 0B6% 2000.5A00S) works great for this.)
mp.ls