[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Virtual serial drive
On Tuesday, September 4, 2012 12:40:01 PM UTC-5, schmidtd wrote:
> On 9/4/2012 12:27 PM, David Schmidt wrote:
>
> > On 9/4/2012 11:59 AM, BLuRry wrote:
>
> >> On Tuesday, September 4, 2012 6:28:34 AM UTC-5, schmidtd wrote:
>
> >>> On 9/4/2012 4:46 AM, Ric wrote:> I try on my //c 255 rom but don't work
>
> >>> right.
>
> >>>
>
> >>> > Should be rewrite serial card subroutine on file SERIAL.DRIVE
>
> >>> > The command dos is Apple2VirtualDrive COM1 disk.hdv
>
> >>>
>
> >>> It won't work on a IIc because it is currently hard-coded to talk to the
>
> >>> GS serial hardware. I've got the serial code isolated and bolted the
>
> >>> serial backend of ADTPro to it, and now it'll use whatever hardware is
>
> >>> supported by that. But I still have to get the driver to attach to
>
> >>> ProDOS correctly - I'm reading the Beyond ProDOS book for that now.
>
> >>
>
> >> That's a pretty easy problem to fix!
>
> >
>
> > The 'problem' isn't the comms - I'm pretty solid on that - the problem
>
> > is cleanly interfacing to the P8 driver model. I expect that a "hello
>
> > world" message from the driver's entry point that is fed to DEVADR21 (he
>
> > calls it DEV2S1) should produce that message when doing a CAT,S2,D1 -
>
> > but it crashes instead.
>
> >
>
> > The initialization code doesn't quite look complete to me, or at least
>
> > my translation to ca65 didn't come across quite right:
>
> >
>
> > ; ADD POINTER TO DRIVER
>
> > LDA #<DRIVER
>
> > STA DEV2S1
>
> > LDA #>DRIVER
>
> > STA DEV2S1+1
>
> > ; ADD TO DEVICE LIST
>
> > INC DEVCNT
>
> > LDY DEVCNT
>
> > LDA #$20 ; SLOT 2 DRIVE 1
>
> > STA DEVLST,Y
>
> > RTS
>
> >
>
> > Where "DRIVER" is the entry point to the block driver command processor.
>
> > Terence had only stored a value at DEV2S1+1, which can't be right...
>
>
>
> Ah, never mind. I had it right after all. I just needed to remember
>
> what environment I was in when the driver code is called... ROM is
>
> switched out, so calling COUT (among other things) was doomed. ;-)
I figured you knew how to do the com stuff, as it is far from your first rodeo. I just posted that code for posterity in case anyone wanted to see the comparison. Hooking into the prodos drivers can be tricky, I remember seeing others overwrite the disk routines to make room for alternate drivers but there's probably a much cleaner way to do it. The advantage of overtaking the disk routines is that you have more room to add stuff like error checking and retry logic.
-B