Warp Speed Instructions From: "Canuss" Reply to: "Canuss" Date: Wed, 28 Oct 1998 20:12:52 GMT Organization: Furry Civil Defense Corps For the person who requested the directions for Cinemaware's "Warp Speed" cartridge, here is the Instruction manual, in full: (command summaries are at the end) This document was typed in from the original Warp Speed manual by Mark Freid (http://wolf.tierranet.com) using a standard MS-DOS Text editor. AS SUCH, some characters commonly found on the Commodore keyboard, but not on the IBM keyboard could not be replicated in this document. Such characters include the English Pound sign, the Up-Arrow, and the symbol for pi. Please be aware that when these are referenced in this document, you will be required to hit the appropriate key on your Commodore keyboard which actually has these characters. Cinemaware Corporation Presents Warp Speed By Alien Technologies, Inc. Copyright © 1988 Cinemaware Corp. All rights reserved. Warp Speed is a trademark of Alien Technologies, Inc. Congratulations! You now own the most useful and complete cartridge utility ever produced for the Commodore 64 and 128 computers: The Warp Speed Fast DOS Cartridge from Cinemaware. It contains the fastest Commodore-compatible DOS ever produced, allowing you to format disks, load, save, verify, and copy files up to ten times faster than before! In addition, Warp Speed includes: A full-featured machine language computer-and-disk-drive monitor/assembler, with up/down scrolling and an integrated sector editor; an expanded DOS wedge for convenience when using a disk drive; complete support for two or more disk drives, including a 30 second two-drive copier for making convenient backups of your unprotected disks; a reset button; and an "un-new" feature to restore BASIC programs, for recovering control of your computer when you experience a "crash" All Warp Speed functions work identically on the 64 and 128 in both 40 and 80 column modes, and are fully compatible with more commercial software, including many heavily protected programs that are incompatible with other cartridge utilities. They also work with most compatible disk drives, including the new Commodore 1581 floppy drives and several of the new hard disk drives available, as well as the MSD dual drive popular with many developers. Whether you are a beginner, a serious hacker, or a professional developer, you will find Warp Speed an indispensable aid which you may never remove from your computer once you've plugged it in! FAST LOAD/SAVE/VERIFY When the Warp Speed cartridge is inserted into the expansion port of your computer, the fast disk routines are automatically engaged during all disk loads and saves. The routines will work with any application that uses Kernal load and save routines, but not the Kernal restore routine (which resets the vectors to their default values). The fast load routines are the most compatible of any comparable cartridge-based loader and work with approximately 99% of all commercially available software. However, the fast-loading DOS can easily be disabled and re-enabled if necessary. The speed at which files will load depends on how they were originally saved. Files saved with a 1541 disk drive without the aid of Warp Speed are written out in a skew 10 format. This means that after each sector is written to a disk, 9 sectors are skipped before the next sector is used. Warp Speed loads these files as fast as the data goes by the drive head, approximately 500% faster than a 1541 alone. If, however, the files were saved using a 1571 disk drive or with the Warp Speed fast save function, they were written in a skew 6 format, skipping only 5 sectors each time, and can be loaded up to 1000% faster than a normal Commodore 64. Other fast loaders can only load these files about 300% faster. Most older commercial programs were created with a 1541 disk drive, and should be file copied to new disks using Warp Speed so that the maximum improvement in loading times can be obtained. Warp Speed will load, save and verify at the same speed regardless of the type of disk drive (or mode on a Commodore 128). The scratch and validate commands will work fastest if the drive is a 1571 in double-sided mode. THE DOS WEDGE The DOS wedge consists of a group of commands to take some of the hassle out of disk access. These commands simplify loading and saving files, viewing directories, etc. LOADING FILES: To load a machine language file, use the percent <%> key followed by the filename, and . This is the same as typing [load"filename",8,1] from BASIC. To load a program to the start of BASIC, use the diagonal slash key followed by the BASIC file to load, then press . This is comparable to typing [load"filename",8]. To load and run the first file on the disk, press the commodore key and keys at the same time. (This will ALWAYS load the first file on a disk we have fixed the bug in Commodore's DOS which would occasionally cause the wrong file to load) When loading from multiple drive systems, Warp Speed will search both drive 8 and drive 9 looking for the file. If it finds the file, it will change the currently logged drive to the drive on which it found the file. SAVING FILES: To save a file, type the back-arrow <<-> key, followed by the name of the file, then . This corresponds to the BASIC command [ save"filename",8 ]. The file will be saved to the currently logged drive unless the drive number is specified in the command. VERIFYING FILES: To fast-verify a file, type in exclamation point (!) followed by the name of the file to be verified, then press . Is it equivalent to the command [ verify "filename",8,1 ] LISTING FILES AND DIRECTORIES: You can list any normal text file to the screen using the ampersand <&> key. Followed by the name of the file and . There is no equivalent BASIC command to do this, but it is similar to the MS-DOS "TYPE" command. To view the directory of a disk, type a dollar sign <$> then . The directory will be printed to screen without affecting program memory. In both cases, you can pause the listing and restart is using the spacebar, or exit at any time, using . SETTING THE CURRENTLY LOGGED DRIVE: You can manually set drive by using the number sign <#> followed by the drive letter, and . The number sign by itself will toggle back and forth between drives 8 and 9. ACCESSING THE DRIVE COMMAND CHANNEL: The circumflex <@> followed by will print the current drive error status to screen. This is the equivalent of doing an [ open 15,8,15 ] from BASIC and reading the error channel. You can also send a command to the drive in this way. See the section on drive commands for more information. ENTERING THE MAIN MENU AND MACHINE LANGUAGE MONITOR: To enter the main menu, use the English pound key, to enter the built-in ML monitor use the pi key. UTILITY COMMANDS Several additional utility commands which start with the Up-arrow key can be used from BASIC. They are also available from the machine language monitor (described later) when preceded by the circumflex <@> character. - The disk menu command <$>, will load the directory into the computers memory, and will allow you to scroll up and down through the directory to select a file to load and/or run - The kill fast-dos command , disables only the fast loader all other functions, including the wedge will remain active. The enable command, , re-activated the load, save and restore vectors. - The UN-new command, , can be used to restore a BASIC program after a new command, or after using the reset button to recover from a crash. - The re-number command, , or can be used to temporarily change the device number of the currently logged drive to another number. If, for example, you had two disk drives, but both set as 8, you could use this command to change one drive to 9, then power up the second drive and have a powerful two-drive system to work with. - The screen hard-copy command, , will print a copy of the screen contents to a printer connected as device number 4 (text screens only). With the type file <$> command, you can print a text file without even loading a word processor! (This feature is also great for printing those readme.doc files that come with many public domain programs) Owners of 1571 disk drives will appreciate the set format commands, and for single- and double-sided modes, respectively. These commands will allow you to use a 1571 in single- or double-sided mode regardless of whether you are working with a 64 or 128. We recommend placing the drives in double-sided mode at all times, especially when scratching or validating a disk, as these processes will go much faster when the drives are in double-sided (2 MHz) mode. A couple of exceptions to this rule: don't place a 1571 in double-sided mode when loading most copy-protected Commodore 64 software, and don't place them in double-sided mode when working with "flippy" disks (different programs on each side of the disk) id you intend to format only one side. The format commands, both our fast-format and Commodore's own format command, use the drive's current mode to determine whether to format the disk as single or double-sided. If your drive has trouble reading a single-sided disk when set to double-sided mode, then you should contact Commodore to obtain their upgraded drive ROMs, which are considerable improved over the original ones. USING THE MENU FUNCTIONS The English pound key activates the built-in menu-driven features of Warp Speed. Upon entering the menu system, the Main Menu will appear. There are nine options to select: 1) View Directory 2) Sector Editor 3) File Utilities 4) Single Copier 5) Dual Copier 6) Drive Command 7) Set Drives 8) ML Monitor 9) Quit to BASIC Select the desired option by moving the highlighted cursor up or down with the cursor key, and press l or you can press the number key to choose the option that you want. Two other keys are also active in the menu system: the spacebar can be used to swap source and target drive assignments, and the "Q" key will exit directly back to BASIC. Here are brief descriptions of the nine menu choices available on the main menu. 1. View Directory Shows both the source and target drive directories in screen. Use the spacebar to pause and restart the listing. Press the key once to end the first drive/directory; press a second time to end the directory display. Use to return to the main menu 2. Sector Editor Can be used to edit a data file or program file directly on a disk without first having to load the file into the computers memory. Use to return to the main menu. See the section on the Sector editor for instructions. 3. File Utilities Brings up a second menu of choices for file handling. Choices include copying one or more files, scratching one or more files, selecting a file from the disk menu feature, using drive commands, or setting drives. See the list in the command summary for an explanation of the commands in the sub-menu selections. 4. Single Copier Activates a sub-menu for a disk copier which can copy either single or double-sided disks using either one or two disk drives. The utility also verifies both the source and target disks for bad sectors. If you have a disk which this copier will not copy, format a new disk, and use the file copier to copy all the files which are still intact to the new disk. This copier compresses the data copied in only one or two passes. Note: double-sided disks can, of course only be copied on a 1571 disk drive. 5. Dual Copier Activated a sub-menu for a two-drive, nibble-type copier which can copy either single- or double-sided disks (with two 1571 drives) in approximately 30 (single-sided) seconds, or 60 (double-sided) seconds. This type of copier, while extremely fast, is not as reliable as the fully verified single copier listed above. It is, however, write verified so that it will report any errors created during the copy process. If you have difficulty copying a disk with this copier, try switching your source and destination drives. If this doesn't work, then you will need to use the single copier with this disk or this hardware. 6. Drive Command Used to display the status of a disk drive, or to send direct access commands to the drive. Press to get the error status or enter any drive command by pressing the letter of that command and then (see Drive Commands). You can also enter any of the utility commands at the ">" prompt (the commands with begin with an up-arrow). Press to return to the main menu 7. Set Drives Allows you to set source and destination drives for the file copier, disk copiers, and sector editor 8. ML Monitor Enters the Machine-Language monitor. (see Machine Language Monitor later in this manual.) Return to the main menu from the monitor by typing the "XM" command. 9. Quit to BASIC Exits the menu system DRIVE COMMANDS Drive commands are commands that may be used directly from the Drive Commands selection in the main menu, or (when prefixed with a circumflex <@>) from the DOS wedge or machine language monitor. These commands are detailed in the manual that came with your disk drive. A few of the more useful commands are: <@f>, which does a fully-verified fast format; <@uj>, which resets a disk drive as if it had just been turned on; <@v>, which validates a disk to eliminate bad "PRG" files and clean up the block availability map (BAM) on heavily used disks; and <@s0:>, which will scratch (delete) a file from the disk. Perhaps the most useful features of the Warp Speed Cartridge are the sector Editor and machine language drive monitor. They have been integrated together to create a very powerful program creation, de-bugging, and editing tool. SECTOR EDITOR To enter the sector editor from BASIC, choose [ 2. Sector Editor ] from the main menu. Entering the sector editor in this way will clear an editing buffer from $7E00 to $7EFF and set the default track and sector to the start of the directory (usually at track 18, sector 1) From within the machine language monitor, you can enter the sector editor with the command. Entering this way will not clear the buffer or change the current track and sector settings, so you can go back and forth between the editor and the monitor to read a file a sector at a time, make any changes you need, and then write the sector back out to disk, without loading the whole file into memory first. To read a sector, type (where the track and sector are in hexadecimal), or just if the default values are ok. The desired track and sector will be read and transferred to the editing buffer at $7E00 in the computer. To write the sector back to the disk, use . To edit a sector, move the cursor to the desired position with the cursor keys, then enter the new value in hexadecimal. Because of the size of the screen, only half of a sector will be visible at a time. To see the other half, simply move the cursor off the top or the bottom of the data, and the other half scroll on. If you are making changes to text, you can simply type in the desired letters by pressing to enter text mode. When you are through typing text, use to exit text mode. Several Keys allow you to move to a different sector on a disk. <+> will advance you to the next sector. <-> will move you back one sector. <+> will advance you one track, <-> will move you back one track. The key will allow you to go to the "next" track and sector in a file (as pointed to by the first two bytes in the sector). The key will "jump" to the track and sector pointed to by the bytes currently under the cursor. This can be used by the directory entry of the file to move to the start of the file, so you can edit a complete file without ever entering a track or sector manually! At any time, if you wish to enter the machine language monitor to edit the data, use the command. Remember to exit back to the sector editor with the command so your changes won't be erased from the buffer. If you have a Commodore printer attached as device 4, you can print out the entire sector contents with the

command. This is not merely a screen dump, as both halves of the sector are being printed together. If you are in the second half of the sector data, pressing once will move you to the top of the screen editing area. Pressing a second time will move the cursor to the beginning of the sector data. Pressing will erase the buffer (fill it with zeroes) from the cursor position forward to the end of the sector. Pressing will exit the sector editor. The combination will always bring you back to BASIC from sector editor (without crashing the machine). One very powerful (but somewhat dangerous) feature of this sector editor is the use of the source and target drives. This means that you can read a sector from one drive, make any changes you like, then write it to a different disk in a second drive. BE CAREFUL NOT TO DO THIS ACCIDENTALLY!!! You muse set your source and target drives from the main menu before entering the sector editor there was no room in out ROM to make this command available from within the sector editor itself. IF you find that you do not have the target drive set correctly, you can switch source and target drives by pressing the spacebar. Source and target assignments will then be swapped. Please be careful not to swap the accidentally as will. A write-protect tab can save many headaches by protecting you from such mistakes. MACHINE LANGUAGE MONITOR The machine language monitor is one of the most advanced monitors ever produced for the Commodore 64 and 128. It was designed to be flexible, and accept the syntax of most other previously available monitors; for example, you can separate most parameters with spaces, commas, shifted spaces or sometimes no spaces at all. To disassemble a file, type followed by addresses to start and end disassembly at; for example [ D 1000 1050 ] to disassemble $1000 to $1050. You can pause and resume the disassembly at any time using the spacebar, or stop using . A without an ending address will disassemble continuously to the end of the memory. A by itself will continue a disassembly from the last address displayed for about half of screen then stop again. You can also continue a disassembly (or other memory display) by using the cursor keys to scroll up or down. The command (hexadecimal memory dump) and the command (interrogate memory in ASCII) work similarly. To compare the areas of memory, use the command followed by the start and ending address of the first block of memory, followed by the start address of the second block to compare to, as in [ C 8000 9FFF A000 ] to compare the block at $8000 to $9FFF to the block at $A000 to $BFFF. Any addresses in the first block which differ from the corresponding addresses in the second block will be printed to the screen. To fill an area of memory with a constant value, use the command followed by starting and ending addresses and the value to fill the memory block with. The left-arrow (<-) key followed by a value will set the configuration (bank select) register to the new value. This is location $01 in a Commodore 64 and $FF00 in a Commodore 128 in 128 mode. For example [ <-34 ] on a C64 will allow you to peek under the BASIC and Kernal ROMS and work with the RAM under the I/O block at $D000. Using [ <-00 ] or [ <-01 ] in 128 mode will allow you to do the same thing on a C128 for RAM bank 0 and 1, respectively. The command will display the current processor registers and configuration register values. These are the values which the processor will use if you issue command to go (execute) a routing, as in [ G FCE2 ] to reset a Commodore 64. If you wish the routine being called to return to the monitor on completion, then end it in a BRK instruction. An RTS instruction would return you to BASIC. You can hunt for a sequence of bytes in memory with the command, as in [ H E000 FFFF 8D 00 DD ] which will hunt through the Kernal ROMs for all occurrences of the sequence $8D $00 $DD. You can move a block of code from one memory location to another using the transfer command, as in [ T 1000 1FFF 1002 ] to move the code which presently sits at $1000 to $1FFF to the new location of $1002 to $2001. Note that you can move blocks up or down in memory over their current location without worry OUR come command will not turn into an accidental fill command! Two additional transfer commands, and will transfer blocks of memory to and from disk drive memory respectively. To output all screen information to a printer attached as device number 4, use the

command to toggle the printer output on and off. While output is redirected to the printer, no screen printing will occur. You can also assemble a program with the command as in [ A 1000LDA#$01 ] which will assemble the instruction LDA #$01 to $1000. Spaces here are optional. The I/O command can be used to switch from programming in computer RAM to disk drive RAM. Use [ O 08 ] to move to drive 8 RAM, or by itself to return to the computer. All of the monitor commands are available when programming in the disk drive, except and <<-> The <$> command will list the directory of the currently logged drive to the screen. <@#> can be used to toggle between two drives (see the DOS Wedge). All DOS Wedge commands are available, as are all utility commands provided you precede them with a circumflex <@> as in [ @ R 0A ] to renumber the currently logged drive to drive 10 (see Utility Commands) The load, save, and verify commands (, , & ) all work similarly. The syntax is (or ) then the filename followed by an optional drive number and an optional relocated load address. For example [L "myprogram" I234 ] will load a file from the currently logged drive (or a second drive if the first returns "file not found") and relocate it to the address $I234. Note that you do not have to specify a load address if the default one saved with the file will do. Similarly, [ S"yourprogram" 01 I234 5678 9ABC ] would be used to save a program from the range of $I234 to $5678, inclusive, to a disk on drive 8 and give it the new default load address of $9ABC. As in the load command, you do not have to specify a disk drive number, but if you have more than one drive it is a good idea. If you do not specify the third address, then the default load address will be the same address as the file is being saved from. Finally, there are five ways to exit the monitor. The command will return to BASIC, and restore the BREAK vector back to it's normal value (pointing to BASIC Warm Start on a C64, and Commodore's monitor on a C128 in 128 mode). The instruction will also exit to BASIC, but the BREAK vector will remain set to re-enter the cartridge monitor. will exit to the sector editor, will exit to the cartridge main menu, and will cause a cold start of BASIC (clearing the BREAK vector in the process). So there you have it, We hope you enjoy working with your new accelerator cartridge! We have spent many hours designing and programming it to be the finest utility available for a Commodore 64 or 128. We have taken 32K of machine language code, and re-written it over and over until we could fit it inside a 16K ROM (to keep your cost down). We ended up with zero bytes left over, not even enough to credit the programmers! The Alien Technologists who devoted over two man-years to create this product are Marty Franz, Joe Peter, and Harald Seeley. Many thanks are also due to Bob and Phyllis Jacob as well as John Cutter for their faith in our efforts. FILE UTILITIES SUMMARY - move cursor - toggle highlighted selection - toggle selection and move cursor - toggle all files - toggle remaining files below cursor - move cursor to top of directory - new disk directory start function on selected files SECTOR EDITOR SUMMARY - read sector from source drive - write sector to target drive - move cursor in sector - move cursor to start of sector <+> - move forward one sector <-> - move backward one sector <+> (simultaneously) move forward one track <-> (simultaneously) move backward one track - jump to track/sector at cursor - next sector in file - enter text mode - exit text mode - enter monitor

- print entire sector (simultaneously) clear sector from cursor to end - exit sector editor - swap source and target drives MONITOR COMMAND DUMMARY All items in parenthesis are required. All items in <> are optional A (address)(mnemonic) - assemble command C (start address) (end address) (compare address) compare memory D - disassemble F (start address) (end address) (value) fill memory G (address) go/execute H (start address) (end address) (sequence) hunt/find a byte sequence I - interrogate memory in ASCII L (filename)

- load file M - memory dump (hexadecimal) O - I/O P toggle printer Q quit R display register S (filename) (start address) (end address) transfer block save file T (start address) (end address) (new address) transfer V (filename)
- verify file X - exit <- (val) set configuration register $ - directory @ (drive command) use drive command (see drive commands) DOS WEDGE SUMMARY - load (BASIC) file <%> - load binary (ML) file (simultaneously) load and run first file on disk <<-> - save file verify file <&> - type file <$> - disk directory <#> - set drive number <@> - use drive command channel - enter main menu - enter ML monitor UTILITY COMMAND SUMMARY <$> - display directory in menu format - disable ("kill) fast access routines - enable fast-access routines - restore ("un-new") BASIC program - renumber currently logged disk drive - hard copy (print) current screen - Single-sided mode (1571 only) - Double-sided mode (1571 only) -- Peace, Apathy, Vixen..... ===================== Mark Freid http://wolf.tierranet.com canuss@yiffco.com