mirror of
https://github.com/A2osX/A2osX.git
synced 2025-03-16 18:32:18 +00:00
LS:complete rewrite, VSDRIVE: speedup things a bit, KERNEL: API cleanup
This commit is contained in:
parent
e98f1e9451
commit
4bbfa0899d
Binary file not shown.
@ -75,7 +75,6 @@ L.HOSTNAME .DA HOSTNAME
|
||||
L.CFG.DefaultHost .DA CFG.DefaultHost
|
||||
L.ETKCFG .DA ETKCFG
|
||||
L.ETKCFG.OBJECT .DA ETKCFG+S.ETKCFG.OBJECT
|
||||
L.IOCTL .DA IOCTL
|
||||
*--------------------------------------
|
||||
L.MSG.PROBE .DA MSG.PROBE
|
||||
L.MSG.PROBE.KO .DA MSG.PROBE.KO
|
||||
@ -129,20 +128,16 @@ CS.RUN.SETUP lda ETKCFG+S.NETCFG.STATUS
|
||||
CS.RUN.SETUP.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.DUMP >PUSHB ETKCFG+S.NETCFG.DevID
|
||||
>PUSHEA.G DIB
|
||||
>SYSCALL GetDevStatus
|
||||
bcs CS.RUN.SETUP.RTS
|
||||
CS.RUN.DUMP >LEA.G DCB.NIC
|
||||
|
||||
>LEA.G DCB.NIC
|
||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||
lda #S.IOCTL.S.GETDCB
|
||||
sta IOCTL+S.IOCTL.S
|
||||
ldx #S.IOCTL.S.GETDCB
|
||||
jsr CS.RUN.IOCTL
|
||||
bcs CS.RUN.SETUP.RTS
|
||||
|
||||
>PUSHB ETKCFG+S.NETCFG.DevID
|
||||
>PUSHBI IOCTL.STATUS
|
||||
>PUSHW L.IOCTL
|
||||
>SYSCALL IOCTL
|
||||
>LEA.G DIB
|
||||
|
||||
ldx #S.IOCTL.S.GETDIB
|
||||
jsr CS.RUN.IOCTL
|
||||
bcs CS.RUN.SETUP.RTS
|
||||
|
||||
CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
|
||||
@ -150,14 +145,15 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
|
||||
lda ETKCFG+S.NETCFG.DevID
|
||||
>PUSHA
|
||||
|
||||
ldx ETKCFG+S.NETCFG.DevID
|
||||
lda Dev.Table-1,x
|
||||
>SYSCALL GetMemPtr
|
||||
|
||||
pha
|
||||
tya
|
||||
clc
|
||||
adc #S.FD.DEV
|
||||
tay
|
||||
lda Dev.Table,x
|
||||
pla
|
||||
adc /S.FD.DEV
|
||||
|
||||
>PUSHYA
|
||||
|
||||
>PUSHEA.G DIB+S.DIB.IDS
|
||||
@ -299,14 +295,13 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE
|
||||
sta ProbeCnt
|
||||
|
||||
.3 >LDYA L.AARP.PRB
|
||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||
>STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
|
||||
>LDYAI AARP.PRB.LEN
|
||||
>STYA IOCTL+S.IOCTL.BYTECNT
|
||||
>STYA.G DEV.IOCTL+S.IOCTL.BYTECNT
|
||||
|
||||
>PUSHB ETKCFG+S.NETCFG.DevID
|
||||
>PUSHBI IOCTL.WRITE
|
||||
>PUSHW L.IOCTL
|
||||
>SYSCALL IOCTL
|
||||
lda #IOCTL.WRITE
|
||||
jsr CS.RUN.IOCTL.A
|
||||
|
||||
>SLEEP
|
||||
dec ProbeCnt
|
||||
@ -330,14 +325,13 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE
|
||||
*--------------------------------------
|
||||
CS.RUN.GETNETINFO
|
||||
>LDYA L.DDP.GetNetInfo
|
||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||
>STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
|
||||
>LDYAI DDP.GetNetInfo.LEN
|
||||
>STYA IOCTL+S.IOCTL.BYTECNT
|
||||
>STYA.G DEV.IOCTL+S.IOCTL.BYTECNT
|
||||
|
||||
>PUSHW ETKCFG+S.NETCFG.DevID
|
||||
>PUSHBI IOCTL.WRITE
|
||||
>PUSHW L.IOCTL
|
||||
>SYSCALL IOCTL
|
||||
lda #IOCTL.WRITE
|
||||
jsr CS.RUN.IOCTL.A
|
||||
|
||||
lda #TIMEOUT.MAX
|
||||
sta TimeOut
|
||||
@ -348,9 +342,8 @@ CS.RUN.GETNETINFO
|
||||
beq .9
|
||||
|
||||
>PUSHW ETKCFG+S.NETCFG.DevID
|
||||
>PUSHBI IOCTL.READ
|
||||
>PUSHW L.IOCTL
|
||||
>SYSCALL IOCTL
|
||||
lda #IOCTL.READ
|
||||
jsr CS.RUN.IOCTL.A
|
||||
bcs .1
|
||||
|
||||
sta hFrame
|
||||
@ -367,12 +360,25 @@ CS.RUN.GETNETINFO
|
||||
rts
|
||||
|
||||
.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
|
||||
*--------------------------------------
|
||||
CFG.EtcFiles >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs CS.RUN.GETNETINFO.RTS
|
||||
bcs .9
|
||||
|
||||
>STYA BufPtr
|
||||
stx CFG.hBuf1
|
||||
@ -381,7 +387,7 @@ CFG.EtcFiles >LDYAI 256
|
||||
jsr CFG.Read.HOSTNAME
|
||||
|
||||
lda ETKCFG+S.ETKCFG.OBJECT
|
||||
bne .4
|
||||
bne .2
|
||||
|
||||
>LDYA L.ETKCFG.OBJECT
|
||||
iny
|
||||
@ -397,9 +403,10 @@ CFG.EtcFiles >LDYAI 256
|
||||
lda #10
|
||||
sta ETKCFG+S.ETKCFG.OBJECT
|
||||
|
||||
.4 lda CFG.hBuf1
|
||||
.2 lda CFG.hBuf1
|
||||
>SYSCALL FreeMem
|
||||
rts
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CFG.Read.PrintF pha
|
||||
>PUSHW L.MSG.CFG
|
||||
@ -592,13 +599,12 @@ DDP.GetNetInfo.DDP
|
||||
DDP.GetNetInfo.DEND .EQ *
|
||||
.BS DDP.GetNetInfo+60-*
|
||||
DDP.GetNetInfo.LEN .EQ 60
|
||||
*--------------------------------------
|
||||
IOCTL .BS S.IOCTL
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
DIB .BS S.DIB
|
||||
DEV.IOCTL .BS S.IOCTL
|
||||
DCB.NIC .BS S.DCB.NIC
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
|
@ -171,7 +171,7 @@ CS.RUN ldy #S.PS.ARGC
|
||||
.8 lda hDevID
|
||||
beq .99
|
||||
*--------------------------------------
|
||||
CS.RUN.Format jsr CS.RUN.GetDevStatus
|
||||
CS.RUN.Format jsr CS.RUN.GetDevDIB
|
||||
bcs .99
|
||||
|
||||
>PUSHW L.MSG.INIT
|
||||
@ -223,14 +223,20 @@ CS.RUN.Format jsr CS.RUN.GetDevStatus
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetDevStatus
|
||||
CS.RUN.GetDevDIB
|
||||
lda bCustomBlkSize
|
||||
bmi .8
|
||||
|
||||
>PUSHB hDevID
|
||||
>PUSHEA.G DIB
|
||||
>LEA.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
|
||||
|
||||
>LDA.G DIB+S.DIB.SIZE
|
||||
|
@ -208,21 +208,21 @@ CS.RUN.SETUP
|
||||
|
||||
.8 lda #0
|
||||
sec
|
||||
|
||||
CS.RUN.SETUP.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.DUMP >PUSHB IPCFG+S.NETCFG.DevID
|
||||
>PUSHEA.G DIB
|
||||
>SYSCALL GetDevStatus
|
||||
CS.RUN.DUMP >LEA.G DCB.NIC
|
||||
|
||||
ldx #S.IOCTL.S.GETDCB
|
||||
jsr CS.RUN.IOCTL
|
||||
bcs CS.RUN.SETUP.RTS
|
||||
|
||||
>LEA.G DCB.NIC
|
||||
>STYA.G IOCTL+S.IOCTL.BUFPTR
|
||||
lda #S.IOCTL.S.GETDCB
|
||||
>STA.G IOCTL+S.IOCTL.S
|
||||
|
||||
>PUSHB IPCFG+S.NETCFG.DevID
|
||||
>PUSHBI IOCTL.STATUS
|
||||
>PUSHEA.G IOCTL
|
||||
>SYSCALL IOCTL
|
||||
>LEA.G DIB
|
||||
|
||||
ldx #S.IOCTL.S.GETDIB
|
||||
jsr CS.RUN.IOCTL
|
||||
bcs CS.RUN.SETUP.RTS
|
||||
|
||||
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
|
||||
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)
|
||||
bpl .9 is it a TIMER event?
|
||||
|
||||
@ -540,7 +551,7 @@ DHCP.REQ.LEN .EQ *-DHCP.REQ
|
||||
.OR 0
|
||||
DS.START
|
||||
DIB .BS S.DIB
|
||||
IOCTL .BS S.IOCTL
|
||||
DEV.IOCTL .BS S.IOCTL
|
||||
DCB.NIC .BS S.DCB.NIC
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
|
913
BIN/LS.S.txt
913
BIN/LS.S.txt
File diff suppressed because it is too large
Load Diff
@ -132,10 +132,17 @@ DumpFD.BDEV >PUSHW L.MSG.DEV
|
||||
dex
|
||||
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
|
||||
>PUSHB hFDs,x
|
||||
>PUSHEA.G DEV.DIB
|
||||
>SYSCALL GetDevStatus
|
||||
>PUSHBI IOCTL.STATUS
|
||||
>PUSHEA.G DEV.IOCTL
|
||||
>SYSCALL IOCTL
|
||||
bcc DumpFD.DevDIB
|
||||
|
||||
pha
|
||||
@ -270,6 +277,7 @@ BLANK.DIB .DA #0 #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
DEV.IOCTL .BS S.IOCTL
|
||||
DEV.DIB .BS S.DIB
|
||||
DEV.SFLAGS .BS 9
|
||||
DS.END .ED
|
||||
|
@ -257,7 +257,7 @@ SYS.StrCmp .EQ $8C
|
||||
SYS.StrCaseCmp .EQ $8E
|
||||
* DEV
|
||||
SYS.GetDevByName .EQ $90
|
||||
SYS.GetDevStatus .EQ $92
|
||||
SYS.MKFD .EQ $92
|
||||
SYS.MKDev .EQ $94
|
||||
SYS.IOCTL .EQ $96
|
||||
* BIN
|
||||
|
@ -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
|
||||
and #$F0 device. mask out unused nibble.
|
||||
sta devnum last device used.
|
||||
beq H343C branch if all devices.
|
||||
beq .1 branch if all devices.
|
||||
|
||||
lda #$10 cbytes = $010
|
||||
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
|
||||
bcs onlinerr allocated memory.
|
||||
.2 jsr valdbuf go validate buffer range against
|
||||
bcs .9 allocated memory.
|
||||
|
||||
lda #$00 zero out user buffer space
|
||||
ldy cbytes
|
||||
|
||||
H3449 dey
|
||||
.3 dey
|
||||
sta (usrbuf),y
|
||||
bne H3449
|
||||
bne .3
|
||||
|
||||
sta namptr used as pointer to user buffer.
|
||||
lda devnum get device # again.
|
||||
@ -605,7 +605,7 @@ H3449 dey
|
||||
|
||||
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
|
||||
sta devnum save desired device to look at.
|
||||
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
|
||||
plx get index to device list.
|
||||
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
|
||||
clc
|
||||
onlinerr rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
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
|
||||
ldx #$00 read in root (volume) directory
|
||||
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
|
||||
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+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
|
||||
bcs olinerr1
|
||||
bcs online1.ERR
|
||||
.FIN
|
||||
|
||||
ldx vcbptr
|
||||
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?
|
||||
bne H34AA branch if volume is currently busy.
|
||||
bne .3 branch if volume is currently busy.
|
||||
|
||||
H349E jsr XDOS.VCBMountAtX
|
||||
bcs olinerr1 branch if there is a problem.
|
||||
.2 jsr XDOS.VCBMountAtX
|
||||
bcs online1.ERR branch if there is a problem.
|
||||
|
||||
lda #MLI.E.DUPVOL anticipate a duplicate active volume
|
||||
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?
|
||||
lda #MLI.E.DSKSWIT anticipate wrong volume mounted.
|
||||
bcc H34D0 branch if ok.
|
||||
|
||||
olinerr1 pha save error code.
|
||||
bcc online1.OK branch if ok.
|
||||
*--------------------------------------
|
||||
online1.ERR pha save error code.
|
||||
jsr svdevn report what device has problem.
|
||||
pla error code.
|
||||
iny tell what error was encountered.
|
||||
sta (usrbuf),y
|
||||
cmp #MLI.E.DUPVOL duplicate volume error?
|
||||
bne H34CE no.
|
||||
bne .1 no.
|
||||
|
||||
iny report which other device has same name
|
||||
ldx vcbentry
|
||||
@ -678,19 +678,19 @@ olinerr1 pha save error code.
|
||||
|
||||
lda #MLI.E.DUPVOL duplicate volume error code.
|
||||
|
||||
H34CE sec flag error
|
||||
.1 sec flag error
|
||||
rts
|
||||
|
||||
H34D0 lda VCBs,x get volume name count
|
||||
*--------------------------------------
|
||||
online1.OK lda VCBs,x get volume name count
|
||||
sta namcnt
|
||||
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
|
||||
inx
|
||||
iny
|
||||
dec namcnt
|
||||
bpl H34D9
|
||||
bpl .1
|
||||
|
||||
svdevn ldy namptr index to 1st byte of this entry.
|
||||
lda devnum upper nibble = device# and
|
||||
|
@ -66,68 +66,20 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
|
||||
|
||||
K.GetDev.9 rts
|
||||
*/--------------------------------------
|
||||
* # GetDevStatus
|
||||
* # MkFD
|
||||
* ## C
|
||||
* `int getdevstatus(short int DevID, S.DIB *dstat);`
|
||||
* `short int mkfd(short int type, );`
|
||||
* ## ASM
|
||||
* `>PUSHB DevID`
|
||||
* `>PUSHW S.DIB`
|
||||
* `>SYSCALL GetDevStatus`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||
>PULLA
|
||||
K.MkFD
|
||||
|
||||
jsr DEV.GetPFD
|
||||
bcs K.GetDev.9
|
||||
|
||||
lda #S.IOCTL.S.GETDIB
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
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
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # MKDev
|
||||
* Create a hDEV
|
||||
@ -239,6 +191,51 @@ K.IOCTL ldy #3 hFD
|
||||
|
||||
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
|
||||
|
||||
jsr K.GetMemPtr
|
||||
|
@ -89,7 +89,7 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
|
||||
.DA K.StrCaseCmp
|
||||
|
||||
.DA K.GetDevByName $90 : DEV
|
||||
.DA K.GetDevStatus
|
||||
.DA K.MKFD
|
||||
.DA K.MKDev
|
||||
.DA K.IOCTL
|
||||
.DA K.LoadLib BIN
|
||||
|
@ -12,16 +12,14 @@ NEW
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.ChTyp jsr PFT.CheckPath1
|
||||
bcs K.ChTyp.9
|
||||
bcs K.ChMod.RET3
|
||||
|
||||
>MLICALL MLIGETFILEINFO
|
||||
bcs K.ChTyp.9
|
||||
bcs K.ChMod.RET3
|
||||
|
||||
lda (pStack)
|
||||
sta K.MLI.PARAMS+S.FI.T
|
||||
K.ChTyp.8 >MLICALL MLISETFILEINFO
|
||||
|
||||
K.ChTyp.9 >RET 3
|
||||
bra K.SetAttr.I
|
||||
*/--------------------------------------
|
||||
* # SetAttr
|
||||
* Change Attributes of a ProDOS File
|
||||
@ -34,14 +32,16 @@ K.ChTyp.9 >RET 3
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SetAttr jsr PFT.CheckPath1
|
||||
bcs K.ChTyp.9
|
||||
bcs K.ChMod.RET3
|
||||
|
||||
>MLICALL MLIGETFILEINFO
|
||||
bcs K.ChTyp.9
|
||||
bcs K.ChMod.RET3
|
||||
|
||||
lda (pStack)
|
||||
sta K.MLI.PARAMS+S.FI.A
|
||||
bra K.ChTyp.8
|
||||
|
||||
K.SetAttr.I >MLICALL MLISETFILEINFO
|
||||
bra K.ChMod.RET3
|
||||
*--------------------------------------
|
||||
* # ChMod
|
||||
* change permissions of a file
|
||||
@ -73,6 +73,7 @@ K.ChMod jsr PFT.CheckPath2
|
||||
.9 rts
|
||||
|
||||
K.ChMod.RET4 inc pStack
|
||||
|
||||
K.ChMod.RET3 inc pStack
|
||||
inc pStack
|
||||
inc pStack
|
||||
|
@ -302,11 +302,13 @@ VSDRIVE.Install ldx #PATCH.LEN
|
||||
asl
|
||||
|
||||
ora #SSC.DATA
|
||||
sta DRV.SSCWrite.D+1
|
||||
sta DRV.SSCSend.D+1
|
||||
sta DRV.SSCGet.D+1
|
||||
|
||||
inc #SSC.STATUS
|
||||
|
||||
sta DRV.SSCWrite.S+1
|
||||
sta DRV.SSCSend.S+1
|
||||
sta DRV.SSCGet.S+1
|
||||
sta DRV.SSCClose.S+1
|
||||
@ -363,12 +365,22 @@ PATCH.LEN .EQ *-PATCH
|
||||
* PC,A1,A2 are used by Disk II Driver,
|
||||
* so we use it safely as Tmp Ptr
|
||||
*--------------------------------------
|
||||
DRV.PCL .EQ $3A
|
||||
DRV.PCH .EQ $3B
|
||||
DRV.A1L .EQ $3C
|
||||
DRV.A1H .EQ $3D
|
||||
DRV.A2L .EQ $3E
|
||||
DRV.A2H .EQ $3F
|
||||
*DRV.PCL .EQ $3A
|
||||
*DRV.PCH .EQ $3B
|
||||
*DRV.A1L .EQ $3C
|
||||
*DRV.A1H .EQ $3D
|
||||
*DRV.A2L .EQ $3E
|
||||
*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.UNITNUM .EQ $43
|
||||
DRV.BUFF .EQ $44
|
||||
@ -400,27 +412,37 @@ DRV.START.OK tax
|
||||
|
||||
ora #2 W=2,R=3
|
||||
|
||||
ldy DRV.UNITNUM
|
||||
bit DRV.UNITNUM
|
||||
bpl .2
|
||||
|
||||
adc #2 CC from bcs
|
||||
|
||||
.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
|
||||
sta DRV.CmdBuf.BlkL
|
||||
|
||||
lda DRV.BLKNUM+1
|
||||
sta DRV.CmdBuf.BlkH
|
||||
|
||||
stz DRV.CmdBuf.Sum
|
||||
*--------------------------------------
|
||||
* send CMD+CS
|
||||
*--------------------------------------
|
||||
php
|
||||
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
|
||||
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
|
||||
jsr DRV.SSCSend
|
||||
eor DRV.CmdBuf.Sum
|
||||
sta DRV.CmdBuf.Sum
|
||||
dey
|
||||
bpl .3
|
||||
bne .3
|
||||
|
||||
ldy #DRV.200.LEN-1
|
||||
|
||||
.5 lda DRV.200,y
|
||||
sta $200,y
|
||||
dey
|
||||
bpl .5
|
||||
jsr DRV.SSCSend A = Sum
|
||||
*--------------------------------------
|
||||
plx
|
||||
dex 1-1=0 if read
|
||||
bne DRV.DO.CMD.W go write
|
||||
*--------------------------------------
|
||||
* 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
|
||||
eor DRV.CmdBuf.BlkH,y
|
||||
eor DRV.CmdBuf.Sum,y
|
||||
bne DRV.DO.CMD.ERR
|
||||
|
||||
dey
|
||||
bpl .1
|
||||
bne .1
|
||||
|
||||
ldy #4 Read 4 bytes DATE/TIME + 1 Byte Checksum
|
||||
|
||||
@ -505,17 +525,27 @@ DRV.DO.CMD.W lda #$B1 lda (),y
|
||||
|
||||
sec
|
||||
.HS 90 BCC
|
||||
.1 clc
|
||||
DRV.SSCWrite.1 clc
|
||||
|
||||
.2 jsr $200
|
||||
jsr DRV.SSCSend
|
||||
DRV.SSCWrite.2 jsr $200
|
||||
|
||||
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
|
||||
sta DRV.CmdBuf.Sum
|
||||
iny
|
||||
bne .2
|
||||
bne DRV.SSCWrite.2
|
||||
|
||||
inc DRV.BUFF+1
|
||||
bcs .1
|
||||
bcs DRV.SSCWrite.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.S bit SSC.STATUS SELF MODIFIED
|
||||
bmi DRV.SSCClose.S
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.SSCSend pha
|
||||
DRV.SSCSend tax
|
||||
|
||||
DRV.SSCSend.S lda SSC.STATUS SELF MODIFIED
|
||||
and #SSC.STATUS.TDRE Outgoing char?
|
||||
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
|
||||
*--------------------------------------
|
||||
DRV.SSCGet
|
||||
@ -569,12 +601,6 @@ DRV.200 bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK2
|
||||
rts
|
||||
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
|
||||
*--------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user