                    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 <RETURN>
            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.


