                                                                  3/1/1999

CodeBuster by Tom Wells (C)1984


This zip file contains CodeBuster and it's help file in an ATR file. The
ATR file contains DOS 2.0 and a menu. The help file has been converted
and is also presented here in this file so you can read it a bit easier.

I wrote CodeBuster in 1984. It is a disassembler, memory scanning,
executable probing, sector reading, file reading and writing tool. It
will disassembler a load module and optionally create labels for the
jumps and branches. 

I am presenting it here for hysterical purposes (funny history). I had a
lot of fun writing it and using it. A friend of mine put it on
Compuserve years ago but it didn't get downloaded much. As my friend
said "This means that Codebuster isn't really much of a videogame." 


Here is the text of the help file as it was written way back then:

   Codebuster is a delightful tool
for the experienced ATARI hacker. It
is a disassembler that will load any
DOS file into a buffer and display
the contents as ASCII, hex, or
6502 instructions. It will write out
this same file as a binary load file.
More than one file may be loaded into
the buffer and then rewritten out as
one combined file.
   It will read boot files, but it 
won't write out boot files.


Press RETURN to go on to the next
page or enter a 'Q' to exit HELP.
 

The next few screens contain the
formats of the commands available
in this program. All of the commands
are entered through the standard OS
input routines and thus must be
followed by pressing the RETURN key.
The commands are entered as single
characters followed by the required
and/or optional positional
parameters. All addresses must be
entered in hex (hhhh). All other
numbers will be in decimal (dddd).
Codebuster does not check for valid
hex or decimal numbers.

 

Here are all the commands available:


Attach, Boot, Change, Display, Enter,
Find, Help, List, Memory, Open, Read,
Send, Unopen, Virtual, Write, eXit,
Zero, %labels, @compress, -=+lister 
options, Get Put


Place holders  * , -


Filenames do not need the "D:".

 

Attach labels to the disassembly.

A

This will turn on the label attaching
logic. Entering the command a second
time will turn it off. However the
labels must first be Entered.

 

Read the Boot file.

B dddd

The decimal number is the max number
of sectors to load. If none is
specified all the sectors in the boot
file will be loaded.

 

Change memory

C hhhh hhhhhhhhhhhhhhhhhhhhhhh
or
C hhhh 'abScefgh...'

Change the contents of memory at hhhh
to the hex string or the ASCII
string. Remember you will be changing
a virtual address which should relate
to a section of code in the code
buffer. You can change memory
anywhere in the machine so be
careful. Using a place holder in the
address will change memory at the
last found address.

 

Display the contents of memory.

D hhhh dddd

Display memory at address hhhh for
the next dddd bytes. This will be a
virtual memory address unless a V is
entered to turn off virtual
addressing. If only a 'D' is entered
the next default number of bytes will
be displayed. A place holder may be
used for the address to change the
default number of bytes without
changing the address.

 

Enter the label file.

E filename.ext

Enter the standard named DOS file to
be used to build a table for the
label attacher. Each entry must have
a $ to start the hex value.

LABEL  = $hhhh   ;comments
or
LABEL  EQU $hhhh ;comments

The labels will be placed at the end
of the program moving the user code
buffer up in memory. If you were
looking at some code it will be over-
written and the virtual addressing
will be incorrect.

 

Find a string

F (F,A) hhhhhhhhhhhhhhhhhhhh
or
F (F,A) 'abcdefghij

The second F tells codebuster to find
the first occurance in the code
buffer. If it is not specified the
next occurance will be searched for.
The A requests codebuster to start at
the front of the buffer and find ALL
occurances of the string. When the
end of the buffer is reached a
message is printed and the find
pointer is reset to the front of the
buffer.

 
Get sectors from the disk

G hhhh dddd hhhh

Get dddd sectors starting with sector
hhhh (first hhhh) and put them at
virtual address (second hhhh). If no
address is given put sectors at
bottom of code buffer. If no count of
sectors is given get 1. If no sector
is given get the first sector.


 
List machine language code.

L hhhh dddd

List machine language code beginning
at hex hhhh for the next dddd
instructions. If the number of
instructions is entered it becomes
the new default. The standard default
is a full screen (21). If only an 'L'
is entered the next default number of
instructions will be listed. A place
holder may be used in the address
field to change the default without
changing the address.

 

