Note from the Translator: I typed this into electronic form due to requests made on comp.sys.cbm for info on this device. I have included the original copyright statement made by Skyles Electric Works, Inc., but did not inquire with the original authors as to the legality of doing this. However, I do not believe that this document is available in print anywhere, and I shall earn no compensation of any form from my work with this document. Page numbers are listed at the bottoms of their respective pages, as in the hardcopy version. Centering of text was omitted. 1541 FLASH! INSTRUCTION MANUAL by BOB SKYLES BRYCE NESBITT SKYLES ELECTRIC WORKS, INC. 231-E South Whisman Road Mounain View, CA 94041 U.S.A. i Copyright (c)1984 by Skyles Electric Works, Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means electronic, mechanical, photocopying, recording or otherwise, without the prior written permission of Skyles Electric Works, Inc.. No patent liability is assumed with respect to the use of the information contained in this manual. Skyles Electric Words, Inc. has used care in preparing this manual, it assumes to responsibility for errors or omissions. Neither is any liability assumed for damages resulting from the use of the information contained herein. 1541 FLASH! and CableCard are trademarks of Skyles Electric Works Inc. Commodore 64 and commodore 1541 are trademarks of Commodore Business Machines The program modifications to the Commodore 64 Kernal ROM and the 1541 Disk Drive operating system ROM are copyrighted by Bryce Nesbitt. All rights reserved. ii TABLE OF CONTENTS for 1541 FLASH! Instruction Manual Introduction . . . . . . . . . . . . . . . 1 Quick Reference Card . . . . . . . . . 3 Easy Everyday Commands . . . . . . . . . . 5 Symbology . . . . . . . . . . . . . . . . . 5 . . . (LOAD"*",8,1) . . . 6 LOAD "PRG . . . . (LOAD "PRG",8) . . 6 OPEN1:CMD1:LIST . (List program) . . 6 POKE 148,64 . . . (C-64 slow load) . 7 Manual Switch on CableCard . . . . . . . . . 7 OPEN 1,8,15,"Z8S" (1541 slow load) . 7 POKE 148,0 . . . (C-64 FLASH! load) 8 OPEN 1,8,15,"Z8F" (1541 FLASH! load) 8 OPEN 1,8,15,"UJ" (1541 soft reset) . 8 SYS 64738 . . . . (C-64 soft reset) . 8 DOS Commands . . . . . . . . . . . . . . . 9 SYS 65526 . . (DOS Turn on) . . . . 9 @IO . . . . . (Clear Disk . . . . . 10 @$ . . . . . . (Read Directory) . . 10 @$:???* . . . (Dir. w/matching) . . 10 @ . . . . . . (Read Disk Error) . . 11 @$0:UJ . . . . (1541 soft reset) . . 11 @#x . . . . . . (Change drive #) . . 11 %PRG NAME . . . (Load prg. file) . . 12 @R0:NEW=OLD . (Rename a file) . . . 12 @C0:NEW=OLD . (Copy a program) . . 12 @S0:NAME . . . (Scratch a File) . . 12 @N0:NAME,ID . ("New" a Disk) . . . 13 @V0 . . . . . (Validate a disk) . . 13 @0:Z8S . . . . (1541 slow load) . . 13 @0:Z8f . . . . (1541 FLASH! load) . 13 Blinking Red Light on the Disk Drive . . 14 iii Editing Commands . . . . . . . . . . . . 15 (Cursor to bottom) . . . 15 . (16 Character tab . . . 15 . . (Escape Quote/insert) . 16 . (Delete Line) . . . . . . 16 . (Clear Screen down) . . . 16 <=> . . . . (Escape ASCII/printer) . . 16 . . . (Return ASCII/printer) . . 16 . . . . . (Slow screen listing) . . 17 . . (Pause screen listing) . . 17 (Return w/o execute) . . . 17 OPEN1:CMD1:LIST . (List program) . . 17 Undocumented 1541 features . . . . . . . . 18 Advanced Programming Commands . . . . . . 19 Z1b+CHR$(t)+CHR$(s) . ("U1" replacement) . 19 Z2b+CHR$(t)+CHR$(s) . ("U2" replacement) . 20 Z3b . . . . . . . . . (Fast data trans.) . 20 GETBUF . . . . . . . (Source listing) . . 21 Z5b+CHR$(t)+CHR$(s) . (Execute a Z1-Z3) . 22 Z6b+CHR$(t)+CHR$(s) . (Linked Loading) . . 22 Z7s . . . . . . . . . (Speed set) . . . . . 23 NMI Debugger . . . . . . . . . . . . . . . 24 General Notes . . . . . . . . . . . . . . . 25 1541 Bugs . . . . . . . . . . . . . . . . . 26 Technical Questions . . . . . . . . . . . . 27 Overheating Solutions . . . . . . . . . . . 28 Installation Instructions . . . . . . . . 29 Overview . . . . . . . . . . . . . . . . . 29 Warranties and opening up your Computer . . 29 Part Identification . . . . . . . . . . . . 30 Installation of parts, Commodore 64 . . . . 31 Installing the Kernal ROM Assy bd . . . . . 32 Installing the CableCard . . . . . . . . . 38 Testing the Commodore 64 Assemblies . . . . 40 Installation of parts 1541 Disk Drive . . . 41 Installing the Operating ROM . . . . . . . 42 Installing the FLASH! Cable . . . . . . . . 44 Testing the 1541 FLASH! . . . . . . . . . . 50 In case of trouble . . . . . . . . . . . . 51 iv Introduction Congratulations of purchasing 1541 FLASH! Assembly, the fastest add on assembly for disk loading and saving programs from the Commodore 1541 disk drive and the Commodore 64. In addition to being the fastest disk drive enhancement available for the Commodore 64 and the 1541 disk drive, over 30 added commands are included. These commands wil make using your Commodore 64 much faster and easier. It is not necessary that you learn or use these commands. Install the 1541 FLASH! Assembly and enjoy a whole new world of speed. WHAT 1541 FLASH! WILL NOT DO 1541 FLASH! will not, repeat, not fix or improve the loading of a marginal or non functioning disk drive. 1541 FLASH will not speed up a program load or file transfer that involves lots of blinking of the red error light on the Comodore 1541 disk drive. If you are having trouble (lots of error light blinking) with just one or two disks, and the rest work okay, replace your faulty disks. If you are having trouble loading all your diskettes, your disk drive usually needs cleaning, lubricating, aligning, or electronic repair. Se your dealer for the appropriate fix _before ou attempt to install 1541 FLASH!_. If you do not have a local dealer capable of these repairs, you may send your Commodore 1541 Disk Drive to: Commodore Business Machines 1200 Wilson Drive West Chester, PA 19380 Send it prepaid and include a check or money order for US$85.00. Commodre will send you a replacement 1541. Page 1 Introduction Skyles Electric Works warrants the 1541 FLASH! Assembly parts and labor for 4 months from date of purchase. Please take a moment now to fill out and return the postpaid warranty card. Installation instructions start on page 29. They are at the end of the manual because they are used only once and then hopefully forgotten. Please turn to page 29 and start enjoying your 1541 Flash!. Starting on the next page is a quick reference card covering the extra commands added by the 1541 FLASH!. ENJOY Page 2 1541 FLASH! QUICK REFERENCE Description of Symbology Capital letters refer to keys struck in sequence. refers to a single key struck strike two keys simultaneously strike "RETURN" key Command Performs Easy Everyday Commands 1: . . . LOAD"*",8,1 2: LOAD "PRG . . . LOAD"PRG",8 3: POKE 148,64 . . C-64 to slow load 4: Manual Sw CableCard . . Switch fast/slow 5: OPEN1,8,15,"Z8S" 1541 to slow load 6: POKE 148,0 . . C-64 to FLASH! 7: OPEN1,8,15,"Z8F" 1541 to FLASH! 8: OPEN 1,8,15,"UJ" 1541 soft reset 9: SYS 64738 . . . C-64 reset DOS Commands 1: SYS 65526 . . Turn on DOS Commands 2: @I0 . . . . Initialize Drive 0 3: @$ . . . . . Read Directory 4: @$:???* . . . Dir. with pattern 5: @ . . . . . . Read Error Channel 6: @#x . . . . . Change drive number 7: %PRG NAME . . Load program without relocation/end links 8: @R0:NEW=OLD . Rename a file 9: @C0:NEW=OLD . Copy a program 10: @S0:NAME . Scratch a File 11: @N0:NAME,ID . New a Disk 12: @V0 . . . . Validate a diskette Page 3 1541 FLASH! QUICK REFERENCE Command Performs Editing Commands 1: . Cursor to bottom of screen 2: . . 16 Character tab 3: . . . Escape Quote or insert mode 4: . . . Delete Line 5: . . . Clear Screen from Cursor downward 6: <=> . . . . . . CHR$(27) printer "Escape" code in strings 7: . . . . . CHR$(13) in strings 8: . . . . . . . Slows Listing speed 9: . . . . Pauses listings 10: . . Return without line execution Advanced Programming Commands 1: Z1b+CHR$(t)+CHR$(s) . "U1" replacement 2: Z2b+CHR$(t)+CHR$(s) . "U2" replacement 3: Z3b . . . . . . . . . High Speed Transfer data from buffer to C-64 4: Z5b+CHR$(t)+CHR$(s) . Execute Z1 then a Z3 5: Z6b+CHR$(t)+CHR$(s) . Linked loader 6: Z7s . . . . . . . . . Speed set 8: NMI Debugger . . . . Run time debugger Page 4 Easy Everyday Commands Symbology We have adopted the following symbology for all the commands used in this manual. First you should note that all the keys on the Commodore 64 have upper case letters on their top surface. We refer to all the keys therefore with upper case (capital) letters. If we wish you to strike a series of keys in sequence like normal typing we present the the sequence as follows: If you should type "load" we show LOAD without any quotes or brackets. Spaces between typing letters are for clarity only. SYS 65526 is exactly the same as SYS65526 to the Commodore 64. If you should strike a function key such as "run/stop" we show with brackets. We have abbreviated "return" to . If you should strike two function keys together we show If you should strike two function keys one after the other we show ,. WE use both a comma and a space between keys. Page 5 Easy Everyday Commands Command This two key command replaces the longer command; LOAD "*",8,1 . Almost all commercial software will load with this command. This command loads the first program on the diskette in the 1541 Disk Drive. If the program you wish to load is not the first one on the diskette, use the next command given below. To load from tape use the command. LOAD"",1 Command LOAD "PROGRAM NAME This command replaces the longer command; LOAD "PROGRAM NAME",8 . This will load the program with the name "program name" from the 1541 Disk Drive. You may in any of the load commands substitute an asterisk (*) in place of any or all of the program name. Any combination of letters are substituted for the asterisk. For example; LOAD "PR* . Will load the first program on the diskette from the following names; "prime number", "prone", "premier", "program name", "promotion" etc.. If you wish to load a program form your cassette recorder you should use the command; LOAD "PROGRAM NAME",1 . Command OPEN1:CMD1:LIST Issues a program list command to the printer. Without a 1541 FLASH! this command would list to the screen. All previous open commands that automatically went to the screen are now directed automatically to the printer. If you are not involved in programming your computer, ignore this command. Page 6 Easy Everyday Commands Commmand POKE 148,64 This command switches the 1541 FLASH! assembly in the Commodore 64 back to the original slow data transfer mode. This is useful if you want to use a 1541 Disk drive that does not have 1541 FLASH! installed. In rare instances this command is necessary to load a program even though 1541 FLASH! has been installed in the disk drive. You may also manually switch back to the old Kernal assembly as described below. Command Manual Switch on CableCard There is a small switch on the CableCard that is plugged into the User Port at the left rear of your C-64. Normally the switch is positioned towards the C-64. If you want to return the C-64 to its original condition, move the switch away from the C- 64. If this is done, or the previous keyboard command is issued, you must also change the 1541 Disk Drive as described below. Command OPEN 1,8,15,"Z8SLOW This keyboard command tells the 1541 Disk Drive to return to its original slow method of transmitting data to the computer. The FLASH! cable does not have to be connected to send this command to the disk drive. Normally this command is sent right after one of the two commands above. Page 7 Easy Everyday Commands Command POKE 148,0 This command puts the Commodore 64 back into the high speed data transfer mode. It restores the 1541 FLASH! in the computer. This command has no effect if the small switch on the CableCard is positioned away from the computer. The following command for the disk drive should also be issued Command OPEN 1,8,15,"Z8FAST This command places the 1541 Disk Drive in the fast data transfer mode. It restores the disk drive to 1541 FLASH! condition. The computer and the disk drive automatically power up in the 1541 FLASH! mode and this command or the previous one are not used when the computer is turned on. Commad OPEN 1,8,15,"UJ This command may be used with or withouth 1541 FLASH!. It tells the disk drive to do a reset operation. In most cases it is better to use this command than it is to turn off and then turn on the disk drive. Command SYS 64738 This command may be used with or without the 1541 FLASH!. It resets the Commodore 64. Issuing this command is roughly equivalent to turning off and then turning on the computer. Page 8 DOS Commands Preface The "DOS", or as they are sometimes called, "wedge" commands are a set of minimum keystroke commands for controlling the disk drive. Commodore furnishes a DOS program on the 1541 demonstration disk that accomanies the Commodore 1541 Disk Drive. This program occupies a small part of your computer memory and sometimes interferes with programs. 1541 FLASH! has a DOS program built in. This means that there are no programs to load or fill up memory. These DOS commands work with any Commodore 1541 disk drive with or without 1541 FLASH! installed. The major keystroke saving that DOS offers is that the sequence of keystrokes; OPEN 1,8,15," is replaced by a single keystroke; <@> or < > >. The alternate command the "greater than" symbol was initially favored and gave the name "wedge" commands to the original DOS program. On the Commodore 64 the ">" requires two simultaneous keystrokes. We recommend that you use the "@" instead. Command SYS 65525 This command starts the DOS. DOS is not automatically started when the Commodore 64 with 1541 FLASH! is turned on. The switch on the CableCard should be in the 1541 FLASH! position (toward the computer) before starting DOS. There are 11 classical DOS commands and 3 new DOS commands added by 1541 FLASH!. They are described on the next few pages. Page 9 DOS Commands DOS Command @IO Initializes the diskette in the disk drive. Each time a diskette is put into the 1541 Disk Drive that you are planning to save a program or file on, _use this command or its long form before you save any program_. This command does not disturb any information that is already on the diskette. DOS Command @$0 Read the directory on the diskette in the cisk drive and places it on the screen _without disturbing anything_ that may be in the computer memory. This is the most useful DOS command. Striking the once will pause the listing on the screen. Striking the again will continue the listing. DOS Command @$0:AB??C* Reads the program names off the directory on the diskette that match the "wildcard" pattern "ab", followed by 2 symbols (or letters), followed by "C", followed by anything. It is not necessary that the "?" and "*" be used. for example if you want to search for a particular name on a diskette directory use: @$0:PROGRAM NAME Since it is easy to forget whether spaces are or are not included in a name, it is recommended that you use: @$0:PROGRAM* Page 10 DOS Commands DOS Command @ Asks the disk drive why it is being obstinate and blinking its red light instead of loading or saving a program or some other worthwile function. The disk drive answer is presented on the wscreen and the red light generally turns off. Prior to issuing this command, it is often necessary to strike the key to regain the cursor. There are 35 different error messages. Each starts with a number, followed by a couple or words and two numbers. A listing is given in the Commodore 1541 Disk Drive Instruction Manual. A better listing and explanation is given in "The Anatomy of the 1541 Disk Drive" available from your local dealer or Skyles Electric Works ($19.95 +$3.50 shipping). If after reading the error message, you wish to reset (clear) the disk drive type; @0:UJ the DOS shortened version of the disk drive reset described on page 8. DOS Command @#9 Will change the device number that the DOS addresses. In this example the DOS will automatically address the disk drive that has device number 9. This command may be used to change the device number the DOS addresses to 8, 9, 10, or 11. The DOS is turned on addressing device number 8. Page 11 DOS Commands DOS Command %PROGRAM NAME Will load a program without relocation or changing the end links. It is most useful loading machine language or graphics without disturbing the resident BASIC program. If this explanation does not make a lot of sense, ignore this DOS command. DOS Command @R0:NEW NAME=OLD NAME Changes (renames) the name of a program or file on the diskette in the disk drive. Renaming a file instead of erasing it is very useful for keeping archive copies when you are developing programs. DOS Command @C0:NEW COPY=OLD NAME Makes a second copy of a program or file on the diskette. Some people find this useful. DOS Command @S0:PROGRAM NAME Scratches (erases) a program or file from the diskette in the disk drive. If you have any doubts about erasing a program, use the "rename" command instead. I never use a "scratch" command after midnight and I find this makes for much happier "mornings after". After the scratch has been attempted type: @ to find out how many files have been scratched. Many times the number is 0 because of a write protect on, or misnamed file. You may use the "wildcards" "?" and "*" in the file name. Experienced programmers do a pattern match directory command first. Page 12 DOS Commands DOS Command @N0:DISK NAME,ID Will format (new) the diskette in the disk drive. This completely erases all the information on the diskette. All new blank diskettes need to be formatted (newed) before they can be used in a Commodore compatible disk drive. DOS Command @v0 Validates (collects) the diskette in the disk drive. This rearranges the programs and files on the diskette into a more compact order. Sometimes this increases the amount of free space on the diskette. Do not use this command on any diskette that has any "relative" or "random" files on it. If in doubt don't validate. DOS Command @0:Z8S This command tells the 1541 Disk Drive to return to its original slow method of transmitting data to the computer. Page 7 has more information about this command. DOS Command @0:Z8F Places the 1541 Disk Drive in the fast data transfer mode. It restores the disk drive to the 1541 FLASH! comdition. Page 8 has more information about this command. Page 13 DOS Commands Blinking Red Light on the Disk Drive Occurs when the disk command has not been accepted by the disk drive. The first thing to do is to ask the disk drive to tell you its problem; @ . Usually the answer will be obvious. If not refer to the 1541 Instruction Manual or the "Anatomy of the 1541 Disk Drive available from you local dealer or Skyles Electric Works ($19.95 + $3.50 shipping). Except furnishing you with an easy method of issuing disk commands, 1541 FLASH! does not affect the disks response to commands. The following is repeated from the introduction of this manual: WHAT 1541 FLASH! WILL NOT DO 1541 FLASH! will not, repeat, not fix or improve the loading of a marginal or non functioning disk drive. 1541 FLASH will not speed up a program load or file transfer that involves lots of blinking of the red error light on the Comodore 1541 disk drive. If you are having trouble (lots of error light blinking) with just one or two disks, and the rest work okay, replace your faulty disks. If you are having trouble loading all your diskettes, your disk drive usually needs cleaning, lubricating, aligning, or electronic repair. Se your dealer for the appropriate fix _before ou attempt to install 1541 FLASH!_. If you do not have a local dealer capable of these repairs, you may send your Commodore 1541 Disk Drive to: Commodore Business Machines 1200 Wilson Drive West Chester, PA 19380 Send it prepaid and include a check or money order for US$85.00. Commodre will send you a replacement 1541. Page 14 Editing Commands Preface The following are a group of ten commands added to the 1541 FLASH! to make program writing easier and more enjoyable. If you do not write programs, BASIC or Machine Language, skip this section of the manual. For programmers we also recommend the purchase of "VICTREE" model VT64. VICTREE is a module that plugs into the cartridge port of the Commodore 64 and adds 42 very useful commands. 15 of the VICTREE commands are programming aids. VICTREE model VT64 is available from you local dealer or contact Skyles Electric Works. The editing commands in this section requires the installation of 1541 FLASH! in the Commodore 64. The 1541 Disk Drive is not directly involved with these commands. Editing Command Moves the cursor to the bottom of the screen. In a program PRINT CHR$(6) will do the same thing. Editing Command Tabs the cursor 16 spaces from the left side of the screen. This is useful with some assemblers and machine language monitors. In a program PRINT CHR$(7) will do the same thing. Page 15 Editing Commands Editing Command Allows you to "escape" the quote or insert mode. If you wish to get out of the quote mode, strike this command once. If you wish to get out of the insert mode, strike this command twice. If you are in neither mode and wish to enter the quote mode, strike this command once. Editing Command Will delete the line that the cursor is on. No scrolling occurs. In a program the command PRINT CHR$(11) will do the same thing. Editing Command Clears the screen from the line that the cursor is on to the bottom of the screen. In a program the command PRINT CHR$(2) will do the same thing. Editing Command <=> Places a CHR$(27) an "escape" command in strings. This ocmmand is used with non Commodore printers. If you ahve a Commodore printer or no printer ignore this command. Editing Command Places a CHR$(13), a "carriage return" command in strings. This is a useful BASIC command. Page 16 Editing Commands Editing Command Slows the screen scrolling on listings or directories. This command is standard in the Commodore 64. Editing Command Pauses the screen scrolling during a listing. This is a very useful command added by 1541 FLASH!. Strike the command again to continue the scrolling of the listing. Editing Command Returns the cursor to the left side of the screen without executing the command or entering the line into the program. Editing Command OPEN1:CMD1:LIST Issues a program list command to the printer. Without 1541 FLASH! this command would list to the screen. All previous open commands that automatically went to screen are now directed automatically to the printer. If you are not involved in programming your computer, ignore this command. Page 17 Editing Commands UNDOCUMENTED FEATURES OF THE 1541 Yes, the 1541 Disk Operating System (DOS) has some useful undocumented features. We present here some of the mose useful ones. Invalid Files . . . Normally you cannot open for reading any file that never was properly closed. Such files appear with an "*" on the directory. If you open such files with a ",m" you can real them. Example: OPEN2,8,2,"INVALIDFILE,S,M" Will allow you to open, read and recovery data from "dead files". Append . . . You may add to an existing file (append) if you open it with ",a". Example: OPEN2,8,2,"EXISTINGFILE,S,A" Will allow you to add to an existing file. You cannot append to a relative file. Scratch Protect . . . If bit six of the first byte (file type) in a directory entry is set, a scratch command will not affect this file. Concatenate . . . You may concatenate up to four disk files into a single file. Example; OPEN1,8,15,"C0:COMBINED=FILE1,FLE2,FLE3,FLE4" will combine files 1 through 4 in order. Miscellaneous . . . Many commands will accept multiple parameters. Example: OPEN2,8,2,"S0:FRED,JOE,MARY,SUE" Will scratch the files named FRED, JOE, MARY, and SUE. ",m" as a file type functions like a wildcard, and it will open any type of file. Example: OPEN2,8,2,"FILE,m,a" Will open any type of file for appending. Page 18 Advanced Programming Commands Introduction This section is intended for experienced 65XX programmers. It will describe how to access the interface from machine language. Also included are several new commands that provide the fastest way to access data with the 1541 Flash! interface. Drive Commands Command Z1(buffer#)(track)(sector) This command will read the sector specified by the single byte values (track) and (sector) and place the data in bugger (buffer#). Use this instead of a "u1". Example: OPEN1,8,15,"I" PRINT#1,"Z13"+chr$(1)+chr$(0) Notes: The above will read teack 1, sector 0 and place the data in buffer #3. If you don't know which absolute buffer you wish to open you shold "OR" the secondary address with 128. Example: PRINT#1,"Z1"+CHR$(128+2) where 2 is the secondary address. Be careful to specify a valid track and sector since no check is made for validity. This command will not "kick" the head over the sector if there is trouble reading it. One precaution: you must send a @I (initialize) command to the drive after powerup/reset and before the use of this command. Failure to do this will result in a 'DISK ID MISMATCH' error. Page 19 Advanced Programming Commands Command Z2(buffer#)(track)(sector) Function This command will write the sector specified by the single byte values (track) and (sector) with data coming from the buffer (buffer#). Use this instead of a "U2". Example: OPEN1,8,15,"I" PRINT#1,"Z20"+chr$(24)+chr$(16) Notes: The above will write teack 35, sector 6 from buffer #0. Everything else from the "Z1" command applies. Command Z3(buffer#) Function This command will send the data in buffer (buffer#) to the computer at high speed. A M.L. routine such as in the example is required for use with this command. Example: OPEN1,8,15,"I" PRINT#1,"Z31" SYS GETBUF Page 20 Advanced Programming Commands Note getbuf Source Listing getbuf php ;save 6510's SR sei ;prevent irq's ldy #0 ;counter for 256 bytes lda $dd0d ;clear IFR flags lda $dd00 ;get condition of CIA #2 port and #$ef ;set serial clock low tax ;save ora #$10 ;set serial clock line high sta $dd00 loop lda #8 ;parameter for bit wshift bit $dd0d ;IRQ status flags beq wshift lda $dd0c ;serial data register sta buffer,y ;save byte iny ;counter to 256 bne loop stx $dd00 ;done with data, get error flag and exit lda #8 ;paramter for bit wstat bit $dd0d ;wait for 257th byte beq wstat lda $dd0c ;get error flag as the 257th byte plp ;restore 6510's SR rts ;done! error flag is in accumulator Notes: After sending the "Z3" from BASIC or M.L. you must execute a routine that does the same thing as the one given in source code above. The first section of the routine contacts the drive, the second reads the data, and the third grabs the error flag into the accumulator. The flag should have one of the values below. 1 00, ok 2 20, read error 4 22, read error 5 23, data chksum error 11 29, id mismatch Also see the 'Z7' command. Page 21 Advanced Programming Commands Command Z5(buffer#)(track)(sector) Function This will execute first a "Z1" command acting on the given parameters (see the "Z1" section for details) and then a "Z3" command (see the "Z3" section for details). Example: OPEN1,8,15,"I" PRINT#1,"Z52"+chr$(4)+chr$(6) SYS GETBUFF Notes: The above will read track 4, sector 6, place it in buffer #1, and then send it to the computer with the protocol outlined in the "Z3" command. You need not run the transfer immediately after sending the command. A very efficient way to write some things is to analyzw one block while letting the drive read the next block all on its own, and then execute the transfer. Command Z6(buffer#)(track)(sector) Function This is a linked list loader. You provide a starting track and sector, and the command will link through and send all following sectors. Example: OPEN1,8,15,"I" PRINT#1,"Z63"+chr$(18)+chr$(0) SYS READ Page 22 Advanced Programming Commands Source Listing read read jsr getbuf ;read entire block cmp #1 bne error ;branch on error lda buffer ;get track # beq out ;branch if this was the last block bne read ;loop error out rts Notes: The example would trace the directory starting at 18,0 using buffer #3. See the 'Z3' command for details on the 'getbuf' routine. You are not required to read sectors in rapid succession, any period of time may elapse between calls to getbuf; the drive will wait patiently. Command Z7(speed) Function This command controls the speed of transfer for the Z3 command. The default is 1. You will have to experiment to see what is right for your application. The range is 0-15 but due to a hardware bug in some 6526's some people will be unable to use setting 0. EXAMPLE: OPEN1,8,15,"I" PRINT#1,"Z72" NOTES: The above sets up the "Z3" command for transfer at speed 2. Page 23 Advanced Programming Commands The NMI Debuggin Aid Introduction This command is used to peek at what the processor is doing at any one moment. The NMI debugger will print the entire processor status on the screen at each NMI or when the key is pressed. Use it to check on crash locations, questionable code and even errant IRQ routines transparently to the host program except for a couple of missing cycles. If you wish to trace in real time, set up CIA #2 to generate contimuous NMI's. Example pha ;save all processor registers txa pha tya pha ;space for yout own routine, such as ;checking the break key jmp $f7bd ;print status and exit. Details To use this function, point the NMI vector at $0318-$0319 to the routine above. Data is printed on the screen indirectly via locations $d0-$d1 (the BASIC editor screen pointer so do not worry about setting that up). After printing the NMI debugger jumps to $ea81, returning from the interrupt. Data appears in the format - (.Y .X .A SR AL AH SP)-. Note that the NMI stuffs six things on the stack, the SP printed will read six too low. Page 24 Advanced Programming Commands General Notes 1) Unless the drive is in the slow mode, the UI+ and UI- commands have no meaning. 2) Location $0298 in the drive will disable head "kick" via the track #1 stop when set to $ff instead of $00. 3) Location $f2d1 in the kernal is a hes convert subroutine. 4) Bit 6 in the file type byte of a directory entry is a scratch protect. When it is set to a one the drive will not scratch the file even with a command like >s0:*. 5) If you have a promenade promburner, and are burning 2764's try using '0,4,7' for the PMW instead of '0,5,7' or '0,5,14'. Burning will then take as little as four seconds with full reliability! (thanks to Jay Stevens for this tidbit) 6) A bug in the 6526 is 'interrupt stomping' two interrupts can stomp on each other, with both thinking they happened (ie. their timers are reset) but without telling the processor about it. On the 6522 the supposedly benign act of reading the IFR register can (and repeatedly does) reset flags and lines at inopportune moments. 7) Your software can identify a 1541 Flash! upgrade computer by checking $fff6 in the Kernal. It will contain a $4c. An old, slow, C-64 will have a $52 in the same location. Location $fff9 will have $ff, a old 64 will have $59. Page 25 Advanced Programming Commands 1541 BUGS The 1541 has many bugs in its operating system. Here is a description for reference. Many bugs are fixed by 1541 FLASH!. Problem: "Disk ID Mismatch error" at seemingly random times. Solution: Send a "I0" command before the offending disk instruction is sent. From the DOS Commands send ">I0" or "@I0". Problem: '@ save and replace' screws up my entire disk!! Solution: 1541 FLASH! does not fix this (sorry) but it will help you to know when and why this happens. The bug is in the 1/2 of the ROM 1541 FLASH! does not fix. It happens when there is a multiple of 16 directory entries on the disk. It does not matter if there are full. The pointers to all the files get scrambled. The conclusion, don't use "@, save and replace" unless you have less than 16 files on disk. Editors note, I believe that that I have had this problem with less than 16 files. My advice is _do not use "save and replace"_. Problem: There are not enough buffers free for what I want to do. (ie. "No Channel Error") Solution: This is an interesting problem. The 1541 DOS is really a 4040 DOS partially modified for a single drive. When you open a file, specify drive 0 and the DOS will not have to keep a buffer open for the BAM of the non-existant drive 1. Example: OPEN2,8,2,"0:FILE,S,R". Page 26 Advanced Programming Commands Problem: "Drive Not Ready Error" Solution: Don't believe what the manual says about this error. It usually means the DOS is confused and is trying to look at drive 1, which is non-existant. What you should do is convince the DOS that you want drive 0. When you intialize use "I0". Whenever you save,open a file, look at the directory or even read (the last is optional) you should SPECIFY drive 0. Example SAVE"0:GARBAGE",8 Technical Questions? If you have a technical question about the advance programming commands that you or your local dealer can not solve. If you have a qualified comment, suggestion, question or complaint about this section then send it to: Terminal Velocity Software C/O: Bryce Nesbitt 1712 Marin Ave Berkeley, Ca 94707 Please include a self addressed envelope and TWO letter rate postage stamps. Page 27 Advanced Programming Commands Overheating The 1541 does have overheating problems. 1541 FLASH! goes a long way to solving the problem, do to the increased speed of the data transfer. The drive and stepper motors are turned on less. If you still have problems with 1541 FLASH! installed then I have two suggestions: 1) Turn off your drive when not in use. It is ok to turn the drive off and on while the computer is operating but not accessing the disk. 2) Consider putting spacers under the four feet of the disk drive. "Pink Pearl" brand erasers work well. Get six and put two each under the front feet. The incline seems to help even more. 3) For the mechanically inclined another solution is to add a head sink. Look on the right side of your drive below the two large silver regulators where two small screws hold a 'L' shaped emtal bar to the side of the case. Fashion a heatsink with lots of fins and attach it to the screws. Then drill a couple of large holes in the plastic below this spot. This will reduce the ambient temperature all over the drive but escpecially next to the 6502 the ROM and the write timing circuit. Next take a flat metal sheet about 2*8 cm, bend it so it will stand on its end, then glue it to the top of the 6502. Repeat this step with any chip that feels too hot. Page 28 1541 FLASH! INSTALLATION INstallation of your 1541 FLASH! will take about 30 minutes. It may be done in two parts, installing the Commodore 64 parts (2) and then at a later date installing the 1541 disk drive and parts. The following installation instructions are detailed and lengthy so that hopefully every question and concern that might come up is answered. For most Commodore 64's anybody familiar with the use of a phillips screwdriver can easily install the 1541 FLASH!. If you are concerned about "getting your fingers into" your Commodre 1541 Disk Drive and your Commodore 64 Computer, please have your local dealer install the 1541 FLASH!. If you Computer of DIsk Drive are under their original 90 day Commodore warranty remember that if you carefully follow the installation instructions you can always return the Computer and the Disk Drive to their original condition without Commodore or the local dealer being upset. We don't recommend that you wait 90 days of old slow disk programming loading before you take advantage of the 1541 FLASH!'s fantastic loading speeds. You would also miss out on the other very useful added commands that you get with 1541 FLASH! Installation of the 1541 FLASH! requires: A Phillips (Crosshead) screwdriver A thin bladed knife or screwdriver, (a grapefruit segment knife is ideal). LET US TURN THE PAGE AND BEGIN Page 29 INSTALLATION PARTS IDENTIFICATION While Gaul may have been divided into 3 parts there are four parts to the 1541 FLASH!: 1: Kernal ROM assy. and Socket 2: CableCard 3: 1541 Operating ROM Assy. 4: FLASH! Cable They are pictured below. [pic] page 30 INSTALLATION Installation, Commodore 64 We will first install two 1541 FLASH! assemblies in the Commodore 64. 1) Unplug all cables, cartridges, and periperal assemblies from your Commodore 64. 2) Place the Commodre 64 upside down on a well lighted surface. The front edge of the C-64 should be toward you. 3) Using the Phillips screwdriver remove the 3 screws located in wells along the front bottom of the C-64. 4) Holding the C-64 together at the front place it rightside up. 5) Now carefully lift the front top half of the C-64. This should unsnap the back catches. Set the top half of the C-64 about 3 inches forward. 6) If your Computer has the metalized cardboard inner cover untape it and open the cardboard 7) There are two slightly different stlyes of electronics boards inside the C-64. Using the picture two pages ahead locate the Kernal ROM. 8) The Kernal ROM should have one of the following numbers on it: 901227-01, 901227-02, 901227-03 Page 31 Installation C-64 9) The Kernal ROM should be in a socket. However in a small percentage of C-64 the Kernal ROM is soldered into the main electronics board. If your Kernal ROM is soldered and not in a socket, reverse the previous steps and see your local dealer about his removing the Kernal ROM and installing a 24 pin socket in its place. The 24 pin socket is furnished as part of the Kernal ROM assembly and socket. If you are unable to have your local dealer replace a soldered in Kernal ROM with a 24 pin socket, you may send your Commodore 64 packed into its original carton postage paid to Skyles Electric Works. Please include a check or money order for US$28.50. This will cover the cost of our installing a Kernal ROM socket. Please include your return address and a daytime phone number on the outside of the package and taped to your Commodore 64. Do _not_ include the power supply or any cables or peripheral assemblies. Address your package as follows: Skyles Electric Works Attn. Customer Service/1541 FLASH! 231-E South Whisman Road Mountain View, CA 94041 We will normally install the Kernal ROM socket in a week or less. Shipping both directions can add up to another 2 weeks. Northern Califormia residents may call (415) 965 1735 for an appointment and have a Kernal ROM socket installed while you wait. Page 32 Installation C-64 [pic] Left side Electronics Bd. C-64 Other bd. is similar with the Kernal ROM 3/8" nearer to rear of Computer Page 33 Installation C-64 10) Using your flat bladed tool (knife or screwdriver) gently pry up the Kernal ROM. Pry from both ends so that it comes straight up out of the socket. Be careful not to pry up the socket from the main electronics board. 11) Note that there is a small notch on the rearmost end of the Kernal ROM when it is in it's socket. Place the Kernal ROM behind your Computer with small notch away from you. 12) Remove the 24 pin socket from the 24 pin plug on the bottom of the Kernal ROM Assembly. 13) Now place the Kernal ROM assembly, with the three wire cable toward the rear of your computer, over the Kernal ROM socket. Be sure the 24 pins of the plug are lined up over the 24 holes of the socket. Gently plug the Kernal ROM Assembly into the Kernal ROM socket. The next page has a picture of the Kernal ROM Assembly plugged into the Commodore 64. 14) Carefully plug the 24 pin Kernal ROM, with the small notch toward the rear of your computer into the 24 pin socket on the left side of Kernal ROM Assembly. Use your finger to keep the Kernal ROM Assembly flat while you plug in the Kernal ROM. Refer to the next page for reassurance as to where the Kernal ROM is installed. Page 34 Installation C-64 [pic] Kernal ROM Assembly installed in C-64 Page 35 Installation C-64 15) Check that there are _no_ pins outside of the Kernal ROM socket on the main electronics board and that the Kernal ROM has _no_ pins sticking outside of the 24 pin socket on the Kernal ROM Assembly. The notches of both ROMs now on the Kernal ROM Assembly should be toward the rear of the computer. 16) Thread the white connector on the end of the 3 wire (red, white, and blue) cable through the left side of the leftmost connector hole on the back bottom of your C-64. 17) Check and reconnect if necessary the Keyboard cable and the power light cable connectors. Your C-64 should appear as shown in the accompanying pictures on the opposite page. _Now_ is the time to check carefully the installation to this point. 18) Retape the metalized cardboard if required and replace, backside first, the top of your computer onto the bottom half of the housing. Check that both sides are lined up. If not, readjust the top. 19) Turn over your computer and reinstall the three screws that you removed from the 3 wells in the front edge of the bottom of your C-64. _Do not over tighten these screws_. Page 36 Installation C-64 [pic] Completed Kernal ROM Assy. Installed Page 37 Installation C-64 20) With your computer upside down plug the blue connector of the CableCard onto the main electronics board edge connector that is on the far rightside, when the computer is upside down and the front edge is toward you. The blue connector, the small switch, the four pin connector, and the six pin connector should all be visible on the CableCard when the computer is upside down. The CableCard is plugged into the User Port (Modem port) or Parallel port. 21) Plug the red-white-blue cable into the 4 pin connector near the small switch on the CableCard. The red wire should be nearest the computer and the blue wire should be farthest from the comptuer. The picture on the next page shows the plugged in CableCard with the computer upsidedown. 22) Turn your Commodore 64 rightside up. The CableCard and 1541 FLASH! label should be visible at the far left rear of your computer (picture bottom of next page). Return your computer to it's normal operating location. Reconnect all cables and peripherals. 23) Check that the small switch on the left outside of the CableCard is switched away from the computer. 24) Turn on your Commodore 64, 1541 Disk Drive, Monitor or TV set, and any other peripherals. Page 38 Installation C-64 [pic] Commodore 64 Upside down with CableCard [pic] Commodore 64 rightside up with CableCard Page 39 INSTALLATION 25) Test your system by operating it. Everything should still work the same as before you began the installation. Load a program from the 1541 disk drive. If you do not get a normal load, recheck installation starting with item 10. 26) Turn off your C-64 and then switch the small switch on the CableCard toward the computer 27) Turn on your C-64 and observe the 1541 FLASH! copyright message. You should see: ***COMMODRE 64 BASIC V2 *** W/1541 FLASH! 38911 BYTES FREE (C) 1984 BRYCE NESBITT 28) Now Type: POKE 148,64 and strike the RETURN key. 29) Reload the program from disk that you loaded in step 25 above. Everything should still occur in the old slow mode. Now proceed to the next page for installation of 1541 FLASH! into your 1541 Disk Drive. 30) If you have trouble with one of the tests described above carefully recheck the installation instructions starting at step 1. 31) If you are still having trouble replace your oriinal Kernal ROM into its socket and test that this has returned the computer to it's original condition. Every 1541 FLASH! is tested before leaving the factory, but mistakes can happen. Notify your local dealer for test and/or 1541 FLASH! replacement. Page 40 INSTALLATION Installation, Commodore 1541 Disk Drive We will first install two 1541 FLASH! assemblies in the Commodore 1541. 1) Unplug all cables and peripheral assemblies from your Commodore 1541. 2) Place the Commodore 1541 upside down on a well lighted surface. The front edge of the 1541 should be toward you. 3) Using the Phillips screwdriver remove the 4 screws located in wells at each corner on the bottom of the 1541. 4) Holding the 1541 together at the sides place it rightside up. 5) Now carefully light the top half of the 1541. This should expose a metal inner cover. Set the top half of the 1541 to one side. 6) Now remove the two screws on the left side of the metal cover. Lift the metal cover off and set to one side. 7) There are two different styles of electronics boards inside the 1541. Using the drawing shown 2 pages forward locate your style of main electronic board and the two components related to the 1541 FLASH installation. Page 41 Installation 1541 Disk Drive 8) The Operating ROM should have one of the following numbers on it: 901229-01, 901229-03, 901229-05 901229-04 (recalled by Commodore) 9) There two 6522 chips in the 1541 drive and their locations are quite different on each stule of main electronics board. Use the pictures on the next page to help in locating the right one. 10) Using your flat bladed tool (knife or screwdriver) gently pry up the Operating ROM. Pry from both ends so that it comes straight up out of the socket. Be careful not to pry up the socket from the main electronics board. 11) Note that there is a small notch on the rearmost end of the Operating ROM when it is in it's socket. Insert Operatin ROM into the black foam and store in a safe place. 12) Remove the black plastic foam from the 24 pin plug on the bottom of the 1541 Operating ROM Assembly. 13) Now place the 1541 Operating ROM Assembly toward the rear of your disk drive over the Operating ROM socket. Be sure the 24 pins of the plug are lined up over the 24 holes of the socket. Gently plug the Operating ROM Assembly into the Operating ROM socket. Check the next page for the correct location. Page 42 Installation 1541 Disk Drive [pic] Read of Electronics Bd. Type A 1541 Drive [pic] Rear of Electronics Bd. Type B 1541 Drive Page 43 Installation 1541 Disk Drive 14) Using your flat bladed tool (knife or screwdriver) gently pry up the FLASH! Input 6522. Pry from both ends so that it comes straight up out of the socket. Be careful not to pry up the socket from the main electronics board. 15) Set the FLASH! Input 6522 in front of you and locate pin 19. The top picture on the next page shows the numbering of the pins. Note that the notch end of all electronics chips in the 1541 disk drive are toward the rear of the drive 16) Check the picture on the previous page that you have removed the correct 6522. If you have, use your flat bladed tool to bend pin 19 straight out from the FLASH! Input 6522 clip. Please see the picture on the next page for details of where to bend the pin. Do not attempt to bend the pin back to its original position. It will usually break if you attempt to return it to its original position. 17) Return the FLASH! Input 6522 to its original socket. Note the small notch should be on the end toward the rear of the 1541 drive. 18) Making sure that all 29, of the 40, pins are lined up, carefully press the FLASH! Input 6522 back into it's original socket. 19) Check the pictures on the previous page that you ahve FLASH Input 6522 and the 1541 Operating ROM Assembly in their proper orientation and location. Page 44 Installation 1541 Disk Drive [pic] FLASH! Input 6522 with pin numbers [pic] FLAAH! Input 6522 Chip with pin 19 bent Page 45 Installation 1541 Disk Drive 20) Place the FLASH! Cable behind the 1541 drive. Lay the unjacketed portion of the cable on top of the left edge of the 1541 electronics board. 21) Connect the black microclip to pin 18, with the black microclip going underneath pin 19 and coming from the front of the 1541 drive. Please see the picture on the next page for the location of this microclip. 22) Check the connection and placing of the black microclip to pin 18. Tape the microclip to the 1541 electronics board as shown on the next page. 23) Connect the white microclip to pin 19 as shown on the next page. 24) Check the connection of the white microclip to pin 19 and tape it down as shown on the next page. 25) With the Phillips screwdriver remover the screw located at the left rear corner of the 1541 electronics board. 26) Place the screw through the FLASH! Cable ground lug and screw it back in place at the right rear corner of the 1541 electronics board. On some earlier 1541's there is already a ground lug on this screw. If that is the case you should now have 2 ground lugs on the left rear corner of the 1541 electronics board. Page 46 Installation 1541 Disk Drive [pic] FLASH! Cable and Microclip locations Type A 1541 Electronics Board [pic] FLASH! Cable and Microclip locations Type B 1541 Electronics Board Page 47 Installation 1541 Disk Drive 27) Using the picture on the next page as a guide route the wires from the microclips and the ground lug off the left side of the 1541 electronics board, around the outside of the bottom case post, under the serial plugs, and over the top of the fuse holder. 28) Remove the cover paper from the FLASH Cable strain releif and stick it directly below the fuse holder. Do not place any strain on the strain relief for the first 24 hours. 29) Without replacing the top covers, return your 1541 disk drive to its normal operating location 30) Lifting up your computer, plug in the 6 pin plug at the end of the FLASH! Cable into the keyed connector on the bottom side of the CableCard 31) Check that the small switch on the CableCard is toward the Commodore 64. 32) Turn on your C-64 and observe the 1541 FLASH! copyright message. You should see: ***COMMODORE 64 BASIC V2 *** W/1541 FLASH! 38911 BYTES FREE (C) 1984 BRYCE NESBITT 3) Now turn on your 1541 Disk Drive and other equipment. Page 48 Installation 1541 Disk Drive [pic] FLASH! Cable Placement 1541 Drive Page 49 Installation 1541 Disk Drive 34) Reload the program from disk that you loaded in step 25 of the C-64 installation instructions. Time the load cycle. The program should load three times faster than previously. 35) Type: POKE 148,64 :OPEN 1,8,15,"Z8S" and then strike the key. 36) Reload the program from step 34 above. Time the load. It should be 3 times slower than in step 34 above. It probably is already getting difficult to consider loading all your programs at this slow speed. 37) Type: POKE 148,0 :OPEN 1,8,15,"Z8F" and then strike the key. 38) Reload the program from disk that you loaded in step 34 and 36 above. Time the load cycle. The program should load three times faster than the load in step 36. 39) Turn off your C-64 and then switch the small switch on the CableCard away from the computer 40) Turn on your C-64 and observe the original Commodore 64 turn-on message. You should see: *** COMMODORE 64 BASIC V2 *** 64K RAM SYSTEM 38911 BASIC BYTES FREE READY Page 50 Insallation 1541 Disk Drive 41) Now Type: OPEN1,8,15,"Z8S" and strike then RETURN key. 42) Reload the program from step 34 above. Time the load. It should be about 3 times slower than in step 34 above. By this time it probably getting very tedious to load at the slow speed. 43) If you have trouble with one of the tests described above, carefully recheck the installation instructions starting at step 1. 44) If you are still having trouble, replace your original Kernal ROM in the C-64 and the original Operating ROM in the 1541 Disk Drive. Test that this has return the computer and disk drive to their original condition. Every 1541 FLASH! is tested before leaving the factory, but mistakes can happen. Notify your local dealer for test and/or possible replacement of the 1541 FLASH!. 45) In case of trouble you may also contact: SKYLES ELECTRIC WORKS 231-E South Whisman Road Mountain View, CA 94041 or you may call: 1-415-965 1735 between the hours of 1 and 6 PM Pacific Coast time. Page 51 Installation 1541 Disk Drive 46) This completes the test of the 1541 FLASH!. Carefully replace the metal inner cover on the 1541 Disk Drive. The 2 small sheetmetal screws are used to attach in on the left side. 47) Unplug the power and serial cable from the 1541 disk drive. 48) Replace the plastic top cover on the 1541 disk drive. 49) Holding the two halves together turn the 1541 disk upside down. 50) Insert the four screws into the the four corner wells on the bottom of the 1541. 51) Turn the 1541 rightside up and reinstall the power and serial cables. Turn on the 1541 disk drive. 52) Turn off your C-64. Switch the small switch on the CableCard toward the C-64. Turn on your C-64. 53) Reload the program from disk that you loaded in step 25 of the C-64 installation instructions. Time the load cycle. The program should load three times faster than previously. 54) This completes the installation of the 1541 FLASH!. Please now read the section of the manual covering the "Easy Everyday Commands". Page 52