LS:complete rewrite, VSDRIVE: speedup things a bit, KERNEL: API cleanup

This commit is contained in:
burniouf 2021-08-10 12:20:41 +02:00
parent e98f1e9451
commit 4bbfa0899d
12 changed files with 721 additions and 619 deletions

Binary file not shown.

View File

@ -75,7 +75,6 @@ L.HOSTNAME .DA HOSTNAME
L.CFG.DefaultHost .DA CFG.DefaultHost L.CFG.DefaultHost .DA CFG.DefaultHost
L.ETKCFG .DA ETKCFG L.ETKCFG .DA ETKCFG
L.ETKCFG.OBJECT .DA ETKCFG+S.ETKCFG.OBJECT L.ETKCFG.OBJECT .DA ETKCFG+S.ETKCFG.OBJECT
L.IOCTL .DA IOCTL
*-------------------------------------- *--------------------------------------
L.MSG.PROBE .DA MSG.PROBE L.MSG.PROBE .DA MSG.PROBE
L.MSG.PROBE.KO .DA MSG.PROBE.KO L.MSG.PROBE.KO .DA MSG.PROBE.KO
@ -129,20 +128,16 @@ CS.RUN.SETUP lda ETKCFG+S.NETCFG.STATUS
CS.RUN.SETUP.RTS CS.RUN.SETUP.RTS
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.DUMP >PUSHB ETKCFG+S.NETCFG.DevID CS.RUN.DUMP >LEA.G DCB.NIC
>PUSHEA.G DIB
>SYSCALL GetDevStatus
bcs CS.RUN.SETUP.RTS
>LEA.G DCB.NIC ldx #S.IOCTL.S.GETDCB
>STYA IOCTL+S.IOCTL.BUFPTR jsr CS.RUN.IOCTL
lda #S.IOCTL.S.GETDCB bcs CS.RUN.SETUP.RTS
sta IOCTL+S.IOCTL.S
>PUSHB ETKCFG+S.NETCFG.DevID >LEA.G DIB
>PUSHBI IOCTL.STATUS
>PUSHW L.IOCTL ldx #S.IOCTL.S.GETDIB
>SYSCALL IOCTL jsr CS.RUN.IOCTL
bcs CS.RUN.SETUP.RTS bcs CS.RUN.SETUP.RTS
CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
@ -150,14 +145,15 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
lda ETKCFG+S.NETCFG.DevID lda ETKCFG+S.NETCFG.DevID
>PUSHA >PUSHA
ldx ETKCFG+S.NETCFG.DevID >SYSCALL GetMemPtr
lda Dev.Table-1,x
pha
tya
clc clc
adc #S.FD.DEV adc #S.FD.DEV
tay tay
lda Dev.Table,x pla
adc /S.FD.DEV adc /S.FD.DEV
>PUSHYA >PUSHYA
>PUSHEA.G DIB+S.DIB.IDS >PUSHEA.G DIB+S.DIB.IDS
@ -299,14 +295,13 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE
sta ProbeCnt sta ProbeCnt
.3 >LDYA L.AARP.PRB .3 >LDYA L.AARP.PRB
>STYA IOCTL+S.IOCTL.BUFPTR >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
>LDYAI AARP.PRB.LEN >LDYAI AARP.PRB.LEN
>STYA IOCTL+S.IOCTL.BYTECNT >STYA.G DEV.IOCTL+S.IOCTL.BYTECNT
>PUSHB ETKCFG+S.NETCFG.DevID >PUSHB ETKCFG+S.NETCFG.DevID
>PUSHBI IOCTL.WRITE lda #IOCTL.WRITE
>PUSHW L.IOCTL jsr CS.RUN.IOCTL.A
>SYSCALL IOCTL
>SLEEP >SLEEP
dec ProbeCnt dec ProbeCnt
@ -330,14 +325,13 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE
*-------------------------------------- *--------------------------------------
CS.RUN.GETNETINFO CS.RUN.GETNETINFO
>LDYA L.DDP.GetNetInfo >LDYA L.DDP.GetNetInfo
>STYA IOCTL+S.IOCTL.BUFPTR >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
>LDYAI DDP.GetNetInfo.LEN >LDYAI DDP.GetNetInfo.LEN
>STYA IOCTL+S.IOCTL.BYTECNT >STYA.G DEV.IOCTL+S.IOCTL.BYTECNT
>PUSHW ETKCFG+S.NETCFG.DevID >PUSHW ETKCFG+S.NETCFG.DevID
>PUSHBI IOCTL.WRITE lda #IOCTL.WRITE
>PUSHW L.IOCTL jsr CS.RUN.IOCTL.A
>SYSCALL IOCTL
lda #TIMEOUT.MAX lda #TIMEOUT.MAX
sta TimeOut sta TimeOut
@ -348,9 +342,8 @@ CS.RUN.GETNETINFO
beq .9 beq .9
>PUSHW ETKCFG+S.NETCFG.DevID >PUSHW ETKCFG+S.NETCFG.DevID
>PUSHBI IOCTL.READ lda #IOCTL.READ
>PUSHW L.IOCTL jsr CS.RUN.IOCTL.A
>SYSCALL IOCTL
bcs .1 bcs .1
sta hFrame sta hFrame
@ -367,12 +360,25 @@ CS.RUN.GETNETINFO
rts rts
.9 sec .9 sec
CS.RUN.GETNETINFO.RTS rts
*--------------------------------------
CS.RUN.IOCTL >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
txa
>STA.G DEV.IOCTL+S.IOCTL.S
>PUSHB ETKCFG+S.NETCFG.DevID
lda #IOCTL.STATUS
CS.RUN.IOCTL.A >PUSHA
>PUSHEA.G DEV.IOCTL
>SYSCALL IOCTL
rts rts
*-------------------------------------- *--------------------------------------
CFG.EtcFiles >LDYAI 256 CFG.EtcFiles >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs CS.RUN.GETNETINFO.RTS bcs .9
>STYA BufPtr >STYA BufPtr
stx CFG.hBuf1 stx CFG.hBuf1
@ -381,7 +387,7 @@ CFG.EtcFiles >LDYAI 256
jsr CFG.Read.HOSTNAME jsr CFG.Read.HOSTNAME
lda ETKCFG+S.ETKCFG.OBJECT lda ETKCFG+S.ETKCFG.OBJECT
bne .4 bne .2
>LDYA L.ETKCFG.OBJECT >LDYA L.ETKCFG.OBJECT
iny iny
@ -397,9 +403,10 @@ CFG.EtcFiles >LDYAI 256
lda #10 lda #10
sta ETKCFG+S.ETKCFG.OBJECT sta ETKCFG+S.ETKCFG.OBJECT
.4 lda CFG.hBuf1 .2 lda CFG.hBuf1
>SYSCALL FreeMem >SYSCALL FreeMem
rts
.9 rts
*-------------------------------------- *--------------------------------------
CFG.Read.PrintF pha CFG.Read.PrintF pha
>PUSHW L.MSG.CFG >PUSHW L.MSG.CFG
@ -592,13 +599,12 @@ DDP.GetNetInfo.DDP
DDP.GetNetInfo.DEND .EQ * DDP.GetNetInfo.DEND .EQ *
.BS DDP.GetNetInfo+60-* .BS DDP.GetNetInfo+60-*
DDP.GetNetInfo.LEN .EQ 60 DDP.GetNetInfo.LEN .EQ 60
*--------------------------------------
IOCTL .BS S.IOCTL
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
DIB .BS S.DIB DIB .BS S.DIB
DEV.IOCTL .BS S.IOCTL
DCB.NIC .BS S.DCB.NIC DCB.NIC .BS S.DCB.NIC
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------

