[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Disk II Head movement
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