mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-05 10:39:33 +00:00
Kernel 0.94
This commit is contained in:
parent
50438e6abf
commit
014bc70ed7
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -32,12 +32,11 @@ BlkCnt .BS 2
|
||||
TrkCnt .BS 1
|
||||
Stepping .BS 1
|
||||
VolNum .BS 1
|
||||
AltBB .BS 1
|
||||
|
||||
CatSize .BS 1
|
||||
CatBlkCnt .BS 1
|
||||
|
||||
CatOptions .BS 1
|
||||
|
||||
bLL .BS 1
|
||||
bCustomBlkSize .BS 1
|
||||
bHighDensity .BS 1
|
||||
@ -280,7 +279,7 @@ CS.RUN.LL >LDA.G DIB+S.DIB.T
|
||||
sta BlkCnt,x
|
||||
iny
|
||||
inx
|
||||
cpx #5
|
||||
cpx #6
|
||||
bne .12
|
||||
|
||||
.1 >PUSHW L.MSG.LL
|
||||
@ -365,9 +364,8 @@ CS.RUN.LL.DISKII
|
||||
sec
|
||||
rts
|
||||
|
||||
.8
|
||||
* ldx #0
|
||||
* jsr CS.RUN.SeekToX
|
||||
.8 ldx #0
|
||||
jsr CS.RUN.SeekToX
|
||||
|
||||
>PUSHW L.MSG.CRLF
|
||||
>PUSHBI 0
|
||||
@ -375,9 +373,12 @@ CS.RUN.LL.DISKII
|
||||
bcs .9
|
||||
|
||||
bit bVerify
|
||||
bmi CS.RUN.LL.DISKII.V
|
||||
bpl .80
|
||||
|
||||
jmp CS.RUN.MotorOff
|
||||
jsr CS.RUN.LL.DISKII.V
|
||||
bcs .9
|
||||
|
||||
.80 jmp CS.RUN.MotorOff
|
||||
*--------------------------------------
|
||||
CS.RUN.LL.DISKII.V
|
||||
>PUSHW L.MSG.VERIFY
|
||||
@ -391,27 +392,25 @@ CS.RUN.LL.DISKII.V
|
||||
>LDYA BlkCnt
|
||||
>STYA.G IOCTL+S.IOCTL.BLKNUM
|
||||
|
||||
* >STZ.G IOCTL+S.IOCTL.BLKNUM
|
||||
* iny
|
||||
* sta (pData),y
|
||||
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
||||
iny
|
||||
sta (pData),y
|
||||
|
||||
stz CurTrack
|
||||
|
||||
lda TrkCnt
|
||||
sta Counter
|
||||
|
||||
dec
|
||||
sta CurTrack
|
||||
|
||||
.1 ldx #8
|
||||
|
||||
.2 phx
|
||||
|
||||
>DECW.G IOCTL+S.IOCTL.BLKNUM
|
||||
|
||||
>PUSHW L.MSG.VERIFY
|
||||
>PUSHB CurTrack
|
||||
>PUSHW.G IOCTL+S.IOCTL.BLKNUM
|
||||
>PUSHBI 3
|
||||
>SYSCALL PrintF
|
||||
|
||||
plx
|
||||
bcs .9
|
||||
|
||||
@ -425,13 +424,19 @@ CS.RUN.LL.DISKII.V
|
||||
plx
|
||||
bcs .9
|
||||
|
||||
|
||||
>INCW.G IOCTL+S.IOCTL.BLKNUM
|
||||
|
||||
dex
|
||||
bne .2
|
||||
|
||||
dec CurTrack
|
||||
inc CurTrack
|
||||
dec Counter
|
||||
bne .1
|
||||
|
||||
ldx #0
|
||||
jsr CS.RUN.SeekToX
|
||||
|
||||
>PUSHW L.MSG.CRLF
|
||||
>PUSHBI 0
|
||||
>SYSCALL PrintF
|
||||
@ -529,7 +534,7 @@ CS.RUN.BuildCat jsr .7
|
||||
|
||||
.7 >PUSHW BlkCnt
|
||||
>PUSHB CatSize
|
||||
>PUSHB CatOptions
|
||||
>PUSHB AltBB
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.WriteCat >PUSHW L.MSG.WRITECAT
|
||||
@ -635,28 +640,32 @@ Disk2.Default .DA 280 BlkCnt
|
||||
.DA #4 Stepping
|
||||
.DA #1 VolNum
|
||||
* .DA #140 QTrkCnt
|
||||
.BS 3
|
||||
.DA #0 AltBB
|
||||
.BS 2
|
||||
*--------------------------------------
|
||||
Disk2.X .DA 320 BlkCnt
|
||||
.DA #40 TrkCnt
|
||||
.DA #4 Stepping
|
||||
.DA #2 VolNum
|
||||
* .DA #160 QTrkCnt
|
||||
.BS 3
|
||||
.DA #0 AltBB
|
||||
.BS 2
|
||||
*--------------------------------------
|
||||
Disk2.H .DA 376 BlkCnt
|
||||
.DA #47 TrkCnt
|
||||
.DA #3 Stepping
|
||||
.DA #129 VolNum
|
||||
* .DA #141 QTrkCnt
|
||||
.BS 3
|
||||
.DA #$80 AltBB
|
||||
.BS 2
|
||||
*--------------------------------------
|
||||
Disk2.HX .DA 432 BlkCnt
|
||||
.DA #54 TrkCnt
|
||||
.DA #3 Stepping
|
||||
.DA #130 VolNum
|
||||
* .DA #162 QTrkCnt
|
||||
.BS 3
|
||||
.DA #$80 AltBB
|
||||
.BS 2
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
|
@ -264,8 +264,8 @@ NSC.Dump >PUSHW L.MSG.READ.OK1
|
||||
|
||||
.3 >SYSCALL PutS
|
||||
|
||||
>PUSHW L.MSG.READ.OK3
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG.READ.OK3
|
||||
>SYSCALL PrintF
|
||||
|
||||
lda DS1216E.DATA
|
||||
@ -305,10 +305,10 @@ NSC.Dump >PUSHW L.MSG.READ.OK1
|
||||
lda DS1216E.DATA+6
|
||||
jsr PrintBCD
|
||||
|
||||
* lda #'.'
|
||||
* >SYSCALL PutChar
|
||||
* lda DS1216E.DATA+7
|
||||
* jsr PrintBCD
|
||||
lda #'.'
|
||||
>SYSCALL PutChar
|
||||
lda DS1216E.DATA+7
|
||||
jsr PrintBCD
|
||||
|
||||
>PUSHW L.MSG.CRLF
|
||||
>PUSHBI 0
|
||||
|
@ -189,11 +189,10 @@ Counter .EQ ZPDRV+4
|
||||
Offset .EQ ZPDRV+6
|
||||
RXTX.Size .EQ ZPDRV+8
|
||||
BUF.Size .EQ ZPDRV+10
|
||||
RX.IP .EQ ZPDRV+12
|
||||
*Sn .EQ ZPDRV+16
|
||||
Sn.IO .EQ ZPDRV+17
|
||||
Sn.BASE .EQ ZPDRV+18
|
||||
Sn.MASK .EQ ZPDRV+19
|
||||
RX.IP .EQ ZPDRV+12 (4)
|
||||
Sn.IO .EQ ZPDRV+16
|
||||
Sn.BASE .EQ ZPDRV+17
|
||||
Sn.MASK .EQ ZPDRV+18
|
||||
*--------------------------------------
|
||||
DRV.CS.START cld
|
||||
jmp (.1,x)
|
||||
@ -319,19 +318,27 @@ OPEN.I jsr CLOSE
|
||||
bne .4
|
||||
|
||||
>AR.SELECT RMSR
|
||||
lda #%00100101 ICMP=2k,UDP=2k,TCP=4k,0k
|
||||
lda #%01010101 RAW=2k,ICMP=2k,UDP=2k,TCP=2k
|
||||
sta W5100.DR,x ...for Socket RX Buffers
|
||||
sta W5100.DR,x ...for Socket TX Buffers
|
||||
|
||||
lda /W5100.AR.S0.MR
|
||||
>AR.SELECT S0.MR
|
||||
lda #W5100.AR.Sn.MR.MACRAW+W5100.AR.Sn.MR.MF
|
||||
sta W5100.DR,x
|
||||
|
||||
>AR.SELECT S0.CR
|
||||
lda #W5100.AR.Sn.CR.OPEN
|
||||
sta W5100.DR,x
|
||||
|
||||
lda /W5100.AR.S1.MR
|
||||
sta Sn.IO
|
||||
|
||||
ldy #S.IP.PROTOCOL.UDP
|
||||
ldy #S.IP.PROTOCOL.ICMP
|
||||
jsr OPEN.SnY
|
||||
|
||||
inc Sn.IO
|
||||
|
||||
ldy #S.IP.PROTOCOL.ICMP
|
||||
ldy #S.IP.PROTOCOL.UDP
|
||||
jsr OPEN.SnY
|
||||
|
||||
inc Sn.IO
|
||||
@ -393,29 +400,35 @@ READ php
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
ldy #Sn.cnt-1
|
||||
|
||||
.20 lda Sn.IO.BASE,y
|
||||
lda /W5100.AR.S1.MR
|
||||
sta Sn.IO
|
||||
|
||||
sta W5100.AR,x
|
||||
lda #W5100.AR.S0.RX.RSR
|
||||
sta W5100.AR+1,x
|
||||
|
||||
lda W5100.DR,x get the received size HI
|
||||
ora W5100.DR,x LO
|
||||
bne .1
|
||||
bne READ.ICMP
|
||||
|
||||
dey
|
||||
bpl .20
|
||||
lda /W5100.AR.S0.RX.RSR
|
||||
sta Sn.IO
|
||||
sta W5100.AR,x
|
||||
lda #W5100.AR.S0.RX.RSR
|
||||
sta W5100.AR+1,x
|
||||
|
||||
jmp READWRITE.NODATA
|
||||
lda W5100.DR,x get the received size HI
|
||||
ora W5100.DR,x LO
|
||||
beq .9
|
||||
|
||||
jmp READ.RAW
|
||||
|
||||
.9 jmp READWRITE.NODATA
|
||||
|
||||
.1 lda Sn.IP.PROTOCOL,y
|
||||
READ.ICMP lda #S.IP.PROTOCOL.ICMP
|
||||
sta FRM.HDR.PROTO
|
||||
lda Sn.RX.BASE,y
|
||||
lda Sn.RX.BASE+1
|
||||
sta Sn.BASE
|
||||
lda Sn.RXTX.MASK,y
|
||||
lda Sn.RXTX.MASK+1
|
||||
sta Sn.MASK
|
||||
|
||||
>AR.Sn.SELECT S0.RX.RD
|
||||
@ -561,6 +574,96 @@ READ php
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
READ.RAW >AR.SELECT S0.RX.RD
|
||||
lda W5100.DR,x get the received ptr HI
|
||||
sta offset+1
|
||||
ldy W5100.DR,x get the received ptr LO
|
||||
sty offset
|
||||
|
||||
and /$7FF
|
||||
ora /RX.BASE
|
||||
sta W5100.AR,x
|
||||
tya
|
||||
sta W5100.AR+1,x
|
||||
|
||||
lda W5100.DR,x get RX.Size HI (Frame size + 2)
|
||||
sta RXTX.Size+1
|
||||
lda W5100.DR,x get RX.Size LO
|
||||
sta RXTX.Size
|
||||
|
||||
ldy #S.IOCTL.BYTECNT
|
||||
sec
|
||||
sbc #2 MACRAW:strip 2 bytes Header from Size
|
||||
sta (ZPIOCTL),y
|
||||
sta BUF.Size
|
||||
eor #$ff
|
||||
sta Counter
|
||||
|
||||
iny
|
||||
lda RXTX.Size+1
|
||||
sbc #0
|
||||
sta (ZPIOCTL),y
|
||||
sta BUF.Size+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
>LDYA BUF.Size
|
||||
>SYSCALL2 getmem
|
||||
bcc .14
|
||||
|
||||
jmp READWRITE.9
|
||||
|
||||
.14 >STYA ZPBufPtr
|
||||
phx
|
||||
|
||||
phy
|
||||
ldy #S.IOCTL.BUFPTR+1
|
||||
sta (ZPIOCTL),y
|
||||
dey
|
||||
pla
|
||||
sta (ZPIOCTL),y
|
||||
|
||||
ldy #0
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
.2 inc Counter
|
||||
bne .3
|
||||
|
||||
inc Counter+1
|
||||
beq .4
|
||||
|
||||
.3 lda W5100.DR,x
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc ZPBufPtr+1
|
||||
bra .2
|
||||
|
||||
.4 >AR.SELECT S0.RX.RD
|
||||
|
||||
lda Offset
|
||||
clc
|
||||
adc RXTX.Size
|
||||
pha save LO
|
||||
|
||||
lda Offset+1
|
||||
adc RXTX.Size+1
|
||||
sta W5100.DR,x write HI
|
||||
pla
|
||||
sta W5100.DR,x write LO
|
||||
|
||||
>AR.SELECT S0.CR
|
||||
lda #W5100.AR.Sn.CR.RCVD
|
||||
sta W5100.DR,x
|
||||
|
||||
pla hMem
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
READWRITE.NODATA
|
||||
lda #E.NODATA
|
||||
|
||||
@ -600,7 +703,7 @@ WRITE php
|
||||
.10 cmp Sn.IP.PROTOCOL,x
|
||||
beq .11
|
||||
dex
|
||||
bpl .10
|
||||
bne .10
|
||||
|
||||
plp
|
||||
lda #MLI.E.IO
|
||||
@ -689,14 +792,12 @@ GET.IOCTLBUFPTR >STYA ZPIOCTL
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.CS.END
|
||||
Sn.cnt .EQ 3
|
||||
.LIST ON
|
||||
Sn.IP.PROTOCOL .DA #S.IP.PROTOCOL.UDP,#S.IP.PROTOCOL.ICMP,#S.IP.PROTOCOL.TCP
|
||||
Sn.IO.BASE .DA /W5100.AR.S0.MR,/W5100.AR.S1.MR,/W5100.AR.S2.MR
|
||||
Sn.TX.BASE .DA /TX.BASE,/TX.BASE+$800,/TX.BASE+$1000
|
||||
Sn.RX.BASE .DA /RX.BASE,/RX.BASE+$800,/RX.BASE+$1000
|
||||
Sn.RXTX.MASK .DA /$7FF,/$7FF,/$FFF 2k-1,2k-1,4k-1
|
||||
.LIST OFF
|
||||
Sn.cnt .EQ 4
|
||||
Sn.IP.PROTOCOL .DA #0,#S.IP.PROTOCOL.ICMP,#S.IP.PROTOCOL.UDP,#S.IP.PROTOCOL.TCP
|
||||
Sn.IO.BASE .DA /W5100.AR.S0.MR,/W5100.AR.S1.MR,/W5100.AR.S2.MR,/W5100.AR.S3.MR
|
||||
Sn.TX.BASE .DA /TX.BASE,/TX.BASE+$800,/TX.BASE+$1000,/TX.BASE+$1800
|
||||
Sn.RX.BASE .DA /RX.BASE,/RX.BASE+$800,/RX.BASE+$1000,/RX.BASE+$1800
|
||||
Sn.RXTX.MASK .DA /$7FF,/$7FF,/$7FF,/$7FF
|
||||
DEVSLOTx0 .BS 1
|
||||
*--------------------------------------
|
||||
DIB .DA #0
|
||||
|
@ -107,20 +107,19 @@ mvboot lda (dent),y
|
||||
cpy #$eb have we moved enough?
|
||||
bne mvboot
|
||||
|
||||
ldx #mods.cnt-1 now modify code to handle errors.
|
||||
ldx #mods.cnt now modify code to handle errors.
|
||||
|
||||
modboot ldy mods,x
|
||||
lda chgs,x
|
||||
sta zzstart,y
|
||||
dex
|
||||
bpl modboot
|
||||
modboot ldy mods-1,x
|
||||
lda chgs-1,x
|
||||
sta zzstart,y
|
||||
|
||||
ldx #7
|
||||
cpx #8
|
||||
bcs .1
|
||||
|
||||
modboot2 lda endcode-1,x
|
||||
lda endcode-1,x
|
||||
sta zzzend-1,x
|
||||
dex
|
||||
bne modboot2
|
||||
.1 dex
|
||||
bne modboot
|
||||
|
||||
lda #BB.Hdr
|
||||
sta BB.HdrPtr
|
||||
@ -354,42 +353,50 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||
.5 lda IO.D2.Ph0On,x
|
||||
ply
|
||||
|
||||
lda #184
|
||||
lda #114
|
||||
jsr BB.Wait100usecA
|
||||
bra .1
|
||||
|
||||
* Last QTrack
|
||||
|
||||
.6 lda BB.TargetQTrack
|
||||
and #6
|
||||
ora slotz
|
||||
.6 bcs .60
|
||||
|
||||
tya
|
||||
inc
|
||||
inc
|
||||
bra .7
|
||||
|
||||
.60 tya
|
||||
* sec
|
||||
adc #5
|
||||
|
||||
.7 and #$f6
|
||||
tax
|
||||
inc
|
||||
inc
|
||||
and #$F7
|
||||
tay
|
||||
lda IO.D2.Ph0On,x
|
||||
lda IO.D2.Ph0On,y
|
||||
|
||||
phx
|
||||
lda #104
|
||||
jsr BB.Wait100usecA
|
||||
|
||||
.7 phx
|
||||
jsr BB.Wait25600usec
|
||||
plx
|
||||
|
||||
plx
|
||||
lda IO.D2.Ph0Off,x
|
||||
lda IO.D2.Ph0Off,y
|
||||
.80 lda IO.D2.Ph0Off,y
|
||||
bra BB.Read
|
||||
|
||||
.8 tya
|
||||
beq BB.Read
|
||||
|
||||
tax
|
||||
bra .7
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
bra .80
|
||||
*--------------------------------------
|
||||
BB.Wait25600usec
|
||||
lda #0
|
||||
BB.Wait100usecA sec (6) JSR (2)
|
||||
|
||||
.1 ldx #18 (2)
|
||||
.1 ldx #19 (2)
|
||||
|
||||
.2 dex (2) delay 86 usec.
|
||||
bne .2 (2+) 2 + 5x16 + 2 + 2
|
||||
|
@ -31,6 +31,17 @@ D2Recalibrate >PULLB DrvSlt
|
||||
|
||||
jsr D2MoveHead.1
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
ldx Slotn0
|
||||
lda IO.D2.Ph0On,x
|
||||
jsr D2.Wait25600usec
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
ldx Slotn0
|
||||
lda IO.D2.Ph0Off,x
|
||||
jsr D2.Wait25600usec
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
clc
|
||||
@ -59,7 +70,7 @@ D2MoveHead.1 ldy #0
|
||||
* Current < Target, must move in
|
||||
|
||||
cmp #2
|
||||
bcc .5 one QT remaining
|
||||
bcc .6 one QT remaining
|
||||
|
||||
lda MoveFrom 2 or more
|
||||
and #$FE from QT1 or QT3
|
||||
@ -70,7 +81,7 @@ D2MoveHead.1 ldy #0
|
||||
* Current > Target, must move out
|
||||
|
||||
.2 cmp #$FF
|
||||
beq .5 one QT remaining
|
||||
beq .6 one QT remaining
|
||||
|
||||
lda MoveFrom
|
||||
bit #1 from QT1 or QT3
|
||||
@ -80,20 +91,33 @@ D2MoveHead.1 ldy #0
|
||||
.3 dec
|
||||
|
||||
.4 sta MoveFrom
|
||||
jsr D2.PhaseOn
|
||||
|
||||
lda #194
|
||||
and #6
|
||||
ora Slotn0
|
||||
tax
|
||||
pha
|
||||
tya
|
||||
beq .5
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
|
||||
.5 lda IO.D2.Ph0On,x
|
||||
ply
|
||||
|
||||
lda #54
|
||||
jsr D2.Wait100usecA
|
||||
bra .1
|
||||
|
||||
* Last QTrack
|
||||
|
||||
.5 bcs .6
|
||||
.6 bcs .60
|
||||
|
||||
tya
|
||||
inc
|
||||
inc
|
||||
bra .7
|
||||
|
||||
.6 tya
|
||||
.60 tya
|
||||
clc
|
||||
adc #6
|
||||
|
||||
@ -102,10 +126,10 @@ D2MoveHead.1 ldy #0
|
||||
lda IO.D2.Ph0On,x
|
||||
|
||||
phx
|
||||
lda #194
|
||||
lda #154
|
||||
jsr D2.Wait100usecA
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
* jsr D2.Wait25600usec
|
||||
|
||||
plx
|
||||
lda IO.D2.Ph0Off,x
|
||||
@ -113,25 +137,12 @@ D2MoveHead.1 ldy #0
|
||||
rts
|
||||
|
||||
.8 tya
|
||||
beq D2.PhaseOn.RTS
|
||||
beq .9
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
D2.PhaseOn and #6
|
||||
ora Slotn0
|
||||
tax
|
||||
pha
|
||||
tya
|
||||
beq .1
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
|
||||
.1 lda IO.D2.Ph0On,x
|
||||
ply
|
||||
D2.PhaseOn.RTS rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
D2.Wait25600usec
|
||||
lda #0
|
||||
|
@ -141,14 +141,19 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
>PULLW VolDirHdr.TB
|
||||
|
||||
ldx #3
|
||||
|
||||
.1 lda DATELO,x
|
||||
sta VolDirHdr.CT,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
* Blk 0 : ProDOS Boot Code
|
||||
>LDYA L.ProDOS.Boot
|
||||
bit VolDirHdr.Options
|
||||
bpl .11
|
||||
>LDYA L.ProDOSFX.Boot
|
||||
>STYA ZPPtr3
|
||||
|
||||
.11 >STYA ZPPtr3
|
||||
|
||||
ldy #0
|
||||
ldx #2 2 pages
|
||||
@ -162,10 +167,12 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
inc ZPPtr1+1
|
||||
dex
|
||||
bne .2
|
||||
|
||||
* Blk 1 : (SOS boot code)
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr1+1
|
||||
|
||||
* Blk 2 : First Directory Block
|
||||
|
||||
* ldy #0
|
||||
@ -223,13 +230,17 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
ora #$F0 Volume Directory Header
|
||||
sta VolDirHdr.Name
|
||||
ldy #VolDirHdr.size-1
|
||||
|
||||
.4 lda VolDirHdr,y
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
bpl .4
|
||||
|
||||
* Blk 3...n : additional Directory Blocks
|
||||
|
||||
lda #3 Actual Block ID
|
||||
ldy #2 next blk ptr
|
||||
|
||||
.41 inc ZPPtr1+1
|
||||
inc ZPPtr1+1 Next Block
|
||||
dex
|
||||
@ -247,9 +258,12 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
|
||||
.42 sta (ZPPtr1),y
|
||||
bra .41
|
||||
|
||||
* BitMap Blocks : 0=Used 1=free
|
||||
|
||||
.40 jsr GetProDOSCatSize.I X=blk used for boot/dir/bitmap
|
||||
.40
|
||||
BuildProDOSCat.BM
|
||||
jsr GetProDOSCatSize.I X=blk used for boot/dir/bitmap
|
||||
|
||||
lda VolDirHdr.TB
|
||||
eor #$ff
|
||||
@ -272,7 +286,8 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
.6 lsr
|
||||
bne .5
|
||||
iny
|
||||
bne .50
|
||||
bne .50
|
||||
|
||||
.7 lda #%10000000
|
||||
|
||||
.8 inc Count
|
||||
|
@ -175,10 +175,10 @@ L539D jsr XRW.ReadAddr read next address field.
|
||||
bcc L53BE branch if read ok.
|
||||
|
||||
L53A4 dec XRW.RetryCnt one less chance.
|
||||
bpl L539D branch to retry.
|
||||
bne L539D branch to retry.
|
||||
|
||||
XRW.Recalibrate lda #MLI.E.IO anticipate a bad drive error.
|
||||
dec XRW.RecalibrateCnt can only recalibrate once.
|
||||
dec XRW.RecalibrateCnt
|
||||
bmi hndlerr
|
||||
|
||||
lda #54
|
||||
@ -188,28 +188,25 @@ XRW.Recalibrate lda #MLI.E.IO anticipate a bad drive error.
|
||||
jsr XRW.Seek
|
||||
bra L5398
|
||||
|
||||
* have now read an address field. make sure this is
|
||||
* the correct track, sector and volume.
|
||||
|
||||
L53BE jsr XRW.DEBUG
|
||||
|
||||
lda XRW.AddrField.T
|
||||
L53BE lda XRW.AddrField.T
|
||||
cmp XRW.ReqTrack
|
||||
beq L53D5 ok
|
||||
|
||||
lda XRW.AddrField.V
|
||||
jsr XRW.DEBUG
|
||||
|
||||
ldy XRW.UnitIndex
|
||||
|
||||
lda XRW.AddrField.V
|
||||
cmp XRW.D2VolNum-1,y
|
||||
bne XRW.Recalibrate
|
||||
|
||||
lda XRW.AddrField.T
|
||||
sta XRW.D2Trk-1,y set the slot dependent track location
|
||||
sta XRW.D2Trk-1,y
|
||||
|
||||
lda XRW.ReqTrack
|
||||
|
||||
jsr XRW.Seek
|
||||
bra L5398
|
||||
|
||||
*--------------------------------------
|
||||
L53D5 lda XRW.AddrField.V
|
||||
ldy XRW.UnitIndex
|
||||
sta XRW.D2VolNum-1,y
|
||||
@ -761,7 +758,7 @@ XRW.Seek pha save target track
|
||||
* Current < Target, must move in
|
||||
|
||||
cmp #2
|
||||
bcc .5 one QT remaining
|
||||
bcc .6 one QT remaining
|
||||
|
||||
lda XRW.CurrentQTrack
|
||||
and #$FE from QT1 or QT3
|
||||
@ -772,7 +769,7 @@ XRW.Seek pha save target track
|
||||
* Current > Target, must move out
|
||||
|
||||
.2 cmp #$FF
|
||||
beq .5 one QT remaining
|
||||
beq .6 one QT remaining
|
||||
|
||||
lda XRW.CurrentQTrack
|
||||
bit #1 from QT1 or QT3
|
||||
@ -782,20 +779,31 @@ XRW.Seek pha save target track
|
||||
.3 dec
|
||||
|
||||
.4 sta XRW.CurrentQTrack
|
||||
jsr XRW.PhaseOn
|
||||
|
||||
and #6
|
||||
ora A2L
|
||||
tax
|
||||
pha
|
||||
tya
|
||||
beq .5
|
||||
|
||||
lda #194
|
||||
lda IO.D2.Ph0Off,y
|
||||
|
||||
.5 lda IO.D2.Ph0On,x
|
||||
ply
|
||||
|
||||
lda #94
|
||||
jsr XRW.Wait100usecA
|
||||
bra .1
|
||||
|
||||
.5 bcs .6
|
||||
.6 bcs .60
|
||||
|
||||
tya
|
||||
inc
|
||||
inc
|
||||
bra .7
|
||||
|
||||
.6 tya
|
||||
.60 tya
|
||||
clc
|
||||
adc #6
|
||||
|
||||
@ -804,11 +812,11 @@ XRW.Seek pha save target track
|
||||
lda IO.D2.Ph0On,x
|
||||
|
||||
phx
|
||||
lda #194
|
||||
lda #154
|
||||
jsr XRW.Wait100usecA
|
||||
|
||||
lda #0 wait 25.6 ms
|
||||
jsr XRW.Wait100usecA
|
||||
* lda #0 wait 25.6 ms
|
||||
* jsr XRW.Wait100usecA
|
||||
|
||||
plx
|
||||
lda IO.D2.Ph0Off,x
|
||||
@ -816,28 +824,13 @@ XRW.Seek pha save target track
|
||||
rts
|
||||
|
||||
.8 tya
|
||||
beq XRW.PhaseOn.RTS
|
||||
beq .9
|
||||
|
||||
lda #0 wait 25.6 ms
|
||||
jsr XRW.Wait100usecA
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
* A = QTrack
|
||||
*--------------------------------------
|
||||
XRW.PhaseOn and #6
|
||||
ora A2L
|
||||
tax
|
||||
pha
|
||||
tya
|
||||
beq .1
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
|
||||
.1 lda IO.D2.Ph0On,x
|
||||
ply
|
||||
XRW.PhaseOn.RTS rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
XRW.Trk2Qtrk asl x2
|
||||
sta .1+1
|
||||
@ -929,51 +922,40 @@ L56E6 lda IO.D2.RData,x first bit-slip nibl
|
||||
rderr sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
XRW.DEBUG lda XRW.AddrField.T
|
||||
XRW.DEBUG phx
|
||||
|
||||
ldx #$20
|
||||
lda XRW.AddrField.V
|
||||
jsr .6
|
||||
|
||||
lda XRW.AddrField.T
|
||||
jsr .6
|
||||
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
jsr .7
|
||||
sta $724
|
||||
|
||||
pla
|
||||
jsr .7
|
||||
sta $725
|
||||
inx
|
||||
|
||||
lda XRW.ReqTrack
|
||||
pha
|
||||
jsr .6
|
||||
|
||||
plx
|
||||
rts
|
||||
|
||||
.6 pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
jsr .7
|
||||
sta $726
|
||||
|
||||
pla
|
||||
jsr .7
|
||||
sta $727
|
||||
|
||||
lda XRW.AddrField.T
|
||||
cmp XRW.ReqTrack
|
||||
bne .6
|
||||
|
||||
lda #$A0
|
||||
sta $723
|
||||
rts
|
||||
|
||||
.6 lda #'!'
|
||||
sta $723
|
||||
rts
|
||||
|
||||
.7 and #$0F
|
||||
ora #$B0
|
||||
and #$0F
|
||||
|
||||
.7 ora #$B0
|
||||
cmp #"9"+1
|
||||
bcc .9
|
||||
bcc .8
|
||||
adc #6
|
||||
.9 rts
|
||||
.8 sta $700,x
|
||||
inx
|
||||
rts
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
XRW.FREE .EQ $D540-*
|
||||
|
@ -6,7 +6,7 @@ NEW
|
||||
.TF sbin/networkd
|
||||
*--------------------------------------
|
||||
LIB.MAX .EQ 4
|
||||
DBG .EQ 0
|
||||
DBG .EQ 1
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
@ -248,6 +248,12 @@ CS.RUN >PUSHB DevID
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA pBuf
|
||||
|
||||
lda (pBuf)
|
||||
cmp #$ff
|
||||
beq .8
|
||||
cmp #1
|
||||
beq .8
|
||||
|
||||
>PUSHW L.MSG.DBG
|
||||
|
||||
ldy #0
|
||||
@ -279,7 +285,7 @@ CS.RUN >PUSHB DevID
|
||||
|
||||
.2 lda hFrameIn
|
||||
>SYSCALL FreeMem
|
||||
bra CS.RUN
|
||||
jmp CS.RUN
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
Loading…
x
Reference in New Issue
Block a user