View File

@ -171,7 +171,7 @@ CS.RUN ldy #S.PS.ARGC
.8 lda hDevID .8 lda hDevID
beq .99 beq .99
*-------------------------------------- *--------------------------------------
CS.RUN.Format jsr CS.RUN.GetDevStatus CS.RUN.Format jsr CS.RUN.GetDevDIB
bcs .99 bcs .99
>PUSHW L.MSG.INIT >PUSHW L.MSG.INIT
@ -223,14 +223,20 @@ CS.RUN.Format jsr CS.RUN.GetDevStatus
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.GetDevStatus CS.RUN.GetDevDIB
lda bCustomBlkSize lda bCustomBlkSize
bmi .8 bmi .8
>PUSHB hDevID >LEA.G DIB
>PUSHEA.G DIB >STYA.G IOCTL+S.IOCTL.BUFPTR
>SYSCALL GetDevStatus lda #S.IOCTL.S.GETDIB
>STA.G IOCTL+S.IOCTL.S
>PUSHB hDevID
>PUSHBI IOCTL.STATUS
>PUSHEA.G IOCTL
>SYSCALL IOCTL
bcs .9 bcs .9
>LDA.G DIB+S.DIB.SIZE >LDA.G DIB+S.DIB.SIZE

View File

@ -208,21 +208,21 @@ CS.RUN.SETUP
.8 lda #0 .8 lda #0
sec sec
CS.RUN.SETUP.RTS
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.DUMP >PUSHB IPCFG+S.NETCFG.DevID CS.RUN.DUMP >LEA.G DCB.NIC
>PUSHEA.G DIB
>SYSCALL GetDevStatus ldx #S.IOCTL.S.GETDCB
jsr CS.RUN.IOCTL
bcs CS.RUN.SETUP.RTS
>LEA.G DCB.NIC >LEA.G DIB
>STYA.G IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.S.GETDCB ldx #S.IOCTL.S.GETDIB
>STA.G IOCTL+S.IOCTL.S jsr CS.RUN.IOCTL
bcs CS.RUN.SETUP.RTS
>PUSHB IPCFG+S.NETCFG.DevID
>PUSHBI IOCTL.STATUS
>PUSHEA.G IOCTL
>SYSCALL IOCTL
CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
@ -396,6 +396,17 @@ CS.RUN.DUMPIP >PUSHW L.MSG2
sec we do not want to stay in memory sec we do not want to stay in memory
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.IOCTL >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
txa
>STA.G DEV.IOCTL+S.IOCTL.S
>PUSHB IPCFG+S.NETCFG.DevID
>PUSHBI IOCTL.STATUS
>PUSHEA.G DEV.IOCTL
>SYSCALL IOCTL
rts
*--------------------------------------
CS.DOEVENT lda (pEvent) CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event? bpl .9 is it a TIMER event?
@ -540,7 +551,7 @@ DHCP.REQ.LEN .EQ *-DHCP.REQ
.OR 0 .OR 0
DS.START DS.START
DIB .BS S.DIB DIB .BS S.DIB
IOCTL .BS S.IOCTL DEV.IOCTL .BS S.IOCTL
DCB.NIC .BS S.DCB.NIC DCB.NIC .BS S.DCB.NIC
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------

