Kernel version 0.8 : KM.VSDRIVE, work in progress

This commit is contained in:
Rémy GIBERT 2016-12-15 17:49:33 +01:00
parent 8f5c5f448b
commit 63e97cd7d5

View File

@ -97,6 +97,17 @@ SSC.Detect stz TmpPtr1
asl asl
asl asl
asl asl
tax
stz SSC.RESET,x
lda #SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
sta SSC.CTL,x
lda #SSC.CMD.RIRQDIS
sta SSC.CMD,x
txa
clc clc
rts rts
@ -235,7 +246,7 @@ DRV.Slotn0 ldx #$ff Self Modified
inc W=2,R=3 inc W=2,R=3
ldx DRV.UNITNUM ldx DRV.UNITNUM
bpl .1 bpl .1
adc #2 adc #2 CC from bcs .9
.1 jsr DRV.DO.CMD .1 jsr DRV.DO.CMD
bcs .9 bcs .9
@ -251,16 +262,15 @@ DRV.Slotn0 ldx #$ff Self Modified
*-------------------------------------- *--------------------------------------
DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
eor #VS.CMD eor #VS.CMD
sta DRV.CmdBuf.Sum eor DRV.BLKNUM
eor DRV.BLKNUM+1
ldy DRV.BLKNUM
sty DRV.CmdBuf.Blk
lda DRV.BLKNUM ldy DRV.BLKNUM+1
sta DRV.CmdBuf.Blk sty DRV.CmdBuf.Blk+1
eor DRV.CmdBuf.Sum
sta DRV.CmdBuf.Sum
lda DRV.BLKNUM+1
sta DRV.CmdBuf.Blk+1
eor DRV.CmdBuf.Sum
sta DRV.CmdBuf.Sum sta DRV.CmdBuf.Sum
lda DRV.BUFF lda DRV.BUFF
@ -268,14 +278,7 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
lda DRV.BUFF+1 lda DRV.BUFF+1
inc inc
sta DRV.A2H sta DRV.A2H
stz SSC.RESET,x
lda #SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
sta SSC.CTL,x
lda #SSC.CMD.RIRQDIS
sta SSC.CMD,x
* send CMD+CS * send CMD+CS
ldy #0 ldy #0
@ -303,16 +306,15 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
cmp #1 cmp #1
bne .6 bne .6
* Read block * Read block
iny Skip Checksum ldy #4 Read 4 bytes
.3 jsr DRV.SSCGet .3 jsr DRV.SSCGet
bcs .9 bcs .9
sta DRV.CmdBuf,y
eor DRV.CmdBuf.Sum eor DRV.CmdBuf.Sum
sta DRV.CmdBuf.Sum sta DRV.CmdBuf.Sum
iny dey
cpy #9
bne .3 bne .3
* recieve Header CS and check * recieve Header CS and check
@ -323,6 +325,7 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
bne .9 bne .9
ldy #0 ldy #0
.4 jsr DRV.SSCGet .4 jsr DRV.SSCGet
bcs .9 bcs .9
sta (DRV.BUFF),y sta (DRV.BUFF),y
@ -346,13 +349,28 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd
rts rts
* Write Block * Write Block
.6 .6 ldy #0
.7 lda (DRV.BUFF),y
jsr DRV.SSCSend
bcs .9
iny
bne .7
.8 lda (DRV.A2L),y
jsr DRV.SSCSend
bcs .9
iny
bne .8
clc jsr DRV.BufCheckSum
jsr DRV.SSCSend
bcs .9
rts rts
.9 sec .9
DRV.CS sec
rts rts
*-------------------------------------- *--------------------------------------
DRV.CmdBuf .DA #VS.CMD DRV.CmdBuf .DA #VS.CMD
@ -369,27 +387,25 @@ DRV.BufCheckSum lda #0
bne .1 bne .1
rts rts
*-------------------------------------- *--------------------------------------
DRV.SSCSend pha DRV.SSCSend sta .2+1
.1 lda SSC.STATUS,x .1 lda SSC.STATUS,x
bit #SSC.STATUS.DCD+SSC.STATUS.DSR bit #SSC.STATUS.DCD+SSC.STATUS.DSR
beq .9 beq DRV.CS
and #SSC.STATUS.TDRE Outgoing char? and #SSC.STATUS.TDRE Outgoing char?
beq .1 beq .1
pla .2 lda #$ff
sta SSC.DATA,x sta SSC.DATA,x
clc clc
rts rts
.9 pla
sec
rts
*-------------------------------------- *--------------------------------------
DRV.SSCGet DRV.SSCGet
.1 lda SSC.STATUS,x .1 lda SSC.STATUS,x
bit #SSC.STATUS.DCD+SSC.STATUS.DSR
beq DRV.CS
and #SSC.STATUS.RDRF incoming char? and #SSC.STATUS.RDRF incoming char?
beq .1 beq .1
@ -399,12 +415,14 @@ DRV.SSCGet
*-------------------------------------- *--------------------------------------
.EP .EP
*-------------------------------------- *--------------------------------------
.LIST ON
DRV.SIZE .EQ *-DRV DRV.SIZE .EQ *-DRV
.LIST OFF
*-------------------------------------- *--------------------------------------
* CONTROL SECTION : * CONTROL SECTION :
*-------------------------------------- *--------------------------------------
.DO DRV.SIZE>255 .DO DRV.SIZE>255
ERROR:DRV.SIZE too big * ERROR:DRV.SIZE too big
.FIN .FIN
*-------------------------------------- *--------------------------------------
MAN MAN