Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-04-27 08:14:39 +02:00
parent 548facfad6
commit b037d5d042
10 changed files with 333 additions and 189 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -22,9 +22,11 @@ ZPPtrDevName .BS 2
Index .BS 1 Index .BS 1
hDevID .BS 1 hDevID .BS 1
DrvSlt0 .BS 1
hCatBuf .BS 1 hCatBuf .BS 1
hMem .BS 1 hTrackBuf .BS 1
DSSS0000 .BS 1
CurTrack .BS 1
CurQTrack .BS 1
bLL .BS 1 bLL .BS 1
bCustomBlkSize .BS 1 bCustomBlkSize .BS 1
@ -229,23 +231,8 @@ CS.RUN.GetDevStatus
*-------------------------------------- *--------------------------------------
CS.RUN.LL >LDA.G DIB+S.DIB.T CS.RUN.LL >LDA.G DIB+S.DIB.T
cmp #S.DIB.T.DISKII cmp #S.DIB.T.DISKII
beq CS.RUN.LL.DISKII bne .1
>PUSHW L.MSG.LL
>PUSHBI 0
>SYSCALL PrintF
bcs .9
>PUSHB hDevID
>PUSHBI IOCTL.FORMAT
>PUSHEA.G IOCTL
>SYSCALL IOCTL
.9
CS.RUN.LL.RTS rts
*--------------------------------------
CS.RUN.LL.DISKII
ldy #S.FD.DEV.BUSID ldy #S.FD.DEV.BUSID
lda (ZPPtrFD),y 00000SSS lda (ZPPtrFD),y 00000SSS
@ -262,24 +249,109 @@ CS.RUN.LL.DISKII
ror in C ror in C
pla pla
ror ror
sta DrvSlt0 DSSS0000 sta DSSS0000
bra CS.RUN.LL.DISKII
.1 >PUSHW L.MSG.LL
>PUSHBI 0
>SYSCALL PrintF
bcs .9
>PUSHB hDevID
>PUSHBI IOCTL.FORMAT
>PUSHEA.G IOCTL
>SYSCALL IOCTL
.9
CS.RUN.LL.RTS rts
*--------------------------------------
CS.RUN.LL.DISKII
>LDYAI 4096 >LDYAI 4096
>SYSCALL GetMem >SYSCALL GetMem
bcs CS.RUN.LL.RTS bcs CS.RUN.LL.RTS
stx hMem stx hTrackBuf
>STYA ZPPtr1 >STYA ZPPtr1
>STYA ZPPtr2
>STYA.G IOCTL+S.IOCTL.BUFPTR
>PUSHB hDevID jsr CS.RUN.MotorOn
>PUSHBI IOCTL.READBLOCK bcs .9
>PUSHEA.G IOCTL
>SYSCALL IOCTL Read Block 0 to recalibrate >SLEEP
ldx #16 ldx #16
jsr CS.RUN.ZeroPtr1 16 sectors filled with 0, give some time to spin up
stz CurTrack
lda #160
sta CurQTrack
ldx #0
jsr CS.RUN.SeekToX
.1 >SLEEP
>PUSHW L.MSG.LLDISK2
>PUSHB CurTrack
>PUSHBI 1
>SYSCALL PrintF
bcs .9
>PUSHB DSSS0000
>PUSHBI 254 VOL
>PUSHB CurTrack
>PUSHW ZPPtr1
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s
bcs .9
inc CurTrack
lda CurQTrack
* clc
adc #4
cmp #140
beq .8
tax
jsr CS.RUN.SeekToX
bcc .1
.9 rts
.8 ldx #0
jsr CS.RUN.SeekToX
jsr CS.RUN.MotorOff
>PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
rts
*--------------------------------------
CS.RUN.MotorOn sec
.HS 90 BCC
CS.RUN.MotorOff clc
>PUSHB DSSS0000
ror
>PUSHA
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2MotorControl
rts
*--------------------------------------
CS.RUN.SeekToX >PUSHB DSSS0000
>PUSHB CurQTrack
txa
sta CurQTrack
>PUSHA
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2MoveHead
rts
*--------------------------------------
CS.RUN.ZeroPtr1 >LDYA ZPPtr1
>STYA ZPPtr2
lda #0 lda #0
tay tay
@ -291,35 +363,6 @@ CS.RUN.LL.DISKII
dex dex
bne .10 bne .10
stz Index
.1 >PUSHW L.MSG.LLDISK2
>PUSHB Index
>PUSHBI 1
>SYSCALL PrintF
bcs .9
>PUSHB DrvSlt0
>PUSHB Index
>PUSHW ZPPtr1
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s
bcs .9
inc Index
lda Index
cmp #35
bne .1
>PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
.9 php
pha
lda hMem
>SYSCALL freemem
pla
plp
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.InitCat lda CatSize CS.RUN.InitCat lda CatSize
@ -418,7 +461,7 @@ CS.QUIT lda hCatBuf
>SYSCALL FreeMem >SYSCALL FreeMem
.1 lda hMem .1 lda hTrackBuf
beq .2 beq .2
>SYSCALL FreeMem >SYSCALL FreeMem
@ -463,7 +506,7 @@ MSG.ERR .AS "[%h]"
MSG.CRLF .AZ "\r\n" MSG.CRLF .AZ "\r\n"
MSG.NOSIZE .AZ "Unable to get media size." MSG.NOSIZE .AZ "Unable to get media size."
MSG.INIT .AZ "Formatting %s (%D Blks), Volname:%s\r\n" MSG.INIT .AZ "Formatting %s (%D Blks), Volname:%s\r\n"
MSG.LLDISK2 .AZ "\rTrack %02d..." MSG.LLDISK2 .AZ "\rWriting Track %02d..."
MSG.LL .AZ "\rLow Level Format..." MSG.LL .AZ "\rLow Level Format..."
MSG.WRITECAT .AZ "Writing Catalog..." MSG.WRITECAT .AZ "Writing Catalog..."
FMT.BLANK .AZ "BLANK%H%H" FMT.BLANK .AZ "BLANK%H%H"