File diff suppressed because it is too large Load Diff

View File

@ -132,10 +132,17 @@ DumpFD.BDEV >PUSHW L.MSG.DEV
dex dex
bpl .1 bpl .1
lda #S.IOCTL.S.GETDIB
>STA.G DEV.IOCTL+S.IOCTL.S
>LEA.G DEV.DIB
>STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
ldx Index ldx Index
>PUSHB hFDs,x >PUSHB hFDs,x
>PUSHEA.G DEV.DIB >PUSHBI IOCTL.STATUS
>SYSCALL GetDevStatus >PUSHEA.G DEV.IOCTL
>SYSCALL IOCTL
bcc DumpFD.DevDIB bcc DumpFD.DevDIB
pha pha
@ -270,6 +277,7 @@ BLANK.DIB .DA #0 #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
DEV.IOCTL .BS S.IOCTL
DEV.DIB .BS S.DIB DEV.DIB .BS S.DIB
DEV.SFLAGS .BS 9 DEV.SFLAGS .BS 9
DS.END .ED DS.END .ED

View File

@ -257,7 +257,7 @@ SYS.StrCmp .EQ $8C
SYS.StrCaseCmp .EQ $8E SYS.StrCaseCmp .EQ $8E
* DEV * DEV
SYS.GetDevByName .EQ $90 SYS.GetDevByName .EQ $90
SYS.GetDevStatus .EQ $92 SYS.MKFD .EQ $92
SYS.MKDev .EQ $94 SYS.MKDev .EQ $94
SYS.IOCTL .EQ $96 SYS.IOCTL .EQ $96
* BIN * BIN

