Disk II Head movement
On Jan 8, 4:20*pm, Vladimir Ivanov <vlad...@XXXyahooXXX.com> wrote:
> On Sun, 8 Jan 2012, Kevin Dady wrote:
> > Is there a program (to download or to type in) that I could move the
> > apple disk head to a track
>
> Any track/sector editor. Give Locksmith 6.0 a try.
>
> Alternatively, a short program that sets IOB and calls RWTS ($3D9) would
> do. There's an example at the end of the message.
>
> > and also report back what track the head is currently on?
>
> It's the software solely that keeps track of the current track.
>
> * *-- Vlad
>
> Example: Read through disk (backwards). Call to WAIT was for testing
> purposes, you can safely ignore it. It halts with BRK either upon normal
> completion or I/O error.
>
> ca65 V2.12.0 - (C) Copyright 1998-2005 Ullrich von Bassewitz
> Main file * : test.s
> Current file: test.s
>
> 000000r 1 * * * * * * * ; HDDD test code
> 000000r 1
> 000000r 1 * * * * * * * ; -----------------------------------------------------------------------------
> 000000r 1
> 000000r 1 * * * * * * * IOBTYPE = * * * 0
> 000000r 1 * * * * * * * IOBSLOT = * * * 1
> 000000r 1 * * * * * * * IOBDRV *= * * * 2
> 000000r 1 * * * * * * * IOBVOL *= * * * 3
> 000000r 1 * * * * * * * IOBTRK *= * * * 4
> 000000r 1 * * * * * * * IOBSEC *= * * * 5
> 000000r 1 * * * * * * * IOBDCT *= * * * 6
> 000000r 1 * * * * * * * IOBBUF *= * * * 8
> 000000r 1 * * * * * * * IOBLEN *= * * * 10
> 000000r 1 * * * * * * * IOBCMD *= * * * 12
> 000000r 1 * * * * * * * IOBSTAT = * * * 13
> 000000r 1 * * * * * * * IOBSMOD = * * * 14
> 000000r 1
> 000000r 1 * * * * * * * ; buffer at $1000
> 000000r 1
> 000000r 1 * * * * * * * BUF * * = * * * $1000
> 000000r 1
> 000000r 1 * * * * * * * ; ROM entries
> 000000r 1
> 000000r 1 * * * * * * * WAIT * *= * * * $FCA8
> 000000r 1 * * * * * * * COUT * *= * * * $FDED
> 000000r 1
> 000000r 1 * * * * * * * ; -----------------------------------------------------------------------------
> 000000r 1
> 000000r 1 * * * * * * * * * * * .org * *$0300
> 000300 *1
> 000300 *1 * * * * * * * ; init
> 000300 *1 *A9 01 * * * * * * * *lda * * #1 * * * * * * * * * * * * * * *; read
> 000302 *1 *8D 49 03 * * * * * * sta * * iob + IOBCMD
> 000305 *1
> 000305 *1 *A9 23 * * * * * * * *lda * * #35
> 000307 *1 *8D 41 03 * * * * * * sta * * iob + IOBTRK
> 00030A *1 *A9 00 * * * * * * * *lda * * #0
> 00030C *1 *8D 42 03 * * * * * * sta * * iob + IOBSEC
> 00030F *1
> 00030F *1 * * * * * * * ; loop over all sectors/tracks backwards
> 00030F *1
> 00030F *1 *CE 42 03 * * loop: * dec * * iob + IOBSEC
> 000312 *1 *10 11 * * * * * * * *bpl * * secok
> 000314 *1
> 000314 *1 *A9 8D * * * * * * * *lda * * #$0D + $80
> 000316 *1 *20 ED FD * * * * * * jsr * * COUT
> 000319 *1
> 000319 *1 *A9 0F * * * * * * * *lda * * #15
> 00031B *1 *8D 42 03 * * * * * * sta * * iob + IOBSEC
> 00031E *1
> 00031E *1 *CE 41 03 * * * * * * dec * * iob + IOBTRK
> 000321 *1 *10 02 * * * * * * * *bpl * * secok
> 000323 *1 *00 * * * * * * * * * brk * * * * * * * * * * * * * * * * * * ; --- EXIT
> 000324 *1 *00 * * * * * * * * * brk
> 000325 *1 * * * * * * * secok:
> 000325 *1
> 000325 *1 *A9 AE * * * * * * * *lda * * #'.' + $80
> 000327 *1 *20 ED FD * * * * * * jsr * * COUT
> 00032A *1
> 00032A *1 *A9 03 * * * * * * * *lda * * #>iob * * * * * * * * * * * * * ; call RWTS
> 00032C *1 *A0 3D * * * * * * * *ldy * * #<iob
> 00032E *1 *20 D9 03 * * * * * * jsr * * $3D9
> 000331 *1 *90 02 * * * * * * * *bcc * * rwok
> 000333 *1 *00 * * * * * * * * * brk * * * * * * * * * * * * * * * * * * ; --- I/O ERROR
> 000334 *1 *00 * * * * * * * * * brk
> 000335 *1 * * * * * * * rwok:
> 000335 *1
> 000335 *1 *A9 1E * * * * * * * *lda * * #$1E
> 000337 *1 *20 A8 FC * * * * * * jsr * * WAIT
> 00033A *1 *4C 0F 03 * * * * * * jmp * * loop
> 00033D *1
> 00033D *1 * * * * * * * ; -----------------------------------------------------------------------------
> 00033D *1
> 00033D *1 *01 * * * * * iob: * *.byte * $01 * * * * * * * * * * * * * * ; type
> 00033E *1 *60 * * * * * * * * * .byte * $60 * * * * * * * * * * * * * * ; slot * $10
> 00033F *1 *01 * * * * * * * * * .byte * $01 * * * * * * * * * * * * * * ; drive (1 / 2)
> 000340 *1 *00 * * * * * * * * * .byte * $00 * * * * * * * * * * * * * * ; expected volume (0= any)
> 000341 *1 *00 * * * * * * * * * .byte * $00 * * * * * * * * * * * * * * ; track
> 000342 *1 *00 * * * * * * * * * .byte * $00 * * * * * * * * * * * * * * ; sector
> 000343 *1 *50 03 * * * * * * * *.word * dct * * * * * * * * * * * * * * ; -> DCT
> 000345 *1 *00 10 * * * * * * * *.word * BUF * * * * * * * * * * * * * * ; -> buffer
> 000347 *1 *00 01 * * * * * * * *.word * $0100 * * * * * * * * * * * * * ; one sector
> 000349 *1 *00 * * * * * * * * * .byte * $00 * * * * * * * * * * * * * * ; 1- read, 2- write, 4- format
> 00034A *1 *00 * * * * * * * * * .byte * $00 * * * * * * * * * * * * * * ; status
> 00034B *1 *00 * * * * * * * * * .byte * $00 * * * * * * * * * * * * * * ; status modifier (actual volume)
> 00034C *1 *60 * * * * * * * * * .byte * $60 * * * * * * * * * * * * * * ; previous slot * $10
> 00034D *1 *01 * * * * * * * * * .byte * $01 * * * * * * * * * * * * * * ; previous drive
> 00034E *1 *00 00 * * * * * * * *.byte * $00, $00 * * * * * * * * * * * *; -- spares
> 000350 *1
> 000350 *1 *00 01 EF D8 *dct: * *.byte * $00, $01, $EF, $D8 * * * * * * *; Disk II
> 000354 *1
> 000354 *1 * * * * * * * * * * * .end
cool, thanks a bunch
|