Skip to main content

computist scan 36

  • PublicationApple Periodicals
  • Pages36
  • Sourcecomputist-scan-36.pdf
← Magazines computist scan 36
/ 36
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
USA $3.75 Canada/Mexico $7.00 All Others $13.25 Softkeys For: Flight Simulator II AutoDuel Critical Reading Troll’s Tale Robot War i ; tl General Manager ili Plasmania ATT heal i" Telarium Software i oe E . Peas my Dressing Room: a character editor Feature: The Bus Monitor (Page 11) COMPUTIST PO Box 110846-T Tacoma, WA 98411 Many of the articles published in COMPUTIST detail the removal of copy protection schemes from commercial disks or contain information on copy protection and backup methods in general. We also print bit copy parameters, tips for adventure games, advanced playing techniques (APT's) for arcade game fanatics and any other information which may be of use to the serious Apple user. COMPUTIST also contains a special CORE section which focuses on information not directly related to copy protection. Topics may include, but are not limited to: tutorial . hardware/software product reviews and application and utility programs. (SS SS SS SR SE SH TT ES What Is A Softkey Anyway? Sofikey is a term which we coined to describe a procedure that removes. or a circumvents, any copy protection on a particular disk, Once a softkey procedure has been performed. the resulting disk can usually be copied by the use of Apple’s COPYA program (on the DOS 3,3 System Master Disk), Commands And Controls: In any article appearing in COMPUTIST. commands which a reader is required to perform are set apart from normal text by being indented and bold. An example is: PRG Follow this with the RETURN key. The RETURN key must be pressed at the end of every such command unless otherwise specific Control characters are indicated by bemg boxed. An example 6CP) To complete this command, you must first type the number 6 and then place one finger on the CTRL key and one finger on the P key Requirements: Most of the programs and softkeys which appear in COMPUTIST require one of the Apple II scries of computers and at least one disk drive with DOS 3.3. Occasionally, some programs and procedures have special requirements, The prerequisites for deprotection tectniques or programs will always be listed at the beginning of the article under the “Requirements:"" hauling Software Recommendations: The following pro- grams (or Similar ones) are strongly recommended for readers who wish to obtain the most benefit from our urticles: 1) Applesoft Program Editor such as Global Program Line Editor (GPLE) 2) Sector Editor such as DiskEdit, ZAP from Bag of Tricks or Tricky Dick from The CIA 3) Disk Search Utility such as The Inspector. The Tracer from The CIA or The CORE Disk Searcher. 4) Assembler such as the S-C Assembler or Merlin/Big Mac 5) Bit Copy Program such as Copy j[ Plus, Locksmith he Essential Data Duplicator jor capable of producing normal sequential cs such as Applewriter |, Magic Window jf or Screenwriter }| You will also find COPYA. FID and MUFFIN from the DOS 3.3 System Master Disk useful Super IOB: This program has most recently appeared in COMPUTIST No, 42, Several softkey procedures will ake use of a Super [OB controller, a small program that must be keyed into the middle of Super (OB. The controller changes Super OB so that it can copy different disks. To get the latest version of this program, you may order COMPUTIST No. 32 as a back issue or order RESET Into The Monitor: Some softkey pro- cedures require that the user be able to enter the Applc’s system monitor during the execution of a copy protected program. Check the following list t0 see what hardware you will nced to obtain this ability Apple |] Plus - Apple //e - Apple compatibles: 1) Place an Integer BASIC ROM card in one of the Apple slots 2) Use a non-maskable interrupt (NMI) card sue Replay or Wildcard. Apple || Plus - Apple compatibles: |) Install an F8 ROM with a modified RESET vector on the computer's motherboard as detailed in the “Modified ROM's” aniicle of COMPUTIST No, 6 or the “Dual ROM’s"” article in COMPUTIST No. 19. Apple //e - Apple //c: Install a modified CD ROM on the computer's motherboard. Clay Harrell's compa (Cutting Edge Ent., Box 43234 Ren Cen Station HC. Detroit, MI 48243) sells a hardware device that will give you this ability, Making this modification to an Apple //c will void its warranty but the increased ability to remove copy protection may justify it Recommended Literature: The Apple || Reference Manual and DOS 3.3 manual are musts for any serious Apple user, Other helpful books include: Beneath Apple DOS, Don Worth and Pieter Lechner, Quality Software, $19.95: Assembly Language The Applesoft Programmer, Roy Meyers and C.W. Finley, Addison Wesley, $16.95; and What's Where In The Apple William Lubert, Micro Ink., $24.95 Keying In Applesoft Programs: BASIC programs are printed in COMPUTIST in a format that is designed to minimize errors for readers who key in these programs, To understand this format, you must first understand the formatted LIST feature of Applesott An illustration- If you strike these keys 10 HOME:REMCLEAR SCRE a program will be stored in the computer's memory Strangely, this program will nor have a LIST that iy exactly as you typed it. Instead, the LIST will look like this: 10 HOME : REM CLEAR SCREEN Programs don’t usually LIST the same as they were keyed in because Applesoft inserts spaces into a program listing before and after every command word or mathematical operator. These spaces usually don’t pose a problem except in line numbers which contain REM or DATA command words, The space inserted after these command words can be misleading, For example. if you want a program to have a list like this: 10 DATA 67,45,54,52 you would have to omit the space directly after the DATA command word. If you were to key in the space directly after the DATTA command word, the LIST of the program would look like this. 10 DATA 67,45,54,52 ‘This LIST is different from the LIST you wanted. The number of spaces you key after DATA and REM command words is very important All of this brings us to the COMPUTIST LISTing format. In a BASIC LISTing. there are two types of spaces: spaces that don't matter whether they are keyed or not and spaces that must be keyed. Spaces that must be keyed in are printed as delta characters (4). All other spaces in a COMPUTIST BASIC listing are put there for easier reading and it doesn’t matter whether you type them or not There is one exception: 1 y (See “Computing Checksums” section) to match up. you ‘must not key in any spaces after a DATA command word untess they are marked by delta characters. Keying In Hexdumps: Machine language programs are printed in COMPUTIST as both source code and hexdumps. Only one of these formats need be keyed in to get a machine language program. Hexdumps are the shortest and easiest format to type in. To key in hexdumps. you must first enter the monitor: CALL -151 Now key in the hexdump exactly as it appears in the magazine ignoring the four-digit checksum at the end of each line (a **S" and four digits). If you hear a beep, you will know that you have typed something incorrectly and must retype that line, When finished. return to BASIC with a: £0036 Remember to BSAVE the program with the correct filename, address and length parameters ay given in the artic Keying In Source Code The source code portion of a machine language program is provided only to better explain the program’s operation. If you wish to key it in, you will need an assembler. The S-C Assembler is used to generate all source code printed in COMPUTIST. Without this assembler you will have to translate pieces of the source code into something your assembler will understand, A table of S-C Assembler direetives just for this purpose was printed in COMPUTIST No. 17. To translate source code. you will need to understand the ives of your assembler and convert the es used in the source code listing to similar Wes used by your assembler Computing Checksums Checksum are four digit hexadecimal numbers which verify whether or ou keyed a prog as it was printed in COMPUTIST. There are two types of checksums: ated by the CHECKBIN program (for machine language programs) and the other ct by the CHECKSOFT program (for B. programs), Both programs appeared in COMPU! No. | and The Best of Hardcore Computing. An update to CHECKSOFT appeared in COMPUTIST No. 18. If the checksums these programs create on your computer match the checksums accompanying ihe program in the magazine. then you keyed in the program correctly. If not, the program is incorrect at the line where the first checksum differs. 1) To compute CHECKSOFT checksums: LOAD filename BRUNCHECKSOF1 Get the checksums with & ‘And correct the program where the checksums differ 2) To compute CHECKBIN checksums: CALL BLOAD filename Install CHECKBIN at an out of the way place BRUN CHECKBIN,AS6000 Get the checksums by typing the starting address, nd ending address of the file followed by one cr And correct the lines at which the checksums ditfer Coping with COMPUTIST Welcome to COMPUTIST, a publication devoted to the serious user of Apple J[ and Apple J[ compatible computers. Our magazine contains information you are not likely to find in any of the other major journals dedicated to the Apple market. Our editorial policy is that we do NOT condone software piracy, but we do believe that honest users are entitled to backup commercial disks they have purchased. In addition to the security of a backup disk, the removal of copy protection gives the user the option of modifying application programs to meet his or her needs. New readers are advised to read carefully to avoid frustration page when attempting to follow a softkey or when entering the programs printed in this issue. 4 (Save On Software) Suggested Customer Total Title Publisher Retail Cost QTY Cost Recommended Literature: O Beneath Apple DOS (Book) Quality Software $19.95 $16.00 (€ Beneath Apple ProDOS (Book) Quality Software $19.95 $16.00 0) Disk Edit (Book of Softkeys vol 1) SoftKey $12.95 Recommended Software: O Global Program Line Editor Beagle Bros $49.95 $35:25\ te Super IOB (Issue No. 32 w/disk) SoftKey $10;95\\ ==. (1 Magic Window // (specify ][ or //e)Artsci $149.95 $106.00 ___ C) Bag of Tricks II Quality Software $49.95 $3995. Miscellaneous Bargains O Dazzle Draw Broderbund $59.95 $47.50 ___ Ol F-15 Strike Eagle Microprose $34.95 $28.00 ___ (1 The Print Shop Broderbund $49.95 $39.75). x =» O Flight Simulator IT Sublogic $49.95 $44.00 ___ {) Night Mission Pinball Sublogic $34.95 oh CO) Exodus Ultima Il Origin Systems $59.95 Sis. O) Hitchhiker’s Guide to the Galaxy Infocom $39.95 $31.00 ___ O Witness Infocom $39.95 $31.00. — C1 Dino Eggs Microlab $40.00 $20.00 ___ O Zork I Infocom $44.95 $35.00 ___ Subtotal Shipping* Total *Domestic Shipping and Handling: $2.00 per item. Five or more items FREE. Name. I Address City State Zip Country. Phone. me - ~ - Exp. Signature CP36 To order, complete order form and mail to: COMPUTIST PO Box 110937-SOS Tacoma, WA 98411 i) if: Offer good while supplies last. Washington residents add 7.8% sales tax. Foreign orders inquire as to appropriate shipping and handling fees. Limited offer, expires December 31, 1986. FREE COMPUTIST YES! You Get 2 FREE ISSUES for every NEW subscriber that you sign up. We'll extend your current subscription by 2 issues for every new paid subscription you get to fill out the subscriber forms below. BUT...First Class subscribers MUST recruit First Class subscriptions to receive the 2 extra issues. This rule (same mailing class) also applies to Foreign rates. Standard US subscribers can recruit any new subscriptions and extend their standard subscriptions. US funds drawn on US bank. Send check/money order to: COMPUTIST PO Box 110846-T Tacoma, WA 98411 FOTO TOK IK IAI IK tI ssues to this subscription, ok 107 “US Hine Clee $24" C1 CanMex: $34 Other Foreign: $60 OR SAVE MORE ‘Al = me ONA12ISSUE X co —— NEW OR RENEWED os SUBSCRIPTION Signature P36 Special prices for a limited time only. oe If you let your subscription expire, you are considered a NEW subscriber Cannot be used with any other promotional offer. Prices are for an annual subscription (12 issues) *k Yes, sign me up for 12 issues. (US:$32 (US First Class, Canada, Mexico: $45 [1 Other Foreign: $75 ok Name. nd Nas " * and are NOT eligible for the free issues, NEW SUBSCRIBER Yes, I want to subscribe to your fine publication. OuS: $20 US First Class: $24 Can/Mex: $34 0 Other Foreign: $60 Name City State, Zip. * Address 5 2 a Count Phone i ? ity. fate, i me 6 * Country Phone > > >t >t >t Ot Ot EE tt Signature, ___cPa6 * Sioature ni ear ererer errant rary Attention COMPUTIST Collectors The following back issues are practically gone. Once they have sold-out, they will no longer be available in magazine form to our readers. &% softkey | Uitima 11 | Witness | Prisoner II | Pest Patrol | Adventure pea for Ultima I & II | ee Il Plus PARMS ee | Feature | Ultima II Character Editor | "Z Softkeys | Zaxxon | Mask of the Sun | Crush | Crumble & Chomp | Snake Byte | DB Master | Mouskattack | Features | Making Liberated Backups That Retain Their Copy Protection | S-C Assembler: Review | Disk Directory Designer | Core | Corefiler: Part 1 Mf Upper & Lower Case Output for Zork ‘ BLS softkeys | Laf Pak | Beyond Castle Wolfenstein | Transylvania | The Quest | Electronic Arts | Snooper Troops (Case 2) | DLM Software | Learning With Leeper | TellStar | Core | CSaver: The Advanced Way to Store Super IOB Controllers | Adding New Commands to DOS 3.3 | Fixing ProDOS 1.0.1 BSAVE Bug | Review | Mabenciog HoacAple | Feature | Locksmith 5.0 and Locksmith Programming Language | First Come, first served. Some issues may be slightly damaged. No reservations allowed, prepayment only with SED@B. To order, phone (206) 474-5750 or use the order form on page 32. For phone orders, please have subscriber ID number and ship-to address ready. Normal back issue rates apply to foreign orders. Washington State residents add 7.8% sales tax. whe Bary’s Tale The denizens of this mystic place assault you without warning, You see 5 Barbarians. choose to eight b a or (Roun? N Ms |HiTs :ono \Pevece ele This month's cover: Graphies from Mindscape's. “Color Me. Aditress ail advertising inquiries to COMPUTIST, Advertising Department, PO Box 110816, Tacoma, WA 98411. Mail ‘manuscripts oF requests tor Writar's Guides to COMPUTIST, PO Box 110846-K, Tacoma, WA 98411 Unsolicited manuscripts are assumed to be submitted for publication at our standard rates of payment SoftKey publishing, Purchases all and oxclusive rights For more information on submitting manuscripts, see the waiters quide on the inside back Entire contents copyright 1986 by SoltKey Publishing. All rights reserved, Copying done for othar than personal or internal teference (without express written permission from the publisher) 's prohibited The editorial staff assumes no liability or responsibility for the products advertised in the magazine, Any opinions expressed by the authors are not necessarily those of COMPUTIST magazine or SoftKey Publishing Apple usually refers to an Apple |[ computer and isa trademark of Apple Computers, Inc. SUBSCRIPTIONS: Rates (for 6 issues}: US. $20, US. t3t Class $24, Canada & Mexico $34, Foreign $60, Direct inquiries to: COMPUTIST, Subscription Department, PO Box 0846-7, Tacoma, WA 98411. Please include address label with correspondence DOMESTIC DEALER RATES: Call (206) 474-5750 for more intormation Change Of Address: Please allow 4 weeks lor change of address to take effect. On postal form 3576 supply your new address and your most recent address label, Issues missed due to non-receipt of change of address may be acquited at the regular back Issue rate COM PUTIST 1986 Publisher/Editor: Charles R. Haight Managing Editor: Ray Darrah Technical Editor: Robert Knowles Circulation: Debbie Holloway Advertising: (206) 474-5750 Printing: Valew Graphics Inv. Searle. WA COMPUITIST is published monthly by SofiKey Publishing. $233 §. Washington. Tacoma, WA 98400 2006) 474 $750 softkeys: 23. Flight Simulator II v1.05 by Eric Sunshine 28 AutoDuel by Charles Taylor features: 12 ScreenWriter meets Flashcard This article details how to use your Flashcard RAM disk with that popular word processing program ScreenWriter. by Herbert Alfred Mayer 14 The Bus Monitor This hardware project shows how to add a “front panel can monitor more closely what is going on. by Cla to your computer so that you Harrell and Sidney Fernstock 22 Mousepaint for non-Apples Apple Computer company designed Mousepaint to only work on a “real” Apple. Explained here are the necessary steps to correct this matter. by Keven D. Miller core: 16 The Bard’s Dressing Room Have you ever wished you could change your Bard’s Tale characters abilities at will’? With this program, you can edit your characters freely. by Joe Montano APT: 10 Championship Lode Runner With this APT, you can modify the high scores, revive games that have been deleted, see the special password, have any amount of players and skip t uny level. by Jeff Lucia departments: 4 Input 6 Most Wanted List 6 Bugs 7 Readers’ Softkey & Copy Exchange Josten’s Learning System's Critical Reading by Steve McLendon, Sierra On-Line's Troll’s Tale by Daniel J. Elliot. Muse’s Robot War by Darry Distreou, Sierra On-Line’s General Manager by Kevin Sartorelli, Sirius Software's Plasmania by Kevin Sartorelli, Telarium’s Telarium Software by Larry Rando, Kidwriter v1.0 by Daniel J. Elliot. Mindscape’s Color Me by Glen Tatum Please address letters to: COMPUTIST Editorial Department PO Box 110846-K Tacoma, WA 98411 Include your name, address and phone number. Correspondence appearing in the INPUT section may be edited for clarity and space requirements. In addition, because of the great number of letters that we receive and the small size of our staff, a response to each letter is not guaranteed. Our technical staff is available for phone calls between 1:30 pm and 4:30 pm (PST) on Tuesdays and Thursdays only. Opinions expressed are not necessarily those of COMPUTIST or SoftKey Publishing. Some Philosophy Everyone who reads and submits articles to COMPUTIST is on the same side of the copy protection issue. We feel we should be able to back up our software. We also should act like a big family when it comes to copy protection. This is why | feel the comments in M. M. McFadden’s letter (COMPUTIST No. 31 page 4) about my article on deprotecting F-15 Strike Eagle were uncalled for. Everybody has a different way of deprotecting a piece of software. Also most people don’t have access to several copies of a program to see if there are multiple protection schemes. Mr. McFadden’s off the cuff comments don’t seem to do much good. If you can’t save the files back to the disk, who cares about a catalog track. Between my article and all the letters that were written, most people should be able to back up their copy of F-15 Strike Eagle. So whenever anyone has a different way of backing up a piece of software or finds a flaw in an article, just write in and mention it without a lot of name calling. ‘Thank you. Larry Jasonowicz Marseilles, IL Mr Jasonowicz: We agree with you that those who wish to backup their software should act as one big family. We apologize for Mr. McFadden’s comments. King’s Quest & Black Cauldron I read your wonderful magazine since the first old issue and I always enjoy a lot of your articles. Herewith I write you for two reasons; to show you how to unlock the last two hi-res adventure games from Sierra On-Line, (King’s Quest II and The Black Cauldron) and give public compliments to the authors of the bit copy programs Echo Plus, Copy II Plus 6.0, Locksmith 6.0 and EDD IV Plus, whose new versions are very powerful. The new hi-res adventures from Sierra On- Line are very beautiful and amusing to play, although they load the graphic pages very slowly. Worst of all, both have been protected and even a copy with a bit copy program is difficult to make, owing to a nibble count they use on track $0 of the boot side. Yet, the protection routine is the same in both programs so that unlocking one unlocks the other too. With the Core Disk Searcher program (published in COMPUTIST No. 12), I've searched the boot disks for two hex bytes 8C CO (SCO8C) and, besides the first tracks used by the DOS, I've discovered a routine on track $11 sector $F, which is the nibble count protection. I put a $60 at the beginning of it and voila, the disks worked. So, resuming: copy with COPYA or other copy program all the sides of the program; insert the boot side of the program you want to unlock and with a sector editor (e.g. The Inspector) read the track $11 sector $F; starting at byte $5 you'll see A9 00 (LDA #00); change the AQ to 6@ (RTS) and write back the sector. The disk is now unprotected and easily copyable. Thope you'll find this unlocking technique interesting. Thank you for the time spent reading this letter and I am looking forward to reading your next wonderful issue. Guido Bertoncini Bergamo, Italy Wolfenstein APT’s Following each of the APT’s in the ‘“Beneath Beyond Castle Wolfenstein’’ article in COMPUTIST No. 13 has led to much 4 COMPUTIST No. 36 enjoyment with the popular game from MUSE. There is however, one bug that I have found. The Reset patch does dump you into the monitor when Control-Reset is pressed but going into the monitor this way disconnects you from DOS. This isn’t apparent until the program tries to access the disk and freezes. The solution is; as soon as you enter the monitor, reconnect the DOS with A8SIG first and then perform any APTs that you want. This prevents much frustration. One last note: Does anyone out there know how to get the deprotected AppleWriter //e (COMPUTIST No. 18) to work with a fast DOS such as Diversi-DOS? Jim S$ Hart Jacksonville, NC Eight Cities of Gold I'd just like to share a couple of updates on some softkeys. Concerning the softkey for Fantavision in COMPUTIST No. 30, my copy had address epilogues of FF FF, so by adding these lines to the controller, it will work just fine on that version! 1025 POKE 47405 , 24 : POKE 47406 96 : POKE 47497 24 ; POKE 47498 ,96 1065 POKE 47405 ,208 : POKE 47406 ,19 : POKE 47497 208 : POKE 47498, 183 Going back a few issues to the softkey for Seven Cities of Gald in COMPUTIST No. 24, Thad no trouble using the method described and ending up with a deprotected copy. But upon playing the game, I had nothing but trouble. Imagine discovering all those lands, amassing all that wealth, only to get home and find myself without anything, including my men and my ips!!! For those of you who had problems as , try this method instead. 1) Copy both sides of the disk ignoring errors on tracks 5 & 6 or skip them completely. 2) On the boot side, make these sector edits: TRACK SECTOR BYTE ~—- CHANGE TO $01 $06 $08 $62 SOE $07 $75 SEA $0E $07 $76 SEA SOE $07 $77 SEA I hope these help anyone who ran into problems. Keep those softkeys coming!!! M Ferreira Santa Rosa, CA New Zoom Graphics COMPUTIST published my softkey for Zoom Graphics in issue 12 (pages 9-10). As published, that softkey will not work on the version of Zoom Graphix with a manufacture date of 10/5/83 (this version is the first to include the Apple DMP on the list of printers). To determine the date of manufacture of a Zoom Grafix disk, see the last column of the original article. The following modifications to the softkey in issue 12 will copy the 10/5/83 version: 2) substitute: 7 CALL -151 B7CO:18 B942:18 B954:29 00 B990:29 00 3D0G RUN Ignore the terrible noises coming from the disk drive - leave the room if you have to. 3) Disregard the instructions in the original article. Just reboot your favorite DOS, type FP, and go to step 4 of the original article. 14) Use these new BSAVEs: BSAVE GRAFIX.INFO, A$800,L$4D5 BSAVE GRAFIX.OBJ, A$9000,L$9B1 Those using multiple drives, especially hard drives, may wish to modify the code in lines 270, 300, and use the space from 300-310 in Grafix Part II in order to request Slot, Drive, and Volume information from the user. The variables SL$, DR$, and VL$ are not used elsewhere in the program, and are available for that purpose. Michael Decker Hermitage, TN Mastering Master Word When a back-up for Workshark ‘‘Master Word"” program is made with Locksmith 5.0 Quick Copy it appears to copy perfectly yet it will not run. Listing the HELLO program discloses line 1@ CALL XXXXX which must send the program to limbo because deletion of line 10 after copying results in a runnable copy. Continue the good work. Not being an expert, it is suggested you have one of your more expert readers check out the above and verify it. I learned of it second-hand. A Subscriber Santa Ana, CA PES meets Unidisk Robert James’ sector edits for the ProDOS PFS series on page 5 of COMPUTIST No, 31 works for PFS:GRAPH as well as the other programs. Unidisk owners can manufacture a very ‘‘interesting’’ disk by transferring all of the files of the PFS: series to a single unidisk, as long as they remember that they really don’t need multiple copics of ProDOS, and the QUARK program. The result will be a disk that functions like a super-Appleworks, as they can easily exit from one main menu to the next main menu within the PFS series. Apparently, you can make this unidisk collage boot up into whichever of the PFS programs you want to by making sure that you copy the .SYSTEM file and ProDOS first onto the unidisk, and then use the EXIT function to get into the next. If anyone is familiar enough with the ins and outs of ProDOS option menus, they might be able to write a HELLO program that allows direct entry into the program of choice, but this quick & dirty method of booting into one and exiting into the next does work pretty well, too... Stanley Planton Chillicothe, OH Gato again Here’s a softkey for version 1.3 of GATO. The disk is written with cyen tracks beginning with the standard D5 AA 96 address header, and odd tracks having D4 AA 96 as a header. The address trailer begins with AF but the remaining digits change from sector to sector. My first step in deprotecting GATO was to write it to a normal DOS disk. I found I could then catalog the disk from UCSD Pascal. | tried to execute SYSTEM.STARTUP from Pascal, even though I only have the 64K version, and the disk buzzed and whirred for a while until I got a stack overflow error. It also would be interesting for someone who has 128K Pascal to try, however. Also interesting is to run the Pascal Libmap program and scan through the intrinsics in SYSTEM.LIBRARY, ,..but on to the softkey. The following controller for Super IOB completely deprotected this version of GATO. It was necessary to semi-resurrect the Ignore Ending Marks subroutine of the original version of Super IOB as I couldn't figure an elegant way to handle the sector-by-sector changing ending marks with the current subroutine (that is what the pokes in line 1020 take care of). GATO also has code which checks the disk for its original signature, the tceth of which were pulled through the time-honored art of boot-tracing. Super IOB makes the necessary sector edits. I would suggest trying the controller as is. If by any chance the publisher is moving the protection checks around on the disk and your copy doesn’t work, delete the GOSUB 310 in line 1060, copy the disk, and search for the following byte sequences. Here is where I found them: Tk @, Sec E bytes: F4 FS F6 F7 FB FO were: C9 AA FO 5C 38 60 change to: C9 AA FO SC 18 60 Tk @, Sec F bytes; 65 66 67 68 69 6A were: 86 10 E7 AB DA 15 change to: 88 10 E7 A8 EA EA Tk @, Sec F bytes: 70 71 72 73 were: C9 AF 08 OC change to; C9 AF EA EA Tk @, Sec F bytes: 79 7A 7B 7C were: C9 08 BO 03 Change to; C9 08 EA EA Tk 1, Sec E bytes: CF DO Dl D2 D3 D4 were: FQ 02 38 24 18 68 change to: FO 02 18 24 18 68 1900 REM GATO 1,3 CONTROLLER 1010 TK = :ST=0 :LT = 35 :CD=WR :FAST =9 1020 POKE 47497 ,24 ; POKE 47498 ,96 :T1=TK GOSUB 490 : RESTORE 1030 IF TK /2= INT (TK/2) THENREADAI ,A2 ,A3 1049 GOSUB 190 1950 GOSUB 430 : GOSUB 100 :ST=ST +1 DOS THEN 1050 1960 GOSUB 310 : GOSUB 230 : GOSUB 490 :TK=T1 IFST< 1076 GOSUB 430 : GOSUB 100 :ST=ST+1: IFST< DOS THEN 1079 1980 ST =0 :TK=TK+1 1990 IF TK < LT THEN 1028 1095 POKE 47497 ,208 ; POKE 47498 , 183 1100 HOME : PRINT : PRINT "DONE* WITH* COPY” ; END 5000 REM DATA FOR GATO VERS 1.3 5010 DATA 212 ,170 150 COMPUTIST No. 36 5 5020 DATA 212 ,170 ,150 5030 DATA 8* CHANGES 5040 DATA 1 ,14 209 24 5050 DATAD ,14 248 24 5060 DATA ,15 ,105 234 0 15 ,106 234 5070 DATAG ,15 114 234 8 15 115 234 5080 DATAO .15 123 ,234 0 15 124 234 Ann Onymous San Luis, CA. More Bard’s Tale I would like to pass on the following information. I would like to say that the softkey for King’s Quest (COMPUTIST No. 30, pg. 7) did not work [for me]. I found the “20 00 FF”’ four times at different locations. Changing these ull to “EA EA EA" did not work for my version. There does seem to be some important code at $1600, although I cannot find how the program gets there or returns. As for the Bard’s Tale (COMPUTIST No. 30, pg. 11) the following sector edits work: trk $01, sct $OC, bytes $00-$02 from:4C 69 05 to:18 60 DD trk $01, sct SOF, bytes $00-$a2 from:4C 69 A to:18 60 DD As for Karate Champ (COMPUTIST No. 31, pg. 9) the following sector edits will work. They eliminate the call to the bit insertion routine and the jump to the code that clears memory and boots the disk. trk $00, sct $03, bytes SBE from:20 00 BF 90 03 4C 93 BE to: EA EA EA EA EA EA EA EA Brian A Troha Stoughton, WI Enhancing the Ultima IV Editor The Ultima IV Character Editor by Danny Pollak in COMPUTIST No. 30 was a godsend to my characters, who were having a rough time at doing anything. But the main thing that the Editor lacked was the ability to change the virtues at will. I took out a sector editor and began changing bytes here and there and finally found where they were being kept track of. The virtues are kept as numbers ranging from 00 (being a partial Avatar) to 99 (nearly becoming a partial Avatar.) Checking where the bytes laid in memory after being loaded and adding on a little part to the Editor, finally made it out to what it was supposed to be, a complete editor. 345 PRINT "B) VIRTUES” 363 IF AS = "0" THEN GOTO 2660 2660 CA = 2304 : FORX=@T07 :VI(X) =FNBI(X ) : NEXT 2670 HOME : HTAB 16 : PRINT "VIRTUES" : PRINT 2680 FOR X=7 TOOSTEP-1 : PRINTR$(X) : NEXT 2681 VTAB 3 2682 FOR X= 0107 ; HTAB 15 : PRINT CHRS (48 (VI(X) < 10) )VI(X) : NEXT 2690 X= 0 2700 VTAB 3 + X : HTAB 15 :A1$ = "0" : A2! 9” :MAX = 2: GOSUB 2390 : IF AS = CHS AND X = @ THEN 2700 2710 IF AS = CHS THEN X = X- 1 : GOTO 2700 2720 \F BS = "" THEN BS = STRS (VI(X) ) 2730 (X) =VAL (BS) : HTAB 15 : PRINT CHRS (48 * (VI(K) <18) VI(K) 2X=X41 5 IEX< 8 THEN 2700 2740 GOSUB 2500 : IF AS = "N° THEN 2690 2750 FORX=0 107: POKE (CA+X) , INT (VI(X) /1B) #16 + (VI(X) = INT (VIX) 418 ) * 10) : NEXT ; GOTO 278 __bu COMPUTIST No. 31 Softkey for Time Zone: The Super IOB controller will not function correctly as printed. Insert a RESTORE command at the beginning of line 1020 to fix the situation. COMPUTIST No. 35 Softkey for The Perfect Score: The procedure as printed works only for the first eleven sides of the program. To copy side two of disk F, do the following: 1) Load COPYA as in step one of the article and make the following patches in addition to those printed in COMPUTIST No. 35. 362:12 N 35F:12 2) After copying the disk, make the following sector edits: Track $00, Sector $05, bytes $39 - $3B From: BD 8C CO To: 4C 81 02 Track $00, Sector $05, bytes $81 - $85 From: D@ 10 88 10 F4 To: EA EA EA EA EA TimScott Fargo, ND 6 COMPUTIST No. 36 Most Wanted List Need help backing-up a particularly stubborn program? Send us the name of the program and its manufacturer and we'll add it to our Most Wanted List, a column (updated each issue) which helps to keep COMPUTIST readers Informed of the programs for which softkeys are MOST needed. Send your requests to: COMPUTIST Wanted List PO Box 110846-K Tacoma, WA 98411 If you know how to deprotect unlock, or modify any of the programs below, let us know. You'll be helping your fellow COMPUTIST readers and earning MONEY at the same time. Send the information to us in article form on a DOS 3.3 diskette Apple Business Graphics Apple Computer Jane Arktronics Visiblend Microlab Catalyst Quark, Inc, Gutenburg Jr, & Sr. Micromation LTD Prime Plotter Primesoft Corp. ‘The Handlers Silicon Valley Systems ‘The Apple's Core: Parts 1-3. The Professor Fun Bunch Unicorn Willy Byte ... Datu Trek ‘Cranston Manor Sierra On-Line Snoggle Broderbund ABM Muse Mychess IT Datamost Story Tree Scholastic Agent U.S.A. Scholastic Handicapping System Sports Judge Echo Plus Agranat Systmes Great Cross Country Road Race Activision Odin Odesta Mabel’s Mansion Datamost Brain Bank The Obseyatory Under Fire Avalon Hill Crimson Crown Penguin Crypt of Media Sir Tech EDD IV. Utilico Microware ‘The Works First Star Software Cross Clues Science Research Peeping Tom = Microlab Jigsaw Microfun Miner 2049er II Microfun readers’ softkey & copy exchange Steve McLendon’s softkey for... Critical Reading Josten's Learning Systems, Inc. 800 E. Business Center Dr. Mount Prospect, IL 60056 Requirements: Apple ][ Plus, //e Means of entering the Monitor DeMuffin Plus Any of the Borg-Warner Critical Reading Series disks Blank formatted disk Sector editor Disk searcher (optional) Sorry, Super IOB, but I am not able to make you deprotect this one. Only about half of each track on any of these Borg-Warner disks has valid data on it and the other half is meant to throw off the bit copiers and just about anything else as well. To give an example, from disk ‘*C’’, here is the sector map for tracks 8-A: Sector 0123456789ABCDEF ThE xxxxxxxxxxxddddd Th9 xddddddddddddddx TkKA ddxdddddddxddddd An ‘*x’’ indicates a sector with invalid data which even BW’s own RWTS cannot read; ‘‘d’* indicates that sector contains valid data. Imagine trying to write a Super IOB controller to handle this type of scheme. Well, I did, but then I realized I would probably have to verify the sector maps on every disk in the series. If even one sector was different, the controller would have to be modified. So DeMuffin Plus, which has been all but forgotten by many folks, is the one and only tool to use here. We will have to use the BW RWTS, but we would have had to do that even with Super IOB. 1) Load DeMuffin Plus into a safe area of memory. BLOAD DEMUFFIN PLUS,AS6000 2) Boot the Borg-Warner disk and, just as the serial number is displayed at the bottom, reset into the monitor. 3) Look at the code from $1500-OF and record these 16 hex numbers. 4) Move DeMuffin Plus down to its normal location and run it 803<6000.8103M 803G 5) Copy all files onto your blank, initialized disk. 6) Now boot normal DOS, get into the monitor (CALL -151), and type in the code at $1500 which you recorded in step 3. For disk **C’’, these bytes should be: 1500:AC D5 AD BE B7 B6 BC F2 1508:F3 DA AD DA AD E6 9D D5 7) Save this little piece of code to disk. BSAVE BTCD,A$1500,L$10 8) Type NEW and enter the following BASIC program. 16 D$=CHRS(4) 20 PRINT D$‘BLOAD BTCD” 3@ PRINT D$‘RUN F@S)3TUTOR” SAVE HELLO 9) Now with your sector editor make the following mods. Track Sector Byte From To 3 8 SAD $8C $B1 3 8 SAE $34 $3A 3 8 SAF $34 $B2 These three bytes should be found on the indicated sector. However, if you are using anything but virgin DOS 3.3 they could be anywhere, in which case you will have to do a disk search to find their location. Write these changes back to disk. You should now have a COPY Aable Borg- Warner Critical Reading Series disk. This technique will work on all disks in the entire series, David Ward asked for help (Input, COMPUTIST No. 16), and here it is. I am appalled that Borg-Warner charges an educational institution close to $1000 for a set of these disks and refuses to provide backups. Mr. Ward, here is your backup, compliments of COMPUTIST. z Daniel J. Elliot’s softkey for... Come along and let me tell you a tale, a Troll’s Tale. This is the introduction to Troll’s Tale, a cute, first adventure for children ages 6 through 10 years of age. Sierra On-Line has made creative use of The Graphics Magician from Penguin Software in this graphic text adventure. As usual, they have also made creative use of copy protection on this release as well. The Protection The entire protection scheme for this disk consists of altered address prologue and epilogue marks on different tracks. The data prologues and epilogues however are standard. For tracks $00 - $02, the address prologue is the standard D5 AA 96 but the address epilogue has been changed from DE AA TO ED AA. For tracks $03 - $22, the address prologue is DB AA 96, while the address epilogue is the standard DE AA. I find the sector editor of Copy }{ Plus 5.1 ideal for determining these changes. Now it is only necessary to write a controller which will poke the proper bytes in at the proper time during the read/write cycle. The Procedure All that is required to copy Troll’s Tale is to install the controller at the end of this article into Super IOB and RUN the resulting program, A faster DOS such as Diversi DOS or Pronto DOS is als a nice addition to this program, but it is still necessary to copy tracks $00 - $02 from the original disk because for some reason, the hello program will mess up if only tracks $3 - $22 are copied, then a fast DOS added. If the program has it’s original DOS or standard DOS 3.3, it is possible to Reset into Applesoft anytime and CATALOG the disk. Also, for reasons unknown to me, if the DOS is Diversi DOS, attempting to reset into Applesoft at any point past the title page will drop into the monitor and lock up the keyboard. Before the title page, their Reset works fine with Diversi DOS, Enjoy the tale. controller Troll’s Tale Sierra On-Line 36575 Mudge Ranch Rd. Course Gold, CA 93614 Requirements: Apple ][ or better Super IOB v1.5 I blank disk side 1900 REM TROLLS TALE 1910 TK = 0 :ST=0 :LT=35 :CD= WR 1920 Tl = TK ; GOSUB 490 1025 POKE 47505 237 - 15 (TK > 2) : POKE 47445 21346 * (TK > 2) 1930 GOSUB 436 ; GOSUB 100 :ST =ST+1 0S THEN 1030 1040 |F BF THEN 1060 1050 ST = :TK=TK+1: IF TK<LT THEN 1025 1960 GOSUB 230 : GOSUB 490 TK =T1 :ST=9 1076 GOSUB 430 : GOSUB 100 :ST=ST+1: IFST< 0S THEN 1070 1086 ST =O :TK=TK+1: IF BF =O ANDTK <LT THEN 1970 1098 IF TK < LT THEN 1020 IFST< COMPUTIST No. 36 7 readers’ softkey & copy exchange 1100 HOME : PRINT "DONE* WITH* COPY” : END controller checksums 1000 - $3568 1958 - $79AD 1910 - $3266 1960 - $0C82 1020 ~ SCLIA 1070 - $0487 1025 - $8831 1080 - S2EDA 1030 - $9E30 1090 - $8140 1049 - $ICA1 1100 - $A73B Darry Distreou’s softkey for... Robot War Muse 347 N. Charles St. Baltimore, MD 21201 Requirements: Apple ][ or better A sector editor FID from the system master Super IOB v1.5 4 blank disk sides Robot War is an educational strategy game with its own language and compiler. After programming your robot, you put it into a battlefield where it must compete in mortal combat with other similarly programmed robots. As I expected, my Robot War disk was protected. A little snooping revealed that it uses a modified DOS based on DOS 3.2. Through the use of the swap controller and some DOS modifications, we can have a standard DOS 3.3 version of Robot War. The Softkey 1) Boot the original Robot War disk and when the main menu comes up on the screen, choose option 6 to exit to Applesoft BASIC. 2) Now we will move the entire Robot War DOS to a safe location. CALL -151 2600<9600.BFFFM 3) You must now find the volume number of your Robot War disk (mine was 001). CATALOG Write down the volume number of the disk. 4) Boot a 48K slave disk (preferably with no hello program) and format a disk we will call disk A. INIT DISKA 5) Save the Robot War DOS and Robot War RWTS as two separate files on disk A. BSAVE RWTS.ROBOTWAR »A$4800,L5800 BSAVE ROBOTWAR.DOS »A$2600,L$2200 6) Patch DOS and format a disk that will be called disk B with the volume number you determined in step 3. POKE -19523,12 INIT HELLO,V1 7) Install the Robot War controller at the end of this article into Super IOB and copy the original Robot War disk to a new disk labeled disk C. 8) Now, transfer all the files from disk C to disk B by using FID. 9) After we have transferred all the files, put disk A into the drive and load the file ROBOTWAR.DOS. BLOAD ROBOTWAR.DOS 10) Type in the following bytes and then press Reset. This has the effect of disabling DOS. CALL -151 3F2:03 E@ 45 11) Now move Robot War's DOS back to its original place and activate it. CALL -151 9600<2600.47FFM 9DTEG 12) Put disk B into the drive execute the boot file. RUN HELLO 13) When the main menu comes up, choose option 5 to initialize disk D. 14) When the process is done, exit the Robot War and get out a sector editor to copy track @, sector @ of disk B to track @, sector 0 of disk D. 15) Now, install the CopyDOS controller at the end of this article into Super IOB and use it to copy tracks @ through 2 from disk D to disk B You now have a COPYAable version of Robot War on disk B. RobotWar controller 1900 REM ROBOT WAR 1916 TK = 6 :ST = :LT = 35 :CD = WR :D0S = 13 1920 T1 = TK : GOSUB 490 : GOSUB 368 : ONERR GOTO 550 1036 GOSUB 430 : GOSUB 100 :ST =ST+1: IFST< DOS THEN 1630 1040 IF BF THEN 1068 1050 ST=0 :TK=TK+1; IF TK < LT THEN 1030 8 COMPUTIST No. 36 1060 GOSUB 490 ;TK =T1 :ST =0 ; GOSUB 360 1079 GOSUB 430 : GOSUB 100 :ST=ST+1: IFST< DOS THEN 1070 1080ST=0 :TK=TK+1 1970 1090 IF TK < LT THEN 1020 1100 HOME . PRINT "CONTROLLER* DONE” ; END 10010 IF PEEK (6409 ) < > 162 THEN PRINT CHR$ (4 ) "BLOAD* RWTS. ROBOTWAR, A$1900" IF BF=0 AND TK <LT THEN controller checksums 1000 - $3568 1060 $9006 1918 - $23F9 1070 - $9803 1920 - $3D3E 1080 — $7A3E 1030 - $2B3F 1090 - $5D64 1040 - $0354 1100 ~ $6804 1050 - $3735 10016 - $67B5 CopyDOS controller 1000 REM COPYDOS 1919 TK=0 :LT=3 2ST =15 :LS=15 :CD=WR :FAST =l 1020 GOSUB 490 : GOSUB 610 1038 GOSUB 490 : GOSUB 610 THEN 1050 1040 TK = PEEK (TRK ) :ST=PEEK (SCT ) : GOTO 1020 1950 HOME : PRINT "DOS* COPIED" : END IF PEEK (TRK ) = LT controller checksums 1000 - $3568 1930 - $5F3F 1018 - $FF63 1049 - $3210 1920 - $1371 1950 - $6239 z Kevin Sartorelli’s softkey for... General Manager Sierra On-Line Requirements: General Manager 2.0Y Blank disks COPYA This versatile data base uses a nibble count routine on track @ as its protection. The nibble count routine is encoded and a checksum of it is generated to further confuse the issue. The following method will remove both the nibble count and the memory check. 1) Copy all disks with COPYA. 2) Insert the copy of the Master Program disk. 3) Go into the monitor with CALL -151. 4) Load in the file containing the encoded nibble count routine, readers’ softkey & copy exchange BLOAD SORT INTERFACE OBJ A$7000 5) Disable the nibble count. 7054:BE BF 6) Save the patched file back to disk. UNLOCK SORT INTERFACE OBJ BSAVE SORT INTERFACE OBJ »A$7000,L$100 7) Load in the file containing the memory check. BLOAD GENERAL MANAGER 8) Disable the memory check. 641C:EA 9) Save the patched file. UNLOCK GENERAL MANAGER BSAVE GENERAL MANAGER Your copy of The General Manager is now ready to use. & Kevin Sartorelli’s softkey for... Plasmania Sirius Software Requirements: A DOS 3.3 slave disk with no HELLO A RAM card to run the game This game by Sirius is a bit of fun to play but like most games it is protected. As it appeared to be a single load game that only required the disk when the game had ended, I felt it could be made into binary files. To do this I did a boot code trace and found that what was read in between games was the code to do the talking that accompanies the title page, and the title page. Below is the method Tused to break Plasmania down to three files. The first file is the main game, the second the ‘talk’ code, and the third a small file to load the other two. The game when cracked like this requires a RAM card to work as the "talk’ code is stored on the RAM card until needed and then moved from there instead of being read in from the disk. The boot code trace has to be done twice as the game takes up most of memory and some of this is overwritten when a slave disk is booted. 4) Go into the monitor CALL -151 2) Move the first stage boot from ROM to RAM. 6600<C600.C6OFFM 3) Make a patch to load in the game and enter the monitor after loading. 2F@:A9 59 8D FS 04 AD FF 8D 2F8:F6 64 4C 00 04 66F8:A9 F@ 8D C9 @8 A9 2 8D 6700:CA 08 4C 01 08 4) Start the boot. 6600G 5) Move the memory that would be destroyed by the upcoming boot 9100<800.900M 6) Boot a slave disk with no HELLO and return to the monitor. 6@P) CALL -151 7) Restore the moved code and save the main game to the disk. 800<9100.91FFM BSAVE PLASMA1,A$800,L$8800 8) Repeat steps 2, 3, and 4 to reload the program, 9) Move the talk code away from DOS’s area. 2000<9000, BFFFM 10) Boot the slave disk again and return to the monitor. 6@P) CALL -151 11) Patch the talk code so it will work, and add code to move itself out of the RAM card at run time. 4FF1:00 BF 60 4F00:AD 83 C@ AD 83 C@ A9 00 4F08:85 04 85 66 AD EO 85 05 4F10:A9 40 85 07 A@ 00 Bi 04 4F18:91 66 C8 D@ F9 E6 67 E6 4F20:05 Dé F3 AD 82 Cé 60 12) Save the talk code to the disk. BSAVE PLASMAO,A$2000,L$3000 13) The following is code to load in the main program, load the talk code into the RAM card, and enter the game at $6000. 300:AD 5@ C® AD 57 Cé AD 54 308:C@ AD 52 C@ AD 81 C@ AD 310:81 CO A® 00 BO 76 03 FO 318:06 20 ED FD C8 D@ F5 AD 320:82 C@ Ad 90 BY 8D 03 FO 328:06 20 ED FD C8 D@ F5 EE 330:F4 @3 AD 83 C@ AD 83 CO 370:AD 82 CO 4C 00 60 8D 84 378:C2 CC CF C1 C: Cc 380:D3 CD C1 B@ AC Cl Ad C4 388:B0 BO B@ 8D 66 8D 84 C2 390:CC CF C1 C4 D@ CC C1 D3 398:CD C1 B1 8D 00 14) Save the new loader. BSAVE PLASMANIA,A$300,L$9D Now to run Plasmania you type BRUN PLASMANIA and away it goes. * Larry Rando’s softkey for... Telarium Software Telarium Corp. 1 Kendall Square Cambridge, MA 02139 Requirements; Whole disk copier that can ignore errors Perry Mason Farenheit 451 Rendezvous with Rama Nine Princes in Amber Telarium’s protection schemes are basically the same (at least in the fact that they usually reside in a Binary file called IO), Changing a standard nibble count is all that it takes to defeat these schemes. Perry Mason& Nine Princes in Amber 1) Copy all four sides with any whole disk copier that can ignore errors. 2) Boot DOS 3.3 and load IO from disk | PR#6 BLOAD IO 3) Enter the monitor and defeat this file’s nibble count. CALL -151 1CC1:A9 06 EA 4) Save the modified file. BSAVE 10,A$A00,L$1512 That's all! COMPUTIST No. 36 9 readers’ softkey & copy exchange Rendezvous with Rama 1) Copy all four sides with your whole disk copier. 2) Boot DOS 3.3 and load the offending file from disk 1. PR#H6 BLOAD IO 3) Enter the monitor and defeat the nibble count. CALL -151 IBF5:20 29 1C 4) Save this defeated file. BSAVE 10,A$A00,L$1512 Fahrenheit 451 1) Copy all four sides with your whole disk copier. 2) Boot DOS 3.3 and load the protection file. PR #6 BLOAD 10 3) Enter the monitor and correct this file. CALL -151 1C24:EA EA EA 4) Save this version of 10. BSAVE 10,A$800,L$1516 T hope these procedures help you in your quest for deprotection. ra Jeff Lucia’s APT for... Championship Lode Runner Requirements: A sector editor One blank disk A good bit copier When playing Championship Lode Runner, have you ever wished you could skip to any level, have any amount of players, see the special password for the certificate, revive games that have been deleted or modify the high scores? I know that I have. This is why I have developed the following APT for all of the above, 1) First, Copy tracks 3-8 onto your blank disk. 2) Haye a little fun by playing Championship Lode Runner for a while, then save the game with any name you like (write the name down so you remember it). 3) Run your sector editor and read track $0C sector $0D 4) Here's the hard part. In the text portion find the name of your saved game. Now go to the first letter of the name and then go forward eight bytes. 5) This byte will be the real level number. The next byte will be the real level number minus 1. The third byte is how many men you have. The other five bytes will be your score (in a special order). 6) Now that you know what each byte is, modify them in hex, to the desired values. If you want to revive a deleted game you must look for the name of that game. There will be an inverse ‘*@"’ for the first letter of that game. Change it to a normal letter. Then change the amount of men left. 7) Once you are done write the sector back to the disk. 8) If you want to change the high scores use your sector editor and read tracks $0C sector $0F then find the name of the high score you desire to modify and move forward eight bytes. The high scores are stored the same way as games. An Example Here is a little example of what I was saying in step 4-5. Let us say that you saved a game named *‘FOOP"’ (Good name) now we use Copy I+ 4.3's (or any version) sector editor. Here is what track $0C sector $@D will look like the following: 90- C6 CF CF DB AD AD AD AD FOOP G8- 01 00 05 00 00 00 00 00 Aat@eaaa Now let's look at this. Look at the byte eight bytes forward of the letter ‘‘F’’ in the word “FOOP”’. Notice the hex value ‘*O1"" this is your real level. Also notice that next byte is a “Q0"" and that the third byte is an “05”. This means that ‘‘FOOP”’ has 5 men and is on level 1 with no score. Now you want to go to level 5@ with 255 men. So, change the first byte to a $32 the second byte to a $31 and the third byte to an $FF. You MUST change the second byte to the level minus one (1) otherwise the program knows you're trying to cheat it and starts you at level one. Here is also one quick example of undeleting a deleted game. The name of my game was called, ““Level 42.” 10- 86 C5 D6 C5 CC AD B4 B2 @EVEL 42 18- 26 25 BE 01 59 47 00 00 &t>AYGe@ Just change the first byte of the name to any letter or number and you will have a game with a high score of 1,594,470. I hope you have a lot of fun cee 10 COMPUTIST No. 36 Daniel J. Elliot’s softkey for... Kidwriter v1.0 Requirements: Apple JL, //e or //c Super IOB v1.5 1 blank disk side Kidwriter is a word processor for children, ages 6-10, which allows them to create their own story boards. This is a very neat little program for developing a child's interest in the computer. While I do not plan on using the program myself, a backup would be very convenient for any program used by small children. Unfortunately, my luck held out and the version of Kidwriter softkeyed by Mike Stafford in COMPUTIST No. 20 had a different protection scheme than mine. This left me no alternative but to develop a new softkey. The Protection During the boot, an Applesoft prompt appears at the bottom of the screen indicating a somewhat normal DOS. Next, using my nibble editor, I examined the tracks and sectors for altered address and data prologues and/or epilogues. The data field was normal but the address field was another matter. First of all, the address headers alternated between the usual DS AA 96 and the not so normal D4 AA 96. This is much like the protection used on several Penguin releases. The address field trailers proved to be AF AQ. T quickly made a Super IOB controller and tried to copy the disk. The controller got some “Drive Errors"’ so Texamined the sectors more closely and noticed that the address field trailers changed on different tracks. I therefore revised the controller to ignore the data field trailers and presto!, a deprotected Kidwriter. Step by Step 1) Install the controller at the end of this article into Super IOB and copy the disk. You now have a COPY Aable Kidwriter. If you also have a kid, you'll need it. controller 1000 REM KIDWRITER 1910 TK = :ST =0 :LT=35 :CD=WR 1626 T1 = TK : GOSUB 490 : ONERR GOTO 558 1922 POKE 47405 ,24 : POKE 4746 ,96 : POKE 47497 , 24 : POKE 47498 96 1925 POKE 47445 ,212 + (TK / 2 = INT (TK/2) ) readers’ softkey & copy exchange 1039 GOSUB 439 : GOSUB 109 :ST=ST+1: IFST< DOS THEN 1030 1040 |F BF THEN 1960 1950 ST=0 :TK=TK +1: IF TK <LT THEN 1025 1860 GOSUB 490 :TK=T1 :ST =O : POKE 47445 , 213 1970 GOSUB 438 ; GOSUB 100 ;ST =ST +1: IFST< DOS THEN 1078 1986 ST =0 :TK=TK+1 1970 1090 IF TK < LT THEN 1620 110 HOME ; PRINT "DONE* WITH* COPY" ; END |F BF = AND TK <LT THEN controller checksums 1008 - $3568 1958 ~ $CD87 1010 - $3266 1060 - $CB56 1020 ~ $5528 1070 - $C353 1922 - $597 1080 — $FA65 1025 - $BCB3 1090 - $6A3C 1030 - SAAB2 1100 - $9BD8 1049 - $FC6B Glen Tatum’s softkey for... Color Me Mindscape Requirements: Super IOB or COPYA A disk scanner A sector editor Color Me is a new disk from Mindscape, it is a double high-res color book-type program. My kids love to use it, and it uses the color capabilities of the new Imagewriter II color printer. I don't know if anyone else has had trouble copying the disk or not, but my copies always just kept rebooting. Using a sector editor with search capabilities (Luse Copy I+) I tried searching the copy for the hex commands 4C 00 C6 (IMP $C600,or reboot disk). Looking around in the same area I saw a JMP 1706, if I booted the copy disk and then reset into the monitor and tried a 1706G, the disk light came on and it started reading more data but then stopped. Obviously, it needs to be in some loop to continue, If we go back with a sector editor and reverse the two commands so it loops at 1706 instead of C600 then the program loads and runs fine. So, here is a step by step for Color Me: 1a) If you're using Super IOB, then use the controller at the end of this article to copy Color me and go to step 2. Ib) If you are using COPYA, then enter the monitor and tell DOS to ignore the ending marks. CALL -151 B988:18 68 B925:18 60 3D0G RUN COPYA 2) Search your disk for the sequence 4C 00 C6, mine was at byte 93 of Track $0 Sector $8. A bit before this sequence, you should see a 4C 6 17 (mine was at 8C). 3) Get out your sector editor and make the following changes to these sequences. Byte was now gC 4G AC 8 06 OO GE 17-06 93 40 4C 94 90 06 9 C6 17 Write the sector back out to the disk, and you have it finished, The same Super IOB controller or modified COPYA can be used to copy all of the picture disks as well. i] controller 1900 REM COLOR ME 1919 TK=0 :LT=35 :ST=15 :LS=15 :CD=WR : FAST sl 1015 POKE 47496 , 24 : POKE 47497 96 : POKE 47397 .24 POKE 47398 ,96 1020 GOSUB 490 : GOSUB 610 1030 GOSUB 490 : GOSUB 610 THEN 1050 1040 TK=PEEK (TRK) :ST=PEEK (SCT) : GOTO 1020 1050 HOME : PRINT "COPYDONE" : END \F PEEK (TRK ) =LT controller checksums 1000 - $3568 1030 - $76FF 1010 ~ $2544 1049 - $BA80 1915 - $62D1 1050 - $2FBC 1020 - $A16C To stop an EXEC file, Reset into the monitor and type: AAB3:00 Reconnect DOS and type: CLOSE to close the file. COMPUTIST No. 36 11 Screenwriter meets Flashcard by Herbert Alfred Mayer Most word processing programs become disk intensive when text files of more than a few typewritten pages are edited. The result is that the typist is plagued by long delays while information is transferred to and from the disk. These delays can be virtually eliminated by appropriate application of a “RAM disk"’. A RAM disk, also known as a solid state disk emulator, is RAM configured to imitate a disk drive. This article shall describe one such marriage of a RAM disk to a word processor. The use of the FLASHCARD (a 147K byte solid state disk emulator from Synetix, Inc.) with ScreenWriter ][ or ScreenWriter //e (a word processor from On-line Systems, Inc.) vastly improves the editing speed of the word processor. For instance, a text-string global search and replace operation on a 50 page document will be accomplished in seconds instead of minutes. Moving from one part of the document to another part is nearly instantaneous. You will find that working with large documents is transformed from a tedium to a delight The Problem While the end result is a delight, consummating the marriage is not straight forward. On-line *‘does not support any of the disk emulators for ScreenWriter.”” The problem is that, although the ScreenWriter disk contains a standard DOS 3.3 operating system including a standard RWTS routine, ScreenWriter uses its own RWTS routine for text file access. Fortunately, ScreenWriter will operate properly when connected to a standard DOS 3.3 or the FLASHCARD alternate RWTS routine. This article will describe how to make a FLASHCARD version of either ScreenWriter ][ version 2.0 or ScreenWriter //e version 2.2. Virtual Memory Before we proceed, however, let’s review the preferred way to use ScreenWriter. ScreenWriter uses the unused space on the disk that is assigned to the *tOUTPUT FILE” as virtual memory. The ‘virtual memory’’ holds the portion of the document that will not fit in RAM and is not currently being processed. During word processing of a large text file, ScreenWriter is making repeated accesses to the “OUTPUT FILE” disk, but it is not really saving the document in a final or useable form. Tt is these disk accesses that slow down word processing with ScreenWriter. What we want to do is use the FLASHCARD as the virtual memory disk. Without the FLASHCARD, assuming a two drive Apple ][ system, the best way to use ScreenWriter is to put a blank initialized disk (preferably, but not necessarily, with DOS deleted) in drive 2. When ScreenWriter displays the question: OUTPUT FILE?, the user types: VM,D2 (VM is the file name I give to virtual memory.) The ScreenWriter disk is removed from drive #1 after the loading of ScreenWriter is 12 COMPUTIST No. 36 complete. The INPUT FILE will be from a file on a document disk subsequently placed in drive #1. Text is saved to the document disk using the command: sNAME,d1 Now let’s add a FLASHCARD to the system: We will use the FLASHCARD in place of the blank lized disk in drive 2. When ScreenWriter displays the question: OUTPUT FILE?, the user will type VM,S5,D1 (assuming the FLASHCARD is in slot 5). Text will be saved to the document disk in drive 1 using the command: sNAME,s6,d1 (The D1 or d1 suffix will not be necessary if drive 2 is not accessed.) FAST SPOOL Printer spooling requires the use of some memory device to buffer the data going from the computer to the printer. ScreenWriter permits using blank disk space for this buffer memory. I use spooling mainly to gain, from within ScreenWriter, boldfacing and underlining capabilities with my EPSON printer. It also permits editing one document while printing another. The latter is best implemented with a 294K (2 drive) version of the FLASHCARD. In general, it is advantageous to use the FLASHCARD for spooling, as it will speed spooling and save wear and tear on a disk drive. The required modification will only be described for the EPSON SPOOLER, as it would be too redundant to describe the modification for all seven spooler drivers provided on the ScreenWriter disk. The same type of modification, however, can be made for any of the other spoolers. Set up the spooler as per the instructions in the ScreenWriter manual and then make the modifications described below. Modifications A FLASHCARD version of ScreenWriter may be prepared as follows: 1) Notch a blank disk so that both sides may be used. (Alternatively, use two blank disks.) This will be our ScreenWriter/Flashcard disk. 2) Use the COPYA utility on your DOS 3.3 SYSTEM MASTER to copy the ScreenWriter disk to the front side of the ScreenWriter/Flashcard disk. If this is ScreenWriter ][ version 2.0, delete the TUTORIAL file to make room for the SSD programs we must add to the disk, 3) Initialize the back side of the ScreenWriter/Flashcard disk. Be sure not to copy any files to the back side. If you have a utility that will permit deleting DOS from the back side, use it, If you wish, you may use this back side once with ScreenWriter as the virtual memory disk in order to register the VM file ‘on it. Then when ScreenWriter displays the question: OUTPUT FILE?, the user needs only type: 1,85,D1 4) Listing #1 presents a modified version of the AUTOCOPY program supplied by Synetix on their DOS 3.3 DRIVERS disk. Enter the program as shown and, using the name: SSD AUTOSTART, save it to the front side of the SereenWriter/Flashcard disk. 5) Use the FID utility on your DOS 3.3 SYSTEMS MASTER disk to transfer the SSD DRIVER/ALT and COPY programs supplied by Synetix on their DOS 3.3 DRIVERS disk to the front of your ScreenWriter/Flashcard disk, 6) The remaining tasks will require a good sector editor such as BAG OF TRICKS from Quality Software. Make the disk modifications shown in Table #1. Customizing When you customize your new ScreenWriter/Flashcard disk, be sure to make the following slot and drive assignments: Waster Disk- Slot=6, Drive=1 Text Disk- Slot=6, Drive=1 Spooler Disk- Slot=5, Drive=t The last item assumes you wish to set up spooling and that the FLASHCARD is in Slot 5. If you have a 294K byte (2 drive) FLASHCARD, use Drive 2 for the spooler so that you can edit and print simultaneously. Operation Your ScreenWriter/Flashcard disk operates as follows: Upon booting the front side of the disk, the SSD AUTOSTART program is loaded and run. The SSD AUTOSTART program, BRUNS the SSD DRIVER/ALT program, which loads the SSD RWTS routine into the INIT area of DOS and installs a jump from the DOS RWTS routine to the SSD RWTS routine. The SSD AUTOSTART program then BLOADs the COPY program into memory and requests the user to reverse the disk in drive 1. The back side of the ScreenWriter/Flashcard disk is then copied into the flashcard. This initializes the flashcard. The user is then again requested to reverse the disk in drive |, The SSD AUTOSTART program then BRUNs the START program, which is the ScreenWriter program that initiates the loading of the various ScreenWriter files. These ScreenWriter files have been modified with jumps installed from their special RWTS routines to the SSD RWTS routine. The only ScreenWriter feature that has been lost is the ability to initialize a data disk; data disks must be initialized beforehand with standard (unmodified) DOS booted. Table 1 Track Sector Byte From To Notes For either ScreenWriter version: $08 $00 $01 $09 $42 $34 $06 = RUN command $75 "START" "SSD AUTOSTART" For ScreenWriter ][ version 2.0- $03 $0B $94 $20 $EA RAM $00 SEA Editor: SOF SEA Enable $13 $04 $4) $20 SEA _—NON-RAM $00 SEA Editor: $60 SEA Enable $12 SOF SOE SAD SAO RAM $20 $2C_ Editor: $84 $A9._— Connect $48 $74 SSD $A9 $40 RNTS $74 $00 $85 $BD $49 $08 $05 $09 $E9 $Ad $AQ —NON-RAW $07 $87 Editor: $84 $A9_— Connect $48 $69 SSD $A9 $4C_— RWS. $69 $00 $85 = $BD $49 $08 $17. $OB SEC SA $A EPSON $01 $81 Spooler $84 $A9_— Connect $48 $91 SSD $A9$4C_RNTS $91 $00 $85 $BD $49 $00 For ScreenWriter //e version 2,2- SOF $07 $90 $20 SEA RAM $00 SEA Editor: S7F $EA Enable SOE $03 $49 $20 © SEA —NON-RAM $00 = $EA Editor: $6E SEA Enable $17 $03) $68 $A2 $4C RAM $00 = $00) Editor: $00 = $BD Connect SAB $08 © SSD RWTS SIA $08 S4E SA2 $4C —NON-RAM $00 = $00 Editor: $08 = $8D =~ Connect $A8 $00 SSD RNTS $08 $08 $08 $A2 $4 //e $00 $00 Editor: $00 = $BD Connect $A8 $00 SSD _RWTS $13 $08 «$2F $A2 $4C EPSON $08 $00 Spooler: $0 $BD Connect $A8 = $00 ~=—- SSD RNTS Program 1 19 TEXT : HOME : PRINT "SSD* AUTOSTART" 20 PRINT CHR$ (4) "BRUN* SSD* DRIVER/ALT" 30 PRINT CHRS (4 ) “BLOAD* COPY" 40 A = PEEK (43634 ) +256 * PEEK (43635 ) 50 REM OS = ORIGINAL SLOT, 0D = ORIGINAL DRIVE, CS=COPY SLOT, CD = COPY DRIVE, FMT= @DON 'T FORMAT, FMT= 100 FORMAT 60 0S = 6 :0D=122CS=5 :CD=1 :FW 70 PRINT "ABOUT* TO* COPY* SLOT* " OS "* DRIVE* "OD: PRINT"*4 244444484708 c1oTa "CS "* DRIVE*" CD : PRINT 80 PRINT "PLEASE* REVERSE* SCREENWRITER® DISK!" : PRINT ; PRINT "AND* THEN" : PRINT : INPUT "PRESS* [RETURN] :*" ;22$ 9 GOSUB 138 100 HOME : PRINT "SSD* INITIALIZED" : PRINT : PRINT "PLEASE* REVERSE* SCREENWRITER* DISK!" : PRINT : PRINT "AND* THEN" ; PRINT + INPUT "PRESS* [RETURN]:* " ;22$ 110 PRINT CHRS (4 ) "BRUN* START" 120 END 13@ REM COPY DISKS 140B=PEEK (A+3) +256 %* PEEK (A+4) : POKE B 0S: POKEB+1 ,0D : POKEB+2 ,CS : POKE B+3,CD: POKEB+4 ,255 ; POKEB+5 ,255 * (FIT <>) 190 CALL A 160 RETURN checksums 19 — SE7C3 90 =~ SFODS 20 - SS6EE 199 ~ $0925 300 - $6444 110 = SA2TL 45 = $9F67 120 = $C544 58 0 - $7989 138 - $C6C5 60 ~ SABFO = 140 - $5AE 70 - SAODB = «15 - S2Al2 86 =~ $CFCO 160 - $3BEE COMPUTIST No. 36 13 Enhancing your Apple with the Note: COMPUTIST magazine or SofiKey Publishing will not be held responsible for any damages incurred while following this procedure. by Clay Harrell and Sidney Fernstock Some of you COMPUTIST readers may have been alive during the dark ages when all computers had ‘front panels’? filled with switches, dials, and blinking lights (now relegated to B-grade science-fiction movies). From these marvelous control panels you could examine any memory location, change it, step through the program, find an error, and correct the code without having to exit the program you were running. Then came those infernal high- level languages, lower-cost computers, and (ugh) monitor programs, I'm proud, finally, to announce a major step backwards in computing ~ the Apple Bus Monitor. Basically, this device “rides the bus” in the Apple and reveals where the CPU is and whats it’s doing. In normal operation, it gives yo “averuge’’ reading of the value on the Apple’s address bus (usually the program counter), and the contents of memory at that location. On many computers, this information would be severely deficient for any serious debugging purposes, but since all the I/O on the 6502 is through memory locations, you can use this device in an amazing number of informative and entertaining ways. In addition, there is a slow-down feature which allows you to watch the CPU at very slow rates, or even single-step through a program to debug it. A few cautions: the Bus Monitor is absolutely useless for debugging BASIC programs, and requires a working knowledge of the 6502, the Apple, and of Assembly language to justify the effort required to build one. Be advised, too, that this project is strictly for the hardware builders and those intrepid souls who love the challenge of something new. Further, the Bus Monitor will not allow some of the more sophisticated functions of a good front panel such as alter, trap, or break at a specific location or value, and it doesn’t work 100% correctly on Apple ls manufactured before 1978. Finally, the Bus Monitor won't work when the Apple is under the control of a plug-in co-processor card such as a Z-80 Softeard, **the Mill” 6809 card, or ‘one of the fancy new 68000 or 8088 cards. The Bus Monitor is built up on a “kludge” card that plugs into a peripheral slot connector in the Apple. If you like to use wire-wrap construction, stick to “‘two-level’” sockets or resign yourself to losing two slots to this card. When I built mine, I tried for a long time to figure some way of mounting the LED displays on the card to avoid cabling problems, but was unsuccessful. The result is that a cable must run from your Apple to a box which houses the controls and displays. This is a minor problem if you have an Apple //e with its “*helpful’* teeny-weeny openings in the rear panel. Or if you ever watch channel 2 in your house (the RFI problem is much worse with an exposed cable). Alternatively, you can run the entire peripheral slot bus out to a separate box and wire up the circuitry and displays on a single board. You can use a homemade plug and cable for your external bus, or a commercial device like **Extend-a-slot’’, but the cable length for reliable data will be severely restricted with this approach. I ended up using one of those expensive Vector Electronics plug board cards. Gameco Electronics #4609, 415-592-8097 $24.95). Using the second finger edge and a card connector, I ran the bus to an external box with all my circuitry and LEDs. This provided to be a wise choice as all the circuitry was external and easy to debug and repair, and I could still use the rest of the Vector card for building another peripheral, hence not sacrificing a slot. Another potential problem is trying to use this device in a stuffed-full Apple J or J Plus with the power supply running near its limits. In this case, you'll have to hook up another +5 volt power supply to the display and connect the ground of the extra power supply to the ground of the Apple's power supply. I found using the already whimpy Apple power supply too much for my Bus Monitor (even on my //e), so used an external power supply (Jameco Electronics 14 COMPUTIST No. 36 #PS72559, $14.95) with at least 2 (preferably 3) amps of +5 volts. The problem is that the LEDs specified in the schematic draw 200-300 millimps each from the +5 volt supply. If you can find lower current LEDs, by all means use them, but be sure that they are Fully-Decoded Hexadecimal display LEDs. The Control Panel A suggested front panel layout for the display box is shown below. In addition to the 6 LED displays (four for address, two for data), controls on the box include toggle switches for Normal/Slow speed, Slow/Medium/Fast speed control (when in slow mode), Slow/Single Step, und push-button switches for Step and NMI (if you have to ask what NMI does, you don't need i). A single variable control allows fine adjustment of the Speed in the Slow mode. ADDRESS bata Lis) SLOW NORM RUN — SREEO STEP NM Heo’ CY: Miatiutee ey 9 9 The Schematic A slightly abbreviated schematic is shown on the next page. The two LED digits which display the data bus connect to the eight outputs of the 75LS377 as shown: the less significant digit (LEDS) connects to the latched output from D@ to D3, and LED6 goes to D4-D7. The four Address L can go directly onto the bus at peripheral slot pins 2-17, unless the cable is Significantly over two feet in length. For long cables, it may be necessary to connect LSTTL buffers such as the 74LS07 in series with each of the address lines, The connection scheme for the Address LEDs is: Pin 2 LED4 O1 Pin 6 LED3 DL Pin 3 LEDS 02 Pin? LED3 D2 Pin 4 LED4 D4 Pin 8 LED3 D4 Pin 5 LED4 08 Pin 9 LED3 D8 Pin 10 LED2 D1 Pin 14 LEDI DL Pin It LED2 02 Pin 15 LEDI D2 Pin 12 LED2 D4 Pin 16 LED1 D4 Pin 13° LED2 D8 Pin 17 LED] 08 For the address LEDs, all four latches (pin 5 of the LED) are connected to the output of the 74L$00 as shown, and the Blanking inputs (pin 4) all go to +5 volts. Note that the latch input for the Data LEDs goes to +5 volts. The cable can be twisted pair (the best for impedance matching) or shielded flat-ribbon (better for RFI, but much harder to find). Regular flat ribbon cable can be used, but you've been warned of the consequences (in fact, it’s not that bad, as I use flat ribbon cable without any problems, but the potential is there...) In any case, it must consist of at least 30 conductors: Address 16 | ines Data 8 lines control 4 lines power 2 lines The control lines consist of clock phases 0 and 1, the READY line and the NMI line. The power lines consist of a +5 and a ground. If you are powering the LEDs from the Apple, you should use at least 5 ribbon cable lines for each, For additional uses for the Bus Monitor refer to the article by Jeffrey Mazur in the column **Hardtalk”’ in the June 1982 Softalk. It’s pretty obvious that you can entertain yourself endlessly by watching your favorite game draw its shapes on the hi-res screen in slow-motion, watching a BASIC program scroll up at one letter per second, or getting the last bug out of your embly language **magnum opus”’, but there are a great number of applications in which the Bus Monitor is worth its weight in gold. Probably the most frustrating experience in programming is when your program jumps to oblivion or ties itself up in an endless loop, and the only way to recover is to hit Reset or worse yet, power down to regain control. With the Bus Monitor, you can generally tell when the program is in an endless loop by the stable pattern that appears on the Address and Data displays. You may not always be able to tell how the program got there, but knowing where the loop lives in your program is usually a tremendous help Similarly, the nature of the *‘crash’’ that occurs is often revealed by the contents of the address and data bus: FFFF is usually a good indication that you tried to go to a nonexistant location or yanked the wrong hardware line and strangled the CPU. Of course, for deprotection the Bus Monitor is invaluable. For example, finding a nibble count or where a protected DOS is running in memory is a breeze by merely viewing the address bus during the disk access. For example, Penguin's Crimson Crown is copyable with COPYA, but due to a nibble count, the copy will not run, By booting the copy with the Bus Monitor, you can see exactly where the problem occurs when the disk hangs for a moment during the nibble count. The reason the Bus Monitor is of particular importance in this application is that the nibble count is EOR’ed and hidden. Without the Bus Monitor finding a routine could be anywhere between $00 and SEFFF in memory (including a second bank of $D000-DFFF) could be a very time consuming chore. If the routine is EOR‘ed before and after being executed (as in Crimson Crown), it could be impossible! The Bus Monitor could save you hours in boot code tracing and other frivolous activities to find those nibble counts and other protection code! Many other uses will become obvious as you work with the Bus Monitor, You'll probably wonder why anyone would ever build a computer without one! -& awe. << This shematic APPLE I+ and Ie BUS MONITOR by Clay Harrell ana Sidney Fernsteck was prepared with FONTRI COMPUTIST No. 36 15 = a character editor: Yat DRESSING by Joe Montano Electronic Arts 2755 Campus Drive San Mateo, CA 94403 (415) 571-7171 Requirer 64K Apple || with DOS 3.3 A Bard's Tule Character disk 1 was a bit skeptical when 1 first purchased The Bard’s Tale. Having been a Wizardry nut for years, 1 was doubtful that anything could match it, much less better it! Well, T was wrong. ‘The color graphics are superb and it plays much smoother and easier than Wizardry. However, don’t construe that to mean that it's easy to beat! After my favorite wizard, Frobozz, was fried to a crisp by a wandering dragon, I decided there had to be a better way. There was and here it is Background All of the characters that you create are stored on track $00 of the character disk you made according to the game instructions. They are stored two per sector for every sector except $0. That means you can maintain up to 30 characters and/or parties on each disk. The remainder of the disk is game data and the map of Skara Brae, In each character sector, bytes $00 and $80 begin the name of a character or party and all character or party data follow that for precisely 1/2 sector. As the article progresses I'll try to explain where each item is and what it means. Although I believe I've located the important characteristics, there are still assorted bytes that Thaven't been able to figure out. For the more curious, discovering what the other bytes are could be an interesting project. When The Bard's Tale saves a character to disk, it computes a checksum and writes it to the last byte of the character. On reloading, that checksum is verified against the character data and if it isn’t correct. the game tells you that character doesn’t exist. Fortunately, the checksum isn’t verified if the character is loaded via a party load. If the name of your modified character is on a party roster, just load the party and resave your character with the R(emove) command. A new checksum will be computed and your problem will be solved. If he isn’t on a party roster, this editor can put him on one. Characters cannot be created or deleted with THE DRESSING ROOM. You must edit a character that has already been created in the game. The same applies to party rosters. Making it Go Just type in the Applesoft listing and SAVE itas “THE DRESSING ROOM” (I realize it's 16 COMPUTIST No. 36 long, but keep the faith). As soon as you RUN it you will get a reminder on loading modified characters into the game and will be advised to place your character disk in the drive of your choice. Just press the number of the drive your disk is in and it will then read the names from the disk and present you with a Master Roster of all your characters. The names will be listed in pairs (two per sector, remember?) and you will be able to edit both, if you wish, before writing them back to the disk. Once a character is selected for edit, each menu displayed will have all command keys listed at the bottom. There is no need for written documentation to operate The Dressing Room. While debugging the The Dressing Room, it would be a good idea to make line 280 into a REM line until finished because that is the line that writes your characters back to the disk. Each time you return to the main character display, the data is read from the buffer just like it will be written to the disk. So when that looks right, it probably is. One final note. Since The Dressing Room uses the RWTS directly, it will only work on a DOS that has a standard DOS 3,3 RWTS and uses DOS 3.3 page $03 vectors. If in doubt. boot with your DOS 3.3 System Master. If your character disk is write protected when you try to write your character back it will pretend to write, but it really won't. If you're not sure, read your character back into the buffer and check it BARDS 3200/4 What Makes it Go Here is a basic overview of the main routines and what they do or change. For purposes of this description I will reference only the first character in the sector, For locations of the second, j id $80. 100-120 Set-up: Calls routines for initialization, compiling and displaying the master roster. 130-240 Main menu: This routine calls “display character’ and lists your command keys. Here is also where you can switch, and edit your second characte 250-410 Working subroutines: These do all the little things that have to be done often, like centering titles, drawing borders, etc. Also included is that touchy line 280 that writes to the disk. 420-630 Name check: When the disk sector is read into the buffer, this routine looks for character names. If it finds none, it tells you so and returns to the Master Roster for another selection. The names found are read into variables NX$ for one, NY$ for the other, depending on the variable BUF. The name is stored in bytes $00-$0F, with trailing bytes filled with SPF. The first byte of a party name is always SAA 640-660 Get experience and gold: Experience is stored in bytes $14-1F in the form of I decimal digit per byte (e.g. 326 exp. points would be $03 $02 $06 in bytes $1D-SIF, respectively). Gold is stored in bytes $24-$2F in the same manner. The variables are EP and GL, naturally. 670-790 Display character: This is the routine lets you look at the character you have so you can change him to the character you want. 800-1110 Team edit: This is where you go when you want to change a party roster. Names ure stored starting at bytes $10, $20, $30, $40, $50, and $60 in the same manner as individual character sectors. Here is where you add your modified character's name so you can load them back into the game 1120-1360 Compile master roster: Called by the initialization routine, this reads every sector of track $00 into the buffer (except $0) and reads all the names into the array NS() which is used by the display master roster routine. 1370-1480 Display master roster: This is where you make your selection of which characters to edit and then read them into the buffer. This is also where you exit the program, if you want to do it right. 1490-1710 Main modify menu: This is where the fun begins. A list of 12 changable items is displayed for your perusal and selection. 1720-2760 Changes! These lines will change the first 10 items on the modify menu. Rather than explain each individually, table | is a chart showing the locations concerned. Even though Spell levels and Equipment aren’t changed in these lines. I added them to make the chart more complete. Table 1 Name $00-$0F Attributes $10-$13 Class $38 Race $39 Level Twice $20-$21 & $22-$23 Experience $14-$1F Gold $24-$2F Hit points Twice $30-$31 & $32-$33 Spel! points Twice $34-$35 & $36-$37 Status $3 Spel! levels $40-$43 Equipment $O0-S5F 2770-3020 Change spell levels: Each magic user has one byte to record his highest spell level in each magic class. Sorcerer-$40, Conjurer-$41, Magician-$42, and Wizard-$43. This routine works a little bit different than the others. It’s probably because all these change routines got boring and I had to do something different. 3030-3630 Edit equipment: It is here. in Garth's Equipment Warehouse, that you may obtain any weapon, armor, magical it or anything else available in The Bard's Tale. All carried items are stored in bytes COMPUTIST No. 36 17 $60-S6F in groups of two bytes each. For instance, byte $60 tells whether the item in byte $61 is unequipped, equipped. or unusable (O, 1 and 2, respectively). There are 127 different items available numbered $01 thru $7F. The initialization reads all equipment into array I$(). The menu allows you to equip, unequip, or drop an item, or it will send you to another menu to add an item. There, all items are listed out for you and you may take your choice. If you are already carrying 8 items, you won't be allowed to the add menu, though You must drop something first. 3640-4000 Initialization and Introduction; A short routine is poked into memory page $03 for disk access, DOS is told where the buffer is, and all data are read into their respective variable arrays. Set HIMEM Why 29000? It seemed as good a place as any and it doesn’t bomb my programming utilities. Displays first screen with reminder and makes drive selection. 4010-4230 Data: Enough said. Make it Go Farther If you read the program listing close in the area of the changes, you'll notice that very few limits are placed upon the editor, This is because I'm not really sure what the limits of the game are, If a character doesn’t work properly in the game you should have a pretty good idea about which characteristics you went to the extreme on. It’s a simple matter to re~ edit the character until it docs work right. Possible modifications I might suggest would be adding a character printout function, creating and deleting characters, copying characters to another sector and modifying them. The problem you face in creating is figuring out the math involved in converting the five attributes into four bytes. If you do, let me know how because I can’t get it. Thave no adventure tips or APT’s to share because The Bard's Dressing Room is all the APT you should ever need. We don’t need to take ALL the fun out of the game, do we? The Dressing Room 1O REM #288898 ananede 20 REM * 30 REM * THE BARD'S 40 REM* DRESSING ROOM * 50 REM * BY 60 REM * JOE MONTANO 70 REM * : QO REM *#8essusrorsstessasaes 90 REM 190 GOSUB 3650 - REM INITALIZATION 110 GOSUB 1130 ; REM COMPILE MASTER ROSTER 12 GOSUB 1380 : REM DISPLAY MASTER ROSTER 130 REM MAIN MENU 140 REM |F TEAM NAME GOTO TEAM EDIT 150 GOSUB 430 ; |F ASC (YS ) = 170 THEN 816 160 X = FRE (0) 170 GOSUB 370 180 VTAB21 ; HTAB3 : PRINT "M)ODIFY" ; TAB( 21 ); "W)RITE* TO* DISK" ; HTAB 3 ; PRINT "R)OSTER® (NO* CHNG)” ; TAB( 21); "E)DIT* 2ND* CHAR *" 190 AN = ASC (ANS ) 200 |F AN = 77 THEN 1516 210 |F AN = 82 THEN 120 220 |F AN = 87 THEN 280 230 IF AN = 69 THEN GOSUB 310 - GOTO 150 248 GOTO 180 250 REM END IT ALL 260 POKE 34.0 AS - "DON'T* FORGET* T0* LOCK* THE* DOOR” = HOME : VTAB 12 ; GOSUB 410 VTAB 22 ; END 270 REM WRITE BUFFER TO DISK 280 POKE 47092. ,2: CALL 768 : POKE 47092 ,1 290 GOTO 180 300 REM SWAP NAMES FROM BUFFER 310 |F BUF = Bl THEN BUF = 82 : GOTO 330 320 BUF = BI 330 RETURN 340 REM SINGLE LINE BORDER 350 VTAB 20 ; INVERSE : PRINT AAS - PRINT ABS. HTAB 39 ; PRINT ABS ; PRINT AAS ; NORMAL ; RETURN 360 REM DOUBLE LINE BORDER 370 VTAB 20 : INVERSE ; PRINT AAS : PRINT ABS; : HTAB 39 : PRINT ABS : PRINT ABS; ; HTAB 39 | PRINT ABS ; PRINT AAS : NORMAL . RETURN 380 REM TRIPLE LINE BORDER 390 VTAB 19 : INVERSE ; PRINT AAS : PRINT ABS: : HTAB 39 - PRINT ABS - PRINT ABS; : HTAB 39 = PRINT ABS ; PRINT ABS; : HTAB 39 - PRINT ABS - PRINT AAS: NORMAL - RETURN 400 REM CENTER HEADINGS AND OTHER MESSAGES 410 HTAB 21 - LEN (A$) / 2 ; PRINT AS ; RETURN 420 REM CHECK BUFFER FOR NAMES AND READ INTO VARIABLES NXS AND NYS 430 HOME 440 NXS =" 450 FOR L = 0 10 15 460 NI = PEEK (BUF +L) 470 IF NI = 255 THEN 528 480 IF N1=OTHENNC=1 : GOSUB310 : IF PEEK (BUF ) <> O-THEN 436 490 IF N1 =O ANDNC= 1 THEN AS = "THERE* ARE* NO* CHARACTERS* THERE!" : VTAB 12 : GOSUB 410 = FORT = 1101500 : NEXT : POP :NC=0 : GOTO 120 500 NLS = CHRS (NL) 510 NXS = NXS +NIS 520 NEXT L 530 GOSUB 310 :NY$ = "" 540 FOR L = 07015 550 NI = PEEK (BUF +L) 560 IF NI = 255 THEN 600 570 |FN1 =O THENNYS="——--—" -L=15 - GOTO600 580 N1$ = CHRS (NI) 590 NYS = NYS +NIS 600 NEXT L 61 GOSUB 310 620 REM CHECK IF NAME 1S TEAM NAME 630 Y§ = LEFTS (NX$ ,1) : IFASC (Y$) = 170 THEN RETURN 640 REM READ EXPERIENCE AND GOLD INTO VARIABLES EP AND GL 650 EP§="" : FORX= 207031 -EP$ = EPS + STRS (PEEK (BUF +X) ) = NEXT “EP =VAL (EPS ) 660GL$ = "" : FORX= 36 1047 <GL$ =GL$ + STRS ( PEEK (BUF +X).) : NEXT :GL = VAL (GLS ) 670 REM DISPLAY CHARACTER 680 PRINT : INVERSE : PRINT "* " NX$ "* 3 NORMAL = PRINT TAB( 26); "2ND* CHARACTER: ° 690 INVERSE - PRINT "* LVL®" PEEK (BUF +32) » 256 + PEEK (BUF +33 ) “* " RS( PEEK (BUF + 57) ); > NORMAL 700 INVERSE : PRINT "*" CS(/PEEK (BUF +56) ); GET ANS. 18 COMPUTIST No. 36 . : NORMAL : PRINT TAB( 28); LEFTS (NYS 19) 710 PRINT 720 PRINT “SPELL* LEVELS:" ; TAB( 21); "HIT* PTS:*" PEEK (BUF +48) % 256 4 PEEK (BUF +49) °/" PEEK (BUF +50) >* 256 + PEEK (BUF +51) 730 PRINT TAB( 21); "SPL* PTS:*” PEEK (BUF +52 ) * 256 + PEEK (BUF +93) "/"” PEEK (BUF +54) * 256 + PEEK (BUF + 55 ) 740 PRINT "SORCERER: * " PEEK (BUF +64) , TAB( 21 ) “EXP:* " EP 750 PRINT "CONJURER: *" PEEK (BUF +65 ) ; TAB( 21 ) *GOLD:* * GL 760 PRINT "MAGICIAN: *" PEEK (BUF +66 ) ; TAB( 21 ); "STATUS:* " STS( PEEK (BUF +62) ) 770 PRINT "* * WIZARD: * " PEEK (BUF +67); TAB( 21); "AC:*" 10 - PEEK (BUF + 63 ) 780 FL = 1 : GOSUB 3070 :FL=0 79 RETURN 800 REM TEAM EDIT 810 HOME .AS = "TEAM EDITING” ; GOSUB 410 820 PRINT 830 PRINT "TEAM? NAME: *" NX$; TAB( 26); "2ND* CHARACTER" 840 PRINT TAB( 28); LEFTS (NYS ,10 ) 850 FOR NM = 1106 860 NHS (NM) = "* 870 FORL = 010.15 880 NI = PEEK (BUF + NM * 16 +L) 890 IF NI = 255 THEN 926 900 NLS = CHRS (NI ) 910 NMS (NM) = NMS(NM) + NLS 920 NEXT L 930 NEXT NM 940 FOR X = 1706 950 PRINT X")* * NMS (X) 960 NEXT 970 X= FRE (0) : GOSUB 390 980 VTAB 20 . HTAB 3. PRINT "W)RITE® TO* DISK” 990 HTAB3 ; PRINT "E)DIT* 2ND* CHARACTER" : HTAB 3: PRINT "CHANGE* HHICH® (O* EXITS) :*" ; : GET CCS : PRINT CCS; 1900 CC = VAL (CCS ) 1919 .CA = ASC (CCS ) + GOTO 150 1020 IF CA = 87 THEN GOSUB 280 1030 IF CC = @ ORCC > 6 THEN 120 1049 PRINT - VTAB 19 ; CALL - 958 1050 GOSUB 370 1960 VTAB 21 1070 HTAB 3 : PRINT “CHANGE: * " ;NMS(CC ) 1080 HTAB 3; INPUT "****T0:4" Nos 1990 FF = 255 - FORX=070 15 » POKE BUF +CC % 16 +X FF. NEXT 1100 FOR X=1 TOLEN (N2S ) ; POKE BUF +CC * 16 +X=1,, ASC (MIDS (N2S ,X 1) ) +128 : NEXT 1110 GOTO 810 1120 REMREAD ALL NAMES FROM DISK TO VARIABLE NS IF CA = 69 THEN GOSUB 310 ) 1130 HOME 1140.A$-= “COMPILING* MASTER ROSTER" : VTAB 12 ; FLASH : GOSUB 410: NORMAL 1150 FOR X= 1015; POKE 47084 ,0 : POKE 47085 .SEC(X) © CALL 768 :Bl = BUF 1160 NS(X) =" 1170 FORL= 070 15 1180 Ni = PEEK (B1 +L) 1199 IF NI = 255 THEN 1230 1200 IFN1 =O THENNS(X) ="----——" <L=15 = GOTO 1230 1210 NIS = CHRS (NI) 1220. NS (x ) =NS(X) +NI$ 1230 NEXT L 1240 NEXT X 1250 FORX = 170 15 : POKE 47084 .0 : POKE 47085 /SEC(X) > CALL 768 .X2=X+15 .82=BUF + 128 1260.NS(X2 ) =" 1270 FORL =@ T1015 1280 N1 = PEEK (B2 +L) 1290 IF Ni = 255 THEN 1340 1300 1F. NI = @ THEN NS (X2) = "— 0 GoTo 1340 1310 N1S = CHRS (NI ) 1320. NS(X2 ) =NS(X2) + NIS 1330 IF X= 1 THEN POKE 47096 , VAL (ZS ) 1340 NEXT L 1350 NEXT X 1360 RETURN 1370 REM DISPLAY MASTER ROSTER 1380 HOME :AS = "MASTER® ROSTER” : GOSUB 410 1390 PRINT 1400 FOR X = 170.15 1410 PRINT CHRS (X+ 64) ")*" .NS(X), TAB( 21 yi M8720 NG(X + 15): NEXT 1420 GOSUB 350 1430 VTAB 21 ; HTAB 3 ; PRINT "YOUR* CHOICE* (<ESC>* TO" END) :*" : » GET CHS 1440 |F ASC (CHS ) = 27 THEN 260 1450 |F ASC (CHS ) => 65.AND ASC (CHS ) = < 79 THEN PRINT cs CH= 16 - (ASC (CHS ) ~64) : GOTO 1 1460 PRINT . GOTO 1430 1470 REM READ SELECTED SECTOR FROM DISK 1480 POKE 47084, : POKE 47085 ,CH : CALL 768 : RETURN 1490 REM BEG)N MODIFY ROUTINES 1500 REM MOD] FY. MENU 1510 HOME :AS = "MODIFY" : GOSUB 410 1520 AS = NXS = GOSUB 410 1530 PRINT » PRINT "* 1)* NANE" 1540 PRINT "* 2)* RACE" 1550 PRINT "* 3)* CLASS” 160 PRINT "* 4)* LEVEL" 1570 PRINT "* 5)* EXPERIENCE” 1580 PRINT “* 6)* GOLD" 1590 PRINT "* 7)” HIT® POINTS” 1600 PRINT "* 8)* SPELL* POINTS" 1610 PRINT "* 9)* STATUS" 1620 PRINT "10)* MAKE® ATTRIBUTES* ALL* 18" 1630 PRINT "11)* SPELL* LEVEL" 1640 PRINT "12) “ EQUIPMENT" 1650 GOSUB 390 1660 VTAB 21 < HTAB 3 ; INPUT "ENTER® CHOICE* (<RET>* EXITS) :*" ;CCS 1670 IF CCS = "" THEN 150 1680 CC = VAL (CCS ) 1690 IF CC < 1 ORCC > 12 THEN 1510 1700 ON CC GOSUB 1730 ,1830 1950 ,2080 , 2180 | 2280 2380 2490 , 2600 ,2720 ,2780 3050 1710 GOTO 1510 1720 REM EDIT NAME 1730 VTAB 3 :AS = "NANE* CHANGE" : GOSUB 410 1740 VTAB 19 ; CALL - 958 - GOSUB 370 1750 VTAB 21: HTAB3 > PRINT "CURRENT® NAME: * * NXS 1760 HTAB 3 ; INPUT "* *** NEWS NAWE:*" ;NNS 1770 IF NNS = "" THEN 1810 1780 FF = 255 : FORX = 070 15: POKE BUF +X FF NEXT 1790 FORX=1 TOLEN (NNS ) : POKEBUF+X=1 , ASC (MIDS (NNS ,X ,1) ) +128 : NEXT 1800 NX$ = NNS 1810 RETURN 1820 REM ED|T RACE 1830 HOME :AS = "CHANGE® RACE” : GOSUB 410 1840 PRINT | PRINT “CURRENT* RACE: * " RS( PEEK (BUF +57) ) 1850 PRINT 1860 FORX=0T06 ; PRINTX+1")*" ;RS(X) : NEXT 1870 GOSUB 390 1880 VTAB 21 : HTAB3 : PRINT “ENTER® CHOICE:*” GET CCS : PRINT Ccs 1890 IF C$ =CHRS (13) THEN 1930 1980.0 = VAL (CCS ) 1910 IF CC-< 1 ORCC > 7 THEN 1880 1920 POKE BUF + 87 ,CC-1 1930 RETURN 1949 REM EDIT CLASS 1950 HOME -AS = "CHANGE* CLASS" 1960 PRINT 1970 PRINT "CURRENT® CLASS:* * C$( PEEK (BUF + GOSUB 410 1990 FOR X = 0709 : PRINT SPC(X<9):X+1")* "5C8(X) : NEXT 2000 GOSUB 390 2010 VTAB 21 ; HTAB 3 : INPUT “ENTER CHOICE“ " ccs 2020 IF CC$ = °" THEN 2060 2030 CC = VAL (CCS) 2040 IF CC < 1 OR CC > 10 THEN 2010 2050 POKE BUF + 56 ,CC 1 2060 RETURN 2070 REW EDIT LEVEL 2080 VTAB 3 :AS = "CHANGE* LEVEL" : GOSUB 410 2090 VTAB 19 ; CALL -958 ; GOSUB 370 : VTAB 21 : HTAB 3: PRINT "CURRENT* LEVEL:* " PEEK (BUF + 32) * 256 + PEEK (BUF + 33 ) 210 HTAB 3: INPUT "**** NEWS LEVEL:*" CS 2110 IF CCS = "" THEN 2160 2120 CC = VAL (CCS ) 2130 T = INT (CC / 256) 2140 POKE BUF + 32 ,T » POKE BUF + 34 .T 2150 POKE BUF + 33 .CC- (T * 256.) : POKE BUF +35 ,CC~(T * 256) 2160 RETURN 2170 REM EDIT EXPERIENCE 2180 VTAB 3 °AS = "CHANGE* EXPERIENCE" - GOSUB 410 2190 VTAB 19 ; CALL - 958 : GOSUB 370 2200 VTAB 21: HTAB 3 ; PRINT “CURRENT* EXPERIENCE: *" :EP 2210 HTAB 3 - INPUT "4 * ** NEW* EXPERIENCE:* ” secs 2220 IF CCS = “" THEN 2260 2230 CC = VAL (C$) :CC$ = STRS (CC) :CC$ = "goo000000000" + CCS :CC$=RIGHTS (CCS , 12 ) 2240 FORX= 17012: POKE BUF + 194%. VAL (MIDS (CCS ,X 1.) ) : NEXT 2250 EP = CC 2260 RETURN 2270 REM ED|T GOLD 2280 VTAB 3 °AS = "CHANGE* GOLD" » GOSUB 410 2290 VTAB 19 : CALL - 958 : GOSUB 370 2300 VTAB 21 : HTAB3 : PRINT “CURRENT® GOLD: * * GL 2310 HTAB3 : INPUT "****NEW* GOLD:*" :ccs 2320 IF CC$ = "" THEN 2360 2330 CC = VAL (CCS ) :0C$ = STRS (CC) =CC$ = "990000000000" + CCS :CC$=RIGHTS (CCS ,12 ) 2340 FOR X= 170 12 : POKE BUF +35+X , VAL ( MIDS (CS 4X 1) ) NEXT 2350 GL = CC 2360 RETURN 2370 REM EDIT HIT POINTS 2380 VTAB 3 : AS = "CHANGE* HIT* POINTS" : GOSUB 3) 2390 VTAB 19 : CALL - 958 ; GOSUB 370 2400 VTAB 21 : HTAB 3 ; PRINT "CURRENT* HIT* POINTS: * " PEEK (BUF + 48) %* 256 + PEEK (BUF +49) "/" PEEK (BUF +50) * 256 + PEEK (BUF +51) 2410 HTAB 3 : INPUT "* * * * NEW* HIT® POINTS:* wees. 2420 IF CCS = "" THEN 2470 2430 CC = VAL (CCS ) 2440 T = INT (CC / 256) 2450 POKE BUF + 48 ,T . POKE BUF + 50 ,T 2460 POKE BUF + 49 ,CC - (T * 256 ) : POKE BUF +51 ,CC- (T * 256) 2470 RETURN 2480 REM EDIT SPELL POINTS 2490 vias :AS = "CHANGE* SPELL POINTS" : GOSUB 1 2500 VTAB 19 ; CALL - 958 ; GOSUB 370 2510 VTAB 21 : HTAB 3 ; PRINT "CURRENT® SPELL® POINTS:* " PEEK (BUF + 52) * 256 + PEEK (BUF +53) "/" PEEK (BUF +54 ) + 256 + PEEK (BUF +55 ) 2520 HTAB3 ; INPUT "**** NEW* SPELL* POINTS: * "CCS 2530 IF CC$ = "" THEN 2580 2540 CC = VAL (CCS ) 2550 T = INT (CC / 256 ) 2560 POKE BUF +52 ,T : POKE BUF +54 ,T 2570 POKE BUF +53 ,CC-(T * 256) . POKE BUF +55 ,CC- (T * 256 ) 2580 RETURN 2590 REM EDIT STATUS 2600 HOME :AS = "CHANGE* STATUS” : GOSUB 410 2610 PRINT : PRINT "CURRENT* STATUS: * " STS( PEEK (BUF + 62 ) ) 2620 PRINT 2630 FORX=0T07: PRINTX+1")*" NEXT 2648 GOSUB 390 2650 VTAB 21 : HTAB3 : PRINT "ENTER* CHOICE: °" +: GET CCS : PRINT CCS 2660 |F CC$ = CHRS (13 ) THEN 2700 2670 CC = VAL (CCS ) 2680 IF CC <1 ORCC > 7 THEN 2650 2690 POKE BUF + 62 .CC-1 2700 RETURN 2710 REM CHANGE ATTRIBUTES TO 18 2720 VTAB 3 :A$ = "CHANGE® ALL® ATTRIBUTES* TO* 18" : GOSUB 410 2730 POKE BUF +16 ,148 POKE BUF +17 .146 : POKE BUF +18 ,148 ; POKE BUF +19 128 2740 VTAB 19 : CALL - 958 : GOSUB 350 : VTAB 21 HTAB 18 ; PRINT "DONE" 2750 FOR T = 1 TO 1500 : NEXT T 2760 RETURN 2770 REM EDIT SPELL LEVELS 2780 HOME :A$ = "CHANGE* SPELL“ LEVELS" : GOSUB 410 2790 PRINT : PRINT “CURRENT” LEVELS:” 2800 PRINT 2810 V=7 :H=1l :Hl=13 2820 B3 = 64 2830 X$ = "<-=" :BL§="***" 2840 VTAB 7 2850 PRINT "SORCERER: " 2860 PRINT : PRINT “CONJURER: “ 2870 PRINT - PRINT "MAGICIAN: 2880 PRINT : PRINT "* * WIZARD:" 2890 VTAB V : HTABH : PRINT PEEK (BUF +B3 ) 2900 V=V +2 :B3=B3+1 2910 IF B3 < 68 GOTO 2890 2920 B3= 64 :V=7: VTABV: HTABHI : PRINT X$ 2936 GOSUB 378 iSTS(X) COMPUTIST No. 36 19 T 2940 VTAB 21 : HTAB 3; PRINT "<RET>* TO° MOVE POINTER® ° * L)EAVE" 2950 HTAB 3 , PRINT “<--* AND* -->* TO* CHANGE* POINTS" *" ; : GET CCS 2960 CC = ASC (CCS ) 2970 |F CC = 13 THEN VTABV : HTABHI V=V+2:B3=B3 +1 B3 = 64 2980 IF CC = 13 THEN VTAB V : HTABHI : PRINT XS 2990 IF CC = 76 THEN RETURN 3000 1F CC=8 THEN IF PEEK (BUF +B3 ) > @ THEN POKE BUF +B3., PEEK (BUF +B3)- 1: VTABV . HTAB H: PRINT PEEK (BUF + B3 ) 3010 |F CC = 21 THEN |F PEEK (BUF +83 ) <7 THEN POKE BUF + B3 , PEEK (BUF +83) +1: VTABV HTABH | PRINT PEEK (BUF + B3 ) 3020 PRINT ; GOTO 2940 3030 REM EDIT EQUIPMENT 3040 REM EQUIPMENT MENU 3050 HOME A$ ="GARTH'S* EQU|PMENT* WAREHOUSE” GOSUB 410 3060 AS = NX$ ; GOSUB 410 3070 PRINT 3080 PRINT "CURRENT* |TEMS® ( ** =EQUIPPED) |" 3090 PRINT :B3= 80 :N=1 3100 FOR X = 0 10.6 STEP 2 SLIM ES="*" :EIg="*" 3120 |F PEEK (BUF + B3 +X) = 1 THEN ES ="%" 3130 IF PEEK (BUF +83+X+8)=1THENELS="%" 3140 PRINT N")" ES1S( PEEK (BUF +B3+X+1) ) TAB( 21) iN+4")" E1$1$( PEEK (BUF + B3 + X+9)) SISON=N4L 316 NEXT 3170 IF FL = 1 THEN RETURN 3180 X= FRE (0) - GOSUB 370 3190 VTAB 21. HTAB3 . PRINT "E)QUIP** ** A)DD* |TEM* * * L)EAVE" 3200 HTAB 3 : PRINT "U)NEQUIP® * D)ROP® | TEM" * “s )POKE - 16368 0 : GET C$; PRINT CCS 3210 CC = ASC (CC$ ) 3220 IF CC = 76 THEN RETURN 3230 REM EQUIP. | TEM 3240 IF CC = 69 THEN VTAB 19 : CALL ~ 958 : GOSUB 390° VTAB 21° HTAB 3: PRINT "WHICH* ITEM: * GET. CWS . |F VAL (CW$ ) > AND VAL (CWS ) <9 THEN POKE BUF + B3+ VAL (CWS) # 2 - 2.1 3250 REM UNEQUIP ITEM 3260 1F CC = 85 THEN VTAB 19 : CALL - 958 : GOSUB 390. VTAB 21 . HTAB'3 : PRINT "WHICH® ITEM; * "\ GET CWS : IF VAL (CWS) >@AND VAL (CS ) <9 THEN POKE BUF + B3+VAL (CWS) * 2 - 2.0 3270 |F CC = 68 THEN GOSUB 3310 3280 IF CC = 65 THEN GOSUB 3370 3290 GOTO 3050 3300 REM DROP | TEM 3310 VTAB 19°: CALL = 958 ; GOSUB'390 : VTAB 21 | HTAB 3 3320 PRINT "WHICH* |TEM:*" : = GET.CWS :CW=VAL (CWS ) . IF CW < 0 OR CW > 8 THEN 3349 3330 FOR X= CW TO7 ; POKE BUF +B3+X * 2-2 » PEEK (BUF +83 +X % 2) 1 POKE BUF + B3 +X 2-1, PEEK (BUF +B3+X * 241 ) NEXT : POKE BUF +B3+15 .@ : POKE BUF + B3+16 0 3340 RETURN 3350 REM ADD |TEM 3360 REM CHECK # OF |TEMS 3370 N| =9 3380 FOR X= 1108 3390 Y= PEEK (BUF + B3+X * 2-1) PRINT BLS IF V> 13 THEN V =7 3400 [FY = OTHENNI =X -X=8 3410 NEXT 3420 REM LIST AVAILABLE ITEMS 3430 Fl =1 *LA=15 3440 IF NI = 9 THEN RETURN 3450 HOME : PRINT 3460 FOR X= Fi TOLA 3470 PRINT SPC( X < 100 ) ; SPC(X<10):X ")*" LEFTS (iS(X) .14); TAB( 21) :X+15")*" LEFTS (1$(X+15) 14) 3480 NEXT 3490 GOSUB 370 3500 VTAB 21 : HTAB 3 : PRINT "F)ORNARD” : TAB( 21); "ADD" 3510 HTAB 3 - PRINT “B)ACKNARO" ; TAB( 21 ) "L)EAVES *" ; = GET CCS = PRINT CCS, 3520 CC = ASC (CCS ) 3530 IF CC = 70 AND FI < 113 THENF! = Fl +30 :LA =Fi +14 : GOTO 3450 3540 [FCC = 66 AND FI > 1 THENFI = Fl -30 :LA= Fi 414 : COTO 3450 3550 IF CC = 76 THEN RETURN 3560 FCC <> 65 THEN PRINT : GOTO 3490 3570 PRINT : VTAB 19 > CALL ~ 958 » GOSUB 390 VTAB 21> HTAB3 3560 |F CCS = *" THEN 3450 3590 INPUT "WHICH ITEM." :CCS 3600 CC = VAL (CCS ) 3610 |F CC < 1 ORCC > 127 THEN 3570 3620 POKE BUF +B3+Ni 2-1 CC 3630 NI = NI +1 ; GOTO 3440 3640 REM INITIALIZATION 3650 REM SET HIMEM BELOW BUFFER 3660 HIMEM: 29000 3670 DIM NS(30.) SEC(16) \1$(200 ) 3680 HOME . INVERSE AS = "® THE* BA DRESSING* ROOM" . GOSUB 410 .AS * "BY" JOE* MONTANO® * “*""* : GOSUB 410 NORMAL POKE 34.2 3690 AAS = "" FORX= 17039 “AAS =AAS+"*" NEXT X 3700 ABS = "*" 3710 REM LOAD SHORT ROUTINE FOR DISK ACCESS 3720 FOR LOC = 768 TO 773 : READ NUM : POKE LOC NUM » NEXT LOC = POKE 47083 , » POKE 47091 0. POKE 47092 .1 3730 DATA 32,227 3 ,76 217 3 3740 REM TELL D0S WHERE BUFFER |S AND READ DATA INTO VARIABLES 3750 BUF = 29000 3760 POKE 47088 BUF - INT (BUF / 256) * 256 : POKE 47089 . INT (BUF / 256) 3770 FOR X = 0 106 : READ RS(X ) = NEXT - FOR X= 8109 : READCS(X) : NEXT : FORX= 110.127 READ 1S (KX) > NEXT 3780 FOR X= @T07 . READ ST$(X) . NEXT 3790 REM READ SECTOR LOCATIONS INTO SEC( ) 3800 FOR X= 15101 STEP- 1 :SEC(16-X) =X: NEXT 3810 REM INTRODUCTION 3820 PRINT : PRINT "THIS* EDITOR* WILL* EDIT* CHARACTERS* ON* THE” 3830 PRINT "BARD'S* TALE* CHARACTER® DISK. * * HOWEVER, * 3840 PRINT "YOU" MUST LOAD* MODIFIED* CHARACTERS® BACK” 3858 PRINT "INTO* THE* GAME* WITH* A* PARTY* (TEAM) NAME." 3860 PRINT = PRINT "EXAMPLE.° * * > ATEAM 3870 PRINT . PRINT "{F* YOU* TRY* TO* LOAD* A* WOD|FIED* CHARACTER™ 3880 PRINT "|NDIVIDUALLY* THE* BE" 3890 PRINT "RECOGNIZED. * * ONCE* LOADED* AND* RESAVED.” NAME“WILL* NOT* 20 COMPUTIST No. 36 3900 PRINT "THE* PROBLEW* NO* LONGER* EXISTS. * AND® IT" 3910 PRINT “WILL THEREAFTER® LOAD* NORMALLY. © * YOU" CAN" 3920 PRINT "NODIFY* A* TEAN® ROSTER? WITH® THE* NAMES* OF" 3930 PRINT “THE* MODI FIED* CHARACTERS. * 3940 PRINT : PRINT "TO" START,” PLACE* CHARACTER* DISK* INTO* THE” 3950 PRINT "DRIVE* OF* YOUR* CHOICE* AND* PRESS* THE 3960 PRINT "DRIVE* NUMBER® (1° OR® 2). 3970 PRINT = PRINT ">" : : GET ZS > PRINT ZS 3980 IF 78 <> "1" AND 2$ <> "2" THENHOME » GOTO 38

Showing the first 100000 of 166689 characters.

mp.ls