View File

@ -581,23 +581,23 @@ XDOS.Online jsr mvdbufr figure out how big buffer has to be.
lda (A3L),y if 0 then cbytes=$100 else $010 for one lda (A3L),y if 0 then cbytes=$100 else $010 for one
and #$F0 device. mask out unused nibble. and #$F0 device. mask out unused nibble.
sta devnum last device used. sta devnum last device used.
beq H343C branch if all devices. beq .1 branch if all devices.
lda #$10 cbytes = $010 lda #$10 cbytes = $010
sta cbytes sta cbytes
bne H343F always taken bne .2 always taken
H343C inc cbytes+1 cbytes = $100 .1 inc cbytes+1 cbytes = $100
H343F jsr valdbuf go validate buffer range against .2 jsr valdbuf go validate buffer range against
bcs onlinerr allocated memory. bcs .9 allocated memory.
lda #$00 zero out user buffer space lda #$00 zero out user buffer space
ldy cbytes ldy cbytes
H3449 dey .3 dey
sta (usrbuf),y sta (usrbuf),y
bne H3449 bne .3
sta namptr used as pointer to user buffer. sta namptr used as pointer to user buffer.
lda devnum get device # again. lda devnum get device # again.
@ -605,7 +605,7 @@ H3449 dey
jsr mvdevnums get list of currently recognized dev's. jsr mvdevnums get list of currently recognized dev's.
H3459 phx save index to last item on list .4 phx save index to last item on list
lda loklst,x lda loklst,x
sta devnum save desired device to look at. sta devnum save desired device to look at.
jsr online1 log this volume and return it's name. jsr online1 log this volume and return it's name.
@ -615,60 +615,60 @@ H3459 phx save index to last item on list
sta namptr sta namptr
plx get index to device list. plx get index to device list.
dex next device. dex next device.
bpl H3459 branch if there is another device. bpl .4 branch if there is another device.
lda #$00 no errors for multiple on-line lda #$00 no errors for multiple on-line
clc clc
onlinerr rts .9 rts
*-------------------------------------- *--------------------------------------
online1 jsr XDOS.FindVCBForDevNum see if it has already been logged in. online1 jsr XDOS.FindVCBForDevNum see if it has already been logged in.
bcs olinerr1 branch if vcb is full. bcs online1.ERR branch if vcb is full.
lda #$02 lda #$02
ldx #$00 read in root (volume) directory ldx #$00 read in root (volume) directory
jsr XDOS.ReadGBufAX read ROOT VOL into general purpose buffer. jsr XDOS.ReadGBufAX read ROOT VOL into general purpose buffer.
bcc volfound branch if read was ok. bcc .1 branch if read was ok.
ldx vcbptr ldx vcbptr
ldy VCBs+VCB.OFCNT,x don't take the vcb offline if ldy VCBs+VCB.OFCNT,x don't take the vcb offline if
bne olinerr1 there are active files present. bne online1.ERR there are active files present.
stz VCBs,x now take the volume offline stz VCBs,x now take the volume offline
stz VCBs+VCB.DEV,x stz VCBs+VCB.DEV,x
bra olinerr1 branch if unable to read. bra online1.ERR branch if unable to read.
volfound .DO LOWERCASE=1 .1 .DO LOWERCASE=1
jsr XDOS.CheckAndUnpackGBuf jsr XDOS.CheckAndUnpackGBuf
bcs olinerr1 bcs online1.ERR
.FIN .FIN
ldx vcbptr ldx vcbptr
lda VCBs,x has it been logged in before? lda VCBs,x has it been logged in before?
beq H349E if not. beq .2 if not.
lda VCBs+VCB.OFCNT,x it has, are there active files? lda VCBs+VCB.OFCNT,x it has, are there active files?
bne H34AA branch if volume is currently busy. bne .3 branch if volume is currently busy.
H349E jsr XDOS.VCBMountAtX .2 jsr XDOS.VCBMountAtX
bcs olinerr1 branch if there is a problem. bcs online1.ERR branch if there is a problem.
lda #MLI.E.DUPVOL anticipate a duplicate active volume lda #MLI.E.DUPVOL anticipate a duplicate active volume
bit duplflag exits. bit duplflag exits.
bmi olinerr1 branch if so. bmi online1.ERR branch if so.
H34AA ldx vcbptr .3 ldx vcbptr
jsr XDOS.VCBCmpGBUF does vol read compare with logged vol? jsr XDOS.VCBCmpGBUF does vol read compare with logged vol?
lda #MLI.E.DSKSWIT anticipate wrong volume mounted. lda #MLI.E.DSKSWIT anticipate wrong volume mounted.
bcc H34D0 branch if ok. bcc online1.OK branch if ok.
*--------------------------------------
olinerr1 pha save error code. online1.ERR pha save error code.
jsr svdevn report what device has problem. jsr svdevn report what device has problem.
pla error code. pla error code.
iny tell what error was encountered. iny tell what error was encountered.
sta (usrbuf),y sta (usrbuf),y
cmp #MLI.E.DUPVOL duplicate volume error? cmp #MLI.E.DUPVOL duplicate volume error?
bne H34CE no. bne .1 no.
iny report which other device has same name iny report which other device has same name
ldx vcbentry ldx vcbentry
@ -678,19 +678,19 @@ olinerr1 pha save error code.
lda #MLI.E.DUPVOL duplicate volume error code. lda #MLI.E.DUPVOL duplicate volume error code.
H34CE sec flag error .1 sec flag error
rts rts
*--------------------------------------
H34D0 lda VCBs,x get volume name count online1.OK lda VCBs,x get volume name count
sta namcnt sta namcnt
ldy namptr index to user's buffer. ldy namptr index to user's buffer.
H34D9 lda VCBs,x move name to user's buffer .1 lda VCBs,x move name to user's buffer
sta (usrbuf),y sta (usrbuf),y
inx inx
iny iny
dec namcnt dec namcnt
bpl H34D9 bpl .1
svdevn ldy namptr index to 1st byte of this entry. svdevn ldy namptr index to 1st byte of this entry.
lda devnum upper nibble = device# and lda devnum upper nibble = device# and

