ADVANCED DEMUFFIN ver 1.1 A new version of that terrible program Demuffin. Written By: The Stack Documentation By: The Inspector Copyright February 8, 1983 Corrupt Computing Advanced Demuffin is available on THE TWILIGHT PHONE A non-Net Works system (313)-775-1649 If you want Corrupt Computing's line of utilities on your board, just contact THE INSPECTOR on THE TWILIGHT PHONE. Under NO circumstances will selling or otherwise distributing Corrupt Computing's programs on a bulletin-board be permitted without prior permission from either THE STACK or THE INSPECTOR. Corrupt Computing and the Twilight Phone make NO warranties, either expressed or implied, with respect to this manual and the software described in this manual, its quality, performance, merchantability, or fitness for any particular purpose. This product is GIVEN AWAY "as is". In NO event will Corrupt Computing or The Twilight Phone be liable for direct, indirect, incidental, or consequential damages resulting from used of this product. Corrupt Computing and The Twilight Phone do NOT support software pirating, this product is for back-up, research, and educational purposes only. (HA HA HA) What is Advanced Demuffin? Advanced demuffin will allow you to copy a disk that is in non-standard format to DOS 3.3 format. It will also allow you to copy from DOS 3.3 to DOS 3.3. To use Advanced Demuffin you should be familiar with "THE BASIC OF KRAKING BY KRAKOWICZ". (These tips are available on apple trek systems.) You should also have a track-sector editor like The Inspector, Disk Fixer, Nibbles Away II, or Disk Driver. To crack some programs a integer card or crack-rom is necessary. Advanced Demuffin will only work on some programs. Uses of Advanced Demuffin: 1) Advanced Demuffin is the only program that I know of, that will allow you to copy selected tracks AND sectors from one disk to another. 2) Advanced Demuffin's main purpose was to copy disks from a non-standard DOS to DOS 3.3. By Copying a disk from a non-standard format to DOS 3.3 you will NOT completely un-protect a disk. You will merely copy the program from their DOS to DOS 3.3, any checksums, nibble counts, etc. that were in the program will still be there. To complete the un-protection process on most disks you will have to change a byte or two, to take out the "checks". Occasionally you will find a disk that will not require any changes. This will most likely will only happen with a old disk, and/or a stupid company. Differences between Demuffin and Advanced Demuffin: Demuffin can only copy a disk if it has a directory. Because Advanced Demuffin copies the disk, regardless of what data is on it, you will not have this problem. Here is a summary of Advanced Demuffin's options. 1) CONVERT DISK: Does the actual copying of the disk. Allows you to change different parameters, like start track, start sector, etc... 2) LOAD NEW RWTS MODULE: Will load an RWTS for the source disk (the disk you are converting to DOS 3.3) from a DOS 3.3 disk. 3) LOAD NEW IOB MODULE: Will load a new interface for the source disk's RWTS from a DOS 3.3 disk. 4) FORMAT TARGET DISK: Initializing a disk in either drive, in DOS 3.3 format. 5) EXIT TO MONITOR: Gee, I wonder what this does? (If you don't know, you probably should not be using Advanced Demuffin.) To use the options, move the "light bar" with the arrow keys. The left arrow moves the bar up and the right arrow moves the bar down. To execute an option, just move the bar to it and press RETURN. The CONVERT DISK option will do the actual converting of the disk. To use the convert option move the light bar to "CONVERT DISK" and press RETURN. When you access the convert option, make sure that you already have the source RWTS in memory and have the IOB module pointing to it. (The IOB module normally points to $BD00.) Advanced Demuffin will then ask you: "CHANGE DEFAULT VALUES?" If you want to copy from track $0, sector $00 to Track $22, sector $0F, by 1, with 1 retry and to drive two, then answer "N" for no to this question. If you answer "Y" for yes then Advanced Demuffin will ask you: "SECTORS PER TRACK? (13/16)" The first digit of has to be a 1. You should then enter a "3" for a thirteen sector disk (DOS 3.2) or a "6" for a sixteen sector disk (DOS 3.3). If you don't know if the disk has 13 or 16 sectors try to convert it with 16 sectors, and if you get errors on all sectors past sector "C", then it is most probably a 13 sector disk. All the option "SECTORS PER TRACK" does is tell Advanced Demuffin at what sector to change to a new track. Then Advanced Demuffin will ask you to enter the "START TRACK", enter the track (normally $0) in hex. You may enter half tracks, just type a "." after you enter the track and Advanced Demuffin will automatically tack a ".5" on the end of the track. Then enter the start sector number in hex when Advanced Demuffin prompts you to. Advanced Demuffin will then ask you to enter the end track and sector. NOTE: The start track and sector must come before the end track and sector. EX: Start track: $00 Start track: $22 Start sector: $00 Start sector: $0F End track: $22 End track: $00 End sector : $0F End sector: $00 This is fine. But this is illegal. If you enter it this way Advanced Demuffin will give you the message: "BACKWARDS COPYING NOT SUPPORTED!" After entering the track and sectors, Advanced Demuffin will ask you what increment what you want to go by. (Usually 1) Anybody that wants to change the increment (to anything other than one), should already know what increment is, so I won't explain it. You will then be asked "MAX # OF RETRIES?". You should then enter the number of times (usually 1) you want Advanced Demuffin to try to read/write a sector if it gets an error on it. Then you should enter the drive to be copied to. NOTE: The source drive must always be drive 1 because of limitations of the IOB module. If you specified two drives then Advanced Demuffin will prompt you to: "INSERT DISKS AND PRESS RETURN" You should then insert the source in drive 1 and the target in drive 2 and press RETURN. Advanced Demuffin will the proceed to convert the disk to DOS 3.3. If you specified one drive, Advanced Demuffin will ask you to: "INSERT SOURCE DISK AND PRESS RETURN" You should then insert the source disk and press RETURN. Advanced Demuffin will then read 7 tracks off source and ask you to insert the target, you should then insert the target, Advanced Demuffin will then write those 7 tracks. It will take 5 passes to copy the whole disk. After the disk is copied, Advanced Demuffin will display the message "PRESS ANY KEY TO CONTINUE". If you press 1-7 Advanced Demuffin will then do a "screen dump to printer" in the slot of the number that you pressed. Any other key will return you to the main menu. The Display ADVANCED DEMUFFIN 1.1 - COPYRIGHT 1983 WRITTEN BY THE STACK - CORRUPT COMPUTING ======================================== TRK: +.5: 0123456789ABCDEF0123456789ABCDEF0123 SC0: SC1: SC2: SC3: SC4: SC5: SC6: SC7: SC8: SC9: SCA: SCB: SCC: SCD: SCE: SCF: ======================================== 16 SC $00,$00 TO $22,$0F BY 1.0 TO DRV 2 The top 2 lines are just the title lines. Then comes the status display. The first two lines contain the track list. Each track number is displayed here, starting at $00 and ending at $23 (note that the all values are displayed in HEX format, not DECIMAL). Although the APPLE II DISK usually uses only tracks $00-$22, occasionally some software uses track $23. For this reason, track $23 has been included. The first line of the status display (marked with "TRK" on the left side of the screen) is for normal tracks. The next line is for half tracks (marked with a "+.5"). The next line is the actual track numbers. After this is a "map" of the disk. After the disk map there is another display. It shows what format the disk is in (13 or 16 sector), then it shows the start track and sector, and the end track and sector. The next thing on the status line is the track increment. The last thing is the drive to copy to. There are a number of status codes that appear in these displays. An inverse "R" on the disk map shows a sector being read in. An inverse "W" in the disk map shows a sector being written out to disk. An inverse "R" or "W" on track list shows which track is being read or written. A "." on either the disk map or the track display shows the sector or track copied correctly. Error codes and messages: "R" on the track list - Some sectors on the track could not be read. "W" on the track list - Advanced Demuffin could not write out some sectors on that track. "R" on the disk map --- That sector could not be read. "W" on the disk map --- That sector could not be written. When Advanced Demuffin detects that the target disk is "write protected", it will replace the title lines with this message: DISK WRITE-PROTECTED! PRESS "S" TO START OVER, "C" TO CONTINUE You should then remove the write protect tab or insert another disk. If you want Advanced Demuffin to start copying from the start sector and track press 'S'. If you want it to continue copying from where it is press 'C'. What is a RWTS module? A RWTS module is the RWTS will be used to copy the source disk. When you access the "LOAD NEW RWTS MODULE" Advanced Demuffin will prompt you to "PAGE TO LOAD AT (MUST BE A 2 DIGIT HEX NUMBER):" You must then enter the page number of the address that you want to load RWTS at. i.e. $B8 would load it at $B800. Advanced Demuffin will only allow you to load the RWTS between $20 and $BF. (Usually the RWTS is loaded at $B800.) Advanced Demuffin will then ask you to "PLEASE TYPE THE NAME OF THE FILE TO LOAD". You should then enter the file name. When you press RETURN, Advanced Demuffin will ask you what drive to load it from. You should then enter a 1 or a 2. Possible errors: 1) NO SUCH BINARY FILE EXISTS! This message is the same as a "FILE NOT FOUND" error. 2) PLEASE INSERT THE CORRECT DISK CORRECTLY IN CORRECT THE DRIVE AND PRESS This means that Advanced Demuffin had problems reading your RWTS. IOB modules: To load an IOB module, all you have to enter the file name and the drive. What is an IOB module? An IOB module is an interface for the source RWTS. Advanced Demuffin uses the IOB module to set up the IOB table and jump to RWTS. The IOB module is stored from $1400-$14FB. When Advanced Demuffin loads in a IOB module, it reads the first sector of the file off the track-sector list and stores it at $13FC-$14FB. When Advanced Demuffin wants to read a sector it JSRs to the IOB module with the phase number, sector number, and the page number stored in the A, Y and X registers respectively. Since the source drive always has to be drive one, Advanced Demuffin can make the IOB module very compact. After it gets the page,track and sector Advanced Demuffin sets up the IOB for RWTS using this information, and JMPs to RWTS. (It jumps instead of JSRing, because it lets the RWTS do the RTS.) Here is a list of the IOB module that is built in to Advanced Demuffin: *1400L 1400- 4A LSR ; Convert phase # to track # 1401- 8D 22 0F STA $0F22 ; Store track number 1404- 8C 23 0F STY $0F23 ; Store sector number 1407- 8D 27 0F STX $0F27 ; Store page number 140A- A9 01 LDA #$01 140C- 8D 20 0F STA $0F20 ; Store the drive number 140F- 8D 2a 0F STA $0F2a ; Store the read code 1412- A9 0F LDA #$0F ; With high byte of IOB 1414- A0 1E LDY #$1E ; With low byte of IOB 1416- 4C 00 BD JMP $BD00 ; Goto RWTS 1419- 00 BRK 141A- 00 BRK Unless you want to read half tracks, you need the LSR to convert the phases to tracks. (If you want to read half tracks, make sure the source RWTS can read half tracks!) Here is a list of reasons that one might need a different IOB module: 1) If the source RWTS uses the some of the same zero page locations as Advanced Demuffin, the IOB module would have to swap those out before the read, and swap them back in after the read. 2) The source RWTS resides within the text window, or over part of Advanced Demuffin. You would then have to write an IOB module to swap Advanced Demuffin or the text screen out and the RWTS in. Then you JSR to the RWTS. When the RWTS does the RTS, it will return to the IOB module. The IOB module can then swap the text screen or Advanced Demuffin back in. 3) The RWTS's IOB module is different from a normal IOB. You should make sure that you JSR to the RWTS instead of JMPing to it, so that it can move the things back to their right place. You may also need to modify the IOB module to read half tracks. Or if the RWTS is in a different place, you will have to change the IOB module. There are two ways to Demuffin a disk; the way you have to do it with Demuffin and the way that Advanced Demuffin allows you to do it. I will only discuss the second method. (For additional information on Demuffin, see Pirates Harbor cracking tips.) MISCELLANEOUS FEATURES: To return to the menu from any point just press "ESC". You can change the starting and ending page number of the buffer by changing locations $1cf0 and $1cf1 (Normally a $20 and $70 are stored in these locations). When you change these, make sure that the start page is stored in $1cf0 and the end page is stored in $1cf1. If you store these numbers in reverse then Advanced Demuffin will only use a one page buffer. This is explained in full in the Advanced Demuffin TECH-NOTES. Differences between Advanced Demuffin ver 1.0 and ver 1.1: All options work including LOAD RWTS MODULE & LOAD IOB MODULE. Does not require a DOS or an RWTS to function properly, however, if you don't have an RWTS in memory you either have to load one with 'LOAD NEW RWTS MODULE' or change the JMP in the IOB module to point to $1A00 instead of $BD00. Default is to read in $7000 bytes per pass meaning that the entire disk can be converted in 5 passes (especially useful with only one drive.) The buffer start, end and (meaning size, also) can easily be changed by changing locations $13F9 (start page of buffer) and $13FA (end page of buffer.) The defaults for these locations are $20 and $90, respectively giving a buffer size of $7000 bytes as mentioned above. CTRL-Y and & will get you back into the program in case of accidental or purposeful exit. Will do a screen dump to the printer at the 'PRESS ANY KEY TO CONTINUE' message that you get after the conversion is done. At this time, typing a number from 1-7 will do a screen dump to the specified slot in which a printer is recommended to be in. Before printing, however, the program will print a "CTRL-I80n" so that the output will not go to the screen during print causing the screen to scroll up and the printout to be all messed up, etc. Also, even though the screen will say "PRESS ANY KEY TO CONTINUE" at the top, the printout won't as this is the one and only modification the screen dump routine makes to the text as it goes to the printer. Note also that 1-7 may be typed during copy and it will be remembered until the conversion is completed. Any other key (besides 1-7 or ESC) will clear the 1-7 key though. (ESC at any time should bring you back to the main menu.) The left-arrow key <- works as a backspace-delete in inputs allowing multiple characters such as track number inputting. The maximum number of retries per sector may be specified if you decide to change the default values. This number may be from 0 (only one try - no retries) to $F (15) in which it would it try 15 more times to read in an unsuccessfully read sector until it got it. The default for this, although the program does not mention it anywhere, is one retry. If backwards copying is attempted, you will be given an error message instead of it incorrectly copying only the first sector. You don't have to do the $1318 modification - The IOB module (which is now at $1400 instead of $1300) now points to $bd00 instead of $1900 or whatever. It asks for the "INCREMENT" when changing the default values instead of asking "BY". It does not print through DOS. ================================================================ If you have any questions, problems, or concerns just contact THE INSPECTOR on THE TWILIGHT PHONE.