Display the Memory location and the
size of the user code buffer.

M


This probably is of little use to you
but it helped me during development
and I didn't have the heart to take
it out.

 

Open the listing disk file.

O filename.ext

This is the file where all output can
be sent with the Send command. The
file must be opened before issuing
a Display or List command with send
pointing to the disk. Once it is open
you may leave it open and Send the
output to the screen or the disk.
When you are done you must close
(Unopen) the file before output can
be sent to another file. Many other
screen messages will go to this file
like the boot file record and binary
load file load ranges.

 
Put sectors to the disk

P hhhh dddd hhhh

Put dddd sectors starting at sector
hhhh (first hhhh) from the virtual
address (second hhhh). If no address
is given put sectors from the bottom
of the code buffer. If no count of
sectors is given put 1. If no sector
is given put to the first sector.


 
Read a binary load file into memory.

R filename.ext

As each block of binary load file is
encountered the program will prompt
you for a response. This allows you
to skip, load, or concantenate
certain portions of a binary file. A
range that is loaded is placed at the
bottom of the buffer. If you load a
second load range it will overwrite
the first and the virtual addressing
will be set to that of the second
load range.

 

You may also concantenate a load
range if it will fit in the buffer.
A concantenated load range
will be placed in the buffer
according to the virtual address
setting.

For example if the front of the
buffer was set to virtual address
$5000 and you tried to concantenate
a load range of $4000 Codebuster
would not allow you to because that
would place the load range below
the buffer in the program area.
The address could also be to high.
That is beyond the top of free RAM.

 

Send output to screen, printer, disk

S D

Send output to the open disk file.


S P

Send output to the printer.

S S

Send output to the screen only.
This cancels Send printer and Send
disk.

 

Output can be sent to the printer and
the disk at the same time.

This entire help file may be printed
by Sending it to the printer.

 

Unopen the listing disk file.

U

This file must be closed in order to
save anything written to it before
leaving CODEBUSTER. If you leave with
an eXit it will close this file for
you, but if you just system reset the
file will be lost. Sorry about the
silly name. I needed the "C" for the
change function.

 

Set Virtual addressing.

V hhhh

If a "V" is entered by its self
virtual addressing will be turned off
and you will be looking at real
addresses. If an address is entered
the start of the code buffer can be
referenced by the address you gave.
It is like  relocating code in
memory. The program starts up with
virtual turned off, or in real mode.

 

Write binary file

W filename.ext lo-addr hi-addr 
  run-addr init-addr alt-addr

This command will create a binary
load file from the code buffer. You
must specify the start and end of the
block of memory to write. You may
specify an alternate address
(changing the virtual address will do
the same thing). Either run and or
init addresses may be specified.
Place holding characters may be used
on run-addr and init-addr.

 

eXit the CODEBUSTER.

X

This will close the listing file and
return you to DOS.

 

Zero out the user code buffer.

Z

This will zero out all of the
addresses specified in the Memory
command. When looking at a section of
code the zeros will help identify
where the code ends.

 

% invoke the internal label processor

% filename.ext

The input file is an assembly listing
from CODEBUSTER. Create the file by
Opening a listing file, listing some
code and Unopening the listing file.
Then give the label processor
the file name The labeler will
gather up all references and then 
verify which ones are internal and
convert all internal addresses to
labels. All undefined opcodes are
converted to AMAC DB commands.

 

@ Toggle the compress option

@

This will place MEDIT tab characters
in and shorten the the output from
the labeler. It is a space saving
feature.

 

Lister options

- list found address - 1
= list found address
+ display found address


When "finding" ASCII or hex strings
these options determine how to tell
you where the string is. The addess
may be displayed or listed. Listing
minus one will allow you to see the
instruction that is associated with
immediate values or addresses in
instructions. Listing or displaying
the address found allows you to see
ASCII strings or assembler
instructions.

 

This program is public domain and
therefore free for the giving and 
getting. My best wishes to all
fellow hackers.


Don't forget -

       Who ya gonna call ....

          ``````````````
          `            `
          ` CODEBUSTER `
          `            `
          ``````````````

