mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-05 07:32:53 +00:00
Kernel version 0.8 : KM.VSDRIVE, work in progress
This commit is contained in:
parent
63e97cd7d5
commit
a90fd1ffa9
@ -217,7 +217,7 @@ ProDOS.PATCH .PH DRV.EntryPoint
|
|||||||
* OP = 3 : Read drv1
|
* OP = 3 : Read drv1
|
||||||
* OP = 4 : Write drv2
|
* OP = 4 : Write drv2
|
||||||
* OP = 5 : Read drv2
|
* OP = 5 : Read drv2
|
||||||
* CMD = $CE+OP+BLKLO+BLKHI+CHKSUM
|
* CMD = $C5+OP+BLKLO+BLKHI+CHKSUM
|
||||||
* DO NOT trash DRV.COMMAND...DRV.BLKNUM as ProDOS
|
* DO NOT trash DRV.COMMAND...DRV.BLKNUM as ProDOS
|
||||||
* reuses them after Block operation
|
* reuses them after Block operation
|
||||||
* A1,A2 are used by Disk II Driver,
|
* A1,A2 are used by Disk II Driver,
|
||||||
@ -236,14 +236,13 @@ DRV .EQ *
|
|||||||
.PH $D001 Main LC Bnk 2 $D001->$DFFF
|
.PH $D001 Main LC Bnk 2 $D001->$DFFF
|
||||||
cld
|
cld
|
||||||
DRV.Slotn0 ldx #$ff Self Modified
|
DRV.Slotn0 ldx #$ff Self Modified
|
||||||
lda DRV.COMMAND
|
lda DRV.COMMAND S=0,R=1,W=2,F=3
|
||||||
beq .8 Status
|
beq .8 Status
|
||||||
cmp #3
|
cmp #3
|
||||||
beq .81 Format ....
|
beq .81 Format ....
|
||||||
bcs .9 more....IO error
|
bcs .9 more....IO error
|
||||||
|
|
||||||
eor #$ff exchange W=1,R=2
|
ora #2 W=2,R=3
|
||||||
inc W=2,R=3
|
|
||||||
ldx DRV.UNITNUM
|
ldx DRV.UNITNUM
|
||||||
bpl .1
|
bpl .1
|
||||||
adc #2 CC from bcs .9
|
adc #2 CC from bcs .9
|
||||||
@ -264,49 +263,46 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
|
|||||||
eor #VS.CMD
|
eor #VS.CMD
|
||||||
eor DRV.BLKNUM
|
eor DRV.BLKNUM
|
||||||
eor DRV.BLKNUM+1
|
eor DRV.BLKNUM+1
|
||||||
|
sta DRV.CmdBuf.Sum Compute & store CheckSum
|
||||||
|
|
||||||
ldy DRV.BLKNUM
|
lda DRV.BLKNUM
|
||||||
sty DRV.CmdBuf.Blk
|
sta DRV.CmdBuf.BlkLo
|
||||||
|
|
||||||
ldy DRV.BLKNUM+1
|
lda DRV.BLKNUM+1
|
||||||
sty DRV.CmdBuf.Blk+1
|
sta DRV.CmdBuf.BlkHi
|
||||||
|
|
||||||
sta DRV.CmdBuf.Sum
|
|
||||||
|
|
||||||
lda DRV.BUFF
|
lda DRV.BUFF
|
||||||
sta DRV.A2L
|
sta DRV.A1L
|
||||||
lda DRV.BUFF+1
|
lda DRV.BUFF+1
|
||||||
inc
|
inc
|
||||||
sta DRV.A2H
|
sta DRV.A1H
|
||||||
|
|
||||||
* send CMD+CS
|
* send CMD+CS
|
||||||
ldy #0
|
ldy #4 Send 5 bytes including Sum
|
||||||
|
|
||||||
.1 lda DRV.CmdBuf,y
|
.1 lda DRV.CmdBuf.Sum,y
|
||||||
jsr DRV.SSCSend
|
jsr DRV.SSCSend
|
||||||
bcs .9
|
bcs .9
|
||||||
|
dey
|
||||||
iny
|
bpl .1
|
||||||
cpy #5
|
|
||||||
bne .1
|
|
||||||
* read back CMD
|
* read back CMD
|
||||||
ldy #0
|
ldy #3 Read Back and check 4 bytes
|
||||||
|
|
||||||
.2 jsr DRV.SSCGet
|
.2 jsr DRV.SSCGet
|
||||||
bcs .9
|
bcs .9
|
||||||
cmp DRV.CmdBuf,y
|
cmp DRV.CmdBuf.BlkHi,y
|
||||||
bne .9
|
bne .9
|
||||||
iny
|
dey
|
||||||
cpy #4
|
bpl .2
|
||||||
bne .2
|
|
||||||
|
|
||||||
* Get ProDOS Date/time send from server if READ (3 or 5)
|
* Get ProDOS Date/time send from server if READ (3 or 5)
|
||||||
|
|
||||||
lda DRV.COMMAND
|
lda DRV.COMMAND
|
||||||
cmp #1
|
dec 1-1=0 if read
|
||||||
bne .6
|
bne .6 go write
|
||||||
|
|
||||||
* Read block
|
* Read block : Discard ProDOS time recieved from Server (4 bytes)
|
||||||
|
|
||||||
ldy #4 Read 4 bytes
|
ldy #4 Read 4 bytes
|
||||||
|
|
||||||
.3 jsr DRV.SSCGet
|
.3 jsr DRV.SSCGet
|
||||||
@ -317,14 +313,14 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
|
|||||||
dey
|
dey
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
* recieve Header CS and check
|
* recieve Header Sum and check
|
||||||
|
|
||||||
jsr DRV.SSCGet
|
jsr DRV.SSCGet
|
||||||
bcs .9
|
bcs .9
|
||||||
cmp DRV.CmdBuf.Sum
|
eor DRV.CmdBuf.Sum
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #0
|
* tay Y=0 from dey/bne
|
||||||
|
|
||||||
.4 jsr DRV.SSCGet
|
.4 jsr DRV.SSCGet
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -334,7 +330,7 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
|
|||||||
|
|
||||||
.5 jsr DRV.SSCGet
|
.5 jsr DRV.SSCGet
|
||||||
bcs .9
|
bcs .9
|
||||||
sta (DRV.A2L),y
|
sta (DRV.A1L),y
|
||||||
iny
|
iny
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
@ -343,10 +339,9 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
|
|||||||
jsr DRV.SSCGet
|
jsr DRV.SSCGet
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp DRV.CmdBuf.Sum
|
eor DRV.CmdBuf.Sum
|
||||||
bne .9
|
bne .9
|
||||||
clc
|
rts A=0,CC from bcs .9
|
||||||
rts
|
|
||||||
|
|
||||||
* Write Block
|
* Write Block
|
||||||
.6 ldy #0
|
.6 ldy #0
|
||||||
@ -357,26 +352,38 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
|
|||||||
iny
|
iny
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
.8 lda (DRV.A2L),y
|
.8 lda (DRV.A1L),y
|
||||||
jsr DRV.SSCSend
|
jsr DRV.SSCSend
|
||||||
bcs .9
|
bcs .9
|
||||||
iny
|
iny
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
jsr DRV.BufCheckSum
|
jsr DRV.BufCheckSum
|
||||||
|
sta DRV.CmdBuf.Sum Save Block CheckSum for comparing later
|
||||||
jsr DRV.SSCSend
|
jsr DRV.SSCSend
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
ldy #4 Read 5 bytes (echo from server)
|
||||||
|
|
||||||
|
.81 jsr DRV.SSCGet
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
eor DRV.CmdBuf.Sum,y Check 5 bytes (including block Sum)
|
||||||
|
bne .9
|
||||||
|
dey
|
||||||
|
bpl .81
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9
|
.9
|
||||||
DRV.CS sec
|
DRV.CS sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CmdBuf .DA #VS.CMD
|
DRV.CmdBuf.Sum .BS 1 Reverse order for dey
|
||||||
|
DRV.CmdBuf.BlkHi .BS 1
|
||||||
|
DRV.CmdBuf.BlkLo .BS 1
|
||||||
DRV.CmdBuf.Cmd .BS 1
|
DRV.CmdBuf.Cmd .BS 1
|
||||||
DRV.CmdBuf.Blk .BS 2
|
DRV.CmdBuf.Env .DA #VS.CMD
|
||||||
DRV.CmdBuf.Sum .BS 1
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.BufCheckSum lda #0
|
DRV.BufCheckSum lda #0
|
||||||
tay
|
tay
|
||||||
|
Loading…
x
Reference in New Issue
Block a user