mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-15 09:29:35 +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.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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
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
|
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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue
Block a user