Text content (OCR)
USA $3.75 Canada & Mexico $7.00 All Others $8.75
6 REX Reexrfevres:
Hf A Utility to Save the Lower 8 Pages of Memory—By Mark Harris
Ei Bard's Tale Effects Locator—by George Bigelow
Hf How to Capture Phantasie Screen Maps—By George Bigelow
Bh Alternate Reality Character Editor—By Michael Horton
Updating the ProDOS Block Editor—py Rene Gaudet
Bi Loading Flashcalc onto your RAMcard—by John Pierce
i A Copy-protection Scheme for ProDOS—sy stanley Planton
Bi The Product Monitor—by Jeff Hurlburt
Ei Antoduel Car Editor—py Marc Batchelor
6 DEX Softkeys:
Alphabet Sequencing ¢ Animal Alphabets and Other Things Arctic Antics ¢The Boars' Store ¢The Boars Tell Time
@Career Focus @ Castle Wolfenstein ¢ Charlie Brown's 123's ¢ Charlie Brown's ABC's ¢ City Country Opposites # Coveted
Mirror Create With Garfield Crypt of Medea ¢ Customized Alphabet Drill ¢ Customized Flash Spelling ¢Dig Dug
@Digital Paintbrush System Estimation ¢Fay: Word Hunter ¢Fix It Focusing on Language Arts # Fundamental
Capitalization ¢ Fundamental Punctuation Practice ¢ Fundamental Spelling Words in Context ¢ The Hobbit ¢ Homonyms
in Context ¢ Individualized Study Master ¢ Inside Outside Shapes ¢ Inside Outside Opposites # Leisure Suit Larry in the
Land of the Lounge Lizards ¢ Master Diagnostics II & I+ ¢Mastertype v2.1 & Mathematics Series ¢ Mr. and Mrs. Potato
Head ¢ Paper Models - The Christmas Kit ¢ Peanuts Math Matcher ¢ Peanuts Maze Marathon ¢ Peanuts Picture Puzzlers
¢Perry Mason: The Case of the Mandarin Murder ¢ Railroad Works ¢ Random House Library # Management Programs
@Rocky's Boots v.4 Sensible Speller ¢Snoopy's Reading Machine ¢Snoopy's Skywriter Scrambler Snoopy to the
Rescue 6 Snoopy Writer ¢ Spelling Demons @ Stock Market Simulation ¢ Story Builder ¢ Story Starter ¢ Studio II ¢ Test
Maker ¢Think Quick v1.0 ¢ Tournament Bridge ¢ Tutorial Comprehension # Typing is a Ball, Charlie Brown ¢ Under
Fire Word Blaster ¢ Word Count ¢ Word Mount @ Your Personal Net Worth
[1BM | RIDE SE = Feature: Flight Simulator RGB Modifications Softkey: HSamna Word I v1.1
| gs G Al R | G HT Publisher-Editor: Charles R. Haight
| Graphies Editor: Ben R. Haight
You have a
Circulation: Karen Fitzpatrick
Advertising, call: (206) 474-5750
Publisher: SoftKey Publishing
Printing: Valco Graphics & Printing
to an unlocked
backup copy
of your
commercial
software
Our editorial policy is that we do NOT condone
software piracy, but we do believe that 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
programs to meet his or her needs.
© Address all advertising inquiries to:
COMPUTIST; Advertising Department; PO
Box 110816; Tacoma, WA 98411
@ Mail all RDEX letters to:
COMPUTIST
Apple-RDEX or _ IBM-RDEX
PO Box 110846-K
Tacoma, WA 98411
@ COMPUTIST does NOT purchase editorial
material. The entire editorial content consists
of information submitted to COMPUTIST for
publication in the shared interests of all
COMPUTISTs.
@ Unsolicited material (manuscripts, letters
to the editor, softkeys, A.P.T-s, playing tips,
questions, etc., are assumed to be submitted
Furthermore, the copyright laws guarantee your right
to such a DEPROTECTED backup copy:
...“It is not an infringement for the owner of a copy of
a computer program to make or authorize the making of
another copy or adaptation of that computer program
provided:
1) that such a new copy or adaptation is created as an
essential step in the utilization of the computer program in
conjunction with a machine and that it is used in no other
manner, or
2) that such new copy or adaptation is for archival
purposes only and that all archival copies are destroyed in
the event that continued possession of the computer program
should cease to be rightful.
Any exact copies prepared in accordance with the
provisions of this section may be leased, sold, or otherwise
transferred, along with the copy from which such copies
were prepared, only as part of the lease, sale, or other
transfer of all rights in the program. Adaptations so prepared
may be transferred only with the authorization of the
copyright owner.”
United States Code title 17, §117
as letters-to-the-RDEX-editor for publication
with all and exclusive rights belonging to
COMPUTIST.
© Entire contents copyright 1988 by SoftKey
Publishing. All rights reserved. Copying done
for other than personal or internal reference
(without express written permission from the
publisher) is prohibited.
@ The volunteer and paid editorial staff
assume no liability or responsibility for the
products advertised in the magazine. Any
opinions expressed by the authors are not
necessarily those of COMPUTIST magazine,
its staff or SoftKey Publishing.
@ Apple® is a trademark of Apple
Computers. IBM® is the IBM trademark.
SUBSCRIPTIONS: Rates (for | 2 issues):
US.—$32 US. Ist Class—$45
Canada/Mex.—$45 Other Foreign—$75
@ Send subscription inquiries to:
COMPUTIST; Subscription Department; PO
Box 110846-T; Tacoma, WA 98411
© For Domestic Dealer rates: Call (206)
474-5750 for more information,
@ Change Of Address: Please allow 4
weeks for 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 acquired at the regular
back issue rate.
COMPUTIST #55
Attention Apple-users:
Why type those
|-o-n-g listings when
you can just Upgrade
your present sub. to a
Mag/5%4’’Disk Combo ©
subscription
You may upgrade your current
subscription to a magazine é& disk
combination by sending $5.50 ($6.50 &
foreign) per remaining issue.
Time to renew?
Check your mailing label to see if you
need to renew your subscription.
©) Use the order form on this page to
renew, and don’t forget to send your most
current mailing label to help expedite your
renewal &
Moving soon?
@ If you're moving, let us know at least 30
days in advance.
i Issues missed due to non-reciept of
Change-of-Address may be acquired at the
regular back issue rates.
@ Remember, the Post Office does not
forward third class mail unless requested. &
COMPUTIST is not responsible for
replacing issues lost while forwarding order
is in effect.
1am... C) A new subscriber
Cl Renewing my current subscription
J Changing my address (please include last mail label)
Ihave...) an Apple lle, llgs or Ile computer
Can IBM computer
Apple—IBM subscription...
CUS. - $32
C US.\Canada/Mexico First Class - $45
© All other Foreign - $75
Apple mag-disk combination subscription...
11 US./Canada/Mexico First Class plus Library Disk - $100
Ci All other Foreign plus Library Disk - $140
Pletal lta oe ll lnteatale |
@ Yes, I want to subscribe to COMPUTIST. Enclosed are funds for an annual (12 issue) subscription.
ULS. Funds drawn on ULS. bank. Allow 4—8 weeks for first issue. Mail to: COMPUTIST PO Box 110846-T Tacoma, WA 98411
Name ID#
Address
City State Zip
Country, Phone.
= @ : és : Exp.
Signature CP55
ee ed
(206) 474-5750
Notes ’n things......
z eo Writing to authors
Some readers missed my note on how to send letters to authors. If the author puts a line in
Ron i ee their article that states ‘Please print my address” then we will include the address when we print
their contribution. However, if they don't clearly state that it is alright to print their address then
Mare Nis ss we don’t. Sometimes, we have been known to delete addresses even when they want them printed,
Sorry, force of habit.
George Bigelow... ; Even if there is no address printed, you can still write to an author if they have given us their
address. We have a back-up method. (Hackers always have a back-up.)
Moca Es 1. Write your letter and enclose it in an envelope with the author's name on the front and the
correct postage.
2. Put that letter into another envelope and sent it to us.
3. When we receive your letter, we will complete the fowarding address and drop it in the outgoing
Dorothy i % fall
4. The author may then contact you directly.
Steve
Rene
Note: Some authors are very secretive and don't even let us know where the are, Also, if
David he ma you are considering having us print your address, use a Post Office box instead of your street
address. If you read the news papers, you'll know that there are a lot of weird people out there.
Kim eee = You may not want them to know where you live.
Mark
Jim
Michael A.
Jeff
Francisco-Angel
Garcia
Jack R.
John R.
Stanley Planton
Jerry Stevens.....
Charles Taylor...
J.D. Tischer.
RD. West...
Greiner Wolfgang...
COMPUTIST #50, page 37
Capturing Locksmith Fast Copy for IIgs. Where it says “SAVE FC, A$2000, L$18FD’’,
It should say “BSAVE FC, A$2002, L$18FD”.
COMPUTIST #55 May |
LA ws
Ea
‘able Of Contents
Alphabet Sequencing.
Animal Alphabets
and Other Things........... 21
Arctic Antics...
The Boars’ Store
The Boars Tell Time.
Career Focus.
PX Castle Wolfenstei
Charlie Brown's 123’
Charlie Brown’s ABC
City Country Opposites.
Coveted Mirror,
Create With Garfield.
Crypt of Medea
Customized Alphabet Dri
Customized Flash Spelling.
Dig Dug:
Digital Paintbrush
Estimation.
Fay; Word Hunter.
Focusing on Language Arts
Fundamental Capitalization....21
Fundamental Punctuation
Practice
Fundamental Spelling Words
in Context
The Hobbit...
Homonyms in Context.
Individualized Study Maste
Inside Outside Shapes...
Inside Outside Opposites.........
]
T Leisure Suit Larry in the Land
of the Lounge Lizards.....19
Master Diagnostics H & II+..22
Mastertype v2.1.
Mathematics Series.
‘ “Sensible Speller.
Peanuts Math Matcher..
Peanuts Maze Marathon.
Peanuts Picture Puzzlers.
Perry Mason: The Case of
the Mandarin Murde1
Railroad Works.
Random House Library
Management Programs....
Rocky’s Boots v.4.
8
Snoopy's Reading Machine.....2
Snoopy's Skywriter Scrambler.21
Snoopy to the Rescue.
Snoopy Writer......
Spelling Demons...
Stock Market Simulation.
Story Builder.
Test Maker.
Think Quick v1.
Tournament Bridge.
Tutorial Comprehension.
Typing is a Ball,
Charlie Brown............+. 21
Under Fire...
Word Blaster.
Word Count..
Word Mount... or
Your Personal Net Worth.......31
6 Playing Tipo:
IBM Seftkeyo:
Samna Word I v1.4... ......0..06 44
@ Features:
|| Mark Barris shows how to save the Lower 8 Pages of Memory.
| Bard's Tale Effects Locator, .
| Goss Bile snp eas IE ane eer ee et
are
|| Phantasie Map Capture,.............10
George Bigelow’s easy method for caphuring the screen images from Phantasie
Alternate Reality Character Editor... 11
Michael Horton has made character editing easier for Ahernate Reality enthusiasts.
Updating the...
Rene Gaudet tackles the chore of adding a search command and while he's att, extends
the block read capability to handle 3.5° disks,
Loading your RAMcard with...
ide Perce ert ee
A Copy-protection Scheme for...
| Stamley Ptanton has devised 3 method to copy protest ProDOS files using EDD 4.N.
Jeff Hurlburt reports on the winners and losers in the ongoing joystick hattle.
May
Mr. and Mrs. Potato Head...2? BM otos | Fix Up Your Car with...
: ir. ane irs. Potato fead..... .
Paper Models - Autoduel Car Editor.....c:sseseecuse27
The Christmas Kit.......... 36 Fright Simulator RGB Modifications. 44 | Mare Batchelor's pasion for AufoDuel has ld to him write a useriendly car editor
= = an = i= ie asad rt
COMPUTIST #55 5 |
The Product Mouibaee iG 2B
New COMPUTIST readers using Apple IIs
are advised to read this page carefully to avoid
‘frustration when attempting to follow a softkey
or entering the programs printed in this issue.
What is a softkey, anyway?
Softkey is a term which we coined to describe a
procedure that removes, or at least circumvents, any copy-
protection on a particular disk. Once a softkey procedure
has been performed, the resulting backup copy can usually
be copied by the normal copy programs (for example:
COPYA, on their DOS 3.3 System Master disk),
Commands and control keys
In any article appearing in COMPUTIST, commands
which a reader is required to perform are set apart by
being in boldface and on a separate line. The
key must be pressed at the end of every
such command unless otherwise specified. Control
characters are specially boxed. An example of both is
6(CP)
Press (6_] Next, place one finger on the ==) key
and then press tel Remember to enter this command
line by pressing
Other _special_combination keypresses include
or (GORESET). In the former, press
and hold down = then press In the
latter, press and hold down both @==) and CE) then
pee
Special requirements
Special prerequisites for COMPUTIST articles, programs
and softkeys are usually listed at the start under:
@ Requirements:
Software recommendations
( Applesoft program editor such as Global Program
Line Editor (GPLE).
(% Sector-editor such as DiskEdit (in the COMPUTIST
Starter Kit) or ZAP trom Bag of Tricks.
(2 Disk-search utility such as The Inspector, the CIA
or the Core Disk Searcher (in the COMPUTIST Starter
Kit}
(H Assembler such as the 5-C Assembler from $-C
software or Merlin/Big Mac.
® Bit-copy program such as Copy fl Plus. Locksmith
or Essential Data Duplicator (EDD).
(2 Text-editor (that produces normal sequential text
files) such as Applewriter Il. Magic Window I or
Screenwriter Il.
(2 COPYA, FID and MUFFIN from the DOS 3.3
System Master disk are also useful.
pa aa Ss
Super IOB and Controllers
This powerful deprotection utility (in the COMPUTIST
Starter Kit) and its various Controllers are used in many
softkeys.(Itis also on each Super OB Collection disk.)
Reset into the Monitor
Softkeys occasionally require the user to stop the
execution of a copy-protected program and directly enter
the Apple's system monitor. Check the following list to
see what hardware you will need to obtain this ability
Apple Il +, //e, compatibles: |) Place an Integer
BASIC ROM card in one of the Apple slots. 2) Use a non-
maskable interrupt (NMI) card such as Replay or Wildcard,
Apple II +, compatibles: |) Install an F8 ROM
with a modified reset-vector on the computer's
motherboard as detailed in the Modified ROM’s article
(COMPUTIST #6 or Book Of Softkeys HIT } or the Dual
ROM’s article (COMPUTIST #19),
Apple //e, //c: Install a modified CD ROM on the
computer's motherboard. Cutting Edge Ent, (Box 43234
Ren Cen Station-HC; Detroit, Ml 48243) sells a hardware
device that will give you this important ability but it will
void an Apple //c warranty
Recommended literature:
(# Apple II Reference Manual
@& DOS 3.3 manuat
OH Beneath Apple DOS, by Don Worth and Pieter
Lechner, from Quality Software
(Assembly Language For The Applesoft
Programmer, by Roy Meyers and C.W. Finley,
from Addison Wesley
Keying in Applesoft programs:
BASIC programs are printed in a format that is designed
to minimize errors for readers who key in these programs.
If you type:
1QHOME:REMCLEAR SCREEN
The LIST will look like:
10 HOME : REM CLEAR SCREEN
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
commands. There are two types of spaces: those that have
to be keyed and those that don't. Spaces that must be
typed appear in COMPUTIST as delta characters (*). All
other spaces are there for easier reading. NOTE: If you
want your checksums (See Computing checksums}
to match up. you must key ONLY the “spaces after DATA
statements.
COMPUTIST #55
Keying In Hexdumps
Machine language programs are printed in
COMPUTIST as hexdumps, sometimes also as source code.
Hexdumps are the shortest and easiest format to type
in. You must first enter the monitor:
CALL -151
Key in the hexdump exactly as it appears in the
magazine, ignoring the four-digit checksum ($ and four
digits) at the end of each line. A beep means you have
typed something that the monitor didn't understand and
must, therefore, retype that line.
When finished, return to BASIC with:
3D0G
BSAVE the program with the filename, address and
length parameters given in the article,
The source code is printed to help explain a program's
operation. To key it in, you will need the $-C Assembler
or you will have to translate pieces of the source code
into something your assembler will understand (see table
of SC Assembler directives in COMPUTIST #17
Computing checksums
Checksums are 4-digit hexadecimal numbers which tell
if you typed a program exactly as it appears in
COMPUTIST.
There are two types of checksums: one created by the
CHECKBIN program (for machine language programs)
and the other created by the CHECKSOFT program (for
BASIC programs). Both appeared in COMPUTIST #1 and
The Best of Hardcore Computing. An update to
CHECKSOFT appeared in COMPUTIST #18.
If the published checksums accompanying program
listings and hexdumps do not match those created by
your computer, then you typed the program incorrectly.
The line where the first checksum differs has an error.
CHECKSOFT instructions:
LOAD filename
BRUN CHECKSOFT
Get the checksums with: [&J and correct the
program line where the checksums differ.
CHECKBIN instructions:
CALL -151
BLOAD filename
Install CHECKBIN at an out of the way place
BRUN CHECKBIN, A$6000
Get the checksums by typing the Starting address, a
period and the Ending address of the file followed by
a Gy)
‘SSS.EEE(OY)
Correct the lines at which the checksums differ.
RDEXed
May
writing a
letter to...
Apple RDEXed
RDEX stands for:
Reader's Data EXchange
That means that when you send in
articles, softkeys, APTs, etc., you are
submitting them for FREE publication in
this magazine, RDEX does NOT
purchase submissions nor do we verify
data submitted by readers. We will
print it and it is the responsibility of the
readers to send in responses when
anything is wrong
@ Remember that your letters or parts
of them may be used in RDEX even if
not addressed to the Apple-RDEX editor
Correspondence that gets published may
be edited for clarity, grammer and space
requirements
© Because of the great number of letters
we receive and the ephemeral and
unpredictable appearance of our part-
time staff, any response to your queries
will appear only in Apple-RDEX, so it
would be more appropriate for you to
present technical questions to the readers
and ask for their responses which will
then be placed in the Apple-RDEX
Send your articles and letters on
DOS 3.3 standard text
files
When we get your letter-article in a
standard DOS3.3 text file, it is
immediately uploaded into the most
current RDEX file. Conventional letters
must be typed in by us...when we have
the time
© Address your letters, articles, to:
COMPUTIST
Apple RDEX Editor
PO Box 110846-K
Tacoma, WA 98411
May
Dorothy Dow
@® My computer is an Apple IIgs. I
am both a new subscriber to your magazine and
new to using a computer, as such, I have several
questions
The Apple IIgs uses ProDOS. How do I
get DOS 3.3 or do J need it. Your instructions
on page 6, COMPUTIST #51, do not mention
the IIgs at all
Where do I find GPLE. Do I need a CD
ROM like the IIc and Ile?
Please update your directions to include the
Ilgs so beginners like me can figure out where
to start
You've asked some very good questions.
Unfortunately, 1 don't have the answers. It's
sad, but we don't have a Hes and we may not
be getting one soon. Anything I say about the
IIgs is hearsay, guesswork or out of a book
Perhaps the best thing would be to ask our
readers to answer your questions. How about
it readers, has anyone had their Ilgs long
enough to hazard updating the Data page for
us and answering Dorothy's questions. RDEXed
Dig Dug
DataSoft
@ Requirements
© An initialized slave disk (use a fast DOS)
A way to force entry into the monitor.
A way to save the lower 8 pages of memory
(Senior Prom, Modified Roms etc.)
Dig Dug is a fun arcade game that has been
around for quite some time. [ do not recall if
there is an carlier softkey for this program, so
I thought [ would pass mine along.
Follow these steps to deprotect Dig Dug
into binary files.
~1_] Boot your original disk and enter the
monitor when the game starts to play
[2] Relocate some code:
4000<8000.BFO0M
[3] Boot your slave disk and save the
relocated code
COMPUTIST #55
BSAVE DG.OBJ, AS4000, L$4000
[4] Boot your original again and enter the
monitor while the title screen is still being
displayed, then boot your slave disk and save
the title page.
BSAVE DG.LOGO, A$2000, L$2000
[_] Boot the original once again and enter
the monitor when the game is being played.
[8] Move the lower 8 pages of memory
toa safe location with whatever method you
have.
[7] Boot your slave disk and save the 8
pages that you moved. The following assumes
that you moved it to $2000.
BSAVE DG.PQ-P7, A$2000, L$800
8 | Enter the monitor, type the following
hex dump and save it:
DG.MOVER
9900: A0 00 A2 08 BD 00 40 90 $22A0
9908 00 80 E8 DO F7 EE 06 09 $F7B4
9910: EE 89 89 C8 CO 40 DO EA $30BE
0918: AO 0 A2 00 BD 00 10 9D $8777
0920: 00 06 E8 DO F7 EE 1E 09 S$FEOB
0928: EE 21 69 C8 CO 08 DO EA $4451
0930: A0 00 A2 08 BD 00 20 90 $0618
0938-06 40 E8 DO F7 EE 36 09 $3BDC
0949:EE 39 09 C8 CB 20 DO EA $B13E
0948 :4C 60 80 S7EF7
3D0G
BSAVE DG.MOVER,AS900,L$4B
[-9_] Enter this Applesoft hello program
and save it
FP
10 TEXT : HOME ; VTAB 10: HTAB 11; PRINT
“ONE MOMENT PLEASE" : PRINT CHRS
(4) “BLOAD DG.OBJ,A$4000" ; PRINT
CHR (4) “BLOAD DG.PO-P7,A$1000" :
PRINT CHR§ (4) "BLOAD DG.LOGO,
AS2000"
20 POKE - 16304,0: POKE - 16302,0: POKE -
16300,0: POKE - 16297,0: PRINT CHRS
(4) “BRUN DG.MOVER”
SAVE HELLO
That's it. If it doesn’t work, chances are
you either missed one of the above steps or you
did not save the lower 8 pages unaltered. Try
again.
Softkey for...
Think Quick V1.0
Learning Company
@ Requirements
© 2 ProDOS formatted disks
OA Copy program
0A Block Editor
Ol Think Tank V1.0
OO Think Tank data disk
This softkey requires the use of a block
editor. This is much like the sector editor found
on Copy II Plus, only the data storage format
is a bit different. I used a new program available
on bulletin board services called Block Work.
This is a very good program and is extremely
flexible. It's marketed as shareware and the
author is asking $15.00 for the program. I
think it is well worth the money. So make your
job easier and use this type of program.
Think Quick is a good logic oriented game
aimed at the elementary aged person. It is
relatively easy to use and fairly interesting (from
an adults point of view). Think Quick is
ProDOS based, which is good news for disk
access speed.
[_] Copy both sides of the program and
data disks.
[27] Using a block editor, search both sides
of the program disk for 20 9E 63 and replace it
with EA EA EA. On my disk these bytes were
found on Block $15, starting at byte $D1.
Now search for 20 12 17 and replace
it with EAEAEA. On my disk these bytes were
found on Block $54, starting at byte $O8.
You don’t need to worry about the data
disk, it is not protected
Softkey for...
Charlie Brown's ABC's
Random House Software
@ Requirements
C1 Initialized disk
(1 COPYA or equivalent
This is a great program for preschool age
people. I had a good time going through the
alphabet to see all the wonderful screens. I
would highly recommend this program
To get a working copy follow. these
directions.
[4_] Boot your DOS 3.3 system disk.
[2 Tell DOS to ignore checksum and
epilogues and run COPYA.
POKE 47426,24
RUN COPYA
[J Run any copy program that will allow
you to copy a fast DOS, such as Copy IT Plus.
etc. Make sure that your boot program is named
HELLO.
[4] Repeat the same procedure on the
back side of your disk and you will be done.
Have fun.
Softkey for...
Create With Garfield
DLM
@ Requirements
-] Blank disk
Cl Copy program
C Sector Editor
O Original disk
On page 7 of COMPUTIST #44, Robert
Brown sent in a softkey for Create with
Garfield. Unfortunately, it was a bit confusing
and, for my version at least, incomplete. I had
to make a few more edits to my version. I do
not have the original bytes to search for, and
I apologize. They will have to be absolute.
Make the following sector edits
Original edits from COMPUTIST #44.
Trk Sct Byte(s) From To
$1D $02 $18 Z A2 60 60
SIF $00 $FO fi A2 00 60
SIF $06 $82 ? A2 00 60
$22 $04 $49 ? A2 00 60
My new Edits.
Trk Sct Byte(s) From To
SIF $06 $B2 ? A2 00 60
$1B $OE $0D T A2 00 60
Make sure you write these edits back to
your disk
Softkey for...
Sensible Speller
Sensible Software
@ Requirements
1 ProDOS formatted disk
D Block Editor, like Block Work
© Copy Program, like Block Work
© Original disk
Sensible Speller is a ProDOS based spelling
checker, which seems to be very effective. I
have not used it much, but it is easy to operate.
The copy protection scheme is similar to the
[8
COMPUTIST #5
other pieces of software that Sensible Software
market. I found that after the program checked
for an original disk, it checked something in
RAM memory and would give you an error if
it didn’t check out. So T found the routine and
NOPed it. 1 then tried using it from a RAM
disk, and found that it checked slot 6 for the
original disk, Although the check is satisfied
by our first edits, it is still a pain to wait for
it. The third set of edits will stop this check from
happening, and you'll be presented with the
main menu screen almost immediately. Plus
you'll be able to run it from a hard disk or RAM.
disk. Perform the following edits to deprotect
this program
[1_] Fix Key disk check so it’s always
satisfied, Search for this sequence BD 8C CO 19
FB 49 D5 D8 F7. On my version | made these
changes:
Block Byte(s) From To
$51 $0F6 = $F7 $56
$78 $18E SFT $56
$F2 $072 SF? $56
[-2_] This will fix the RAM check routine
that I came across. Search for this sequence:
20.484. On my version I made these changes:
Block Byte(s) From To
SSF SIEC 204A 4A EAEAEA
$85 $1EC —-204A4A EAEAEA
3 Disable slot 6 drive startup and check
(allows hard disk or RAM disk operation).
Search for this sequence: 20 04 4A. On my
version I made these changes:
Block Byte(s) From To
SSF $108 20.04 4A EAEAEA
$85 $108 20.04 4A EAEAEA
After these edits are made your disk will
work properly from any storage device.
Utility for Saving
the Lower 8 Pages of Memory
@ Requirements
{~ Formatted disk, DOS not necessary
_ Sector Editor
On occasion, you may need to save the
lower 8 pages of memory ($0000-$0800)
to a binary file. Unfortunately, this area of
memory is very volatile. It starts with the Zero
page. (S0OOO-$OOFF) which contains a lot
of highly used pointers and variables. It also
contains the microprocessor’s stack area
(SO100-$01FF). It has the keyboard buffer
May
IaaE SSS >>> _>»__h_______________EE=
($0200-S@2FF). And lastly, it has the text
screen display area ($0400-$O7FF). This
memory area changes constantly. which makes
it impossible to save this area to disk using
normal methods. To get this area saved to disk,
we have to somehow move it to a safe area
before any keyboarding is performed. Once this
is completed, we can save this area to disk like
any other binary file
The following is a procedure for setting up
a DOSless utility that will move this area to a
safe place so it can be saved to disk. I made
use of the information provided by Adam Levin
in COMPUTIST #44, page 13 on DOSless
utilities.
Follow these directions:
[[1_] Format a blank disk. It doesn’t need
DOS on it, but it could.
2_] Pull out your favorite sector editor and
read in sector #$0@ from track #SOO
[£3] Starting at Byte #SOO enter in the
following code:
01 A2 08 AD 06 BY 00 00
99 00 20 C8 DO F7 EE 07
98 EE OA 08 CA DO EC 8D
E8 CO 4C 69 FF
4 When complete, write it back to sector
4800, track #800.
To use this utility all you need to do is start
up your protected program. Put this utility in
the boot drive and press Assuming
that this reboots your machine, you'll see the
drive come on then you'll be in the monitor:
At this time, the lower 8 pages of memory are
sitting at address $2000-$27FF, Now boot
your DOS disk and save this area like this:
BSAVE PQ-P7,A$2000,L$800
If upon hitting (RESET) , the program
does not reboot, or it clears memory and
reboots, then this method will not work. But
if you can drop into the monitor from within
your protected program, you may be able to get
most of the i rtant data by booting using the
command: 61
This will disrupt a few memory locations,
but it may still work. Give it a try. Good luck
George Bigelow
ey
Bard's Tale Effects Locator:
A Supplement To Bard’s Tale Mapper
@ Requirements
—] Bard's Tale (the first one)
Ol Bard's Tale Mapper maps
Printer nice, but not necessary
After I wrote Bard’s Tale Mapper I began
exploring the dungeon disk some more and
discovered how to tell what all those numbers
in the effects map that have a 4 in them do
(©4,84,C4). Each dungeon map has one sector
dedicated to this. Perhaps, in your looking
through the disk, you have seen a sector with
the name of the dungeon. This sector is the one
that tells the program what to do for each 4 on
that map.
How To Read Coordinates
Whenever you ask Bard's Tale to locate
yourself in a dungeon (there are several ways)
it answers with so many rooms North and so
many rooms East of the room that you entered
the dungeon, no matter which floor you are on.
Since dungeons are always entered from the
lower left-hand corner, this is the basis for my
coordinates; so many rooms North, so many
East of the lower left-hand corner of each map.
So, if we have a coordinate of 13,7 this means
the room that is 13 rooms from the bottom of
the map, and 7 rooms from the left side of the
map (this is the map you have printed out using
Bard's Tale Mapper). [ find it casiest to mark
a piece of paper with numbered lines
corresponding to each room and measuring with
this.
How Do I Find Out What Happens At
Any Particular Coordinate?
There are two methods which will help you
find out what happens at a particular coordinate.
One is to use your sector editor, find the sector,
and use the following information. The other
is to type in the following program, and let it
do the work! I recommend the latter
Let's go through and explain each effect.
Coordinates are in pairs, first the distance North
from the bottom of the map, then the distance
East from the left side of the map. If your sector
editor displays cight bytes per line this will be
a lot easier (I use Copy H Plus). The byte I give
will be the byte that this effect’s section starts
with (cach section is $10 bytes long)
First find the sector with the name of the
dungeon you are interested in. The dungeon
maps start at track SOE, sector $B through
track $06 sector SOC. eight sectors per map
All floors of a dungeon have the same name,
so if you are interested in. say. the third level
of the sewers, find the third occurence of the
name “SEWERS” going from track SOE sector
$OB examining in decreasing track and sector
numbers.
$20: Special Effects. This is my name for
this section because it contains many different
effects. The first set of coordinates corresponds
to the number starting at $30. For example.
in the dungeon SEWERS(1) at room 9.4 is
special effect number $11 (which is a spider
statue)
May
COMPUTIST #55
$40: Spell Removal. As you enter this
room any special spells (magic mouth,
compass, etc.) will go away. This can be a large
category, it continues through $50
$60: Place Change. Entering this room will
transport you to the corresponding coordinates
starting at $70. For example, in the
TOWER(F) entering room 1,16 will move you
to room 1,14 (numbers translated to decimal)
$80: Direction Shift. Entering this room
changes the direction you are facing (note that
your compass will not point correctly until you
leave this room).
$9: Smoke in your Eyes. Things will look
a lot different from now on no matter where
you are until you cast a spell to remove it.
$A: Removes Hits: Entering this room
hurts! Another large category, this continues
through $BO.
SCO: This one I don’t know! It only occurs
in two dungeons, both at coordinates $B,SF
I can't find anything there and didn’t include
it in the program.
$DO: Stasis Chamber. You appear to be
going through many doors, but your location
does not change. You may even be able to get
out, but it takes luck!
$EO: Inscriptions. In these rooms there is
an inscription that corresponds to the order of
the inscriptions on the previous two sectors.
$FO: Special Monsters: Not your run of
the mill monsters, but sometimes really
interesting(!) ones.
The Program
If all this previous stuff is not your bag,
then Bard's Tale Effects Locator is for you! It
does all the work except for transferring the
information to your map.
Basically, all the program does is read the
correct sector into the DOS buffer at $9600,
then read out the numbers found at a certain
offset (number from the beginning of the
buffer). It reads out everything from then on
until it reaches an $FF (255) or until the number
of pairs read reaches either 16 or 32, depending
on how large the category is. This information
is printed as decimal pairs separated by a
comma. Transfer this information on your map
and you will be a lot more prepared to survive
the dungeon!
Bard's Tale Effects Locator
1@ REM BARD'S TALE EFFECTS LOCATOR
20 DIMMS (15) :MULT = 1:MEM = 38400: REM LOCAT|ON
OF BUFFER
3@FORA= 76810775: READB: POKEA.B: NEXT ; REM
RWTS ROUT | NE
40 FOR A = @ TO 15: READ MS(A): NEXT ; REM
LOCATIONS.
50 DATA “169.183. 160. 232,32,217.3.96
69 DATA CELLARS(@) ,SEWERS(1) ,SEWERS(2) ,
SEWERS (3) , CATACOMBS (4) , CATACOMBS(5) ,
CATACOMBS (6) ,CASTLE(7) , CASTLE (8)
CASTLE(9) , TOWER(A) ,THE* TOWER(B), THE”
TOWER(C) , THE*TOWER(D) , THE “TOWER(E) . THE*
TOWER(F)
70 REM MENU
80 HOME ; PRINT "CHOOSE*A*LOCATION:” ; PRINT
90 FORA=@7T015; PRINTA+1"."SPC(1+(A<
9))M$(A) ; NEXT
10 PRINT "17.*END”
11@ POKE - 16368,6: REM CLEAR ANY PREVIOUS
CHARACTER
120 PRINT ; INPUT "CHOOSE*A*NUMBER® (1-17) :*"
C: IFC <1 0RC > 17 THEN 80
130 IF C = 17 THEN END
140 REM CALCULATE TRACK & SECTOR
158 T=15- INT (C/2+ .5):0=C-1
160 |F C= 1 THEN S = 11: GOTO 190
170 |F C = 2 THEN S = 3: GOTO 190
188 C = C - 2: GOTO 160
190 POKE 47083, 0: POKE 47084, T
200 HOME ; VTAB 10; HTABS5: FLASH : PRINT "INSERT*
BARD'S*TALE*DUNGEON*DISK!" : NORMAL
210 VTAB 15: HTAB 1: PRINT “PRINT*THE*PAGE?"
GET ZS: |F Z$="Y" THEN PRINT : PRINT CHRS
(4) "PR#L"
220 HOME : PRINT "EFFECTS* LOCATIONS* FOR "
M$ (D)
230 POKE 47085.S; CALL 768: REM READ CHOSEN
TRACK & SECTOR INTO BUFFER
240 PRINT : PRINT "SPECIAL:" ;:OFFSET = 32
GOSUB 410
250 PRINT : PRINT "REMOVES*SPELLS:" ; : OFFSET =
64: MULT = 2; GOSUB 370: MULT = 1
260 PRINT : PRINT "PLACE*CHANGE: " ; OFFSET = 96
GOSUB 450
270 PRINT : PRINT "DIRECTION*SHIFT:" ; OFFSET
= 128; GOSUB 376
288 PRINT ; PRINT "SMOKE*IN*EYES;" ; :OFFSET =
144; GOSUB 370
290 PRINT : PRINT "REMOVES*HITS:" ; :OFFSET =
160: MULT = 2; GOSUB 370:MULT = 1
300 PRINT : PRINT "STAS|S*CHAMBER: " ; : :OFFSET
= 208; GOSUB 370
310 PRINT : PRINT "INSCRIPTIONS: " ; ;OFFSET =
224: GOSUB 370
320 PRINT : PRINT "MONSTERS:" ; :OFFSET = 240
GOSUB 370
33 PRINT: PRINT: PRINT: PRINT CHR$ (4) "PR#0"
340 VTAB 23: HTAB 1: PRINT "PRESS* A* KEY* TO*
RETURN*TO*MENU” ; : GET 2$
358 GOTO 80
360 REM SUBROUTINES
370P=0
380 LOC = PEEK (MEM + OFFSET +P)
P= MULT * 16 THEN RETURN
39 PRINT LOC". " PEEK (MEM + OFFSET +1+P) “*"
400 P =P +2: GOTO 380
410P=0
420 LOC = PEEK (MEM + OFFSET +P)
P = 16 THEN RETURN
430 PRINT LOC "," PEEK (MEM+OFFSET+1+P) "-#"
PEEK (MEM + OFFSET + 16 +P) "*"
IF LOC =2550R
IF LOC = 255 0R
Ki eeaaa
440 P=P +2: GOTO 420
450 P=0
460 LOC = PEEK (MEM + OFFSET +P): IF LOC=2550R
P= 16 THEN RETURN
470 PRINT LOC” ,” PEEK (MEM + OFFSET +1+P) "->"
PEEK (MEM + OFFSET + 16+P) "." PEEK (MEM
+ OFFSET + 17+P) “*"
480 P=P +2: GOTO 460
Checksums
10 - S$BADD 250 «=- $125D
20 ~ S6EGE 260 «= - SEE8F
30 - $ED83 270 = - $5059
40 ~ $0085 280 «= - $978C
59 ~ SE4EF 298 «= - $C3ED
69 ~ $E39C 308 «= - $DI5E
70 ~ $5E21 318 - $2359
80 — $2088 320 - $O77A
90 ~ $5OAD 3300 - $3490
100 - S85FF 3400 - $F342
118 - $B977 350 © - SABSA
120 - $5B48 360 0 - $7A8F
130 - $A925 370 - $9542
149 - $78CO 380 =~ $0335
150 - $80C2 390 - $6618
160 - SEC71 400 = - $A86F
178 - $9629 410 - $791C
180 - $0B23 420 - S$7E7B
190 - $2941 «430. S868
200 - $2208 «© 440 $2688
210 - SE26E = 450 - $7626
220 - S46EB © 460— $8280
230 - scov7 = «470 - $1013
240 - $9638 «= 480 $8088
CAPTURING
PHANTASIE MAPS
Phantasie, by Strategic Simulations, is a
popular game, but like many strategy games is
more playable with a map to follow. This article
will not create these maps for you, but will
allow you to capture them for later reference
after you have made the dungeon visible by
exploring it. This program will work on the first
Phantasie, and perhaps the rest. I do not have
the rest, so it’s iffy!
The game only saves one dungeon status
at a time, so if you have thoroughly explored
‘one dungeon, saving another dungeon will wipe
out the first one. If you need to return later.
you start all over again! It is this characteristic
that has made it a necessity to make a map of
the dungeons.
The people at Strategic Simulations. Inc.
have made it easy for us. When is
Pressed during the game any hi-res image is not
wiped out. This means that if we create a disk
with a hello program that can save a picture.
COMPUTIST #55 -
we can save the Phantasie dungeon.
Type in the program ‘*Phantasie Map
Capture” and save it as “HELLO” ona freshly
initialized disk. When you are finished with a
dungeon go to the nearest town to save your
status. Return to the dungeon and when you are
inside remove the Phantasie disk and insert your
initialized disk with the new hello. Press
, the disk will reboot and show the
picture of the dungeon you have just left. Type
in the name of the dungeon, and you have just
saved to the disk the picture of the dungeon.
Then use your favorite screen dump program
to print it.
1 REM PHANTAS|E MAP CAPTURE
20 POKE - 16304,0: POKE - 16297,0: POKE -
16300.0: POKE - 16301,0
3 VTAB 23; INPUT "NAME*OF*MAP:*" :M§
40 PRINT CHRS (4) "BSAVE" MS". A$2000, | $2000"
50 VTAB 24: PRINT : PRINT "PRESS* A° KEY* TO*
REBOOT" : GET QS: PRI 6
Checksums
10 - $BADD 40 ~ $3002
20 - $3588 50 - S6FAC
30 - SFA24
|
Phantasie maps are all on Page | of the hi-
res pages (including the countryside), so all that
this program has to do is make several POKEs
to display the map, accept the name of it, and
BSAVE it to disk.
Now if you find you have missed an area
of a dungeon you can return to it easily!
Softkey for...
Fay: Word Hunter
Didatech Software
@ Requirements
“] Fast copier that ignores errors
C1 Sector editor
I managed to deprotect Fay: Word Hunter
by accident. Track $2, sector $07 is protected
and the assumption is that it is used for a nibble
count. BLOADing the file Fay: Word Hunter
showed meaningless information and I assumed
that the file was encrypted
I decided to boot the disk and use an NMI
card to interrupt the program after it was
completely loaded. The first place I looked was
$BA69-S$BA95 since this unused area of DOS
is sometimes used to place nibble count
routines. I discovered a JMP to $6BF2 at
$BA92. I assumed this to be the entry to the
__ May
program after everything was loaded. I made
a backup copy using Locksmith Fast Copy to
ignore the protected sector and using the sector
editor on Copy II Plus scanned the backup for
the sequence 4C F26B. I found it on track $00,
sector $04, I then changed F268 to 69 FF. This
allowed me to run the program, enter the
monitor and examine the program at will. A
little experimentation showed that the nibble
count appeared to begin at $8567.
After many hours of hit and miss
experimentation, I discovered that changing the
value at $856E from FO to D0 seemed to bypass
or eliminate the nibble count. I can only guess
why, Since the program was encrypted the only
way to change this byte was to write a short
program to insert D@ at $856E after the
program was loaded. 1 did this just before the
JMP to $6BF2 on track SOO, secotr $04. This
did not seem to affect the operation of the
program.
[1] Make a backup copy using Locksmith
Fast Copy or any other method that will ignore
the protected sector.
2 Using a sector editor, make the
following edit:
Trk Sct Byte(s) From To
$00 $04 $89-91 7 AQ DO 8D GE 85 EAEAEA
‘ EA
Alternate Reality
Character Editor
This is for all computists who like Alternate
Reality.
It was difficult to get the information I
needed to make the character editor. In an
adventure game, the character's statistics are
usually kept with the name of the character. 1
located the names of the characters in track
SO, sector $01. To my surprise, the **stats’”
were nowhere to be seen.
I pondered the ways I could try to find
them. If part of my character changes then the
information that is saved should be different
I wrote a disk comparison program to compare
two save disks. I backed up my character disk
and played it until something changed. I then
saved my character and compared it to the
backup copy using the comparison program
The different bytes were what changed
I did this over and over until I gathered all
the “‘stats’* that [ wanted. Then T wrote a
program to make the whole thing easy. I even
put in a help mode, if you need instructions just
type ? or /
Enter the BASIC program and save it as
“AR CHAR EDITOR”. Then go into the
monitor and enter the hex code. Save it as
“READ TRACK’.
AR CHAR EDITOR
1 REM ALTERNATE REALITY
20 REM CHARACTER ED! TOR
30 REM BY MICHAEL HORTON
40 REM
50 PRINT CHR$ (13) +CHRS (4) "BLOAD"READ“TRACK™
60 CALL 777: REM CONVERT DOS TO AR DOS
70 CLEAR ; RESTORE
80 10 = PEEK (769) + PEEK (770) * 256
90 POKE 10 +1. PEEK (47081) ; REMGET RIGHT SLOT #
108 C$ = "AR*CHAR*DISK” : READ NA
11OT = 10+4:S=10+5:CD= 10+12:PA=10+9:BF
= 768
120 DIMN(4) .NS(4) .AS(NA) ,A(NA) .P(NA) ,AN(NA)
130 FOR | = 1 TONA
140 READ AS(1).A(1) .P{1)
150 NEXT |
160 TEXT : HOME : VTAB 12
170 PRINT "i NSERT*ALTERNATE*REAL | TY*CHARACTER
“DISK”
180 POKE - 16368.0: GET AS
190 IF A$ = "2" THEN POKE 10 + 2.2
200 POKE T,0: POKE S.1: POKE CD, 1: POKE PA. 32
CALL 774
210 IF PEEK (10+ 13) < > 8 THEN 1800
220 FOR | = 1 T012
230 A= PEEK (8191 + |) - 128
240 IFA< > ASC ( MID$ (C$,1.1)) THEN PRINT
VTAB 14: PRINT "WRONG'DISK!" : FORZZ=1T0
1500: NEXT ZZ: GOTO 160
250 NEXT |
260 FOR | =1 704
270.N(1) = PEEK (8207 + 1) :NS(1) = ""
280 FOR J = 1 10 32
290 A = PEEK (8319+ J+ (1-1) * 32)
300 IF A< 32 THEN NS(i) = "" : GOTO 330
310.NS(1) =NS(1) + CHRS (A)
320 NEXT J
330 NEXT |
340 TEXT : HOME : VTAB 8:N=@
350 PRINT “CHOOSE*CHARACTER*TO*EDIT."
360 FOR | = 1104
370 INVERSE
380 IF N(1) = 16 ORNS( “* THEN NORMAL
390 PRINT | " NS(1)
408 NEXT |: NORMAL
410 PRINT "5. . NEW*AR*CHAR*DI SK"
420 PRINT "6... .EXIT*PROGRAM”
439 PRINT : PRINT "CHOICE
449 GET CHS:A = ASC (CH$)
450 |F A = 53 THEN 168
460 IF 4 THEN HOME : CALL 780: END
470 IF 3 OR A = 47 THEN GOSUB 1490
480 |F THEN 520
498 IF THEN GOSUB 560
500 IF A= 14 ANDNS(N) < > '"" THEN GOSUB 610
GOTO 260
510 |F A= 13 ANDNS(N) < > "" THEN GOSUB 728
GOTO 200
520 IFA < 49 OR A > 52 THEN 340
530 IF N< > @ THEN 340
540 N= A - 48: PRINT CHS; : GOTO 440
550 REM DELETE/UNDELETE CHARACTER
560 IF N(N) = 16 THEN POKE 8207 +N, @
570 IF N(N) = 9 THEN POKE 8207 +N.16
580 POKE T.0: POKES, 1: POKE BF 32: POKE CD, 2
CALL 774
590 N(N) = PEEK (8207 +N): RETURN
600 REM CHANGE CHAR NAME
610 VTAB 19: INPUT "NEW*NANE: “ : NNS
620 |F LEN (NN$) > 32 THEN RETURN
630 IF NNS = "" THEN RETURN
640 L = LEN (NS): FOR | = LTO 32
650 NNS = NNS + "*" : NEXT |
660 FOR | = 1 T0 32
670 POKE 8319 + | + (N- 1) * 32, ASC ( MIDS
(NNS, 1.1)
680 NEXT |
690 POKE T,0; POKE S,1: POKECD,2: POKE BF, 32
CALL 774
700 RETURN
710 REM EDIT CHAR INFO
720 POKE T,N * 4; POKE CD,1: CALL 771
730 IF PEEK (10 + 13) < > @ THEN GOTO 1800
740 FOR | = 1 TONA:AN(1) = @
750 FOR J = A(|) TO@ STEP -1
760 AN(|) = AN(1) + PEEK (P(1) - J) * 256 # J
770 NEXT J
780 NEXT |
790 HOWE ; PRINT "NAME:" ;NS(N)
800 FOR | = 1 TONA
810 PRINT AS( 1); TAB( 20)AN(1)
820 NEXT |: POKE 34,22
830 LN = 1: GOSUB 980
840 A= PEEK ( - 16384)
850 |F A< 129 THEN 848
860 POKE - 16368, 0: XN = LN
870 IF A= 136 OR A= 139 THEN LN=LN-1
880 |F A= 149 OR A= 138 THEN LN =LN+1
890 IF LN< 1 THEN LN = NA
900 IF NA< LN THEN LN = 1
910 GOSUB 970
920 IF A= 141 THEN GOSUB 1010
930 IF A= 145 THEN GOSUB 1080: RETURN
940 IF A= 191 OR A= 175 THEN GOSUB 1640
950 GOTO 840
960 REM MOVE EDIT LINE
970 VTAB XN +1: PRINT AS(XN) ; TAB( 20) AN(XN)
980 INVERSE : VTAB LN + 1: PRINT AS(LN); TAB(
20) AN(LN)
990 NORMAL : RETURN
1000 REM CHANGE STAT VALUE
1010 VTAB 23: PRINT "ENTER‘NEW*VALUE*(Q-" ; 256
% 256 #A(LN) - 1: ")"
1020 INPUT ":" :NVS
1030 1F NVS = "" THEN HOME ; RETURN
1040 NV = VAL (NVS)
1050 IF NV < BOR NV < > INT (NV) OR NV > 256
% 256 #A(LN) - 1 THEN HOME : GOTO 1019
May
COMPUTIST #55
11
1660 AN(LN) = NV:XN = LN: HOME : GOTO 972
1070 REM SAVE STATS
1980 HOME
(Y/N)"
1090 GET AS
1100 |F AS = "N" THEN RETURN
1110 IF A$< > "Y" THEN 1090
1126 FOR | = 1 TONA-7
1130 FOR J = A(|) TO STEP - 1
1140 P = INT (AN(I) / 256 # J)
1150 AN(|) = AN(1) - B® 256 # J
1160 POKE P(|) - J.P
1170 NEXT J
1180 NEXT |
1190 FOR | = NA - 6 TONA
1200 FOR J = 2 T0.0 STEP - 1
1210 POKE P(1) ~ J,AN(1)
122 NEXT J
1230 NEXT |
1240 POKE CD,2: CALL 771
1250 RETURN
1260 DATA 21
1270 DATA "CURRENT*HIT*POINTS" ,2, 11961
1280 DATA "MAXINUM*HIT*POINTS" 2.11965
1290 DATA EXPERIENCE, 3, 11945
1300 DATA LEVEL ..11949
1310 DATA GOLD, 2, 11969
1320 DATA SILVER, 2.11973
1330 DATA COPPER, 2, 11977
1340 DATA GEMS, 2, 11981
1350 DATA JEWELRY, 2. 11985
1360 DATA POT |ONS 0, 12157
1370 DATA FOOD, 0, 10667
1380 DATA WATER, 0. 10668
1390 DATA TREASURE" FINDING, @ 10662
1400 DATA UN-NOTICABILITY.0, 12053
1410 DATA STRENGTH 0, 12080
1420 DATA INTELLEGENCE 0, 12089
1430 DATA WiSDOM, 0. 12098
1440 DATA SKILL.0, 12107
1450 DATA STAMINA, @. 12116
1460 DATA CHARM, 0, 12125
1470 DATA PHYSICAL" SPEED, 0. 12134
1480 REM NANE LIST HELP
1490 HOE ; VTAB 3
1500 PRINT “TYPE*THE*NUMBER"OF* YOUR'CHO| CE*AND
THEN”
1510 PRINT "PRESS*RETURN. *|F*¥OUR*CHO|CE“WAS*
THE”
152 PRINT "NAME*OF* A* CHARACTER® THEN* THAT”
1530 PRINT "CHARACTER’ S‘STATS*W/LL*BE" CALLED
UP* AND"
1540 PRINT "YOUWiLL*BE*PUT* INTO*EDIT*MODE.*
1550 PRINT : PRINT" | F*YOU*Wi SH'TO*RENAME*YOUR*
CHARACTER,”
1560 PRINT “TYPE* THE” APPROPRI ATE® NUMBER" AND*
THEN’
1570 PRINT "TYPE*CONTROL'N. "
1580 PRINT : PRINT" |F*YOU"WISH*TO*UNDELETE*OR*
DELETES A"
1590 PRINT "“CHARACTER® TYPE* THE* APPROPRI ATE*
NUMBER”
PRINT "SAVE* ABOVE STATISTICS*
Ls
1600 PRINT "AND*THEN*TYPE*CONTROL‘D. ° 300 - $2451 1220 - $EB2B
1619 GOSUB 1740 310 - SAA8B 1230 - $3848
1620 RETURN 320. - $5052 1240 - S47F2
1630 REM EDIT STATS HELP 330 - $6816 1250 - $3156
1640 TEXT : HOME : VTAB 3 340 - $3821 1260 - S6BE6
1650 PRINT "I N*ORDER*TO*MOVE*THE* i NVERSE* BAR* 350 - SODAD 1270 - $B83A
USE* THE" 360 - $5C8A 1280 - $5DC9
1660 PRINT "ARROK*KEYS.” : PRINT 370 S16AB 1290 - $A188
1670 PRINT "PRESS* RETURN TO*EDIT*A* STAT.” oH . oe an 7 eee
PRINT = =
1689 PRINT "1F* YOU* DO* NOT*W1SH* TO* CHANGE* At 400 - SEOB6 1320 - $2878
STAT'S" 410 - SOALE 1330 - $9131
1690 PRINT “VALUE*JUST*PRESS*RETURN. " 420 - $7797 1340 - S26FE
1700 PRINT "TYPE*CONTROL“Q"TO"QUIT‘EDITTING. " BSB 280806 1300 $9585
1710 COSuB 1748: POP 440 - $623C 1360 - $654E
1720 G0T0 799 450 - $7059 1370 = $E30A
1730 REM WAIT FOR RETURN ce oie ace i ee
1740 PRINT : PRINT : PRINT “PRESS*" ; = INVERSE an Mo
aS 490 - $4650 «1410. - $8133
1750 NORMAL : PRINT "*TO*CONTINUE. ° Sa CSFLER tea 2 ive
ae Ses 510 - $EFD3. «1430 SDAAE
1770 IF AS < > CHRS (13) THEN 1760 25) KAO iad. cate
Ae eT 530 - $9325 «1450 - S1C89
1790 REM ERROR HAS OCCURRED Bp ae la -
1GOB HOME : VTABLL 550 - $61B1 1470 $54DE
1810 PRINT "AN‘ERROR'HAS"OCCURRED'#H/LE*TRY NG 560 $6363 1480 - $9¢90
10 570 - $875E 1490 - $8537
1820 PRINT "ACCESS* THE* DISK* DRIVE.* PLEASE 580 — SB35A 1500 ~ $445
GESTARTs” 590 - $5007 1510 ~ $82¢B
1830 END 600 - $2460 1520 - $C48B
610 - s0ce3 1530 - $6E42
Checksums 620 - SE3A3 1540 - $1D0A
; 9 se OC eS
= ee er 650 - S66FA 1570 - $819C
2 ose ee 660 - $2096 1580 - $1686
aU 670 - SiF39 1590 - $8608
a ee ee ee 680 = $1826 1600 - $83A9
ia ee a 690 - $A20A 1610 - $5576
79 ~ SGEAD 990 - SCASO 700 - $7642 1620 - SE831
89 ~ $5588 1908 - $593¢ 710 - $551E 1630 - $7066
99 ~ $0688 1010 - SOAD4 720 - $17F3 1640 - $295E
100 - $2A07 1020 - $78Al 730 = $6CB1 1650 - $3229
110 = $2075 1030 - SBFOE 740 - $0643 1660 - $709E
128 - $8045 1040 - $89C6 750 - $48C3 1670 - $2F61
130 = S3FAF 1050 - S601 766 - $F332 1680 - $0877
149 - $25C0 1060 - S4AE7 770 - SB8CA 1690 - $5719
150 - $522F 1070 ~ $2B3A 780 - $0733 1700 - $370E
160 - $1094 1080 - $F999 790 - SAEB7 1710 ~ SAE1O
170 - $0349 1090 - $8910 800 - SA231 1720 ~ SCE32
180 - SB3IF 1100 - $6036 81d - SAg08 1730 = §3FAB
190 - $8189 1110 ~ $8888 820 - $9021 1740 - $0899
200 - $878D 1120 - $3029 830 - $4887 1750 - $95C6
210 - $1242 1130 - SEEE6 840 - $268F 1760 - $95F9
220 - SEO44 1140 - $6813 850 - $3E9C 1770 - $8487
230 - SA130 1150 - $0420 860 - S62AA 1780 - $0556
240 - S934A 1160 - $3A5D 870 - S9CEL 1790 - $E371
250 - SEAB4 1170 - $781¢ 880 - SDEF9 1809 - SE9ED
260 — SDD5E 1180 — $7270 899 - $0542 1810 - $3055
270 - SFOIF 1199 - $4180 908 - $0224 1g2b-~ $aoc2
280 - $6180 1208 - $0130 poems READ: sex $9790
290 - SBAD2 1210 - S765E o20 _— seace
COMPUTIST #55 May
READ TRACK
9300: 20 40 63 4C 21 03 4C 3E SEB2F
0308: 03 4C 62 03 4C 7B 03 4C $E499
0310: 94 83 00 00 00 09 00 90 SOFAA
0318: 08 80 00 00 06 90 00 G0 SAFOA
0320: 00 AQ OF 8D 52 03 18 6D $4330
0328: 00 B3 8D 56 03 20 3E 03 ‘S20CF
0330: AD 5A 03 DO 08 CE 56 03 $C060
0338: CE 52 03 10 FO 68 AO 03 $O91E
0340; AQ 4D 20 D9 63 BO 05 AD $9948
0348; 00 80 5A 03 60 01 6001 $9668
0350; 90 00 00 5E 03 88 20 00 $0555
0358: 00 01 00 00 60 81 00 01 $3065
0360: D8 EF EE 29 BACE 2A BA $8DF6
0368: EE 49 BACE 4A BA EE 96 $5C65
0370: BA CE 97 BA EE D6 BA CE $3694
0378; D7 BA 60 CE 29 BAEE 2A SB63A
0380: BA CE 49 BA EE 4A BA CE $53BD
9388; 96 BA EE 97 BA CE 06 BA SODAS
9390; EE 07 BA 60 A9 00 85 00 $3FOA
0398: A9 20 85 01 AD 00 B1 00 $6403
03A0; 49 87 91 00 C8 DOF? E6 $FCDA
O3A8: 01 A5 O1 C9 30 DO ED 60 $E607
Softkey for...
Mastertype v2.1
Scarborough
@ Requirements
“I Apple Ie or Tle with 128K
7 Super IOB 1.5 with New Swap Controller
Sector editor with search feature (Copy I+)
DOS 3.3 System Master disk
[ One blank disk side
() XFER.BOOT & RESTORE (COMPUTIST
#28) or other way into the monitor.
Mastertype 2.1 is a double hi-res update of
the classic Mastertype typing teacher game. It
is nota difficult program to copy. but the copies:
have a habit of dying or becoming particular
of which disk drives will boot it.
The excellent softkey presented way back
in COMPUTIST #15 for Mastertype 1.7 will
not work on version 2.1, but the information
necessary to crack 2.1 is all there.
T resolved to make an unprotected version
of 2.1 that would boot under standard DOS. 1
missed that goal. but at least I unprotected it.
Mastertype’s hello program is a text file
instead of an Applesoft program, so we must
change DOS to execute (EXEC instead of
RUN) the hello file
i Boot a DOS 3.3 system master and fill
memory from SBA69 to $BA94 with 60s.
CALL-151
BA69:60
BA6A<BA69.BA94M
[27] Insert a blank disk and initialize it to
create a slave disk
FP
INIT HELLO
[3a] Now, we need to capture the Master
Type RWTS. If you do not have a copy card
or other way to force entry into the monitor,
then skip to step 3b. Otherwise, boot your
original. When the drive stops, enter the
monitor and move the RWTS to a safe place
in memory, then boot your slave disk and skip
to step 4.
1900<B800.BFFFM
3b | Insert the disk with XFER.BOOT and
RESTORE into the drive. Load XFER.BOOT.
BLOAD XFER.BOOT
3¢_] Put your original disk into the drive
and boot it into upper memory
PR#3
CALL 768
3d] When the drive stops, press
RESET ] Insert the disk with XFER.BOOT
and RESTORE into the drive and use
RESTORE to move the trapped RWTS into
main memory
CALL-151
3F8: 4C 00 03
BLOAD RESTORE
1900<B800.BFFF(_¥)
([Z] Save the protected RWTS to your
Super IOB disk
BSAVE RWTS.MASTERTYPE2.1, A$1900,
1$800
5] Load Super [OB 1.5 (from your
Starter Kit) and merge the standard swap
controller with it. Change line 1001 to load
the RWTS.
LOAD SUPER I0B
EXEC SWAP.CON
10010 PRINT CHRS(4) ‘‘BLOAD
RWTS.MASTERTYPE2.1"
RUN
[8] Using a sector editor with a search
feature, search for all occurences of the text
string “*YZ123"° and change to “BLOAD"’.
and the text string “YZ23" and change to
“BRUN*. The tricky part here is that the
“search text” will only find some of the YZ
stuff. Some of the YZ’s and all the KILLDEs
and CATNDOGs are in flashing text. For these
you will have to search for the equivalent hex
bytes. Similarly, change “‘CATNDOG™ to
“CATALOG™, and ““KILLDE”™ to
“DELETE”. I did not find any SAVEs that
needed to be changed to INIT. The table below
lists all of the commands that need to be
corrected
BLOAD and BRUN
Trk Sct Byte(s) From To
$10 $04 $46 ¥Z123 BLOAD
$7D ¥Z123 BLOAD
$88 YZ23 BRUN
$1F $00 $04 ¥Z123 BLOAD
SIE ¥Z123 BLOAD.
$3C YZ123 BLOAD
$58 ¥2123 BLOAD
$72 ¥Z123 BLOAD.
$83 ¥Z123 BLOAD.
$96 ¥2123 BLOAD
SAB ¥Z123 BLOAD
$cl ¥2123 BLOAD
$06 ¥2123 BLOAD
$OE SEA ¥Z123 BLOAD
Flashing BRUN
Trk Sct Byte(s) From To
SOA $04 SC7 59 5A 32 33 42 5255 46
SOE SOF $40 59 5A 32 33 425255 46
$15 $09 SAC 59543233 4252.55.46
Flashing BLOAD
Trk Sct Byte(s) From To
$20 SOE SEA 595A 313233 42 4C 4F 41 44
Flashing CATALOG
Trk Sct Byte(s) From To
$15 $00 $B3 46 44 41 40
$15 $OB $AC 4E 44 41 4c
SOA $02 $86 4E 44 4140
Flashing DELETE
Trk Sct Byte(s) From To
$15 $00 $13 4B 49 4C 4C 44 44 45 40.45 54
45 45
$15 SOA $74 4B 49 4C 40 44 4445 4C 45 54
45 45
Softkey for...
Create with Garfield
DLM
I was asked to make a backup of Create
with Garfield for our school librarian. (Can you
imagine giving primary school age children an
original disk to use?) In COMPUTIST #52.
there is a reference to an carlier article by Mr.
Brown. I agree that the response in
COMPUTIST #44 is nonsense. (I wonder if it
fl May
COMPUTIST 455
13; |
was an April Fools letter?) Anyway, there was
no help there. The Create with Garfield that I
was working with is called the Deluxe Version
and most likely is different than those referred
to by others, but here is a crack that seems to
work on this particular disk. Maybe the
protection is similar on the other versions,
The protection apparently is a signature on
track $22. This track is the only one not in
standard format. I found the code that checks
for the signature is in memory from S6D3E to
$6E64. It is part of a file called **LO"’. They
use the direct $C@EC rather than the usual
indirect $CO8C,X to read a byte from the disk.
Don’t bother looking on the disk for it however,
as it is stored there as $1FEC instead. The code
around $6D4A then changes the IF to a CO. It
appeared that all failures were sent to S6DE2
where the disk drive is turned off, the carry set,
and then a return, If the signature is found, and
I don’t pretend to understand all they go through
there, then the carry is cleared.
If you look at the bytes following S6E64
you will find some of the data it uses. (Lots of
$F7, $F6, $EF etc. patterns, and if you nibble
read track $22 you will find the same bytes.)
[ wasn’t sure just where to try to mess up the
check since it enters the routine at several
different pla A return at the beginning
would just be bypassed, How about just clearing
the carry instead of setting it on failure in byte
S6DES? It works! Who says you have to know
what you are doing, you just need to be lucky!
To back up the disk use any copier that
allows you to specify tracks and copy tracks
$00 - $21. | like to format the disk first so that
track $22 will be formatted even if it isn’t used.
‘That way any copier will work without hanging
up on track $22. By the way, track $23 seems
to have a signature of some sort on it also, but
apparently isn’t used on this disk.
After copying, then search the disk with a
sector editor for AD E8 IF 38 60 A200 ADEC 1F and
change the 38 to a 18. I found it on track $15,
sector $OF, byte $E9. An alternate method is
to boot a DOS 3.3 disk (to get control), then
re-insert your copy and:
BLOAD LO,AS6000
CALL-151
6DE5:18
BSAVE L0,A$6000,L$1340
By the way. you can copy all the files to
any DOS 3.3 disk, except they will not all fit.
They have modified the VTOC to crowd things
onto the disk. If you want to create some
additional room on your disk then you will need
to modify your disk to open up some unused
sectors (see COMPUTIST #30). I see no
advantage to this as they have already used a
fast DOS on the original. Too bad it isn’t
ProDOS, then it could go on a 3.5” disk. I'm
not sure the Create with Garfield mentioned in
COMPUTIST #52 is the same as mine but
hopefully this will be of some help. Maybe
(was $38)
someone with better understanding can take this
and improve upon the crack. In the meantime
have fun creating your cartoons.
P.S. I have to agree with Jim Hart about
Utilico and their E.D.D. I have version 4 and,
in addition to their protection, I object to not
being given the parm locations and uses so I
can customize it. For an additional $34 I can
purchase the source code and description of the
parms used. | paid nearly $100 for a program
and then find they will sell me at additional cost
the information I need to make full use of it?
Fooey, I recommend Copy H Plus! It is not
protected, is one third the price, and they tell
you what the various parameters do without any
extra charge. (And it works as good or maybe
even better!)
P.P.S Sorry to see you adding different
computers. I expect that is a sign of a dying
magazine. Too bad, I think you had a great
thing going. I do not own an IBM, nor do I plan
on doing so, Why should I have to clutter up
my shelves with worthless information? It is
upsetting to find a program that you have been
looking for only to discover it is for the IBM
version not the Apple. If there are rich people
out there who can afford both computers then
I suspect they could also afford two magazines!
Keep it pure!
PD ieneGaudt
ProDOS Block Editor
Adding a Search Command
@ Requirements
0 64K Apple with ProDOS
(1) ProDOS Block Editor (COMPUTIST #26)
Tam familiar with DOS 3.3 because that
is what [ used on my Apple II Plus. I never felt
the need to convert to ProDOS until T purchased
an Apple Ilgs. All of a sudden, sector edits on
a ProDOS diskette with a DOS 3.3 editor
became a nightmare of mapping logical sectors
to blocks, not to mention that I could not do
a thing with my 3.5”° drive.
I went through some back issues of
COMPUTIST to see what other people used to
edit ProDOS diskettes. In COMPUTIST #26,
there was an article regarding a program written
by Bob Bergstrom. The program is called
ProDOS Block Editor, and it is a‘*zap"* utility
for the ProDOS operating system. The program
is modeled after the Diskedit program for the
DOS 3.3 operating system. ProDOS Block
Editor was just what I was looking for.
Afier using it a while, I found a couple of
things I didn’t like: It would not work past
ProDOS block 279 and it did not have a search
capability.
14
COMPUTIST #55 _
Fixing the first problem was a breeze. I
changed a couple lines in the BASIC portion
of the program. I added a new structure MB
which is a two dimensional array that contains
the maximum number of blocks for a given slot
and drive.
Implementing a disk search was more
complicated, but Bob Bergstrom had done all
the hard work
Applesoft -vs- Assembler
1 considered doing the whole thing in
BASIC, but discarded that notion because I hate
to wait. I decided to do the front end and back
end of the find command in BASIC and the guts
of the search in assembly. I wrote and tested
the assembly portion in a afternoon, but
interfacing it to the BASIC portion took two
days.
First, [ had to learn the BASIC portion of
the program and figure a way to stick my wart
(Find Command) on it. Personally, [ hate
BASIC, the variable names are cryptic, and any
program over a page long is impossible to
follow (No offense Bob B., it's the language.
not the programmer). I wish COMPUTIST
would take the same approach as Nibble when
publishing programs, | like to see some verbage
on the general program structure and uses of
variables,
Implementing a Find Command
Whenever possible, I used existing code
from the original program. I placed the BASIC
portion at the end of the program and the
assembly portion on page $8F. There was not
enough room on page $03 and the program was
already modifying HIMEM
When the user selects the ‘*F™ option, it
invokes the find byte pattern command, The
user is prompted for the starting block number.
and then the ending block number of the search.
The user is then prompted to enter a byte
pattern. The maximum number of bytes that can
be entered is 16. When prompted to enter the
byte pattern for the search. the user is really
in edit mode, so whatever display criteria was
selected prior to executing “*F"'ind is what kind
of input is expected (If hex mode is selected,
Find accepts hex digits. If ASCII mode is
selected, Find accepts ASCII characters), The
ESC key is used to exit input mode of the byte
pattern. The values supplied by the user are
verified and POKEd into locations for the
assembly portion. The assembly portion is
CALLed, and when the assembly portion
finishes, the BASIC portion checks a result flag
and acts accordingly. If the byte pattern was
not found, a error message is displayed. If the
byte pattern was found. the block is displayed
May
to the user with the cursor located on the first
byte of the requested byte pattern.
One exception to this is when a byte pattern
spans two ProDOS blocks, the cursor is located
‘on the last byte of the byte pattern. Finally, the
user is returned to command mode and all
commands are available to the user.
Bugs
There are two bugs that I know about with
the code I added. I will leave it to some whiz-
bang BASIC programmer to fix them.
1) There are characters left on the screen
when ProDOS block numbers take four or more
character positions. This becomes obvious when
editing a 3.5" disk and decimal mode is
selected. [use only hex mode, so I didn’t bother
fixing the bug.
2) You can’t abort the FIND command
once you start it.
Entering the code
[1_] Enter the BASIC program and save it
to disk.
SAVE PROEDIT.FIND
[[2] Enter the ProEdit machine code and
save it.
BSAVE OBJ.PROEDIT, A$300, LSA5
3” ] Enter the machine code search routine
and save it,
BSAVE OBJ.PROED.FIND, AS8F0O, L$8D
PROEDIT.FIND
10 REN *
2@ REM * PROED|T
3@ REM * PRODOS BLOCK
40 REM * EDITOR
50 REM * BY BOB BERSTROM
60 REM * (C) 1985
7 REM * SOFTKEY PUBLISHING
80 REM *
82 REM * F|ND BYTE PATTERN ON DISK
85 REM * MODIF|CATION
90 REM * BY RENE GAUDET. 1/88
95 REN *
97 REM
100 TEXT : HOME ; HIMEM: 35000: GOSUB 1940: GOSUB
550: GOTO 1080
110 REM WAIT FOR KEY
120 KY = PEEK (KB): IF KY < C7 THEN 120
130 POKE KS.0: RETURN
140 REM MOVE CURSOR |N FIELD
150 GOSUB 270: PRINT '"*" :KY = KY - 8: ONKY GOTO
160, 180, 200. 1080. 238
160 VT =VT-1: IF VT-<@ THEN VT = 19: GOTO 249
17@ GOTO 250
18QHT =HT-1: IF HT < @ THEN HT = 13: GOTO 160
198 GOTO 250
200 HT =HT +1: [FHT > 13 THEN HT = 1: GOTO 230
210 |F VT = 19 ANDHT > 9 THEN HT = 1: GOTO 230
220 GOTO 256
230 VT =VT +1: IF VT > 19 THEN VT = 8
246 IF VT = 19 AND HT > 9 THEN HT = 9
250 GOSUB 270: INVERSE : PRINT">" : NORMAL :PT
=VT * 13 + HT - 1+ BF * C2: RETURN
260 REM CALC CURSOR POSIT! ON
270 IF HT < 1 THEN HT = 13:VT = VT - 1: IF VT <
@ THEN VT = 19:HT =9
280 HTAB (HT - 1) * 3+ 1: VTAB VT + 2: RETURN
290 REM PRINT CURSOR POSITION
300 KY = ABS (KY) : GOSUB 270: PRINT "*" ; :VT= INT
(KY / 13): HT = KY - (VT * 13) + 1: GOSUB
550: GOTO 250
310 REM PRINT "__"
320 FOR | = 1 TO 40: PRINT "-"
330 REM PROCESS EDIT DATA
34 NORMAL : GOSUB 270: PRINT ">*" CHRS (8) CHRS
(8); > IF HF = 1 THEN 378: REM HEX DATA 77
350 GOSUB 460: |F NOT HB THEN KY = KY - C7: REMGET
ASCI| CHAR, SET BIT 7
366 GOTO 500
370 GOSUB 830: IF KY > 15 THEN PRINT CHR§ (7) ;
GOTO 370: REM 1ST HEX DIGIT
380 Al = KY: GOSUB 420
390 GOSUB 830: IF KY > 15 THEN PRINT CHRS (7)
GOTO 390: REM 2ND HEX DIGIT
400 A2 = KY: GOSUB 420: GOSUB 980: GOTO 500: REM
CONVERT DIGITS TO TOTAL
410 REM PRINT DEC/HEX 01GIT FROM LOOKUP TABLE
428 PRINT MID$ (HES.KY +1,1);; RETURN
430 REM CALC Al MOD A2
440 NU = INT ( ABS (Al) - INT ( ABS (Al /,A2)) *
ABS (A2) + 05) * SGN (Al / A2): RETURN
450 REM INPUT ASCI| CHAR
460 GOSUB 120; IF KY < > 155 THEN RETURN
470 BL = PEEK (BK + 1) * C2 + PEEK (BK): GOSUB
1920: GOSUB 550: GOSUB 600: GOSUB 530: POKE
CM.RD: ONERR GOTO 1080
475 |F SE = 1 THEN ONERR GOTO 2100
480 POP : GOTO 480
490 REM POKE VALUE INTO BUFFER. PRINT TO FIELD
500 POKE BS + PT, KY: GOSUB 270: PRINT "*" ; : POKE
TM, KY; CALL DP: GOTO 200
510 REM ACCESS DISK. PRINT BUFFER FIELD
520 CALL PD ze!
530 CALL PB: GOTO 256
54@ REM PRINT STATUS LINE LABELS
550 VTAB 23: HTAB 1: CALL -958: INVERSE : PRINT
“BLOCK” : : |F NOT BF THENHTAB 12: NORMAL
PRINT “>" INVERSE : PRINT "BUF"
NORMAL : PRINT "FER" ; : INVERSE
560 1F BF THEN HTAB 13: NORMAL : PRINT "BUF
INVERSE ; PRINT "FER" ; : NORMAL : PRINT "<”
NEXT : RETURN
INVERSE
570 HTAB 33: PRINT "PTR" : PRINT “SLOT” ; : HTAB
9: PRINT “DRIVE” : ; HTAB 18: PRINT “1/0”
588 VTAB 24: HTAB 27: FLASH : PRINT "COMMAND" ;
NORMAL ; PRINT "*" ; : RETURN
590 REM PRINT STATUS LINE VALUES
600 VTAB 23: HTAB 7: |F CF THEN PRINT BL'"**" ;
HTAB 37; PRINT PT "**" ; : VTAB 24: HTAB 36
IF PT - OF > - 1 THEN PRINT "* ; CHRS
(8) ; CHRS (8) ; CHR$ (8) ; CHRS (8) ; PT - OF ;
GOTO 700
610 |F CF THEN PRINT “****" ; CHR$ (8); CHRS (8);
CHRS (8); CHRS (8) ;PT - OF: ; GOTO 700
620 REM
625 PRINT INT (BL / C2) ; : POKE TM, BL ~ (
(2) * C2): CALL HP: GOTO 648
630 REM
640 HTAB 37: IF PT > C6 THEN PRINT "1" ;: POKE
TM.PT - C2: CALL HP: GOTO 660
650 PRINT "O" ;: POKE TM,PT: CALL HP
660 VTAB 24: HTAB 36: PRINT "****" ; CHRS (8) ; CHR$
INT (BL
(8) ; CHRS (8); CHR$ (8);; IFPT-OF >-1
THEN PRINT "*" ;; GOTO 680
670 PRINT "~" ;
680 |F ABS (PT - OF) > C6 THEN PRINT "1" ;: POKE
TM, ABS (PT - OF) - C2; CALL HP; GOTO 700
690 PRINT "O" ;; POKE TM, ABS (PT - OF): CALL HP
700 VTAB 23: HTAB 21: PRINT "*" |: INVERSE : IF
HF =1 THEN PRINT "HEX" ; : NORMAL : PRINT "#*
710 |F HF = 2 AND NOT HB THEN PRINT "ASC/MSB=" :
NORMAL : PRINT "Q" ;
720 \F HF = 2 AND HB THEN PRINT "ASC/MSB=" ; :
NORMAL : PRINT "1" ,
730 VTAB 24; HTAB 6: PRINT SL;; HTAB 15; PRINT
DR; : HTAB 22: IF NOTCF THEN PRINT "HEX" |;
RETURN
740 PRINT "DEC" ;: RETURN
750 REM RING BELL
760 PRINT CHR$ (7) CHRS$ (7); : RETURN
770 REM DECODE ERROR, PRINT TO FIELD
780 ER = PEEK (EF) : POKE 34,1: POKE 35,21: HOME
VTAB 12; HTAB 12; |F ER = 39 THEN PRINT
"DISK* | /O* ERROR"
790 |F ER=40 THEN PRINT "NO“DEVICE*CONNECTED”
800 |F ER= 43 THEN PRINT "DISK*WRITE*PROTECTED"
810 FOR | = 1 TO 2500: NEXT : POKE 72,0: POKE
35.24: GOTO 530
820 REM KEYPRESS DECODE FOR NUMER ICS
830 GOSUB 460: IF KY = 141 THEN RETURN
B40 KY =KY-176: IFKY <@ OR KY > 22 THEN GOSUB
760: GOTO 830
850 IF KY > 9 THEN KY = KY - 7: IF KY < 10 OR KY
> 15 THEN GOSUB 760: GOTO 830
860 IF ED THEN RETURN : REMED!T MODE? THEN MUST
BE HEX
870 IF CF AND KY > 9 THEN GOSUB 760: GOTO 830
REM COMMAND LINE DEC NUMBER 100 BiG
880 RETURN
890 REM ASSEMBLE NUMBER
900 |F EDORNOT CF THENKY =Al * C3 + A2: RETURN
+ REM *EDIT" OR COMMAND LINE HEX (2D1GITS)
910 IF NOT EDAND CF THENKY =Al * C9 +A2: RETURN
REMNOT ‘EDIT'. GET DEC NUMBER (2 DIGITS)
920 |F ED OR NOT CF THEN KY =Al * C2 + A2 * C3
+A3: RETURN : REM 'EDIT' OR COMMAND LINE
HEX (3 DIGITS)
May
COMPUTIST #55
15 |
930 KY = Al * C8 + A2 * C9 +A3: RETURN - REM
COMAND LINE DEC (3 DIGITS)
940 REM ENCODE STRING INPUT TO HEX VALUE
950 ABS = "O00" + ABS: ABS = RIGHTS (ABS.4) :J =
1: FOR | =1704:PR(1) =@: NEXT |: FOR | =
1 TO LEN (AB$):PR(I) = ASC ( MIDS
(ABS.J,1)) -48: IF PR(1) > 9 THEN PR(1) =
PR(|) -7
960.J=J+1: NEXT :PR=Cl # PR(1) + C2 > PR(2)
+(3 * PR(3) + PR(4): RETURN
970 REM PRODOS BLOCK NUMBER
980 VTAB 23: HTAB 1: FLASH : PRINT "BLOCK" ;
NORMAL : PRINT "*" ; ; GOSUB 83: IF KY > 15
THEN KY = PEEK (BK) + PEEK (BK + 1) * C2
GOTO 1020
990 Al = KY: GOSUB 420: GOSUB 830: IF KY > 15 THEN
KY = Al: GOTO 1020
1000 A2 = KY: GOSUB 420: GOSUB 830
THEN GOSUB 990: GOTO 1020
1010 A3 = KY: GOSUB 420: GOSUB 920
1020 IF (KY < 0) OR (KY > MB(SL.OR)) THEN PRINT
CHR$ (7); : GOTO 980
1030 BL = KY: GOSUB 600
1040 VTAB 23: HTAB 1: INVERSE: PRINT "BLOCK" ;
NORMAL
1045 |F SE = 1 THEN RETURN
1050 IF PEEK (Cl) = 129 THEN VTAB 24: HTAB 27
FLASH : PRINT"? ?WRITE??" CHRS (7) CHRS (7)
CHRS (7); : NORMAL : GOSUB 460: IF KY < >
141 THEN 470
1060 POKE BK +1, INT (BL /C2): POKE BK, INT (BL
~ (INT (BL/ C2) * C2): GOTO 520
1070 REM TOP OF MAIN ‘COMMAND’ LOOP
1080 POKE 216.0: £0 = 0: GOSUB 580: GOSUB 600: IF
PEEK (772) > 0 THEN GOSUB 780
1090 REM GET COMMAND
1100 GOSUB 270: GOSUB 120: IF KY = 140 THEN GOSUB
1330: GOTO 1080
1110 IF KY = 142 THEN GOSUB 1360: GOTO 1080
1120 KY = KY - 192: IF KY =~ 1 THEN 1310
1130 IF KY > @ AND KY < 27 THEN ON KY GOSUB 1160
1550, 1200, 1230, 1260. 2000, 760, 1570
150,150, 150.1710, 150.760, 1630, 1390
760,1470. 1490. 760, 1296, 760, 1530, 1610
. 760, 1590
1140 GOTO 1680
1150 REM TOGGLE ASC| | /HEX FIELD DISPLAY
1160 HX = NOT HX: IF HX THEN 1180
1170 HF = 2: POKE FM,HF: GOTO 530
1180 HF = 1; POKE FM,HF: GOTO 530
1190 REM TOGGLE CTL~CHAR PRINT
1200 |F HF = 2 THEN CC = NOT CC: POKE CT .CC: GOTO
530
1210 RETURN
1220 REM TOGGLE ACTIVE DRIVER
1230 DR= (NOT (OR 1)) +1
1240 POKE UT, (DR- 1) * C7 + SL # C3: GOTO 550
1250 REM EDIT
1260 VTAB 24: HTAB 27: FLASH PRINT CHRS (7)
">>EDIT<<" ED =1
1270 GOSUB 349: GOSUB 690: GOTO 1270
1280 REW TOGGLE COM'D LINE HEX/DEC
1290 CF = NOT CF: RETURN
1300 REM HELP SCREEN]
IF KY > 15
1310 GOSUB 1869: GOSUB 550: GOSUB 538: GOTO 1080
132@ REM LAST BLOCK
1339 BL=BL- 1: IF BL > = @ THEN 1960
1349 BL = MB(SL, DR): GOTO 1069
1350 REM NEXT BLOCK
1368 BL =BL+1: IF BL < = MB(SL,DR) THEN 1060
1370 BL = 6: GOTO 1060
1388 REM SET POINTER IN BUFFER
1390 VTAB 24: HTAB 27: INVERSE : PRINT "SET-PTR"
VTAB 23: HTAB 33: FLASH : PRINT "PTR"
CHRS (7): : NORMAL : PRINT “****" CHRS (8)
CHRS (8) CHRS (8): : GOSUB 830: IF KY > 15
THEN GOSUB 550; GOTO 250
1400 Al = KY: GOSUB 420: GOSUB 830
THEN KY = Al: GOTO 300
1416 A2 = KY: GOSUB 426: GOSUB 830
THEN GOSUB 980: GOTO 308
1420 A3=KY: GOSUB 420: GOSUB 920: IF NOT BF THEN
IF KY > C6 THEN GOSUB 760: GOTO 1390
1430 | F BF THEN IF KY < C2 OR KY > C5 THEN GOSUB
760: GOTO 1390
1440 1F KY > C6 THEN KY = KY - C2
1456 GOTO 300
1460 REM READ A BLOCK FROM DISK
1470 VTAB 24: HTAB 27: INVERSE : PRINT ">READ<”
IFKY > 15
IF KY > 15.
NORMAL ; PRINT CHRS (7) “*" ; : GOSUB 980.
GOTO 550
1480 REM SET ACTIVE SLOT
1490 VTAB 24; HTAB 27: INVERSE : PRINT “SET*
SLOT" ;: HTAB 1: FLASH : PRINT "SLOT" CHRS.
(7) ;: NORMAL : HTAB 6: PRINT “*" :: GOSUB
830: IF KY > 15 THEN GOTO 550
1508 IF KY < 1 OR KY > 7 THEN 1499
1510 SL = KY: POKE UT, (DR- 1) * C7 + SL * C3
GOTO 550
1526 REM WRITE BLOCK TO DISK
1530 POKE CM.WR: VTAB 24: HTAB 27
PRINT ">WRITE<” CHRS (7)
GOSUB 980: POKE CM.RD: GOTO 550
1546 REW TOGGLE DISPLAYED BUFFER HALF
1550 BF =NOT BF:PT=VT * 13+HT - 1+ BF * C2
POKE BU, 144 + BF: GOSUB 530: GOTO 550
1560 REM TOGGLE ASC1 | HI-BIT (EDIT MODE)
1570 HB = NOT HB: RETURN
1580 REM ZERO PO|NTER OFFSET
1590 OF = PT: RETURN
160 REM EXIT TO BASIC
1618 TEXT : HOME : END
162@ REM OUTPUT TO PRINTER
1630 VTAB 23: HTAB 1: PRINT “**VERIFY*PRINTER®
ON *&*PRESS*<RETURN>**" ;
1649 GOSUB 126
1650 VTAB 1: GOSUB 1849: GOSUB 600: GOSUB 256
VTAB 1: PRINT : IF KY <> 141 THEN RETURN
1660 REM SET UP FOR PARALLEL PRINTER CARD
1670 PRINT D$; "PR#1" : PRINT 1S; “8ON"
1680 FOR V = 1 10 24: VTAB V:X = PEEK (40) + PEEK
(41) * 256: FOR H = X TO X + 39:AS = PEEK
(H): PRINT CHR$ (((AS < 32) * (AS + 64))
+ ((AS> 31) * AS)) ;: NEXT : PRINT : NEXT
1696 FOR | = 1705: PRINT : NEXT : PRINT D$ "PR#O”
RETURN
1700 REM DiSASSEMBLE BUFFER
INVERSE
NORMAL
1710 TEXT : HONE : INPUT "START ING*BYTE* ($6°TO*
SIFE*HEX) :*" ; ABS: 1F LEN (ABS) =O THEN PR
=: GOTO 1740
1720 GOSUB 959: IF PR < @ OR PR > 510 THEN 1710
173Q REM PRINT LOOP STARTS HERE
1740 Al =BS +PR:A2=C2: GOSUB 44: POKE PC. NU;
POKE PC +1, INT ((BS + PR) / C2): CALL ID
1750 Al = PEEK (BS + PR) :A2 = 32: GOSUB 440: iF
NU < > C3 THEN 1790
176QHTAB 27: PRINT "(" : :NU=PEEK (BS +PR+1)
IF NU < C7 THEN 1780
1770 PRINT NU - 254; "
1780 PRINT "+" :NU +2;
179 PR=PEEK (LE) +PR+1: IF PR> C5 THEN PRINT
PRINT D$; "PR#O" ; PRINT ; INPUT "*****
PLEASE* PRESS* <RETURN>* " ; ABS: GOSUB
1920: GOSUB 550: CALL PB: GOTO 250
1800 |F PEEK (KB) < C7 THEN 1740
1810 REM PRINT LOOP END - |F YOU'RE HERE KEY WAS
PRESSED
1820 KY = PEEK (KB); POKEKS,0: IF KY < > 16@ AND
KY < > 14] THEN 1740: REN SPACE OR
RETURN?
1830 GOSUB 120; IF KY < > 141 THEN 1740
184 GOSUB 1920: GOSUB 550: CALL PB: GOTO 250
1850 REM PRINT HELP TABLE
1860 PRINT ; TEXT : HOME ; HTAB8: PRINT COMMAND’
TABLE:" : PRINT : HTAB4: PRINT "A’~*TOGGLE*
ASC! | /HEX*DISPLAY" ; HTAB 4: PRINT "B*~*
TOGGLE* ACT | VE*BUFFER*HALF"
1870 HTAB 4; PRINT "C*-" TOGGLE* CONTROL* CHAR®
PRINT" ; HTAB 4: PRINT "D'-*SET*OR| VE"
HTAB 4: PRINT “EDIT® (ESC*TO* END) "
1875 HTAB 4; PRINT "F*—“FIND°BYTE* PATTERN"
1880 HTAB 4: PRINT "H* -* TOGGLE* ASCII" EDIT*
HI-BIT" : HTAB 4: PRINT "|, J.K.M*~"MOVE*
CURSOR® IN* FIELD" ; HTAB 4: PRINT " 5
OISASSEMBLE*BUFFER" ; HTAB 4: PRINT "
OUTPUT*SCREEN*TO* PRINTER®
1890 HTAB 4: PRINT “P* -* POSTION* CURSOR* IN*
FIELD" : HTAB 4: PRINT "R*~*SET*BLOCK*THEN?
Re ees” (RETURNS USES!
DISPLAYED* VALUES)" : HTAB 4: PRINT "S*-*
SET’ SLOT" ; HTAB 4: PRINT "U* -* UPDATE*
COMMAND*L 1NE*DEC/HEX"
1900 HTAB 4: PRINT "W*-*WR|TE*BLOCK*TO"DI SK"
HTAB 4: PRINT "X*-*EXiT*TO*APPLESOFT”
HTAB 4: PRINT "Z* -* ZERO* RELAT|VE* BYTE*
GOTO 1799
Ort
COUNTER" : PRINT "CTRL*L/N*~*LAST/*NEXT*
SECTOR"
1910 VTAB 24: HTAB 8: PRINT "PRESS*ANY*KEY*TO*
CONTINUE*" ;: GOSUB 460
1920 POKE 34.0: HOME : GOSUB 320: VTAB 22: GOSUB
320: RETURN
1930 REM POKE ML 1/0
CONSTANTS
1940 IF PEEK (774) < > 32 THEN PRINT CHR$ (4)
“BLOAD*OBJ PROEDIT. A$300"
1945 PRINT CHR$ (4) "BLOAD* OBJ .PROED.FIND
AS8FOO"
1948 DIM MB(7. 2): REM MAX BLOCK PER DEVICE
INIT VARIABLES. SET
COMPUTIST #55
May |
1950 FM = 768:1M = 771:EF = 772:CT = 773:PD = 50 - $c899 1188 - $8001 630 - $1546 1820. - SDAFE
774: CM = 783:UT = 795: BK = 798:HP = 800: DP 60 0 - SFFO5 1199 - $5029 649 © - $0439 1830 - sB4C2
= 806: PB = 826:BU = 855 70 SA3BF 1200 - $6517 650 - $064A 1849 - $7308
1960 1D = 63696:LE = 47:PC = 58:RD = 128:WR = 80 - $A990 1218 - $302A 660 = - $2E21 1850 - $77B8
129:BS = 36864:KB = - 16384:KS = - 16368 82 © - $8259 1228 - SAA93 670 - $24F3 1860 - $47F7
1965 NB = 36832:SB = 36834:EB = 36836:FB = 85 - S4A91 1238 - SEF89 680 - $128F 1870 - $1348
36838: RS = 36840:S1 = 36848 90 «= - $5FO0 1249 - $7C93 690 - $8988 1875. - $FDCF
1968 $9 = 36608: FOR | = 1107: FORJ = 170 95 = - $3768 1250 - SOFC2 700 ~ S15CE 1880 - $AASC
2:MB( J) = 279: NEXT J: NEXT | :MB(5, 1) = 97 - $4816 1260 - SDA45 710 - SEE54 1890 - $7F53
1599: REM SET DEFAULTS FOR MAX BLOCKS 100 - SO76F 1278 - $2302 720 - sCl9D 1900 - $AFD8
1970 Cl = 4096:C2 = 256:C3 = 16:C5 = 511:C6 = 110 - SELF7 1280 - $3807 730 - scesc 1910 ~ $1005
255:C7 = 128:C8 = 100:C9 = 10:D$ = CHRS 120 - SOA5A 1290 - $8002 740 - $452A 1920 - $A264
:1$-=CHRS (9) 130 ~ $9845 1308 - $700A 750 - $A575 1930 - $7360
:DR = 1:HB=@:HX = 1:HF = 1:HT = 1:VT 140 - $OBFA 1310 - $9342 760 ~ $3028 1940 - $9390
= OBL = O:BF = @:CC = O:CF = O:HES = 150 - $A678 1320 - $A803 770 ~ $0240 1945 - SACF8
"123456789ABCDEF” : GOSUB 1860: GOTO 530 160 - SF69A 1330 - $82A2 780 - $394¢ 1948 - S42E1
2000 REM SEARCH FOR HEX BYTE PATTERN 170 - $F689 1340 - $F2CF 790 ~ $F36A 1950 - SECES
2010 VTAB 24: HTAB 27: FLASH : PRINT CHRS (7) 180 - $OF21 1350 - $C107 800 - $702A 1960 - $2471
">>FINDE<" ):ED = 1 190 - $3348 1360 - $6AA2 810 - $6480 1965 - $5296
2020 SE = 1: VTAB 22: HTAB 1: FLASH : PRINT 200 - $0157 1370 - $FA56 820 - $353C 1968 - $a8cc
"START" = NORMAL ; GOSUB 980:B1 = BL 210 - $10BL 1380 - $F498 830 - $1178 1970 - $F339
2030 VTAB 22: HTAB 1: FLASH ; PRINT "END**” 220 - SIO1E 1390 - $0709 849 - SEDI 1980 - $F702
NORMAL : GOSUB 980: B2 = BL 230 «= - SDC8B 1400 - SBF4F 850 = - $D75D 2000 - $4039
2040 VTAB 22: HTAB L: PRINT "*****" 249 - S9060 1410 - $02C5 860 - SOFBE 2010 - $2638
2050 POKE 34,0; POKE 35,21: HOME : PRINT "ENTER® 250° - S53ED 1420 - $512C 878 - SC21D 2020 - $85A5
SEARCH* PATTERN® (16*BYTES* MAX) " 260 - $6117 1430 - $E23F 880 - SOF73 2030 - $5CAE
2060 POKE 35, 24: HT = 1: VT=0:0BS = BS:BS = S1:PT 270 =~ ScoDd 1440 - $98FD 890 - S9AC6 2040 - SEBBC
=0 280 - $5750 1450 - $8A3B 909 - scC2B 2050 - SD18A
2070 OF = 0:BF = 0 290 - $9026 1460 - $ED3A 910 - $680C 2060 - SABIE
2080 |F PT > = 16 THEN 2100 300 - $A89B 1470 - $1006 920 - $5E66 2070 - $0781
2090 GOSUB 340: GOSUB 600: GOTO 2080 310 - $0F91 1480 - $6448 936 - SBIEL 2080 - $6040
2100 ED = 0:SE = 0:BS = OBS: ONERR GOTO 1080 320 - $F303 1498 - $6905 940 - $E863 2090 - $8901
2110 |F (PT < 1) OR (Bl <@) OR (B2 < B1) THEN 330 - SOFSO 1500 - $8926 950 - SAMDA 2100 - S29A2
2190 340 - $4898 1510 - $8846 960 - S9ESA 2110 - $7429
2120 POKE NB. PT 350 - $04gc 1520 - $6490 970 - S9FFO 2120 - $9967
2130 POKE $B +1. INT (BL / C2) 360 - $7961 1530 - SEECI 980 - $3280 2130 - $1748
2140 POKE $B, INT (Bl - ( INT (Bl /C2) * C2)) 370 - $813F 1540 - $1801 990 S4FBF 2140 - SA031
2150 POKE EB +1, INT (B2 / C2) 380 - $8518 1550 - $B4B8 1008 - $F627 2150 - $1527
2160 POKE EB, INT (B2 - ( INT (B2/ C2) * C2)) 390 - SE84D 1560 - $25F7 1010 - $9F16 2160 - SE961
2170 POKE CN.RD: CALL $9 400 - $8892 1570 - $C245 1020 - $4874 2170 - $553F
2180 IF PEEK (RS) = 0 THEN 2230 410 - sDAD2 1580 - S4CD1 1030 - $2BCE 2180 - $9830
2190 GOSUB 1920 420 - S440 1590 - S6EIC 1040 - SCBCC 2190 - $0177
2200 VTAB 10: HTAB 10: PRINT "BYTE*PATTERN‘NOT* 430 - $1930 1600 - SA191 1945 - $1006 2200 - $CCEA
FOUND" : GOSUB 1910: GOSUB 600 449 - SO61A 1616 - $2248 1050 - SDF3B 2210 - $4518
2210 BL = 0:BF = O:PT = :VT = O:HT = 1: POKE 450 - SFAI7 1620 - $9A61 106 - SFE7D 2220 - $078D
BU. 144 + BF 460 - $0995 1630 - $45DA 1070 - $796A 2230 - $3003
2220 GOSUB 550: GOSUB 1060: GOTO 2290 470 - $6538 1640 - $837F 1980 - $2C12 2249 - SAFC
2230 BL = PEEK (BK + 1) * C2 + PEEK (BK) 475 - SEDC 1650 - $C1BE 1990 - $8ACO 2250 - $93DF
2240 BF = PEEK (FB + 1):PT = PEEK (FB) 430 - $6100 1660 - $03A0 1100 - $7192 2260 - $44B4
2250 IF (PT +1) >= PEEK (NB) THEN PT = PT - PEEK 490 - $8926 1670 - $966A 1119 - $1CEC 2270 - S9EFC
(NB) + 1: GOTO 2270 500 - $5458 1680 - S6FE8 1120 - $8001 2280 - scO2F
2260 IF BF = | THENBF = @.PT=PT - PEEK (NB) +C2 510 - SDOEF 1699 - $0076 1130 - $3788 2290 - SBICC
#1 520 - $6298 1780 - SEBLO
2270 VT = INT (PT / 13) :HT = PT - (INT (PT / 13) 530 - SF97L 1710 - SADS2
#13) 41 540 - SBAL2 1720 - $B140 OBJ.PROEDIT
2280 POKE BU, 144 + BF: GOSUB 530: GOSUB 550 550 - SOEOF 1730 - $4405 0300: 01 99 00 0 00 00 26 6C $5084
2290 POP ; GOTO 2290 560 - SEB22 1749 - S$OECI 0308: 03 D0 08 60 20 00 BF 80 $98FA
570 - SD4F4 1750 - $D4c3 0310: 1A 03 60 8D 04 03 20 3A $7055
Checksums 580 - SDCAT 1760 - $0781 0318: FF 60 83 60 00 90 00 00 S6COB
590 - $5482 1770 - $5E30 0320: AD 03 83 4C 30 03 AD O3 SCEDB
19 - $BADD 1140 - $6960 609 © - $8509 1780 - $086C 0328: 03 AE 00 03 E0 02 FO 04 S6CF7
20 - $9813 1150 - $0109 610 - SCFO9 1799 - $B3C5 0330: 20 DA FO 60 09 80 20 ED $0150
30 $4038 1168 - $6320 620 - $5204 1880 - SAEIA 0338: FD 60 A9 O1 85 25 20 22 S69F8
49 $AD92 1178 - $9833 625 - SFEC2 1819 - $F5D1 0340: FC A9 0 85 24 8D 82 03 S6E63
May COMPUTIST #55 17
9348: AQ GD 8D G1 83 AS AB 20 $52EC
9350: ED FD AE 92 03 BD 08 90 $8878
9358: AE 00 03 EO 02 FO OB 20 $9A87
9360; DA FD A9 AG 20 ED FD 4c $2051
9368 : 8B 03 09 80 C9 AD 16 DE $C5DC
9370: AE 05 03 EO 08 FO 05 E9 $D1F2
9378: 80 4C 7E 03 A9 AE 20 ED $BO6F
9380; FD A9 AQ 20 ED FD AS AO SLABS
0388: 20 ED FD EE 62 03 FO 08 $C1BD
9390: CE 81 03 DO BD 4C 48 03 $7072
0398: 20 9C FC E6 25 20 22 FC $3E56
O3A0: AQ 16 85 22 60 $5858
OBJ.PROED.FIND
8FO0: AQ FF 8D E8 8F A9 00 8D $2243
8FO8: El 8F A9 90 8D 2E 8F AD SFF45
8F10: E2 8F 8D LE 03 AD E3 8F $55BF
8F18: 8D 1F 03 20 06 03 AD 04 $5894
8F20: 03 FO 01 60 AC El 8F BD $8349
8F28; FO 8F A2 00 DD 00 90 FO $4003
8F30; OC CO 00 FO 11 AB 00 BO $0202
8F38: FO BF 4C 2C 8F C8 CC EO $6C70
8F40; 8F FO 39 BO FO 8F E8 DO $5909
8F48; E3 AD 2E 8F C9 90 DO OB $1A69
8F50; 09 81 8D 2E 8F B9 FO 8F $B40C
8F58: 4C 2C BF BC El 8F AS 90 $8842
8F60: 8D 2E 8F AD 1E 03 CDE4 $E4C9
8F68: 8F AD 1F 03 ED E5 8F BO $9270
8F70; 1B EE 1E 03 DO 03 EE IF $5623
8F78; 03 4C 1B 8F A9 OO 8D E8 $DB14
8F80; BF BE £6 BF AD 2E 8F 29 $OA32
8F88: 01 8D E7 8F 60 SO9AD
Aufderheide
Softkey for...
Estimation
Micros for Micros
@ Requirements
(0 Super [OB 1.5
U Sector Editor
Estimation, by Micros for Micros, is a
great little program to help teach young kids
how to estimate. The problem with it, of course,
is that it is protected. Now. a protected disk for
aged kids is an invitation to disaster.
and bit copiers would not touch the disk. What's
a person to do? Have you thought of how many
ways an elementary aged student can
accidentally make a disk so that it never works
again?
A boot of the original did not sound quite
right. So I booted it on my Ile with a Trak Star
installed. The program loaded DOS. went to
track $03.5. then went to track $08. As a
matter of fact, the head never read past track
$13. Interesting.
The next step was to break out the CIA and
look at track $@8. Both data and address
epilogues were FFFF, and the checksum was
not quite right. A look at track $08, sector $00
showed a VTOC that pointed to a catalog sector
at track $08, sector SOF. A look at track $08,
sector SOF showed that all programs seemed
to be located from track $@6 to track $OD. A
random check of the rest of the disk showed
garbage. Track $03.5 appeared to be accessed
only during boot up. Looked like a nice simple
job for Super JOB.
I initialized a disk with ProntoDOS, and
installed a controller that moved tracks $06 to
track $0D to my new disk. Putting away the
original, as 1 thought I was done, I then went
to work on my copy to make it as normal as
possible.
The first job was to break out my sector
editor and read in the VTOC from track $08,
sector $00, change the second byte from $08
to $11, and write it back out to track $11,
sector $00. I read in track $O8, sector $OF
and again changed the second byte to $11, and
wrote the sector to track $11, sector $OF. By
doing this, I had told their VTOC and catalog
that it was relocated on the normal catalog track
At this point I felt great! Booting the copy.
Iran what I thought was the correct program,
STARTMENU (seems logical, right?). It did
not work, The Hi-Res text did not look like text,
but garbage. So I loaded STARTMENU and
looked. At line 21 there was a CALL 2048,
2048? That's the normal location for an
Applesoft program! Line 12 was HGR, so there
was no program at $2000. That would mean
that there was code at $800 that the program
called, and the program must be relocated above
Hi-Res Page |
A check of memory showed that starting
at $800 we have code that sets up the shape
tables that the program uses. Finally, at line 15.
the program PEEKed location 254 for value
255
The next step then was to capture the shape:
tables, and write a HELLO program that
relocates Applesoft programs above Hi-Res
Page | and puts 255 into location 254 (under
the assumption that that location is checked by
other parts of the program!)
So dig out that original again! Booting the
original disk. I jumped into the monitor, and
moved the machine code to $2000 where it
would be safe (2000<800.1999M) and
booted my copy. I then re-entered the monitor
(CALL -151), moved the code back where it
belonged (800<2000.3199M) and saved it on
the copy (BSAVE SHAPES, A$800, L$1 199).
Then I wrote the HELLO program at the end
of this article which relocates Applesoft
programs above Hi-Res Page |, sets location
254 to 255, loads SHAPES at $800, and runs
the program STARTMENU. and saved it on
my copy (SAVE HELLO).
18
COMPUTIST 455
A quick boot, and it worked! I now had a
safe copy of Estimation, and need no longer
worry about bombing my original, For those
of you ina hurry, here's the cookbook:
[1_] Initialize a disk with a fast DOS.
INIT HELLO
[[2 J Install the controller at the end of this,
article and copy tracks $06 to SOD to your
copy.
[3] Break out your sector editor and read
track $08, sector $00 from your copy. Change
the second byte from $@8 to $11. Write the
sector out to track $11, sector $OO or your
copy.
[4] Read track $08, sector $OF from
your copy. Change the second byte from $08
to $11. Write the sector out to track $11, sector
$OF
[[5_] Boot your original and break into the
monitor. Move the code to a safe place:
2000<800.1999M
Now boot your copy and move the code back:
800<2000.3199M
Save it on your copy
BSAVE SHAPES, A$800, L$1199
[[6_] Enter the Applesoft program at the
end of this article and save it on your copy:
SAVE HELLO
[7] Put your original away, and enjoy
your copy!
Controller
1000 REM ESTIMAT|ON CONTROLLER
1010 TK = 6:LT = 14:ST=15;LS=15:CD=WR: FAST
ed
1020 POKE 47426 , 24
1030 GOSUB 490; RESTORE : GOSUB 170; GOSUB 610
1049 GOSUB 490; GOSUB 230: GOSUB 610: IF PEEK
(TRK) = LT THEN 1060
105@ TK = PEEK (TRK) :ST = PEEK (SCT) : GOTO 1030
106@ HOME ; PRINT "COPY*DONE" ; END
1070 DATA 255.255, 255.255
Controller Checksums
1000 - $3568 1040 - $0000
1010 - $0cad 1958 - $C320
1020 - $331B 1060 - $8C73
1030 - $8DF8 1078 - $8246
HELLO
10 IF PEEK (103) + PEEK (104) * 256 <> 16385
THEN POKE 103, 1: POKE 104. 64: POKE 16384
@: PRINT CHRS(4) “RUN HELLO*
20 POKE 254. 255: PRINT CHRS(4) "BLOAD SHAPES
A800": PRINT CHRS(4) "RUN STARTMENU"
May
[1] Boor your DOS 3.3 system disk
a es
Question: I have a question concerning
John Wiegley’s article about using the cassette
jacks for “Better Sound.’ How can you get better
‘sound if you can barely hear anything from your
headphones?
Somebody, anybody, PLEASE send in a
schematic diagram for an amplifier circuit!!
Softkey for...
[£2] Puta blank disk in the drive and enter:
FP
INIT *HELLO,V1
DELETE ~ HELLO
The Vi will give it a volume number of
O01 which is the same volume number as the
original. Put this disk aside, you will use it later,
[3] Boot the original Castle Wolfenstein
HT disk and after your drive reads the first 3
tracks reset into the monitor
[4] Move the RWTS to a safe location:
1900<B800.BFFFM
Perry Mason The Case Of
The Mandarin Murder
Telarium
[4] Use any fast copy program to copy all
four sides.
[2] Sector edit side one of the copy you
just made.
Trk Sct Byte(s) From To
$13 SOB $5A-5C AD 82CO 20 29 1C
Sofikey for...
The Hobbit
‘Addison-Wesley Publishing Company
The softkeys in COMPUTIST #34 and
COMPUTIST #35 did not work on my copy
Neither side could be copied using a fast copy
program, including COPYA as suggested in the
softkeys, Modifying COPYA, however. did
work
([1_] Boot your DOS 3.3 system disk
[2] Tell DOS to ignore errors and use
COPYA to copy both sides of the original disk
POKE 47426,24
RUN COPYA
[3] Make the following sector edits to side
1 of the copy
5_] Put your slave disk in the drive and
boot it.
“6 | Insert your IOB disk and save the
RWTS:
BSAVE RWTS.CASTLE,A$1900,L$800
[7] Install the controller listed below into
Super TOB and copy the original to the slave
disk. When asked, enter N, so as not to format
the disk while running the controller:
Controller
1000 REM CASTLE WOLFENSTEIN CONTROLLER
1010 TK = 3:ST = O:LT = 35:CD = "WR
102071 =TK: GOSUB 490 : GOSUB360: ONERR GOTO 550
1030 GOSUB 430; GOSUB 100: ST = ST +1: IFST< DOS.
THEN 1030
1040 IF BF THEN 1060
1050 ST = 8:TK = TK +1; IF TK < LT THEN 1030
106 GOSUB 490: TK = T1:ST = 0: GOSUB 368
1070 GOSUB 430: GOSUB 100:ST =ST+1: IF ST < DOS
THEN 1070
1980 ST=8:TK=TK+1
1070
1090 IF TK < LT THEN 1028
1100 HOME ; PRINT “COPY*DONE" : END
10010 IF PEEK (6400) < > 162 THEN PRINT CHRS
(4) "BLOAD*RNTS .CASTLE.A$1900"
IF BF =@ AND TK < LT THEN
Controller Checksums
1000 - $3568 1968 - $9008
Trk Sct Byte(s) From _ To = 1910 - $3565 1078 - $9800
$00 $01 $2A-2C 4C 2402 EAEAEA 1020 - SE1E8 1080 - $7422
a = aa 1030 - $F7E9 1090 - $2082
1949 - SD35A 1100 - $1A55
Softkey for... 1050 - SEBSB 10918 - $7F32
—— ae —
Castle Wolfenstein
Muse Software
I was not able to deprotect this using any
of the softkeys in COMPUTIST. If you had the
same problem this softkey should work.
[ May
‘You can put fast DOS on this copy if you
want to.
NOTE: The original disk is a 13 sector
disk, so when the controller reads it. it will
“BEEP” three times on each track. This is fine,
the copy will be OK
COMPUTIST #55
Legs Softkey for...
Leisure Suit Larry in the
Land of the Lounge Lizards
Sierra On-Line
(-4_] Use any fast copy program that can
ignore errors and copy both disks.
[2] Edit side one of the copy.
Block Byte(s) From To
$OA5 $159 22 AF
For Your Information
If you have the Print Shop Ilgs try the
following
Boot your disk, and when you get to the
first screen after the title se move down to
“Exit Program". Hold down the OPEN-
APPLE key and double click your mouse to exit
the program.
‘The second thing to try is to change the date
in the control panel to December 25. Save the
change and then boot your disk. Look at the
first screen after the title screen, up at the top
where it usually says “*The Print Shop". I won't
tell you what will happen in cither case, but I
think you will like the surprises that Broderbund
put in the program. If anyone knows any others,
please send them in.
In response to the letter from Bud Meyers
that appeared in COMPUTIST #52. First, 1am
sorry that he seems to have had so much trouble
in getting the softkeys to work for his software,
but to say that the instructions leave ‘‘a great
deal to be desired"’, especally in light of the
fact that he says that he is somewhat
knowledgeable in computers, makes no sense
to me. When I first subscribed to
COMPUTIST. about 11 months ago, I was a
complete novice as far as computers go. Since
then, [have gotten all of the issues going back
to COMPUTIST #1. 1 can honestly state that
I have yet to sce an issue of COMPUTIST that
has not had a softkey that would not work for
at least one title that I have, either as the softkey
was written, or with me making some minor
modification to it, such as looking for the bytes
to edit at another spot on the disk. changing a
line in the Super IOB controller, ete:
He also states that he doesn't care if his
copy retains the protection. Again, if he is at
least somewhat knowledgeable, he must realize
the advantages a deprotected copy offers over
one that is protected. I cannot believe that Mr.
Meyers could be content with the bit copy
programs if he is unhappy with the softkeys.
I would say that my failure rate in using a
softkey on the title that it was made for is less
than S percent. I know of no copy program that
19 |
can come close to matching this and even if they
could the resulting copy would still be
protected
Rather than end on a critical note, I would
like to say that if Mr. Meyers would care to
send in a list of the software that he has had
trouble in deprotecting, I am sure that one or
more of the COMPUTIST readers, including
myself, will help him if we can.
John R.
Putting Flashcale
on an 800K Disk
@ Requirements
(J Any Apple
(7 Ramfactor(AE)
1) Sector editor
1 Flasheale program disk
In COMPUTIST #23, Doni Grande told us
how to deprotect Flashcale. Since then the
800K disk has arrived and I wanted both
program and data on one disk. I like the
program because it is quick and dirty for simple
tasks.
Alas, Flashcalc would not allow you to
install it on the 800K disk. Flashcale does
allow you to install the program on the hard
disk. Since a ram disk is just like a hard disk,
I tried installing the program on the Ramworks
card in my Ie. Again, the program would not
install itself. I next tried the Ramfactor. To my
surprise, the program installed itself on the
card, All I had to do was transfer the files to
an 800K disk and I would be ready. Wrong.
Even though the programs that were needed to
run Flashcalc, FC.SYSTEM AND FC.PROG,
were on the 80K disk. the program would not
20.
Luckily, I had COMPUTIST #23. As I
studied the info from the article. I was able to
find how to make Flashealc run from the 800K
disk.
Cookbook
4 Follow instructions and install
Flashcale on the Ramfactor or similar card
[2_] Transfer the files FC.SYSTEM and
FC.PROGRAM to a directory on the 800K
disk. (I called my disk /PLASH and the
directory /FLASHCALC.)
[3] To make the sector edits easier, copy
the file FC.SYSTEM to a 5-1/4" blank disk.
The file occupies two sectors
[4] Using a sector editor you must change
a valuc in one of the sectors (1 used a DOS 3.3
sector editor) and the pathname in the other.
| 20
((5_] ff you put FC.SYSTEM on a blank
disk, perform the following sector edit:
Trk Sct Byte(s) From To
$00 Sai SFE 18 38
[6] In the second sector track $0, sector
SOF you must change the pathname to that on
your 800K disk. This starts at byte $B1. The
byte at $B1 is the value for the length of the
pathname. If this value is wrong, the program
will not run
Also, do not worry about overwriting the
values after SB1. These bytes are reserved for
the pathname. The programmer put data there
to fool you. All bytes must be in HEX. (F=46,
L=4C, A=41, ete.)
(7) Example of entering pathname:
pathname FLASH/FLASHCALC.
# of letters = 16 (Do not count the final **/*
as part of the length.)
HEX yalue to put at $B1 = 10
The complete entry would start at SB] and look
like: 10 2F 46 4C 41 53 48 2F 46 4C 41 53 48 43 41
4C.43 2F 80. After the last **/"", enter 80 to mark
the end.
8] Write the sector back to the 5-1/4°*
disk.
[3] Copy the file FC.SYSTEM back to
the 800K disk into the proper directory
The FC.SYSTEM file will now run
Flashcale. You can put Flachcale in whatever
directory you want as long the correct pathname
is in FC.SYSTEM
I wrote Paladin Software several times to
see if they would help. There was no answer
to my letters. Where have all the software
companies gone?
Stanley Planton
A Copy-protection Scheme for
ProDOS
@ Requirements
_| EDD 4.N
3 COPY II Plus ProDOS, or similar utilities
C1 Sector editor
[1 Blank Disks
{1 A ProDOS file to be protected
One result of my article in COMPUTIST
#51 was a sarcastic remark in another
publication. to the effect that I'm out of step
with the norm. Everyone else is interested in
the REMOVAL of copy protection, while I
seemed to be advocating the creation of new
schemes. Oh. well. I guess they missed the
COMPUTIST #55
“know your enemy”
point of the exercise.
Actually, sometimes the protection scheme is
more interesting than the program it protects!
There is a request on page 33 of
COMPUTIST #52 from a Mr. David Erickson
for a way to protect in ProDOS. While I can’t
implement his preferred epilogue check, I have
a way to copy protect ProDOS files, based on
my COMPUTIST #51 article, again using EDD
4.N to do the real work,
A brief explanation of the relationship
between DOS and ProDOS seems to be called
for by way of introduction. When the gang at
Apple designed ProDOS, they did not start with
a clean sheet of paper. ProDOS seems to be a
refinement of the SOS that they developed for
the Apple III, which in turn was an evolution
of DOS 3.3.
While there are many differences between
DOS 3.3 and ProDOS, there are even more
similarities. The two systems share general
track and sector formats, and run in the same
drives. In fact, there are many apparent
similarities in the way that they access and store
some of the address and data identification bytes
found on the disk. This latter similarity can give
us a way to protect ProDOS files that is virtually
identical to the protection of DOS 3.3 files I
explained in COMPUTIST #51. We can make
the address headers on the disk vary from D5
AA 96 to another value, such as D4 AA 96,
without a great deal of effort. This will ‘shut
down’* such popular copying programs as
Locksmith Fast Copy. Disk Muncher, and
COPYA, since they can no longer determine
the start of a sector on a track
Most of us are used to entering the monitor
after booting a DOS 3.3 disk, and making
changes to memory locations in order to
eliminate error-trapping or byte-recognition
routines, What should be realized is that the
original values are loaded from the disk, and
we can make the same changes to the DOS on
the disk. For example, if we wish to tell DOS
to ignore the first byte of an address header,
we can enter the monitor. change locations
SB954-B955 to 2900 and return to BASIC with
the task accomplished, We could also search
the disk for the string 10 FB C9 D5 and replace
the C9 05 with 29 00. accomplishing the same
end. When this disk is booted, the DOS loaded
would ignore the first byte of the header,
ProDOS uses the same bytes to accomplish
the same thing! In fact, there are many parallels
between the ways the two operating systems
read individual sectors.
To protect a ProDOS disk from being casily
copied. follow these steps:
[1_] Format a ProDOS disk and copy
ProDOS to the disk
Most versions of ProDOS will use tracks.
$01-SO4 if they are the first file on the disk,
so let's keep ProDOS there.
May
[[2_] Copy the file(s) to be protected to this
disk. Get a map of the disk, using COPY 7
Plus, in order to verify that the next file(s) will
begin using tracks $@5-$22. These will be the
tracks we'll protect with EDD.
[2] Write protect this disk. EDD likes to
have the “‘original’’ protected.
[([4] Boot up EDD 4.N, and place the disk
you just write-protected into drive #2, and a
blank into drive #1.
((5_] Copy tracks $00 - O4 with
NORMAL settings. Note that EDD doesn’t use
hexadecimal in its track numbering!
The following is a reprise of my
COMPUTIST #51 approach:
There is a trick to entering values into these
EDD routines: you must use the spacebar
between MOST entries; only use the
following the value entered into the
#00 instruction and the final value. I know that
this sounds unclear, but try it.
Remember, in COMPUTIST the required
(SPACE) is indicated by “and (aeronn) must
be pressed after the command line.
([6_] From the main menu of EDD, select
the “‘change parameters’’ option
[27] From the next menu, select the
“reprogram prewrite’’ option.
(BJ Enter the following:
00=20
20° 31° D5* AA* 96° 36° D4* AA* 96° 21°10
a to quit
Now go back to the main menu of EDD
and copy the rest of the tracks ($05-34). EDD
should produce tracks that have D4 AA 96 for
headers, which is what we want.
[2] Try to boot the disk. It should boot,
but you should also get an error message when
ProDOS tries to read the first ‘“SYSTEM”’ file.
You did remember that ProDOS requires a
“SYSTEM” file, didn’t you?
Scan the disk for 10 FB C9 05 and
change the C905 to 29 60.
T use the sector editor of COPY II Plus to
do this, but many other programs will do.
Remember to write the changes back to the
disk! For many versions of ProDOS, the bytes
will be located in track $04, sector $OA,
starting around address $A8 (there may be some
variation depending on which of the
incarnations of ProDOS you're using).
You should now have a disk with normal
catalog and ProDOS tracks, but which has a
degree of copy protection.
I'd like to pose a challenge/question to
others: just how similar ARE these routines that
DOS 3.3 and ProDOS seem to share? Are there
any other tricks that can be easily applied to
both?
Softkey for...
Random House Media
Volume 1 and Volume 2
This software includes most packages sold
Showing the first 100000 of 251390 characters.