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.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
*--------------------------------------

View File

@ -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

View File

@ -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
*--------------------------------------

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

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
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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*--------------------------------------