First things first, after you download the code, you can extract it anywhere you like, but you must run CapCLI from the Capitoline directory, and you must copy your ROMs, ADFs and Components into the local directories before you run the code
cd Capitoline ./capcli.Linux or ./capcli.MacOS or capcli.exe (run the code applicable to Windows/Linux/Macos) CapCLI>
The command line gives you everything that the GUI can do (plus some other commands), but it’s a bit more laborious, you can use the Windows CMD window (capcli.exe), the MacOS terminal (capcli.MacOs) and the Linux shell (capcli.Linux), they all work the same I’ve tried to list the command in the order you might use them.
Not always that much help as I haven’t kept it up to date – I’ll come back to this
loadrom /path/to ROM
Loads a file as if it was a Kickstart file, if you have a hash file for the kickstart then it will also understand all the individual components
Saves the current ROM, note this is just the current ROM, no byteswap or split, if you want to do more complex things like multiple ROM banks for dual eprom machines with byte swap etc. then you need to create a rom profile and save that instead, this just saves the raw data of one ROM bank.
newrom [size] [fill character]
Create a new (empty) ROM, valid sizes are nnnn (a number of bytes), nk (n kb, e.g. 512k – the most useful), nm (n mb, e.g. 1m), the fill character will be used to blank the space, this is often 0/0x00, or 255/0xFF
This sets the default ROMBASE for the ROM, this is critical when you add components, this is used to write the relocs correctly, you can change the ROMBASE after adding components, but only loaded libraries are repatched, kickity-split, extended ROMHEADERs and SKSize is not repatched – I haven’t finished it!
Oh, and repatching to a different ROMBASE only works on ROMs that are completely understood (e.g. you have a hash file, or built it from scratch).
List the roms that you have loaded (or created).
Display the current ROM (if you don’t give a number) or switch to “ROM n” if you do, the ROM numbers are given by the “roms” command
If you want to save a ROM for burning to EPROMs then it’s probably best (and easiest) to create and save a profile, this defines the motherboard socket layout and the files you need to create.
Have a look at Features -> Saving ROMs for more info
# Features -> Saving ROMs romprofile, saveprofile
Add a component into the current working ROM
# Add a loadable library or raw binary chunk to a ROM add /path/to/component add Components/2.x/0x1d6028d1.kickmenu_36.134_(20.3.90) # Add a component from another ROM file add /path/to/ROM component add "ROMs/TOSEC.Firmware/Kickstart v2.05 r37.350 (1992-04)(Commodore)(A600HD)[!].rom" scsi.device # Add a file from a loaded ADF add ADF:/path/in/loaded/ADF add ADF:/l/intuition.library # Add n bytes of unallocated space add n add 76
Deletes component n from your ROM, the space previously occupied is wiped (so it’s not just a logical delete).
Extracts a component (n) to your current savepath, if you don’t specify a number, then it will save them all, this is similar to the “romsplit” tool
Add a standard component, note these aren’t library components so don’t have relocs, it’s best to add these before you add any libraries
Manipulate a components start, end or its relocs
# Change where a component starts editcomponent n start=n # Change where a component ends editcomponent n end=n # Add a reloc to a component editcomponent n addreloc n # Delete a reloc from a component editcomponent n deletereloc n # Add anything that vaguely looks like a reloc to a component editcomponent n addrelocs
Saves the component hash(es) to your current savepath, if you don’t specify a number, then it will save them all.
Saves the ROM definition hash file, this will list all the known components.
This changes the component hash name, to give it a standard name based on the internal name of the component and a hash (the hash is dependent on the code and any identified relocs, so you need to run this after changing the size or relocs of a component), this name is used when you save the component or component hash.
Have a look at Features -> ADF reader features for more info
# Features -> ADF reader loadadf, adflist, adfsavefile, adfsavezip
Have a look at Features -> Patcher for more info
# Features -> Patcher patch, find, findopcode, alias
# Quit from CapCLI CapCLI> exit