LBSOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUNDINVALID KERNEL FILExةw,@  4  J  ȱ⩤i8#) ) 8Le PHASE /// DON WILLIAMS THE EARLY DAYS For those of you who don't know me, my name is Don Williams. I worked at Apple from January 1980, actually probably from September 1979. I did a sales forecast for Mike Markula o[;7# /WILLIAMS.A3HIST9o(%SEG.T j+Ÿ/ FINDER.DATAplIII.INF.14.117Bu' .ASTRAHAN.GPHCSA8m(DISKNAME.DATW(+DOGGETT.MLMe-"(+GOODING.WPL."6"%*MENU.MAKER N z+&/POHLMAN.GSBASICm#im#iЛ#Lȱ  6L憦  Lsmm l y` @8(Je稽 ʈn an Apple II and we did it using a software package that I did for the Apple II/Apple /// called Desktop Plan. A lot of you don't know about it, it doesn't make any difference. I made a fair amount of money out of it but Visicalc beat the hell out o  !"#$%&'()*+,-./0123456789:;<=>?n the basement of the parking lot for the Disneyland Motel. Markula being Eastern Press. John Sculley finally brought Markula to Apple. Mike Markula was the marketing genius of the century. To have taken the Apple II, designed for 1K RAM ch We get back there and it still had wire-wrapped boards in it. There was no way to make a prototype of it then. And really we introduced the product about four or five months later. Taylor [Pohlman] was down there at NCC at Disneyland. We are it was different but they sold enough to make it worthwhile. In January when I went to work the first thing Markula did is he took me back to Wendell and showed me this Apple /// which he had been promising me a prototype of for three months.up going to work there because I didn't want to leave after I finished the forecast system. It was just a fun place to be so I turned Desktop Plan over to Visicorp to sell and got paid a lousy little royalty. I don't ask you to feel sorry for me. I///. Wendell's [Saunders] offices were in the same building as sales and marketing. You talk about security. Wendell is designing this thing called a Sara, right? Mike had been promising me a prototype from October '79. Finally I wound g called Family 1. Now that is one building where MIS department, you know, our friends, friends of the personal computer business, they totally have all of the original Family 1. Everybody did everything. We were all excited about the Apple ished a fiscal year in which we did just under $60 million (fiscal '79). Fiscal '78 started October 1. Pretty small company. Less than 300 people. All of marketing, all of sales, corporate management, and administration fit into a piece of a buildinto have a Director of Human Resources. They got one thing in mind --- write policy manuals. Nothing gets done quickly in order to get out policy manuals so I don't respond well to them. Apple was pretty small company then. We had just finnsion from those turkeys next March 5th [of 1988] when I am 55 years old. I was there 16 years at IBM. I really didn't want to go back into a large corporation. Last time I quit at Apple I told them I will never work for a company large enough I really didn't want a job because my perception of a job is you've got to put on one of these [a tie]. And I had done that for 16 years, wearing grey pin striped suits, white shirts, not pink, knee socks, leather wing tip shoes. I get a peI guess it was done one and a half times, and the other half was done in the Apple offices. I got around there so much that when the damn forecast project was over, I really didn't want to leave. Mike had offered me a job a couple of times.s in the future, there was this thing called the Airdi (?), was that the name of the machine that became the ///? [Lavona --- Sara] Sara. Finally Markula told me what it was. Half the work was done at his house. The other third in a motel room. f me. I kept more money than those two guys so I figure I'm the winner. They are not around any more. When I went there in the Fall of '79 when I was working on that forecast there was part of the forecast, we did it for up to 3 yearips, and designed it so it was a 4K machine in an address space where right in the middle of which you put a program, you've got your high res graphics screen and all that other garbage, probably from a programming standpoint one of the worst designed machines in the world. And they made it into the world's best selling machine and only a master marketeer could do that. Markula perceived that one way to bring attention to Apple was we could introduce the Apple /// at NCC, #1, afied and pretty well fixed. By July of that year they were putting out of manufacturing Apple ///'s where the out-of-box failure rate was under 3%. And there's hardly any computer on the market today where the out-of-box failure rate is much he chips and it ran fine after that. There was a gal by name of Marilyn Chase, a Wall St. Journal reporter. She wrote a front page story about the disaster of the Apple /// in March 1981. Turned out, by March we had the problem identid a real problem. There was so much heat in the thing that the memory chips would wiggle their way up and get loose. You know how you fixed the problem? You picked up the front gently, the front of the Apple /// up, and pushed it down. That reseated tpany went public, I believe December 12, 1980, and Scotty, in the prospectus, had promised to ship it before we went public. So they shipped, I guess, 500 machines in November and maybe another 1000 in December and maybe another 1000 in January. We hato the budget. The guy left the company thirty days later. To the best of my knowledge I have never talked to anybody who ever ran Word Painter. We introduced it [Apple ///] in June and then we scrambled and scrambled and finally the comthe introduction of the Mac, the guy put up a notice on the bulletin board --- he wanted some beta site testers for Word Painter. How that happened I don't know. I guess he must have been off in a corner working by himself and nobody paid attention u can't even program, let alone with programs that won't run on it? The only thing we had on introduction was Visicalc. We didn't have a word processor. We announced one called Word Painter. Word Painter ultimately got finished. After development, you've got to provide a complete system and you've got to do it in introduction. Some of the management actually wanted to ship the Apple /// without BASIC. With no programming capability. Now what do you do with a computer that yory first time we were in the systems business. We didn't really know the difference. When I say we, that's the corporation. And that's different, being in the systems business where you've got to provide good systems software for applicationd a single PC board, a power supply, and a keyboard. You had an Apple II without a disk drive. When we put the Apple /// out, you had to have a monitor, you had to have an external drive, we really should have had a hard disk, and for the veays of NCC! We had three of them that we'd made and they were all basically hand made, wasn't a PC board. We just couldn't make them. If you go back in history now and it is real easy in hindsight to say, Apple II was really a component. You hayour shirt out. It was so hot and just so many people. Everybody wanted to see this Apple ///. We had three of them down there. This was now the prototype. To tell you how realistic we were, they were promising 600 dealers an Apple /// within 30 d had booth duty at three o'clock in the afternoon and to get to my station, the only way I could do it was to get my elbows up like this and get to the station. When you came off booth duty, since there was no air conditioning, you just wrung nd #2 we had to have some way to get people to come to our booth. We had to have some way to get them to our booth to see the thing, and what we did was we rented Disneyland for one night. And we gave away tickets at Disneyland that night. Iunder 3%. You're going to get some failures out of the box. And by July of that year they had the problem solved. Yet Marilyn Chase's article had come out and if the Wall St. Journal printed it on the front page, it was gospel. They got Marilyn to come back after it was fixed and she did another story but the editors buried the "fixed" story on page 3 whereas the "problems" story was in the left hand column on page 1. So we had a real bad public image. By August of 1981, a yeaBecause it was a hell of a good machine. The Applewriter was done and we were going to be shipping that within a few weeks. Visicalc was already out there, and there was some other software starting to show up. What we now know as Quickfy had to do was to go open up an Apple /// and plug it in, and run it. Guess what. I think out of those 120 Apple ///'s we had one failure. By October 1, we went to Hawaii we had 120 salesmen who were really psyched up about selling the Apple ///. vision including Taylor; we had five teams and we went to two cities, each team, for two and a half days. We would stack up a proper number of Apple ///'s in the back of the room with the boxes, and the disks, and the monitors. The first act thee gave me 120 Apple ///'s which I could take to the field and give to the entire Apple field sales force. I put together a plan whereby myself and about four people from the sales department and about twelve people from the Apple II/Apple /// di a document to myself, "What have we got to do to fix the Apple /// problem? Because if the field sales force won't even use it, how are they going to sell it to dealers?" So I wrote a proposal and I got Will Hood to verbally buy off on it. Hing on the Apple ///, including Carter, even though the escape key was in the wrong place. Can't change things on Gene. About that time I had those two things done, I went to Florida and I ran into this problem so in the airplane back I wrote will you do the same thing?" I said, "Sure, we'll do it. I'll come up and we'll do exactly the same thing." So he did and three weeks later we had the whole corporate office up running on the Apple ///. And we had the whole sales department runnt meeting was going on where they were doing it, Markula called me up and got me to go up to his office on some little problem, don't remember what it was, and I told him what we were doing. He said, "If I get Apple ///'s for the corporate officesrun Applewriter and Visicalc. The objective was not really to show them anything but to let them take a machine out of a box and have no failures. Everybody went away as happy as a lark with Applewriter and a spreadsheet. While thae whole sales department to come into a big conference room. I had the Apple ///'s stacked up in a corner. I said, "OK. Everybody's job is to get one of these boxes, this box, and this box and unpack it, hook it up and we're going to show you how to ly place one day. In mixed company it's probably not best to say, but it was the men's room, and he said, "Do you still want those 12 Apple ///'s?" He said, "I'll give them to you. No charge against budget." I got the Apple ///'s and I got ths like that, and I had convinced my boss, Joe Robocks, to let me get enough Apple ///'s for the whole sales department. We put in the requisition and Joe's boss, Gene Carter, who is now my partner, turned it down. I ran into Will Hood in an unliket even turn the machine on! It was in such bad shape. I had done something in my department, I had a little department of about five people, we were called Sales Support. We answered a lot of telephone calls, went out and helped dealers, thingr and a half after product introduction, we sold 61 Apple ///'s! I wound up going to Florida in early September for a dealer meeting and I got down there and not only were the dealers down on the Apple ///, but the Apple /// field service people wouldn'ile was then being written. From right before that sales meeting until today I have never typed my data base in. Retyped any of my database because I started it on what was called Smalljob, on September of 1981 it became Quickfile, then it became 3 E Z Pieces and Appleworks. If anybody wants to convert to a Mac we have a program that will automatically read on 3 1/2" ProDos or softdisk your Appleworks files and make Microsoft Works word processor/spreadsheet/database files. It takes about was a real buggy ride. It's a great machine. I've heard at least three people at this convention say to me, "Apple /// has the greatest keyboard I've ever touched." That's correct. That is one of the reasons you and I like it. tarted. So I don't think we did such a bad job. They wanted us to go from 0 to 120 million dollars in the year and that was not in the cards. When I came back, no way was I going to go back and be the Apple /// Product Sales Manager. So I didn't. It ational Accounts Sales Manager at Apple has been busted. I don't feel bad about it. I thought I did a halfway decent job. We grew the National Accounts group in the first year at twice the growth rate of Apple Computer from the time they s// Product Manager. I didn't say that to anybody but that was the reason I quit. I wanted to go back as National Accounts Sales Manager. I was doomed for failure. It lasted a year before I got busted. Everybody that ever had the job of Nthe previous year. People would just not let me do anything else. I figured if I quit then I can do something else. So I quit and I went in March 1983 and there was still all that mental energy going on. They offered me a job as Apple /evoted to that particular product. It broke a lot of people's hearts. I left Apple in 1982, early '82. Primary reason I left is I couldn't figure out how to be able to do anything other than work on the Apple /// except what I'd done f you want to use the term "kill it", I don't care what we call it, they went out and found somebody to keep supporting it for all those people who had bought it. There came a point in time when the mental energy of the company could no longer be dments, and all over Apple Computer. The mental energy that went into saving and reviving that Apple ///. The fact that Apple kept it alive as long as it did I think is a real tribute to that company. When they finally did stop making it, ivoting the resources? I want to make a comment. Resources is not just dollars and not just floor space. It's the mental energy. You cannot believe the mental energy expended by Taylor Pohlman's group, by people like myself in sales depart When in the summer of 1981 we sold 61 Apple ///'s, the PC was introduced and along about early 1983 they really came on strong when [Lotus] 1-2-3 came out. The PC was selling, Apple in January 1983 introduced the LISA. Should you keep deve thousand machines per month. But it came close to dying. That sucker was almost dead. And there were times you had to say to yourself, "Is this the best use of the resources of Apple computer? To keep trying to build up this machine?" ining dealers on the Apple ///. From 61 machines, I think by December we sold somewhere in the range of three to five thousand. About that time this turkey took on the job as Apple /// Product Manager and I think we ultimately got it up to about fi few of us. I can remember riding airplanes from the time I came back from Hawaii sales meeting until after Christmas. I was probably home an average of one night a week, out training dealers along with those psyched up Apple field sales force tra ten seconds per file to do it. You just put ProDos disk into the Mac and read it. It's a done deal. I've never retyped that database that I started with in October 1981. From that point on, after that sales meeting, we went back out, quite a Its also got the clear screen, I think the easiest to read screen of an PC in the business including IBM PC. It's a very, very good screen and they worked like hell to make it that way. I saw the work that went on picking the right monitors and making sure that it was an absolutely crisp machine. The systems software that was on there, once we got over the cycle that Apple can't tell the world what's in the operating system, once that got out and the software developers like Lissner and lot of software. I think the role of the manufacturer in software development is to create new uses. What Bill Atkinson has just done with Hypercard on the Macintosh and what Bill Atkinson did with Mac Paint on the Macintosh are two ilte, just Apple. The software developers never got a chance to screw it up, which is what they were afraid of. Software developers didn't do anything for them. There has never been a successful computer where the outside software world didn't do any people as I used to, but it's still in my blood. The LISA, I think, had some of the same problems as the Apple ///. That is, there was no programming languages, initially, still isn't on the LISA, and everything was confidential and privang "we". I don't work there any more and haven't for three years but I do have funny colored underwear. It's rainbow striped. I still consider myself to be part of them, even though I have to get Visitor's passes to go in, and I don't know as mapoints for all the routines were so that they could do good software on the PC. You have to know what is inside that machine in order to do that best software. Fortunately with the Macintosh we didn't mess up. Apple didn't. I keep sayiystem are marked "Apple Confidential"? IBM has said that they are not going to publish the BIOS for PS2. They will, ultimately, I guarantee you. Because that software developer's world had all the BIOS listings and knew where the entry it over to the division for their review and it came back, 80% of it was scratched out and read "Apple Confidential". Now how do you expect software developers to do good software if the things that they need to know that are in the operating se in sales put together a software developers guide to the Apple ///. It was really about SOS. It was a big three ring binder about yea thick, just chock full of everything that you as a developer needed to know to make your proper calls. We turnede assembles for ProDos and DOS on his Apple II. Initially with the Apple /// it became obvious, again in that summer of 1981,that there wasn't a lot of software developers doing anything on the Apple ///. So Bob Rogers and myself and some peoplIt can never be published. He is not going to take the time to document it. I guess for obvious reasons. I think now he is using the LISA editor and he's got a data transmission from the LISA over to the Apple /// where he does his assembly and h There was not an Apple II being used around the company. If you want to sell them something you've go to have software that they can run on what they are using. That's really the reason he wrote that assembler. It's a very fast assembler. When he was designing it he said, "Should I do it on the Apple ///?" I said, "You'll never be able to sell the Apple II product to Apple if you don't do it on an Apple ///." Because internally at Apple everybody was using the Apple ///.e it was he had to have two separate sets of source code, one for Appleworks and one for 3 E Z Pieces. Originally 3 E Z Pieces was going to be an Apple /// product. It became obvious that Apple shouldn't publish it. It wound up at Haba Publishing. everybody else that did Apple /// software, you could use the facilities of SOS, then good software got out there reasonably quick. Ruppert [Lissner] didn't like the assembler that was available so he wrote his own. The reason he didn't liklustrations of the kinds of a thing that a manufacturer has to do in applications software. At introduction, have programs that do the new kinds of things that can be done. If you look at Super Paint, Bill Atkinson is the creator of almost all the graphics stuff that is out there because of Mac Paint. But I don't think Bill Atkinson like Bob Lissner wants to spend the rest of his life maintaining Mac Paint. He doesn't. So they've got other people doing Mac Paint. You'article, even though they wrote an article later on saying how we fixed it, the editor buried that. Cut the article in half. These are some of the reasons why we had such a tough time. I think Apple learned an awful lot from it. I think wnd Pokes. He said to me, "I'll use Peeks and Pokes." I said, "Mike, you took Peeks and Pokes out. There's no Peeks and Pokes in Apple Business Basic." The lack of a command interpreter, the problems with Marilyn Chase, with the Wall St. Journal w how to switch from Applewriter to Visicalc. I got up there and said, "Mike, it can't be done. You've got to reboot the system because there's no command interpreter." He said, "I'll write one in BASIC." Mike thinks you can do anything in Peeks ac through the operating system. Here's this thing which called itself SOS but nobody could execute it and then launch Applewriter. The first time Markula found that out, that was when he called me up to his office that day, he didn't knocalled "The Finder". It's really a command interpreter. A launch program to initiate various utilities and things like that. Somehow or other we screwed up on the Apple /// and didn't put a command interpreter on it. You couldn't exit Visical for the operating system." In my opinion, if you don't have a command interpreter in an operating system so that the user can tell the machine what to do, you don't have an operating system. On the Mac you've got this thing s a command interpreter. And that, to me, was the big failing of the Apple ///. Some relatively senior manager internal at Apple before the /// was introduced said, "We can't afford to do, because we are such a small company, a command interpreters luncheon] for the Apple ///. A guy by the name of Tim Gill of Denver, Colorado. Tim Gill did a software package I'll bet at least half of you are using called Catalyst. What he wrote was what we call a program selector. It really wain the Apple /// and it might put some perspective as to what's happened. Why things happened at Apple on the Apple ///. There's one thing I think you ought to be aware of. I think there should have been one more plaque [given out at today'e's just not comfortable on his feet. Actually a very speaker when you get him on his feet but terrified of getting on his feet. I think that's why he ain't here. Just didn't want to be terrified. Well that's a little bit of my involvement hat a patent will be granted. Because he created something. Until he did that you couldn't use the memory on a Apple II like he has. I don't know what it is, I'm not that smart. Lissner is so far beyond me intellectually, it hurts. It's a shame h out here knows it, there's a patent on a portion of Appleworks. You don't get patents on software. You get copyrights on software. There is some code in Appleworks for the Apple II on which he has applied for, and there's every indication tmotivate that guy to do other stuff. He's one of the most creative human beings that you and I will ever have a chance to meet and know. So is Lissner. This is one of the best programmers that we have ever known. I don't know if anybody ve got Super Paint, you've got Full Paint, you've got Adobe Illustrator, you've got all this swell stuff, extensions of Bill's original creation. If you guys get a chance to hear Bill Atkinson you ought to stand up and scream and cheer and e also learned a lot from the LISA. We learned a little bit on everything. It's been a real buggy ride. You can't believe what it's like to work for a company that goes from 60 million dollars a year to one and a half billion dollars five years later. It was just a ball. ============================================================================== (Answer to unintelligible question from someone in the audience) Let me tell you about that forecast. The forecast system, if you reapany? You're damn right we are. It's a lot more fun place to work. We produce better products. And even though we have made some mistakes, and we've had some frustrations, you and me both on the Apple ///, it's still a hell of a company. With is the better managed and operating company? Are they bigger? Hell, yes. Will we ever catch them? Probably not. The lead is too big. It's too hard to go to sixty billion dollars cause they'll go to a lot bigger. But are we a better comd a half million dollars a year. If you divide 320,000 employees at the IBM Corporation by [into] about 55 billion dollars I think you'll find they are doing $80,000 a year per employee. [Actually, 55 billion divided by 320000 is 171875.] Whice out o the goodness of their heart. Because now they get an extension of the work day. When you say you've got two and a half billion dollars a year out of 5000 employees, I don't know what that works out to per employee, but I think it's arounf you are going to the following schools, then you can go over to the company store and pick out any computer you want and take it home. If you stay with the company for a year, you own it." That is not eleemosynary on their part. It's not don They gave everybody, on their desk, a computer. They did one other thing. They said, "After you have been here 60 days, we have a loan-to-own program. You can go to your manager and if you know how to run two applications, or iything they wanted. Nobody told them what software they had to buy, what operating system they had to use. If you wanted an Apple II, you wanted and Apple ///, you wanted a Mac, you wanted a LISA. I don't think they would have bought them a PC. we found out that there were 60. I maintain that one of the reasons that Apple does two and a half billion dollars a year on 5000 employees is because every person in that corporation had a computer on their desk and could use it for anewriters up to the point that he gave out that edict and they kept the 60 typewriters around until they realized, "Hey, why don't we go buy some?" So they had an IBM guy in there picking up the leased typewriters and bringing in new ones. That's howarted we called them secretaries. There was a famous edict at Apple. It was from Mike Scott, then President, a one page memo, "We will purchase no more typewriters." That was in early 1980. Sometime in 1983 they had been leasing sixty typ doing all this running was Eileen Forest who was then Markula's Area Associate and I've got to define the term "Area Associate". Area Associate is a secretary who doesn't get coffee. That's what an Area Associate is. When Apple first std them. They had meetings with the sales department, meetings with marketing, meetings with manufacturing. Then we adjusted them. As we adjusted them that went back and became the quota for the sales people. At one time in that cycle, ogram Mike and I put together was was really a consolidation thing. It was the damndest thing you ever saw. At one point in the cycle of running the forecast, the field service regional area managers sent their forecast in, we consolidatelly look at what we did, we did not do a forecasting system. Forecast systems takes history and cast it forward. What we really had was a prediction and estimating system where we got the field sales force to give us input. What the prh that I'll say "Thanks." PHASE /// CONFERENCE DR. MEL ASTRAHAN ON: APPLE /// GRAPHICS When I bought the Apple ///, I did not buy it for the graphics. I was impressed as (!) by the running horse display. I thought that was the niftyest piece of animation I'd ever seen. Id availability to the point where Heathkit brought out the H-11. It was a DEC LSI-11/3, which you could put together as a kit for a few thousand dollars. And I was right in the middle of my Doctoral dissertation at the time. And there was a local physice his Starship Enterprise and we'd throw asterisks at each other across the screen using a five million dollar mainframe computer (laughter). Even so, that was long before the introduction of personal computers and eventually they came down in price anil five AM in the morning night after night in the university computer room playing Star Trek against other people on the other side of campus. And we'd blast each other with asterisks for five hours each night. I'd have my Klingon over here and he'd havputer Scientist. I am a Physicist and a Biologist, not a Computer Scientist by trade. I became interested in computers when I found you could hook them up to a TV set. At that time, it was terminals that just made characters and I would stay up untd go off an play baseball or something else. However, that was a time when you mostly dealt with computers by pushing switches or punching cards. And there was just no, until computers became interactive, I had almost no interest in them. I am not a Comeplace. These types of concepts in the early IBM computers were things that my father worked on. He used to bring home computer things when I was little and say "This is a computer", analog computer or whatever. I'd say, "isn't that interesting?" an that's a big one. The concept to interrupt a CPU to service a call from an outside peripheral. In this case it was a radar station someplace in the SAGE Air Defense System that wanted to interrupt a processor and tell it missiles were coming in from somnto using computer from a rather interesting historical perspective. My father is responsible for a lot of the work done on the IBM 701, IBM's first commercial computer. He holds patents in such abstract concepts as associative memory and CPU interrupts,us treat patients and do all the other things we do at a University Clinical Hospital Center. I'll give you a little background on myself and my family perhaps. I don't get a chance to plug my father very much but I'll take this opportunity. I came i"Publish or Perish", if we don't publish "X" articles per year and make our Associate Professorship, they kick us out. So, a word processor is an absolutely essential tool when you've got to do the equivalent of eight hours of writing of work in the day plt I do is actually word processing. I'm a professor at that University of Southern California in Radiation Physics. I take care of linear accelerators and microwave equipment for the treatment of cancer. In the University Professor Business, it's called @BCDEFGHIJKLYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ figured that a machine that had enough power to animate 16 horses in 16 different colors on the screen that was the right thing for me, because it would be a very good word processor. (Laughter...) Since I got the machine, about 99% of the stuff thaian interested in the work I was doing on cancer therapy and he saw me at a meeting where I was showing some of the work we were doing. And he said what can I do to help you to finish this research project? I said I need a computer. So this guy when out and bought me an H-11 computer for this research project, and a plotter. The only way I could afford this was to put together a kit. He had an old terminal at his office, which he gave me. Built the computer, programmed it, had a paper tape reader o(J)=A$(I),1,31)!J/2<>J/2)=4:=+1:ۙ=44B$(J);:J=J+1I:1,180,22:2,280,21:2,2380,23:8A$(1000),B$(1000),C%(511),C$(20),name$(20):=10:=0UCA=128:LCA=UCA+32CT=15 IF PREFIX$= PREFIX$+MID$(B$(I),MOPQRSTUVVOLUME NAME (/DISKNAME) OR DEVICE NAME (.Dx)"P12);::"80C";a$;:Zb$="CHANGING DISKS"$d=23:=0::"80C";b$;::12).n=12:=20:"MAKE A NEW MENU FOR DISK: ";N$xN$)<2110=N$ :210 I=1L(A$(I),A$))200B$0 WAP /// SIG MENU.MAKER PROGRAM (v. 6.2) =".D1"210: Coldstart (320: Warmstart &*X=11000: TEXT SLOW-DOWN LOOP ,X.1 CHANGE DISK SUBROUTINE23œ202:2200<RFa$=" YOU MAY SELECT YOUR DISK BY d, "Wow, Koala Pad, and this, and here comes the mouse," and I kept waiting for somebody to do this for the ///. I saw there were 16 colors there, and 256K of memory, you ought to be able to do something and it never showed up. So I finally got tired aand erase all day long until I get it right and then print it out. So that's the only way I can do any kind of art, drawing and it was a lot of fun. So I had this wonderful, powerful machine and I saw all the software being written for Apple //s and I saisor and to do some physics calculations. But the graphics was always in the back of my mind as something I wanted to play with as a hobby, just to paint pictures. I am a terrible artist when I have to do it on paper, but I can go in on a computer screen demo, I finally broke down and managed to get one of these machines. I thought 16 colors for a desktop machine at that time was enough to tempt me to tackle the machine and do interesting things with it. Once again, primarily I bought it as a word proces didn't have enough memory to do anything useful and the color graphics were interesting but four colors vs. 5000 colors running on the mainframe at the university made it a little bit tough. But when the Apple /// came out and I saw the running horse em that you could have hierarchical file structure, a hard disk. I needed power. Some people like power in automobiles. I wanted power in a computer. And I wanted it to sit on my desk. And it just never came along. The Apple ][ was interesting, but itorth with paddles. That was interesting. But that still wasn't good enough. I had seen professional CAD/CAM systems at the university and this was the stuff. I wanted something that had 2000X2000 resolution, mainframe processor speed, an operating systt, working only with a TV screen, it was still lacking something. I looked at Apple ][s, they had come out at that time and saw you could do some animation and graphics, and Atari was coming out with games at the time and you could bounce balls back and fn it, was able to run basic on it. Eventually someone invented the floppy disk drives and I put one onto the thing It was great, a floppy disk that held 256K on an 8 inch floppy disk. This was about 1975, 1976. It helped me do my dissertation, bu16,B) THEN 240 #1, d$="":=10:"80C";d$ ž#1300I=0"I=I+1:#1;A$(I):290,#1 6L=I-1@j=1:same=0 J:SEG=0 Tœ2030^CT<1CT=1:CT>13000Zha$="{,|,~,}; selects; to new disk; G$:::320H: Error Routine 202:U=11:"79C";"BAD PATH ERROR (NO DISK IN DISK DRIVE OR DESIRED FILE NOT FOUND.)"X=11000:X:::210Z a$="{,|,~,}; selects; back 1 level;1600 &:WW=1:0 :SEG=1;".D1/S EG.F" SEG=1".D1/SEG.G"diskname$=3802  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T READ PASCAL TEXT FILES."04=10:"78C"NOVEMBER":1750M$="DECEMBER":1750826);"-";M$;" ";Ѡ,2));", ";"19";Р,2);" ";/П,2))=>13П,2))-12;џ,6);:1780$П,2))=0"12";џ,6);:ٟ;$П,2))=>12" PM-":" AM-" 1830WW=1530 =26:=21 0,1670,1680,1690,1700,1710,1720,1730,1740^M$="JANUARY":1750hM$="FEBRUARY":1750rM$="MARCH":1750|M$="APRIL":1750M$="MAY":1750M$="JUNE":1750M$="JULY":1750M$="AUGUST":1750M$="SEPTEMBER":1750M$="OCTOBER":1750M$=")2070H540R\A$="RUNNING "+B$(I),16,B)f"79C";A$;:=0pB$(I),16,B) z::SEG=1".D1/SEG.T"t=+B$(I),16,B) yCT=CT+1~240:=24:=0:"@ ..... "DATE.TIME.LINE" ....JM=Ҡ,4,2))BTM1630,1640,1650,166=+IBOTM/2-.5):I=IBOTM:I/2=I/2)I=I-1 œ2120B=B$(I),16)," ")-1 B$(I),"BASIC 0")850B$(I),"TEXT 0")890 B$(I),"CAT 0")1140*B$(I),"FONT 0")18504B$(I),"FOTO 0")1930>B$(I),"PASTXT 0I);v:520: 500THPOS=4:I/2=I/2)I=I-1I=IBOTM THPOS=44:I/2<>I/2)I=I+1I2=-1:I=I-2:IBOTM<30THPOS=44I=IBOTM/2)*2:=+IBOTM/2)-1:0"PRINT.ALL": OA+P 3HA=(81+UCA)A=(81+LCA):::: OA+Q Quits 3IA=(83+LCA)A=(83+UCA)"PRINT.SHOW": OA+S 2JA=(68+LCA)A=(68+UCA)/Screen.Savers/HELLON=THPOS:B$(I);XA<8A>11540bA-7640,660,690,720l:=THPOS:B$(00 =Q:WW=0A=:A=21A=9&oldprefix$=40A=31410: Control C "aborts" program to Basic(:A=13770: Return Selects a file *DA=27:50: Escape to change disks/FA=324000: back out one directory level 3GA=(80+UCA)A=(80+LCA)SIC 0":150A$="TEXT 0":150A$="CAT 0":150A$="FONT 0":150A$="FOTO 0":150A$(L),"BLOCKS")510*=27:=19:"FREE MEMORY AVAILABLE: ";=7:=20:"80C";A$(L);$:=5:THPOS=4:I=1:IBOTM=J-1:620Q=:=26:=21:16 MENU.MAKER TEXT MODULESEG=0"MENU.MAKER"890&*X=11000: TEXT SLOW-DOWN LOOP ,X.1,180,22:2,280,21:2,2380,23:z:A$="LISTING "+B$(I),16,B)$=01:=0::"80C";A$;::12)>=23:=0::". Mr. Wozniak was an incredible genius when it came to hardware, but not when it comes to graphics, because he set it up with only seven bits out of every byte being available for graphics, which means you have to divide by seven in order to find out, you just move a pointer, a single bite that says "graphics memory now starts here, oops, now it starts over there." And on Apple Computer you have to move things from here to there, byte by byte by byte. And with a little tiny processor, it's tough to doputting the memory on the screen. A real, honest-to-God graphics machine with high-speed scrolling backgrounds and other nifty things like that, you can direct the video circuitry where in memory to start scanning, and you don't move things in memorynguage. And you have to be able to calculate pixel locations quickly. You have to have some way to move that data around. The Apple, all Apple computers work with a fixed video memory. There is a fixed address at which it starts scanning the memory and it, but it was handicapped by a throw-back to its old Apple // ancestry. In order to do graphics on an eight bit microprocessor running at one or two megahertz, and to be able to do any significant high speed graphics, you have to write in assembly la It was Apple's first attempt to do something really significant. They gave it 16 colors, they gave it a mode which is unreproduced in any other Apple, a 280-16 color mode, with a lot of limitations. They could have done a lot of interesting things with program for me. It's too late to change it now! But we did take a lot of advice from other people that used the programs before they were ever sold. The Apple /// is an interesting graphics machine. You have a lot of graphics capability in theory. e came because no one else did it and I wanted it for my own use and it's strictly, if there are quirks to the software and you don't like the way certain ways the commands work, that's tough, because that's the way I wanted them to be, because I wrote the that's my relationship with On Three. Bob Consorti acts as a marketer of things I do as hobby projects. I never was particularly interested, I do not make my living at this business. Whatever comes out of programming work that I did for this machinive from Ventura to Orange County, California. He showed up at my house, said great, got up and I said, "What do you think about it?" And he said "Great." And I said "Do you want to sell it?" He said, "of course!" Surprised the heck out of me. Anyway,d fill and drew some pictures. It was the original heart of Draw On Three that ran in 16 color mode. So I called up Bob, and said, I'd written this little graphics painting program. The next day, he showed up at my house. It was about a two hour dr, under a pile of dust was issue number one of On Three Magazine. And in it was a letter from the editor saying "I am interested in selling Apple /// software." And I had written this nifty little program that did a very high speed assembly language floond started learning Assembly Language, and decided as a hobby project to sit down and write something for myself. About that time, this fellow named Bob Consorti put out the first issue of a magazine. I was in a store one day, and sitting back in a corner79C";"PRESS ANY KEY TO HALT LISTING"::202 1020#2,B$(I),16,B)ž#242:::1160Z=1#2;A$:"78A";A$Z=Z+1:Z>1842:::Z=1980*:=23:=0::"79C";"CONTINUE...?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"10 where to turn on or off the dot on the screen. And dividing by seven is not a natural thing for computers to do. The natural thing for binary computers is to divide by two, four or eight, and to multiply by two or four or eight, not by seven. So in order to do anything fast on these machines, you have to do it in assembly language, and more than that, you have to use a lot of look-up tables. You have to sacrifice memory in look-up tables in order to be able to avoid the divide by seven problem. Ess these tapes. Then to use the RGB, you build essentially a resistor weighting network. In your manual that Apple gave you is a circuit diagram in the back that will take those binary values and convert them into colors. And the only thing wrong wit that decodes a binary seven into some sort of color and then synchronize it with the video. And in fact, that's what they do, they give you a synchronization signal out there, they also give you a straight NTSC fully synchronized signal which is what madee output? There is no "weighting" to get Red, Green, Blue. The Apple outputs are strictly digital. If you have a color whose binary value is stored as a seven, what appears on those four bits is a binary seven, what you have to do is build a circuits! All you need to take your beloved Apple /// and hook it up to a video recorder is a cable. (Continues with video demonstration.) It was an excuse to do something like that, that started the whole project. Questions: 1) How do you get Red, Green, Blutarting to use it to do what I had conceived for the project in the first place, which was to have a way to have color pictures come up on the screen and not take four weeks to make each picture. (Shows results of his efforts) You can actually do thi and drew some simple things on the screen. It took me four weeks in order to create three frames by programming each dot on the screen. I said, "That was crazy." So the next year, I had Draw On Three and Bob was starting to sell it and I was actually sdeo camera, and played on a softball team. I was making home videos of that softball team, wanted to make video tape titles and had no way to do that. The first time, first thing I did was write a little Basic program that called the invokable module, In fact, video tape titles is the whole reason Draw On Three exists. And the whole impetus for doing all the graphics stuff I do is because I had this machine that put up 16 color running horses and was supposed to do really slick graphics and I had a viwork. And I came up with an interesting idea. I said, "Wow, this machine has an NTSC output and I just bought a video camera to take pictures of my kids, I wonder if this machine can make video tape titles?" I brought a tape with me to show that it can. of one thousand dollars, which all graduate students and first year assistant professors have a thousand dollars to blow on to learn about the computer. So we just sat down, spent weeks, weekends, playing around with the thing and doing all sorts of this all this stuff internal. They wanted to have exclusive rights to all software developed for this machine. And if you were a developer and wanted to write a program for it they would be happy to divulge a little bit of that information for the mere sumolutely zero publications about how this machine worked. I went and found Apple 2 books, looked in them, deduced by poking things into memory on this machine and seeing what the heck happened on the screen. There was no published information. Apple kept mory. In a 64K machine, you're going to sacrifice maybe 4K of memory for a look-up table. So, as I began to learn these things and find out what the machine was really doing, it was a lot of fun. It was a real detective project, because Apple had absentially, you need a table of look-ups into all screen locations for all possibilities of pixels. That is, a two-dimensional table will do; one for X coordinates, one for Y coordinates and one for a starting address in memory. But it chews up a lot of meh it is that it doesn't work. But I changed it and when you get Draw On Three is the circuit that works. In fact, what I did was replace some of the fixed resistors with variable pots and if you do that, you are not restricted to the 16 colors that Apple, in their wisdom, decided were Apple's 16 colors. You can create any 16 colors you want. I have beautiful color sets that are much more useful than Apple's. They have a real dark brown, most of the time if you want to draw a picture of a countrysidee fully attenuated and you get all the other colors set correctly, then you should be able to adjust the pots for the high order bit and they will only change colors 16 through...start with them fully attenuated...if the value..the bnary value is essentialOK then, the high order bit is missing..you're missing the top eight colors.. Q: No..I'm missing the bottom eight.. 8 through 15..that's the highest order bit..so you need to adjust the red, green and blue just on the high order bit. If you have thoserything fully attenuated and start with color 1, in other words start with magenta. Q Yes..but you can turn them all off until you get all black on the screen..do you start with the colors all white or all black? I have two sets of colors here... st order bit and the color that is always associated with it, and work your way through and you should, at the end of an hour have the whole thing adjusted if you have a TV set to work with. Q: Do you start with white or black? No..you start with ev, now 3 is supposed to produce purple. So you adjust those, set your screen to produce purple or put a test pattern up there and adjust till you get purple. And you can follow this logically thought till you get it adjusted. Just start with the lowered with a little blue, now take the pot with green fully attenuated and red fully attenuated, but you know that the group of four pots associated with binary bit one, the second order binary bit when combined with what had binary bit one producing magentad and blue pots to produce magenta and you've got two of them set already. Now produce another color, take the color on the screen that is color binary number 3, purple (more blue to it) so you have binary bit one which is producing magenta, which is an't produce red, only magenta (red and blue), you know that color number one is essentially 50% red and 50% blue so produce only that color on the screen.Take the fours pots for the four colors associated with the lowest order binary bit and adjust the rery inputs and you know that all the odd colors probably have a significant amount of red. So put your screen to produce only red and set the pots in that whole network to maximum attenuation. Now you know that the color red, or magenta (the machine cbution all have odd numbers. You notice that colors with a lot of blue have even numbers and colors with lots of green contributions have certain bits that are on, other colors certain bits that are off. So in tuning that circuit, take, you have four bina colors and the numbers associated with their binary values it becomes obvious how to tune it, but it takes a little bit of thought. Number one, you look at the color chart and color vs. binary value and notice that colors that have a lot of red contriir ultimate wisdom, that was the color set they decided would be theirs. And if you don't like it you can have any 16 colors you want. 2) Printing Color There is a general strategy to tuning it. Think of the binary arithmetic, and if you look at theany shades of gray do you need to make color pictures? If you're going to use gray scale, you might as well use the hi-rez screen and do it the way the Mac does it, with black, white and two intermediates, it's not all that particularly useful. But in the, what you want is a medium brown. And their yellow is rather poor. I'd like to have a nice, bright yellow. So I readjusted the balance to make sure the yellow was nice and bright. Apple, in their wisdom gave us two shades of grey out of 16 colors. How mly zero volts...it should either zero or one volt...for the low rate colors, there's no contribution no matter how those pots are set. So set the lower eight, zero through seven first with all of the pots associated with the highest binary bit fully attenuated. Then go in, leaving the first eight colors on the screen (in other words, put up a 16 color test pattern) and then adjust the pots for the high order bits in the same way that you did. So, look at color number nine. What is color number nineS? Graphics Manager already runs on the GS, in //e Emulation mode. But it doesn't print Apple // GS native mode 5000 color pictures. There's a good reason for that, I havn't quite figured out how to get a dot matrix printer with four colors to print have more control if you plan it so that everything falls on horizontal and vertical boundaries. It gets very difficult and that's why no one else ever really used it for much of anything. Q: Are you going to move Draw On and Graphics Mgr over to the G you can use color text to do windows if what you're doing is text anyway. That will solve some of the problems. If you need to do color graphics in those windows, then you will be pretty much limited to two colors if you're crossing on diagonals. You cane color text mode. There is a 16 color, 40 column text mode you can have text that is automatically two colors. That text mode is actually used in Draw On Three to do most of the menu screens. They're done in color text not color graphics. For instance,our window. You save off not only the window, but you save the whole area for one byte around the actual window you're working in. Q: My problem... If you're drawing things diagonally, there's not much you can do. That color mode is a throw-off to thow frames. You can save, for instance, the entire memory segment that includes that, replace that with a boundary against a plain black background, and when you're done replace the whole thing. In other words, you need to save off memory more than just yound your window, to always be one raster below the window, one raster above the real raster, one byte to the right and one byte to the left. So what you have to do is sacrifice that boundary bite all the way around and not use it for anything except windry. If fact you can put 4 colors, red, blue, green, yellow if in between you have one of those seven bit boundaries. So if you plan the frames of your windows, and you sacrifice the bite on either side, you can set up the frame, the little frame to go arors next to each other vertically. Remember, the restriction only takes place horizontally. So the first thing is you don't have to worry about things vertically. The next thing is you can put three colors next to each other if you put them on the bound thing that says ground, plug it in there and plug the other into your VCR. Q: Graphics and Video. Merge and overlay? You can't do that like fancy TV equipment, the Apple /// can't do that.. Q: Graphics programming... You can put three cole cable from the video out to the VCR. Yes, on the 15 pin plug back here there is a pin labeled NTSC video out and ground, you just get a DB 15, hook up the center conducter to the pin in the user manual labeled NTSC out, and the outer conducter to thebe the same color as above. In other words, color nine, also has a contribution from the lowest bit, if you adjust the top eight you'll see the bottom eight show up exactly the same way. So they aren't black. Q: In order to record on VCR...do you run thaximum resistance? That means the signal doesn't get through..it's attenuated. Q: On the screen, it would be black? Yes.. Q: So you are starting from the top with color but everything on the bottom would be black.. It won't be black, it would ? It's binary 1001, so you see magenta in position and you're looking at nine which is orange. Well, orange is basically magenta with some more red in it and a little green. So try turning up the red and green pots a little bit until you see orange. Q: M out 4996 colors. I've been able to get 40-50 different colors but its tougher above that. As thermal process printers become cheaper, we may be able to do some of that really nice color printing. (Goes on to discuss color graphics printer technology) So the color printers, the things I'm passing around was done on an IDF Prism P 132 ...done on real heavy paper because after you've pounded on that paper four times with four different passes for each of the ribbons, if you don't have good paper, thets color is the most fun thing that I had for playing around with graphics and painting and hobby type stuff. But this was 1981 color graphics technology. This has obviously been surpassed by the GS and the Mac II. I had a GS at home and starting to progrputers..basically says it can be done with a /// but resolution is not professional quality.) I figure that, personally, the Laserwriter is Apple's greatest contribution to graphics in the sense that, I use them professionally. The Apple ///, with iasy to translate it over. He says using AppleWriter, you get a better resolution on the Laserwriter than with the Mac. Q: Does it look like Postscript going to be the standard? Yes...even IBM accepts it now. (Discusses making color slides from coma. (Ottalini) There's also Don Lancaster of Synergetics in Arizona, who writes articles for Computer Shopper. He's a real Guru about Postscript on the //. And he has routines in there every month using AppleWriter. So I would think it would be fairly e100? I have not used a Laserwriter on the ///, I don't have any experience with it. However, there is someone who has and done that type of work, and he wrote an article in On Three. So get in touch with him...in fact, he lives in Southern Californigures the Laserwriter to do what you want. Q: Yes, but I have terminal emulation on the Mac, using MacTerminal and I just hooked it right up to the Laserwriter and I just typed in the Postscript commands and it created the figure I wanted. Could I use VT trouble getting the /// to talk to the Laserwriter... On the Laserwriter, you have to prime it and set it up with some initialization commands which the Laserwriter driver does on the Mac called LaserPrep, which sends some information down and confiin PostScript yourself. There is no program like MacDraft or MacDraw or Cricket Draw that gives you a way to make graphics pictures on the screen to make PostScript graphics on the Laserwriter. And you will not see it for the Apple ///. Q: We're havingy trouble. The Laserwriter itself has a Qume emulation switch on the back and if you want to do graphics, all you need to do is send it PostScript commands. In fact, On Three did an article on that a few months back. Unfortunately, you have to program it do that kind of quality. But it's coming at a reasonable price in a laser printer kind of printer very, very soon. Q: Do you know of anyone doing Postscript from a /// to a Laserwriter? You can just hook up an Apple /// to a Laserwriter without ane proud to use in your business and send out to somebody, a dot matrix printer is just not going to do that. The same way that a dot matrix printer can't do letter quality on text, the same way a laser writer can. It's just impossible for a dot matrix to can do about it. So, dot matrix printers for color are interesting and if you are clever about it you can do some interesting stuff and they're OK for text, but for doing really high resolution color printing for professional quality that you would bved off, so you get a different impression force. In other words, some pins hit harder than others. So whenever you see print coming off a dot matrix you know immediately because you see little bands where the two passes met, and there's not too much youre's not much left. The Imagewriter 2 does color and we support it, but it has a round platten, and when you have pins striking a round platten, sometimes certain of the pins are going to strike right on the peak of the curve and others right where its curam on that, so maybe something will come out of that. The GS color grahics is nice enough so that you can have some fun with the different colors. If I ever figure out how to print 4096 colors, you'll definately see a product. Putting that many colors is really tough. You don't need 2000 passes. You do color printing by laying down primary colors. And you only really need four of them. When you see professional printed color magazines, its really done in four passes, with magenta, cyan, yellow anside the GS to actually do window-style interfaces is all done within the ROM and also through an interface with the ROM in general interface terms through resources called TaskMaster. TaskMaster is actually something a lot of people would like to ger, and the manager of QuickDraw, and so on within the Apple II GS. And if you notice, as you notice in this demo, it seems to perform sort of like the old demo too, doesn't it? That's because when you really look at it, 90% or 99% of what's going on inthat is that this is a BASIC program. This is a re-implementation of the original GS demo done in GS BASIC. In fact, there's no assembly language in this program at all. This is done completely with a BASIC interface to the ToolKit including Window Manast windowing demo I really saw on the GS. This is the first demo that I remember seeing of Windowing and all the rest of the Mac style interfaces on the GS. This is probably not new to you if you guys have seen GS's and so forth, with one exception, and PHASE /// CONFERENCE TAYLOR POHLMAN --- GS BASIC TRANSCRIBED BY JOHN LOMARTIRE I think that just about everybody has seen this demo. This is the one that was used all the time by everybody to show off the system. It was in fact the firof love, and I like the machine and I have lots of fun with it, it's fun to write programs and what there is came because of that. hat. I'm a firm believer that if somebody else wrote it and its good, buy it and only in the case of last resort, where it doesn't exist, take the time to write it yourself. I have better ways to spend my time. It's stricktly a matter of necessity, and d Laserwriter, there's no reason for me to (keep doing graphics) on the ///, simply because the ///'s technology for graphics on the screen and the lack of a program like Cricket Draft, and I don't have time to sit down and write a major application like th just isn't capable of that many colors, especially the way it pounds up the paper. So you need a laser-kind of a non-pounding process...and they're out there. They're still expensive, but so were laser printers a few years ago. Now, with the Mac an get a magazine, you pull out a magazine you get all magenta because it didn't go through the process properly. You see it in newspapers on occasion too. It can be done and is being done at a reasonable price, but a dot matrix printer with 80 dots per incnse, a bigger yellow dot or a smaller yellow dot or more yellow dots if you have very very high resolution or you can vary the intensity of the yellow if you have an analog capability. But it's all done with the same four basic passes. Sometimes youd black. But you have to have the right combination of intensities. And with a dot matrix printer you can have yellow, but you can't vary the intensity. If you have a thermal process, or professional printing, you can put yellow, but you can put, in a sesee on the Mac. Those of us who have done Mac programming know that it is damn hard to do the events and stuff and window activation and refresh, all the rest of the stuff. In particular when you start playing games like activating a window, bringing in on top and all of the events that happen when you actually say enlarge a window and so forth. TaskMaster takes care of all this stuff for you. When we built GS BASIC, we built an interface to TaskMaster in BASIC, so that BASIC only had to deal with the r "GO". John was doing some consulting, working with FORTH company. He had put out some real neat stuff pretty much on his own in a garage behind his house. I found John, dredged him up. John actually worked on a lot of the early Business Basic stuff. , a long time ago, a guy named John Arkleys used to work for me at Apple back in 1979. Those of you who ever had Arkleys scream at you on the phone, or you never yelled at him, know that the guy is the author of EDASM. He's an internal jock from the wordyou're afraid someone might ask you to? I'm kind of in that second category. I sort of know how and sort of done it but that's the last thing I'd do for a living, so I said, "I've got to get someone who knows what they're doing." Once upon a time door. Maybe you'll ship it, maybe Apple will ship it, whatever." I thought that sounded like a pretty neat idea. How many people here have programmed in assembly language? OK. How many people didn't raise your hand because you really do know how but need some help. What I'll do for you is work something out. If you'll do it, or figure out how to do it, I'll take care of it. I'll give you source in Business Basic and we'll figure out something, once you get it going, on how to get the thing out thed write programs in, and that's what I did. I said to Dan, "No way does that make any sense." Dan said, "Yeah, I think so too but I can't get anything going at Apple right now because we are too focussed on getting the damn system out the door. Ies Applesoft. In 1979 when I first joined Apple and looked at Applesoft after having programmed on an HP and other kinds of mainframes, I refused to write code in that language until they fixed it and then Business Basic came out. I had a language I couly for the machine. Nobody is going to do BASIC, except we're going to jam Applesoft in ROM so that the old programs go on." I said, "You're kidding. You can do GS, you want BASIC, and you use Applesoft? Yeech!" Pardon me for offending anybody that likmachine and all that kind of stuff but all the programmers here are just incredibly hyped up on C. We've got a couple of guys who still remember assembly language and everything but everybody is really hot on C. There's not going to be a Pascal apparentlf those companies, Dan Cochrane, he said Apple needed a manager of languages and utilities parts management. We got together, actually I think Don Williams had sent him to me, and he said, "You know we're going to do this GS thing, and it's really a neat 's an intro. I've got you intrigued. I hope so. Let me give you a little background about GS BASIC. First, I left Apple for a while back in the Fall of 1982. Started a couple of companies and had a lot of fun. In parting with the third one oe through utilizing the full facilities of the system. There are no real limitations to the ToolKit and the tools that you can get to, in the GS. Everything from SoundManager to you name it, and new tools as they appear, are ready to interface. OK, thathow it looks, is that we believe that GS BASIC is going to provide an environment to do any sort of software you want in a GS environment. Everything from converting your Applesoft and Apple /// Business Basic programs over pretty much straight as they areal stuff and GS itself could be turned loose to do all the hard part. I guess part of my talk today and part of the reason for showing you this first, it's really the only demo I have although I'd be happy to show you the source code, to show you I dragged John out of the garage and he said, "It's a neat machine, the GS. (He'd already done one project on it.) We got a chance from Cochrane to get the source of Business Basic and convert it. What do you think?" He said, "Sounds like a neat deal." So I put together him and my partner at the time, Dan Winslow, who was Apple's old lawyer that did the patent trade mark stuff, fought the Franklin and Comb wars, and all that stuff. The three of us got together and went off to do it. It became with this product. This product is even better. Anyway, enough of the pitch here. To tell you a little bit about the language: We tried our best, as I said, to be backwards compatible with Apple /// Business Basis. In that regard we support aportunities for assembly language programmers to fill routines that were useful to a large body of programmers. The way we've done the interface to assembly in this product will also give you more of an opportunity to do high quality invokables for the GSto turn this stuff loose in that system probably. If you want to do the easy part in BASIC, the hard part in assembly, it's kind of an ideal environment. Besides, the invokable module interface, if you remember from the ///, presented product opdevelopment that's around. Those of you who did assembly on the Apple ///, let's say, using the invokable module will find an incredibly similar but far more powerful annotation of assembly language in GS BASIC and therefore we think it's the right place ttle bit of time doing something really fancy? And also, those of you that program in assembly language, and plenty of you raised your hand, I want to talk a little bit about how GS BASIC, for me, presents one of the finest platforms in assembly language ht now is set. We know what it does and that's really what I want to spend some time with you about today. What is this new language and what kind of impact will it have on people who want to develop things for the GS, either quickly or spend a lif it is ever actually shipped officially from Apple, I don't know. We are committed at least to do one more beta version through Apple which is going to pick up some and make some internal changes as soon as it comes up. But the language as it stands rigay today that the beta-4 version of that is now in APDA's hands, they are shipping it. I brought some data sheets along with me today, an at 50 bucks a pop you can actually have one of your very own. What Apple will exactly do in shipping this product, i like this [demo]." We cooked up a language specification. Unfortunately Arkleys is no BASIC jock. I spent little time programming BASIC and so forth, so what we came up with, we think is an outstanding version of the language. I'm happy to srds compatibility. We want Business Basic programs by and large to run unchanged and to tap all of that market an tap all of those people who have that kind of expertise, but on the other hand we want to let them at the machine so they can do applicationsssembler. David became the sort of quasi product manager working for Cochrane on the project. We all sat down and said, "Now what kind of BASIC do we really want for the GS, given the fact that we want to be sure that we've got backwad thinking. At that point we started working very heavily with Apple Product Management. A guy named Dave Ives, who you may know from a book on "Inside A-16". One of the authors of the assembler, of the original version anyway, of what's now the H & W amemory and so forth. But it was real clear that although that was interesting and kind of useful, it really wasn't what the machine wanted. I'm a firm believer that languages are only good if they let you at the machine. So we sat down and really startepretty apparent when we got into it that, yeah, we could do it. In fact we did a port pretty quickly. We started in July and by September we were actually demonstrating Business Basic programs running on the GS with a little bit of extension like larger ll the key features of that language including the data file structures, INVOKE and PERFORM interface, we support, believe it or not, .CONSOLE, .PRINTER, and all sorts of character oriented IO devices so you can do the redirection you know and love. Being able to go to printer or go to disk, within the limits of ProDos at least. We built an interface up so it looks a lot more like SOS in ProDos from the standpoint of usage. We added a lot of new features in the command language, for example a COPY comman the way, as part of this too he now has a version of EDASM for the GS. I'm not sure exactly what the status of that is. Now that John's back inside Apple, it will be a little trickier to get that out. The other thing we've done in data types, I posite. Actually it's sort of a smart expression evaluator. You'll find, I think, too, in the language a lot of touches like that. A lot of which belong to Arkleys, a very bright guy who has implemented things enough times so that this works. By 32 bit integer or in floating point until we have to. So any complex expression will be evaluated at the lowest common denominator or arithmetic until it's time to pump up. We actually started calling that degenerative arithmetic but it's sort of the operformance penalty for using integer, although not a lot of people knew that because the system first converted the integer to floating point and then did the calculation and converted it back to an integer. In this expression evaluator we don't drop intoine for using the integer type. For/Next loops execute six times faster if they are integer than if they're floating point. That makes a significant difference compared to the performance on the /// in that mode. In fact, on the /// you paid a pslow the machine down to interpret constants any more. In any case if you're doing only integer arithmetic in the expression it's going in the integer math pack in the GS. It's extremely quick. In fact, you get a real payoff in this machw, in the language, we maintain a concept called the type of the expression. That means that if you're doing integer expression with just small numbers, say small scale constants, which by the way we tokenize now at entry time, so constants don't have to worry about real-long integer types being compatible. Now complete mixed mode operations work, MOD function works everywhere. We built the whole numerics environment on top of SANE. I think John did it in a very clever way. In expression evaluation no system, not to mention the fact that a lot of arithmetic, integer arithmetic, which in a classic problem, is just a little bit bigger than 16 bit, but overkill at 64 bit, no works. We also integrated the math in such a way that you don't have to for math. We've considerably enhanced the numerics environment by putting in a number of new data types. We support, for instance, a 32 bit integer type which enables you to deal with pointers directly and makes a much nicer interface to the rest of themn handy if you're doing serious business applications. There are a lot of commands and a lot of language features that parallel Business Basic. We continue to support 64 bit integer type, for instance, scale function and all the rest of the stuffgram interface but we revamped the Business Basic EXEC capabilities and a lot of these features. You can now also have an EXEC startup as well as as well as an HELLO startup. It's possible to start up an EXEC file at boot time which is actually pretty dally compatible with THE FINDER so we can launch BASIC applications. By clicking on the program file it will automatically launch the interpreter for you and boot the application. In fact, at this time we don't even have the standard HELLO type prod, a built-in RENUMBER, a number of other utilities that make the command line interpreter in GS BASIC, I think, a very friendly way to work the operating system. Much nicer, let's say, than standard ProDos usage. I should say even now the language is fusaid, we implemented the different integer types. We implemented, of course, the 32 bit floating point arithmetic. We have 64 bit floating point type so you get the accuracy. You deal with this basically with all the same tools inside the GS. We also, internally at least, support the full 80 bit extended type. So you can store and restore that in expressions and do comparisons but there's not an extended type in the language. In addition, there's one other data type in the language I think you assemblke sure that all that, sort of fuses. Anyway, the structure type, I think, you will enjoy and it does give a nice interface to some of the other capabilities. We did not expand the string pool. It's still 64K, maximum number of strings availabls now are truly string quantities, can handle using a string parameter. To do that we do all the fix-up between what the ROM knows about strings and what we know about strings and what BASIC knows about strings. There's quite a bit of work in there to mascal strings, and other kinds of string-based structures. In using the structure type we can basically map onto other kinds of string structures. That means you can CALL the ROMs like they ought to be CALLed using automatic interface. In fact, invokableou can do PEEKs and POKEs if you like it but don't believe anything you hear. Particularly don't use any value more than a few microseconds at a time. Yea, there's PEEK and POKE in the language. Particularly there's also support for C strings, Pa GS BASIC. So we had to cooperate with with the memory manager. That means that there's no way to predict where a particular program is going to be because it can get moved around. So we have this giant disclaimer in the thing that says, well yents, anything else it uses, memory segments, as opposed to grabbing the machine like Business BASIC did. That means for example, when there's an ability to run multiple applications in memory, we can mix. In fact, it enables us to run multiple COPY's inalue to be worth anything, except maybe at zero page, for any length of time. In particular in GS BASIC implements, it's very comfortable within the memory management structure of GS. That means, for example, there's a programs segment, several data segmd be PEEK and POKE invokables. Sure enough that is what you did. The second thing was I really wanted to encourage --- the Apple /// and the GS like it --- are very complex machines. You kid yourself if you think you can PEEK something and expect that vm a lot nicer. PEEK and POKE are back in the language. Actually you can assassinate me for that. Bill and I had a long talk. I had him rip PEEKs and POKEs out of Business BASIC on the theory that the first invokables that anyone would write wouled array to enter into the memory. We have an extended PEEK which basically lets you do instead of PEEKing one byte at a time you can PEEK a type or you can PEEK a structure. Your ability in BASIC itself begets you other kinds of data and manipulates the PUT in Microsoft BASIC, basically allows you to store any kind of structure including strings or numeric type into structured arrays in various spots. It gives you a general idea, basically, like bit maps, for instance, because you can declare a structurfive line program which sucks an entire disk into memory and spits it out on another one. You can structure arrays. It's kind of cute. This is pretty fast too. The idea of structured data type and have a command called SET you have like the old GET andts and arrays can now be 4 megabytes in size. You can have as many of these as you have memory, those of you who like large systems. That's kind of handy because with block file access to the disk you can then have a COPY command. You can write about a y guys will enjoy and actually almost anybody else, too, and that's we have a concept called structure which is basically an unsigned byte array. One of the important things about arrays in GS BASIC is we've removed some of the old Apple /// limie, but there are structures for storing string-like arrays if you want to do that construct and quickly convert back and forth. And also for people who need access to the system, if you remember Business BASIC had a few short hooks that let you get out from assembly language and find some things that you needed, GS BASIC has a complete set of entry points, well documented zero page and you can call floating point accumulator, call the math pack, you can do the kind of invokable, for example, from matrix aretter. Worst decision of a Product Manager or other to bring up is, "What shall we use for a command prompt?" "I don't know. What do you think?" OK, something you'll like. We've got an ed line now that is actually three lines long, can edit three ll you how. Show you a few things relative to that. I think this will work. OK, good old familiar prompt. For those of you who have been around we didn't change that. We thought you'd feel happy, besides we couldn't come up with anything we liked any b If you use the right word it doesn't matter, the order. We've completely redone the interface. Now we have a concept of nouns, verbs, and adverbs in terms of the way the syntax of the language is used. And if you screw up the language will tecompletely. I know those of you who have typed in a line you noticed that the GS BASIC really doesn't care where you put tokens. [Tokens are the so-called "reserved words" in BASIC like PRINT, LOAD, LIST, etc. --- J.L.] You can just throw them anywhere.kable incorrectly and not being able to figure out what's going on, are greatly reduced. The other thing like that that we've done to the language that we think will help people use it in more friendly ways is to really rebuild the syntax checking e use that same mechanism in the capabilities of the H & W Assembler to extend INVOKE/PERFORM in such a way that PERFORM can now do the same type of thing, parameter type checking and so forth. So that, your odds as a programmer using somebody else's invoe proper stuff it is expecting. And that interface, basically, allows us to support any tool as it comes out with proper tools and direct ROM, ROM tools. And we CALL the Tools Locator and do all the right stuff so we're compatible in that environment. W all the currently available tools. What that does is allow BASIC to know what the parameter list looks like, what the pipes are, so it can check your CALLs to the ToolBox and it can also fix up the parameters in such a way that the ToolBox gets thhanism through something called the TDF file, which is a new concept we introduced in this language. TDF file, or ToolBox Definition File, enables BASIC to know what the structure of a CALLing mechanism is for Tools. And there are TDF files available for through a new service called CALL. And CALL can be either spelled out or simply underlined. So if you want to write programs that actually look like you see them in the ToolBox reference, you can do that. We support parameter passing and there is a mec" which is sort of a different animal, as we are all aware. We mentioned just a minute ago access to ToolBox and ROM. Basically what we've done there is we have extended the concept of PERFORM which was the old way to get to results of the module,nd so forth, extended it significantly. By building a sort of SOS-like character file interface on top of it, we've been able, people, I think, to convert programs a lot easier than you would if they had to say, "Oh my gosh, now I have to deal with ProDos fairly good control back and forth. In fact, this is one of the ways Taskmaster works. I'll talk about that in a minute when I get to access to the ROMs and pools. Basically we've taken Business BASIC and in the area of data type and access to memory aithmetic that people really liked to do with Business BASIC but couldn't. In fact, you can even call the interpreter, ask it to find a particular line number for you and execute that line and then go back to the assembly language routine. That'sfull BASIC lines, and guess what, all the insert stuff works, and when I decide what I want to do with this I just hit RETURN and it accepts that line as entered. So you have complete add-line capability built into this. You can even do multiple edits, you can do auto-renumber, and you can enter lines like that. You edit back and the line is returned. Here it is. That's what I wanted to show you. Notice the little caret. We drop the err message down one line and we put a caret where the syntax ones. In fact, a run-time system will do two things. The first thing it will do is pack the program and replace all of the references, line number and LABEL references, with absolute addresses. Excuse me, I should have said relative addresses, aode for itself and merge a few more in from a file and so forth. A lot of thought has gone into this to make sure it would be reasonable to build a compiler. We made a run-time system as well. So we would be able to create programs and ship pre-labelledhat that we've eliminated that would fit the immediate mode command but you could also do them in deferred mode, that will enable the compiler to make sense of what the hell's going on. It's a little tough to tell a compiler to read a number of lines of could be portable. For example, there's more Delete Lines on the fly. It takes an immediate mode command. I argued with them back in 1979. That should have been taken out then. It's a pretty terrible idea. There's a number of other minor things like tnguage. And I think that's pretty neat too. The point is we built, in effect, LIST options that allow you to list out without line numbers then you can pass it by the compilers. We also eliminated a number of features from the language so the compiler cine number references are used at all. In fact, Tom Leonard of TML Systems, of whom you may have heard, has actually demonstrated a prototype compiler already. Now that this syntax is set we can think seriously about doing a compiler for this laher nonsense you never can remember to do. Notice it goes to shutdown. That's correct. We implemented LABELS, that can be used anywhere a line number can be used, in any jump statement. In fact, you can write your program in such a way that no lrested in, in that light. One is, ON-BREAK is the CONTROL-C disabler. You can build exceptions on BREAK and you can do BREAK-ON and BREAK-OFF. CONTROL-C now interrupts an input statement without you're having to press the carriage return and all that ott in the BASIC manual, we just tell you that this stuff exists and go there to find out the definitions. All these things are available. In fact, notice another thing too. ON-BREAK, NO TRACE can go to shutdown. Couple of things you might be intethey were just new parts of the BASIC syntax. The TDF files also tell you, as well as your available ToolBox reference, in fact the GS Tool Members Guide is an indispensable tool honestly in writing this kind of stuff, because we don't document ice the Dispose All Desks, Start Up Win, Start Up and Refresh Desktop, you use those names, the names are present in the TDF files, and how to CALL that tool, all that information is in TDF. So once we do that you can begin to us those ToolBox CALLs as if ries allow you generalized access to interface definitions for external tools. Once a library is loaded in, the TDF file by the way of APPEND continues to build a giant library of all these entry points. Once those entry points to tools are defined, noti we know where things are out of sequence. You will catch a lot more syntax errors than were ever caught before. So we have some fun with that. Notice the library command. That's our way of loading into memory the ToolBox Definition File. Libra scanner finds the problem. For those of you who are jocks that helps a little bit, but for people who use the language like students and so forth, they're going to find that a lot more friendly. And because we do adverb, noun, and verb kind of checking,nyway, offset. So it makes it a little tough for people to figure out what's going on. It also makes it EXECUTE significantly faster. There's a token there for and absolute jump as opposed to a line number/label reference. We do a lot of pre-scanning too, on LABELS especially, certain kinds of LABELS. In addition to implementing CALL mechanism through the library, we still need to INVOKE and PERFORM as I said before. We have a couple of new mechanisms that make structured programming handy. Go judiciously save, chintzing is no serious problem. ToolBox interface looks pretty solid too. The only thing we can do for this is work with it. I think I mentioned in talking about ToolBox and ROMs, structured programming and such, one of the mobeta version. In terms of beta release, I hope I mentioned before, Apple has it now. It's pretty stable. We haven't really seen a major crash, bug, or anything like that in some time. And so, for development purposes, just as long as you sort ofn it would have been very tricky. BASIC by the way, has grown. Those of you who are used to the old 25K assembler file --- interpreter file --- will now discover Business BASIC is right at 60K at this point and growing ever so slightly with every SE isn't quite as nice as it could be but it's a lot better than it was and it's really straightforward to implement. John's system was really very clever and it turned out to be almost trivial to implement that. Whereas if we'd done a full implementatiothe same product response in 1987. What did this BASIC have that wasn't there before? In a way it's pretty familiar. The old standard implementation. People who used other BASICs will notice these things work kind of like you expect them to. IF and EL tried to modernize the syntax of the language, bring it up to --- (Business BASIC at the time was one of the most advanced BASICs on any micro, I'd say. I liked it a lot better than Microsoft BASIC A for a number of reasons.) So we tried to do nual. The old Business BASIC would let you NEXT IF/THEN/ELSE statements but after about 150 characters or so you sort of lost track of which was which and so forth. This will allow you to build things so they will look nice in the program. So we've really in relatively any combination of those. In addition we are supporting in a limited way, multi-line IF/THEN/ELSE. As long as a follow up line starts with a THEN or ELSE you can NEXT any logical level. It's explained fairly well in the mandpoint. The other thing we've done that really helps with structured programming, we've implemented DO/WHILE and UNTIL. So you have a full capability there to impact decisions. You can do a DO, DO/WHILE, WHILE logic expressions, UNTIL logic expressionsntly so that external functions can now be typed and used almost in any environment. In fact they can return strings, for instance, they return any data type. So there's a lot of stuff that enables structured programs from a procedure-oriented stater. So we do support recursions essentially at any level. In addition to procedures we have multi-line FUNCTIONS. Also with argument passing. An external function interface, the old EXFN interface in Business BASIC, has been beefed up significaive people interesting things to use without them screwing them up very much. Well now you can do three reasonable kinds of procedures. These procedures can CALL functions and CALL other procedures in a recursive way. It can CALL itself too for that mats are global throughout the entire program, so it's very easy to do argument passing, set values, and so forth. Multi-line procedures are very handy. That's another thing. Finally there's always been a classic problem with GOSUBs, or whatever. How to gdown the list on those. First there's a real PROCEDURE capability. A PROC with multiple arguments, a multi-line procedure including multi-variables and you can use global variables, of course by not declaring them Local in the procedure, all arrayst important parts of being able to give the kind of program I just showed you with reals and so forth is our interface to TaskMaster. And the way TaskMaster works, once you've set up your window definitions, your menu definitions and basically your environment, then it manages the events for you and interrupts you only when certain things happen. Now what we've done is built an interface, GSMaster, that allows you to put BASIC line numbers or LABELS into an array. And so when TaskMaster has something ally do numerical programming. We support the propagation of names. We support, not a number of things, number types. We also support the concept of plus of minus infinity. If you divide by zero and you have EXCEPTION turned OFF, you will get a, dependWhat you have to watch out for. Some of them have to do with IEEE arithmetic. One of the tricky things about SANE, we did a good implementation of SANE arithmetic. We support ON-EXCEPTION, all the EXCEPTION traps, traps in arithmetic so that we can actu brought data sheets for everybody and you can get some more information about that. The other thing I brought is about a six or seven pager we did on conversion issues. Apple II/GS BASIC program conversion. Some of the issues deal with ProDos vs DOS. g in other environments. Question: Do you have an example of a program that will convert old BASIC into GS BASIC? [The questions are not clear on the tape. This is as close as I could get to it. J.L.] Yea, there's been some kicking around. Iill have to deal with all that stuff to initialize, but there's enough examples in here, I think, to get you going and if you're used to dealing with the ToolBox documentation this is going to be a pleasure compared probably to what you're going to be doinsome windows and not load the PICS and you can do anything else you want basically in the GS environment. It is pretty tricky to do ToolBox programming. Sequence of events, startups, dealing with all the pointers, building a window data structure, you steasy. This is a fun application even when just hacking around. In this particular example shipped with the disk so you can basically use that as a starting point for how to get this cranked up. It's simple enough so that all you have to do is eliminate t's trivial to do that kind --- you just clear one of the windows, clear the port, and start printing stuff in the GRAPHICS. Of course the clipping boundaries and scrolling and so forth are easy to support too. We really tried to make it pretty n a position using the QuickDraw CALL. In all respects whatever QuickDraw condition CALL you gave it, in the right text, you can print number functions at that particular spot. It's really straightforward to do stuff in the GRAPHIC environment. In fact ithat file as you would to, as you used to, in the old .CONSOLE. In fact, you can also OPEN .CONSOLE and do the same thing but .CONSOLE is the text screen to play around the right text in the improved fonts, whatever, since you can switch fonts on the fly iOn the other hand if you judiciously use the capabilities, it's really pretty straightforward. We've also implemented the idea of a GRAPH port in BASIC, what we call a Window File. You can OPEN a window as a file and do PRINT number statements to again the appropriate Tool CALL. In that way we've enabled a very fast, clean interface to TaskMaster while leaving most of the tricky stuff in the interface behind. Otherwise there would be no way to really do it in an interpreted language like BASIC. , for example, in the case I showed you, I have on one of the menus Windows #1, #2, #3, #4. Now there are routines that basically handle that message. So they bring to TOP --- Window command can be issued by picking up the menu pick and then dispatching for you that your program needs to deal with, it will appropriately jump to the right part of your BASIC program, makes it do a GOSUB or a CALL to do effectively a GOSUB to whatever routine you provide to link into that key development. Let's saying on how lucky you are, plus or minus infinity which will propagate through the rest of the calculation proper. You won't do the arithmetic properly, but --- And you can also get the EXCEPTIONS --- divide by zero can be trapped and won't propagate and you can actually deal with it. But that makes it considerably different than Business BASIC. In particular COMPAREs are tricky. In Business BASIC you only really had one floating point type. So you had one floating point number COMPAREd to anothcan get to through a function called BASIC@. And those are reliable through invitation of the program and so forth. With BASIC@ and even some of the other zero page locations that are guaranteed to be cool, you can literally do almost anything you want. e other hand we've implemented a function called BASIC@. What that does is get you to a table of all the goodies you want to know about BASIC which you would normally try to PEEK, and in fact there are 60 or 70 key, very base type instructions, where you ly. Personally I can say that because I didn't write any of it. Anyway, there's a dynamic memory out there so one of the things that does s gives us, as I said before, PEEKs and POKEs, but fooling around with exact locations is very tricky. On thgo from there. Or you can shrink your data space also because we implemented ELASE for ERASE. You can dimension an array temporarily and when you get rid of it, you shrink the data space back. There's a lot of stuff in there that's pretty clever, actually. If you find for example, you want to dimension an array, suddenly you get the blues, and you normally wouldn't do it because to grow your data space on the fly you have to make sure everything is cool, all the pointers fixed up, and then you we only initially allocate about 32K rigid data space. That's fine for little programs and stuff like that but for any interesting size programs, the first thing we need to do is allocate more space. And you can do that dynamically with GS BASIC on the fe things that make sense. In general, there are a couple of more issues like that in conversion of number types. Dynamic Memory Allocation One of the things we did to be friendly in the systems particularly for co-resident applications, is that ision if what you really care about is, you know, 'what is one-third?', about. So you can set SHOWDIGITS to 6 o 7, for instance, and in normal print outs, not using PRINT USING, you will get whatever digit precision SHOWDIGITS presets. So we did make somcause things can get pretty hairy when you start dealing with fractions, is we have a concept called SHOWDIGITS. SHOWDIGITS sets the default number of digits that numbers will be displayed at. So you don't have to deal with printing out 19 digits of precscovered that every time we tried to get an answer that worked, somebody else hated it. Somebody who really wanted to do things correctly found out that that didn't work for them. The one compromise we did make, and I think works pretty well, begs in the arithmetic that get tricky because of the fact that we had to support SANE. And believe me that was the biggest arm wrestle we had. We talked about fuzzy COMPAREs for a long time. How close does it have to be before it really is equal? We diion with 64 bit precision. The answer is A won't equal '1 divided by 3'. What you have to say --- well several ways --- typically you'll convert the two A's to the floating point '1 divided by 3' and everything is cool. So there are thinlated to 80, 80 total bits, 64 bits of precision? For example, let's say you do A equals 1 divided by 3 and then you say IF A = 1/3 THEN, well, it turns out that A of course stores and rounds your one-third answer and '1 divided by 3' stores as an expresser, no big deal. In this language we have a couple of floating point types and a hidden type, the 80 bit extended type. See, what happens if you COMPARE a 32 bit floating point number with 6 - 6.5 digits of precision, to an expression that has been calcu We can normally do PEEK and POKE in a reliable way as opposed to having to take it on the chin. A number of other things: I think I told you we cut out DELETE as a command. We also cut out LIST as a command within a program. I personally thought that was sort of bizarre. You can always do a LIST out to a file but you can't list the program from within a program now. That was another compiler issue and there are some other issues relative to doing that. So we cut that out. Couple of other thpretty decent. Apple will have available the cruncher and what we sort of loosely called the optimizer which is this thing that goes through and replaces references and they'll have their own run-time environment. The run-time will be licenseable throughstick it in ROM and I don't know yet in fact of any specific plan on how or if Apple will ship this as a current official Apple product in an Apple box. The programmer's and developer's version that will go out through APDA at 50 bucks a pop is, I think, of gets you there for the GS. Question: Is there a point where GS BASIC will be in ROM? Actually Apple has no plans that I know of to do that. The ROM space is there, I suppose, but that's kind of tricky. I don't know of any plans right now to rs that you want from having to get it out of the STROBE format, and those functions also handle clock rollover and a number of other problems you can run into in Business BASIC which was subtle but could be tricky. So a number of functions we added sort panel setting will decide how you will be formatting. We get them from the operating system so we decided to go ahead and let that work as you would expect. On the other hand we implemented a DATE and TIME function which will enable you to get the numbept we cut off CATALOG. Of course CATALOG works a little different but programs that read catalogs of subdirectories will need to be revised a little bit. DATE and TIME, Date-bar and Time-bar are a problem in the GS environment because your controletter decide how to check those parameters. Again to be a good neighbor in the system. We spoke before about the Directory Files, directly being able to input from DIRECTORY files, we had those come back in CATALOG format as you would expect, excere. It still works but there are a number of parameters now in the FRE function that lets you look at everything from 'how much memory did your program use at the highest usage?', 'total variable space', lots of stuff to let you do memory management and bthe string pool', 'delete a string from the string pool' now can be CALLed directly from an invokable. It's very clean but execution is a little tricky. Because of all the segmentation stuff, the old FRE function doesn't make a lot of sense any moive. You can now get to numeric types and get some really, really nifty stuff. There are standard ways now to CALL from an interpreter and get things like 'where is a variable?' or 'store this variable in the variable table', 'store this string in ect that one of the first things that will happen is a lot of good old Business BASIC invokables, at least the ones that make sense in the GS environment, will probably be duplicated and re-written by somebody, but I don't know if these people are still all with type, if you use BASIC data files you do a lot of that, are changed because we've added a bunch of new types. You'd have to look at any of that. If you did invokables before they'd have to be re-written using the H & W Assembler obviously. I susp expanded to do 8 bit functions, to do the full 8 digits of HEX, or 8 bytes I should say, so we can have 16 characters, so we can deal now with larger structures and allows you to do quicker conversions. Type Functions Obviously programs that deaings like EDIT and AUTO and some of those other things you could do. By the way there's an AUTO, remember the other thing I showed you, EDIT, and so forth. HEX and TEN which I used to use a lot to communicate with other kinds of data structures have been Apple so that you can get it through the standard development license program. Not available yet but should be available reasonably shortly. Question: How soon will it be available from APDA? My understanding was that after this AppleFest it's selling. It's your classic APDA type deal. The manual is an APDA style manual but it's on 8.5 by 11 pages, but it is "Garamond" for those of you who are font fanatics. It's reasonably accurate. The other thing is it's very detailed. Unlike the origina PHASE /// CONFERENCE MAIL LIST MANAGER UTILITIES by Banks Doggett Jr. This is a session on the Mail List Manager Utilities by Dr. Al Bloom. Are any of you Mail List Manager users? You've got lots of people listed in the form of mailing labels. That'-----------------end of tape----------------------------- tape.] What about the standard text character set? Is it fixed on this guy? I've forgotten. It is fixed. By the way, 512 [512K RAM memory] minimum for this rascal, and to do really big window applications it really wants one meg. -------------, I was saying, the parameters were arranged in some new parameters. When you do and OPEN, say OPEN# 8 Window File, you can then use FONTMANAGER to change fonts and do PRINT and it will print whatever font you selected. Question: [Unintelligible on the witch to GRAPHICS mode, you OPEN WINDOW and then you can, basically you can use FONTMANAGER, and when you print to that window file, you do an OPEN --- Your OPEN syntax has changed considerably since we're opening lots of new things, but ---- Oh no the Apple /// Console Driver are implemented in the .CONSOLE in GS BASIC. So if you need a little text support stuff and all that, it's there. Question: [Unintelligible on the tape.] Yeah, from the QuickDraw tool. What you do is you have to sApple IIe book can handle the series E-2 and series E-1? I'm almost positive. Boy, will they love .CONSOLE! John did a hell of a job with supporting Windows which are now called Textports within the console. A lot of your favorite features fromtion, whatever. There's also PREFIX.8 which is actually number nine, 0 to 7 plus an 8, which tells you where the original boot volume is. We need to keep track of where our tools are so we can always get back to ground zero. Question: Are you sure the etween screens. For example, we come up and initialize certain tools on boot. When we're running under FINDER obviously you start an environment. By the way, we support all 8 ProDos prefixes in GS BASIC. We've extended the PREFIX mechanism, funcr? You've got it all --- well, let's see. The GRAPHICS that's built in is all QuickDraw. So you have everything that QuickDraw will do. Question: [Unintelligible on the tape] Yeah, but's it's a little tricky because you're switching b what developers need and we weren't afraid to stick as much stuff as we could think of in here. If developers say, 'we need more information', we'll dig out more stuff. Question: Does APDA use the same kind of CALLs that invoke HGR and HGR2, or whateverite an invokable, write even a whole manual if you want. John and I sat down --- when I managed John he was a text support guy but he got a lot of applications started in that mode back in the late 70's and early 80's. We both know, I think, pretty welll Business BASIC manual which I wept bitter tears over, this one, in the back, says 'hey, for those of you who aren't afraid of stuff, here's the stuff.' And there's a significant amount of documentation including documentation on how to ws about all the program is good for. But it's very good for that. And we want to talk about how it can be more useful for that purpose and how it can be used with considerable more flexibility than the people that released it provided it for the user. d people fell in love with that quickshot machine. We bought Quickfile while Rupert was still up in the mountains thinking about what Don (Williams) sent him to think about, how to use Control Y to YAP a line in 3EZ Pieces. And I called him one day bst Manager. And I've given you some indication of the flexibility. One other ability Mail List Manager Utilities provide is to export the data for use in other applications. 3EZ Pieces came out a couple of years after Mail List Manager and PFS file. An wrong as long as you keep using a part of a word processing document to save yourself some trouble to continue to proceed. Now, we talked about this as being a set of programs to add some flexibility and power to this Apple /// program called Mail Liil List Manager Utilities provides a way to make some modifications. And I've learned how to spell "institutional" since I got here Al. The nice thing about computers is that if you do it wrong once, you give it an opportunity and it'll continue to do itnty and zip code. But she was very upset when someone asked her to provide them a printout of the mail labels in alphabetical order by their names, because she couldn't find a way to do it. Mail List Manager just wouldn't do that. But Dr. Bloom's Maver 200 and we could save money by sorting on zip code. And so she typed in about 700 names with that mail list with it set up to sort on two fields, that you could sort on and that meant you could have keep and find records and modify them quickly by coun and was all inspired to learn how to handle that beast. And she set up a mail list and did it for a person who wanted to be able to print out labels by accounting orientation and have them sorted that way and was smart enough to realize there were od was replaced with a machine in the 20,000 serial. And that machine still operates today. And it was on that machine that our office secretary had pulled out of the box Mail List Manager manual and she went down to the university for a day of instructio And someone said nine was the biggest order they ever got. The order from our university was more machines than that and one machine came to the office I was working at. So when we tried to get that machine to function, it didn't and it went back anay and was told it wouldn't work. And since I was fooling around with an Apple //, I was the office Guru, at lease with Apple-made computers. Our university had made the decision to install Apple ///s for business purposes prior to the release of the PCs.Apple ///s in our office under 10,000 serial numbers back in 1981 and when it arrived it sat on my Director's desk for about six months and I have no knowledge of anyone ever turning it on. Prior to this episode with Mail List Manager, I came in one dil List Manager, because the first time I met Mail List Manager, one afternoon I came back to the office and my secretary asked "How do I sort by people's names?" And I didn't know what she was talking about because I'd never seen the program. We got Mail List Manager is a mail list processor. The Utilities program that we want to share with you I have found to be very useful and Allan Bloom is the author of that set of those Utilities. And before I found them, I had some very unkind words about Maecause I was attempting to set up an office calendar that we could keep track of the 23 people who worked out of my office as we wandered around the hills of northeast Iowa in beautiful Swiss-like country. And we wanted to print a calendar that would show each day of the month and each county that this staff was supposed to be working in. And we wanted it to come out in that sorted order and we had a problem trying to figure out how to get Quickfile to accomplish that. So I called Mr. Lissner and askewing what each of these does. Mail List Manager gives you quite a bit of information about itself and its structure; its sort fields and specifications. It takes about three screens to find all that information in MLM.INFO gathers all that information uprogram is a little smarter than that, it leaves you some room to work on. MLM.ASCII is the export capability we mentioned and there are several formats the program uses to prepare Mail List Manager to be used in other programs. Just a brief word reviager is the ability to leave the first disk partially unfilled so you can insert names if you're breaking the list up from A to M and N to Z and you want to get some A to N names on that first disk Mail List Manager merges it fills up the first disk. Al's r more and merge and sort and remove duplicates and it requires a hard disk for temporary storage before you write it out to the final two disks you want to split the data in. And one of the nice features about that that's different from the Mail List Manthe two fields. MLM.LIST allows you to do column print-outs with columns not looking like mail labels. MLM.CNVT conversion program that allows you to convert the data into a different output format. MLM.MERGE allows you to move the data from two disks oled MLM INFO. He uses a unique naming system. There are six programs in the set. It comes as a six-sided disk collection in TAU's library. MLM.SORT allows you to do some rearranging of the format,resorting on any field rather than being restricted to ed as we would have liked so we did a "Second Look" at Mail List Manager Utilities in the Spring following. So you may want to take a look at those articles. For these programs that add the flexibility and power to the processor, there's a program cal different ways within Mail List Manager with the Utilities we have from Al. Now, what are the programs we are talking about. I don't know if any of you read the review published in December, 1986 in TAU. We decided we didn't get quite as much cover do. You can't just write it out as an ASCII file because the name field is the complete first and last name. But with the facility here, we can add flexibility to export the data and break up those fields or we can reformat the data and reuse the data in" off and throws it away and finds my last name on the other side. That's a nice feature. But then, when you want to transport that data out and break the name up to first and last name up for sorting purposes or other purposes, it's very difficult todoesn't parse off the last name of the (deal) with that as a field as Mail List Manager nicely does...I'll complement them for that. I have a "Junior" attached to my name and it even puts the right name in the right place. It somehow parses the "Junior Mail List Manager will not allow you to make any changes once you've set the format up. It's all fixed. If you put name in and use the first and last name as one field that's the way it is for ever. When we transport data over to other data bases, it 't have a jumble. He suggested the padding of the numbers to treat it as a string. I didn't know much about a string. I hadn't even learned much about AppleSoft then. But he helped us though that problem and others and was very courteous to deal with. ed him about the problem. He suggested we might make up a key field of one category by combining the county and number with the code for the month. And we did that and padded the number so alpha and numeric characters sorted correctly as strings and didnp and prints it out in one screen, either for the console or to an individual screen. (Boots Mail List Manager) What we'd like to do now is show you Mail List Manager Utilities can do. The language that these programs are written in is Pascal. Provided with these disks is sample files. You'll notice that there are three strings of information about this particular file. It tells you the name of the field in use, it tells you the specifications and field to be sorted on. In this particular fi s simply AppleWriter commands you can string together in a file and it can be executed. It does have one or two programming type commands for basically accumulating accounts, to help you build some logic in your WPL programs. WPL Program is simply mo PHASE /// CONFERENCE WPL By Ed Gooding Jr. I'm not going to talk about the individual WPL commands and all that stuff. What I really want to do is stimulate you all to get into WPL and start using it. If you know AppleWriter, you know WPL. WPL id very easily be imported into 3 EZ Pieces to build a new file in that program or into DIF format. A very useful set of utilities indeed. Al's articles in TAU each month and his style on how to use these set of utilities is unique and I think you'll ts your data into formats that can be used for AppleWriter mail merge purposes, or into field, name and data that could be read into Keystroke, for example or strictly into data. The value fields being written out a line of data for each field. That coul that program allows you to make some changes. MLM.MERGE we talked about, merging the data from two files. That's a neat program but does require a large capacity disk, either a Profile or other disk larger than 143K. And the ASCII program conver think any of us have ever set up a data base or list processing program that we wanted to be married to for the rest of our life. That's supposed to take place with the opposite sex but with data, that's a marriage we don't always want to have happen. And. MLM.CNVT convert program restructures the file format. It allows you to add fields, delete fields, split up fields, split parts of the first name and last name into a new field. It will also let you combine fields together if you like. And I don'tf your paper. But with MLM.LIST you can design a custom format and put the fields of data in the columns you would like and have it sorted in the way you would like and have subgroupings with headers and footers on each page. It's a very nice featureo's ever used Mail List Manager knows you only kind of paper printout you get is either on labels or paper in columns in the format of the mail label itself, name, address, city, state, zip. If you want two columns it will print two, or up to the width oan not do with Mail List Manager itself. So that's very useful. The second program is a sort program that enables you to sort on any field. MLM.LIST, we talked about it printing data in columns. It allows you to print headers and footers. Anyone whng me disks to do things with them or tell them what's on them, if someone tells them to get this mail list out and run it. And I can use this program and quickly read those Mail List Manager disks and put on paper a print-out of that information that I cn about the print specifications that are stored on disk. And that's useful information to have. You can get that information if you want to without having to boot up the program for other reasons. That's MLM.INFO. I find it's very useful when people brile, it's set up for the name, that's sort field one. Sort field two; city, zip, extension, others 1, others 2, miscellaneous, and it includes in line two the street and in line three, the state and zip code. Now at the bottom, you find the informatiost of the AppleWriter commands and all of the print commands. And you can put them together and you write your program in AppleWriter. You store it as a textfile on disk like letters or anything else. You execute them by typing and P like you a you want. It does use a few programming-type commands, setting up an X and Y counter to set up a loop. This is a really useful WPL program that will let you print multiple copies. You can custom tailor these things too. Simply load into AppleWriteless you have a hardware buffer where you can hit the repeat button. So this WPL program, will print multiple copies. And it's 1129 characters, simply asks you for an option, the file name, number of copies and goes through and prints the number of copiesriter to a .PA, which is formfeed in Wordstar. There are a couple of WPL programs which make up for deficiencies in AppleWriter. One example of this, one problem of AppleWriter is that there is no way to print multiple copies of the same document, unand you're welcome to download them. I'm working on some other programs that will convert embedded AppleWriter commands into embedded Wordstar commands. And when I do that, I'll simple reverse the process. I'll change .FF, which is a Form Feed in AppleW WPL will do this fine. I give most of these a two letter file name on my AppleWriter disk, (to make it as easy as possible). That's one that's useful to me. Here's another one. Those of you with modems, I have many of these on ///'s Company (BBS) off the display. But it works very well. This is my first WPL program. And I'm showing it to you as an example that may not be very useful to many people but it was something I did that I was spending a lot of time doing manually. It's ridiculous. ing this junk. And this program is great. It even kind of gets me, because I don't turn off the display, so it does it on the screen, so you can watch all the A's go to little a's, the B's to little b's and so on. It's kind of cute. It's better to turn leWriter commands strung together. This program goes on and on, and can even capitalize the first letter of every sentence! I just started adding to this thing. I was spending significant amounts of time on BBS's and spending massive amounts of time edit was in 40 character and all caps. So I would spend hours converting it over to be more compatible on my Apple ///. And after I did that too long, really I said "This is crazy" and wrote a WPL program to do this. As I said earlier, WPL is really App I ever wrote is the one I have here. All of you know that I'm a BBS freak and I have been for years. And I used to download a lot of stuff from Apple // bulletin boards. And everything is pretty much written in all caps. So I would download stuff and itead the manual and get into writing some simple ones. One reason why you'd use WPL programs is that if you find you're doing the same thing over and over again in AppleWriter, then chances are you need a WPL program to help you out. The first one thatyou can chain programs together, so if you need more than 2,048 characters, you can structure your programs modularly and call one from the other. Keeping them small also makes it easier, so you don't get bogged down in huge programs. I'd recommend you rhe Help programs that come from that menu are done with a "DO" from within the main program. They're all just chained together. You are limited to 2,048 characters in a WPL program if you're not using footnotes. If you do, it cuts that in half. But re going to print something and then type "DO" and they the pathname of the WPL program. It's very simple to execute. Your Help Screens in AppleWriter are WPL programs. When you hit ?, you generate a "DO Prefix/Menu" and the programs, tr and change it then save it back. You can get fancy with these things. allows you to embed control codes directly into your text, so you make your printer do tricks. You can also make your screen do tricks. You can clear the screen, ring the bell, invert certain things like warning messages, so you can get really fancy, build boxes, really handy to have. There's another program, called Super AppleWriter. It's also known as AppleWriter 4.0 or 4.1. It's a version of AppleWriter that camee speller is hard coded for a 64K document. If you try to spell check a document larger than 64K, it will truncate everything larger than 64K. In other words, if you try to spell check a 100K document, and you come back to AppleWriter, you'll have the fictly to Super AppleWriter, but since it doesn't have the documentation, but you can get the 2.0 version with documentation from Sun Systems. 4.0/4.1 are also unprotected. 2) AppleSpeller There is an anomaly with Super AppleWriter and Apple Speller. Ther program into AppleWriter, I urge you to get this set of WPL programs. They're simple, they're small and they're very easy to use. Man, they are some kind of useful. Questions 1) Should I upgrade from the 1.0 version of AppleWriter? You should go direet of Merge /// programs. Few people have heard of them, but they are very easy to use and play with and I've never had a problem with them. Al Bloom has written up something about them already. If you folks have any desire to port data from any othyou go back to AppleWriter and use Merge /// to take that print file from 3EZPs and insert it into the form letter. I can do 53 in 45 minutes. You can also do envelopes. Any program that will print to disk, you can port data into AppleWriter with this sstic, you set your form letter up in AppleWriter and set markers where you want your data to come in from your data base. You go back into 3EZPs, make a print disk, which is you create a labels-style report and print to disk rather than the printer. Then AppleWriter and VisiCalc user. I have lots of applications for form letters to come from 3EZPs to come into my AppleWriter form letters. This set of WPL utilities will let you do that very easily and works similar to the MLM utilities. And they're fanta's come out for the /// if you want to port data from another program into AppleWriter. There are three programs. One deals with PFS, another with any other kind of print file. I use them all the time. I like 3EZ Pieces data base because I'm an oldo make up for a deficiency, a set of WPL programs called Merge /// and this was distributed by an Apple dealer out of St. Louis in the early 80's and is now in the Public Domain. Merge /// in my opinion is one of the most fantastic pieces of software thatt part and print, load in the second part and print and keep going till the document is all printed. You can even break the block up in the middle of a word and it'll pick it up and print right where you left off. Another example where WPL was used t 100K document, it will print the first 64K and then stop. Once again, someone wrote a WPL document to take care of the problem. Basically, it goes in and places markers at various places in the files. WPL uses those markers and it will load in the firs also has some anomalies that give people headaches, but usually don't cause any real problems. But one of the big problems is that it while it will allow you to edit a document larger than 64K, it won't allow you to print that document! So if you have abeen fully tested and was still in beta or whatever test mode. supposedly that's how it got out on the street. Super AppleWriter definitely has some advantages over the 2.0 version, the major one is that you can have a document in memory over 64K. It out the back door of Apple during the days the Apple /// was dying and according to the rumors, there was a frustrated Apple /// employee who was sending this stuff out the back door because he was afraid it would never see the light of day. It had never rst 64K and you'll have lost everything else. So be careful of that. A good rule of thumb is save your text file before you go into the spell checker. I've also found with my spell checker that with a large document, if I invoke it too many times, I'll get a stack overflow. And I have a 512K board. By the way, I did want to say another thing about the Help files. They're WPL programs. You can supplement those with other help screens, printer command codes, and so on. So you can customize those guys find that not only will they help you use this effectivly and efficiently but you'll enjoy the things he says about his service to the client. One of the things he talks about is you can call for help and if you find problems, he'll fix it up as long as y is a POWERFUL utility. Ed: It's really powerful stuff, easy to use. If you know AppleWriter, you have to be comfortable with it at least those can be used. Here are a few tips: The standard thing in a data base, at least for a form letter, is you arem form letter. In WPL you have some very interesting utilities. There are three numeric registers and four string values (A,B,C,D). You can use those registers to have those string values convey information from one WPL program to another WPL program. Itt name. If I don't I may address them in a more formal manner. Another thing that you might want to try, a familiarity code. You can use it to pull in whole paragraphs based on the familiarity code. It can really provide you with a very slick and custod is a salutation field. That's different from the name field. What I do is, in the form letter, is I have the name and address and then the salutation. So I just put a little marker for the salutation. And if I know the person well, I may have the firsbe comfortable with it at least those can be used. Here are a few tips: The standard thing in a data base, at least for a form letter, is you are going to have the person's name, address and zip and phone and whatever else. A couple of things I always adstring values (A,B,C,D). You can use those registers to have those string values convey information from one WPL program to another WPL program. It is a POWERFUL utility. Ed: It's really powerful stuff, easy to use. If you know AppleWriter, you have to ater. But the starter file will let you set up all these things. Again, its just a WPL program and you can tailor it to whatever your needs are. Chris Acreman: In WPL you have some very interesting utilities. There are three numeric registers and four s of memory, if you intend to use the speller, you must keep your banks of memory at three (or lower). Even with 512K. If you go above three, the speller won't run. I set mine at three and if I don't intend to use the speller, I'll go in and change it lApple you get your system tabs, glossary files, etc. loaded. If you change the program it can do a lot of neat things for you. I allocate the spelling pathname in mine; I set my path prefix, my screen width and banks of memory. One other things about bankin and day out, chances are you can write a WPL program to do it for you. 3) The Startup Program AppleWriter is actually an interpreter and is programmed to look for a startup program, a WPL program in an AppleWriter text file. And I think the one from at will take these control characters and convert them to something else so they can be transmitted and then you use a like program on the other end to put them back again so the program can be used. Once again, anything you do that's redundant, day to embedding control characters, if you need to transmit those WPL programs to another person in a modem, you need to strip those control characters out because they can do weird things to the other person's screen. So in my BBS, there's a WPL program thwith AppleWriter all you want. If it helps you use your version of AppleWriter better, feel free to go in and play with it. Make a copy of them first and mess with them. Just remember the 2048K character limit. Another good WPL program, getting backou don't disturb his domestic tranquility. That means not calling at some unusual time of night!... X'gf$*BASTRAHAN.GPHCSc DISKNAME.DATd DOGGETT.MLMi5B GOODING.WPL85 MENU.MAKER85POHLMAN.GSBASICwUBWILLIAMS.A3HIST,USEG.TlEAD PASCAL TEXT FILES."04=10:"78C";"ANY KEY RETURNS TO THE MENU."!>G$:::".D1/MENU.MAKER",320R",220(204::"79A";""; 2D=1:F=1 <#4;a$ FD=D+1 P#5;a$ZD=60#5;12)dD=60D=1nF=F+1::d$;::Y=1100:Y x13402  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T R".D1/MENU.MAKER",220 d$="" A$="PRINTING "+B$(I),16,B)=01:=0::"80C";A$;:#3,B$(I),16,B)Z=1#3;b$:"78A";b$Z=Z+1:Z=18:1290 1260 #4,B$(I),16,B)#5,".PRINTER"+ž#4#5;12):::".D1/MENU.MAKE30C$="N"C$="n"1160;:=23:=0::"79C";"PRESS ANY KEY TO HALT LISTING": $1020.202 8::Z=1B::=23:=0::"79C";"WOULD YOU LIKE A PRINTED COPY?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"1170*C$="N"C$="n"