[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Creating DOS 3.2 Systems Masters where there were none



In article <1124805974.451673.119350@g47g2000cwa.googlegroups.com>,
schmidtd@my-deja.com <schmidtd@my-deja.com> wrote:
>As part of a recent eBay purchase, I received a Disk ][ card with both
>old and new P5/P6 ROMS.  You can switch between 13 and 16 sector
>firmware with a little toggle switch.  Pretty cool.  BUT... I of course
>needed a DOS 3.2 system master, and I had none.  What to do?  Ask here
>for a physical floppy?  Look on eBay for originals?  Nah.  Where's the
>challenge in that?
>
>There's much discussion on the topic in this group going back for
>years.  We have a classic chicken-and-egg situation.  You need DOS to
>write DOS, and 3.2 DOS is tough to come by with current tools - mostly
>because the 232,960 byte nibble images of 3.2 diskettes don't have an
>easy route to get onto a real Apple for writing.  So, here's how I did
>it.
>
>Step 1: download nibbleized images of DOS 3.2 masters (Asimov one for
>the ][+ and one for the plain ][).  Fire up an emulator with a DOS 3.3
>master; run BOOT13; boot the DOS 3.2 image.
>
>Step 2: copy out the DOS in memory to the virtual 3.2 diskette:
>BSAVE DOS32,A$9600,L$29FF
>Turns out I had to erase a file or two on my virtual 3.2 system master
>to make room for it.  But now I have a memory image of DOS 3.2 on a 3.2
>disk.  So far so good.
>
>Step 3: get the dos memory image file onto a 3.3 virtual diskette for
>ADT transfer to the physical apple.  Boot DOS 3.3, use MUFFIN to copy
>off the DOS32 file we created to an otherwise blank .DSK file.  I'll
>call it PHASE0.DSK.
>
>Step 4: transfer PHASE0.DSK down to the physical apple with ADT.  We
>now have a physical floppy in DOS 3.3 format that contains a file,
>DOS32, which is the memory imprint of DOS 3.2.
>
>Step 5: get DOS 3.2 into memory.  You can't just BLOAD DOS32, because
>it'll step all over your buffers, running DOS, and everything right in
>the middle of loading!  So, we've got to move it around a little.
>First, load it up into some free space:
>]BLOAD DOS32,A$2000
>Next, get into the monitor and move it to it's real home, and give it a
>call for good measure:
>]CALL -151
>*9600<2000.49FFM
>*3D0G
>The vectors are already set close enough to what we want, so we don't
>have to modify anything in the $3D0 range.  We now have DOS 3.2 in
>memory.
>
>Step 6: At this point, I flipped the switch on my Disk ][ card and
>typed
>INIT HELLO
>and held my breath.  The disk just spun aimlessly for what seemed like
>an eternity.  I hung my head in despair and tried to figure out what
>went wrong, what to try next.  But then, out of nowhere - the stepper
>motor stepped!  Victory was mine!  At the end of the init cycle, I had
>a disk formatted with DOS 3.2.  I tested it by switching the firmware
>back to 3.3, booted DOS 3.3 system master, and booted my 3.2 disk with
>BOOT13.

You shouldn't have to flip the switch here - it shuld work anyway.

The Apple II disk controller card has two ROM's:

1. The boot ROM, which is used when boting the floppy.  This ROM is
different for 13-sector and 16-sector disks, and the ROM contents must
correspond to the type of floppy to boot.  So you must flip the switch
when changing from booting 16-sector to booting 13-sector disks, or
the other way around.

2. The "state machine ROM", used by the logic on the disk controller
card.  This ROM is not accessible from the Apple II address bus.
This ROM is also different for 13-sector and 16-sector disks, but
while a 13-sector state machine ROM works only for 13-sector disks,
the 16-sector state machine ROM works for both 13-sector and 16-sector
disks.  With a 16-sector state machine ROM, you can read, write and
format both 16-sector and 13-sector disks.

Here you formatted the 13-sector disk, but you didn't yet boot it.
Therefore there was no need to flip the switch yet.

>Step 7: Get the rest of the DOS 3.2 System Master diskette contents
>onto the physical 3.2 diskette image.  With MUFFIN on my emulator, I
>copied all the files from the virtual 3.2 system master onto
>PHASE1.DSK.  I sent PHASE1.DSK to the physical Apple via ADT.  Now, you
>need the reverse of MUFFIN to copy the programs on the 16-sector PHASE1
>diskette onto the physical 3.2 diskette.  I used DUBBELDOS:
>www.apple2.org.za/mirrors/ground.icaen.uiowa.edu/apple8/Misc/Dubbeldos.dump
>and then normal FID to copy all the files onto my 3.2 diskette.
>
>Step 8: Flip the switch back to 13 sectors, reboot with the new 3.2
>system master, and relish the victory!  Ancient history reconstituted.

...and HERE you needed to flip the switch - which you also did.

>If you have to ask, "why?"  Then I say you're in the wrong newsgroup.
>:-)

I understand very well why you wanted to do it.  Thanks for sharing!

>- David Schmidt

BTW, perhaps it would be possible to put code in a 256-byte "DoubleBoot"
ROM and put it on the disk controller card.  That code would work in
a way similar to the "DubbelDos" code: looking for, say, 16-sector
address block signature and if not found, instead look for 13-sector
address block signature.  One additional point to consider is that
the boot sector contents must be stored at different memory addresses
depending on whether it's a 13-sector or a 16-sector boot sector:
13-sector is to be stored at $300 while 16-sector is to be stored at
$800.

Perhaps this is not possible - we do have the memory constraint of
256 bytes in the boot ROM, plus the requirement that the code must
be written to be relocatable, which increases its size somewhat.
One could write the code so that it works only in, say, slot 6, which
would free some bytes - perhaps enough to make it possible to write
a DoubleBoot ROM ???



-- 
----------------------------------------------------------------
Paul Schlyter,  Grev Turegatan 40,  SE-114 38 Stockholm,  SWEDEN
e-mail:  pausch at stockholm dot bostream dot se
WWW:     http://stjarnhimlen.se/