View File

@ -66,68 +66,20 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
K.GetDev.9 rts K.GetDev.9 rts
*/-------------------------------------- */--------------------------------------
* # GetDevStatus * # MkFD
* ## C * ## C
* `int getdevstatus(short int DevID, S.DIB *dstat);` * `short int mkfd(short int type, );`
* ## ASM * ## ASM
* `>PUSHB DevID` * `>PUSHB DevID`
* `>PUSHW S.DIB` * `>PUSHW S.DIB`
* `>SYSCALL GetDevStatus` * `>SYSCALL GetDevStatus`
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR K.MkFD
>PULLA
jsr DEV.GetPFD
bcs K.GetDev.9
lda #S.IOCTL.S.GETDIB clc
.HS 2C BIT ABS rts
*--------------------------------------
DEV.EOF lda #S.IOCTL.S.EOF
*--------------------------------------
DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S
ldy #S.FD.DEV.DEVID
lda (pFD),y
sta K.S.IOCTL+S.IOCTL.UNITNUM
>LDYAI K.S.IOCTL
ldx #IOCTL.STATUS
*--------------------------------------
jmp (pDrv)
*--------------------------------------
DEV.OPEN ldx #IOCTL.OPEN
lda IO.hFD
jsr DEV.pDrvJmp
bcs .9
lda IO.hFD
.9 rts
*--------------------------------------
DEV.CLOSE ldx #IOCTL.CLOSE
lda IO.hFD
DEV.pDrvJmp jmp (pDrv)
*--------------------------------------
DEV.READ ldx #IOCTL.READ
.HS 2C BIT ABS
*--------------------------------------
DEV.WRITE ldx #IOCTL.WRITE
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
inc pStack pop hFD
>LDYAI K.S.IOCTL
jsr DEV.pDrvJmp
bcs .9
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
.9 rts
*/-------------------------------------- */--------------------------------------
* # MKDev * # MKDev
* Create a hDEV * Create a hDEV
@ -239,6 +191,51 @@ K.IOCTL ldy #3 hFD
jmp (pDrv) jmp (pDrv)
*-------------------------------------- *--------------------------------------
DEV.OPEN ldx #IOCTL.OPEN
lda IO.hFD
jsr DEV.pDrvJmp
bcs .9
lda IO.hFD
.9 rts
*--------------------------------------
DEV.CLOSE ldx #IOCTL.CLOSE
lda IO.hFD
jmp (pDrv)
*--------------------------------------
DEV.READ ldx #IOCTL.READ
.HS 2C BIT ABS
*--------------------------------------
DEV.WRITE ldx #IOCTL.WRITE
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
inc pStack pop hFD
>LDYAI K.S.IOCTL
jsr DEV.pDrvJmp
bcs .9
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
.9 rts
*--------------------------------------
DEV.EOF lda #S.IOCTL.S.EOF
*--------------------------------------
DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S
ldy #S.FD.DEV.DEVID
lda (pFD),y
sta K.S.IOCTL+S.IOCTL.UNITNUM
ldx #IOCTL.STATUS
>LDYAI K.S.IOCTL
*--------------------------------------
DEV.pDrvJmp jmp (pDrv)
*--------------------------------------
DEV.GetPFD sta IO.hFD DEV.GetPFD sta IO.hFD
jsr K.GetMemPtr jsr K.GetMemPtr