View File

@ -18,9 +18,9 @@ IO.D2.DrvSel1 .EQ $C08A
IO.D2.DrvSel2 .EQ $C08B IO.D2.DrvSel2 .EQ $C08B
IO.D2.WShift .EQ $C08C R IO.D2.WShift .EQ $C08C R
IO.D2.WLoad .EQ $C08D W
IO.D2.RData .EQ $C08C R IO.D2.RData .EQ $C08C R
IO.D2.WLoad .EQ $C08D W
IO.D2.ReadProt .EQ $C08D R IO.D2.ReadProt .EQ $C08D R
IO.D2.ReadMode .EQ $C08E R IO.D2.ReadMode .EQ $C08E R

View File

@ -4,9 +4,10 @@ NEW
*-------------------------------------- *--------------------------------------
LIBBLKDEV.GetProDOSCatSize .EQ 4 LIBBLKDEV.GetProDOSCatSize .EQ 4
LIBBLKDEV.BuildProDOSCat .EQ 6 LIBBLKDEV.BuildProDOSCat .EQ 6
LIBBLKDEV.D2MoveHead .EQ 8 LIBBLKDEV.D2MotorControl .EQ 8
LIBBLKDEV.D2TrkRead16s .EQ 10 LIBBLKDEV.D2MoveHead .EQ 10
LIBBLKDEV.D2TrkWrite16s .EQ 12 LIBBLKDEV.D2TrkRead16s .EQ 12
LIBBLKDEV.D2TrkWrite16s .EQ 14
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE INC/LIBBLKDEV.I SAVE INC/LIBBLKDEV.I

View File

