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.