Colourmon 1.2
Colourmon is a 6809 machine code program for the color computer's memory
through the use of hexadecimal representation of binary. It is made up of
several subroutines, some of which give this program certain useful facilities.
It is designed to run without normally disturbing the BASIC functions.
The sort of facilities this program gives you are:
1.Memory Examine.
2.Memory Change.
3.Execution Transfer.
There are two straight memory examine facilities and give two formats
of display. The first display is a hex dump to the screen,and is 128 memory
locations with ASCII character equivalents. The second straight memory examine
display is a complex display of 6809 machine code groups. Each of the 16 lines
of this display is made of an address of a 6809 opcode byte and the opcode byte
following. The display continues however, in determining how many bytes
accompany that opcode byte to form a complete instruction, and puts these bytes
on the same line as the opcode. This particular display closely resembles an
assembler printed output of memory and contents.
There is one straight memory change facility. This facility enables
any number of memory locations to be changed to a desired code. There is
another facility which gives both memory examine and memory change on a byte at
a time basis. This enables the typing in of machine code programs.
There is two straight 6809 execution transfer facilities. The first
transfer enables the 6809 to begin execution of any block of machine codes.
This could be used to 'run' a machine code program typed in using one of the
other facilities. The other transfer of 6809 execution is a return to the
BASIC ROMs. There is one last facility which combines memory change and
transfer of execution facilities. It is possible to fill certain areas of
memory with a copy of Colourmon and transfer execution to the copy. The old
copy is no longer required.
After Colourmon is loaded and EXECuted there should be displayed:
COLOURMON 1.2
*
This is the name of this program, the version number and an asterix
placed below immediately followed by the multi-coloured cursor. The asterix is
a prompt from Colourmon awaiting a command from you.
There are seven commands giving you access to the seven facilities of
Colourmon. The facility is invoked by typing a single letter. The letters are
E,F,G,M,O,S, and X. The letters have been selected by association with the
facility it invokes.
(1) E Examine a 128 byte block of memory.
(2) F Fill a block of memory with a code.
(3) G Go to machine code program.
(4) M Memory change of a desired location
(5) O Opcode display of a machine code program.
(6) S Shift Colourmon elsewhere.
(7) X eXit to the BASIC ROMs.
1. After typing E,Colourmon should reply with:
*E
BEG ADDR ?
The required answer to the question "Beginning Address?" is the address
of one of the bytes in a 128 byte block and the address has to be inputed using
four of the permissible hexadecimal digits i.e. 0-9 and A-F.
After the block is displayed,typing a "space" will display the next 128
byte block and "enter" will allow return to Colourmon.
2. After typing F,Colourmon should reply with:
*F
BEG ADDR ?
The required answer to the question "Beginning Address?" is the address
of the start of the block of memory you want to change.
(warning: this command is dangerous!)
After four hexadecimal digits have been typed the display will now have
another question:
*F
BEG ADDR ?A000
END ADDR ?
This is asking for the "Ending address?" of the block of memory you
want to change. After four hexadecimal digits have been typed there will be
one last question:
*F
BEG ADDR ?A000
END ADDR ?BFFF
FILL CHAR?
This asking for the desired code you desire to place in the block
previously specified after "BEG ADDR ?" and "END ADDR ?". The desired code
only needs two hexadecimal digits but after they are typed the memory is
immediately filled and hopefully the display will return with the prompt.
Note, in this example I have put the beginning and end addresses of ROM which
won't change but is safe to try.
3. After typing G, Colourmon should reply with:
*G
BEG ADDR ?
This is asking for the address where you desire the 6809 to start
execution. Four hexadecimal digits will answer the question. The best method of
terminating a small piece of machine code is to finish with a 39, RTS or return
from subroutine.
(Warning: this command is dangerous!).
4. After typing M, Colourmon should reply with:
*M
BEG ADDR ?
This question is answered by typing four hexadecimal digits
representing the address of the bytes you want to change. After typing the
address there is displayed the address you entered and the contents presently
in that location represented in hexadecimal. At this stage their are several
choices:
a) ^ Displays previous address and contents.
b) Typing two hexadecimal digits changes the contents of that byte to
what is typed.
(this can be dangerous).
c)(space) Displays the next address and contents.
d)(enter) Will allow return to Colourmon prompt.
5. After typing the letter O,Colourmon should reply with:
*O
BEG ADDR ?
The required answer to the question "Beginning Address?"is the start of
a 6809 program typed in as four hexadecimal digits. After 16 lines of opcodes
has been displayed a "space" will display the next 16 lines and a "enter" will
allow return to the Colourmon prompt.
6. After typing S,Colourmon should reply:
*S
BEG ADDR ?
The required answer to the question "Beginning Address?" is a very
carefully selected address in read write memory, where you would like Colourmon
to run. Fortunately the shift command does check the block of memory is in fact
read write memory as it copies the old Colourmon to the new location. If it
fails to copy, a question mark will be displayed, but if it is successful,
execution is no longer in the old Colourmon but now in the new copy.
(Warning: this command is dangerous).
Note: 1. Colourmon is 033D hexadecimal bytes in length.
2. The old copy is no longer required.
7. After typing X, the BASIC ROM should reply:
*X
OK
You are now back in BASIC
If you have a printer connected and you are in Colourmon you can
redirect the output of Colourmon to the printer by typing M 006F FE (enter).
To switch back to outputing to the screen type M 006F 00 (enter).
Alan Electron
10 January 1983
----------------------