SOFTCRACK Copier For Multiface (C) Lars Jespersen 1987/88/89 SOFTCRACK Copier is freeware. It can be freely used and distributed as long as no money is charged for it and the original package, program and documentation are not altered in any way. Softcrack is a program designed for use with the Multiface 1 or the Multiface 128 hardware. The Multiface must be modified by replacing the eprom with a static ram and, depending on the Multiface type, other minor modifications. The function of the Multiface is unchanced apart from the fact that you will have to load the program into the Multiface before it can be used. The advantage is that you will be able to use several programs in the Multiface, including the original Multiface programs. Softcrack is intended as a transfer program, for easy and reliable transfer to microdrive, Opus Discovery, Disciple, Plus D and Beta disk, but also with tape back-up options The function of Softcrack, is much like the Multiface programs, but with the difference that there will be no screen corruption in the back-up's, even without the presence of the Multiface when reloaded. The program is compatible with the Spectrum 128k and Spectrum+2 but only in 48k mode. Softcrack is provided with a compressor routine which is a great advantage, when it comes to saving space on tape, cartridge or disk. Furthermore a disassembler/monitor with all facilities is incorporated in the program. HOW TO USE SOFTCRACK 1. Select which program to use. V 9.2 is for microdrive and Beta disk, v 9.4 is for Disciple/Plus D and Opus disk. Both programs has tape save options. 2. Load the program and follow the prompts. The Word "SOFTCRACK" is written on the screen while the program is being transferred to the Multiface. If not there might be a hardware problem, probably a bad connection between the computer and the Multiface. When the program is stored in the Multiface, the computer resets, and the program is ready for use. 3. When you decide to stop a program, press the button and the program will halt. Then a copyright message will appear and, after a short delay a menu : V 9.2: Bta Tape Mdr or V 9.4: Mgt Tape Ops S/L Quit P/D S/L Quit P/D Press the first letter of the option you wish to use, e.g. D for disassembler. The options S/L and P/(G) both refer to the screen as Save/Load a screen to/from tape and Put/Get a screen to/from memory. This means that when you press P the current screen will be stored in the Multiface and can be retrieved with G. This is very handy if you want to save the program with the original loading screen. Please notice that the D is changed to a G only if you press the P key. This is because you cannot retrieve a screen from the memory until you have stored one there, but more important, the disassembler will be wiped out by the screen, as there is not room for both. Therefore, if you want to use both the disassembler, and store a screen, you must use the save screen to tape option. Version 9.2 has options for Betadisk (Bta), Microdrive (Mdr) and Tape, whereas version 9.4 has options for Opus (Ops), Disciple/Plus D (Mgt) and Tape. 4. If you press T there will be 3 options: compressed, normal, and hyper (fast load 2900 bd). Press the C, and you will be prompted for a border colour. Then enter the name for the copy and you will be asked to press the 'C' to copy. You can abort at any stage by pressing 'break',until you press the final 'C' (or 'Q' to quit). When you press'C', the screen scrambles and after a few seconds the border will be multicoloured. Then press any key and the saving starts. 5. The two other tape options work in a similar way, with the difference that there will be no delay for compression. If sufficient compression is impossible you might be forced to use the "normal" option, but this should happen very rarely. Also with the "hyper" option there will be some "impossible" programs, because the loader has to be stored in the upper part of the memory. With all three tape options plus the compressed disk and microdrive options there will be no screen corruption (or any other corruption) in the copy. 6. When saving to microdrive or diskette the "normal" option is different (this is only used when necessary e.g. if you get the message "option not possible"), as there is a prompt for storage of the system variables and basic area in the screen. As the Interface 1 requires almost 600 bytes extra when the microdrive is running, there might be a few programs forcing you to use this option when saving to microdrive. 7. When You press the C to copy to mdrive or disk, there will be a delay when the program is being compressed. There must be a disk or cartridge ready in the drive, as the save vil start immediately after the compression. 8. To exit the SOFTCRACK program, press 'Q' and the halted program resumes. 9. When you are on the main menu, you can select a bordercolour by pressing a number key 0-7. The initial colour is black. 10. Press Z to make a hard copy of the screen. (ZX/Alphacom) Some remarks on the compressor routine It is impossible to compress a program that is compressed already, as this would insert some wrong marker bytes, and thereby fool the expander routine to mess up the whole thing. A routine in Softcrack will see to this and the message "Option not possible" is given if you try to compress an already compressed program, or if you try to compress one that is not fully expanded after loading. You will see the same message if the contents of the ram cannot be sufficiently compressed to make room for the save routine, and then you must use the "normal" option. INSTRUCTIONS FOR THE DISASSEMBLER To enter the disassembler press D on the main menu. Then, in some cases you will be prompted: No space for screen - save? This happens when the screen is too dense to be compressed enough to fit into the spare memory in the Multiface. Press Y to save the surplus as a headerless file to tape. This can be reloaded with the L key from the main menu, when you re-enter Softcrack from the disassembler. If you leave the program via the three options in the disassembler - JUMP, CONTINUE or RETURN -, the program will start to load the screen automatically. After the save, or if you press N, press Space and the disassembler will be in command mode. SUMMARY OF COMMANDS KEY FORMAT FUNCTION --- ------- -------- A aaaa nn ALTER memory Displays the contents of the specified address.If a two digit value is entered, then the contents of the address is altered. Enter increments the address. B aaaa BREAKPOINT Sets a Breakpoint at the address specified. Continue program via Softcrack or by the C or J command. C CONTINUE Use this to exit if you have traced the program. Exits with trace register values. D ddddd DEC/HEX conv. Decimal to hex conversion. E EXIT Re-enters Softcrack program. F aaaa bbbb nn FIND Search out a specified com- bination of bytes. H nnnn HEX/DEC conv. Hex to decimal conversion. J aaaa JUMP Jumps to a specified address. K RESTORE brk. Removes a breakpoint set by B command and replaces ori- ginal code. L enter LOAD Loads code with header at specified address, or loads basic in the basic area. L aaaa llll LOAD Loads a headerless file at aaaa for a length of llll. M aaaa bbbb cccc MOVE area Block moves a specified area of RAM. ENTER to execute. P aaaa MEMORY dump Displays the contents of memory in hex on the screen. Q aaaa ASCII dump Displays memory contents in ASCII format. Enter characters into memory by pressing the key and s/shift together. Exit this mode with CAPS !! R REGISTERS Displays register contents. R= State of bit 7 of r-reg. M= Interrupt mode (1or2) I= Interrupt state DI or EI O= Rom paged in (1-2) (128k) MEM= Memory bank paged in (0-7), (128k only). S enter SAVE Saves the last file loaded. S aaaa llll SAVE Saves a headerless file from aaaa with lenght llll. T aaaa or ENTER TRACE Enters trace mode at address aaaa or at program counter. V nn (0to7) PAGE Pages in the specified page no. at adress C000. (128k Spectrum only). W DRAW Enters Melbourne Draw. Only 80k Spectrum with port 239 (v 9.2) or port 191 (v 9.4) fitted. X XIT Return to command mode from any sub mode, exept Q-mode. Y RETURN Return to basic. Will only work if the system variables is present. Z aaaa DISASSEMBLE Disassembles from aaaa. TRACE The trace command allows you to execute machine code in ROM or RAM one instruction at a time, or in certain specified blocks. But at all times, the execution of the code is strictly under the control of the trace command. The comprehensive screen display throughout the trace command gives a permanent display of the CPU register contents, a disassembly of the current and the next instructions, the contents of the last five stack values, and the contents of specified memory locations. When tracing or single stepping, the refresh register is loaded with the proper value before each instruction is executed. This unique feature enables you to decrypt tricky loaders such as e.g. the Speedlock. If a machine code has calls to the ROM area, you will possibly experience a crash if you try to trace it, because the Sinclair ROM is paged out and replaced by the Softcrack code. TRACE - SUMMARY OF COMMANDS KEY FORMAT FUNCTION --- ------ -------- ENTER SINGLE STEP Executes the instruction currently pointed to by the programcounter (PC) and increments the programcounter to the next instruction. B aaaa ENTER BREAKPOINT Sets a breakpoint at the address specified. Start the trace by Pres- sing ENTER. The trace will continue until the programcounter value is equal to the breakpoint. Exit by pressing CAPS+SPACE. M aaaa ENTER MEM.POINTER Sets the memorypointer to the address specified. The M-display at the bottom line of the screen displays the memory contents at the specified address. R ENTER SKIP MODE Start trace with ENTER. If a return instruction is executed, the trace will stop and return to single step mode. S bbbb ENTER ALTER P.C. Alters the address of the program- counter. 6 (cursor down) REG. POINTER Moves the register pointer (the in- verse video '>' sign to the left of the display) downwards. 7 (cursor up) REG. POINTER Same as above but upwards. 1 bbbb ALTER REG. Alters the contents of the register currently pointed to by the register pointer. X EXIT Exits current submode or return from trace mode to main monitor. aaaa = 4 digit HEX value start address bbbb = 4 digit HEX value end address cccc = 4 digit Hex value new start address llll = 4 digitHEX value lenght ddddd = 1-5 digit DECIMAL value nn = 2 digit HEX value byte How to use the disassembler for poking games: The example given here is a poke for infinite lifes in COBRA. POKE 36515,183. The game must be running and SOFTCRACK present in the Multiface Press the red button to stop the game. It is best to do this when the games menu screen is on. Press D to enter the disassembler, and then SPACE. The flashing cursor informs you that you are in the disassemblers command mode. First you must convert the numbers from decimal to hex. This is done by pressing D and entering the poke adress 36515. The hex number 8EA3 will show on the screen. Do the same with the poke value 183 which converts into B7 hex. Press A for alter and enter the poke adress 8EA3. Now input B7 and enter. You can exit from ALTER mode by pressing X, and then return to the main menu in Softcrack by pressing E and ENTER. Press Q to quit Softcrack and the game resumes but now with infinite lives. You can input pokes in any game by this method. Please address any correspondence to: Lars Jespersen, Moensgade 16A, DK 8000 Aarhus C, DANMARK. (Tel. +45 86 18 36 61).