THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDER AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
If you do not know what a debugger, freezer is or if you have never programmed in assembler - forget it - i do not think that TK is something for you -(except if you just want to train some games..)
You probaly know the famous action replay. It was cool! However it was slow, partly bugged and missed major commands. When aga came out there was no toy for those machines. No real update came out - the software version of the action replay was buggy like... . TK is a freezer like the action replay, a lot commands have the same syntax. If you were used to ar then you will find usage very easy. TK supports a maximum of freezer possibility, if you take the time to check out all available functions/settings. This means you have to have major knowledge of your amiga-hardware. If you do not have it then i doubt that you can use the real power of this toy! Of course, TK can not offer such kind of invisibility like the ar as it does not need a 'special' hardware (beside a NMI-button). If you enjoy the demo version, think its useful and do not want to register do not wait for a cracked version. Every registrated version of TK has its own personal id. Any misuse of a registered version will be punished (!!!).
Just a last note! TK patches nearly the whole system! It can not be compatible with any hardware configuration available (eg gfxcards..). I give no warranty for any damage caused by TK! You use it on your own risk!
BTW: The html-documentation is best viewed with NETSCAPE3.0, else read the text version!
TK was designed to run on a system with a mmu, but it also works on non-mmu system. I use tk on a A4000 with 68030/25/68882 (with mmu) and 2 meg chip and 8 meg fast memory. I personally think it works very stable. However even some A4000 have strange behaviour when acessing non existing memory. (eg Goldmans' machine: accessing memory higher $0fffffff will cause not a bus-error (set to dsack) but it kicks around with the custom-regs - they are defintly lost.) As you are a talented user you can change the settings to suit for your configuration (eg disable the memory detection for the $1dc00000++ memory) and load them before TK is initialized!
TK was tested on:
I can not promise that TK will run immediatly on your system. However if you have problems contact me, i will try to fix any incompatibility! So if the demo-version runs on your computer then the registered version will also work fine.
Before i forget it you need kickstart 3.0++ to use all functions (especially the ones to privatize memory). It works also fine with kick 2.04 (some functions will not work), but i do not think it will run suitable on kickstarts less 2.04! TK does not like programms that use the mmu (like vmm programms) TK does not support gfx-cards!
I hope it will also run on a 68060...not checked yet (also i think it should if it works on 68040..)
Commands for manipulating breakpoints
Commands for 'Training' actions
Commands for diskio-access only
? <Value>
Description:
Print value <Value> in differnt bases. This function can be used as a simple calculator.
Example:
A <Address>
Description:
Start assembly at <Address>. The command uses the dis/assembler specified with the D command.
Example:
Description:
Add given pattern <Bytes> bytewise to memory from <Start> to <End>.
Example:
Description:
And given pattern <Bytes> bytewise to memory from <Start> to <End>.
Example:
AVAIL
MEM
Description:
Lists all currently available memory nodes and total memory usage.
Example:
B
Description:
Display all current breakpoints and breakpoint method.
Example:
BD #<BreakpointNumber>
BD <Address>
Description:
Either delete breakpoint at <Address> or breakpoint with specified <BreakpointNumber>. The value of <BreakpointNumber> must be one of [0..31[.
Example:
BDA
Description:
Delete all breakpoints.
Example:
BITCHK <Address>
Description:
Correct bitmapblock-checksum for bitmapblock at <Address>.
Example:
BLKCHK <Address>
Description:
Correct datablock-checksum for datablock at <Address>.
Example:
BOOTCHK <Address>
Description:
Correct bootblock-checksum for bootblock at <Address>.
Example:
BS [#<BreakpointNumber>] <Address>
Description:
Set breakpoint at <Address>. If <BreapointNumber> is not given the next free breakpoint is used. The value of <BreakpointNumber> must be one of [0..31[.
Example:
BT #<TrapNumber>
Description:
Set breakpoint method to 'trap #<TrapNumber>' (dc.w $4e4<TrapNumber>). The value of <Trapnumber> must be one of [0..15[.
Example:
BTI
Description:
Set breakpoint method to 'illegal' (dc.w $4afc) opcode.
Example:
CATCHFILE <StringPattern>
Description:
The function will patch the current LoadSeg() function from the the dos-library. If the system now tries to load a executable with the specified pattern/name TK will return before the executable is started. The patch is removed and the pc will point to the first instruction of the executable.
Example:
CD [Path]
Description:
The command will try to set the current-directory to given path. If [Path] is not given it will just show the current path.
Example:
Description:
Disassembly memory at <Address>. If address is zero the current pc is used. (like in the AR). The <Mode> argument allows you to use different dis- and assembler; default mode is zero.
Example:
DELETE <Filename>
Description:
Delete file <Filename>.
Example:
DEVS
DEVICES
Description:
Lists all currently available devices.
Example:
DIR [Path]
LS [Path]
Description:
The command will display the directory for given [Path]. If [Path] is not given it will use the current path.
Example:
Description:
The function will determinate the disk-speed. Note that the data on the disk is lost (so use a empty one).
Example:
DLAB <Labelname>
Description:
Delete label <Labelname>.
Example:
DLABA
Description:
Delete all labels.
Example:
E [<CUSTOM-REG>]
Description:
If no paramter is specified it will show the first CUSTOM register. The output can be edited (hit return to accept new values). The following flags exist:
Example:
Description:
Eor bytewise memory from <Start> to <End> with given pattern <Bytes>.
Example:
Description:
Find all locations in [Range] where <Bytes> occures.
Example:
Description:
Find all commands in [Range] which refer to <Address>. This code is analyzed and all commands accessing <Address> are reported. Note that the current registers are used for scanning. If quick mode is used then the range-pointer is always increased by the command-size instead of 2. This means that you may loose valid locations.
Example:
Description:
Find all commands in [Range] which refer to memory from <Start> to <End>. This code is analyzed and all commands accessing specified memory are reported. Note that the current registers are used for scanning, too. If quick mode is used then the range-pointer is always increased by the command-size instead of 2. This means that you may loose valid locations.
Example:
FC [Range]
FCQ [Range]
Description:
Find all commands in [Range] which match to the internal library.
Example:
FD <DisassemblyPattern> [,Range]
FDQ <DisassemblyPattern> [,Range]
Description:
Find all commands in [Range] which match to given pattern. The output of the disassmbler is check for given pattern. Note that you can also search for multiple commands. If quick mode is used then the range-pointer is always increased by the command-size instead of 2. This means that you may loose valid locations.
Example:
Description:
Find all locations in [Range] where pattern <PBytes> occures.
Example:
Description:
Find all locations in [Range] where relative <Bytes> occures. This means that only a 'differnce-pattern' is searched. The given offset can be used for the NO command.
Example:
Description:
Find all locations in [Range] where uppercased <Bytes> occures. This means that eg 'f' and 'F' is treated as same.
Example:
G <Address>
Description:
Exit freezer programm and continue the freezed programm at <Address>.
Example:
GETKEY
Description:
The function will output the rawkey-code of every pressed key. (No need to look into a book)
Example:
HELP
Description:
Show help-page. Press the <Help> key for the same effect.
Example:
INFO
Description:
Show global system-information like available mem, privatized mem, cpu, fpu, mmu, current trackpos of drives, head pos, available devices, to be ejected devices and much more (check out).
Example:
INTS
INTERRUPTS
Description:
Lists all currently available interrupts. The first value is a pointer to the interrupt node and the second one is a pointer to the interrupt code.
Example:
LA <Address>
Description:
Load frozen programm-data from memory at <Address>. A programm can be saved using the SA command.
Example:
Description:
Define label <Labelname> and set it to value <Value>. If the label already exists it will be redefined.
Example:
LABS
LABELS
Description:
Show all current defined labels.
Example:
LE <Filename>
Description:
Load envirement from given file <Filename>. Only settings that have been saved with the current programm version can be used. Settings can be genereated by the SE command.
Example:
LIBS
LIBRARIES
Description:
Lists all currently available libraries.
Example:
Description:
Load data-file <Filename> to memory starting at <Start>. If <End> is given, data will only be loaded upto <End>.
Example:
M[.<B|W|L] [#<Entries per row>] <Address>
Description:
Display memory at <Address> as <Entries per row> byte/word/long depending on the [.<B|W|L] parameter. The command uses the byte offset defined by the Y command. Using optional paramters will define the default paramter. The optinal parameter can be reseted by illegal values or just be using '#'.
Example:
MA
Description:
View all current memory access ranges.
Example:
Description:
Delete memory access range at area from <Start> to <End>.
Example:
MADA
Description:
Delete all memory access ranges.
Example:
Description:
Creates a directory with for given <Path>.
Example:
Description:
Set memory access range to area from <Start> to <End>.
Example:
MD <Address>
Description:
Delete memory watch point at <Address>.
Example:
MDA
Description:
Delete all memory watch points.
Example:
MFMC <Start> <End> <Destination>
Description:
Code data from <Start> to <End> into mfm-data stored at <Destination>. Each read long is coded into two mfm-longs (odd/even). This means that <End>-<Start> must be a multiple of four.
Example:
MFMD <Start> <End> <Destination>
Description:
Decode mfm-data from <Start> to <End> to normal data stored at <Destination>. Each two read long (odd/even) are decoded into one long. This means that <End>-<Start> must be a multiple of eight.
Example:
MFMR [#<Unit>] [INDEX] [SYNC=<Sync>] <Track> <DMA-Length> <Destination>
Description:
Read <DMA-Length> words of mfm-data from track <Track> of disk in unit <Unit> to memory at <Destination>. The default <Unit> is the current-device-unit. By default data will not be read on index or sync. Using keywords 'INDEX' or 'SYNC=<SYNC>' will enable these functions. Mfm-data is read directly by DMA. <Destination> may only be in chip-memory.
Example:
MFMSL <Start> <End> <Destination> <BitShift>
Description:
Shift data from <Start> to <End> by <Bitshift> bits left and store it at <Destination>. Of course, this command can also be used for normal data. <Bitshift> must be lower than 16.
Example:
MFMSR <Start> <End> <Destination> <BitShift>
Description:
Shift data from <Start> to <End> by <Bitshift> bits right and store it at <Destination>. Of course, this command can also be used for normal data. <Bitshift> must be lower than 16.
Example:
MFMSS <Start> <End> <Destination> <Sync>
Description:
Search word <Sync> in data from <Start> to <End>. If <Sync> is found all following data are copied to <Destination>, including the found sync. This command is very usefull for 'sync-read-by-hand'.
Example:
MFMW [#<Unit>] [INDEX] <Track> <DMA-Length> <Source>
Description:
Write <DMA-Length> words of mfm-data to track <Track> of disk in unit <Unit> with memory at <Source>. The default <Unit> is the current-device-unit. By default data will not be written on index. Using keyword 'INDEX' will enable this function. Mfm-data is written directly by DMA. <Source> may only be in chip-memory.
Example:
Description:
Delete mmu catchlist from <Start> to <End>.
Example:
MMUDA
Description:
Delete all mmu catchlists.
Example:
Description:
Add memory from <Start> to <End> to mmu catchlist. The specified memory is added as read/write catch.
Example:
Description:
Add memory from <Start> to <End> to mmu catchlist. The specified memory is added as write catch.
Example:
MMUV
Description:
Show current mmu catchlist.
Example:
MP
Description:
Start the memory-peeker. This tools allows you to scan through the memory and 'browse around'. Its also possible to view non-chipmem. Use the modulo feature to adjust the srceensize (eg. for finding images).
The following keys functions are available:
Example:
MS [.<B|W|L] <Address>
Description:
Set memory watch point to byte/word/long at <Address>. Default size is byte.
Example:
MV
Description:
View all current memory watch points.
Example:
N [#<Entries per row>] <Address>
Description:
Display memory at <Address> as line of <Entries per row> ascii-codes.The command uses the byte offset defined by the Y command. Using optional paramters will define the default paramter. The optinal parameter can be reseted by illegal values or just be using '#'.
Example:
NO <Offset>
Description:
Set the ascii-offset for the M/N command. The offset is added to every read byte and subtracted from every written byte. Only the low byte of <Offset> is used!
Example:
Description:
Fill memory from <Start> to <End> with given pattern <Bytes>.
Example:
Description:
Or bytewise memory from <Start> to <End> with given pattern <Bytes>.
Example:
PORTS
Description:
Lists all currently available ports and its owner tasks.
Example:
Q <Start> <End> <Destination>
COMP <Start> <End> <Destination>
Description:
Compare memory from <Start> to <End> with memory at <Destination>.
Example:
R [<CPU-REG> <Value>]
Description:
If arguments are not given the current registers will be shown. If arguments are used the cpu-register <CPU-REG> can be set to value <Value>. If you want to change MMU/FPU registers take a look at the RM/RF command.
The following registers are available:
Example:
RD [#<Unit>] <DiskOffset> <Length> <Destination>
Description:
Read <Length> bytes from diskoffset <DiskOffset> of disk in unit <Unit> to memory at <Destination>. The default <Unit> is the current-device-unit. <DiskOffset> can also be odd.
Example:
RES
RESOURCES
Description:
Lists all currently available resources.
Example:
RESET
Description:
The function will immediatly perform a reset.
Example:
RF [<FPU-REG> <Value>]
Description:
If arguments are not given the current registers will be shown. If arguments are used the fpu-register <FPU-REG> can be set to value <Value>.
The following registers are available:
Example:
RM [<MMU-REG> <Value>]
Description:
If arguments are not given the current registers will be shown. If arguments are used the mmu-register <MMU-REG> can be set to value <Value>.
The following registers are available:
Example:
RS [#<Unit>] <Sector> <SectorAmount> <Destination>
Description:
Read <SectorAmount> sectors from sector <Sector> and following of unit <Unit> to memory at <Destination>. The default <Unit> is the current-device-unit.
Example:
RT [#<Unit>] <Track> <TrackAmount> <Destination>
Description:
Read <TrackAmount> tracks from track <Track> and following of disk in unit <Unit> to memory at <Destination>.The default <Unit> is the current-device-unit.
Example:
Description:
Save current programm to memory starting from <Start>. <End> is the upper boundary for the programm data. If not given it will use as much memory as needed. Freezed programm-data can be reloaded using the LA command.
Example:
SE <Filename>
Description:
Save envirement to given file <Filename>. The settings can be loaded using the LE command.
Example:
SETX
SETEXCEPTIONS
Description:
This command will install a exception-'handler' into the actual programm. If the programm should crash now it will come back into TK. You can check out what happend and maybe solve the 'bug'. The following vectors are patched:
Example:
SHOWSTACKFRAME
Description:
Show the stackframe of the freezed program.
Example:
SI [<Count>]
Description:
Skip <Count> command (eg jsr/bsr is one command). The default value for <Count> is one. Note that the disassembly is used to calculate the new address.
Example:
SIM [<Rawkey>]
Description:
The function will install a faked NMI-simulator into the system by patching directly the +$68 keyboard interrupt vector. If the user now presses the selected key it will simulate a NMI. This will only work if the interrupt is not disabled and the vector is not changed. The specfied key must be given as a rawkey code. Check out the GETKEY function. If no argument is given and the simulator is not installed the patch is added with the default rawkey $5d ('*' on the keypad). If no argument is given and the simulator is installed the patch will be removed. In the other cases the rawkey will be redefined.
Example:
Description:
Save memory from <Start> to <End> to data-file <Filename>. If you overwrite a file the old filename is not changed! (eg. old 'AbCd', save 'ABCD', result 'AbCd')
Example:
ST [<Count>]
Description:
Exit and execute <Count> command. Programm is traced step by step (eg trace into jsr/bsr). The default value for <Count> is one.
Example:
T <Value>
Description:
Remove all address in buffer for training which do not hold <Value>. Then continue collecting all address which hold <Value>. Scanned memory was set by the TS command. Multiple use is possible. The command can only be used in byte-value-trainer-mode.
Example:
TASKS
Description:
Lists all currently available tasks. The tasks are listed in 3 categories : ready,waiting,running. A 'P' indicates a process and a 'T' a task. The first value is pointer to the task/process structure, the second one is a pointer to the stack of the process (the first long at this address points to the routine that will be executed when the task is running again (must be in the wait-list for that))
Example:
Description:
Set location of buffer for training to memory from <Start> to <End>.
Example:
TBD
Description:
Reset location of buffer for training to default. The internal reserved memory is used.
Example:
TBV
Description:
View current location of buffer for training.
Example:
TDC
Description:
If the deep-trainer-mode is already active all stored address are compared to their current value. If the value has changed the address is kept in the buffer, so only address that have changed are kept in the buffer. As usual the command tries to continue scanning the given [Range] . See also the TDS command. The command can only be used in the deep-trainer-mode.
Example:
TDS [Range]
Description:
If deep-trainer-mode is not active, it will be enabled now. All address in [Range] are stored in the buffer for training. If [Range] can not be scanned in one pass you can repeat the operation by using the TDS/TDC command. If the deep-trainer-mode is already active all stored address are compared to their current value. If the value has changed the address is removed, so only address that have not changed are kept in the buffer. As usual the command tries to continue scanning the given [Range] . Note that eg 'TDS 80000 90000' will not restart the deep-trainer if it was already active, in this case the [Range] paramter is ignored!. Using the command the first time will enable the deep-trainer-mode. This function needs around three bytes per stored address.
Example:
TDV
Description:
View all address in the buffer for training. See also the TDS/TDCcommand. The command can only be used in the deep-trainer-mode.
Example:
TDX
Description:
Free buffer for training, so that it can be used for byte-value-trainer-mode. All address in the deep-trainer-mode are lost. The command can only be used in deep-trainer-mode.
Example:
TR [<Count>]
Description:
Exit and execute <Count> command. Programm is traced command by command (eg no trace into jsr/bsr). The default value for <Count> is one.
Example:
TRACKER [<Start>]
Description:
Start the module-ripper. The memory is scanned for known modules. Currently the usual 31-sample noise/protracker, prorunner v2 and the player6.1a is included. If <Start> is specfied the scan is started at the given address (only chipmem!)
Example:
TRANS <Start> <End> <Destination>
Description:
Copy memory from <Start> to <End> to memory at <Destination>.
Example:
Description:
Init buffer for training and collect all address in [Range] which hold the byte <Value>. If [Range] can not be scanned in one pass you can repeat the operation by using the T command. The command enables the byte-value-trainer-mode. This function needs around 2 bytes per stored address.
Example:
TV
Description:
View all address in buffer for training. The command can only be used in the byte-value-trainer-mode.
Example:
TX
Description:
Free buffer for training, so that it can be used for the deep-trainer-mode. All address in the byte-value-trainer-mode are lost. The command can only be used in byte-value-trainer-mode.
Example:
TYPE <Filename>
LESS <Filename>
MORE<Filename>
Description:
Type text-file <Filename> to screen.
Example:
USEBLIT
Description:
Use the blitter for scrolling. On slow machines(68000) this method allows realtime scrolling on small screens. The major disadvantage is the loss of the blitter custom-regs, so use with care!
Example:
USECPU
Description:
Use the processor for scrolling. On faster machines(68020++) this method allows realtime scrolling on big screens, too. Also the blitter custom-regs are not touched.
Example:
VERSION
Description:
The current version number is shown.
Example:
W [<CIA-REG>]
Description:
If no paramter is specified it will show the first CIA register. The output can be edited (hit return to accept new values). Usually there are just $10 regs per CIA but they are multiplexed; so there are some more. The following flags exist:
Example:
WD [#<Unit>] <DiskOffset> <Length> <Source>
Description:
Write <Length> bytes to diskoffset <DiskOffset> of disk in unit <Unit> with memory at <Source>. The default <Unit> is the current-device-unit. <DiskOffset> can also be odd.
Example:
WN [<Count>]
Description:
Exit and return when the <Count>-th command after current position is executed.Note that the disassembly is used to calculate the ned address. Programm is not traced, instead a temporary breakpoint is set. The default value for <Count> is one.
Example:
WPC <Address>
Description:
Exit and return when command at <Address> is executed. Programm is traced and works also in ROM area.
Example:
WS [#<Unit>] <Sector> <SectorAmount> <Source>
Description:
Write <SectorAmount> sectors to sector <Sector> and following of disk in unit <Unit> with memory at <Source>. The default <Unit> is the current-device-unit.
Example:
WT [#<Unit>] <Track> <TrackAmount> <Source>
Description:
Write <TrackAmount> tracks to track <Track> and following of disk in unit <Unit> with memory at <Source>. The default <Unit> is the current-device-unit.
Example:
X
Description:
Exit freezer programm and continue the freezed programm.
Example:
Y [#<Entries per row>] <Address>
Description:
Display memory at <Address> as <Entries per row> binary bytes. Using optional paramters will define the default. The optinal parameter can be reseted by illegal values or just be using '#'.
Example:
<Value>, <Count>, <Offset>, <Entries per row>, <TrapNumber>, <BreakpointNumber>, <Length>, <SectorAmount>, <TrackAmount>, <Sync>, <DMA-Length>,<BitShift>,<Rawkey>
Description:
These arguments are the base for almost every other argument. The argument parser supports many operators (listed below). The operator priority is 'left-assigned' or is defined by the used operator (see prefs setting). The base for any input is 10(dec) or 16(hex) (see prefs setting).
Example:
<Address>, <Start>, <End>, <Destination>, <Source>
Description:
These arguments are parsed the same like <Value>. The received address is then validated. If the address conflicts with the the current memory-mode (see prefs setting) it will report an error. If eg. <Start> and <End> is used then <End> must be higher than <Start> and both must be in a continous memory-block. (eg not from $1f0000 to $f80000 - depends on the mmeory-mode!)
Example:
<String>,<Labelname>
Description:
A plain string can be started either with " or a ' and must of course end with it. However, if you do not use ",' the string will be uppercased and will terminate at the first space or tab.
Example:
<StringPattern>
Description:
The argument <StringPattern> is just a <String> which holds some special symbols. The following wildcards are available: '?' (single wild-char) and '*','#?' (multiple wild-chars). The pattern is incasesensitive.
Example:
<Bytes>
Description:
The argument is usually use for searching mutliple bytes. <Bytes> is build up of multiple <Value> or <strings> seperated by a space. The value must be given is hex-mode! Only the low bytes of a value is used. However, strings will be converted to multiple bytes.
Example:
<PBytes>
Description:
The argument is given in the same ways as in argument <Bytes>. If the parsed value (byte sized) included a '?' the upper/lower nibble is marked as a wildcard.
Example:
<Range>
Description:
The argument <Range> is build up of a list of <Address>. If the argument <Range> is not used all available memory pages are scanned. A single address as argument means that the scan will start at the specfied address (instead of $00000000). A additional (second) address is used to determinate when to stop. (check out the memory setting)
Example:
<DisassmeblyPattern>
Description:
The argument <DisassemblyPattern> is just a <String> which holds some special symbols. The following wildcards are available: '?' (single wild-char) and '*','#?' (multiple wild-chars). The pattern is incasesensitive. A space is extended to a '*' wildcard. If the parser encounters a '\' it will use the pattern for the next command.
Example:
<Path>
Description:
The argument <Path> is just a <String> which holds the device path. If no absolute path is used it is appended to the current path. The path my not point to a file!
Example:
<Filename>
Description:
The argument <Filename> is just a <String> which holds the filename. If no absolute path is used it is appended to the current path. The filename may not point to a directory!
Example:
<DiskOffset>
Description:
The argument <DiskOffset> is just a <Value> which addresses the diskdata as one continous memory block. It must be lower than $dc0000 (DD-Disk)/$1b8000(HD-Disk).
Example:
<Unit>
Description:
The argument <Unit> is just a <Value> which determinats the drive to be used. <Unit> can only be 0(DF0),1(DF1),2(DF2),3(DF3).
Example:
<Sector>
Description:
The argument <Sector> is just a <Value> which addresses data on a disk. It must be lower than 1760(DD-Disk)/3520(HD-Disk). A sector has a size of $200 bytes.
Example:
<Track>
Description:
The argument <Track> is just a <Value> which addresses data on disk. It must be lower than 80(DD/HD-Disk). A track consists of 11(DD-Disk)/22(HD-Disk) sectors. So a track has a length of $2c00/$5800 bytes.
Example:
You must connect a ground signal to one pin of the button and the other button pin to every cathode of thediodes and from their anodes to the IPL0, IPL1, IPL2 signal, so quite easy. (If the instruction for your computer is missing do it yourself or find someone...). Make sure that the black ring of the diodes point to the button and not to the ipl lines. It should look like this
Note: '..--|>|--..' is a diode which anode is left and cathode is right!
LAST WARNING! NO WARRANTY FOR ANY INSTRUCTION LISTED BELOW!! LAST WARNING!
I would advise to use the internal 200-pin expansion connector
of the cpu-card, because all other connectors do not support the ipl-signals
(including the Zorro2/3 slots!!). Unfortunatly, i have not found
a description where all signals are described with correct pin numbers,
so i will just give a exact pin-location. If you have a manual where the
pins are described try to contact me. You should solder on the upper side
(the one where the connector pins are soldered to the card). The following
instructions were tested on a A4000 with a 68030 and 68040 original cpu
card. It should also work with the cyberstorm cards! (not
tested yet!, no warranty!)
The expansion connector looks like this:
/--------------------------------------------------------------\
| |
| x x x x ... x x x x x x x x x x x x x ... x x x x |
| x x x x ... x x I J K x x x x x x x x ... x x x x |
| O x x x x ... x x x x x x x x x x x x x ... x x x x O |
| x x x x ... x x x x x x x x x x x x ... x x x G |
| |
| () () |
. .
. .
| () () |
\--------------------------------------------------------------/
I,J,K:
IPL signals, G:GROUND signal
I(IPL) ------- |>| ----\
J(IPL) ------- |>| ------- BUTTON --- G (GROUND)
K(IPL) ------- |>| ----/
BTW: I use this hardware patch!
The following bugs are yet known:
The following things are (not) planned: