********* Welcome to Project 64! http://project64.c64.org The goal of Project 64 is to preserve Commodore 64 related documents in electronic text format that might otherwise cease to exist with the rapid advancement of computer technology and declining interest in 8- bit computers on the part of the general population. If you would like to help by converting C64 related hardcopy documents to electronic texts please contact the manager of Project 64. Extensive efforts were made to preserve the contents of the original document. However, certain portions, such as diagrams, program listings, and indexes may have been either altered or sacrificed due to the limitations of plain vanilla text. Diagrams may have been eliminated where ASCII-art was not feasible. Program listings may be missing display codes where substitutions were not possible. Tables of contents and indexes may have been changed from page number references to section number references. Please accept our apologies for these limitations, alterations, and possible omissions. Document names are limited to the 8.3 file convention of DOS. The first characters of the file name are an abbreviation of the original document name. The version number of the etext follows next. After that a letter may appear to indicate the particular source of the document. Finally, the document is given a .TXT extension. The author(s) of the original document and members of Project 64 make no representations about the accuracy or suitability of this material for any purpose. This etext is provided "as-is". Please refer to the warrantee of the original document, if any, that may included in this etext. No other warrantees, express or implied, are made to you as to the etext or any medium it may be on. Neither the author(s) nor the members of Project 64 will assume liability for damages either from the direct or indirect use of this etext or from the distribution of or modification to this etext. Therefore if you read this document or use the information herein you do so at your own risk. ********* The Project 64 etext of the Expert Cartridge V4.1R manual Converted to etext by Makedonk. ********* Expert V4.1R ------------ (C) Trilogic 1989 0274 691115 Use in conjunction with 3.2R T R I L O G I C present THE EXPERT V4 INTEGRATED DISK SYSTEM conceived and programmed by NOW Computer Systems Ltd. with help from DV-Xul Systems Ltd. CONTENTS A. Introduction B. General Information C. Quick-View Command Sheets D. Module Instructions 1. Backup 2. Machine Code Monitor 3. Character Editor 4. Picture Editor 5. Sprite Editor 6. Utilities 7. Picture Formatter 8. Hard-Copy E. Trouble-Shooting This Product is copyright 1988/1989 by Trilogic and NOW Computer Systems Ltd. A. Introduction --------------- The Strength of this new operating system lies in it's modular approach. Until now, with the Expert Cartridge, you could only really perform one operation at a time - sprite steal, picture steal, memory backup etc were all routines contained in separate modules. The Expert Cartridge only contains 8k of ram and some of the required routines really chew up that memory - the backup routine needs about 2k. This new operating system bypasses that problem by making it unnecessary. Each module has a specific purpose, and you are able to go from one module to another via a menu without corrupting the program which you are currently freezing. Because this system uses a modular approach it is fully expandable - more modules can be added at any time. To this end we would be very pleased if you would let us know of any kind of utilities you would like to see on the next version. All modules have been fully tested and are, as far as we can tell, bug-free! If you think you have found something wrong with any of the modules or even if you would just like to make a suggestion please write to us. All comments are greatly appreciated. B. General Information ---------------------- Cartridge Usage Like all other cartridges for the Commodore 64, you should only insert the Expert Cartridge when the computer is switched off - failure to do so may result in damage to your computer. The Expert Cartridge features a 3-way switch. PRG : Switch to this position before you switch the Commodore 64 on. If it is not in this position, you cannot load in the operating system. OFF : Once you have programmed the Expert you can switch it out of the system using this position - make sure to switch it from Basic. ON : In this position the Expert can be activated by pressing the RESTORE key. Switch to the 'PRG' position and LOAD 'MULTI-MENU' ,8. Then RUN the program. Follow the On-Screen instructions when you load the operating systems. Memory Management When you are using the Machine Code Monitor module you will be able to view (and alter) the following:- Ram : 64k Rom : 16k - Basic and Kernal Roms (A000-BFFF & E000-FFFF) Colour Ram (D800-DBFF) I/O Parameter Block (DC00-DC6F) The Parameter Block contains information to do with the I/O rom (D000-DFFF) as well as the computer status and registers as they were when the program was stopped. DC00-DC2E = D000-D02E VIC Chip DC2F-DC47 = D400-D418 SID Chip DC48-DC57 = DC00-DC0F CIA #1 DC58-DC67 = DD00-DD0F CIA #2 DC68-DC6F = Registers Registers DC68 = Status Register DC69 = Program Counter Lo DC6A = Program Counter Hi DC6B = Accumulator DC6C = X-Register DC6D = Y-Register DC6E = Stack Pointer DC6F = Q-Value The Q-Value is the Hi-Byte of the address which the backup process uses as a workspace when it comes to de-compressing the program you have backed-up. If, for instance, the value is 73 then the workspace address will be 7300. The Expert will automatically find this value but gives you the option to enter your own value. The Q-Value must be in the range 02-FF. In the Monitor, if the Q-Value is preceded by a minus this means that it could not find sufficient space and so is using screen-memory. The Screen-Viewer All modules incorporate a Screen-Viewer which allows you to view the screen as it was when you froze the program in memory - even the Basic screen! In some cases the sprites or even the screen may become corrupted. This is due to the Expert Cartridge displaying an image of itself in the top quarter of every video bank: 3000-3FFF 7000-7FFF B000-BFFF F000-FFFF If the screen display includes any graphics which reside in these sections of memory then the display will be corrupted. This is much the same as the character image which appears at 1000-1FFF and 9000-9FFF. It doesn't corrupt memory, but you cannot display the graphics in these sections. The Multi-Menu To load the Multi-Menu from any of the modules you press the 'M' key - except the Machine Code Monitor which requires 'MM (return)'. The bottom line of the screen will then display the following message:- Reset Drive,Insert Menu Disk,Press Return Insert the Multi-Menu disk and HOLD down the spacebar - it auto-repeats. The screen will blank and the menu will load and be displayed. If you wish to quit the Menu press STOP. The computer will return control to the module currently in memory. To load a module press the appropriate letter. The specified module will be highlighted and you will be given the option to 'Load Module (Y/N)?'. N.B. All (Y/N)? prompts will accept 'Y' or 'Return' as Yes, any other key will be accepted as No. If you select the Picture Editor or Picture Formatter modules, the Menu checks to see that the computer is currently set up for a picture. If not, it will inform you of this but still allow you to load that module. The screen will blank whilst the module is being loaded and then the menu will be re-displayed, but the loaded module will remain highlighted. If you have loaded the wrong module you can load another module. If you select the loaded module again, you will quit the menu and enter that module. Do NOT press any keys or the reset button whilst modules are being loaded as this may cause the system to crash. In load-tests, the time taken for the menu to load was approximately 4 seconds. The time taken for the modules may differ but was never more than 15 seconds. If your setup includes a parallel operating system, these times will be reduced quite considerably. Machine Code Instructions This section does not attempt to explain Machine Code, just three instructions which are mentioned in later sections. Those of you who understand Machine Code, please ignore this section. With all three instructions, it is much easier to understand what is happening if you split the values you are working with into binary values. AND If you 'AND' two values, only the bits which are set in both values will remain set in the result: B7 = 1011 0111 AND 3C = 0011 1100 --------- 0011 0100 = 34 OR If you 'OR' to values, only the bits which are clear in both values will remain clear in the result: B7 = 1011 0111 OR 3C = 0011 1100 --------- 1011 1111 = BF EOR If you 'EOR' two values, only the bits which are opposite in both values will be set in the result. If the bits are identical (0 or 1) then the result will be clear: B7 = 1011 0111 EOR 3C = 0011 1100 --------- 1000 1011 = 8B If, as mentioned above, instead of looking at the byte values as a whole, you look at each bit individually, it will make the calculation much easier to understand. Universal Commands Every module (except the Machine Code Monitor) has the following commands: R Restart Program execution is returned to the computer and should continue from the point at which it was halted. ^ Viewer This command as already mentioned allows you to view the screen. Some of the modules support extra commands in this mode, but all support the following: <- Current Sprites off/on 1 Increment Border colour 2 Increment Screen Colour STOP Quit back to module N New Memory Memory is filled with a predetermined value and then the computer is reset. P Protect Memory Memory is configured using a pre-determined value and then the computer is reset. Both the New and Protect commands allow you to specify the value that the memory will be filled with (the fill-byte) <- Reset Computer The computer is reset but memory is not altered. X Exit Module This command allows you to exit the module you are currently in. If you exit a module and the Basic Interpreter is not resident in the system, then the computer will crash. @ Dos Commands This opens a channel to the disk drive and allows you to send a command, get the status, get the disk directory and check the start and end addresses of a file. @ Get status @I Initialise disk drive and return status @$ Display Directory @#file Display start and end addresses of file Both the $ and # options can be quit by pressing STOP D Directory Display the directory of the disk in drive 0. Spacebar to pause listing, STOP to quit. M Menuloader The bottom screenline displays the message: Reset Drive,Insert Menu Disk,Press Return Insert the Menu disk and hold down the spacebar to load the menu. STOP to quit. The Machine Code Monitor does not support the Reset (<-) or Directory (D) commands. The Directory can be displayed either with '@$' or by pressing 'F7'. Press 'MM' to invoke the Menuloader. C. Quick-View Command Sheets ---------------------------- This section lists the commands available in every module. 1. Backup 2. Machine Code Monitor 3. Character Editor 4. Picture Editor 5. Sprite Editor 6. Utilities 7. Picture Formatter 8. Hard-Copy 1. Backup Key Command Description B Backup Memory ^ Screen Viewer R Restart Program N New Memory P Protect Memory <- Reset Computer X Exit Module @ Dos Commands D Directory M Menuloader L Load Whole Memory S Save Options: B Backup M Whole Memory P Picture F1 Toggle Slow/Fast Load and Save 2. Machine Code Monitor Key Command Description # Decimal to Hex # 64738 $ Hex to Decimal $ FCE2 & 'AND' Memory & 1000 1FFF 7F ' Interpret Input ' 1000 TEXTSTRING * Ram/Rom Toggle * + Increment Memory + 1000 1FFF 03 , Dis-Assemble Input , 1000 4C E2 FC - Decrement Memory - 2000 2FFF 64 / Registers Input / E5CD 27 00 00 00 FF 37 : Monitor Input : 3000 54 52 49 49 4C 4F 47 49 43 ^ Screen Viewer ^ <- Registers <- @ Dos Commands @, @(Command), @#Filename, @$ A Assemble A 1000 LDA #$00 C Compare Memory C 1000 1FFF 2000 D Dis-Assemble D 1000 E 'EOR' Memory E 1000 1FFF 73 F Fill Memory F 4000 4FFF 00 G Go address (Jump) G FCE2 H Hunt Memory H 6000 7FFF 48 49 I Interpret Memory I 1000 1FFF J JSR Address J FD15 K (Re-) Locate Memory K 1000 1FFF 0400 047F (2000) L Load L "Filename",08,2000 M Monitor Memory M 1000 N New Memory NN 7F O 'Or' Memory O 1000 1FFF 80 P Protect Memory PP 63 Q Q-Value Set Q 08 R Restart Program R S Save S "Filename",08,1000,2000,4000 T Transfer Memory T 1000 1FFF 3000 U User Colours U 678 V Verify V "Filename",08,C000 W Auto-Range W 1000 2FFF X Exit Module X Y Screen/Printer Output Y F1 Ram/Rom Toggle F2 Unlisted Opcodes On/Off F3 Registers F4 ASCII/Screen-Pokes Mode F5 Load F6 Repeats On/Off F7 Directory F8 Cursor Bottom Screen Crsr-Up Scroll Listing Up Crsr-Down Scroll Listing Down 3. Character Editor Key Command Description Key Command Description Converter Section R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour E Enter Editor C Convert Rom Set to Ram Set M Menuloader Main Section R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour @ Dos Commands D Directory F1 Hires/Multi E Edit Mode F3 Video Bank Up F4 Video Bank Down F7 Character Set Up F8 Character Set Down Home Matrix Top-Left Clr Matrix Bottom-Right Crsrs Scroll Matrix M Menuloader L Load Character Set Shift L Load Characters S Save Character Set Shift S Save Characters Edit Section B Background Colour T Text Colour Home Cursor Top-Left Clr Cursor Bottom-Right Crsrs Move Cursor Space Draw - Set/Clear Pixels 1-4 Select Draw Colour Shift 1-4 Set Colours V Vertical Flip H Horizontal Flip + Roll Character Up - Roll Character Down Shift + Roll Character Left Shift - Roll Character Right R Rotate Character Right Shift R Rotate Character Left Ctrl R Reverse Character C Clear Character F Fix Matrix Character Shift F Fix Ram Character F1 Hires/Multi G Goto Character * Store Number Up Shift * Store Number Down F7 Character To Store F8 Store To Character F5 Swap Characters With Store F2 Byte Input E Exit With Edits STOP Exit Without Edits In Edit Mode the Joystick can be used to move the cursor in all 8 directions. The Fire Button will set/clear pixels like the spacebar. 4. Picture Editor Key Command Description Key Command Description Converter Section R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour E Enter Editor C Convert Standard Screen M Menuloader Main Section R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour @ Dos Commands D Directory F1 Hires/Multi E Edit Mode F3 Video Bank Up F4 Video Bank Down F7 Colours Up F8 Colours Down Home Matrix Top-Left Clr Matrix Bottom-Right Crsrs Scroll Matrix M Menuloader L Load Picture S Save Picture Edit Section B Background Colour T Text Colour Home Cursor Top-Left Clr Cursor Bottom-Right Crsrs Move Cursor Space Draw - Set Pixels 1-4 Select Draw Colour Shift 1-4 Set Colours F1 Hires/Multi F Fix Matrix L Load Matrix F3 Matrix to Store S Save Matrix F4 Store to Matrix ^ Viewer F2 Swap Matrix with Store C Clear Square Shift C Clear Matrix E Exit With Edits STOP Exit Without Edits In Edit mode the Joystick can be used to move the cursor in all 8 directions. The Fire Button will set/clear pixels like the Spacebar. 5. Sprite Editor Key Command Description Key Command Description R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour @ Dos Commands D Directory : Matrix Load ; Matrix Save L Load Sprites S Save Sprites Shift L Load 8 Sprites Shift S Save 8 Sprites Shift V View/Select/Load Sprites M Menuloader Home Cursor Top-Left Clr Cursor Bottom-Right Crsrs Move Cursor Space Draw - Set/Clear Pixels 1-4 Select Draw Colour Shift 1-4 Set Colours Shift X X-Symmetry On/Off Shift Y Y-Symmetry On/Off H Matrix Horizontal Flip V Matrix Vertical Flip + Roll Matrix Up - Roll Matrix Down Shift + Roll Matrix Left Shift - Roll Matrix Right Cbm + Roll Matrix Row Left Cbm - Roll Matrix Row Right A Matrix 'AND' Store Shift A Matrix 'AND' Memory E Matrix 'EOR' Store Shift E Matrix 'EOR' Memory O Matrix 'OR' Store Shift O Matrix 'OR' Memory F7 Matrix To Store Shift G Memory To Matrix F8 Store To Matrix Shift P Matrix To Memory F5 Swap Matrix With Store F2 Swap Matrix With Memory Ctrl R Reverse Matrix F1 Hires/Multi C Clear Matrix Sprite Shift C Clear Memory Sprite < Scroll Sprite Left > Scroll Sprite Right F3 Video Bank Up F4 Video Bank Down G Goto Memory Sprite * Sprite Display Mode F6 Repeats On/Off The Joystick can be used to move the cursor in all 8 directions. The Fire Button will set/clear pixels like the Spacebar. 6. Utilities Key Command Description R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module @ Dos Commands D Directory Home Cursor Top Selection Clr Cursor Bottom Selection Crsrs Cursor Up/Down One Selection Return Execute Selection M Menuloader 7. Picture Formatter Key Command Description Converter Section R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module E Enter Formatter C Convert Standard Screen M Menuloader Main Section R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module @ Dos Commands D Directory L Load Picture S Save Picture H Horizontal Flip V Vertical Flip Home Cursor Top-Line Clr Cursor Bottom-Line Crsrs Cursor Up/Down One Selection M Menuloader 8. Hard-Copy Key Command Description R Restart Program ^ Screen Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module @ Dos Commands D Directory F1 Normal Print F3 Reverse Print M Menuloader D. Module Instructions ---------------------- This section contains the instructions on how to use each module. The modules explained are: 1. Backup 2. Machine Code Monitor 3. Character Editor 4. Picture Editor 5. Sprite Editor 6. Utilities 7. Picture Formatter 8. Hard-Copy Editing Modules Modules 3, 4, and 5 allow you to edit graphics using either the keyboard or a joystick. Modules 3 and 4 have a Main mode and an Edit Mode, module 5 is always in Edit mode. Main Mode B Increment Background Colour T Increment Text Colour F1 Toggle Between Hires And Multicolour. Home Cursor Top-Left of Picture/Character Set. Clr Cursor Bottom-Right of Picture/Character Set. Crsrs Move cursor in eight-pixel (one-character square) jumps E Goto Edit mode F3 Increment Video Bank F4 Decrement Video Bank There are 4 video banks in the Commodore 64. The 'F3' and 'F4' commands will toggle through these and display the graphics displayed at the screen locations in every video bank. Edit Mode B Increment Background Colour T Increment Text Colour F1 Toggle Between Hires And Multicolour. Home Cursor Top-Left of Matrix Clr Cursor Bottom-Right of Matrix Crsrs Move cursor one pixel in any direction. Spacebar Set/Clear pixels. 1-4 Select Draw colour. Shift 1-4 Set Draw colours. The Joystick can be used instead of the cursor keys to move the cursor in all 8 directions. The Fire Button will set/clear pixels like the spacebar. 1. Backup This is the main module and the one which the system initially boots up with. It contains the all-important Backup routine, as well as the ability to save both Hires and Multicolour Pictures and the unique feature of saving the whole memory (including colour and I/O) in one file, which can then be reloaded later if you require. This module also includes fast load/save routines. They have been tested with the following drives: 1541, 1541C and the Blue Chip. Just in case this doesn't work with your drive you can also toggle between slow and fast loading and saving. Key Command Description B Backup Memory ^ Screen Viewer R Restart Program N New Memory P Protect Memory <- Reset Computer X Exit Module @ Dos Commands D Directory M Menuloader L Load Whole Memory S Save Options: B Backup M Whole Memory P Picture F1 Toggle Slow/Fast Load and Save F1 Fast Load/Save On/Off This is not on the Backup menu. Pressing 'F1' will simply toggle between Slow and Fast. If you find that your drive doesn't support the fast routines or if you have a parallel operating system, just select slow. B Backup Memory This command allows you to compress the whole of memory into a single file which can then be saved. Once compressed and saved, the file can run independently of the Expert Cartridge. The Backup process takes about one minute - usually less. If you do wish to Backup memory, you must first set the Q-Value. If you wish to over-ride the automatic value, delete it and enter the new value. Press STOP to quit or Return to continue. As soon as you press Return, the screen will blank and then flash very rapidly. This will continue until the process has been completed. Upon completion, the Backup Menu will be re-displayed but will now include the amount of disk space required to save the backup. Once you have made a backup, you will not be allowed to use the Backup or Screen Viewer command again until you quit that mode by using one of the following: Restart, Reset, Exit, New, Protect. Once you have made a Backup, you can save it as many times as you wish. You can also still go from one module to another. If you wish to save a backup to tape, use the Utilities module. L Load Whole Memory This command allows you to reload a previously saved 'Mem.' file. You are prompted with 'Load Filename Mem.' and a flashing cursor. STOP to quit. Input the filename and press return. If the fastload is on, the load will take approximately 90 seconds. If the fastload is off, the load will take approximately 4 minutes. On completion of the load, the computer will be set up as it was when that program was first frozen. If you now use the Screen Viewer (^) command, the screen should be displayed as it was prior to saving that file. This command (and the Mem-Save command) have been implemented to allow you more freedom with your Expert - take a break without losing what's in memory. It is suggested that you use these functions prior to using any of the editing modules in case you should make a mistake. S Save Options Depending on the current backup status, the following options may be available: B - Backup If you have used the Backup command, then you can save the Backup by selecting this option. You can save as many times as you wish. M - Memory If you have not yet used the Backup command then this option will be available to you. P - Picture If the computer is currently set up for a picture screen, then this option will be available. It will save both Hires and Multicolour formats. 2. Machine Code Monitor This is a full-feature machine code monitor with a few extras Whole memory monitor including Ram, Rom, Colour an I/O 8 pre-programmed function keys including: Repeats, Directory, Load, etc Dis-Assemble, Monitor and Text interpret Listings. Bi-directional scrolling in all three listing modes Output to either screen or printer Full unlisted opcodes implementation When you enter the Monitor the screen will clear and the registers will be displayed. ADDR SR AC XR YR SP IO NV-BDIZC RAM /E5CD 27 00 00 00 FF 37 00100111 ASC The following values can be altered ADDR The address at which the program was frozen SR Status Register AC Accumulator XR X-Register YR Y-Register SP Stack Pointer The Status Register is also displayed as separate flags N Negative V Overflow - unused B Break D Decimal I Interrupt Z Zero C Carry The Status Register is displayed here as a binary number allowing you to see which flags are set/clear. 0 indicates that the flag is clear, 1 that the flag is set. These flags cannot be altered independently. Also displayed with the registers are the following four status flags The Ram/Rom status 'RAM' or 'ROM' Unlisted Opcodes On/Off ' ' or 'U/L' ASCII/Screen pokes mode 'ASC' or 'SCR' Repeats On/Off ' ' or 'REP' The following pages contain: A. A complete commands list and description of their usage. B. A brief description of the unlisted opcodes. Commands List Key Command Description # Decimal to Hex # 64738 $ Hex to Decimal $ FCE2 & 'AND' Memory & 1000 1FFF 7F ' Interpret Input ' 1000 TEXTSTRING * Ram/Rom Toggle * + Increment Memory + 1000 1FFF 03 , Dis-Assemble Input , 1000 4C E2 FC - Decrement Memory - 2000 2FFF 64 / Registers Input / E5CD 27 00 00 00 FF 37 : Monitor Input : 3000 54 52 49 49 4C 4F 47 49 43 ^ Screen Viewer ^ <- Registers <- @ Dos Commands @, @(Command), @#Filename, @$ A Assemble A 1000 LDA #$00 C Compare Memory C 1000 1FFF 2000 D Dis-Assemble D 1000 E 'EOR' Memory E 1000 1FFF 73 F Fill Memory F 4000 4FFF 00 G Go address (Jump) G FCE2 H Hunt Memory H 6000 7FFF 48 49 I Interpret Memory I 1000 1FFF J JSR Address J FD15 K (Re-) Locate Memory K 1000 1FFF 0400 047F (2000) L Load L "Filename",08,2000 M Monitor Memory M 1000 N New Memory NN 7F O 'Or' Memory O 1000 1FFF 80 P Protect Memory PP 63 Q Q-Value Set Q 08 R Restart Program R S Save S "Filename",08,1000,2000,4000 T Transfer Memory T 1000 1FFF 3000 U User Colours U 678 V Verify V "Filename",08,C000 W Auto-Range W 1000 2FFF X Exit Module X Y Screen/Printer Output Y F1 Ram/Rom Toggle F2 Unlisted Opcodes On/Off F3 Registers F4 ASCII/Screen-Pokes Mode F5 Load F6 Repeats On/Off F7 Directory F8 Cursor Bottom Screen Crsr-Up Scroll Listing Up Crsr-Down Scroll Listing Down # Decimal to Hex Conversion Syntax #64738 Converts the decimal number 64738 into it's Hex equivalent $FCE2 $ Hex to Decimal Conversion Syntax $1000 Converts the Hex number $1000 into it's decimal equivalent 4096 & Memory 'AND' XX to memory Syntax & 1000 1FFF 26 Every location in the specified memory range will be ANDed with 26 The 'AND' machine code instruction is explained at the start of this booklet. ' Text Interpret Mode Syntax '1000 TEXTSTRING The TEXTSTRING will be inserted at the specified address. This command works in both output modes - ASCII or Screen-Pokes. The values will be different depending on which mode you are in, so be careful when using this command. Also, be careful when generating new lines as this command will see even a blank line as a line of text. * Ram/Rom toggle Syntax * This dictates wether you are looking at Ram or Rom If you wish to look at the Colours or I/O then you should select ROM. A complete description of the memory mapping of the Expert can be found at the start of this booklet. + Memory plus XX to Memory Syntax + 1000 1FFF 37 Every location in the specified memory range will have 37 added to it. , Dis-Assemble Input Syntax ,1000 20 00 FE JSR $FE00 When you Dis-Assemble a section of memory it will be displayed like the example above. If you wish to alter a line you can do this without using the Assemble command. Instead, you can either enter the new bytes over the existing ones, or you can enter a new instruction over the old one. In either case, you must enter it at it's present screen location. ie ,1000 20 00 FE JSR $FE00 or ,1000 20 00 FE JSR $FE00 Change to ,1000 20 03 FF JSR $FE00 or ,1000 20 00 FE JSR $FF03 -- -- ---- - Memory minus XX to Memory Syntax - 1000 1FFF 04 Every location in the specified memory range will have 04 subtracted from it. / Change current register values Syntax /1000 27 00 00 00 FF 37 When you display the registers (<-) you can alter the current values by cursoring over them and entering new values - be careful! If you just wish to change the restart address you could type /4000 and this would change the restart address to $4000. : Monitor Input When you display a section of memory with the Monitor command it looks like this: Syntax :1000 54 52 49 4C 4F 47 49 43'TRILOGIC To alter these values cursor over the offending bytes and enter the new values. You cannot enter text in this mode. ^ Screen Viewer If you wish to view the screen as it was when you froze the program in memory, press '^' and 'Return'. The screen will appear with the sprites - if there were any. In this mode you can do the following: 1 Increment Border colour 2 Increment Screen colour <- Switch current Sprites On/Off STOP Quit back to Monitor <- Display Registers Pressing <- will display the registers as mentioned above. See / command on how to change Registers. @ Dos Command This allows you to check the status of the disk drive, send commands to the disk drive, get the disk directory and check the start and end addresses of a file. @ Gets status @Command Performs command and returns status (I, S, N, V, UI etc). @$ Displays directory of disk currently in drive @#File Displays start and end addresses of file. If it is a long file and you just require the start address, press STOP. All Dos commands will re-direct output to the screen. A Assemble Machine Code instructions Syntax A 1000 LDA #$00 To enter or alter some instructions into memory use the 'A' key followed by the address followed by the command. Once you have entered one line, the code will be assembled to memory and the next address line will be automatically generated. C Compare Memory with Memory Syntax C 1000 1FFF 2000 This will compare the section of memory specified by the first two numbers with the section of memory starting at the third number. If there are any differences, those locations will be displayed. D Dis-Assemble Machine Code instructions Syntax D 1000 This will start Dis-Assembling memory from the specified address. E Memory 'EOR' XX to Memory Syntax E 1000 1FFF 43 Every location in the specified memory range will be EORed with 43. The 'EOR' machine code instruction is explained at the start of this booklet. F Fill Memory with XX Syntax F 1000 1FFF 80 Every location in the specified memory range will be filled with 80. G Goto Address Syntax G 1000 This will cause the computer to start executing code at the specified address using the current register values. H Hunt memory for values Syntax H 1000 1FFF 20 Hunt through specified memory range for byte(s) - as many as 16 bytes. Syntax H 1000 1FFF 'TRILOGIC Hunt through specified memory range for ASCII textstring. Syntax H 1000 1FFF "TRILOGIC" Hunt through specified memory range for Screen-Pokes textstring. Every time a match is found, the address at which the match begins will be displayed. I Interpret Memory - text display Syntax I 1000 Display the specified memory purely as characters. This command works both in ASCII and Screen-Pokes mode. J Jump Subroutine Syntax J 1000 This will cause the computer to execute the routine at the specified address but will return control to the Monitor upon an 'RTS' instruction. The registers will reflect what has occurred during the routine, but the Restart address should remain constant. K (Re-) Locate Memory reference Syntax K 1000 1FFF 0300 03FF The specified memory range will be searched for any references to the memory range 0300 to 03FF. Any reference will be displayed. Syntax K 1000 1FFF 0300 03FF 0400 The specified memory range will be searched for any references to the memory range 0300 to 03FF and will alter them to 0400 upwards. L Load file from disk Syntax L"FILENAME",08 The specified file will be loaded from disk into memory. The start and end addresses will be displayed. If you wish to load a file into a section of memory that it was not originally saved from use the following: Syntax L"FILENAME",08,1000 - the address at which it will load. M Monitor Memory + Menuloader Syntax M 1000 Memory starting at the specified address will be displayed: :1000 48 49 2D 44 45 2D 48 49'HI-DE-HI If you wish to alter these values refer to the ':' command. Syntax MM This will cause the Menuloader routine to be activated. The screen will clear and prompt you to insert the Menu-Disk and press a key. If you do not wish to load the menu press the STOP key. N New Memory and Reset Syntax NN 0F Computer memory will be filled with the specified value and then the computer will reset. The number is an option. Once you have specified a value it will stay constant. As a safety precaution, you have to press the command key twice. O Memory 'OR' XX to Memory Syntax O 1000 1FFF FD Every location in the specified memory range will be ORed with FD. The 'OR' machine code instruction is explained at the start of this booklet. P Protect Memory and Reset Syntax PP F8 Computer memory will be configured using the specified value and then the computer will reset. The number is an option. Once you have specified a value it will stay constant. As a safety precaution, you have to press the command key twice. Q Q-Value Set The Q-Value specifies the section of memory which will be used as a work area when it comes to decompressing memory - see Backup Module. If you wish to enter a new value use the following: Syntax Q 27 Entering Q without a value will activate the Auto-Address Finder. R Restart Program Syntax R This returns control of the computer to the program in memory. If you have altered any of the registers including the Restart address the program will continue with those new settings. S Save file to disk Syntax S"FILENAME",08,1000,2000 The specified section of memory will be saved to disk under the specified filename. If you wish to save a file so that it will load in at a different address from which it was saved use the following Syntax S"FILENAME",08,1000,2000,3000 - reload address. T Transfer Memory Syntax T 1000 1FFF 2000 Transfer the section of memory specified by the first two numbers to the section of memory starting at the third number. This is an intelligent transfer routine and can transfer within itself. ie T 1000 1FFF 1100 U Set User Colours Syntax U789 The Border, Screen and Text colours may be altered with this command. The first number specifies the Border, the second the Screen and the third the Text. If any command alters any of these colours, they will automatically be set back to these values. The default values are 661 (Border Blue, Screen Blue, Text White). V Verify file with Memory Syntax V"FILENAME",08 This command opens the specified disk file, gets the start address and then compares the file with the section of memory starting at the same memory address. All differences are displayed. If you wish to verify a file against memory not at the same address use the following Syntax V"FILENAME",08,3000 W Auto Range Set Syntax W 1000 1FFF If you are continually working with the same section of memory, wouldn't it be much easier if you could automatically set the memory range - hence this command. Set the range as above - the default values are 0000 to FFFF. This option can be used with '& + - C E F H K O T'. Instead of setting the range just use '*'. Syntax C* 3000 Instead of C 1000 1FFF 3000 H* 'TEXT Instead of H 1000 1FFF 'TEXT X Exit Monitor Syntax X This command exits the monitor by performing a warm start. You must be careful when using this command. If the value in location 01 is not 37 (if Basic is not switched in) then it is very likely that you will lock the computer up. Y Screen/Printer output All listings (Dis-Assemble, Monitor and Interpret) default to the screen but can be re-directed to the printer. Syntax Y This will toggle between Screen and Printer output. Any accessing of the disk drive will re-direct output to the screen. The printer cannot display the Screen-Pokes properly, so when you are in printer mode, the output mode automatically switches to ASCII and cannot be changed whilst the printer is active. With the Dis-Assemble (D), Interpret (I) and Monitor (M) Commands, listings can be displayed in the following three ways. 1 Syntax D 1000 Dis-Assemble from 1000 onwards 2 Syntax I 1000. Interpret only one line starting at 1000. 3 Syntax M 1000 1FFF Monitor from 1000 to 1FFF. The above three listings can be halted by pressing the STOP key or paused by pressing the Spacebar. Interrupt-Driven Commands F1 Ram/Rom Toggle This has the same effect as the '*' command but also displays the new registers. F2 Unlisted Opcodes On/Off This switches the Unlisted Opcodes On or Off and displays the registers. With the Unlisted Opcodes switched on, you can Assemble or Dis-Assemble using Unlisted Opcodes. You cannot Assemble Unlisted Opcodes if this is set to Off. F3 Display Registers This has the same effect as using the '<-' command - display Registers. F4 ASCII/Screen-Pokes Toggle This changes all Screen Text input/output between ASCII and Screen-Pokes and displays the Registers. F5 Load To make loading a file easier you can use this function. List a directory, cursor to the file you wish to load and press 'F5'. This will place 'L' at the start of the line, '08' after the filename and clear the rest of the line. L "FILENAME",08 F6 Repeats On/Off Toggle The repeats are switched On or Off and the registers are displayed. F7 Directory List Disk Directory F8 Cursor Bottom-Left of Screen This key is used as the opposite of the 'Home' key and makes life easier when you want to use the list-scrolling routines - see below. Up If the cursor is at the top of the screen and you press the 'Crsr-up' key then the current screen listing will be scrolled up. Down If the cursor is at the bottom of the screen and you press the 'Crsr-Down' key then the current screen listing will be scrolled down. Unlisted Opcodes The following notation applies to this section A Accumulator X X-Register Y Y-Register SP Stack Pointer (HB+1) (High Byte of Operand)+1 ie (HB+1) of FCE2 = FC+1 = FD M Location value specified by instruction # Hexadecimal value AND Logical AND two values OR Logical OR two values EOR Logical EOR two values AAX A AND X, to M ALR A AND M, LSR AMB A AND M, to A : Bit 7 to Carry Flag ASO ASL M, M OR A, to A AXH A AND X AND (HB+1), to M (A, X not affected) AXS A AND X, to SP, AXH (A, X not affected) CRA Crash Processor DCM DEC M, CMP with A HXM X AND (HB+1), to M (X not affected) HYM Y AND (HB+1), to M (Y not affected) INS INC M, SBC from A LAS LDA, LDX, TXS LAX LDA, LDX LSE LSR, EOR with A, to A NPO NOP replacement OAX (A OR #EE) AND M, TAX RLA ROL M, M AND A, to A RRA ROR M, M ADC A, to A SAX A AND X, SBC M, to A SKB Skip Byte SKW Skip Word SUB SBC Replacement XMA (A OR #EE) AND M AND X, to A (X not affected) Addressing Modes A Implied (Including Accumulator) ASL, DEY, BRK B Immediate LDA #$5F C (Indirect) JMP ($1000) D (Indirect),Y LDA ($AC),Y E (Indirect),X LDA ($AE),X F Zeropage BIT $FB G Absolute STY $0FE3 H Zeropage,Y LDX $10,Y I Absolute,Y LDA $0314,Y J Zeropage,X STA $2B,X K Absolute,X LDA $8000,X L Relative BNE $1FCD The above mnemonics may not conform to ones that you already know but were fully 'roadtested' and found to be satisfactory. The following table lists all the opcodes as implemented in this Monitor. The addressing mode is defined by the letter underneath the mnemonic (A-L). The '*' signifies that the opcode is an unlisted one. The table also makes it easy to see patterns emerging: 10 - BPL, 70 - BVS, D0 - BNE : all branches are odd-numbered 10's. 0 1 2 3 4 5 6 7 8 9 A B C D E F ------------------------------------------------------------------- 00 BRK ORA CRA ASO SKB ORA ASL ASO PHP ORA ASL AMB SKW ORA ASL ASO A E A * E * F * F F F * A B A B * G * G G G * ------------------------------------------------------------------- 10 BPL ORA CRA ASL SKB ORA ASL ASO CLC ORA NPO ASO SKW ORA ASL ASO L D A * D * F * J J J * A I A * I * G * K K K * ------------------------------------------------------------------- 20 JSR AND CRA RLA BIT AND ROL RLA PLP AND ROL AMB BIT AND ROL RLA G E A * E * F F F F * A B A B * G G G G * ------------------------------------------------------------------- 30 BMI AND CRA RLA SKB AND ROL RLA SEC AND NPO RLA SKW AND ROL RLA L D A * D * F * J J J * A I A * I * G * K K K * ------------------------------------------------------------------- 40 RTI EOR CRA LSE SKB EOR LSR LSE PHA EOR LSR ALR JMP EOR LSR LSE A E A * E * F * F F F * A B A B * G G G G * ------------------------------------------------------------------- 50 BVC EOR CRA LSE SKB EOR LSR LSE CLI EOR NPO LSE SKW EOR LSR LSE L D A * D * F * J J J * A I A * I * G * K K K * ------------------------------------------------------------------- 60 RTS ADC CRA RRA SKB ADC ROR RRA PLA ADC ROR ALR JMP ADC ROR RRA A E A * E * F * F F F * A B A B * C G G G * ------------------------------------------------------------------- 70 BVS ADC CRA RRA SKB ADC ROR RRA SEI ADC NPO RRA SKW ADC ROR RRA L D A * D * F * J J J * A I A * I * G * K K K * ------------------------------------------------------------------- 80 SKB STA SKB AAX STY STA STX AAX DEY SKB TXA XMA STY STA STX AAX F * E F * E * F F F F * A F * A B * G G G G * ------------------------------------------------------------------- 90 BCC STA CRA AXH STY STA STX AAX TYA STA TXS AXS HYM STA HXM AXH L D A * D * J J H H * A I A I * K * K I * I * ------------------------------------------------------------------- A0 LDY LDA LDX LAX LDY LDA LDX LAX TAY LDA TAX OAX LDY LDA LDX LAX B E B E * F F F F * A B A B * G G G G * ------------------------------------------------------------------- B0 BCS LDA CRA LAX LDY LDA LDX LAX CLV LDA TSX LAS LDY LDA LDX LAX L D A * D * J J H H * A I A I * K K I I * ------------------------------------------------------------------- C0 CPY CMP SKB DCM CPY CMP DEC DCM INY CMP DEX SAX CPY CMP DEC DCM B E F * E * F F F F * A B A B * G G G G * ------------------------------------------------------------------- D0 BNE CMP CRA DCM SKB CMP DEC DCM CLD CMP NPO DCM SKW CMP DEC DCM L D A * D * F * J J J * A I A * I * G * K K K * ------------------------------------------------------------------- E0 CPX SBC SKB INS CPX SBC INC INS INX SBC NOP SUB CPX SBC INC INS B E F * E * F F F F * A B A B * G G G G * ------------------------------------------------------------------- F0 BEQ SBC CRA INS SKB SBC INC INS SED SBC NPO INS SKW SBC INC INS L D A * D * F * J J J * A I A * I * G * K K K * Please refer to the Commodore 64 Programmer's Reference Guide for a fuller description on the standard opcodes and their addressing modes. 3. Character Editor The Character Editor allows you to: 1. Load and Save whole or part character sets. 2. Define/Edit your own characters or alter existing ones. 3. Place a character set anywhere in memory - up to ? character sets at once! This module supports an extended Screen-Viewer with the following commands. <- Sprites On/Off 1 Increment Border Colour 2 Increment Screen Colour F1 Hires/Multicolour F3 Video Bank Up F7 Character Set Up STOP Quit back to Module This will allow you to scan memory looking for other character set. When you enter the Character Editor, it checks whether the current character set is a Ram or Rom based set. If it is a Ram based set then there is no problem and you will enter the main Editor mode. The Character Editor can obviously not edit a Rom based character set. Because of this, you are given the option of transferring the current Rom based set into Ram. The following message will appear Real-Time Character Editor Rom Character Set This is the Converter section Commands list Key Command Description R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset X Exit Module B Background Colour T Text Colour E Enter Editor C Convert Rom Set to Ram Set M Menuloader B Background Colour This command increments the background colour - the colour of the border and Screen. T Text Colour This command increments the Text colour - the colour of all informational text on the Screen. E Enter Editor This will allow you to enter the main editor without actually corrupting memory by placing the Rom set in Ram. If you use the Screen-Viewer you will have to go through this procedure again unless you move the character set location. Rom Character Set image locations Bank0 1000-1FFF and Bank2 9000-9FFF If the character set is in these locations then you will actually be using the Rom set. C Convert This command will take the Rom character set and place it in Ram at $4000. It will then set the VIC chip so that it is now looking at the new set. Because this command has corrupted memory, the Restart address gets altered so that the computer will reset if you use the restart command. Only use this command if you wish to edit the Rom character sets. Once you have used the converter you will enter the editor. Screen Layout The bottom 16 lines of the screen contain the main character matrix. This displays an 8*8 representation of the characters displayed at the top-left of the screen. The matrix is laid out so that the top line displays five characters starting with CHAR number (top of screen), below which are five more characters starting at CHAR + $20. The character set is split into 8 rows of $20 characters. You can move freely around the character set using the cursor keys. The upper-left of the screen displays information regarding the location of the characters in memory, hires/multicolour mode and the draw colours. The upper-right has two small single-character matrices and between them are the two characters they are displaying. The left one is the current character you are currently on in the large matrix. The right one is the current store - there are $20 store characters. Main mode commands List Key Command Description R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour @ Dos Commands D Directory F1 Hires/Multicolour E Edit Mode - see section on Edit Mode. F3 Video Bank Up F4 Video Bank Down F7 Character Set Up F8 Character Set Down Home Matrix Top-Left Clr Matrix Bottom-Right Crsrs Scroll Matrix M Menuloader L Load Character Set S Save Character Set Shift L Load Characters Shift S Save Characters F7 Character Set Up This allows you to look at different character sets which may be in memory and can be used in conjunction with 'F3'. It will step upwards through the possible 8 character set locations in the current Video Bank. Again, it is not advisable to use during a game. F8 Character Set Down This is the inverse of 'F7' and will step down through the current Video Bank. Load and Save Routines All load and save routines will prompt you for a filename. There is no prefix required, so you can load or save for your own Character Editor. The Characters Load/Save routines ask you to specify the start and end characters. The start character is automatically set to the character you are currently looking at. You can delete this and enter a new value. The end value will then be displayed and this will be the same as the start value - this will save one character. Again, delete and change if you require. Using this method you can save anything from one character to the whole set. Throughout the Load/Save routine STOP will quit. L Load Character Set This will load a whole character set over the character set you are currently working on. Irregardless of your current position in the character set it will always position it starting with character 00. S Save Character Set This will save a whole character set. The save routine automatically specifies a re-load address of $2000. Shift L Load Characters This allows you to load as many characters as you wish. Shift S Save Characters This allows you to save as many characters as you wish. Edit Mode Commands List Key Command Description B Background Colour T Text Colour Home Cursor Top-Left Clr Cursor Bottom-Right Crsrs Move Cursor Space Draw - Set/Clear Pixels 1-4 Select Draw Colour Shift 1-4 Set colours V Vertical Flip H Horizontal Flip + Roll Character Up - Roll Character Down Shift + Roll Character Left Shift - Roll Character Right R Rotate Character Right Shift R Rotate Character Left Ctrl R Reverse Character C Clear Character F Fix Matrix Character Shift F Fix Ram Character F1 Hires/Multicolour G Goto Character * Store Number Up Shift * Store Number Down F7 Character To Store F8 Store To Character F5 Swap Character With Store F2 Byte Input E Exit With Edits STOP Exit Without Edits The Joystick can be used to move the cursor in all 8 directions. The Fire Button will set/clear pixels like the Spacebar. When you edit a character on the matrix you are not altering computer memory but a workspace in the Character Editor. This allows you to make a mistake without losing the original character. If, using any of the cursor move commands, you cause the matrix to move, any edits which are currently stored in the workspace will be transferred into computer memory. There are four possible draw colours: Bit Patterns Colour 1 = Background Colour $D020 00 This only Colour 2 = Draw Colour 11 applies if you are Colour 3 = Multicolour 1 $D022 01 using Colour 4 = Multicolour 2 $D023 10 Multicolour Colour 2 is the colour specified in the Colour Ram from $D800 to $DBFF. Colours 1,3 and 4 are set automatically when you enter the Editor. All colours can be set in the Editor. V Vertical Flip The Current character is flipped vertically - top to bottom. H horizontal Flip The current character is flipped horizontally - side to side. + Roll Character Up The current character is rolled up one pixel-row and the top row appears at the bottom. - Roll Character Down The current character is rolled down one pixel-row and the bottom row appears at the top. Shift + Roll Character Left The current character is rolled one pixel-column left and the leftmost column appears on the right. Shift - Roll Character Right The current character is rolled one pixel-column right and the rightmost column appears on the left. R Rotate Character Right The Current character is rotated 90 degrees right. Shift R Rotate Character Left The current character is rotated 90 degrees left - inverse of above. Ctrl R Reverse Character The current character is reversed. C Clear Character The current character is cleared - filled with 00. F Fix Matrix Character This command fixes the character on the matrix from it's partner in Ram. If you make a mistake you can use this to restore the character. Shift F Fix Ram Character This command fixes the character in Ram from it's partner on the matrix. If you have defined a character which is OK you can use this to store it permanently in Ram. Both Fix commands check the matrix character against the Ram character. If there is no difference, the Fix command is ignored. F1 Hires/Multicolour This will toggle the display mode between Hires and Multicolour. All the matrices will change accordingly. In hires only the first 2 colours are used. In Multicolour all 4 colours are used. You can only set colours 3 and 4 when you are in Multicolour mode. G Goto Character This allows you to move directly to a character. Input the character number and press return. * Store Number Up The Character Editor has $20 (32 decimal) separate character stores. You can page upwards through them using this key. Shift * Store Number Down This is the inverse of the above and pages downwards through the stores. F7 Character To Store The current character is put into the current store. F8 Store To Character The current store is put into the current character. F5 Swap Character With Store The current character and current store are swapped. F2 Byte Input The single-character matrix in the top-middle of the screen is a duplicate of the current character in the main matrix. To the left of this matrix is the hex value for each byte making up the character. This command allows you to edit the character directly using bytes. The bottom screen-line will display: Character ?? Byte 0 ?? The question marks are variables. The byte value will correspond to the values at the top of the screen and each byte will be highlighted. As you input the new values, the matrix will change to display the new character. Press STOP to quit at any time. E Exit With Edits This will put any edit on the current matrix into computer memory and then return you to the Main Editor mode. STOP Exit Without Edits This is the inverse of the above command and returns you to the Main Editor mode without putting any current edits into computer memory. 4. Picture Editor The Picture Editor allows you to: 1. Load & Save both Hires and Multicolour pictures - Put your own in a game. 2. Edit Hires and Multicolour pictures anywhere in memory. 3. Edit more than one picture at a time. 4. Scan through memory looking for pictures. 5. Convert a standard resolution screen into a picture. This module supports an extended Screen-viewer with the following commands. <- Sprites On/Off 1 Increment Border Colour 2 Increment Screen Colour F1 Hires/Multicolour F3 Video Bank Up F5 Pixels Hi/Lo F7 Colours Up This will allow you to view every possible picture setup permutation. When you enter the Picture Editor, it checks whether the computer is currently set up for a picture. If it is then you will go straight into the Editor. If not, the following message will appear: Real-Time Picture Editor Not Picture Screen This is the Converter section. Key Command Description R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour E Enter Editor M Menuloader B Background Colour This command increments the background colour - the colour of the border and Screen. T Text Colour This command increments the Text colour - the colour of all informational text on the Screen. E Enter Editor This command allows you to enter the Editor without using the converter. The VIC Chip will be set up so that the computer is displaying a picture. C Convert Standard Screen This unique command allows you to convert a standard resolution screen into a picture. It can convert from the Rom character sets or from a Ram based set. In conversion tests that we carried out, the maximum time taken for any type of conversion was 8 seconds - this was when using a Rom based character set. To show the power of this command, we have included on the disk a picture screen converted from 'Suicide Express' written by Tony Crowther. Both the Enter (E) and Convert (C) commands change the Restart Address so that if you attempt a restart after having used them, the computer will reset. Screen Layout The whole of the screen (except the bottom line) is used as a window on the picture. This displays an 8*8 representation of a 5*3 character square window on the picture. The Picture Editor separates each 8*8 pixel matrix of the picture into a character square to make drawing easier. Each square has it's own colours - when you enter Edit mode you will notice that as you move the cursor from square to square the colours may change. Each square is allotted 2 colours in Hires mode and 4 in Multicolour mode. Hires uses colours 2 and 3, Multicolour uses all 4 colours, but colour 1 is the same in every square because it is the screen colour. Now that I've totally baffled both you and myself I shall continue! In Main mode the bottom line displays the Hires/Multicolour mode, the Video Bank number, the pixels location (the actual picture) and colours location (the colour screen location). Main Mode Commands List Key Command Description R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour @ Dos Commands D Directory F1 Hires/Multicolour E Edit Mode - see section on Edit Mode. F3 Video Bank Up F4 Video Bank Down F5 Pixels Lo/Hi F7 Colours Up F8 Colours Down Home Matrix Top-Left Clr Matrix Bottom-Right Crsrs Scroll Matrix C Clear Picture M Menuloader L Load Picture S Save Picture This module uses the Vidcom format both for Hires and Multicolour pictures. If you wish to use a different format use the Picture Formatter Module. Memory Addresses $5800 - $5BFF Background Colours ($D800) $5C00 - $5FFF Screen Colours $6000 - $7F3F Pixels We have used $5BFF as the location which holds the screen colour. F5 Pixels Lo/Hi A picture can sit in two locations in each Video Bank. This toggles between the two. The Pixels address will change accordingly and the matrix will display the new 'picture'. F6 Repeats On/Off This command just switches the Repeats mode on or off. F7 Colours Up The colours are moved upwards through the current Video Bank - there are 16 (decimal) possible locations. The Colours address will alter accordingly and the matrix will display the new colours. F8 Colours Down This is the inverse of 'F7' and moves the Colours downwards. C Clear Picture This command will clear the pixels area of the picture - be careful! L Load Picture The picture will be loaded into memory and the matrix will display the new graphics. S Save Picture The picture will be saved with it's correct re-load address for whichever Editor it has been saved for. Both the Load and Save commands support both Hires and Multicolour pictures. This allows you to save a picture, edit it with your own program and then reload it into a game - a unique feature. Both the Load and Save automatically insert the prefix for you. The Load routine only loads into memory which is a part of the picture and will not corrupt memory. Edit Mode When you enter Edit Mode the bottom line will change to reveal the Hires/Multi mode, the X and Y positions on the picture and the colours for each square. The X and Y positions are made up character squares + pixels in the current character. X-03+04 = 3 characters across, cursor at 4th pixel in square. It is advisable when editing a picture to constantly keep an eye on the draw colours as they may change from square to square. Edit Mode Commands List Key Command Description B Background Colour T Text Colour Home Cursor Top-Left Clr Cursor Bottom-Right Crsrs Move Cursor Space Draw - Set/Clear Pixels 1-4 Select Draw Colour Shift 1-4 Set colours F1 Hires/Multicolour F Fix Matrix L Load Matrix S Save Matrix ^ Screen Viewer F3 Matrix To Store F4 Store To Matrix F2 Swap Matrix With Store C Clear Square Shift C Clear Matrix E Exit With Edits STOP Exit Without Edit The Joystick can be used to move the cursor in all 8 directions. The Fire Button will set/clear pixels like the Spacebar. As with the Character Editor, when you edit the matrix, you are not editing the actual picture but a workspace in the Picture Editor. This allows you to make a mistake and rectify it. If you move the cursor off the edge of the matrix causing the matrix to move, any current matrix edits will be transferred to memory. F Fix Matrix If you make a mistake while editing, you can fix the matrix from the picture. F3 Matrix To Store The Picture Editor can store a copy of the matrix so that you can move things around the picture or even from picture to picture - this includes the colours. This command puts the current matrix in the store. F4 Store To Matrix This is the inverse of 'F3' and will retrieve the store and place it at the current matrix position. F2 Swap Matrix With Store This command allows you to swap the matrix with the store. F7 Square To Store There is also a separate square store which can hold the data including the colours for one square. This command will put the current square into the store. F8 Store To Square This is the inverse of 'F7' and puts the store into the current square. F5 Swap Square With Store This command allows you to swap the square with the store. C Clear Square This command lets you clear the pixels in the current square. Shift C Clear Matrix This command will clear the whole matrix. E Exit With Edits This will put any edits on the current matrix into computer memory and return you to the Main mode. STOP Exit Without Edits This is the inverse of the above command and returns you to the Main mode without putting any current edits into computer memory. The Picture Editor allows you to 'grab' a small section of a picture and save it to disk. This can then be loaded back afterwards. The file is prefixed with 'MAT.'. L Load Matrix A previously saved matrix file will be loaded into the current matrix position. S Save Matrix The current matrix display will be saved. ^ Screen Viewer This command allows you to go straight to the Screen-Viewer from Edit mode. Any current edits on the matrix will be put into memory. When you quit the Viewer you will return to Edit mode. 5. Sprite Editor The Sprite Editor allows you to load, save, define and edit sprites anywhere in memory - an amazing maximum of 1024 sprites. This module uses the standard Screen-Viewer. Command List Key Command Description Key Command Description R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module B Background Colour T Text Colour @ Dos Commands D Directory : Matrix Load ; Matrix Save L Load Sprites S Save Sprites Shift L Load 8 Sprites Shift S Save 8 Sprites Shift V View/Select/Load Sprites M Menuloader Home Cursor Top-Left Clr Cursor Bottom-Right Crsrs Move Cursor Space Draw Set/Clear Pixels 1-4 Select Draw Colour Shift 1-4 Set Colours Shift X X-Symmetry On/Off Shift Y Y-Symmetry On/Off H Matrix horizontal Flip V Matrix Vertical Flip + Roll Matrix Up - Roll Matrix Down Shift + Roll Matrix Left Shift - Roll Matrix Right Cbm + Roll Matrix Row Left Cbm - Roll Matrix Row Right A Matrix 'AND' Store Shift A Matrix 'AND' Memory E Matrix 'EOR' Store Shift E Matrix 'EOR' Memory O Matrix 'OR' Store Shift O Matrix 'OR' Memory F7 Matrix To Store Shift G Memory To Matrix F8 Store To Matrix Shift P Matrix To Memory F5 Swap Matrix With Store F2 Swap Matrix With Memory Ctrl R Reverse Matrix F1 Hires/Multicolour C Clear Matrix Sprite Shift C Clear Memory Sprite < Scroll Sprites Left > Scroll Sprites Right F3 Video Bank Up F4 Video Bank Down G Goto Memory Sprite * Sprite Display Mode F6 Repeats On/Off The Joystick can be used to move the cursor in all 8 directions. The Fire Button will set/clear pixels like the Spacebar. Screen Layout Displayed at the top-left of the screen is the sprite on the edit matrix. This sprite is displayed in all four modes - normal, x-expanded, y-expanded, both. Below this is the store sprite and next to this the first of the 8 sprites. This sprite and the seven below it can either display the memory sprites or the sprites as they were when you froze the program in memory - see '*' command. As you Load or Save sprites they will be displayed one at a time. All Saves set a re-load address of $2000. No prefix is specified, so you can load and save sprites from any editor. If you attempt to load more sprites than there are in a file, or if you load less sprites than there are in a file, the excess will be ignored. : Matrix Load This will load a sprite into the matrix - this doesn't affect computer memory. ; Matrix Save This will save the matrix sprite L Load Sprites. This allows you to load sprites directly into memory. You can specify the number of sprites to be loaded and where they will load. S Save Sprites This allows you to save sprites directly from memory. You can specify the number of sprites to be saved and where they should save from. Both of the above let you specify the start sprite and the end sprite. This can be anything from 1 sprite to the whole bank of sprites. These two commands are only available when you are viewing memory sprites - see the '*' command. Shift L Load 8 Sprites This command will load 8 sprites into the locations used by the current 8 screen sprites. Shift S Save 8 Sprites This command will save the current 8 screen-sprites. Shift V View/Select/Load Sprites This unique command lets you look through a file and select up to 8 sprites to be loaded. As each sprite is displayed, the load-routine will wait for you to press: Return Load Sprite Any key Next Sprite STOP Quit load The sprites will be loaded into the locations for the current 8 screen sprites. Shift X X-Symmetry On/Off This command switches the X-Symmetry On or Off. The X position flag is reversed when symmetry is on. Shift Y Y-Symmetry On/Off This command switches the Y-Symmetry On or Off. The Y position flag is reversed when symmetry is on. H Horizontal Flip The matrix sprite is flipped horizontally - side to side. V Vertical Flip The matrix sprite is flipped vertically - top to bottom. + Roll Matrix Up The matrix sprite is rolled up one pixel-row and the top row appears at the bottom. - Roll Matrix Down The matrix sprite is rolled down one pixel-row and the bottom line appears at the top. Shift + Roll Matrix Left The matrix sprite is rolled left one pixel-column and the leftmost column appears on the right. Shift - Roll Matrix Right The matrix sprite is rolled right one pixel-column and the rightmost column appears on the left. Cbm + Roll Matrix Row Left The row on which the cursor is currently positioned is rolled one pixel left and the leftmost pixel appears on the right. Cbm - Roll Matrix Row Right The row on which the cursor is currently positioned is rolled one pixel right and the rightmost pixel appears on the left. This page contains six commands which will probably not be used that much. They perform logical operations on the matrix sprite. See the start of this booklet for a description of the instructions used. A Matrix 'AND' Store The matrix sprite is ANDed with the store sprite and the resulting sprite is placed back in the matrix. E Matrix 'EOR' Store The matrix sprite is EORed with the store sprite and the resulting sprite is placed back in the matrix. O Matrix 'OR' Store The matrix sprite is ORed with the store sprite and the resulting sprite is placed back in the matrix. Shift A Matrix 'AND' Memory Matrix sprite is ANDed with a memory sprite and the resulting sprite is placed back in the matrix. Shift E Matrix 'EOR' Memory Matrix sprite is EORed with a memory sprite and the resulting sprite is placed back in the matrix. Shift O Matrix 'OR' Memory Matrix sprite is ORed with a memory sprite and the resulting sprite is placed back in the matrix. F7 Matrix To Store This command quite simply copies the matrix sprite to the store sprite. F8 Store To Matrix This is the inverse of the above and copies the store to the matrix. F5 Swap Matrix With Store This command swaps the matrix sprite with the store sprite. The following 3 commands allow you to specify which memory sprite you would like to work with. Shift G Memory To Matrix - Get Sprite This lets you get a sprite from memory and put it in the matrix. Shift P Matrix To Memory - Put Sprite This lets you put the matrix sprite into memory. F2 Swap Matrix With Memory This lets you swap the matrix sprite with one in memory. Ctrl R Reverse Matrix The matrix sprite is reversed - press again to return to normal. F1 Hires/Multicolour This command toggles between Hires and Multicolour mode. If you are looking at memory sprites these will also be displayed in the current mode. In Hires only colours 1 and 2 apply. C Clear Matrix Sprite The matrix will be filled with 00 - cleared. Shift C Clear Memory Sprite The specified memory sprite will be filled with 00 - cleared. The next five commands only work if the editor is displaying memory sprites - see the '*' command. < Scroll Sprites Left The 8 memory sprites will be scrolled to the left. If you reach the end of the bank, it will wrap round to the other end. > Scroll Sprites Right The 8 memory sprites will be scrolled to the right. If you reach the end of the bank, it will wrap round to the other end. F3 Video Bank Up The Video Bank will be incremented (0-3). The sprite addresses will reflect the bank shown. F4 Video Bank Down The inverse of the above command. The Video Bank is decremented. G Goto Memory Sprite This command lets you jump directly to a sprite as opposed to scrolling it. * Sprite Display Mode 1. Memory sprites - one sprite after another upwards through memory. 2. Game sprites - The 8 sprites which were being used by the program in memory when you froze it. These sprites will appear as they were on the screen, except they will all be standard size. Use the '*' command to toggle between these two modes. F6 Repeats On/Off This command just switches the Repeats mode on or off. When you are scrolling the sprites ( < or > ) it is easier if the Repeats is switched on. 6. Utilities This module contains the following specialized routines: 1. Immortaliser 2. Joystick Autofire 3. Joystick Swap 4. Sprite Killer 5. Backup Tape-Save Key Command Description R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module @ Dos Commands D Directory Home Cursor Top Selection Clr Cursor Bottom Selection Crsrs Cursor Up/Down One Selection Return Execute Selection M Menuloader Instead of selecting an option with a key this module allows you to select an option with the cursor keys, the option will be highlighted, press 'Return'. 1 Immortaliser This will attempt to find an infinite-lives poke for you. Input the number of lives you currently have. In response to 'Base' input 00 and press return. The Computer memory will be inspected and if it finds an instruction which decrements a memory location which holds the lives value it will store it in a table and disassemble the instruction to the screen. When it has inspected the whole of memory it will prompt you to lose a life. Restart the game ('R') and lose ONE life. Then, re-enter the module. Run the immortaliser again. It will check the memory locations held in the table and see if they contain the lives value-1. If it finds a match it will prompt you with (Y/N)?. If you wish to install the immortaliser press 'Y'. It will continue doing this until the whole table has been scanned. The table can hold 128 different memory locations. If on the first pass it does not find a decrement instruction the routine will be cancelled. The 'Base' value is just a little more complicated. If the lives value is not held in memory as a straight number you can try adding offsets to it by setting this value. 'Terra Cognita' uses a base value of 'F0'. This routine is not guaranteed to work with everything, but worked with over 50% of the software we tested it on. 2 Joystick Autofire This routine inspects memory and any references to the joystick port are re-routed to a small patch routine which will give you an Autofire option. Select either joystick 1 or joystick 2. 3 Joystick Swap This routine inspects memory and any reference to the specified joystick port will be swapped to the other port. Select either '1 to 2' or '2 to 1'. 4 Sprite Killer This routine inspects memory for any reference to the sprite collision locations ($D01E and $D01F) and cancels them. Select either 'Sprite to Sprite' or 'Sprite to Background' 5 Backup Tape-Save This routine allows you to fast-save the backup to tape. This Backup will load independently of the cartridge at approximately 10x normal speed. 7. Picture Formatter Key Command Description R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module E Enter Formatter C Convert Standard Screen M Menuloader Main Section R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module @ Dos Commands D Directory L Load Picture S Save Picture H Horizontal Flip V Vertical Flip Home Cursor Top-Line Clr Cursor Bottom-Line Crsrs Cursor Up/Down One Selection M Menuloader The Converter section of this module is like that of the Picture Editor. Once you have entered the main mode of this module the screen will display the available picture formats under Hires and Multicolour. The current display mode will be reversed - if you are in multicolour, this will be printed in reverse. The current picture format is highlighted in yellow. Use the cursor keys to scroll up and down the list. When you load a picture, the display mode will be changed to the mode required by the picture. This module can load/save pictures anywhere in memory and will not corrupt any memory other than that used by the picture. It also features a couple of unique commands: The Horizontal-Flip command will flip the picture so that it is horizontally back to front. This routine checks wether you are in Hires or Multicolour and works accordingly. The Vertical-Flip command will flip the picture so that it is vertically back to front. Neither routine uses any computer memory. 8. Hard-Copy Key Command Description R Restart Program ^ Screen-Viewer N New Memory P Protect Memory <- Reset Computer X Exit Module @ Dos Commands D Directory F1 Normal Print F3 Reverse Print M Menuloader This module supports the standard Screen-Viewer. The screen-dump can be printed normally (F1) or in reverse (F3) and it will print what was displayed on the screen when you froze it - excluding sprites. If the screen was being raster-split, you may not always see exactly what was displayed. Use the Screen-Viewer to check this. E. Trouble-shooting ------------------- The Expert Cartridge and any software which has been supplied with it have been fully tested and, as far as possible, found to be bug-free. If you are experiencing any problems please read this section first. 1. It is possible for the expert to be activated by NMI's. To by-pass this, leave the expert in the 'Off' position until you are ready to freeze the program in memory. 2. When you use the NEW function, the memory will be cleared. Some programs may look for this. If this is the case, use the PROTECT command. 3. It is highly unlikely that the expert itself will develop any faults. If you are having problems booting the operating system try removing and re- inserting the Expert. Don't forget, if you have a Commodore 128, you have to hold down the CBM key when you press the Reset. 4. If the Fast Load/Save incorporated in the Backup module does not work with your drive there is no alternative but switching it out using 'F1' WARNING: Copyright subsists on all Trilogic Expert Hardware and Software. No unauthorised use of any whole or part either privately or commercially is allowed without our prior permission in writing. The Expert is intended for your own personal enjoyment - please use it properly and remember that the copying and circulating of commercial software is illegal. Trilogic Unit 1 253 New Works Road Low Moor Bradford BD12 0QP This product is copyright 1988/1989 by Trilogic and NOW Computer Systems Ltd.