@ -8,27 +8,32 @@ NEW
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/MLI.I .INB INC/MLI.I
.INB INC/MLI.E.I
.INB INC/IO.D2.I .INB INC/IO.D2.I
*-------------------------------------- *--------------------------------------
TRACK16.LEN .EQ $19F8 (6648) bytes TRACK16.LEN .EQ 6400
*-------------------------------------- *--------------------------------------
TRACK16.GAP1 .EQ 64+8 TRACK16.GAP1 .EQ 64 640 bits
*Address field = D5AA96 + 4x2 + DEAAEB = 14 * 16 * (
TRACK16.GAP2 .EQ 6 *Address field = D5AA96 + 4x2 + DEAAEB = 14 112 bits
*Data field = D5AAAD + 342 + CS + DEAAEB = 349 TRACK16.GAP2 .EQ 6 60 bits
TRACK16.GAP3 .EQ 42 *Data field = D5AAAD + 342 + CS + DEAAEB = 349 2792 bits
*TRACK16.GAP3 .EQ 27 270 bits
TRACK16.GAP3 .EQ 26 270 bits
* )
* 64 + 16 * (14 + 6 + 349 + 27) = 6400 52384 bits (6548)
*-------------------------------------- *--------------------------------------
TRACK9.LEN .EQ $19F8 (6648) bytes TRACK9.LEN .EQ 6511
*-------------------------------------- *--------------------------------------
TRACK9.GAP1 .EQ 51 TRACK9.GAP1 .EQ 8+14 220 bits
*Address field = D5AA96 + 4x2 + DEAAEB = 14 * 9 * (
TRACK9.GAP2 .EQ 6 *Address field = D5AA96 + 4x2 + DEAAEB = 14 112 bits
*Data field = D5AAAD + 342 + 342 + CS + DEAAEB = 691 TRACK9.GAP2 .EQ 5 50 bits
TRACK9.GAP3 .EQ 42 *Data field = D5AAAD + 342 + 342 + CS = 688 5504 bits
*-------------------------------------- TRACK9.GAP3 .EQ 14 140 bits
Status.PrvDrvOff .EQ $80 Waiting old drive stop spinning * )
Status.DrvOn .EQ $81 Waiting target drive spin * 9 * (14 + 5 + 688) = 6363 50904 bits (1480 free = 148 sync bytes)
Status.seek .EQ $82 target drive seeking * 22 + 9 * (14 + 5 + 688 + 14) = 6511 52384 bits (6548)
*-------------------------------------- *--------------------------------------
ZPPtr1 .EQ ZPLIB ZPPtr1 .EQ ZPLIB
ZPPtr2 .EQ ZPLIB+2 ZPPtr2 .EQ ZPLIB+2
@ -53,6 +58,7 @@ CS.START cld
.DA LIB.UNLOAD .DA LIB.UNLOAD
.DA GetProDOSCatSize .DA GetProDOSCatSize
.DA BuildProDOSCat .DA BuildProDOSCat
.DA D2MotorControl
.DA D2MoveHead .DA D2MoveHead
.DA D2TrkRead16s .DA D2TrkRead16s
.DA D2TrkWrite16s .DA D2TrkWrite16s
@ -289,14 +295,111 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
bra .7 bra .7
*/-------------------------------------- */--------------------------------------
*\-------------------------------------- *\--------------------------------------
D2MotorControl >PULLB MotorOn
>PULLB DrvSlt
jsr CheckDiskII
bcs .9
lda MotorOn
asl
lda #0
adc #IO.D2.DrvOff
adc Slotn0
tax
lda $C000,x
* clc
.9 rts
*/--------------------------------------
*\--------------------------------------
D2MoveHead >PULLB MoveTo D2MoveHead >PULLB MoveTo
>PULLB MoveFrom >PULLB MoveFrom
>PULLB DrvSlt >PULLB DrvSlt
jsr CheckDiskII jsr CheckDiskII
bcs .9 bcs .9
.1 lda MoveTo
sec
sbc MoveFrom
beq .8
bcc .2
cmp #2 A>curtrk, must move in
bcc .3
lda #2
bra .3
.2 cmp #$fe A<curtrk, must move out
bcs .3
lda #$fe
.3 bit #1 remember 1/4 or 2/4
php
clc
adc MoveFrom
sta MoveFrom
jsr XRW.PhaseOn
lda #28
plp
beq .4
lsr only 1/4
.4 jsr XRW.Wait100msA Trash X
jsr XRW.AllPhaseOff
bra .1
.8 clc
.9 rts .9 rts
*--------------------------------------
XRW.PhaseOn pha
jsr .7
pla
bit #1 1,3,5,7 ?
beq .8
inc
.7 and #6 mask for 0,2,4,6
ora Slotn0
tax
lda IO.D2.Ph0On,x turn on one phase
.8 rts
*--------------------------------------
XRW.AllPhaseOff ldx Slotn0
lda IO.D2.Ph0Off,x make sure all motor phases are off.
lda IO.D2.Ph1Off,x
lda IO.D2.Ph2Off,x
lda IO.D2.Ph3Off,x
rts
*--------------------------------------
XRW.Wait100msA
.1 ldx #$11 delay 86 usec
.2 dex
bne .2
inc montimel
bne .3
inc montimeh
.3 sec
sbc #$01
bne .1
rts
*/-------------------------------------- */--------------------------------------
*\-------------------------------------- *\--------------------------------------
D2TrkRead16s D2TrkRead16s
@ -314,17 +417,18 @@ D2TrkRead16s
*\-------------------------------------- *\--------------------------------------
D2TrkWrite16s >PULLW ZPPtr1 D2TrkWrite16s >PULLW ZPPtr1
>PULLB TrkNum >PULLB TrkNum
>PULLB VolNum
>PULLB DrvSlt >PULLB DrvSlt
jsr CheckDiskII
bcs .9
>LDYAI TRACK16.LEN+1 >LDYAI TRACK16.LEN+1
>SYSCALL2 getmem >SYSCALL2 getmem
bcs .9 bcs .9
>STYA ZPPtr2 >STYA ZPPtr2
stx TrkBuf stx hTrkBuf
lda #254
sta VolNum
stz SectNum stz SectNum
@ -362,10 +466,17 @@ D2TrkWrite16s >PULLW ZPPtr1
cmp #16 cmp #16
bne .1 bne .1
lda TrkBuf lda #0
>SYSCALL2 FreeMem sta (ZPPtr2)
jsr D2WriteTrackPtr2
php
pha
lda hTrkBuf
>SYSCALL2 FreeMem
pla
plp
clc
.9 rts .9 rts
*/-------------------------------------- */--------------------------------------
*\-------------------------------------- *\--------------------------------------
@ -374,97 +485,64 @@ D2TrkReadNIB
* # D2TrkWriteNIB * # D2TrkWriteNIB
* Write a track (NIBBLE) * Write a track (NIBBLE)
* **In:** * **In:**
* PUSHW = Ptr to NIBBLE buffer (0 ended)
* PUSHB = TrackNum * 4 : 0->140+
* PUSHB = DSSS0000 * PUSHB = DSSS0000
* PUSHW = Ptr to NIBBLE buffer (0 ended)
* ## RETURN VALUE * ## RETURN VALUE
* CC : success * CC : success
* CS : A = Error * CS : A = Error
* A=0, currently starting/seeking... * A=0, currently starting/seeking...
*\-------------------------------------- *\--------------------------------------
D2TrkWriteNIB >PULLB DrvSlt D2TrkWriteNIB >PULLW ZPPtr1
>PULLB TrkNum >PULLB DrvSlt
>PULLW ZPPtr1
lda Status Lib is busy....?
beq .10
lda DrvSlt
cmp DrvSltInUse resume previous access ?
.10 lda DEVNUM last drive accessed by ProDOS
and #$F0 only DSSS
pha
jsr CheckDiskII was it a DISK II ? jsr CheckDiskII was it a DISK II ?
bcs .1 no, no need to check if spinning
pla
pha
jsr DrvSpinCheck
bcc .1 not spinning....continue
pla
sta IO.D2.DrvOff,x
lda #Status.PrvDrvOff
jmp SetStatusAndExit
.1 pla
cmp DrvSlt
* beq
lda DrvSlt
jsr DrvTrkSelect
bcs .9 bcs .9
ldy #TrkWriter.Size
* clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SetStatusAndExit
sta Status
ldy DrvSlt
sty DrvSltInUse
clc
rts
*--------------------------------------
* A=DSSS0000
* Y=target Track Number * 4
*--------------------------------------
DrvTrkSelect jsr DrvSelect
clc
rts
*--------------------------------------
* A=DSSS0000 * A=DSSS0000
*-------------------------------------- *--------------------------------------
CheckDiskII and #$70 only 0SSS CheckDiskII pha
and #$70 only 0SSS
sta Slotn0
lsr
lsr lsr
lsr lsr
lsr lsr
ora #$C0 make Cn ora #$C0 make Cn
sta .2+2 sta ZPPtr3+1
stz ZPPtr3
ldx #3 4 bytes to check ldx #3 4 bytes to check
.1 ldy DiskII.OFS,x .1 ldy DiskII.OFS,x
.2 lda $C000,y Self Modified .2 lda (ZPPtr3),y
cmp DiskII.SIG,x cmp DiskII.SIG,x
bne .9 bne .9
dex dex
bpl .1 bpl .1
clc all bytes match, Disk II pla all bytes match, Disk II
asl
lda #0
adc #IO.D2.DrvSel1
adc Slotn0
tax
lda $C000,x
* clc
rts rts
.9 lda #MLI.E.NODEV .9 pla
lda #MLI.E.NODEV
sec sec
rts rts
*-------------------------------------- *--------------------------------------
* A=DSSS0000 * A=DSSS0000
*-------------------------------------- *--------------------------------------
DrvSpinCheck jsr DrvSelect DrvSpinCheck ldy #0
ldy #0
lda IO.D2.RData,x lda IO.D2.RData,x
.1 cmp IO.D2.RData,x .1 cmp IO.D2.RData,x
@ -478,21 +556,6 @@ DrvSpinCheck jsr DrvSelect
.8 sec .8 sec
rts rts
*-------------------------------------- *--------------------------------------
* A=DSSS0000
*--------------------------------------
DrvSelect pha
and #$70
tax
pla
asl
adc #IO.D2.DrvSel1
sta .1+1
.1 lda IO.D2.DrvSel1,x Drv 1/2 select
lda IO.D2.ReadMode,x Make sure readmode
rts
*--------------------------------------
PutSyncBytePtr2 lda #$7f PutSyncBytePtr2 lda #$7f
.1 jsr PutBytePtr2 .1 jsr PutBytePtr2
@ -605,7 +668,7 @@ PutData stz Checksum
rts rts
*-------------------------------------- *--------------------------------------
PutByte44Ptr2 pha PutByte44Ptr2 pha
rol ror
jsr .1 jsr .1
pla pla
@ -618,7 +681,25 @@ PutBytePtr2 sta (ZPPtr2)
inc ZPPtr2+1 inc ZPPtr2+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
D2WriteTrackPtr2
sei
ldy #TrkWriter.Size
.1 lda TrkWriter-1,y
sta $1ff,y
dey
bne .1
lda hTrkBuf
>SYSCALL2 GetMemPtr
>STYA ZPPtr1
ldx Slotn0
jsr $200
cli
rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
@ -628,14 +709,29 @@ CS.END
*-------------------------------------- *--------------------------------------
TrkWriter .PH $200 TrkWriter .PH $200
TrkWriter.Start lda IO.D2.ReadMode,x TrkWriter.Start lda IO.D2.ReadProt,x
lda IO.D2.ReadProt,x lda IO.D2.ReadMode,x
bmi .9 Write protected bmi .9 Write protected
php ldy ZPPtr1
sei stz ZPPtr1
ldy #0 lda (ZPPtr1),y
iny
bne .10 no chance this happens because mem blocks are $FFF0 aligned....
inc ZPPtr1+1
.10 cmp #$80 if CC, it is a sync byte
ora #$80 make sure Bit7 high
sta IO.D2.WriteMode,x (5) goto write mode
ora IO.D2.WShift,x (4)
nop (2)
bra .2 (3)
.1 lda (ZPPtr1),y (5) as NibbleBuf is page aligned, no page crossing .1 lda (ZPPtr1),y (5) as NibbleBuf is page aligned, no page crossing
beq .8 (2)(3 if Z) END OF TRACK beq .8 (2)(3 if Z) END OF TRACK
@ -643,44 +739,43 @@ TrkWriter.Start lda IO.D2.ReadMode,x
cmp #$80 (2) if CC, it is a sync byte cmp #$80 (2) if CC, it is a sync byte
ora #$80 (2) make sure Bit7 high ora #$80 (2) make sure Bit7 high
sta IO.D2.WriteMode,x (5) sta IO.D2.WLoad,x (5)
ora IO.D2.WShift,x (4) keep C unmodified ora IO.D2.WShift,x (4) keep C unmodified
iny (2) iny (2)
bne .2 (2)(3 if nz) bne .2 (2)(3 if nz)
* 32us Byte,next page : 2 (beq failed)+5 +2+2+5+4+2+2 (bne failed) + 5 + 3 (bcs succeeded) = 32
inc ZPPtr1+1 (5) inc ZPPtr1+1 (5)
bcs .1 (2)(3 if cs) regular 32us byte bcs .1 (2)(3 if cs) regular 32us byte
* 32us Byte,next page : 5+2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 3 (bcs succeeded) = 32 * 40us Byte,next page : 2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 2 (bcs failed) +2+2+2+3 = 40
nop (2) Sync 40us byte : add 8 cycles nop (2) Sync 40us byte : add 8 cycles
nop (2) nop (2)
nop (2) nop (2)
bra .1 (3) bra .1 (3)
* 40us Byte,next page : 5+2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 2 (bcs failed) +2+2+2+3 = 40 * 32us Byte,same page : 5+2 (beq failed) +2+2+5+4+2+3 (bne succeeded) + 2 +2 + 3 (bcs succeeded) = 32
.2 nop (2) .2 nop (2)
nop (2) nop (2)
bcs .1 (2)(3 if cs) regular 32us byte bcs .1 (2)(3 if cs) regular 32us byte
* 32us Byte,same page : 5+2 (beq failed) +2+2+5+4+2+3 (bne succeeded) + 2 +2 + 3 (bcs succeeded) = 32 * 40us Byte,same page : 5+2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 2 (bcs failed) +2+2+2+3 = 40
nop (2) Sync 40us byte : add 8 cycles nop (2) Sync 40us byte : add 8 cycles
nop (2) nop (2)
nop (2) nop (2)
bra .1 (3) bra .1 (3)
* 40us Byte,same page : 5+2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 2 (bcs failed) +2+2+2+3 = 40
.8 pha (3) make sure 32us elapsed before switching to read mode (beq(3)+pha(3)=beq(2)+cmp(2)+ora(2)) .8 pha (3) make sure 32us elapsed before switching to read mode (beq(3)+pha(3)=beq(2)+cmp(2)+ora(2))
lda IO.D2.ReadMode,x close write mode lda IO.D2.ReadMode,x close write mode
lda IO.D2.RData,x lda IO.D2.RData,x
pla from pha (3) pla from pha (3)
plp
clc clc
rts rts
.9 lda #$2B Write Protected .9 lda #MLI.E.WRTPROT
sec sec
rts rts
@ -852,7 +947,8 @@ DiskII.OFS .HS 010305FF
DiskII.SIG .HS 20000300 DiskII.SIG .HS 20000300
*-------------------------------------- *--------------------------------------
DrvSlt .BS 1 DrvSlt .BS 1
TrkBuf .BS 1 Slotn0 .BS 1
hTrkBuf .BS 1
MoveFrom .BS 1 MoveFrom .BS 1
MoveTo .BS 1 MoveTo .BS 1
@ -862,9 +958,10 @@ SectNum .BS 1
TrkNum .BS 1 TrkNum .BS 1
VolNum .BS 1 VolNum .BS 1
*-------------------------------------- MotorOn .BS 1
Status .BS 1 montimel .BS 1
DrvSltInUse .BS 1 montimeh .BS 1
Count .BS 2 Count .BS 2
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -125,11 +125,9 @@ L5362 lda IO.D2.DrvSel1,x
plp indicate drive off by setting z-flag. plp indicate drive off by setting z-flag.
ldy #6 6x256 -> 1500ms delay before stepping. lda #6 6x256 -> 1500ms delay before stepping.
L536B jsr XRW.Wait100ms jsr XRW.Wait100msA
dey
bne L536B
php now zero flag set. php now zero flag set.
@ -872,7 +870,7 @@ XRW.Seek asl transform into 1/4 tracks
jsr XRW.PhaseOn jsr XRW.PhaseOn
lda #18 lda #28
plp plp
beq .4 beq .4
@ -904,10 +902,15 @@ XRW.PhaseOn pha
.8 rts .8 rts
XRW.AllPhaseOff ldx A2L XRW.AllPhaseOff ldx A2L
lda IO.D2.Ph0Off,x make sure all motor phases are off.
lda IO.D2.Ph1Off,x lda #4
lda IO.D2.Ph2Off,x
lda IO.D2.Ph3Off,x .1 bit IO.D2.Ph0Off,x
inx
inx
dec
bne .1
rts rts
*-------------------------------------- *--------------------------------------
.LIST ON .LIST ON