View File

@ -89,7 +89,7 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
.DA K.StrCaseCmp .DA K.StrCaseCmp
.DA K.GetDevByName $90 : DEV .DA K.GetDevByName $90 : DEV
.DA K.GetDevStatus .DA K.MKFD
.DA K.MKDev .DA K.MKDev
.DA K.IOCTL .DA K.IOCTL
.DA K.LoadLib BIN .DA K.LoadLib BIN

View File

@ -12,16 +12,14 @@ NEW
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.ChTyp jsr PFT.CheckPath1 K.ChTyp jsr PFT.CheckPath1
bcs K.ChTyp.9 bcs K.ChMod.RET3
>MLICALL MLIGETFILEINFO >MLICALL MLIGETFILEINFO
bcs K.ChTyp.9 bcs K.ChMod.RET3
lda (pStack) lda (pStack)
sta K.MLI.PARAMS+S.FI.T sta K.MLI.PARAMS+S.FI.T
K.ChTyp.8 >MLICALL MLISETFILEINFO bra K.SetAttr.I
K.ChTyp.9 >RET 3
*/-------------------------------------- */--------------------------------------
* # SetAttr * # SetAttr
* Change Attributes of a ProDOS File * Change Attributes of a ProDOS File
@ -34,14 +32,16 @@ K.ChTyp.9 >RET 3
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.SetAttr jsr PFT.CheckPath1 K.SetAttr jsr PFT.CheckPath1
bcs K.ChTyp.9 bcs K.ChMod.RET3
>MLICALL MLIGETFILEINFO >MLICALL MLIGETFILEINFO
bcs K.ChTyp.9 bcs K.ChMod.RET3
lda (pStack) lda (pStack)
sta K.MLI.PARAMS+S.FI.A sta K.MLI.PARAMS+S.FI.A
bra K.ChTyp.8
K.SetAttr.I >MLICALL MLISETFILEINFO
bra K.ChMod.RET3
*-------------------------------------- *--------------------------------------
* # ChMod * # ChMod
* change permissions of a file * change permissions of a file
@ -73,6 +73,7 @@ K.ChMod jsr PFT.CheckPath2
.9 rts .9 rts
K.ChMod.RET4 inc pStack K.ChMod.RET4 inc pStack
K.ChMod.RET3 inc pStack K.ChMod.RET3 inc pStack
inc pStack inc pStack
inc pStack inc pStack

