Text content (OCR)
For The Serious User Of Apple ][ Computers
A NAA A IRN YER EE SEES ah SE a
BULK RATE
U.S. Postage
Hardcore COMPUTIST —.,
PO Box 110846-T Phe
Tacoma, WA 98411
SIMPLY- SOFTWARE
DISCOUNT SPECIALS ON APPLE SOFTWARE ALL PRICES 30% OFF
LIST SPECIAL
LIST $2000 SPECIAL $14.00 LIST $99.95 SPECIAL $27.97 ASCII Express Pro DOS 512995 $90.97
FONTRIX Art & Tech, App. FONTRIX Foreign Lang. Brain Game Learn to Type Basic Bullding Blocks $79.95 $ 55.97
FONTRIX Asst. Fancy Sets Alphabets Bulld a Book About You Lucky's Magic Hat BPI Job Cost
FONTRIX Bus. & Cort. Sets FONTRIX Letter Forms 8 Gash Receipts Journal Master Match Bpl Spat Reediag
FONTRIX Headline 8 Dex Poster Sets Chipwits Mines of Qyntarr Creative Writer Filer Calc
Sets Tip Disk #1 Gompuzzier Reading Comprehension Hata Factroy 6
Typetaces Copy i+ Skills I Dragon F
0 Code Tie Tac'Show Dreadnaughts
LIST $26.95. SPECIAL $16.87 Expense Journal/Dist. Uptown Double Crostics Fontrix
Alice in Wonderiana Swiss Family Robinson Game Show Welcome Aboard Free Trader
Jelow the Foo reasure Island Willy Byte in the Digital Dimension et Rich
Wizard of Oz dat ~ Heeaatey bs
UST $4000 SPECIAL $28.00
LIST $29.50 SPECIAL $20.65 Heist Rogue
Beagle Bag Flex Type Robots of Dawn ‘Summer Games |!
Diskquik Frameup
Utility City UST $49.95 SPECIAL $3497
ron ‘Newsroom
LIST $29.95 SPECIAL $20.97 Decals Made Simple Ortho's Gardening heh
Gumbat Pronto DOS nts Gat Flch! Insurance Planning Print Shop Mastering the GRE
Silver fivia Fever Super Sports Get Rich! Real Estate Planning Questron Original Boston Computer Diet
Get Rich! Retirement and Reading Keys $C Macto Assembler
LIST $54.95 SPECIAL $24.47 Nanni urn of Werdna Scaae nen
Championship Loge Runner” Math Run cine Peeing Return ot Were Sensible Speier lor Pro DOS
gio eee Measurement Uptown Trivia Silicon Salad
Big Dug Shek Molecules and Atoms Tax Avanage
rol lop Keyboard ee
oe Eagle ped reco al LIST $59.95 SPECIAL $41.97 Tax Preparer 1985
F158 Sword of Ke Arcade Machine Dazzle Draw # California Supplement
Gemstone Warrior Turbo Tutor
Karatoka Universal File Conversion
Lode Runner Word ScrambleriSpelling
Tutor
Legal Office Manager
Lucky's Foreign Langu:
Magic Memory
Trivia Fev
LIST $395.00 SPECIAL $276.50 Trivia Savant
BPI Accounts BPI Inventory Control Turbo Toolbox $ 54.95
BPI Accounts Re BPI Payroll Versatorm $ 69.00
PLEASE make check or M.O. payable to: Simply Software Inc. * P.O. Box 36068 * Kansas City, Missouri 64111
Add $3.00 shipping, Missouri residents add 6 1/8% sales tax. Allow 4-6 weeks for delivery.
NOW
AVAILABLE
AT YOUR LOCAL
COMPUTER STORE
YOUR DISKS
ESSENTIA ATA DUPLICATOR II
EDO runs on Apple i I plus. He, lic and Apple It (in emulation mode) using one or two disk drives
EDD allows you to easily and quickly make back up copies of your
“uncopyabie” Apple disks. ll Since EDD has been preset to copy
the widest range of copy-protections possible, you just simply
boot up EDD, put the disk you want to copy in one disk drive and
a blank disk in the other (EDD will work using one drive also}
and in about 2 ¥ minutes a copy Is made. ll Unlike the “copy-
cards” which only copy “single load” programs, EDD coples
the entire disk. This would be similar to hooking up two
cassette recorders, playing from one, and recording to the
other. ll We have even included an option so you can check
the speed of your disk drives because drive speeds running
fast or slow can damage disks and cause other problems.
™ We publish EDD program lists (information about
copy-protected disks) every couple of months, which
EDD owners can receive. The current list is included
with the purchase of EDD. li The bottom line is this; if
EDD can't copy it, chances are nothing will.
Ask for EDD at your local computer store, of
nites $799 222s
sold for the sole
purpose of
making archival UTILICO MICROWARE
copies ONLY. 3377 Solano Ave., Suite #352
Napa, CA 94558 (707)257-2420
($5 foreign). Mastercard/Visa accepted
Prepayment required.
Don’t TYPE IN
programs that appear in
Hardcore COMPUTIST.
REMEMBER!
Always
prepared
whenever
Order the
Library Disk,
instead!
Six different text: ‘adventures
for the Apple.
All for only $20.00!
O_Please send me the EAMON Introductory Offer. I have enclosed
ntry
$20.00 plus applicable sales tax and shipping & handling. | understand
that Public Domain Software is not commercial quality and Is supplied
as-is and that orders are filled on double-sided disks.
‘Send check or money order (US funds dréwn on US bank) to: Computer Learging
Center, FO Box 110876+1C, Tacoma, WA98411. Washington residents add 7.8% sales
tax. Foreign orders add 20% shipping and handling.
Name.
Clty
VISA/MC
‘Signature.
Cou
Each month a Library Disk with all the programs that appeared in the
previous issue of Hardcore COMPUTIST Is prepared for SMART. READERS
like you who have better things to do with their time than type in program
listings.
for Applewtiter //e softkey). Checktoft source code.
VIOC Mover source code, Gnd RK’ Copy soures code
id
Hie
i
8
Disk No. 14 for Hardcore COMPUTIST 14 includes con-
trolers for SAT, Sea Dragon, Batman Decoder Ring Rocky's
Boots and infocom, Super 108 v12 (Standard & Swap con-
trollers) and BASIC program.
Disk No. 10 for Hardcore COMPUTIST 13 includes con-
‘rollers for Penguin Software, Snooper Troops. Electronic
Arts and DUM Software; CSaversoutce code, New DOS
3.3 Command (MREAD/MWRT) source code-cnd BASIC,
i
(Disk No. 8 for Hardcore COMPUTIST TI inckiées controller
{for Uta Ik Uitimaker § source code ‘and BASIC program.
Umpoere ina Cs Linesostia ONE WY) one!
R06 7 Yor Newidore CONEUNET Ao ehates con
for Arcade Machine and Minit Man Sensible Spetier
foot Tepaopcedn Maaetees. Peale seams code
Bank Street Writer Emulation program, Crunchist I source
code.
Disk No. 3 for CORE Games issue includes Destructive
Forces and Dragon Dungeon.
Disk No. 2 includes programs etc. for CORE Utilities issue
‘and Hardcore COMPUTIST 3 & 4.
Includes programs etc. for CORE Graphics issue
‘and Hardcore COMPUTIST 1 & 2.
Get each
Library Disk
for the
low price of
$9,95
Name
Signature
Send check or money order to: Hardcore COMPUTIST, PO Box TI0846-T,
Tacoma, WA 9641. Mos! orien shipped UPS pce ute shest cxcres
Woshington state residents add 78% safes text Foreign orders ack 20% shipping
handing US funcs Grown on US bane
SPECIAL! Order 5 Ubrary Disks (of your choice) and pay only $40.00.
95 (plus applicable tax & shipping) for each disk.
Disk No.
o
Please send me the Library Disk(s) | have marked below. | have
enclosed $9.
any of the articles published in Hardcore COMPUTIST detail the removal of copy
protection schemes from commercial disks or contain information on copy
and backup methods in general. We also print bit copy
protection
parameters, tips for adventure
games, advanced playin tnchukqocs (APT V4 heate game fanseig and any oxbor
information which may be of use to the serious Apple user.
Hardcore COMPUTIST also contains a center CORE section which focuses on information not
directly related to copy protection. Topics may include, but are not limited to: tutorials,
hardware/software product reviews and application and utility programs.
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 disk can usually be copied by
the use of Apple’s COPYA program (on the DOS 3.3
System Master Disk).
‘Commands and Controls: In any article appearing
in Hardcore COMPUTIST, commands which a reader
is required to perform are set apart from normal text by
being indented and bold. An example is:
PRIG
Follow this with the RETURN key. The RETURN key
must be pressed at the end of every such command unless
otherwise specified.
Control characters are indicated by being boxed. An
example is:
6@P)
To complete this command, you must first type the
number 6 and then place one finger on the CTRL key
and one finger on the P key.
Requirements: Most of the programs and softkeys
which appear in Hardcore COMPUTIST require one of
the Apple JI series of computers and at least on disk drive
with DOS 3.3. Occasionally, some programs and
procedures have special requirements. The prerequisites
for deprotection or programs will always be
listed at the beginning of the article under the
“‘Requirements:"’ heading.
Software Recommendations: The following pro-
‘grams (or similar ones) are strongly recommended for
Teaders who wish to obtain the most benefit from our
articles:
1) Applesoft Program Editor such as Global Program
Line Editor (GPLE).
2) Sector Editor such as DiskEdit, ZAP from Bag of
Tricks or Tricky Dick from The CIA.
3) Disk Search Utility such as The Inspector, The
Tracer from The CIA or The CORE Disk Searcher.
4) Assembler such as the S-C Assembler or Merlin/Big
Mac.
5) Bit Copy Program such as Copy ]{ Plus, Locksmith
or The Essential Data Duplicator
©) Text Editor capable of producing normal sequential
text files such as Applewriter ]{, Magic Window ][
or Screenwriter J{.
You will also find COPYA, FID and MUFFIN from
the DOS 3.3 System Master Disk useful.
Super IOB: This program appeared in Hardcore
COMPUTIST No. 9, No. 14 and The Best of Hardcore
. Several procedures will make use
of a Super IOB controller, a small program that must
be keyed into the middle of Super IOB. The controller
changes Super IOB so that it can copy different disks.
It is recommended that you get the latest version of this
Qpogras (nly sppeming in Handsre COMPLTEST No.
14).
RESET Into The Monitor: Many softkey pro-
cerhaes rece Uitte wae be able to exter te Apgie’s
system monitor during the execution of a copy protected
program. Check the following list to see what hardware
you will need to obtain this ability.
Apple J Ptus - Apple //e - Apple compatibles: 1) Place
an Integer BASIC ROM card in one of the Apple slots.
2) Use a non-maskable interrupt (NMI card such as
Replay or Wildcard.
‘Apple I{ Plus - Apple compatibles: 1) Install an F8 ROM
with a modified RESET vector on the computer's
motherboard as detailed in the “Modified ROM’s" article
‘of Hardcore COMPUTIST No. 6 or the “Dual ROM’s"”
article in Hardcore COMPUTIST No. 19.
Apple //e - Apple //c: Install « modified CD ROM on
/1e will void its warranty but the increased ability to
remove copy protection may justify it.
Recommended Literature: The Apple }[ Reference
Manual and DOS 3.3 manual are musts for any serious
$19.95; Assembly Language For The Applesoft
Programmer, Roy Meyers and C.W. Finley, Addison
Wesley, $16.95; and What's Where In The Apple,
William Lubert, Micro Ink., $24.95.
Keying in Applesoft Programs: BASIC programs
are printed in Hardcore COMPUTIST in a format that
is designed to minimize errors for readers who key in
these programs. To understand this format, you must
first understand the formatted LIST feature of Applesoft.
An illustration- If you strike these keys:
10 HOME:REMCLEAR SCREEN
‘a program will be stored in the computer’s memory.
Strangely, this program will not have a LIST that is
exactly as you typed it. Instead, the LIST will look like
this:
1@ HOME ; REM CLEAR SCREEN
Programs don't usually LIST the same as they were
keyed in because Applesoft inserts spaces into a program
listing before and after every command word or
‘mathematical operator. These spaces usually don’t pose
a problem except in line numbers which contain REM
‘or DATA command words. The space inserted after these
‘command words can be misleading. For example, if you
want a program to have a list like this:
10 DATA 67,45,54,52
you would have to omit the space directly after the DATA
‘command word. If you were to key in the space directly
after the DATA command word, the LIST of the program
would look like this:
1@ DATA 67,45,54,52
This LIST is different from the LIST you wanted. The
number of spaces you key after DATA and REM
command words is very important.
All of this brings us to the Hardcore COMPUTIST
‘LISTing format. In a BASIC LISTing, there are two types
of spaces; spaces that don't matter whether they are keyed
or not and spaces that must be keyed. Spaces that must
be keyed in are printed as delta characters (4). All other
‘spaces in a Hardcore COMPUTIST BASIC listing are
put there for easier reading and it doesn’t matter whether
you type them or not.
There is one exception: If you want your checksums
(See ‘Computing Checksums'” section) to match up, you
‘must not key in any spaces after a DATA command word
they are marked by delta characters.
Hexdumps: Machine language programs
‘are printed in Hardcore COMPUTIST as both source
code and hexdumps. Only one of these formats need be
keyed in to get a machine language program. Hexdumps
are the shortest and easiest format to type in.
To key in hexdumps, you must first enter the monitor:
CALL -151
Now key in the hexdump exactly as it appears in the
‘magazine ignoring the four digit checksum at the end
of each line (a “‘$"” and four digits). If you hear a beep,
you will know that you have typed something incorrectly
‘and must retype that line.
When finished, return to BASIC with a:
EO3G
Remember to BSAVE the program with the correct
filename, address and length parameters as given in the
article.
Keying In Source Code The source code portion
of a machine language program is provided only to better
explain the program's operation. If you wish to key it
in, you will need an assembler. The S-C Assembler is
used to generate all source code printed in Hardcore
COMPUTIST. Without this assembler, you will have
to translate pieces of the source code into something your
assembler will understand. A table of S-C Assembler
directives just for this purpose was printed in Hardcore
COMPUTIST No. 17. To translate source code, you will
need to understand the directives of your assembler and
convert the directives used in the source code listing to
similar directives used by your assembler.
Computing Checksums Checksums are four digit
hexadecimal numbers which verify whether or not you
keyed a program exactly as it was printed in Hardcore
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
programs appeared in Hardcore COMPUTIST No. 1 and
The Best of Hardcore Computing. An update to
CHECKSOFT appeared in Hardcore COMPUTIST No.
18. If the checksums these programs create on your
computer match the checksums accompanying the
program in the magazine, then you keyed in the program
correctly. If not, the program is incorrect atthe line where
the first checksum differs.
1) To compute CHECKSOFT checksums:
BRUNCHECKSOFT
Get the checksums with
&
And correct the program where the checksums differ.
2) To compute CHECKBIN checksums:
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,
and ending address of the file followed by a
woxx.x00 SY)
And correct the lines at which the checksums differ.
How-To's
Of Hardcore
Welcome to Hardcore COMPUTIST, a
publication devoted to the serious user of
arse J{ and Apple ][ compatible computers.
e contains information you are
not oot key to find in any of the other major
journals dedicated to the Apple market.
Our editorial policy is that we do NOT
condone software piracy, but we do believe
that honest users are entitled to backup
commercial disks they have purchased. In
addition to the security of a backup disk, the
removal of copy protection gives the user the
option of modifying application programs to
meet his or her needs.
New readers are advised to read this page
carefully to avoid frustration when
attempting to follow a softkey or when
entering the programs printed in this issue.
| Teg ACK 4, mack
Str itt
Address all advertising inquiries to Hardcore
COMPUTIST, Advertising Department, PO Box 110816,
‘Tacoma, WA 98411. Mail manuscripts or requests for
Writers Guides to Hardcore COMPUTIST, PO Box
110846-K, Tacoma, WA 98411.
Return postage must accompany all manuscripts, drawings,
photos, disks, or tapes if they are to be returned. Unsolicited
‘manuscripts will be returned only if adequate return postage
is included,
Entire contents copyright 1985 by SoftKey Publishing. All
rights reserved. Copying done for other than,personal or
internal reference (without express written permission from
th pubis) i probed.
The editorial staff assumes no liability or responsibility
for the products advertised in the magazine. Any opinions
expressed by the authors are not necessarily those of
Hardcore COMPUTIST magazine or SoftKey Publishing.
Apple usually refers to the Apple J{ or }{ Plus Computer,
and is a trademark of Apple Computers, Inc.
SUBSCRIPTIONS: Rates: U.S. $25.00 for 12 issues,
Canada $54.00, Moxico $99.00, Foreign Alrmal $60.00
Direct inquiries to: Hardcore COMPUTIST, Subscription
Department, PO Box 110846-T, Tacoma, WA'98411. Please
include address label with correspondence.
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.
Hardcore
COMPUTIST
Pabtce/Eathor: Chasis R. Haight Techni! Edhors: Gar Feteiin, Ry Deri
Circulation: Michelle Frank
‘& Graphics: Lynn Campos-Johnson
py emer (206) 474-5750 Printing: Grange Priming, Ic. Seale, WA
Hardcore COMPUTIST is published monthly, except December, by SoftKey Publishing, $233 $, Washington, Tacoma, WA 98409
Phone: (206) 474-5750
9 Apple }[ Boot ROM Disassembly
An in-depth look at the boot ROM, this article explains the 6 & 2 encoding method and the use of the disk
controller's hardware addresses. By Ray Darrah & Gary Peterson.
15 The Graphic Grabber v3.0
If you liked ‘The Graphic Grabber" for the Print Shop in Hardcore
COMPUTIST No. 17, you'll love ‘*The Graphic Grabber v3.0", This update
introduces several new commands and the ability to shrink hi-res areas to
fit into the graphic window used by The Print Shop. By Ray Darrah III,
22 Copy I+ 5.0: A Review
reenact Abe Peerage ca om oomcmatis saa
cons latest version of Copy }[ Plus. By Dr. Phillip Romine
SECTION
24 The Know-Drive- A Hardware Evaluation
A look at this relatively unknown Titan/Legend compatible RAM card (from
Abacus Enterprises, Inc.) that can simultaneously hold up to three application
programs. By Clay Harrell.
bie 25 An Improved BASIC/Binary Combo
“Where in the Apple can I safely put my machine code?"” you ask. How
4 about between DOS and its buffers? Read this article and put some little-used
= DOS space to good use. By James L. Parham.
26 Deprotecting Sargon III
Super JOB mows down another “‘unbeatable”’ protection scheme. And, with a backup of Sargon III, you'll
sleep better knowing that your original no longer has to face the computer glitch witch. By Kit LAU Yu-kit
& Polly CHAN Yuk-yi.
27 Softkey for: The Wizardrys
Are you tired of trying to find the correct bit copy parameters for Wizardry? Hardcore COMPUTIST is proud
to present a step-by-step method to remove the copy protection from Proving Grounds of the Mad Overlord
and Knight of Diamonds. By Taco van leperen.
DEPARTMENTS
4 weer
7 READERS’ SOFTKEY ov
& COPY EXCHANGE
Softkey for Sensible Software's, The Report Card
(Ver. 1.1)
By John Howard
Deprotecting Kidwriter
By Mike Stafford
29 ADVENTURE TIPS
RAMcard Secrets
inally, those of us without the
Integer firmware card and those
with Apple //e’s or //c’s can
“‘continue on’’ when the instruction
tells us to ‘Reset and enter the monitor”. Our
salvation is the article in Issue No. 16 by Ken
Greenlaw, “‘RAMCard’’. Unfortunately, in
ing to use RAMCard, I ran into a
problem that I couldn’t solve.
First of all, in attempting to use the program
XFER.BOOT, I do not always get a BOOT
upon typing CALL 768. After some
investigative work I noticed that the hexdump
and listing did not match. By changing byte
310 to 8D (was 9D) the program seemed to
work; at least it booted the protected disk.
Once the program disk had been booted, as
explained earlier, I then attempted to move
or transfer memory as described;
nothing happened. Can you tell me how to
determine what addresses to use with
RESTORE when transferrring between
auxiliary and main memory? My question
then: Is there a typo in the programs that are
listed? If so, what is the correct listing? I
would your response. As I said,
this utility is possibly the greatest
for owners of //e’s and //c’s that
has come through the media.
I would also like to request that the program
“Fun Bunch’’ be added to your Most Wanted
List of programs for backup. Fun Bunch is
published by Unicorn and is an extremely
interesting and educational program for
children. Unfortunately, it has the
disadvantage of being protected.
Larry Workman
Anaheim, CA
Mr. Workman: You are absolutely right.
There was a typo in the listing of
XFER.BOOT. Your fix of the typo corrects the
problem. As for your questions about using
XFER.BOOT and RESTORE: For many
protected disks you will only need to transfer
the foreign RWTS at $B800-SBFFF back down
into main memory. Assuming that the program
the RESTORE program has been typed in and
connected to the Control-Y vector, the
following command will perform the transfer
1900<B800.BFFFO@Y)
If you are trying to determine what portions
of memory a protected program uses, usually
the best way to proceed is to fill memory from
$800 to $BFFF with a specific value (11 is
a good choice) before booting the disk. The
Protected program is then halted with a
RESET to see what portions of memory have
been overwritten.
However, filling up the auxiliary memory
with a specific value can get a little bit messy
because of all the soft switches involved.
Probably the easiest thing to do is to modify
the RESTORE so that it transfers from main Douglas
to auxiliary memory, rather than vice-versa.
Here is what you can do:
BLOAD RESTORE
300:38 N 3F8:4C 00 63
800:11 N 801<800.63FFM
800<800.63FF|
6400<800.63FF|
This will fill up auxiliary memory from $800
to $BFFF with 11's, but will leave the DOS
our computers which is seldom found in print.
The group would be connected by a
newsletter and disk exchange (an interested
person in Connecticut has indicated that we
could probably use his bulletin board, as
well). I would like to hear from any Franklin,
clone or Apple user who would be interested.
I can be reached at the address below:
Trueman
East Wind Rd. Apt. L
Tecumseh, MO 65760
It would be nice if, after telling people that
Franklin Corporation was going out of
business, you would inform them that they
have changed their plans and are come back
out of Chapter 11 protection. In fact, they plan
to release a computer, the Franklin 2000, an
Apple //e-//c compatible by the end of the
in main memory intact so that you can BLOAD _ yeat.
XFER.BOOT.
After the protected program has been
booted into auxiliary memory and halted,
RESTORE can be used to transfer auxiliary
memory to main memory where the areas of
memory which were loaded over can be
determined.
A Wayout Backup
e. Mr. Hogarth’s letter in Issue No.
17. Wayout can be successfully
copied using Nibbles Away Ib (I
suppose version Ic should also
work):
Trks: $8-$1C Addr Wark AD DA DD
Trks: $22 Addr Mark AA D5 D5 FF 06 FF FD
Trk: $21 Addr Mark AA
Sync size = BA
Watch # == 06
Nibble count ENABLED
Track $21 is the sensitive track he was
referring to. However, it copied fine for me
and I have no problems with the backup.
Rocky Giovinazzo
Nashua, NH
Franklin Lives!
am trying to set up a Franklin User
Apple II is usually of use to those
of us who use clones, it is not
always. There is also information dealing with
T am also interested in information on the
6502 (I own two Franklin 1200 OMS's). I
have read that the chip will improve the speed
of the computer by 10% with no change in
programs. However, the only person I have
found who knows anything about this chip had
no idea if it would do the same for the
Franklin or if it would be possible to put it
in the Franklin. I am not interested in
programming in assembly and so am only
interested in other speed improvements. I
would also need to know what other chips
might be needed to put the 65002 in my
computer.
Douglas M. Trueman
Tecumseh, MO
Mr Trueman: We haven't had any problems
crop-up from installing 65C02's manufactured
by Western Design into the Franklin Ace
1000's that we own, so you should not have
problems putting one into an Ace 1200.
However, don't expect any dramatic speed-
up when using commercial software since it
would not take advantage of the 65C02's
expanded instruction set.
Capturing LS 5.0 Fast Copy
was very pleased to see the article
by C.V. Fields on putting
Locksmith 5.0 Fast Copy into a
normal binary file in Issue No. 14.
This is a very useful utility which I use all
the time to backup data diskettes, and I was
Hardcore COMPUTIST No. 20
getting tired of changing disks and wading
through two menus to get to it. Therefore,
although I am relatively inexperienced and do
not have a copy card, I decided to attempt it
anyway. I thought your readers might be
interested in learning how I was able to reset
into the monitor with a //e and no copy card.
I selected the 16-sector Fast Disk Backup
from the utility menu of Locksmith 5.0 as per
the instruction and, as soon as the disk drive
light went out, I hit CTRL-Reset. As soon as
the disk drive light illuminated on the reboot,
Thit CTRL-Reset again and this caused an exit an
to BASIC. Then it was just a matter of CALL
-151 to get into the monitor and continue with
the instructions in the article. I now have a
normal binary file of this utility which I can
FID to any of my other disks.
P.S. I would like to see a softkey for the decrease
Hayes Terminal Program and Frogger. Please
add these to the Most Wanted List and keep
up the good work.
Jerry Battenhouse
Williamson, GA
User’s Rights
nelosed find a check for $25 for a
subscription renewal. I’d much
rather pay $25 for a publication
with 30 or so pages than $15 for
a “‘soft’” magazine bloated with self-serving,
groveling reviews for software that is featured
in large ads. (Conflict of interest? Nahhh.)
Your publication is the only one with
enough guts to print what the users really want
to know. Until the software realize
that the Copyright Act of 1976 gives the
buyers of their products a right to make an
archival copy, they are going to spend higher
and higher percentages of their revenue on
increasingly complex and error-prone copy-
protection schemes.
The money spent on such programming is
borne totally by legitimate buyers and not at
all by pirates who have already made the
scheme worthless. The companies then
escalate the war at an increasing cost in the
hope that there is a light at the end of the
tunnel, but with no luck.
Finally, formerly honest users see software
prices hiked and become more tempted to use
Pirated works. Sales suffer and companies
must charge more to keep profits at a
reasonable level. The cycle repeats.
Further, some publishers follow the advice
of a high-priced attorney and write Orwellian
shrink-wrap agreements with Doublespeak
clauses tao you dida't buy ths progres, you
only bought the disk it came on). Prosecution
can result if you try to list the code. Come
on! Shouldn't agreements be enforcable?
If all companies were this bad, one might
believe it had to end up this way. Yet, look
at Beagle Brothers, Penguin, Quinsept, Term-
lunacy, they have prospered with
works. Even Apple itself releases the best
available integrated package, Appleworks, in
state
At first, the cure looks unfair to authors and
publishers who, after all, are to thank for the
great selection of programs for the ][ series.
But lowered prices and removal of copy-
Pvisagiesy sos iggtine Ban aga
costs.
Maybe all of in the high-priced advertising
wouldn’t be as essential to a program’s
success. I know that if a program cost less,
I sure wouldn’t need as much convincing to
it.
If nothing else, I hope Hardcore
COMPUTIST will show the protectors that
they are fighting an unwinnable war against
both friend (buyer) and foe (pirate). Continued
expenditures will merely force more to the
true enemy camp. Naturally, surrender is out
of the question as it would be tantamount to
admitting that all of the cash spent on
protection was wasted. Perhaps a slow, quiet
of locking-up programs would be of interest.
It seems such a strategy was tried once before
in a slightly different conflict, and look who
lost.
I don’t mean to trivialize real war in the
allusion, liken copy-protection removers to
Communists, or to demean those who fought
for their country, but to draw a parallel of
leadership styles and modes of thinking.
Perhaps the master plan in both was noble,
are certainly a lot different in real life than
companies
the harder it will be for them to change. Are
there any companies out there willing to
remove the copy-protection from already
Protected works, or is the idea of user-as-
potential-pirate already ingrained?
Brad Leonard
St. Louis, MO
(Amen)
Help for
Franklin and IBM Users
he main reason that I am writing is
to provide some feedback to two
recent questions posed by letters in
your Input column.
For the Franklin user (Tom Oldenhage), I
must also confess to a lack of knowledge of
any User Groups. However, right in my own
backyard there is a Bulletin Board System
devoted to Franklin (and Apple to a certain
extent) users. It can be reached at (305)
671-4110, 24 hours on weekends. It is run by
a professor at a local prep school and may lead
the interested reader to other sources of
Franklin information if he is willing to invest
in one or more long distance phone calls.
IBM-PC Hardcore-type data can be found
on Remote Bulletin Board Systems (RBBB’s),
HostComm's and other BBS's. What are
called "unprotects’ in the IBM-PC world, as
well as PEEK/POKE lists, are usually found
on these systems. A good starting place would
be the Capital (Washington D.C.) PC User's
Group (CPCUG). They can be reached at PO
Box 3189, Gaithersburg, MD 20878. There
are numerous BBS’s that have a lot of public
domain IBM-PC software as well as the
above-mentioned technical info. CPCUG has
lists of these on some of their bulletin boards.
As a late vote, PLEASE keep Hardcore
devoted to the Apple J[ line, And finally, I
am definitely interested in a group buy of the
65C02. I have an Apple ][+ and two Apple
//e’s to support with this.
Thanks, as always, for keeping at it!
Bob Baker
Orlando, FL
Backup for Dazzle Draw
ere’s one of the reasons that the
more sophisticated protection
methods can be more trouble than
program for my daughter. We had made our
one legal backup copy and everything was
going fine; we were really enjoying the
program. Then one day I went to boot-up the
program and found that it would not work.
It only made an odd sound. Strangely enough,
I found later that I was able to boot it up on
my father’s computer.
To make a long story short, I found that this
Hardcore COMPUTIST No. 20
program uses track arcing for its copy
Fe ar er een doesn Oke
master would only boot-up on 2 out of 7
machines for a 29% bootability, and the copy
I had made would boot-up on 3 out of 7
machines for a bootability of 43%).
I subsequently sent my original back to
Broderbund explaining my problem with their
original and my copy. They sent me a new
disk within a week and told me that it had
come to their attention that the Apple Duo-
Disk may write errors on the softboot
(CONTROL, OPEN APPLE, RESET). I was
very pleased with Broderbund’s quick
response until I tried to boot-up the new disk
and found that it would not work at all. In fact,
it worked worse than the disk I had returned
to them.
Although I could get into the Utility Menu
(I thought I would make a new copy using the
internal copy program that is included with
Dazzle Draw to see if it would work after
being copied on my own disk drives), to my
surprise, Broderbund had already made the
one and only copy. I couldn’t make another
backup! It was then that I declared war on
Broderbund and its Dazzle Draw program.
This brings me to the parameters I used to
copy the original Dazzle Draw disk while
using EDD III. I went back to an older
parameters list for EDD on Choplifter and
successfully made another copy. Note: I was
unable to make a successful copy using the
newer parameter list for Choplifter.
Parms 28=2, 00=3
tO-tB
t C.25 - t 21.25
t22
To make a copy from your new copy (not
from the original disk), I used EDD III in the
normal mode and ONE disk drive and did t
20.25 and t 21.25 over again until they had
no read or write errors. I then put in the parms
28=2 and @@=3 for t 22 only.
Since my copies were done at a faster speed,
I’ve been able to boot-up on 5 out of 7
machines or 71%. If I turn on the 80-column
card first (PR#3) then use PR#6 to start the
boot, I am able to make 100% boots. I also
have been able to backup the educational
program Spell It, from Davidson &
Associates, using EDD III. The parameters
are the same as for Dazzle Draw but for tracks
@ through 22 (28=2, 00=3).
Ed Roberts
Ventura, CA
More RAMcard Secrets
our magazine is excellent and I
don’t know how I ever got along
without it. Since receiving my first
issue I have learned infinitely
many things about the computer. Anyone who
isn't subscribing is wasting their Apple.
Regarding the article ‘‘Secret Weapon:
ppc pon iia mre tal
/e with 128K (Hardcore COMPUTIST No.
16), [have found a slight problem using that
technique with the Applied Engineering (an
excellent company, by the way)
MemoryMaster //e 128 RAM card.
When RESET is pressed it switches
memory banks and, unless you hit RESET
again, you will have to manually switch
banks. After a few bank switches things can
become quite confusing. My solution is this
little routine:
9500:2C SE CO 2C SF CO 4C BF 9D
9500:2C SE C0 BIT $COSE ;the first of the
two toggle switches
9503:2C SF CO BIT $COSF ;the second
9506:4C BF 9D JMP $9DBF ;reconnect
DOS
Then
@3F2;00 95 30 (changes reset vector to jump
to $9500 instead of $9DBF)
This is a simple routine, but quite effective.
P.S. To add to your APT for Rescue Raiders:
GA gives a status display.
Safaa Abdulla
Richmond, VA
In Defense of Quarter Tracks
n Hardcore COMPUTIST No. 17’s
‘Whiz Kid column you missed an
important point: quarter tracks are
EXTREMELY useful against
track arcing.
Pie nace soi rhea ok ante ee
tracks formatted using track arcing.
Because adjacent 1/2 tracks overwrite each
other, this disk would be almost impossible
to copy. But, since 1/4 tracks read 1/2 tracks
on BOTH SIDES AT ONCE, copying tracks
1.25 and 2.25 will easily copy the disk. Still
in doubt? See pages 92-93 in the Copy }{ Plus
5.0 manual.
M.M. McFadden
Sunnyvale, CA
Mr. McFadden: Thank you for informing us
of this important use of quarter tracks. We
suspected that the statement Ray made about
quarter tracks ‘‘not being worth much’’ would
get some response showing us what they were
really good for.
Diagram 1
APT Feedback
e. “APT for Advanced Lode
Runner’’ which appeared in
Hardcore COMPUTIST No. 17,
Input pg. 4.
Many thanks to Warren Power for his
Advanced Lode Runner APT. It saved me
many hours of trying to copy ALR.
Unfortunately, there was a typo in his letter.
Tracks 3 to 8 should be copied, not tracks 3
to 6. Otherwise, the number of levels available
for play/editing is reduced to 32. Copying
through track 8 gets you all fifty ALR levels.
Note that this technique can also be used
to copy the regular Lode Runner disk onto a
data disk (but copying from tracks 3 through
C this time) thus making the games available
to the editor and other APT's.
Bring on more Hardcore!
Hardcore COMPUTIST No, 20
Readers’ Softkey & Copy Exchange toa EE
Softkey for
Sensible Software's,
The Report Card (Ver. 1.1)
By John Howard
The Report Card
Sensible Software Inc.
210 S. Woodward, Suite 229
Birmingham, Michigan 48011
(315) 258-5566
$59.95
Requirements:
Apple J[, ]{ Plus, //e, or //c with 48K and
Applesoft
One blank disk
n Hardcore COMPUTIST No. 18,
The Report Card from Sensible
Software on the Most
Wanted List for softkeys. Since I
had deprotected this program some time ago
to modify grade calculation algorithms to suit
my application, I decided to submit the
method of deprotection to share with other
users so that they too might modify it for their
needs.
I am a subscriber to Hardcore
COMPUTIST from almost the first issue and
consider it to be the best Apple-specific
magazine ever published. I have gleaned
information from its pages not available
anywhere else. It is one of my most valuable
computer tools.
About The Program
The Report Card is a grading system
designed specifically for the teacher. It allows
easy compilation and reporting of student’s
marks individually or as a class, and it is
completely menu driven which allows the first
time user to use the program without reference
to the manual. All of the normal bells and
whistles of a good grade book program-
weighted scores, name transfers, and
numerous reports are available.
Nobody Knows The
Incompatibilities I’ve Seen
When I first ran the program I immediately
encountered a problem with grade algorithms-
I like to compute mine in a certain way, and
this program just wouldn’t do it. So, rather
than having a useless program sitting on the
shelf, I thought that maybe I could deprotect
it and change the grade algorithms. Following
is the result of my efforts.
About The Protection
The copy protection on the report card disk
consists of two different schemes. One is an
altered DOS that reads non-standard address
prologs. The other is a nibble count check on
track 6 while the disk is booting to check for
an original disk. No other checks are made
for an original disk after the program is loaded
into memory. The only disk access after the
program loads is to read from and write to
the data disk. This makes our job easier.
Advanced Snooping
Using the sector editor and nibble editor of
Copy ][ plus Version 4C, I found that Tracks
$3 - $22 used an address field prolog of D7
AA 96 instead of the normal DS AA 96. By
patching these values into the Copy ][ plus
sector editor I was able to scan the disk to see
what was on it. I found a normal VTOC and
CATALOG on track $11 with two Applesoft
files named HELLO and THE REPORT
CARD. Hallelujah!!
I then booted a normal DOS disk to see if
the deprotection on this disk was going to be
that simple. When I into the monitor
with a CALL -151, changed $B955 (in the
RDADR routine in DOS) from its normal
value of D5 to D7 and typed AS6EG
(CATALOG routine in DOS), lo and behold,
I got a CATALOG listing. This meant that
I could manually load and transfer the two
report card files by changing the value in
location $B955 to D7 for a LOAD from the
protected disk and to DS for a SAVE to a
normal DOS 3.3 Disk.
Step-By-Step Procedure
1) Initialize a blank disk with your favorite
DOS (preferably a fast one).
2) Modify DOS to read the protected disk
POKE 47445,215
3) Load a file from the protected disk
LOAD HELLO
4) Restore DOS to its original form to allow
saving the file to the unprotected disk
Poke 47445,213
5) Save the file to the freshly initialized disk
SAVE HELLO
6) Repeat steps 2 through 5, substituting
“THE REPORT CARD” for “‘HELLO’’.
In Closing...
You will now have a normal DOS 3.3 Disk,
preferably with a fast DOS on it, and two
Applesoft files of 4 and 109 sectors. This will
leave plenty of space to use the program disk
as a data disk. The HELLO program sets up
a few pointers, displays the introductory
screen and message, and loads the main
program.
One of the first things you may want to
modify in the program is line #6 which puts
the computer into an infinite loop after you
select to quit the program. You must turn off
the computer or hit RESET, which kills all
your variables, to get your computer back.
Just replace the loop code with END to exit
cleanly to BASIC. You can then start the
program again with all variables intact.
Numerous other possibilities for
modification are now at your fingertips.
Happy computing!
Deprotecting
Kidwriter
By Mike Stafford
Requirements:
Apple J[ Plus or equivalent
Kidwriter
Super IOB v1.2
idwriter is a ‘‘Kiddie Word-
Processor’’ that allows children to
create their own stories and
illustrate them with colorful pic-
tures. Unfortunately this program does not
come with a backup disk and is not copyable
with COPYA. Luckily, the copy protection
on this disk is not too extensive and the disk
can be easily de-protected.
The copy protection scheme consists of
changing the address field prologue from the
normal DS AA 96 to DS AA FE, and the data
field prologue from DS AA AD to DS AA FF.
This disk can be bit copied, but I prefer to
have my disks unprotected (especially this
program since I had some modifications in
mind for it.)
To de-protect this disk, all that is necesssary
is to use a Super IOB controller which will
read the altered address and data headers and
then write the tracks to another disk with their
normal values. After you’re done making the
copy you'll need to add a DOS to the disk.
I prefer a fast DOS such as Pronto DOS, as
Hardcore COMPUTIST No. 20
2
tt
Readers’ Softkey & Copy Exchange cont...
this program will load very slowly with the
standard DOS 3.3. Finally, you will have to
change the boot program because Kidwriter
does not boot up with the normal HELLO
Program.
Here is the step-by-step procedure to
softkey Kidwriter:
1) Initialize a blank disk with a fast DOS
(preferably) and ‘‘KIDWRITER”’ as the boot
filename
INIT KIDWRITER
2) Type and save the controller at the end of
this article.
3) Install the controller into your Super JOB
program and execute it:
RUN
3) Type in the hexdump at the end of this
article and save it to your freshly created disk
BSAVE KIDWRITER,A$9000,L$33
You should now have a COPYAable
version of Kidwriter.
Print-Out: The Modification
You can add a hi-res printout option for
pgs pap ig pete
editor and know a little bit of assembly
language. To do this you will first have to
modify your copied disk. Get out your sector
editor and make the following alterations:
Track Sector Bytes To
SIA $06 $OD-SOF $20 $1C $90
$A $06 $24-$26 $20. SIC $90
$1A $07 SF7-SF9._—-$20.-$1C $90
This alters the program so that it calls
$901C when it needs to wait for a keypress
between pages of a story. Once here, our
KIDWRITER file takes over and tests for a
GP). if this key is pressed, program
execution falls through to $902F. Right now,
$902F just returns to the main program and
no hi-res printing occurs.
As a result, the second thing you must do
is add a machine language hi-res printout
routine at $902F and re-BSAVE the
KIDWRITER file. This routine will differ
depending on your printer-printer card
combination. In any case, the routine should
save the COUT vector ($36 and $37 (I saved
them on the stack)) and restore it when
finished.
KidWriter Controller
1900 REM KIDWRITER CONTROLLER
1910 TK = 9 :ST = :LT = 35 :CD = WR
1920 T1 = TK ; GOSUB 490 : RESTORE : GOSUB 199
: GOSUB 218
1930 GOSUB 430 : GOSUB 100 :ST = ST +1 : IF ST
< DOS THEN 1038
1940 IF BF THEN 1060
1950 ST = :TK= TK+1: IF TK<LT THEN 1030
1960 GOSUB 238 : GOSUB 490 :TK =T1 :ST=9
1970 GOSUB 430 : GOSUB 108 :ST=ST+1: IF ST
Controller Checksums
& Hexdump
1900 - $3568 1070 - $B1B6
1019 - $3266 1080 - S1FDD
1920 - $BCB9 1990 - $F88D
1938 - SAABB 1100 - $7AA8
1940 - $AB41 5000 - $196A
1050 - $9AA6 5010. ~ $F27C
1969 - $B9B3
< DOS THEN 1078 ; AO OF B9 BC 98 20 ED FD
1080 ST =6 TK=TK+1 : IF BF =@ANDTK <LT THEN : 88 10 F7 6B 8D 85 88 88
1970 : 88 88 88 88 88 C7 CE D5
1090 IF TK < LT THEN 1620 D2 C2 84 8D 2C 00 CO 30
1100 HOME : PRINT."DONE*WITH*COPY" : END 11 60 48 AD 80 CO C9 90
5000 DATA 213 ,170 ,254 FO 95 68 2C 00 CO 60 68
5010 DATA 213 , 178,255 2C 00 CO 60
KidWriter Source Code
$CADS
$D88F
$F7CE
$3B05
$3038
$1989
$8BD5
3
a
g
i
FDED- COUT -EQ’ SFDED
*
OR $9900
-TF KIDARITER
9000: AD OF LOY #ENDMSG-MSG
9002: B9 OC 98 PRNTWSG LDA MSG,Y
9005: 20 ED FD JSR COUT
9908: 88 DEY
9009: 10 F7 BPL PRNTWSG
9008: 60 RTS
900C: 8D 85 88
QOOF: 88 88 88
9012: 88 88 88 MSG -HS 8D8588888888888888
9015: C7 CE D5
9918: D2 C2 «AS -/GNURB/
QO1A: 84 AHS 84
9018: 8D ENDMSG ~ .HS 8D
9O1C: 2C B08 CO BIT $CO0B
OO1F: 30 01 BMI CTRL.P
9021: 60 RTS
9022: 48 CTRL.P = PHA
9023: AD 08 CB LDA $C008
9926: C9 98 CUP #590
9028: FO 05 BEQ DUMP. IT
902A: 68 PLA
9028: 2C 08 CB BIT.RTS BIT $CO00
902E: 68 RTS
902F: 68 DUMP.IT PLA START PRINTOUT ROUTINE HERE
9030: 2C 00 CB BIT $0000 REMEMBER TO SAVE COUT
9033: 60 RTS POINTERS AND RESTORE THEM WHEN FINISHED
ole
Hardcore COMPUTIST No: 20
eee nena mtonee cer ame
Se tar set
Apple ][
Boot ROM
Carefully read this article
and examine the
accompanying disassembly
and you can learn how the
disk controller hardware
addresses ($C@n0-$COnF)
are used for direct access
of the disk drive, how 6 & 2
encoding works, how the
address and data fields are
read, and generally increase
your overall knowledge of
the Apple ][ disk drive.
es Disassembly Beacon
Se: w
Se SA dso HHS
By Ray Darrah and Gary Peterson
code that all bootable disks, protected or not, must execute as the first stage
of their boot. Many people take advantage of this fact to perform what is known as ‘‘boot-
code tracing’’ or the ‘‘front door method"’ in order to track down the location of a
disk’s protection scheme. Several articles previously published in the pages of this magazine have
elaborated upon the technique of boot code tracing.
Because the boot PROM is so widely utilized, we would like to present a disassembly of the
code in order to clear up some of the mystery of how it works. By carefully reading this article
and examining the accompanying disassembly you can learn how the disk controller hardware
addresses ($C@n0-$COnF) are used for direct access of the disk drive, how 6 & 2 encoding works,
how the address and data fields are read, and generally increase your overall knowledge of the
Apple J[ disk drive.
This article and the commented disassembly assume a disk drive controller in slot 6.
il he 256 byte PROM at position PS on the Apple's disk controller card contains machine
The Nybble Conversion Table
The code at $C600-$C620 is responsible for generating a nybble conversion table at $36C-$3D5.
This table is used to convert the encoded (or nybblized) bytes read from the disk into a six-bit
hexadecimal value between $0 and $3F. To say the least, this is a very obscure piece of code
that is extremely difficult to follow. If you know of someone who frequently boasts of his or her
knowledge of 6502 programming, give them this little chunk of code and ask them to tell you
what it does. More likely than not, you will soon notice a marked increase in this person's overall
Hardcore COMPUTIST No. 20 9
This code tests for values which meet the
requirements imposed by the 6&2 encoding
method (high bit set, no more than one set of
consecutive zeroes and at least one set of
consecutive ones.) When a value corresponding
to a valid disk byte is found, the translated
equivalent of that value is stored at $2D6 plus
the value of that valid disk byte. Since this is
bound to sound pretty confusing, lets look at
a couple of examples:
The first hex value that meets the
requirements of 6&2 encoding is a $96. In the
read translate table, 96=00; therefore, a 00 will
be stored at $2D6+$96 or $36C. In the same
SS
The code starting at $C65C is
really the meat of the disk
controller's code. The code
here is used by the DOS 3.3
BOOT1 code at $84A (JMP
($003E)) to read the RWTS
into memory. Some protected
disks, like Rocky’s Boots, rely
entirely on this piece of the
disk controller code when
reading from a disk.
manner, since $ED is a valid disk byte and from
the read translate table, ED=30, a 30 will be
stored at $2D6+$ED or $3C3 (later we will
get back to how this table is used to convert the
encoded values read from the disk back into
their unencoded form). If you want more details
about the nybble conversion table, examine the
commented source code accompanying this
article.
Stack Extraction and Recal
‘The next part of the ROM at $C621 to $C63A
is responsible for determining which slot the
disk controller is in and for recalibrating the
head of the disk drive to track $0. The slot
number is determined by doing a JSR to an RTS
instruction in the Apple’s monitor. After the
RTS has been executed, the code retrieves the
return address from the stack and uses it to
calculate which slot the controller is in. The slot
number is then multiplied by 16 and stored in
zero page at $2B. Once the slot number has
been calculated, it’ is transferred to the X
register where it can be used to access the
correct controller hardware locations. Drive one
is enabled and the motor is turned on before
stepping over 80 phases by accessing the
various phase on/phase off locations in
ing order. This has the effect of moving
the head outward to track zero (track $0 is the
outermost track), no matter where it happened
to start from.
10 Hardcore COMPUTIST No. 20
2
g
z
080- WAGD.OFF .£Q $080 STEPPER MAGNET 0 OFF
COB1- MAGB.ON. EQ $0081 STEPPER WAGNET 6 ON
C082- WAGI.OFF ‘EQ $0982 STEPPER MAGNET 1 OFF
C083 WAGI.ON EQ $0083. STEPPER MAGNET 1 ON
C084- WAG2.OFF .EQ $0084 STEPPER MAGNET 2 OFF
C085 WAG2.ON EQ $0085 © STEPPER MAGNET 2 ON
086~ WAG3.OFF .EQ $0086 . STEPPER MAGNET 3 OFF
C087~ MAG3.ON: £0 $0087. STEPPER WAGNET 3 ON
C088 MOTOR. OFF .£Q $0088. DRIVE AND MOTOR OFF
C089 NOTOR.ON .£Q $0089 DRIVE AND MOTOR ON
COBA- SEL.ORVI. .EQ $008A ROUTE POWER TO DRIVE 1
0BB- SEL:DRV2 EQ $0088 ROUTE POWER TO DRIVE 2
CaBC- 101 -£Q $008C STROBE LATCH FOR 1/0
a8D- 102... EQ $0080 LOAD DATA LATCH
COBE- 103 °EQ $00BE PREPARE LATCH FOR INPUT
COBF- 104° EQ $CBF PREPARE LATCH FOR OUTPUT
. .
‘ WONITOR LOCATIONS. USED :
FF5@- 1ORTS .£Q SFF58 —A.KNOWN RTS INSTRUCTION
FOAS- WAIT” “EQ SFCAB © WAIT FOR TIME SPECIFIED BY A-REG, X & Y UNAL
MASS DATA STORAGE AREAS ‘
G100- STACK _.EQ $0190
9206- NIBBLE.TBL .EQ $0206
36C)
-EQ $0300
6502 STACK AREA STARTS HERE
6 & 2 DECODE TABLE FROM HERE TO $305 (FIRST NIBBLE AT $
EXTRA 86 BYTES (342~256=86) OF EACH SECTOR STORED FROM
FIRST SECTOR OF DATA GOES TO $0800
PR# OR IN# GOES HERE ©
C600: A226 LOX #820 DOES NOTHING EXCEPT. IDENTIFY DISK CONTROLLER
* Sa fhe,
* i SET UP.A READ TRANSLATE TABLE $
« ‘A= GENERAL USAGE :
38 cypoy, X = NIBBLE TO TEST FOR VALIDITY (=$80) ‘
s Os WHAT NEXT VALID NIBBLE TRANSLATES. INTO.» :
+ 5 ‘
0602: AB 00 LOY #00 FIRST BYTE TRANSLATES TO A $00
0604: A2 03 LOX #$03 COULD HAVE USED ANYTHING FROM $00 - $16
C606: 86 3C —-“TST.NIBB STX TEMPO. PUT NIBBLE HERE SO IT CAN BE MANIPULATED
0608: 8A PUT NIBBLE IN A SO WE CAN SHIFT IT
C609: OA ASL TEST FOR ADJACENT ONES
C6OA: 24 3C BIT TEMPO. IFA “M = @ THEN Zel
C60C: FO 10 BEQ NXT.NIBB NO ADJACENT ONES, GET NEXT NIBBLE
C6OE: 05 3C ORA TEMP —THE.ASL, ORA, EOR.SEQUENCE WILL
C610: 49 FF EOR #SFF CHANGE ALL ADJACENT 9-BITS TO ONE 1-B1T
(612: 29 7E AND.#S7E IGNORE BIT 7 AND O
C614; BO 08 TST BCS NXT.NIBB NEVER TAKEN THE FIRST TIME THROUGH, ON SUBS
ADJO .
EQUENT TIMES, THIS BRANCH IS TAKEN JF THERE STILL ARE BITS SET IN THE NIBBLE
‘AND A SET BIT HAS BEEN PUT INTO THE CARRY: THEREFORE MORE THAN ONE PAIR OF ADJ
ACENT 9-BITS ‘
C616: 4A {SR SHIFT A BIT INTO THE CARRY, COULD HAVE USED. A
SL
C617: DO FB BNE ADJO.TST TAKEN IF THERE ARE STILL SOME BITS SET (THERE
FORE SOME ADJACENT @-BITS) LEFT IN NIBBLE
C619: 98 TYA NIBBLE PASSED TEST, A=WHAT NIBBLE TRANSLATES
INTO
O61A: 9D 56 03 STA NIBBLE. TBL+$80,X STORE IT IN TRANSLATE TABLE + $80
(61D; C8 INY NEXT NIBBLE TRANSLATES INTO Y + 1
OBIE: £8 NXT..NIBB_INK GET NEXT NIBBLE TO TRY (~$80)
O6IF: 10 €5 BPL TST.NIBB IF NOT LAST NIBBLE $7F=SFF THEN KEEP GOING
. ims .
‘ “RIND WHAT SLOT WE ARE IN pee:
‘ : ‘
C621: 20 58 FF JSR 1ORTS JSR TO A KNOWN RTS INSTRUCTION
0624: BA TSK PUT STACK POINTER IN X
0625: BO 00 91 LDA STACK,X GET MSB.OF RETURN ADORESS FROM STACK
0628: OA ASL WOVE LONER FOUR BITS INTO UPPER FOUR BITS
0629: GA ASL IN OTHER WORDS, MULTIPLY BY 16 WOD.256
C62A: OA ast
0628: GA ASL
062: 85 28 STA SLOT SAVE SLOT NUMBER TIME. 16 IN ZERO PAGE
C62: AA v AND PUT SLOT NUMBER * 16 IN X
. :
; ‘TURN ON DRIVE :
‘ :
O62F: BD 8E Co LDA 103,X, SET ORIVE IN READ. MODE
0632: BD.8C 08 LDA 101,x
0635: ‘BD’ 8A Co LOA SEL.DRV1,X MAKE SURE DRIVE. ONE}. hs
638; 8D 89 Co UDA WOTOR.ON,X TURN. ON MOTOR =) 12 3
. aie .
: RECALIBRATE DRIVE HEAD $
: :
0638: AD 58 * LOY #80. MOVE BACKWARDS OVER 80 PHASES (49 TRACKS),
63D; BD 80 CO "NXT. PHASE LOA MAGO.OFF,X TURN CURRENT PHASE MAGNET OFF
0649: 98 ' TYA CALCULATE NEXT PHASE
Continued on next page
Initialize Zero Page
The next section of the disk controller ROM
code at $C652-$C65B is very short. All it does
is set up the necessary zero page locations so
that track $0, sector $0 is read into page $8.
Zero page locations $26-$27 point to the data
buffer, $3D holds the sector number and $41
holds the track number.
Reading the Disk
The code starting at $C65C is really the meat
of the disk controller’s code. The code here is
used by the DOS 3.3 BOOTI code at $84A
GMP ($003E)) to read the RWTS into memory.
Some protected disks, like Rocky’s Boots, rely
entirely on this piece of the disk controller code
when reading from a disk.
When entered, this routine first clears the
Carry flag to signal that an address header is
to be read. Once the address header pattern of
DS AA 96 is found, a branch to $C683 is taken
| If you take a look at the
| listing from $C65C-$C6AS,
you will notice that the =
address epilog or
_ checksum is never verified.
Some copy-protected disks
take advantage of this fact
and alter the address
epilogs or the checksum
to prevent people from
reading track $0, sector
$0 with a normal sector
editor.
or, meer |
where the 4&4-encoded volume, track and
sector data is read. The track and sector
numbers are compared to the values at $3D
(sector) and $41 (track). If they are correct, the
carry flag is set and the code branches back to
$C65D, this time to read a data header. If the
track and sector are not correct, then the carry
flag is cleared and the code returns to $C65C
to again try to find the desired track and sector.
If you take a look at the listing from
$C65C-$C6AS, you will notice that the address
epilog or checksum is never verified. Some
copy-protected disks take advantage of this fact
and alter the address epilogs or the checksum
to prevent people from reading track $0, sector
‘$0 with a normal sector editor. However, the
address or data prologues on track $0, sector
‘$@ cannot be altered from DS AA 96 and DS
AA AD.
Decoding the Data
The code at $CBA6-SC6EA is responsible for
reading encoded data from the desired sector
into the buffer. Because it takes $156
(342 in decimal) 6&2 encoded bytes to store
Hardcore COMPUTIST No. 20 i
one sector of data, the reading occurs in two
stages.
First, $56 bytes are read into $300-$356. The
remaining $100 bytes are read into the buffer
pointed at by $26-$27 ($800 upon booting).
Notice at $C6AA and $C6BC that when a byte
of data is read from the disk, it is loaded into
the Y register. This is so that the value read
from the disk can be used as an index into the
nybble conversion table that was generated at
$36C-$3D5. This is how the valid byte read
from the disk is converted into a six-bit hex
value.
The Data Checksum
Just before each of the $156 bytes is stored
into the buffers, an Exclusive OR operation is
performed. This is necessary because the data
was Exclusive ORed with itself (offset by one
byte) before it was written to disk. All of this
EORing produced a cumulative checksum byte
which was stored as the final byte of the
encoded sector. When the sector is read, the
EORing again occurs and, if the accumulator
does not hold a value of zero after the final EOR
with the checksum byte, an error has occurred
and the code at $C683 branches back to try
again.
If no checksum error occurred, then the code
falls though to $C6D5 where the 642 encoded
data in the two buffers is restored to its original,
unencoded form. This involves a lot of bit-
shifting to restore each byte with the two bits
that were stripped off of it before it was written.
‘These two bits come from that data which is
stored at $300-$355.
form, the code falls through to $C6EB where
a check is made to see if any more sectors have
to be read. The number of sectors to be read
is contained in $800. Normally this byte will
contain a 1 but it could be any value up to an
$F. I have seen very few disks, aside from the
BASIC’s disk, that will load in more than one
sector during their stage @ boot. Once the
desired number of sectors have been read, the
IMP $801 is executed to start the next stage of
the boot.
After the jump to $801 has been taken, a disk
is pretty much free to proceed with its boot as
the programmer has seen fit, although most
disks will use the routine starting at $C65C to
read in several more sectors from track $0.
Normal DOS 3.3 disks will read the RWTS into
memory from track $0, sectors $0-$9. Sector
$0 is reread so that its image is available when
a new disk needs to be formatted.
References:
Worth, Don & Peter Lechner, Beneath Apple DOS. Quality
Software. 1981.
Quality Software. 1984.
Apple Assembly Lines, S-C Software. 09/81, pages 17-20.
Continued from previous page
C641: 29 03 AND #803 MOD 4 my
0643: GA ASL "2
0644: 95 28 ORA SLOT MERGE _IN TO ZERO PAGE SLOT HOLDER
C646: AA TAK PUT NEXT PHASE INTO X
0647: BD 81 CO LDA WAGO.ON,X TURN ON NEXT MAGNET
064A: AD 56 LDA #556 WAIT DELAY OF 19.2 MILLISECONDS
C64C: 20 AB FC JSR WAIT WAIT A WHILE
C64F: 88 DEY NEXT PHASE OR HALF TRACK
C650: 10 EB BPL NXT.PHASE KEEP GOING IF NOT DONE F
* =e
‘ ‘SET UP ZERO PAGE TO READ TRACK 9, SECTOR @ of
. +
0652: 85 26 ‘STA SECTOR.PTR LSB OF POINTER = 0
C654: 85 30 STA SECTOR SECTOR @
0656: 85 41 STA TRACK TRACK @
C658: A9 08 LDA /BUFFER2 SB OF POINTER = $08
C65A: 85 27 STA SECTOR.PTR+1 PUT SECTOR AT $0800
. ’
° FIND EITHER THE ADDRESS HEADER *
. OR DATA HEADER OF THE CURRENT SECTOR §
‘
C65C: 18 GET.ADOR.HOR CLC C= MEANS LOOK FOR ADDRESS HEADER
C650: 08. GET.DATA.HOR PHP. SAVE. CARRY
C65E: BD 8C CO PI LDA 101.X READ DISK
C661: 10 FB BPL PI WAIT FOR FIRST BYTE
0663: 49 D5 = TRY.D5._ EOR #805 1S IT A $05? 5
0665: 00 F7 BNE Pl NOPE, GET NEXT BYTE ,
0667: BD 8C,CO TT” LDA 101.X READ DISK
C66A: 10 FB BPL 1 WAIT FOR SECOND BYTE
C66C: C9 AA CMP ¥SAA IS IT A SAA?
C66E: DO F3 BNE TRY.D5 NOPE. MAYBE IT WAS A $D5
L NOP WAIT 2 CYCLES
2 LDA 101.X READ DISK
BPL. .2 WAIT FOR LAST-BYTE IN EITHER ADDRESS OR DATA
CMP. #896 _ IS IT THE ADDRESS HEADER?
BEQ GET.SCT.NUM YES. SEE IF RIGHT ONE
PLP. WERE WE LOOKING FOR THE DATA MARK?
BCC GET.ADDR.HDR NOPE. TRY FOR ADDRESS HEADER AGAIN
EOR #SAD LOOKING FOR DATA HEADER. IS THIRD BYTE AND $A
0?
C67F: FO 25
BEQ READ.SCT YES. GET THE DATA FROM THE SECTOR
C681: 00 09 BNE GET.ADOR.HOR NOPE. FINO ANOTHER ADDRESS HEADER
. ‘
: READ VOLUME, TRACK AND SECTOR ‘
: :
0683: AD 63 GET.SCT.NUM LOY #503 THREE 4+4 ENCODED BYTES
0685: 85 49 STORE. 44. STA TRK.READ. STORE CURRENT DECODED BYTE HERE, FIRST VOLUME
NUMBER WHICH WILL BE OVERWRITTEN. BY THE TRACK NUMBER
0687: BD 8C CH «1 LDA 101,X READ DISK
C6BA: 16 FB BPL 1 WAIT FOR FIRST HALF OF BYTE
C68C: 2A ROL RE-POSITION EVERY OTHER BIT
C680: 85 3¢ STA TEMPO SAVE IT HERE
C6BF: BD 8C.CO .2 LDA I01,X READ DISK
692: 16 FB BPL .2 WAIT FOR SECOND HALF OF BYTE
694: 25 3¢ AND TEMPO — MERGE TWO HALVES TOGETHER TO DECODE BYTE
0696: 88 Dey DONE WITH ADORESS FIELD (EXCEPT CHECKSUM)? .
12 Hardcore COMPUTIST No. 20
0697: 00 EC BNE STORE.44 NOPE, GET NEXT BYTE
. :
‘ SEE IF THIS 1S THE SECTOR WE NANT :
‘ .
699: 28 PLP FIX STACK BECAUSE OF THE PHP AT $0650
C69A: C5. 30 CHP SECTOR A-REG HAS SECTOR READ, 1S IT THE RIGHT ONE?
C696: DO BE BNE GET.ADOR.HOR NOPE, LOOK FOR NEXT ADDRESS FIELD
C69E: A540 LDA TRK.READ GET TRACK NUMBER READ
CBA: C5 41 CUP TRACK IS IT THE ONE WE WANT?
C6A2: 0B 88 BNE GET. ADOR.HOR NOPE, LOOK FOR NEXT ADDRESS FIELD
6M: 80 87 BCS GET. DATA.HOR . .ALNAYS TAKEN, LOOK FOR DATA FIELD HEADE
. ;
. .
° READ SECTOR AND STORE IT IN MEWORY :
: ‘
C6AB!"AO 56“ “READ:SCT LOY'#86 READ FIRST EIGHTY SIX BYTES
C6AB: 84 3C NXT.BUFI STY TEMPO . SAVE NUMBER OF BYTES OF BUFFERL LEFT TO READ
C6AA: BC.8C.CO «1 LOY 101,X READ DISK
C6AD: 10 FB BPL .1.' WAIT FOR 6 & 2 ENCODED NIBBLE OF DATA
C6AF: 59 06 02 OR NIBBLE.TBL,Y DECODE THE BYTE (A=0 FIRST TIME. THROUGH)
C6B2: Ad 3C LOY TEMPO GET NUMBER OF BYTES LEFT
C684: 88 vey DONE WITH BUFFERI? <
C685: 99 00 03 STA BUFFERI,Y SAVE 6 BIT NIBBLE ‘
688: 00 EE BNE NT. BUFL_ NOT DONE WITH FIRST 86 BYTES, CONTINUE
.
‘ READ REMAINING DATA FIELD BYTES
:
OBA: 84 3¢ —NXT.BUF2 STY TEMPO SAVE THE CURRENT BYTE NUMBER (FIRST=0)
c6Bc: BC 8C.CO 1 LDV 101,X READ DISK
CBF: 10 FB BPL .1| WAIT FOR BYTE
CCl: 59 D6 02 EOR NIBBLE.TBL,Y TE. NIBBLE
C6CH: AS 3C LOY TEMPS GET BYTE INDEX (NUMBER)
C606: 91 26 STA (SECTOR. PTR). Y SAVE BYTE. BIG BUFFER
0608: C8 INDEX
0609; DB EF BYE YO. BUF2 REE? READING BYTES UNTIL ALL 256 WAVE BEEN RE
C6CB: BC BC Co .2 LOY 101,X READ DISK
C6CE: 10 FB BPL 2.” _NAIT FOR DATR FIELD CHECKSIM
0609: 59 D6 82 FOR NIBBLE. TBL,Y TRANSLATE THE BYTE
C609: Dd 87 GOTO.NKT.SECTOR BNE GET.ADOR.HOR IF CHECKSUM NOT RIGHT THEN START A
R
. ‘
. DECODE.JHE 6 & 2 ENCODED SECTOR vi
: ‘
605: AO 90 Loy #509 START WITH BYTE O OF THE BUFFER
C607: A256 STRT.BUFL LOX #86 86 BYTES IN BUFFERI
609: CA NXT. 62.DEC DEX GET NEXT BUFFERI_ INDEX
CODA: 36 FB BMI STRT.BUF1 IF = $FF THEN START BACK AT END OF BUFFERI
C600: B1 26 LOA (SECTOR.PTR),Y GET BYTE MISSING LONER TWO BITS
CODE: 5E 90 03 LSR BUFFERI,X GET BIT FROM BUFFER
C6E1: 24 ROL PUT INTO BUFFER2
C6E2: SE 00 03 LSR BUFFERL,X GET THE OTHER’ BIT FROM BUFFER
C6ES: 2A PUT INTO. BUFFER2
C6E6: 91 26 STA (SECTOR.PTR) ,Y BYTE 1S DECODED, STORE IT
C6EB: C8 NY GET NEXT BUFFER? INDEX
GES: DO EE /¢ BNE NXT, 62.0EC NOT DONE WITH WHOLE PAGE, DO NEXT BYTE
Continued on next page
Most Wanted
List
Need help
backing-up a particularly
stubborn program?
Send us the name of the program and its
manufacturer and we'll add it to our Most Wanted
List, a column (updated each issue) which helps
to keep Hardcore ST readers informed
to hoor Haier Sea otoan ome MOST
needed. Send your requests to:
Hardcore COMPUTIST
Wanted List
PO Box 110846-K
Tacoma, WA 98411
If you know how to deprotect
unlock, or modify
any of the programs below,
let us know. You'll be helping your fellow
Hardcore COMPUTIST readers and earning
MONEY atthe ame tine, Send the information
to us in article form on @ DOS 3.3 diskette.
1. Apple Business
Graphics
‘Apple Computer
14. Zardax
2. Flight
Simulator If Computer Solutions
‘Sub Loge
13. Robot Odyssey
‘The Learning Company
15. The Handlers
3, Apple LOGO II Silicon Valley Systems
Apple Computer
16. Milliken Math
Series (NEW)
Milliken Publishing
4. Jane
Arktronics
5. Bookends
Sensible Software
17. College
Entrance Exam
6. Vielblend Prep
Borg Warner
7. Sundog
FTL Games
18. Bank Street
9. Catalyst
Quark, Ine
20. King’s Quest
10. Gutenburg Sie On-line
‘Jr. & Sr.
Micromation LTD
21. Hayes
11. Prime Plotter Terminal Program
Primesot Corp. Mave
22. Fun Bunch
12. The Newsroom
Springboard Software Unicorn
Hardcore COMPUTIST No. 20
13
Guess what
we found
during our move?
BACK
i sae
COMPUTIST No’s.
6, 7, 9 & 12!
And we thought they were
all sold-out!
Continued from previous page
. *
$ TEST FOR ANOTHER SECTOR ea ‘
: *
C6EB: £6 27 INC SECTOR. PTR+1 NEXT BUFFER WSB
C6ED: E6 30 INC SECTOR NEXT SECTOR NUMBER
O6EF: AS 30 LDA SECTOR GET SECTOR NUMBER
C6FL: CD 00 08 CMP BUFFER2 HAVE WE FINISHED READING?
C6F4: AG 2B LOX SLOT GET SLOT # TIME 16
C6F6: 96.DB BCC GOTO.NXT.SECTOR LESS THAN SECTOR SPECIFIED, READ NEXT
ONE
C6F8: 4C 91 08 JMP BUFFER2+1 ENOUGH SECTORS, CONTINUE WITH BOOT
COFB: 00 99 00
C6FE: 08 90 -HS 9900000000 UNUSED BYTES
[erie boca Tht ete ret Cooy Peston / £6 rusertir
Reve Dak Drectoy Desgne/ Contin Pa / Uppa & Lower
‘Coe Output for Zork
‘COMPUT Sra ft Serato Speer. Sara Orne
‘Music Construction
—, NOW!
First come/fi
While th
(Gee our ad on page 30 to order other back issues)
*ONoR
Bp
O Noe
UPS: please use street oddress. Washington residents add 78%
OD No6
s0les tax. Foreign orders add 20% shipping & handling, US funds drawn‘on US bank. (Offer
good for a imited time only.)
Send check or money order to: Hardcore COMPUTIST, PO Box TO846-8, Tacoma. WA
Please rush me the BACK ISSUES marked below. !have enclosed $3.50 (plus
applicable sales tax and shipping) for each issue requested. =
ONO?
‘9841 Most orders
Name
Address
City
Phone.
VISA/MC_
‘Signature:
Subscribe NOW!
While rates are still LOW
If you’ve been meaning to subscribe,
to Hardcore COMPUTIST
DON’T WAIT!
Tell your friends! Tell your neighbors!
Mail or call in your subscription or renewal before the rate increase.
(And remember: Hardcore COMPUTIST does not send RENEWAL notices. If you
are irrent Subscriber, check out your mailing label to determine the number of
in Hardcore COMPUTIST
ugs No's. 17 & 18
No. 18: RKCOPY- page 30
Lines 360-380 of the RK COPY program
were missing some ending quote marks (’’).
Here is the corrected listing of these lines.
360 Q$ = CHRS ole: ) :ST$(1) = “DRIVE*SELECT
JON" :CO$(1) = "ENTER*AN*" +Q$ + "S" +
QS+ FORSINGLE*DRIVE*COPY"OR*A* +
QS + "D" +Q$ + "*FOR*DUAL."
370ST$(2) = “COPYING" 2C0$(2) = "MAKE“SURE
‘“THE*SOURCE*DISK*1S*IN“DRIVE*1“AND
“THE*DESTINATION*DISK*IS*IN*DRIVE*2*
(OR*IN*YOUR*HAND* | F*YOU*HAVE
“ONE“DRIVE)"
380ST$(3) = "FINAL“TOUCH” ;CO$(3) = "TRACK
“9*HAS*BEEN*MOD I FIED“TO*NORK
“WITH**THE*3 . 3*BOOT*PROGRAM. *
YOU'RE*GOING*TO** HAVE“TO*COPY*TRA.
CK*@*BY*YOURSELF*WITH*A*N|BBLE*COP
IER*(SORRY!)"
No. 17: Softkey for
Crossword Magic - page 25
The softkey that was published for
Crossword Magic was designed to work with
version 3.0 only. Nick Galbreath (author of
“The Controller Writer’ in Hardcore COM-
PUTIST No. 16) reports that the following
modifications are needed to the Magic | file
(step 3 on page 25) in order to use the softkey
with Crossword Magic 3.2
1E1B:31 BB 1E20:32 BB
Also, in the same article, step 30 on page
28 should read
BSAVE PLAYER, AS$7FD,L$5303
14 Hardcore COMPUTIST No. 20
The
Graphic
Grabber v3.0
Requirements:
Apple ][ Plus or equivalent
One disk drive and DOS 3.3
The Print Shop (By Broderbund)
ew printer-graphics programs have
the versatility and ease of use which
are incorporated in Broderbund’s
Often I find myself behind the controls of this
program sculpting yet ANOTHER creative
work. Judging from the great number of
letters that Hardcore COMPUTIST receives
on stationary created by The Print Shop, our
readers also put this program to good use.
One thing I particularly appreciate about
this program is the fact that the user is allowed
to create his or her own graphics and store
them on an unprotected disk. My few
criticisms of the package are that user-
definable fonts are not available and that its
graphic editor is not up to the standards of
some other programs currently on the market.
My initial disappointment in The Print
Shop’s graphic editor led me to create a
program called The Graphic Grabber
(featured in Hardcore COMPUTIST No. 17).
This program allows the user to capture a
‘small part of any hi-res screen (88 x 52 pixels)
and save it for use by The Print Shop.
After using the program to ‘‘grab’’ many
graphics, I decided that some additional
features would make the Graphic Grabber
even more useful. For example, wouldn't it
be nice to be able to take a graphic and place
it on a hi-res screen along with several other
graphics to create sheets of available graphics
similar to those that come with The Print
‘Shop? Or, how about shrinking a large picture
to the size that The Print Shop requires? With
By Ray Darrah III
you cannot simply change some lines in the
Celie Crabex evens yo ped ip om
Hardcore COMPUTIST No. 17. Instead, you
must type in the two files (one Applesoft and
one Binary) which comprise The Graphic
Grabber 3.0 (see page 2 of this issue if you
are not familiar with the process of entering
and saving programs).
Save the Applesoft BASIC portion with:
SAVE GRAPHIC GRABBER 3.6
Save the Binary hexdump with:
BSAVE OBJ.GRAPHIC GRABBER,
A$4000,LSI1AB
Using The Graphic Grabber 3.0
When The Graphic Grabber 3.0 is RUN,
the hi-res screen page 1 is left intact. This is
so that you may use what is currently on the
pratpetiede [eral aaghean girdaite a
the hassle of saving the screen, running The
Graphic Grabber, and then re-loading the
screen.
If all goes well, The Graphic Grabber will
come up with a help screen of all the
Hardcore COMPUTIST No. 20
1s
azOn
commands available to you. At the bottom of
the screen there should be a display of some
of the important parameters.
Moving Right Along...
When you are viewing the help screen,
notice that the command list indicates to type
“*2”" to toggle between the help screen and
the hi-res screen. Actually, hitting any key
that does not invoke one of the other functions
will toggle between the text and hi-res screens.
‘When viewing the hi-res screen, you will
notice a flashing square that defines the
“‘window"’ upon which The Graphic Grabber
3.0 operates. When considering the size of the
window, be sure to include the boundaries of
the window itself as these are
included in any action of the
window.
The Window
Pressing
souks wheat wala foe ke
a new window position. You
may type in a couple of hi-res
coordinates and the window will
immediately jump there. The
upper left-hand corner of the
window will be placed at the coordinates you
specify.
A third way to move the cursor is to type
“1D” or the “TAB” key if you have a //e.
This will move the window to the next graphic
position. This feature was designed primarily
to aid in the creation of sheets of various
graphics. If you first use the ‘‘P’* command
to place the window at 4,9, every time you
press the GJ) key the window will jump to
the next available position on the screen that
does not overlap the space occupied by an
adjacent graphic. This makes it easy to evenly
space the various graphic images you wish to
place on the screen, and is also useful for
quickly moving the window to a general area
on the screen.
Toggle Parameters
Invoke this option by pressing the
the the bottom
are invisible,
the bottom 32 lines of the hi-res screen are
visible.
Clear Screen
If you type ‘*C’’, the hi-res screen will be
cleared to black. This is most used to simply
clear the screen before creating a sheet of
graphics. As a safety precaution
i
against inadvertently clearing the screen by
mistake, ‘‘OK to clear hi-res screen?"’ will
appear and you will have to verify that you
really do want to perform this function.
Reverse Buffer
A graphic saved with The Graphic Grabber
3.0 will always be printed by The Print Shop
exactly as it appears on the hi-res screen; unlit
pixels are printed as black and lit pixels are
printed as white (actually, not printed at all).
If you wish a graphic to be printed in inverse,
you may reverse the current graphic buffer
(lit pixels become unlit and vice versa) by
pressing “R”’.
Changing X and Y Scale
The horizontal and vertical size of the
window may be altered by pressing **X"’ or
“*Y’’, respectively. The three available x
scales and y scales translate into nine possible
window sizes. The size or scale of the window
is very important because when the screen is
moved to a graphic buffer or a graphic buffer
is moved to the screen, The Graphic Grabber
uses the entire window. Note that the
sensitivity parameter changes when you alter
the x or y scale. Also note that the window
wraps around if it is larger than the screen can
accomodate,
Changing the Graphic Buffer
The Graphic Grabber 3.0 utilizes two
different graphic buffers. All functions (i.¢.
Load, Save, Reverse, Move buffer to screen,
Move screen to buffer) dealing with a graphic
buffer will be performed on the current buffer
selected. To select a graphic buffer, press ‘‘1"”
for buffer one or ‘*2’’ for buffer two.
Move Graphic
to Buffer
Pressing “0)"" or the right
arrow key will invoke a routine
that examines the pixels in the
window and creates an 88 x 52
window at its smallest size
(xscale=1, yscale=1), there is
and the pixels that make up a
Print Shop graphic; therefore, no resolution
is lost when the window is at its smallest size.
Lit-Dot Sensitivity
The lit-dot sensitivity (press “‘S’* to change)
is used when a graphic is moved to the current
buffer area. When the window is larger than
The Graphic Grabber 3.0
Source Code
GRAPHIC GRABBER 3.0
WACHINE LANGUAGE STUFF
COPYRIGHT
HARDCORE COMPUTIST 1985 ‘
HGR.Y —.EQ $E2
QOEO- HGR.X —.EQ SEO
9030- WON.HMASK .£Q $30
QGE5- HGR.HORIZ .£Q $E5
OOFE- ROWS EQ SFE
OOFF- COLUMNS .EQ $FF
9026- MON.GBASL .EQ $26
OOFD- BITS -EQ $FD
iil
R RR
Ba
a5
:
|
16 Hardcore COMPUTIST No.
QOFC- XSAVE —_.EQ SFC
QE7- HGR.SCALE .EQ $E7
OOFB- STATUS.SQ .EQ SFB
F417- HPOSN _.EQ $F417
F467- MOVE.LEFT .EQ $F467 MOVES HGR CURSOR LEFT
F48A- MOVE RIGHT .EQ SF48A
F4D5- MOVE.UP .£Q $F4D5 MOVES HGR CURSOR UP
F504- MOVE.DOWN .EQ $F504 MOVES CURSOR DOWN
0000- DOT.STAT .£Q $0 HOLDS NUMBER OF UNLIT DOTS IN THREE BY THREE AREA
@O01- XSCALE EQ $1
9002- YSCALE EQ $2
0003- XSCALE1 .EQ $3
9004- YSCALE1 .EQ $4
O005- STARTX .EQ $5 AND $6
F65D- XDRAN =. EQ $F65D
-OR $4000 — HGR2 1S UNUSED MOSTLY
Pe) “TF 0BJ.GRAPHIC GRABBER ¢
. .
i WOVE SCREEN TO BUFFER .
.
4000: 20 BO 40 JSR SETUP INITIALIZE STUFF ‘
4003: 20.03 40 DO.ROW JSR STARTROW SETUP FOR EACH ROW
4006: A9 08 DO.NEXT LDA #0 ZERO UNLIT DOT COUNTER
4008; 85 00 STA DOT.STAT
ADA: AS 30 COUNT.EM LDA MON.HMASK GET MASK BYTE
400C: 29 7F AND 4S7F IGNORE MSB
400E: 31 26 ‘AND (WON. GBASL),Y WASK THE BYTE
4010: DB 92 BNE ALONG — LIT, NO COUNT
4012: E6 00 INC DOT.STAT UNLIT, COUNT IT
4914; 20 42 40 ALONG © JSR MOV.ALONG DO ALL THE DOTS DEPENDING ON THE SCALE
4017; 90 FL BCC COUNT.EM NOT DONE COUNTING THE DOTS, KEEP GOING
4019: AS OO LDA DOT.STAT NUMBER OF DOTS LIT
4018: C9 91 CUP #1 SENSITIVITY C=1 - DOT LIT
4010: 3€ 08 58 ROLLER ROL $5800,X PUT BIT INTO PICTURE
4920: C6 FD DEC BITS BYTE DONE?
4022: DO GA BNE NXT.COL NOPE!
4024: AD 08 LDA #8 FIX BITS
4026: 85 FD STA BITS
4028: E8 INX NEXT POS
4929: DO 03 BNE NXT.COL IF NO PAGE CROSSING
4028; EE 1F 40 INC ROLLER+2 NEXT PAGE
4O2E: C6 FF NXT.COL DEC COLUNNS DONE WITH ROW?
4030: DB D4 BNE DO.NEXT NOPE!
4932: 20 3A 40 JSR NEXT.Y GET NEXT Y POSITION
4035: C6 FE DEC ROWS DONE WITH GRAPHIC?
4037: DO CA BNE DO.ROW NOPE!
4939: 60 RTS
403A: 18 NEXT.Y CLC ‘ADD Y SCALE TO Y POSITION
4038: AS E2 LDA HGR.Y
4030: 65 02 ‘ADC YSCALE DEFAULT SCALE = 1
403F: 85 E2 ‘STA HGR.Y
4041; 68 RTS
4042: 20 8A F4 MOV.ALONG JSR MOVE.RIGHT GO RIGHT
4945: C6 03 DEC XSCALE1 DONE GOING RIGHT?
4047: DB 28 BNE CLC.RTS NOPE,
Continued on next page
its smallest size, The Graphic Grabber
examines an area of pixels on the hi-res screen
for each pixel that will appear in the current
graphic buffer. The area of pixels that are
examined differs and can be found by
multiplying the x-scale by the y-scale. The lit-
dot sensitivity tells The Graphic Grabber 3.0
how often to make the corresponding graphic
pixel “‘lit"’. When the sensitivity is set as high
as it will go (this changes with each window
size), then there only has to be one lit dot in
order for the corresponding graphic pixel to
be lit. Likewise, when the sensitivity is set
to the lowest setting, all of the dots have to
be lit in an area before the corresponding
graphic pixel will be lit.
You will discover that different types of
to be properly ‘‘grabbed’’. For example,
digitized pictures or pictures that have a lot
of gray scale in them usually work best on a
sensitivity that is half of the maximum.
Pictures that have few lit dots will probably
require high sensitivity settings and pictures
that have many lit dots will almost always
require low sensitivity settings.
Move Buffer to Screen
Pressing ‘‘€H)"’ or left arrow key will
fill the window with the graphic found in the
current graphic buffer. If the window is large
than normal (x-scale or y-scale greater than
1) then the graphic will be stretched
accordingly. In other words, one pixel in the
graphic buffer could be placed on the screen
as several pixels if the window is larger than
normal.
Disk Access
When the disk access routine is invoked
(press ““D’") you will be presented with a mini
menu which provides 4 options: 1) Load hi-
res screen, 2) Save hi-res screen, 3) Load
graphic buffer and 4) Save graphic buffer.
‘You must then press the number of y«
choice (if you accidentally typed the ‘‘D'’
command, you may exit this routine by
pressing ESCape).
When asked for a filename, you may press
RETURN to get a directory. To exit the
current function, press ESCape. After the
filename, you may put slot, drive and volume
parameters. For , if you wanted to
load a file called EXODUS from drive two,
you would type
EXODUS,D2
as a filename. Just typing a slot drive or
volume number will display the directory of
that disk. For example, if you wanted a
CATALOG of the disk in slot 6, drive one
you would type
»86,D1
as the filename.
Hardcore COMPUTIST No. 20
17
Leaving The Program
If you press ESCape while in the move
window mode, you will leave the program.
You can start it up again with everything intact
by typing RUN.
Printing Hi-res Screen
Ne
Although I have provided Graphic Grabber
3.0 with a command (‘*@)P)’’) which would
allow it to dump a hi-res screen to a printer,
as the program now stands, pressing ‘(=)P)””
WILL NOT do this. Due to the many printer-
interface combinations that exist, I found that
this was impractical and have not implemented
a print routine. Therefore, if you wish to be
able to print out the hi-res screen you must
add your own printout routine starting at line
1010. This should be a fairly trivial task if
you have a printer and interface card with
graphics capabilities.
A Bit About Graphics
A graphic created with the graphic editor
section of The Print Shop is a normal Binary
file with a length of $240. However, The Print
Shop will recognize any normal Binary file,
that the directory says is four sectors long,
as a graphic,
The first 572 ($23C) bytes define the
graphic and the rest are ignored. These bytes
are arranged as fifty-two rows of eleven bytes.
Each bit in the rows corresponds to a pixel
with the most significant bit (bit 7) of each
byte being the leftmost pixel. Row two
‘sequentially follows row one and so on. This
makes the maximum size of a graphic equal
to 88 x 52 pixels.
Do It Now!
I hope my description of The Graphic
Grabber 3.0 has intrigued you enough to type
the programs in and try them out. Of course,
you will need The Print Shop in order to fully
utilize it. If you have not yet purchased this
fine Broderbund program, I suggest you do
so as soon as possible. It is one program
Se een Bs ed ome
f.
The Graphic Grabber 3.0
BASIC Program
10 REM B&SSEGGEGESELEELELERLELE
20 REM & &
30 REM & GRAPHIC GRABBER 3.0 &
40 REM & FOR &
SOREM& THE PRINT SHOP = &
60 REM & BY &
70 REM & RAY DARRAH &
80 REM & &
9D REM G&EGELELERLELELELEELELEE
100
REM
110 REM INITIALIZE VARIABLES
|
i
i
i
§
gegnseengagesseeses
8
E
=
223
af
SEURBE
B
E
& 8
a a
ape fg
355
rags
ES
HE
41 =(NO.FLIP
WOVE SCALES
SSITSSSS BSR
CLC.RTS
BEABSESSRSRSESSERA
eas
REPLACE XSCALE1 WITH XSCALE
NEXT YPOSITION
FIGURE WHERE WE ARE
DONE MOVING DOWN?
NOPE!
DONE WITH BLOCK SO FIX EVERYTHING
WOVE UP TO TOP OF BLOCK
AND FIRST POS OF IT
CALCULATE WHERE WE ARE
C=1 - DONE WITH BLOCK
WOVE BUFFER TO SCREEN
JSR SETUP
00.ROWL
DO. NEXTI
RBS
ess
GET.BIT GET A DOT
PLOT.EM
BCC FORCE]
Sass
‘AND (WON.GBASL) ,Y FORCED!
-HS 2C
ORA (MON. GBASL) , Y
STA (WON.GBASL) ,
PHP x
ALONG
FORCEL
Be
a
a
VE CARRY
&
%
5
ge
2
sg
8
g
1TH ROW?
5
nanaags
8
=§
BADR BS
rs
35
z
35
8
g
GET.BIT
il
“248
*
&8 sss3s
=
3a
8a
ake
#
SMSSRSS8m SPRLSSLSSSSLKSlsSSsssyess
&
SSSSESESE SSSSSESHSESERERESSSSSS
ARRESERES ARBZARSE
a
Hardcore COMPUTIST No. 20
INITIALIZE STUFF
JSR STARTROW SETUP FOR EACH ROW
SAVE CARRY STATUS (DOT ON OR OFF)
RESTORE CARRY STATUS
LDA WON.HMASK GET MASK BYTE
IF CARRY CLEAR, THEN FORCE A ONE
EOR #$FF OTHERWISE, FORCE A ZERO
SKIP NEXT TWO BYTES
L BITS ACCORDING TO SCALE
KEEP GOING
CORRECT STACK POINTER
Y POSITON
1TH GRAPHIC
GENERAL SET UP ROUTINES
SVRFSSSS SRBSSRSSRSSERSSERS
és
SSSESTSSRSSSnSSS
§S58858 SERSSESS858888
STA BITS
a
STA ROLLER+2 STORE IT
STA GET.BIT+2
LOX #9 INITIALIZE X
LDA #52 52 ROWS
STA ROWS
LDA HGR.X SAVE STARTING X
‘STA STARTX
‘STARTROW LDA #88 88 COLUMNS
COLUMNS:
LDA #8 EIGHT BITS IN A BYTE
LDA #$58 GET BUFFER MSB
58
FF STA
95 LDA STARTX MOVE STARTING X TO CURRENT X
=) STA HGR.X
96 LDA STARTX+1
El STA HGR. X+1,
7 JSR HPOSN1 © CALCULATE CURRENT POSITION
2: RTS
WOVE WINDOW
49E3: 8D 10 CO DONE.MOV STA $CO16 CLEAR KEY
4QE6: 20 3A 41 WOVE.W JSR DO.SQUARE
40E9: AD 50 LOY #80
4QEB: A2 50 TEST.X LOX #80
4QED: 2C 08 CO TEST.Y BIT $COOO KEYPRESS?
40F0: 30 08 BM! EVALUATE YUP
40F2: CA DEX WAIT A WHILE
40F3: DO F8 BNE TEST.Y
40F5: 88 DEY
40F6: DO F3 BNE TEST.X
40F8: FO EC BEQ MOVE.W
AFA: AS FB EVALUATE LDA STATUS.SQ SQUARE ON?
4FC: FO 03 BEQ SKIP.ER NOPE
4OFE: 20 3A 41 JSR DO. SQUARE
4101: AD 00 CO SKIP.ER LDA $C000 © GET VALUE
4104: C9 C9 CUP #$C9 MOVE.UP?
4106: DO 09 BNE TST.J
4108: AS E2 LDA HGR.Y
410A; FO 07 BEQ DONE. MOV
410C: C6 E2 DEC HGR.Y
419E: 4C E3 40 JMP DONE. MOV
4111: C9 CA TST.J CMP #SCA WOVE LEFT?
4113: DO 99 BNE TST.K
4115: AS EO LDA HGR.X
4117: FO CA BEQ DONE. MOV
4119: C6 EO DEC HGR.X
Continued on next page
120 IE PEEK CLABSA) + PEEK (1688 ) 2 208 THEE
PRINT CHRS (4) "BLOAD*OBJ .GRAPHIC*GRAB
BER,
130 HIWEM: 8191 : POKE 251 ,0 :Wl=1:W2=1;
See aecaee NE IE Oe ene
A
149 POKE 1 1: POKE 2,1 :X=96 :Y=70 Wel
: POKE 16716 ,51 : POKE 16737 ,51 : POKE
16412 W
150 A$ = "" :ESC$=CHRS (27 ) :K$ = CHRS (9°) +
CHRS (8 ) + CHRS (21 ) + "DXY12SRP*C" +
ESC$ + CHRS (16 )
160 GOSUB 86 : ONERR GOTO 820
170 REM GET A KEY
189 GOSUB 950 : POKE 225 ,X / 256 : POKE 224 ,X
~ PEEK (225 ) * 256 : POKE 226 ,Y
190 CALL 16611 :X = PEEK (224 ) + PEEK (225) *
256 :¥ = PEEK (226 ) : GET AS
200 FOR A=W TOLEN (K$) : IF A$<>MIDS (KS ,A
,W) THEN NEXT :W1 = W~W1 : GOTO 180
210 ONAGOSUB 260,380 , 400 ,580 ,320 ,350 220
230 470 ,450 , 510, 240 420 , 998, iow
‘'g0To 180
220 POKE 16565 ,85 : RETURN
230 POKE 16565 ‘88 : RETURN
240 W2 = W-W2 ; RETURN
250 REM TAB TO NEXT POSITION
260X=X+92: IFX> 192 THENX=4 :Ye¥ +61
2 IFY> 140 THENY = 9
270 RETURN
280 REM DO MONITOR COMMAND
290 AS = AS + "*N*D9CEG" : FORA=WTOLEN (AS
) : POKE S11+A, ASC ( MIDS (AS ,A,W) )
+128
300 NEXT : POKE 72 ,0 ; CALL - 144 : RETURN
31 REM INCREMENT XSCALE
320 POKEW , PEEK (W) +W: IF PEEK (W) =4 THEN
POKE W ,W
330 POKE 16702 , PEEK (W) * 88-45 ; POKE 16723
, PEEK (W) * 88~ 45 : POKE 16412 , 1 + PEEK
(W) * PEEK (2) / 2 : RETURN
340 REM INCREMENT YSCALE
350 POKE 2 , PEEK (2) +: IF PEEK (2) = 4 THEN
POKE 2 ,W
‘360 POKE 16737 , PEEK (2) * 52-1 : POKE 16716
, PEEK (2) * 52-1 : POKE 16412 ,1 + PEEK
(W) * PEEK (2) / 2 : RETURN
370 REM PUT GRAPHIC ON SCREEN
380 AS = "4F90<5500.5A40M" : GOSUB 290: CALL *
16499 :A$="5500<4FO0.5440M" : GOTO 290
390 REM PUT GRAPHIC IN’ BUFFER
400 CALL 16384 : RETURN
419 REM CLEAR HI-RES SCREEN
420 POKE 34 , 20 : HOME : POKE - 16301 0 : PRINT
: PRINT "“OK“TO*CLEAR*H |-RES “SCREEN? “N"
CHRS (8); : GETA$ : PRINTAS : IFAS="¥"
THEN CALL 62459
430 TEXT : RETURN
440 REM REVERSE BUFFER
450 CALL 16785 : RETURN
‘460 REM GET NEW SENSITIVITY
476 VTAB 23 : HTAB 15 : INVERSE : PRINT "(1~"
PEEK (W) * PEEK (2) ")" : NORMAL : HTAB
1 : POKE - 16301 ,0
480 HTAB 14 : GET A$ : VTAB 23 : HTAB 15 : PRINT
SPC( 15) : IFA$<"1" ORAS > STRS ( PEEK
(W) * PEEK (2) ) THEN RETURN
499 POKE 16412 , VAL (A$) : RETURN
500 REM JUMP TO NEW POSITION
Hardcore COMPUTIST No. 20
510 POKE 34 ,20 : HOME : VTAB 22 :
"CURRENT*POSITION=>" X'"," Y :
TAB( 25 +); INVERSE
" (9-192, 0-149)"
NORMAL : POKE - 16301 ,@ : VTAB 24 :
"NEW*POS|TION*(X,Y)=>" ;
530 FLASH : PRINT "*" CHR$ (8); : NORMAL : WAIT
te aed 128 : IF PEEK ( - 16384 ) = 155
PRINT
PRINT
PRINT
PRINT
540 | WT oes jA,B:A= INT (A) :B= INT (B) :
IFA<@ORA> 1920RB<@ORB> 149 THEN 560
570 REM DISK ACCESS
580 TEXT : POKE 34 , 2 : HOME : VTAB4 ; PRINT TAB(
14) "DISK*ACCESS" : VTAB 7
590 PRINT "“1)*LOAD*HI-RES*SCREEN” : PRINT :
PRINT "*2)*SAVE*HI-RES*SCREEN” : PRINT
600 PRINT "*3)*LOAD*GRAPHIC*BUFFER*" ( PEEK
(16565 ) - 85 ) / 341: PRINT : PRINT
"*4) *SAVE*GRAPHIC*BUFFER*" ( PEEK
(16565 ) - 85) /3+1
610 PRINT : PRINT : PRINT "WHICH?" CHR$ (8 );
620 GET AS : IF A$ <."1" OR A$ > "4" THEN 660
630 ON VAL (A$ ) GOTO 640 678 699 ,710
640 A$ = "LOAD*HI-RES*SCREEN" : GOSUB 740 : IF
F$ = ESC$ THEN 660
650 PRINT CHR$ (4) "BLOAD" F$ ",A$2000"
660 TEXT : GOTO 860
670 A$ = "SAVE*H|-RES*SCREEN" : GOSUB 740 : IF
F§ = ESC$ THEN 660
680 PRINT CHR$ (4 ) “BSAVE" FS
" ,A$2000,L$2000" : GOTO 660
690 A$ = "LOAD“BUFFER*" + STRS (( PEEK (16565
)-85) /3+1) : GOSUB 740 : IF F$ = ESCS
THEN 668
700 PRINT CHR$ (4) "BLOAD" F§ ",A" 256 * PEEK
(16565 ) : GOTO 660
71.A$ = "SAVE“BUFFER*" + STR$ (( PEEK (16565
)-85) /3+1) : GOSUB 740 ; IF F$=ESCS
THEN 668
720 PRINT CHR$ (4) “BSAVE" F§ ",A" 256 * PEEK
(16565 ) ",L$249" : GOTO 660
730 REM GET A FILENAME
TAQ HOME ; PRINT ; HTAB 20 -LEN (A$) /2 : PRINT
AS: VTAB 6 : PRINT TAB( 8 ) "RETURN“DO
ES*A*DIRECTORY"
+ FLASH :
750 VTAB 12 : PRINT "FILENAME=>" ;
PRINT "*" CHRS (8); : NORMAL
760 WAIT ~ 16384 , 128 : IF PEEK (- 16384) = 155
THEN RETURN
F PEEK (512+LEN (F$) ) THEN
VTAB PEEK (37) : CALL 64578
780 FOR A = 512 + LEN (F$ ) TO 768 : IF PEEK (A
) THEN F§ = F§ +CHR$ ( PEEK (A) ) : NEXT
790 IF F§="" ORLEFT$ (F$ ,W) =", " THEN HOME
: PRINT CHR$ (4) "CATALOG" F§ : PRINT :
PRINT "PRESS*A*KEY*" ; : GET F$ : GOTO 749
‘800 RETURN
810 REM ON ERR HANDLER
baer ERR = PEEK (222) :
THEN RESUME
830 TEXT ; HOME : VTAB 12 : PRINT "ERROR“#" ERR
CHRS (7 )
840 F$ = ESC$ : FORA=1 TO 1500 : NEXT
850 REM PRINT COMMANDS
860 HOME : PRINT "GRAPHIC*GRABBER*3 .9" SPC(
4) "BY*RAY*DARRAH* |||"
870 VTAB 4 : PRINT "P=JUMP*TO*NEW*POSIT ION”
: PRINT "1-2=GRAPH|C*BUFFER™
IF ERR > 254
Continued from previous page
411B: 4C £3 49 JMP MOV
411E: C9 CB TST.K CMP #$CB WOVE RIGHT?
4120: DO OA BNE TST.M
4122: AS EO LDA HGR.X
4124: C9 CO CUP #SCO
4126: BB BB BCS DONE.MOV
4128: £6 EO INC HGR. X
412A: DO B7 BNE DONE.MOV
412C: C9 CD TST.M = CMP #$CD MOVE DOWN?
412E: DO 3D BNE OTHER. KEY
4130: AS E2 LDA HGR.Y
4132: C9 8C CHP #149
4134: FO AD BEQ DONE. MOV
4136: £6 E2 INC HGR.Y
4138: DB AS BNE DONE. MOV
DO. SQUARE
413A: 20°77 41 JSR HPOSN1 GET FIRST POS
4130: A2 2B LOX #43 SCALE=43
413F: AS OO LOA #8 ROT=0
4141: 20 6E 41 JSR XDRAWL == DRAW IT
4144: A2 2C LOX #44 SCALE=44
4146: A9 00 LOA #0 ROT=9
4148: 20 GE 41 JSR XDRAWL
414B: A2 33 LOX #51 SCALE=51
4140: Ad 19 LDA #16 ROT=16
414F: 20 GE 41 JSR XDRAWL = DRAW IT
4152: A2 2B LOX #43 SCALE=43
4154: A 20 LOA #32 ROT=32
4156: 20 6E 41 JSR XDRAW = DRAW IT
4159: A2 2C LOX #44 SCALE=44
4158: Ad 20 LDA #32 ROT=32
415D: 20 6E 41 JSR XDRAWL
4160: A2 33 LOX #51 ‘SCALE=51
4162: Ad 30 LOA #48 ROT=48
4164: 20 GE 41 JSR XDRAW1 — DRAW IT
4167: AS FB LDA STATUS. SQ
4169: 49 O1 EOR #301
4168: 85 FB STA STATUS.SQ
4160: 60 OTHER. KEY RTS
416E: 86 E7 XDRAWL — STX HGR. SCALE
4170: A2 8F LOX #SHAPE
4172; AD 41 LOY /SHAPE SB
4174: 4C 5D F6 JMP XDRAW
4177: 86 FC HPOSN1_~=«STX XSAVE DON'T MESS UP X
4179: AS E2 LDA HGR. Y
4178: AG EO LOX HGR.X
4170: A4 El LDY HGR. X+:
417F: 20 17 F4 JSR HPOSN CALCULATE STARTING ADDR
4182: AG FC LOX XSAVE —-RESTORE X
4184: 60 RTS
4185: 68 FIX.ERR PLA POP STACK
4186: AB TAY
4187: 68 PLA
4188: AG DF LOX $DF FIX POINTER
418A: 9A TXS
4188: 48 PHA
418C: 98 TYA
418D: 48 PHA
Hardcore COMPUTIST No. 20
4160: A2 33 A9 30 20 GE 41 AS SFOF3
4168: FB 49 01 85 FB 60 86 E7 SIF8B
4170: A2 8F AD 41 4C 5D F686 $0037
418F: 95.00 SHAPE HS 9500 Bs 4188: AG DF 9A 48 98 48 69 95 © $0C77
’ . 4190: 9 A2 63 AB 09 AD BS 49 sos
. 4198: 85 FF 84 FE Bl FE 49 FF S$
; Se et ee ; 41AB: 91 FE C8 DO F7 E6 FCA $B4l5
AIA: DO F2 60 spca4
dial: A263 Lx #3 NUMBER OF PAGES TO REVERSE
: Ad 08 Lov #0 INITALIZE Y
4195: AD B5 49 LA WSB+1 GET CURRENT BUFFER MSB The Graphic Grabber 3.0
pte: 85 FF STA COLUMNS STORE ZERO PAGE BASIC Checksums
19A: 84 FE STY ROWS ZERO LSB
419C: Bl FE REVERSE LDA (ROWS) ,Y GET BYTE 10 - SBADD 528 - $1167
419E: 49 FF EOR #SFF REVERSE IT 29 - $913. 530 - $DEQA
41M: 91 FE STA (ROWS) ,Y PUT IT BACK 30 - $4D3B 549 - $2640
41A2: C8 INY NEXT BYTE 40 - $AD92 550 - $1CB6
4103: DO F7 BNE REVERSE NOT END OF PAGE YET 56 <- $0009 S08 SAND 4
4105: £6 FF INC COLUMNS. NEXT MSB 6 - $FFGS 570 - $8200,
41A7: CA DEX DONE WITH GRAPHIC? 1) - SASF 58H = SBS
i 80 - $A90B «598 $0543
A1AB: DO F2 BNE REVERSE NOPE, CONTINUE
AIAA: 60 RTS Yup, EXIT 99 - $9240 608 - $OC5A
199 - §CB63 «G10 ‘SCAB t
10 = $8013 620 = $3178 Se]
£ 120 - are 630 - sell a
130 - 69 -
BBO PRINT : PRINT "X=CHANGE*XSCALE" TAB( 25) 4040: E2 60 20 8A 03 09 $3F6D io ts pr pit od |
OACLENE SCHED: SPRINT *YeCHANGE*YSC 4048: 28 A G1 85 £2 20 $6998 160 $2928 «670 $8453
890 PRINT TAB( 25) "ESC=EXIT® : PRINT: PRINT 4050: 77 38 AS $1874 Has cies oa oo tae Kl
"S=LIT*DOT*SENSITIVITY" : PRINT 4958: E2 AS EO $5565 199 - $6883 700 - SEAFB :
"<SPACE>=T OGGLE*PARAMETERS" 4060: 65 £6 El $1834 200 © - $EBD8 710 = $BAEE Bet
900 PRINT : PRINT "<-sMOVESGRAPHIC*TO“SCR 4968: 26 04 38 $9822 210 - SSFFF «= 720 ‘SBCIE a
EEN" : PRINT "->=MOVE*GRAPHIC*TO*BUF 4070: 60 20°03 $0357 E 4 of
ea pi je aed 220 -- $770E 730 - $5972,
910 PRINT : PRINT "D=DISK*ACCESS” : PRINT : 90 20 11 $5368 ie NG i ee aed
"ReREVERSE“BUFFER™ 6 4990 $1280 760 — SMMCB
920 PRINT : PRINT "<CTRL>|=JUMP*TO*NEXT*GR- EC 20 3A $9366 770 - $8002
APHICSPOSITION" : PRINT "?=SWITCHBE 0 1E 0 $FBCO 780 - $32AA
‘TWEEN*THIS*SCREEN“AND*HI-RES"
SSSSSSRSRS SSSLSSSSSNse Sz
6
&6
41 06 04 06 18
£5 02 85 E2 18
O1 85 E9 96 02
77 41 AS 02 85
18 66 20 BO 49
26 9E 40 08 28
4080: 96 05 49 FF 31 26
4088: 26 91 26 08 26 42
4090: EC 28 C6 FF DB E3
4098: 49 C6 FE DB 09 60 c
930 RETURN 4OA0: 58 C6 FD DO GA A9 G8 85 —$7ED6 800 - $5880 °
940 REM PRINT PARAWETERS ¥ 4QA8: FD E8 DO 03 EE AD 40 60 $0446 810 - $5DA3 R
SSOHTABW : VTAB 22 : PRINT "XSCALE=>' PEEK (1 4980: A9 08 85 FD A9 58 8D IF $9687 820 - $4EC7 Ez
) TAB( 26 ) "YSCALE=>" PEEK (2) ; PRINT 4088: 49 8D AB 40 A2 GO AS 34 SADBS 830 $065E
960 PRINT "SENSITIVITY=>" PEEK (16412) TAB( 4909: 85 FE AS EO 85 05 AS El SFCAF 840 SU6TF
o> BUFFER=>" ( PEEK (16565) -85)/3 49C8: 85 06 A5 01 85 03 A5 02 $EE72 850 - $4EB7
; 4000: 85 04 60 AD 5885 FFAS $8C88 “
QTOPOKE -16302-4W2 ,N2 : POKE-16304+W1,W1 poe; Os OS EO AG 66 88 E1 29 S0GEA pester
: POKE ~ 16297 + M1 ,W1 : RETURN 490: 77 41 60 80 10 CB 203A $0702 880 - $5007
960 REM EXIT PROGRAM AEB: 41 AB 50 A2 50 2C 09 CB $95C8 898 - $9333
tac imr me
INTOUT. HI-RES: SCREEN 40FO: 36 08 CA D6 F888 DD F3 SEFB3 400 - $76AE = 910 - ‘$9C2A
ae 40F8: FO EC AS FB FO 03 203A $470F 410 - $7E53 (920 - SEB46
4100: 41 AD 00 CB C9.C9 Dd 99 $1E9D 420 - $F908 = «930 - ‘$208A
4108: AS E2 FO D7 C6 E2 4c E3 $5062 430 - $0187 «940 ‘SA760
The Graphic Grabber 3.0 4110: 49-09 CA DO 9 AS EO FO $90C3 440 - $C33F = 950 - $3882
Hexdump 4118: CA C6 EO 4C E3 49 .C9 CB $899F 440 - $C33F «950 - $3882
4120: DB GA A5 EO C9 CB BO BB $BE53 450 - $BBSA 960 - SO74E
4000: 20 BO 40 20 D3 40 A9 BO $43CC 4128: £6 EO DO B7 C9 CD D6 3D $BA1B 460 - $6ACS «(970 - $8063
4008: 85 00 AS 30 29 7F 31 26 $9092 4130: AS E2 C9 8C FO AD EG E2 $6223 470 - $2031 «980 - SOASE
4010: DB 02 E6 OO 20 42 40.90 SDFCB 4138: DB A9 20-77 41 A2 2B AD $225 480 - $6ACh = 990 - SDDD5
4918: FAS 08 C9 G1 3E 00 58 $33BF 499 - $3860 ©1900 - $7C7D
4020: C6 FD DO OA A9 08 85 FD $1A68 4140: 08 20 GE 41 A2 2C A999 $638C 500 - $6147 1010 - $1780
4028: £8 DO 03 EE IF 40 C6 FF $A888 4148: 20 6E 41 A2 33 -A9 10 20 $CBOB 510 - $1288
4030: DO D4 20 3A 40 C6 FE DO $ALA2 4150: GE 41 A2 2B A9 20 26 6E SLAB
4038: CA 60 18 AS E2 65 02 85 $0948 4158: 41 A2 2¢ A926 20 6E 41 $4035, £
Hardcore COMPUTIST No. 20 2
COPY Us
B03
A Review
By Dr. Phillip Romine
US OY REALLY NEW?
Happily, | can offer an unequivocal yes and no! The changes
In Copy Il+ 5.0 are only evolutionary in the bit copier’s
performance, but revolutionary in convenience and ease of
use. Furthermore, the limited copy protection on the earlier
versions has been removed and the price has remained at an
astonishingly low $39.95.
The improvements in Copy Il+ Version 5.0 can be summarized
under three headings: changes and additions to the bit copier
program (extensive), changes in bit copier copying
performance (modest), and changes or additions to the utility
programs (few, but valuable).
Changes and Additions
to the Bit Copy Program
he most revolutionary change to the
bit copier is in the automatic loading
of parameters. Although Nibbles
Away has offered this feature for
some time, with Locksmith adding it also more
recently, I find the Copy II+ approach much
more convenient because the parameters are on
the disk with the bit copier; no disk swapping
is necessary. Also, with the lack of copy
protection, if the parameter list ever grows too
large to fit onto the entire Copy I+ disk, the
user can easily put the bit copier and parameters
n a separate disk. The parameters are also very
easy to find and retrieve. If you know the name
of the parameter you want, you simply type it
in. If not, Copy I+ will provide its directory
for you to view and also make available a
convenient search feature. If you don’t know
exactly how a parameter is listed - as is usually
the case - simply enter the first few characters
of the probable title. The program presents a
list of all the parameters with the beginning you
specified and allows you to choose among them
with a keystroke. The user also retains the
options of entering parameters manually or of
recopying specific tracks after the parameters
have been entered either automatically or
manually.
I must confess that I was unimpressed with
this new auto-loading of parameters at first. I
had used the Nibbles and Locksmith auto-load
features and, furthermore, had never considered
the entry of parameters manually any real
chore. But after only a few uses, I was hooked.
Now I would rather never again enter
parameters manually.
A second valuable addition to the bit copier
program is a high resolution disk scan. It seems
identical to the Locksmith Quickscan feature
which, in my opinion, is the best such function
of its type. It gives the user a visual overview
of which disk tracks contain data, allows you
to spot spiraled tracks and half tracks, and
doesn’t cause the disk drives to run incessantly
(unlike similar functions on some other popular
bit copiers).
A new sector copy program has also been
included in the bit copier package. This
addition, like Back-It-Up’s ‘‘Copy Sectors’
option, is intended for more reliable copying
of protected disks with a near-normal DOS. The
Copy I+ Manual states that this program, ‘can
handle a few protection schemes more readily
than the manual bit copier,’’ but does not
22 Hardcore COMPUTIST No. 20
elaborate, The sector copy program also
handles the disks with bit insertion protection
that used to be copied by the copy disk from
the main menu. Some additional parameters
have been added for use by this program.
The remaining new bit copier functions are
to be used in the creation, editing, storing, and
use of your own parameters which you may
want to add to the autolisting. A very minimal
text editor is provided for working with the
parameter files.
Bit Copier Performance
The Copy I+ manual and promotional
literature make two basic claims about the bit
copier’s performance: 1) that it offers
completely revised nibble counting and track
analysis routines, and 2) has the ability to copy
more disks than before. I was able to verify one
of these.
The automatic nibble counting of the new
Copy II+ is much improved over the earlier
4.4C version. On my disk drives, the optimum
copying speeds seem to be 199.5
millisecond/revolution on the original drive,
and a slower 201 m/r on the copy drive. Even
with this di , the keep track length
(nibble count) option was able to reconcile the
track lengths most of the time. With earlier
versions of the program, I always had to use
one drive or turn to EDD for the nibble count.
An added advantage is that the count is high
speed. On some competing disks, especially
Locksmith, the time required to nibble count
a single track can seem interminable.
Unfortunately, I was not able to verify the
claim that Copy II+ can now backup more
disks. I don’t question the assertion but, on the
disks which I had available at the time, with
but one exception, there was no discernible
difference in copying performance between the
5.0 and 4.4C versions. In general, these disks
ranged from difficult (Simon Says - MECC
Sunburst) to very difficult (Pop ’R Spell -
Milliken and the Britannica series). All of these,
by the way, yield readily to Super IOB with the
Swap Controller. On these disks, and some
others of similar difficulty, either 4.4C and 5.0
would both make a workable copy, or neither
version would do so. The one exception was
an easier disk (Sensible Speller - Sensible
Software). The 5.0 version of Copy I+ would
make a good copy almost every time, while the
hit rate for 4.4C on that program was only about
33% without recopying certain tracks. So
perhaps my disk sample was too hard for a fair
test. But for the present, I must assume modest,
if any, improvement in copying ability when
nibble counting is not required. I should add,
however, that 4.4C is already an excellent
copier, one of the best available, so a lack of
marked improvement after the recent upgrading
to version 4.4C isn’t surprising. A new
programmable version of Nibbles Away is due
any day now and Echo II is due out this spring.
Performance comparisons of these two updates
with Copy I+, E.D.D. and Locksmith should
be fascinating.
Changes and Additions
to the Utilities Section
All of the old utility program functions which
have proven so useful and popular are still on
the Copy II+ disk. There are also some
welcome additions.
One of the first things that you might notice
when viewing the main menu is that the order
of the options has changed slightly.
“CATALOG DISK"? is no longer
the first entry; it has been replaced
by ‘‘COPY”’. In addition, ‘*BIT
COPY” no longer appears in the
main menu at all but has
been moved to the
“COPY” submenu. The
Sector Editor is, thank-
fully, much im-
proved. There is
now an option to
read the sectors
from a spec-
ified file, a
disassembly
option, a
(text) screen
dump, read
next (+) or
last (-) sector,
and a search
function.
The patch option now offers a custom patch
which allows the changing of address and data
headers and trailers, ignoring of checksums,
and selection of the different encoding methods.
This custom patch ability should expand the
number of protected diskettes which can be read
and sector edited by the program. A new
utility allows the user to alphabetize the disk
catalog, view the rearranged titles, and make
them permanent if the aesthetics are pleasing.
One minor inconvenience of the option is that,
once it has been used, there is no way to
“‘unalphabetize’’ a disk’s catalog short of
getting out another disk utility such as Sensible
Software’s Disk Organizer.
The main menu COPY DISK has been
updated so that it is faster on a //c or //e with
128K of memory and (according to the manual)
more reliable. It is now strictly a fast-copy
program for unp
Showing the first 100000 of 147007 characters.