View File

@ -302,11 +302,13 @@ VSDRIVE.Install ldx #PATCH.LEN
asl asl
ora #SSC.DATA ora #SSC.DATA
sta DRV.SSCWrite.D+1
sta DRV.SSCSend.D+1 sta DRV.SSCSend.D+1
sta DRV.SSCGet.D+1 sta DRV.SSCGet.D+1
inc #SSC.STATUS inc #SSC.STATUS
sta DRV.SSCWrite.S+1
sta DRV.SSCSend.S+1 sta DRV.SSCSend.S+1
sta DRV.SSCGet.S+1 sta DRV.SSCGet.S+1
sta DRV.SSCClose.S+1 sta DRV.SSCClose.S+1
@ -363,12 +365,22 @@ PATCH.LEN .EQ *-PATCH
* PC,A1,A2 are used by Disk II Driver, * PC,A1,A2 are used by Disk II Driver,
* so we use it safely as Tmp Ptr * so we use it safely as Tmp Ptr
*-------------------------------------- *--------------------------------------
DRV.PCL .EQ $3A *DRV.PCL .EQ $3A
DRV.PCH .EQ $3B *DRV.PCH .EQ $3B
DRV.A1L .EQ $3C *DRV.A1L .EQ $3C
DRV.A1H .EQ $3D *DRV.A1H .EQ $3D
DRV.A2L .EQ $3E *DRV.A2L .EQ $3E
DRV.A2H .EQ $3F *DRV.A2H .EQ $3F
*--------------------------------------
.DUMMY
.OR $3A
DRV.CmdBuf.Sum .BS 1 Reverse order for dey
DRV.CmdBuf.BlkH .BS 1
DRV.CmdBuf.BlkL .BS 1
DRV.CmdBuf.Cmd .BS 1
DRV.CmdBuf.Env .BS 1
.ED
*--------------------------------------
DRV.COMMAND .EQ $42 DRV.COMMAND .EQ $42
DRV.UNITNUM .EQ $43 DRV.UNITNUM .EQ $43
DRV.BUFF .EQ $44 DRV.BUFF .EQ $44
@ -400,27 +412,37 @@ DRV.START.OK tax
ora #2 W=2,R=3 ora #2 W=2,R=3
ldy DRV.UNITNUM bit DRV.UNITNUM
bpl .2 bpl .2
adc #2 CC from bcs adc #2 CC from bcs
.2 sta DRV.CmdBuf.Cmd store cmd .2 sta DRV.CmdBuf.Cmd store cmd
eor #ADT.CMD.VSD
eor DRV.BLKNUM
eor DRV.BLKNUM+1
sta DRV.CmdBuf.Sum Compute & store CheckSum
lda #ADT.CMD.VSD
sta DRV.CmdBuf.Env
lda DRV.BLKNUM lda DRV.BLKNUM
sta DRV.CmdBuf.BlkL sta DRV.CmdBuf.BlkL
lda DRV.BLKNUM+1 lda DRV.BLKNUM+1
sta DRV.CmdBuf.BlkH sta DRV.CmdBuf.BlkH
stz DRV.CmdBuf.Sum
*-------------------------------------- *--------------------------------------
* send CMD+CS * send CMD+CS
*-------------------------------------- *--------------------------------------
php php
sei sei
phx
ldy #DRV.200.LEN-1
.1 lda DRV.200,y
sta $200,y
dey
bpl .1
* lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR * lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR
DRV.INIT.C inc SSC.CMD SELF MODIFIED DRV.INIT.C inc SSC.CMD SELF MODIFIED
@ -429,29 +451,27 @@ DRV.INIT.C inc SSC.CMD SELF MODIFIED
.3 lda DRV.CmdBuf.Sum,y .3 lda DRV.CmdBuf.Sum,y
jsr DRV.SSCSend jsr DRV.SSCSend
eor DRV.CmdBuf.Sum
sta DRV.CmdBuf.Sum
dey dey
bpl .3 bne .3
ldy #DRV.200.LEN-1 jsr DRV.SSCSend A = Sum
.5 lda DRV.200,y
sta $200,y
dey
bpl .5
*-------------------------------------- *--------------------------------------
plx
dex 1-1=0 if read dex 1-1=0 if read
bne DRV.DO.CMD.W go write bne DRV.DO.CMD.W go write
*-------------------------------------- *--------------------------------------
* Read block * Read block
*-------------------------------------- *--------------------------------------
DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes DRV.DO.CMD.R ldy #4 Read Back and check 4 bytes
.1 jsr DRV.SSCGet .1 jsr DRV.SSCGet
eor DRV.CmdBuf.BlkH,y eor DRV.CmdBuf.Sum,y
bne DRV.DO.CMD.ERR bne DRV.DO.CMD.ERR
dey dey
bpl .1 bne .1
ldy #4 Read 4 bytes DATE/TIME + 1 Byte Checksum ldy #4 Read 4 bytes DATE/TIME + 1 Byte Checksum
@ -505,17 +525,27 @@ DRV.DO.CMD.W lda #$B1 lda (),y
sec sec
.HS 90 BCC .HS 90 BCC
.1 clc DRV.SSCWrite.1 clc
.2 jsr $200 DRV.SSCWrite.2 jsr $200
jsr DRV.SSCSend
tax
DRV.SSCWrite.S lda SSC.STATUS SELF MODIFIED
and #SSC.STATUS.TDRE Outgoing char?
beq DRV.SSCWrite.S
DRV.SSCWrite.D stx SSC.DATA SELF MODIFIED
txa
eor DRV.CmdBuf.Sum eor DRV.CmdBuf.Sum
sta DRV.CmdBuf.Sum sta DRV.CmdBuf.Sum
iny iny
bne .2 bne DRV.SSCWrite.2
inc DRV.BUFF+1 inc DRV.BUFF+1
bcs .1 bcs DRV.SSCWrite.1
dec DRV.BUFF+1 dec DRV.BUFF+1
dec DRV.BUFF+1 dec DRV.BUFF+1
@ -541,19 +571,21 @@ DRV.SSCClose
DRV.SSCClose.C dec SSC.CMD SELF MODIFIED DRV.SSCClose.C dec SSC.CMD SELF MODIFIED
DRV.SSCClose.S bit SSC.STATUS SELF MODIFIED DRV.SSCClose.S bit SSC.STATUS SELF MODIFIED
bmi DRV.SSCClose.S bmi DRV.SSCClose.S
plp plp
clc clc
rts rts
*-------------------------------------- *--------------------------------------
DRV.SSCSend pha DRV.SSCSend tax
DRV.SSCSend.S lda SSC.STATUS SELF MODIFIED DRV.SSCSend.S lda SSC.STATUS SELF MODIFIED
and #SSC.STATUS.TDRE Outgoing char? and #SSC.STATUS.TDRE Outgoing char?
beq DRV.SSCSend.S beq DRV.SSCSend.S
pla DRV.SSCSend.D stx SSC.DATA SELF MODIFIED
txa Restore A for checksumming
DRV.SSCSend.D sta SSC.DATA SELF MODIFIED
rts rts
*-------------------------------------- *--------------------------------------
DRV.SSCGet DRV.SSCGet
@ -569,12 +601,6 @@ DRV.200 bit RRAMWRAMBNK1
bit RRAMWRAMBNK2 bit RRAMWRAMBNK2
rts rts
DRV.200.LEN .EQ *-DRV.200 DRV.200.LEN .EQ *-DRV.200
*--------------------------------------
DRV.CmdBuf.Sum .BS 1 Reverse order for dey
DRV.CmdBuf.BlkH .BS 1
DRV.CmdBuf.BlkL .BS 1
DRV.CmdBuf.Cmd .BS 1
DRV.CmdBuf.Env .DA #ADT.CMD.VSD
*-------------------------------------- *--------------------------------------
.EP .EP
*-------------------------------------- *--------------------------------------