mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-08 08:33:37 +00:00
Kernel 0.94+
This commit is contained in:
parent
01d23aec78
commit
cc62310a01
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -122,9 +122,9 @@ CS.RUN.GetMyZone
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.GetZoneList
|
CS.RUN.GetZoneList
|
||||||
>LDYAI 1024
|
>LDYAI 1024
|
||||||
>STYA.G P.LookupName+$08 BufLen
|
>STYA.G P.GetZoneList+$08 BufLen
|
||||||
>LDYA BufPtr
|
>LDYA BufPtr
|
||||||
>STYA.G P.LookupName+$0A BufPtr
|
>STYA.G P.GetZoneList+$0A BufPtr
|
||||||
|
|
||||||
>LDA.G P.GetInfo+$0A BRIDGE
|
>LDA.G P.GetInfo+$0A BRIDGE
|
||||||
>STA.G P.GetZoneList+$0E
|
>STA.G P.GetZoneList+$0E
|
||||||
|
|
212
BIN/FORMAT.S.txt
212
BIN/FORMAT.S.txt
|
@ -41,6 +41,8 @@ bCustomBlkSize .BS 1
|
||||||
bHighDensity .BS 1
|
bHighDensity .BS 1
|
||||||
bExtraTrack .BS 1
|
bExtraTrack .BS 1
|
||||||
bVerify .BS 1
|
bVerify .BS 1
|
||||||
|
|
||||||
|
TimeOut .BS 1
|
||||||
ZS.END
|
ZS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -50,7 +52,7 @@ CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.DA #$61 6502,Level 1 (65c02)
|
.DA #$61 6502,Level 1 (65c02)
|
||||||
.DA #1 BIN Layout Version 1
|
.DA #1 BIN Layout Version 1
|
||||||
.DA #0 S.PS.F.EVENT
|
.DA #S.PS.F.EVENT
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA CS.END-CS.START Code Size (without Constants)
|
.DA CS.END-CS.START Code Size (without Constants)
|
||||||
.DA DS.END-DS.START Data SegmentSize
|
.DA DS.END-DS.START Data SegmentSize
|
||||||
|
@ -94,7 +96,7 @@ CS.RUN ldy #S.PS.ARGC
|
||||||
lda Index
|
lda Index
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcc .11
|
bcc .11
|
||||||
|
|
||||||
jmp .8
|
jmp .8
|
||||||
|
|
||||||
.11 >STYA ZPPtr1
|
.11 >STYA ZPPtr1
|
||||||
|
@ -102,7 +104,7 @@ CS.RUN ldy #S.PS.ARGC
|
||||||
cmp #'-'
|
cmp #'-'
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
|
@ -116,19 +118,19 @@ CS.RUN ldy #S.PS.ARGC
|
||||||
|
|
||||||
.2 jsr CS.RUN.CheckOpt
|
.2 jsr CS.RUN.CheckOpt
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
cpy #bCustomBlkSize
|
cpy #bCustomBlkSize
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
inc Index
|
inc Index
|
||||||
lda Index
|
lda Index
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>SYSCALL AToI
|
>SYSCALL AToI
|
||||||
>STYA BlkCnt
|
>STYA BlkCnt
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.99 >PUSHW L.MSG.USAGE1
|
.99 >PUSHW L.MSG.USAGE1
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
@ -137,7 +139,7 @@ CS.RUN ldy #S.PS.ARGC
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
lda #E.SYN
|
lda #E.SYN
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.4 lda hDevID
|
.4 lda hDevID
|
||||||
bne .5 Already have a dev...go get VolName
|
bne .5 Already have a dev...go get VolName
|
||||||
|
@ -148,7 +150,7 @@ CS.RUN ldy #S.PS.ARGC
|
||||||
|
|
||||||
stx hDevID
|
stx hDevID
|
||||||
>STYA ZPPtrFD
|
>STYA ZPPtrFD
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
>STYA ZPPtrDevName
|
>STYA ZPPtrDevName
|
||||||
bra .10
|
bra .10
|
||||||
|
@ -181,7 +183,7 @@ CS.RUN.Format jsr CS.RUN.GetDevStatus
|
||||||
|
|
||||||
bit bLL
|
bit bLL
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
jsr CS.RUN.LL
|
jsr CS.RUN.LL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -198,12 +200,12 @@ CS.RUN.Format jsr CS.RUN.GetDevStatus
|
||||||
>LDYA L.MSG.OK
|
>LDYA L.MSG.OK
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.8 >PUSHB DSSS0000
|
.8 >PUSHB DSSS0000
|
||||||
>PUSHW pData
|
>PUSHW pData
|
||||||
>SYSCALL Online
|
>SYSCALL Online
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -222,10 +224,10 @@ CS.RUN.Format jsr CS.RUN.GetDevStatus
|
||||||
CS.RUN.GetDevStatus
|
CS.RUN.GetDevStatus
|
||||||
lda bCustomBlkSize
|
lda bCustomBlkSize
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
>PUSHB hDevID
|
>PUSHB hDevID
|
||||||
>PUSHEA.G DIB
|
>PUSHEA.G DIB
|
||||||
|
|
||||||
>SYSCALL GetDevStatus
|
>SYSCALL GetDevStatus
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -234,7 +236,7 @@ CS.RUN.GetDevStatus
|
||||||
iny
|
iny
|
||||||
ora (pData),y
|
ora (pData),y
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
sta BlkCnt+1
|
sta BlkCnt+1
|
||||||
stx BlkCnt
|
stx BlkCnt
|
||||||
|
@ -251,20 +253,20 @@ CS.RUN.GetDevStatus
|
||||||
CS.RUN.GET.DSSS0000
|
CS.RUN.GET.DSSS0000
|
||||||
ldy #S.FD.DEV.BUSID
|
ldy #S.FD.DEV.BUSID
|
||||||
lda (ZPPtrFD),y 00000SSS
|
lda (ZPPtrFD),y 00000SSS
|
||||||
|
|
||||||
lsr
|
lsr
|
||||||
ror
|
ror
|
||||||
ror
|
ror
|
||||||
ror
|
ror
|
||||||
pha SSS00000
|
pha SSS00000
|
||||||
|
|
||||||
iny S.FD.DEV.DEVID
|
iny S.FD.DEV.DEVID
|
||||||
|
|
||||||
lda (ZPPtrFD),y
|
lda (ZPPtrFD),y
|
||||||
dec 0/1
|
dec 0/1
|
||||||
ror in C
|
ror in C
|
||||||
pla
|
pla
|
||||||
ror
|
ror
|
||||||
sta DSSS0000
|
sta DSSS0000
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
@ -276,15 +278,15 @@ CS.RUN.LL >LDA.G DIB+S.DIB.T
|
||||||
lda #0
|
lda #0
|
||||||
bit bExtraTrack
|
bit bExtraTrack
|
||||||
bpl .10
|
bpl .10
|
||||||
|
|
||||||
ora #8
|
ora #8
|
||||||
|
|
||||||
.10 bit bHighDensity
|
.10 bit bHighDensity
|
||||||
bpl .11
|
bpl .11
|
||||||
|
|
||||||
ora #16
|
ora #16
|
||||||
|
|
||||||
.11 tay
|
.11 tay
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.12 lda Disk2.Default,y
|
.12 lda Disk2.Default,y
|
||||||
|
@ -293,57 +295,58 @@ CS.RUN.LL >LDA.G DIB+S.DIB.T
|
||||||
inx
|
inx
|
||||||
cpx #6
|
cpx #6
|
||||||
bne .12
|
bne .12
|
||||||
|
|
||||||
.1 >PUSHW L.MSG.LL
|
.1 >PUSHW L.MSG.LL
|
||||||
>PUSHW BlkCnt
|
>PUSHW BlkCnt
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDA.G DIB+S.DIB.T
|
>LDA.G DIB+S.DIB.T
|
||||||
cmp #S.DIB.T.DISKII
|
cmp #S.DIB.T.DISKII
|
||||||
beq CS.RUN.LL.DISKII
|
beq CS.RUN.LL.DISKII
|
||||||
|
|
||||||
>PUSHB hDevID
|
>PUSHB hDevID
|
||||||
>PUSHBI IOCTL.FORMAT
|
>PUSHBI IOCTL.FORMAT
|
||||||
>PUSHEA.G IOCTL
|
>PUSHEA.G IOCTL
|
||||||
|
|
||||||
>SYSCALL IOCTL
|
>SYSCALL IOCTL
|
||||||
|
|
||||||
.9
|
.9
|
||||||
CS.RUN.LL.RTS rts
|
CS.RUN.LL.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LL.DISKII
|
CS.RUN.LL.DISKII
|
||||||
jsr CS.RUN.MotorOn
|
jsr CS.RUN.MotorOn
|
||||||
bcs CS.RUN.LL.RTS
|
bcs CS.RUN.LL.RTS
|
||||||
|
|
||||||
>SLEEP
|
lda #20
|
||||||
|
jsr CS.RUN.Wait
|
||||||
|
bcs CS.RUN.LL.RTS
|
||||||
|
|
||||||
|
>PUSHB DSSS0000
|
||||||
|
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate
|
||||||
|
|
||||||
|
lda #20
|
||||||
|
jsr CS.RUN.Wait
|
||||||
|
bcs CS.RUN.LL.RTS
|
||||||
|
|
||||||
>LDYAI 4096
|
>LDYAI 4096
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs CS.RUN.LL.RTS
|
bcs CS.RUN.LL.RTS
|
||||||
|
|
||||||
stx hTrackBuf
|
stx hTrackBuf
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
>PUSHB DSSS0000
|
|
||||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate
|
|
||||||
bcs CS.RUN.LL.RTS
|
|
||||||
|
|
||||||
>SLEEP
|
|
||||||
|
|
||||||
ldx #16
|
ldx #16
|
||||||
jsr CS.RUN.ZeroPtr1 16 sectors filled with 0, give some time to spin up
|
jsr CS.RUN.ZeroPtr1 16 sectors filled with 0, give some time to spin up
|
||||||
|
|
||||||
stz CurTrack
|
stz CurTrack
|
||||||
stz CurQTrack
|
stz CurQTrack
|
||||||
|
|
||||||
lda TrkCnt
|
lda TrkCnt
|
||||||
sta Counter
|
sta Counter
|
||||||
|
|
||||||
.1 >SLEEP
|
|
||||||
|
|
||||||
jsr CS.RUN.CheckCtrlC
|
.1 jsr CS.RUN.CheckCtrlC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHW L.MSG.LLDISK2
|
>PUSHW L.MSG.LLDISK2
|
||||||
|
@ -364,38 +367,53 @@ CS.RUN.LL.DISKII
|
||||||
|
|
||||||
dec Counter
|
dec Counter
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
inc CurTrack
|
inc CurTrack
|
||||||
|
|
||||||
lda CurQTrack
|
lda CurQTrack
|
||||||
* clc
|
* clc
|
||||||
adc Stepping
|
adc Stepping
|
||||||
tax
|
tax
|
||||||
|
|
||||||
jsr CS.RUN.SeekToX
|
jsr CS.RUN.SeekToX
|
||||||
bcc .1
|
bra .1
|
||||||
|
|
||||||
.9 pha
|
.9 pha
|
||||||
jsr CS.RUN.MotorOff
|
jsr CS.RUN.MotorOff
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 ldx #0
|
|
||||||
jsr CS.RUN.SeekToX
|
|
||||||
|
|
||||||
>PUSHW L.MSG.CRLF
|
.8 >PUSHW L.MSG.CRLF
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.CheckCtrlC
|
||||||
|
bcs .9
|
||||||
|
|
||||||
bit bVerify
|
bit bVerify
|
||||||
bpl .80
|
bpl .80
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
jsr CS.RUN.SeekToX
|
||||||
|
|
||||||
jsr CS.RUN.LL.DISKII.V
|
jsr CS.RUN.LL.DISKII.V
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
|
jsr CS.RUN.MotorOn
|
||||||
|
|
||||||
.80 jmp CS.RUN.MotorOff
|
lda #20
|
||||||
|
jsr CS.RUN.Wait
|
||||||
|
|
||||||
|
.80
|
||||||
|
>PUSHB DSSS0000
|
||||||
|
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate
|
||||||
|
|
||||||
|
lda #20
|
||||||
|
jsr CS.RUN.Wait
|
||||||
|
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LL.DISKII.V
|
CS.RUN.LL.DISKII.V
|
||||||
lda hTrackBuf
|
lda hTrackBuf
|
||||||
|
@ -407,19 +425,19 @@ CS.RUN.LL.DISKII.V
|
||||||
|
|
||||||
stx hTrackBuf
|
stx hTrackBuf
|
||||||
bra .11
|
bra .11
|
||||||
|
|
||||||
.10 >SYSCALL GetMemPtr
|
.10 >SYSCALL GetMemPtr
|
||||||
.11 >STYA.G IOCTL+S.IOCTL.BUFPTR
|
.11 >STYA.G IOCTL+S.IOCTL.BUFPTR
|
||||||
|
|
||||||
>LDYA BlkCnt
|
>LDYA BlkCnt
|
||||||
>STYA.G IOCTL+S.IOCTL.BLKNUM
|
>STYA.G IOCTL+S.IOCTL.BLKNUM
|
||||||
|
|
||||||
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
||||||
iny
|
iny
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
stz CurTrack
|
stz CurTrack
|
||||||
|
|
||||||
lda TrkCnt
|
lda TrkCnt
|
||||||
sta Counter
|
sta Counter
|
||||||
|
|
||||||
|
@ -427,16 +445,16 @@ CS.RUN.LL.DISKII.V
|
||||||
|
|
||||||
.2 jsr CS.RUN.CheckCtrlC
|
.2 jsr CS.RUN.CheckCtrlC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CS.RUN.LL.DISKII.VBLK
|
jsr CS.RUN.LL.DISKII.VBLK
|
||||||
.99 bcs .9
|
.99 bcs .9
|
||||||
|
|
||||||
>INCW.G IOCTL+S.IOCTL.BLKNUM
|
>INCW.G IOCTL+S.IOCTL.BLKNUM
|
||||||
|
|
||||||
inx
|
inx
|
||||||
cpx #8
|
cpx #8
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
inc CurTrack
|
inc CurTrack
|
||||||
dec Counter
|
dec Counter
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -450,21 +468,21 @@ CS.RUN.LL.DISKII.V
|
||||||
|
|
||||||
.4 jsr CS.RUN.CheckCtrlC
|
.4 jsr CS.RUN.CheckCtrlC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>DECW.G IOCTL+S.IOCTL.BLKNUM
|
>DECW.G IOCTL+S.IOCTL.BLKNUM
|
||||||
|
|
||||||
jsr CS.RUN.LL.DISKII.VBLK
|
jsr CS.RUN.LL.DISKII.VBLK
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bpl .4
|
bpl .4
|
||||||
|
|
||||||
dec Counter
|
dec Counter
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
>LDYA L.MSG.OK
|
>LDYA L.MSG.OK
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LL.DISKII.VBLK
|
CS.RUN.LL.DISKII.VBLK
|
||||||
|
@ -483,7 +501,7 @@ CS.RUN.LL.DISKII.VBLK
|
||||||
>PUSHEA.G IOCTL
|
>PUSHEA.G IOCTL
|
||||||
>SYSCALL IOCTL
|
>SYSCALL IOCTL
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
pha
|
pha
|
||||||
>PUSHW L.MSG.ERR
|
>PUSHW L.MSG.ERR
|
||||||
pla
|
pla
|
||||||
|
@ -517,18 +535,18 @@ CS.RUN.ZeroPtr1 lda ZPPtr1+1
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
tay
|
tay
|
||||||
|
|
||||||
.1 sta (ZPPtr1),y
|
.1 sta (ZPPtr1),y
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.InitCat lda CatSize
|
CS.RUN.InitCat lda CatSize
|
||||||
|
@ -553,7 +571,7 @@ CS.RUN.InitCat lda CatSize
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.BuildCat jsr .7
|
CS.RUN.BuildCat jsr .7
|
||||||
|
|
||||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.GetProDOSCatSize
|
>LIBCALL hLIBBLKDEV,LIBBLKDEV.GetProDOSCatSize
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx CatBlkCnt
|
stx CatBlkCnt
|
||||||
|
@ -596,7 +614,7 @@ CS.RUN.BuildCat jsr .7
|
||||||
CS.RUN.WriteCat >PUSHW L.MSG.WRITECAT
|
CS.RUN.WriteCat >PUSHW L.MSG.WRITECAT
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
|
||||||
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
||||||
iny
|
iny
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
@ -604,7 +622,7 @@ CS.RUN.WriteCat >PUSHW L.MSG.WRITECAT
|
||||||
.1 >PUSHB hDevID
|
.1 >PUSHB hDevID
|
||||||
>PUSHBI IOCTL.WRITEBLOCK
|
>PUSHBI IOCTL.WRITEBLOCK
|
||||||
>PUSHEA.G IOCTL
|
>PUSHEA.G IOCTL
|
||||||
|
|
||||||
>SYSCALL IOCTL
|
>SYSCALL IOCTL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -624,27 +642,34 @@ CS.RUN.WriteCat >PUSHW L.MSG.WRITECAT
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT lda (pEvent)
|
||||||
|
bpl .9 is it a TIMER event?
|
||||||
|
|
||||||
|
lda TimeOut
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
dec TimeOut
|
||||||
|
.9 sec do not discard TIMER event
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hCatBuf
|
CS.QUIT lda hCatBuf
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.1 lda hTrackBuf
|
.1 lda hTrackBuf
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.2 lda hLIBBLKDEV
|
.2 lda hLIBBLKDEV
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>SYSCALL UnloadLib
|
>SYSCALL UnloadLib
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CheckOpt ldy #1
|
CS.RUN.CheckOpt ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
|
||||||
ldx #OptionVars-OptionList-1
|
ldx #OptionVars-OptionList-1
|
||||||
|
@ -663,12 +688,22 @@ CS.RUN.CheckOpt ldy #1
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CS.RUN.Wait sta TimeOut
|
||||||
|
|
||||||
|
.1 jsr CS.RUN.CheckCtrlC
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda TimeOut
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
CS.RUN.CheckCtrlC
|
CS.RUN.CheckCtrlC
|
||||||
phx
|
phx
|
||||||
phy
|
phy
|
||||||
|
|
||||||
>SLEEP
|
>SLEEP
|
||||||
|
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL FEOF
|
>SYSCALL FEOF
|
||||||
|
@ -683,7 +718,7 @@ CS.RUN.CheckCtrlC
|
||||||
beq .9 CS
|
beq .9 CS
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.9 ply
|
.9 ply
|
||||||
plx
|
plx
|
||||||
rts
|
rts
|
||||||
|
@ -695,9 +730,12 @@ hLIBBLKDEV .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE1 .AS "Usage : FORMAT <BLOCKDEV> [VOL.NAME]\r\n"
|
MSG.USAGE1 .AS "Usage : FORMAT <BLOCKDEV> [VOL.NAME]\r\n"
|
||||||
.AS " -L : Low-Level Format\r\n"
|
.AS " -L : Low-Level Format\r\n"
|
||||||
.AZ " -H : 35trk drives, High Density: 48 tracks, 384 Blocks\r\n"
|
.AS " -H : 35trk drives, High Density: 48 tracks, 384 Blocks\r\n"
|
||||||
MSG.USAGE2 .AS " -X : 40trk drives, 320 Blocks, combined with -H, 432 Blocks\r\n"
|
.AZ " -X : 40trk drives, 320 Blocks\r\n"
|
||||||
.AS " -V : Verify\r\n"
|
.AZ "-H -X : 40trk drives, 432 Blocks\r\n"
|
||||||
|
MSG.USAGE2 .AS " -D : Rana Elite II 640 Blocks, 2 Sides\r\n"
|
||||||
|
.AS "-H -D : Rana Elite III 1280 Blocks, 2 Sides\r\n"
|
||||||
|
.AS "-L -V : Verify After LLF\r\n"
|
||||||
.AS " -B xxxx : Smrtprt, Override Device block size\r\n"
|
.AS " -B xxxx : Smrtprt, Override Device block size\r\n"
|
||||||
.AZ " -1-9 : Catalog Size (Blocks)\r\n"
|
.AZ " -1-9 : Catalog Size (Blocks)\r\n"
|
||||||
MSG.OK .AZ "[OK]"
|
MSG.OK .AZ "[OK]"
|
||||||
|
|
|
@ -15,7 +15,6 @@ BUFSIZE .EQ 256
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
ZPBufPtr .BS 2
|
ZPBufPtr .BS 2
|
||||||
ZPBufLen .BS 2
|
|
||||||
hBuf .BS 1
|
hBuf .BS 1
|
||||||
hDev .BS 1
|
hDev .BS 1
|
||||||
TimeOut .BS 1
|
TimeOut .BS 1
|
||||||
|
@ -38,7 +37,7 @@ CS.START cld
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.MSG.USAGE .DA MSG.USAGE
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
L.MSG.DEVOK .DA MSG.DEVOK
|
L.MSG.DEVOK .DA MSG.DEVOK
|
||||||
|
@ -50,22 +49,22 @@ CS.INIT clc
|
||||||
CS.RUN lda #1
|
CS.RUN lda #1
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHBI O.RDWR
|
>PUSHBI O.RDWR
|
||||||
>PUSHBI 0 type
|
>PUSHBI 0 type
|
||||||
>PUSHWZ auxtype
|
>PUSHWZ auxtype
|
||||||
>SYSCALL FOpen
|
>SYSCALL FOpen
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
stx hDev
|
sta hDev
|
||||||
>LDYA L.MSG.DEVOK
|
>LDYA L.MSG.DEVOK
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
|
||||||
>LDYAI BUFSIZE
|
>LDYAI BUFSIZE
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPBufPtr
|
>STYA ZPBufPtr
|
||||||
stx hBuf
|
stx hBuf
|
||||||
|
|
||||||
|
@ -76,31 +75,32 @@ CS.RUN lda #1
|
||||||
|
|
||||||
lda #E.SYN
|
lda #E.SYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99
|
||||||
|
CS.RUN.RTS rts
|
||||||
|
*--------------------------------------
|
||||||
CS.RUN.LOOP >SLEEP
|
CS.RUN.LOOP >SLEEP
|
||||||
|
|
||||||
lda hDev
|
lda hDev
|
||||||
>SYSCALL FEOF
|
>SYSCALL FEOF
|
||||||
bcs .99
|
bcs CS.RUN.RTS
|
||||||
tay
|
tay
|
||||||
bne .2 EOF, no char
|
bne .1 EOF, no char
|
||||||
|
|
||||||
>PUSHWI BUFSIZE
|
>PUSHWI BUFSIZE
|
||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
lda hDev
|
lda hDev
|
||||||
>SYSCALL FRead
|
>SYSCALL FRead
|
||||||
bcc .1
|
bcs CS.RUN.RTS
|
||||||
.99 rts
|
|
||||||
|
>PUSHYA len
|
||||||
.1 >PUSHYA len
|
|
||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
|
|
||||||
>SYSCALL FWrite
|
>SYSCALL FWrite
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.2 ldy #S.PS.hStdIn
|
.1 ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
|
|
||||||
>SYSCALL FEOF
|
>SYSCALL FEOF
|
||||||
|
@ -108,27 +108,28 @@ CS.RUN.LOOP >SLEEP
|
||||||
tay
|
tay
|
||||||
bne CS.RUN.LOOP EOF = true, no char from STDIN
|
bne CS.RUN.LOOP EOF = true, no char from STDIN
|
||||||
|
|
||||||
>PUSHWI BUFSIZE
|
>PUSHWI BUFSIZE
|
||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL FRead
|
>SYSCALL FRead
|
||||||
.3 bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPBufLen
|
tax
|
||||||
lda (ZPBufPtr)
|
lda (ZPBufPtr)
|
||||||
cmp #$14 Ctrl-T
|
eor #$14 Ctrl-T
|
||||||
beq .9
|
beq .8
|
||||||
|
|
||||||
>PUSHW ZPBufLen
|
txa
|
||||||
|
>PUSHYA len
|
||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
lda hDev
|
lda hDev
|
||||||
>SYSCALL FWrite
|
>SYSCALL FWrite
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jmp CS.RUN.LOOP
|
jmp CS.RUN.LOOP
|
||||||
|
|
||||||
.9 rts
|
.8 sec
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT lda (pEvent)
|
CS.DOEVENT lda (pEvent)
|
||||||
bpl .9 is it a TIMER event?
|
bpl .9 is it a TIMER event?
|
||||||
|
|
914
DRV/PPPSSC.DRV.S.txt
Normal file
914
DRV/PPPSSC.DRV.S.txt
Normal file
|
@ -0,0 +1,914 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
.LIST OFF
|
||||||
|
.OP 65C02
|
||||||
|
.OR $2000
|
||||||
|
.TF drv/pppssc.drv
|
||||||
|
*--------------------------------------
|
||||||
|
.INB inc/macros.i
|
||||||
|
.INB inc/a2osx.i
|
||||||
|
.INB inc/mli.e.i
|
||||||
|
.INB inc/com.i
|
||||||
|
.INB inc/com.6551.i
|
||||||
|
.INB inc/nic.i
|
||||||
|
*--------------------------------------
|
||||||
|
INBUF.SIZE .EQ $800
|
||||||
|
*--------------------------------------
|
||||||
|
.DUMMY
|
||||||
|
.OR ZPBIN
|
||||||
|
ZS.START
|
||||||
|
ZPArgsPtr .BS 2
|
||||||
|
ZPPtr1 .BS 2
|
||||||
|
ZPPtr2 .BS 2
|
||||||
|
ZPBufLen .BS 2
|
||||||
|
ZPIOCTL .BS 2
|
||||||
|
ZPBufPtr .BS 2
|
||||||
|
ZPCount .BS 2
|
||||||
|
ZPCount2 .BS 2
|
||||||
|
FCS .BS 2
|
||||||
|
Len .BS 1
|
||||||
|
hETCFILE .BS 1
|
||||||
|
|
||||||
|
ZS.END .ED
|
||||||
|
*--------------------------------------
|
||||||
|
* File Header (16 Bytes)
|
||||||
|
*--------------------------------------
|
||||||
|
CS.START cld
|
||||||
|
jmp Dev.Detect cld,jmp abs=DRV
|
||||||
|
.DA #$61 6502,Level 1 (65c02)
|
||||||
|
.DA #1 DRV Layout Version 1
|
||||||
|
.DA 0
|
||||||
|
.DA CS.END-CS.START Code Length
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
* Relocation Table
|
||||||
|
*--------------------------------------
|
||||||
|
L.MSG.DETECT .DA MSG.DETECT
|
||||||
|
L.MSG.DETECT.OK .DA MSG.DETECT.OK
|
||||||
|
L.MSG.DETECT.KO .DA MSG.DETECT.KO
|
||||||
|
L.DRV.CS.START .DA DRV.CS.START
|
||||||
|
L.FD.DEV .DA FD.DEV
|
||||||
|
L.FD.DEV.NAME .DA FD.DEV.NAME
|
||||||
|
L.ETCFILE .DA ETCFILE
|
||||||
|
L.MSG.ETCFILE .DA MSG.ETCFILE
|
||||||
|
L.MSG.BUFLEN .DA MSG.BUFLEN
|
||||||
|
L.MSG.HEXDUMP .DA MSG.HEXDUMP
|
||||||
|
L.PPP.CfgReg .DA PPP.CfgReg
|
||||||
|
L.RCV.Buf .DA RCV.Buf
|
||||||
|
L.RCV.Bufp1 .DA RCV.Buf+1
|
||||||
|
.DA 0 End Of Reloc Table
|
||||||
|
*--------------------------------------
|
||||||
|
Dev.Detect >STYA ZPArgsPtr
|
||||||
|
|
||||||
|
>LDYA L.MSG.DETECT
|
||||||
|
>SYSCALL PutS
|
||||||
|
stz ZPPtr1
|
||||||
|
|
||||||
|
lda #$C1
|
||||||
|
sta ZPPtr1+1
|
||||||
|
|
||||||
|
.1 and #$0f
|
||||||
|
tay
|
||||||
|
lda A2osX.S,y
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
ldx #DEVSIG.Length-1
|
||||||
|
|
||||||
|
.2 ldy DEVSIG.Offset,x
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
cmp DEVSIG.Value,x
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
bra .4
|
||||||
|
|
||||||
|
.3 inc FD.DEV.NAME+3
|
||||||
|
inc ZPPtr1+1 no match, try next slot....
|
||||||
|
lda ZPPtr1+1
|
||||||
|
cmp #$C8
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>LDYA L.MSG.DETECT.KO
|
||||||
|
>SYSCALL PutS
|
||||||
|
|
||||||
|
lda #MLI.E.NODEV Not Found in any slot, exiting
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.4 lda ZPPtr1+1
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
clc
|
||||||
|
adc #$8F
|
||||||
|
sta DEVSLOTn08F
|
||||||
|
|
||||||
|
jsr SSC.Init
|
||||||
|
jsr PPP.ETCFILE
|
||||||
|
jsr PPP.Init
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>PUSHW L.MSG.DETECT.OK
|
||||||
|
>PUSHW L.FD.DEV.NAME
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL PrintF
|
||||||
|
|
||||||
|
>PUSHWI DRV.END
|
||||||
|
>PUSHWI DRV.CS.END-DRV.CS.START
|
||||||
|
>PUSHWI DRV.CS.START
|
||||||
|
>LDYA L.DRV.CS.START
|
||||||
|
>SYSCALL InsDrv
|
||||||
|
.99 bcs .9
|
||||||
|
|
||||||
|
>STYA FD.DEV+S.FD.DEV.DRVPTR
|
||||||
|
|
||||||
|
>PUSHW L.FD.DEV
|
||||||
|
>PUSHW L.FD.DEV.NAME
|
||||||
|
>SYSCALL MKDev
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda FD.DEV.NAME+3
|
||||||
|
and #$0F
|
||||||
|
tax
|
||||||
|
lda #A2osX.S.NIC
|
||||||
|
sta A2osX.S,x
|
||||||
|
|
||||||
|
.9
|
||||||
|
Dev.Detect.RTS rts
|
||||||
|
*--------------------------------------
|
||||||
|
PPP.ETCFILE >PUSHW L.ETCFILE
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
>PUSHBI 0
|
||||||
|
>PUSHWZ
|
||||||
|
>SYSCALL FOpen
|
||||||
|
bcs Dev.Detect.RTS
|
||||||
|
|
||||||
|
sta hETCFILE
|
||||||
|
|
||||||
|
>PUSHW L.MSG.ETCFILE
|
||||||
|
>PUSHW L.ETCFILE
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL PrintF
|
||||||
|
|
||||||
|
.1 >PUSHB hETCFILE
|
||||||
|
>PUSHW L.RCV.Buf
|
||||||
|
>PUSHWI 255
|
||||||
|
>SYSCALL FGetS
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
lda RCV.Buf
|
||||||
|
cmp #'?'
|
||||||
|
bne .7
|
||||||
|
|
||||||
|
>LDYA L.RCV.Buf
|
||||||
|
>SYSCALL PutS
|
||||||
|
|
||||||
|
>LDYA L.RCV.Bufp1
|
||||||
|
jsr SSC.WriteYA
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.2 jsr SSC.Read
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
tya
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta RCV.Buf,y
|
||||||
|
>LDYA L.RCV.Buf
|
||||||
|
>SYSCALL PutS
|
||||||
|
|
||||||
|
.7 bra .1
|
||||||
|
|
||||||
|
.8 cmp #MLI.E.EOF
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
clc
|
||||||
|
|
||||||
|
.9 php
|
||||||
|
pha
|
||||||
|
lda hETCFILE
|
||||||
|
>SYSCALL FClose
|
||||||
|
pla
|
||||||
|
plp
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
PPP.Init >LDYAI PPP.CfgReg.LEN
|
||||||
|
>STYA ZPBufLen
|
||||||
|
>LDYA L.PPP.CfgReg
|
||||||
|
jsr PPPFCS16
|
||||||
|
|
||||||
|
>LDYA L.PPP.CfgReg
|
||||||
|
jsr DumpBuf
|
||||||
|
|
||||||
|
>LDYA L.PPP.CfgReg
|
||||||
|
ldx #PPP.CfgReg.LEN
|
||||||
|
|
||||||
|
jsr SSC.WriteYAX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.1 jsr SSC.Read
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
tya
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
sty ZPBufLen
|
||||||
|
stz ZPBufLen+1
|
||||||
|
|
||||||
|
>LDYA L.RCV.Buf
|
||||||
|
jsr DumpBuf
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
* clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
SSC.Init ldx DEVSLOTn08F
|
||||||
|
stz SSC.RESET-$8F,x
|
||||||
|
|
||||||
|
lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
|
||||||
|
sta SSC.CTL-$8F,x
|
||||||
|
lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR
|
||||||
|
sta SSC.CMD-$8F,x
|
||||||
|
|
||||||
|
lda SSC.DATA-$8F,x discard any garbage byte
|
||||||
|
lda SSC.STATUS-$8F,x clear any IRQ pending
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
SSC.WriteYA >STYA ZPPtr1
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #C.CR
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda #C.LF
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
sty Len
|
||||||
|
|
||||||
|
bra SSC.Write
|
||||||
|
|
||||||
|
SSC.WriteYAX >STYA ZPPtr1
|
||||||
|
stx Len
|
||||||
|
|
||||||
|
SSC.Write php
|
||||||
|
sei
|
||||||
|
|
||||||
|
ldx DEVSLOTn08F
|
||||||
|
|
||||||
|
lda SSC.STATUS-$8F,x
|
||||||
|
bit #SSC.STATUS.nDSR true when 0
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 lda SSC.STATUS-$8F,x
|
||||||
|
and #SSC.STATUS.TDRE Register Empty ?
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
sta SSC.DATA-$8F,x
|
||||||
|
iny
|
||||||
|
cpy Len
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.2 lda SSC.STATUS-$8F,x
|
||||||
|
and #SSC.STATUS.TDRE Register Empty ?
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 plp
|
||||||
|
lda #MLI.E.IO
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
SSC.Read php
|
||||||
|
sei
|
||||||
|
|
||||||
|
ldx DEVSLOTn08F
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 lda SSC.STATUS-$8F,x
|
||||||
|
bit #SSC.STATUS.nDSR true when 0
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
phy
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 bit #SSC.STATUS.RDRF incoming char?
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
ply
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 ply
|
||||||
|
|
||||||
|
lda SSC.DATA-$8F,x
|
||||||
|
sta RCV.Buf,y
|
||||||
|
iny
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.9 lda #MLI.E.IO
|
||||||
|
plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
DumpBuf >STYA ZPPtr1
|
||||||
|
|
||||||
|
>PUSHW L.MSG.BUFLEN
|
||||||
|
>PUSHW ZPBufLen
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL PrintF
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.1 >PUSHW L.MSG.HEXDUMP
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 >PUSHB (ZPPtr1),y
|
||||||
|
iny
|
||||||
|
cpy #16
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
>PUSHBI 16
|
||||||
|
>SYSCALL PrintF
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda ZPPtr1
|
||||||
|
adc #16
|
||||||
|
sta ZPPtr1
|
||||||
|
lda ZPPtr1+1
|
||||||
|
adc #0
|
||||||
|
sta ZPPtr1+1
|
||||||
|
|
||||||
|
lda ZPBufLen
|
||||||
|
sec
|
||||||
|
sbc #16
|
||||||
|
sta ZPBufLen
|
||||||
|
lda ZPBufLen+1
|
||||||
|
sbc #0
|
||||||
|
sta ZPBufLen+1
|
||||||
|
bcc .9
|
||||||
|
|
||||||
|
ora ZPBufLen
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.END
|
||||||
|
DEVSIG.Offset .HS 05070B0C
|
||||||
|
DEVSIG.Value .HS 38180131
|
||||||
|
DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset
|
||||||
|
MSG.DETECT .AZ "PPP Driver For Apple SSC."
|
||||||
|
MSG.DETECT.OK .AZ "PPP Installed As Device : %s\r\n"
|
||||||
|
MSG.DETECT.KO .AZ "No SSC Found."
|
||||||
|
ETCFILE .AZ "${ROOT}etc/ppp.conf"
|
||||||
|
*--------------------------------------
|
||||||
|
MSG.ETCFILE .AZ "Executing %s File...\r\n"
|
||||||
|
MSG.BUFLEN .AZ "BufLen:%H\r\n"
|
||||||
|
MSG.HEXDUMP .AZ "%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h\r\n"
|
||||||
|
*--------------------------------------
|
||||||
|
FD.DEV .DA #S.FD.T.CDEV
|
||||||
|
.DA #0 HANDLER
|
||||||
|
.DA #0 BUSID
|
||||||
|
.DA #0 DEVID
|
||||||
|
.DA 0 BUSPTR
|
||||||
|
.BS 2 DRVPTR
|
||||||
|
.DA 0 DCBPTR
|
||||||
|
.DA 0 BUFPTR
|
||||||
|
FD.DEV.NAME .AZ "eth1"
|
||||||
|
*--------------------------------------
|
||||||
|
PPP.CfgReg .HS 7E
|
||||||
|
PPP.CfgReg.START
|
||||||
|
.HS FF03
|
||||||
|
.HS C021 LCP
|
||||||
|
PPP.CfgReg.LCP .HS 01 Configure-Request
|
||||||
|
.HS 01 ID
|
||||||
|
.DA /PPP.CfgReg.LCP.LEN,#PPP.CfgReg.LCP.LEN
|
||||||
|
.HS 01.04.05DC MRU
|
||||||
|
.HS 02.06.000A0000 ACCM
|
||||||
|
.HS 05.06.55334466 MAGIC
|
||||||
|
PPP.CfgReg.LCP.LEN .EQ *-PPP.CfgReg.LCP
|
||||||
|
.BS 2 FCS
|
||||||
|
.HS 7E
|
||||||
|
PPP.CfgReg.LEN .EQ *-PPP.CfgReg
|
||||||
|
*--------------------------------------
|
||||||
|
RCV.Buf .BS 256
|
||||||
|
*--------------------------------------
|
||||||
|
* Driver Code
|
||||||
|
*--------------------------------------
|
||||||
|
DRV.CS.START cld
|
||||||
|
jmp (.1,x)
|
||||||
|
.1 .DA STATUS
|
||||||
|
.DA A2osX.BADCALL
|
||||||
|
.DA A2osX.BADCALL
|
||||||
|
.DA A2osX.BADCALL
|
||||||
|
.DA CONTROL
|
||||||
|
.DA A2osX.BADCALL
|
||||||
|
.DA OPEN
|
||||||
|
.DA CLOSE
|
||||||
|
.DA READ
|
||||||
|
.DA WRITE
|
||||||
|
.DA IRQ
|
||||||
|
.DA 0 end or relocation
|
||||||
|
*--------------------------------------
|
||||||
|
STATUS jsr STATUS.CONTROL.Init
|
||||||
|
ldy #S.IOCTL.STATCODE
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
cmp #S.IOCTL.STATCODE.GETDIB
|
||||||
|
bne STATUS.DCB
|
||||||
|
|
||||||
|
ldy #S.DIB-1
|
||||||
|
.HS 2C bit abs
|
||||||
|
.1 ldy #3
|
||||||
|
|
||||||
|
.2 lda DIB,y
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
ldy #S.DCB.COM-1
|
||||||
|
.2 lda DCB,y
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 cmp #S.IOCTL.STATCODE.EOF
|
||||||
|
bne STATUS.9
|
||||||
|
|
||||||
|
lda DIB+S.DIB.S
|
||||||
|
and #S.DIB.S.OPENED
|
||||||
|
beq OPEN.E
|
||||||
|
|
||||||
|
lda INBUF.TAIL
|
||||||
|
eor INBUF.HEAD
|
||||||
|
bne .8 NO DATA? eof = TRUE
|
||||||
|
|
||||||
|
lda INBUF.TAIL+1
|
||||||
|
eor INBUF.HEAD+1
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 lda #0
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
STATUS.9 lda #MLI.E.BADCTL
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CONTROL jsr STATUS.CONTROL.Init
|
||||||
|
|
||||||
|
ldy #S.IOCTL.CTRLCODE
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
cmp #S.IOCTL.CTRLCODE.SETDCB
|
||||||
|
bne STATUS.9
|
||||||
|
|
||||||
|
ldy #S.DCB.COM-1
|
||||||
|
|
||||||
|
.2 lda (ZPBufPtr),y
|
||||||
|
sta DCB,y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
*--------------------------------------
|
||||||
|
OPEN lda DIB+S.DIB.S
|
||||||
|
bit #S.DIB.S.OPENED
|
||||||
|
beq OPEN.1
|
||||||
|
|
||||||
|
OPEN.E lda #MLI.E.OPEN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
OPEN.1 >LDYAI INBUF.SIZE
|
||||||
|
>SYSCALL2 GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
stx hINBUF
|
||||||
|
>STYA INBUF.PTR
|
||||||
|
>STYA READ.BUF+1
|
||||||
|
>STYA IRQ.BUF+1
|
||||||
|
|
||||||
|
stz INBUF.TAIL
|
||||||
|
stz INBUF.TAIL+1
|
||||||
|
stz INBUF.HEAD
|
||||||
|
stz INBUF.HEAD+1
|
||||||
|
stz INBUF.CNT
|
||||||
|
stz INBUF.CNT+1
|
||||||
|
|
||||||
|
php
|
||||||
|
sei
|
||||||
|
ldx DEVSLOTn08F
|
||||||
|
stz SSC.RESET-$8F,x
|
||||||
|
|
||||||
|
lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
|
||||||
|
sta SSC.CTL-$8F,x
|
||||||
|
lda #SSC.CMD.TE+SSC.CMD.DTR
|
||||||
|
sta SSC.CMD-$8F,x
|
||||||
|
|
||||||
|
lda SSC.DATA-$8F,x discard any garbage byte
|
||||||
|
lda SSC.STATUS-$8F,x clear any IRQ pending
|
||||||
|
|
||||||
|
lda #S.DIB.S.OPENED
|
||||||
|
tsb DIB+S.DIB.S
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CLOSE php
|
||||||
|
sei
|
||||||
|
ldx DEVSLOTn08F
|
||||||
|
stz SSC.RESET-$8F,x
|
||||||
|
|
||||||
|
lda #S.DIB.S.OPENED
|
||||||
|
trb DIB+S.DIB.S
|
||||||
|
|
||||||
|
lda hINBUF
|
||||||
|
>SYSCALL2 FreeMem
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
READ php
|
||||||
|
sei
|
||||||
|
jsr READ.WRITE.Init
|
||||||
|
|
||||||
|
lda INBUF.CNT
|
||||||
|
ora INBUF.CNT+1
|
||||||
|
beq READ.9
|
||||||
|
|
||||||
|
stz ZPCount2
|
||||||
|
stz ZPCount2+1
|
||||||
|
|
||||||
|
ldy INBUF.TAIL
|
||||||
|
|
||||||
|
READ.1 inc ZPCount
|
||||||
|
bne READ.BUF
|
||||||
|
|
||||||
|
inc ZPCount+1
|
||||||
|
beq READ.8
|
||||||
|
|
||||||
|
READ.BUF lda $FFFF,y SELF MODIFIED
|
||||||
|
sta (ZPBufPtr)
|
||||||
|
inc ZPBufPtr
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc ZPBufPtr+1
|
||||||
|
|
||||||
|
.1 inc ZPCount2
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
inc ZPCount2+1
|
||||||
|
|
||||||
|
.2 iny
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
inc READ.BUF+2
|
||||||
|
|
||||||
|
inc INBUF.TAIL+1
|
||||||
|
lda INBUF.TAIL+1
|
||||||
|
cmp /INBUF.SIZE
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
lda INBUF.PTR+1
|
||||||
|
sta READ.BUF+2
|
||||||
|
|
||||||
|
.3 lda INBUF.CNT
|
||||||
|
ldx INBUF.CNT+1
|
||||||
|
clc
|
||||||
|
sbc #0
|
||||||
|
bcs .4
|
||||||
|
dex
|
||||||
|
bmi .8
|
||||||
|
|
||||||
|
stx INBUF.CNT+1
|
||||||
|
|
||||||
|
.4 sta INBUF.CNT
|
||||||
|
bra READ.1
|
||||||
|
|
||||||
|
.8 sty INBUF.TAIL
|
||||||
|
|
||||||
|
READ.8 lda ZPCount2
|
||||||
|
ldy #S.IOCTL.BYTECNT
|
||||||
|
sta (ZPIOCTL),y
|
||||||
|
iny
|
||||||
|
lda ZPCount2+1
|
||||||
|
sta (ZPIOCTL),y
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
READ.9 lda SSC.STATUS-$8F,x
|
||||||
|
bit #SSC.STATUS.nDSR true when 0
|
||||||
|
beq .99
|
||||||
|
|
||||||
|
lda #MLI.E.IO
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
|
||||||
|
.99 lda #E.NODATA
|
||||||
|
plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
WRITE php
|
||||||
|
sei
|
||||||
|
jsr READ.WRITE.Init
|
||||||
|
|
||||||
|
lda SSC.STATUS-$8F,x
|
||||||
|
bit #SSC.STATUS.nDSR true when 0
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 inc ZPCount
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
inc ZPCount+1
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.2 lda SSC.STATUS-$8F,x
|
||||||
|
and #SSC.STATUS.TDRE Register Empty ?
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
lda (ZPBufPtr),y
|
||||||
|
sta SSC.DATA-$8F,x
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc ZPBufPtr+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #MLI.E.IO
|
||||||
|
plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
READ.WRITE.Init ldx DEVSLOTn08F
|
||||||
|
|
||||||
|
STATUS.CONTROL.Init
|
||||||
|
>STYA ZPIOCTL
|
||||||
|
|
||||||
|
ldy #S.IOCTL.BUFPTR
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta ZPBufPtr
|
||||||
|
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta ZPBufPtr+1
|
||||||
|
iny #S.IOCTL.BYTECNT
|
||||||
|
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
eor #$ff
|
||||||
|
sta ZPCount
|
||||||
|
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
eor #$ff
|
||||||
|
sta ZPCount+1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* IRQ Handler
|
||||||
|
* on exit, CC if handled
|
||||||
|
*--------------------------------------
|
||||||
|
IRQ ldx DEVSLOTn08F
|
||||||
|
lda SSC.STATUS-$8F,x
|
||||||
|
* and #SSC.STATUS.IRQ
|
||||||
|
bpl IRQ.9 IRQ from this device ? no, exit !!!!Applewin bug #308!!!!
|
||||||
|
|
||||||
|
bit #SSC.STATUS.RDRF incoming char?
|
||||||
|
beq IRQ.8
|
||||||
|
|
||||||
|
ldy INBUF.HEAD
|
||||||
|
|
||||||
|
IRQ.1 lda SSC.DATA-$8F,x read data to clear IRQ
|
||||||
|
IRQ.BUF sta $FFFF,y SELF MODIFIED
|
||||||
|
|
||||||
|
inc INBUF.CNT
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc INBUF.CNT+1
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
inc IRQ.BUF+2
|
||||||
|
|
||||||
|
inc INBUF.HEAD+1
|
||||||
|
lda INBUF.HEAD+1
|
||||||
|
cmp /INBUF.SIZE
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
lda INBUF.PTR+1
|
||||||
|
sta IRQ.BUF+2
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.2 bit SSC.STATUS-$8F,x
|
||||||
|
bmi IRQ.1
|
||||||
|
|
||||||
|
inc
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
sty INBUF.HEAD
|
||||||
|
|
||||||
|
IRQ.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
IRQ.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
PPPFCS16 >STYA ZPPtr1
|
||||||
|
|
||||||
|
lda #$ff
|
||||||
|
sta FCS
|
||||||
|
sta FCS+1
|
||||||
|
|
||||||
|
lda ZPBufLen
|
||||||
|
sec
|
||||||
|
sbc #4 minus 7E .... FCS FCS 7E
|
||||||
|
eor #$ff
|
||||||
|
sta ZPPtr2
|
||||||
|
|
||||||
|
lda ZPBufLen+1
|
||||||
|
sbc #0
|
||||||
|
eor #$ff
|
||||||
|
sta ZPPtr2+1
|
||||||
|
|
||||||
|
.1 inc ZPPtr2
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
inc ZPPtr2+1
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.2 inc ZPPtr1
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.3 lda (ZPPtr1)
|
||||||
|
eor FCS
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda FCS.LO,x
|
||||||
|
eor FCS+1
|
||||||
|
sta FCS
|
||||||
|
|
||||||
|
lda FCS.HI,x
|
||||||
|
sta FCS+1
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 lda FCS+1
|
||||||
|
eor #$ff
|
||||||
|
ldy #1
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
|
lda FCS
|
||||||
|
eor #$ff
|
||||||
|
iny
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
DRV.CS.END
|
||||||
|
FCS.LO .DA #$0000,#$1189,#$2312,#$329b,#$4624,#$57ad,#$6536,#$74bf
|
||||||
|
.DA #$8c48,#$9dc1,#$af5a,#$bed3,#$ca6c,#$dbe5,#$e97e,#$f8f7
|
||||||
|
.DA #$1081,#$0108,#$3393,#$221a,#$56a5,#$472c,#$75b7,#$643e
|
||||||
|
.DA #$9cc9,#$8d40,#$bfdb,#$ae52,#$daed,#$cb64,#$f9ff,#$e876
|
||||||
|
.DA #$2102,#$308b,#$0210,#$1399,#$6726,#$76af,#$4434,#$55bd
|
||||||
|
.DA #$ad4a,#$bcc3,#$8e58,#$9fd1,#$eb6e,#$fae7,#$c87c,#$d9f5
|
||||||
|
.DA #$3183,#$200a,#$1291,#$0318,#$77a7,#$662e,#$54b5,#$453c
|
||||||
|
.DA #$bdcb,#$ac42,#$9ed9,#$8f50,#$fbef,#$ea66,#$d8fd,#$c974
|
||||||
|
.DA #$4204,#$538d,#$6116,#$709f,#$0420,#$15a9,#$2732,#$36bb
|
||||||
|
.DA #$ce4c,#$dfc5,#$ed5e,#$fcd7,#$8868,#$99e1,#$ab7a,#$baf3
|
||||||
|
.DA #$5285,#$430c,#$7197,#$601e,#$14a1,#$0528,#$37b3,#$263a
|
||||||
|
.DA #$decd,#$cf44,#$fddf,#$ec56,#$98e9,#$8960,#$bbfb,#$aa72
|
||||||
|
.DA #$6306,#$728f,#$4014,#$519d,#$2522,#$34ab,#$0630,#$17b9
|
||||||
|
.DA #$ef4e,#$fec7,#$cc5c,#$ddd5,#$a96a,#$b8e3,#$8a78,#$9bf1
|
||||||
|
.DA #$7387,#$620e,#$5095,#$411c,#$35a3,#$242a,#$16b1,#$0738
|
||||||
|
.DA #$ffcf,#$ee46,#$dcdd,#$cd54,#$b9eb,#$a862,#$9af9,#$8b70
|
||||||
|
.DA #$8408,#$9581,#$a71a,#$b693,#$c22c,#$d3a5,#$e13e,#$f0b7
|
||||||
|
.DA #$0840,#$19c9,#$2b52,#$3adb,#$4e64,#$5fed,#$6d76,#$7cff
|
||||||
|
.DA #$9489,#$8500,#$b79b,#$a612,#$d2ad,#$c324,#$f1bf,#$e036
|
||||||
|
.DA #$18c1,#$0948,#$3bd3,#$2a5a,#$5ee5,#$4f6c,#$7df7,#$6c7e
|
||||||
|
.DA #$a50a,#$b483,#$8618,#$9791,#$e32e,#$f2a7,#$c03c,#$d1b5
|
||||||
|
.DA #$2942,#$38cb,#$0a50,#$1bd9,#$6f66,#$7eef,#$4c74,#$5dfd
|
||||||
|
.DA #$b58b,#$a402,#$9699,#$8710,#$f3af,#$e226,#$d0bd,#$c134
|
||||||
|
.DA #$39c3,#$284a,#$1ad1,#$0b58,#$7fe7,#$6e6e,#$5cf5,#$4d7c
|
||||||
|
.DA #$c60c,#$d785,#$e51e,#$f497,#$8028,#$91a1,#$a33a,#$b2b3
|
||||||
|
.DA #$4a44,#$5bcd,#$6956,#$78df,#$0c60,#$1de9,#$2f72,#$3efb
|
||||||
|
.DA #$d68d,#$c704,#$f59f,#$e416,#$90a9,#$8120,#$b3bb,#$a232
|
||||||
|
.DA #$5ac5,#$4b4c,#$79d7,#$685e,#$1ce1,#$0d68,#$3ff3,#$2e7a
|
||||||
|
.DA #$e70e,#$f687,#$c41c,#$d595,#$a12a,#$b0a3,#$8238,#$93b1
|
||||||
|
.DA #$6b46,#$7acf,#$4854,#$59dd,#$2d62,#$3ceb,#$0e70,#$1ff9
|
||||||
|
.DA #$f78f,#$e606,#$d49d,#$c514,#$b1ab,#$a022,#$92b9,#$8330
|
||||||
|
.DA #$7bc7,#$6a4e,#$58d5,#$495c,#$3de3,#$2c6a,#$1ef1,#$0f78
|
||||||
|
*--------------------------------------
|
||||||
|
FCS.HI .DA /$0000,/$1189,/$2312,/$329b,/$4624,/$57ad,/$6536,/$74bf
|
||||||
|
.DA /$8c48,/$9dc1,/$af5a,/$bed3,/$ca6c,/$dbe5,/$e97e,/$f8f7
|
||||||
|
.DA /$1081,/$0108,/$3393,/$221a,/$56a5,/$472c,/$75b7,/$643e
|
||||||
|
.DA /$9cc9,/$8d40,/$bfdb,/$ae52,/$daed,/$cb64,/$f9ff,/$e876
|
||||||
|
.DA /$2102,/$308b,/$0210,/$1399,/$6726,/$76af,/$4434,/$55bd
|
||||||
|
.DA /$ad4a,/$bcc3,/$8e58,/$9fd1,/$eb6e,/$fae7,/$c87c,/$d9f5
|
||||||
|
.DA /$3183,/$200a,/$1291,/$0318,/$77a7,/$662e,/$54b5,/$453c
|
||||||
|
.DA /$bdcb,/$ac42,/$9ed9,/$8f50,/$fbef,/$ea66,/$d8fd,/$c974
|
||||||
|
.DA /$4204,/$538d,/$6116,/$709f,/$0420,/$15a9,/$2732,/$36bb
|
||||||
|
.DA /$ce4c,/$dfc5,/$ed5e,/$fcd7,/$8868,/$99e1,/$ab7a,/$baf3
|
||||||
|
.DA /$5285,/$430c,/$7197,/$601e,/$14a1,/$0528,/$37b3,/$263a
|
||||||
|
.DA /$decd,/$cf44,/$fddf,/$ec56,/$98e9,/$8960,/$bbfb,/$aa72
|
||||||
|
.DA /$6306,/$728f,/$4014,/$519d,/$2522,/$34ab,/$0630,/$17b9
|
||||||
|
.DA /$ef4e,/$fec7,/$cc5c,/$ddd5,/$a96a,/$b8e3,/$8a78,/$9bf1
|
||||||
|
.DA /$7387,/$620e,/$5095,/$411c,/$35a3,/$242a,/$16b1,/$0738
|
||||||
|
.DA /$ffcf,/$ee46,/$dcdd,/$cd54,/$b9eb,/$a862,/$9af9,/$8b70
|
||||||
|
.DA /$8408,/$9581,/$a71a,/$b693,/$c22c,/$d3a5,/$e13e,/$f0b7
|
||||||
|
.DA /$0840,/$19c9,/$2b52,/$3adb,/$4e64,/$5fed,/$6d76,/$7cff
|
||||||
|
.DA /$9489,/$8500,/$b79b,/$a612,/$d2ad,/$c324,/$f1bf,/$e036
|
||||||
|
.DA /$18c1,/$0948,/$3bd3,/$2a5a,/$5ee5,/$4f6c,/$7df7,/$6c7e
|
||||||
|
.DA /$a50a,/$b483,/$8618,/$9791,/$e32e,/$f2a7,/$c03c,/$d1b5
|
||||||
|
.DA /$2942,/$38cb,/$0a50,/$1bd9,/$6f66,/$7eef,/$4c74,/$5dfd
|
||||||
|
.DA /$b58b,/$a402,/$9699,/$8710,/$f3af,/$e226,/$d0bd,/$c134
|
||||||
|
.DA /$39c3,/$284a,/$1ad1,/$0b58,/$7fe7,/$6e6e,/$5cf5,/$4d7c
|
||||||
|
.DA /$c60c,/$d785,/$e51e,/$f497,/$8028,/$91a1,/$a33a,/$b2b3
|
||||||
|
.DA /$4a44,/$5bcd,/$6956,/$78df,/$0c60,/$1de9,/$2f72,/$3efb
|
||||||
|
.DA /$d68d,/$c704,/$f59f,/$e416,/$90a9,/$8120,/$b3bb,/$a232
|
||||||
|
.DA /$5ac5,/$4b4c,/$79d7,/$685e,/$1ce1,/$0d68,/$3ff3,/$2e7a
|
||||||
|
.DA /$e70e,/$f687,/$c41c,/$d595,/$a12a,/$b0a3,/$8238,/$93b1
|
||||||
|
.DA /$6b46,/$7acf,/$4854,/$59dd,/$2d62,/$3ceb,/$0e70,/$1ff9
|
||||||
|
.DA /$f78f,/$e606,/$d49d,/$c514,/$b1ab,/$a022,/$92b9,/$8330
|
||||||
|
.DA /$7bc7,/$6a4e,/$58d5,/$495c,/$3de3,/$2c6a,/$1ef1,/$0f78
|
||||||
|
*--------------------------------------
|
||||||
|
DEVSLOTn08F .BS 1
|
||||||
|
hINBUF .BS 1
|
||||||
|
INBUF.PTR .BS 2
|
||||||
|
INBUF.TAIL .BS 2
|
||||||
|
INBUF.HEAD .BS 2
|
||||||
|
INBUF.CNT .BS 2
|
||||||
|
*--------------------------------------
|
||||||
|
DIB .DA #S.DIB.S.IRQ
|
||||||
|
.DA #0,#0,#0 size
|
||||||
|
>PSTR "SSC/PPP Driver "
|
||||||
|
.DA #S.DIB.T.NIC
|
||||||
|
.DA #0
|
||||||
|
.DA K.VER
|
||||||
|
*--------------------------------------
|
||||||
|
DCB .DA #S.DCB.T.NIC
|
||||||
|
.DA #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||||
|
.DA #S.DCB.NIC.LINK.OK+S.DCB.NIC.LINK.FD
|
||||||
|
.DA #S.DCB.NIC.SPEED.10
|
||||||
|
.HS 000000000000 MAC
|
||||||
|
.BS 12 IP/MASK/GW
|
||||||
|
*--------------------------------------
|
||||||
|
DRV.END
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/drv/pppssc.drv.s
|
||||||
|
ASM
|
|
@ -29,7 +29,8 @@ CORE.PSCount .EQ $D1
|
||||||
|
|
||||||
pPS .EQ $D2
|
pPS .EQ $D2
|
||||||
pEvent .EQ $D4
|
pEvent .EQ $D4
|
||||||
* .EQ $D6
|
hHandler .EQ $D6
|
||||||
|
* .EQ $D7
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PS Context : 40 bytes MAX
|
* PS Context : 40 bytes MAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -472,7 +473,7 @@ S.FD.T.LNK .EQ 8
|
||||||
S.FD.T.DSOCK .EQ 10
|
S.FD.T.DSOCK .EQ 10
|
||||||
S.FD.T.SSOCK .EQ 12
|
S.FD.T.SSOCK .EQ 12
|
||||||
S.FD.T.PIPE .EQ 14
|
S.FD.T.PIPE .EQ 14
|
||||||
S.FD.HANDLER .EQ 1 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....)
|
S.FD.HANDLER .EQ 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.FD.REG.REF .EQ 2
|
S.FD.REG.REF .EQ 2
|
||||||
S.FD.REG.IOBUF .EQ 3
|
S.FD.REG.IOBUF .EQ 3
|
||||||
|
|
|
@ -9,12 +9,12 @@ IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.D2.Ph0Off .EQ $C080
|
IO.D2.Ph0Off .EQ $C080
|
||||||
IO.D2.Ph0On .EQ $C081
|
IO.D2.Ph0On .EQ $C081
|
||||||
IO.D2.Ph1Off .EQ $C082
|
*IO.D2.Ph1Off .EQ $C082
|
||||||
IO.D2.Ph1On .EQ $C083
|
*IO.D2.Ph1On .EQ $C083
|
||||||
IO.D2.Ph2Off .EQ $C084
|
*IO.D2.Ph2Off .EQ $C084
|
||||||
IO.D2.Ph2On .EQ $C085
|
*IO.D2.Ph2On .EQ $C085
|
||||||
IO.D2.Ph3Off .EQ $C086
|
*IO.D2.Ph3Off .EQ $C086
|
||||||
IO.D2.Ph3On .EQ $C087
|
*IO.D2.Ph3On .EQ $C087
|
||||||
|
|
||||||
IO.D2.DrvOff .EQ $C088
|
IO.D2.DrvOff .EQ $C088
|
||||||
IO.D2.DrvOn .EQ $C089
|
IO.D2.DrvOn .EQ $C089
|
||||||
|
|
12
INC/LIBCIFS.I.txt
Normal file
12
INC/LIBCIFS.I.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
LIBCIFS.Negotiate .EQ 4
|
||||||
|
LIBCIFS.SessionSetup .EQ 6
|
||||||
|
LIBCIFS.TreeConnect .EQ 8
|
||||||
|
LIBCIFS.Mount .EQ 10
|
||||||
|
LIBCIFS.UMount .EQ 12
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE inc/libcifs.i
|
|
@ -34,7 +34,9 @@ S.SMB.H.PIDLO .EQ 26
|
||||||
S.SMB.H.UID .EQ 28
|
S.SMB.H.UID .EQ 28
|
||||||
S.SMB.H.MID .EQ 30
|
S.SMB.H.MID .EQ 30
|
||||||
*
|
*
|
||||||
S.SMB.H .EQ 32
|
S.SMB.H .EQ 32
|
||||||
|
*--------------------------------------
|
||||||
|
S.TRANS2.H .EQ 24
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SMB_INFO_STANDARD .EQ $0001
|
SMB_INFO_STANDARD .EQ $0001
|
||||||
SMB_INFO_QUERY_EA_SIZE .EQ $0002
|
SMB_INFO_QUERY_EA_SIZE .EQ $0002
|
||||||
|
|
|
@ -290,6 +290,32 @@ BB.ReadBlock lda blok figure out track & sector.
|
||||||
.9 ldy IO.D2.DrvOff,x
|
.9 ldy IO.D2.DrvOff,x
|
||||||
rts return error status in carry.
|
rts return error status in carry.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
BB.Wait phx (3)
|
||||||
|
|
||||||
|
.1 ldx #20 (2)
|
||||||
|
|
||||||
|
.2 dex (2)
|
||||||
|
bne .2 (3)
|
||||||
|
|
||||||
|
dec (2)
|
||||||
|
bne .1 (3)
|
||||||
|
|
||||||
|
plx (4)
|
||||||
|
|
||||||
|
rts (6)
|
||||||
|
*--------------------------------------
|
||||||
|
BB.Trk2Qtrk asl x2
|
||||||
|
sta .1+1
|
||||||
|
|
||||||
|
bit BB.HdrVol
|
||||||
|
bpl .1 x4
|
||||||
|
bvs .1 > $C0 ? (VOL=254)
|
||||||
|
|
||||||
|
lsr x3
|
||||||
|
|
||||||
|
.1 adc #$ff SELF MODIFIED
|
||||||
|
BB.Trk2Qtrk.RTS rts
|
||||||
|
*--------------------------------------
|
||||||
BB.Seek lda BB.HdrTrk get track we're on
|
BB.Seek lda BB.HdrTrk get track we're on
|
||||||
jsr BB.Trk2Qtrk
|
jsr BB.Trk2Qtrk
|
||||||
sta BB.CurrentQTrack
|
sta BB.CurrentQTrack
|
||||||
|
@ -302,8 +328,15 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||||
cmp BB.TargetQTrack
|
cmp BB.TargetQTrack
|
||||||
beq BB.Read
|
beq BB.Read
|
||||||
|
|
||||||
ldx BB.Slotn0 will do a ph0 off
|
tay
|
||||||
ldy BB.Slotn0
|
|
||||||
|
and #6
|
||||||
|
ora BB.Slotn0
|
||||||
|
tax
|
||||||
|
|
||||||
|
tya
|
||||||
|
inc
|
||||||
|
bra .3
|
||||||
|
|
||||||
.1 pha
|
.1 pha
|
||||||
|
|
||||||
|
@ -342,11 +375,10 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||||
|
|
||||||
sta IO.D2.Ph0On,x
|
sta IO.D2.Ph0On,x
|
||||||
sta IO.D2.Ph0On,y
|
sta IO.D2.Ph0On,y
|
||||||
|
|
||||||
lda #IO.D2.SeekTimeB
|
lda #IO.D2.SeekTimeB
|
||||||
jsr BB.Wait
|
jsr BB.Wait
|
||||||
|
|
||||||
.6 lda BB.CurrentQTrack
|
lda BB.CurrentQTrack
|
||||||
cmp BB.TargetQTrack
|
cmp BB.TargetQTrack
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
@ -355,33 +387,6 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||||
|
|
||||||
sta IO.D2.Ph0Off,x
|
sta IO.D2.Ph0Off,x
|
||||||
sta IO.D2.Ph0Off,y
|
sta IO.D2.Ph0Off,y
|
||||||
bra BB.Read
|
|
||||||
*--------------------------------------
|
|
||||||
BB.Wait phx (3)
|
|
||||||
|
|
||||||
.1 ldx #20 (2)
|
|
||||||
|
|
||||||
.2 dex (2)
|
|
||||||
bne .2 (3)
|
|
||||||
|
|
||||||
dec (2)
|
|
||||||
bne .1 (3)
|
|
||||||
|
|
||||||
plx (4)
|
|
||||||
|
|
||||||
rts (6)
|
|
||||||
*--------------------------------------
|
|
||||||
BB.Trk2Qtrk asl x2
|
|
||||||
sta .1+1
|
|
||||||
|
|
||||||
bit BB.HdrVol
|
|
||||||
bpl .1 x4
|
|
||||||
bvs .1 > $C0 ? (VOL=254)
|
|
||||||
|
|
||||||
lsr x3
|
|
||||||
|
|
||||||
.1 adc #$ff SELF MODIFIED
|
|
||||||
BB.Trk2Qtrk.RTS rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.Read ldx BB.Slotn0
|
BB.Read ldx BB.Slotn0
|
||||||
|
|
||||||
|
|
|
@ -24,39 +24,38 @@ D2Recalibrate >PULLB DrvSlt
|
||||||
jsr CheckDiskII
|
jsr CheckDiskII
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
* ldx Slotn0
|
ldx Slotn0
|
||||||
ldy Slotn0
|
ldy #168
|
||||||
|
|
||||||
|
.1 lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
lda #168
|
lda #IO.D2.SeekTimeR
|
||||||
|
jsr D2.Wait100usecA
|
||||||
.1 dec
|
|
||||||
dec
|
|
||||||
|
|
||||||
pha
|
|
||||||
|
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
|
||||||
|
tya
|
||||||
|
|
||||||
and #6
|
and #6
|
||||||
ora Slotn0
|
ora Slotn0
|
||||||
phy
|
tax
|
||||||
plx
|
lda IO.D2.Ph0On,x
|
||||||
tay
|
|
||||||
lda IO.D2.Ph0On,y
|
|
||||||
|
|
||||||
lda #IO.D2.SeekTimeR
|
lda #IO.D2.SeekTimeR
|
||||||
jsr D2.Wait100usecA
|
jsr D2.Wait100usecA
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,x
|
tya
|
||||||
|
|
||||||
lda #IO.D2.SeekTimeR
|
|
||||||
jsr D2.Wait100usecA
|
|
||||||
|
|
||||||
pla
|
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
jsr D2.Wait25600usec
|
ldy #20
|
||||||
|
|
||||||
* ldy Slotn0
|
.2 jsr D2.Wait25600usec
|
||||||
lda IO.D2.Ph0Off,y
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
jsr D2.Wait25600usec
|
jsr D2.Wait25600usec
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
@ -87,11 +86,7 @@ D2MoveHead.SEI lda MoveFrom
|
||||||
inc
|
inc
|
||||||
bra .3
|
bra .3
|
||||||
|
|
||||||
.1 lda MoveFrom
|
.1 pha
|
||||||
cmp MoveTo
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
pha
|
|
||||||
|
|
||||||
sta IO.D2.Ph0Off,x
|
sta IO.D2.Ph0Off,x
|
||||||
sta IO.D2.Ph0Off,y
|
sta IO.D2.Ph0Off,y
|
||||||
|
@ -126,13 +121,16 @@ D2MoveHead.SEI lda MoveFrom
|
||||||
ora Slotn0
|
ora Slotn0
|
||||||
tay
|
tay
|
||||||
|
|
||||||
sta IO.D2.Ph0On,y
|
|
||||||
sta IO.D2.Ph0On,x
|
sta IO.D2.Ph0On,x
|
||||||
|
sta IO.D2.Ph0On,y
|
||||||
lda #IO.D2.SeekTimeF
|
lda #IO.D2.SeekTimeF
|
||||||
jsr D2.Wait100usecA
|
jsr D2.Wait100usecA
|
||||||
bra .1
|
|
||||||
|
lda MoveFrom
|
||||||
|
cmp MoveTo
|
||||||
|
bne .1
|
||||||
|
|
||||||
.8 jsr D2.Wait25600usec
|
jsr D2.Wait25600usec
|
||||||
|
|
||||||
sta IO.D2.Ph0Off,x
|
sta IO.D2.Ph0Off,x
|
||||||
sta IO.D2.Ph0Off,y
|
sta IO.D2.Ph0Off,y
|
||||||
|
|
|
@ -22,7 +22,7 @@ TRACK16.GAP2 .EQ 6 60 bits
|
||||||
*Data field = D5AAAD + 342 + CS + DEAAEB = 349 2792 bits
|
*Data field = D5AAAD + 342 + CS + DEAAEB = 349 2792 bits
|
||||||
TRACK16.GAP3 .EQ 16 160 bits
|
TRACK16.GAP3 .EQ 16 160 bits
|
||||||
* )
|
* )
|
||||||
* 80 + 16 * (14 + 6 + 349 + 16) = 6240 800 + 49984 bits
|
* 80 + 16 * (6 + 14 + 349 + 16) = 6240 800 + 49984 bits
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TRACK9.LEN .EQ 6511
|
TRACK9.LEN .EQ 6511
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -7,6 +7,7 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
|
.INB inc/kernel.i
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
.INB inc/eth.i
|
.INB inc/eth.i
|
||||||
.INB inc/libtcpip.i
|
.INB inc/libtcpip.i
|
||||||
|
@ -18,11 +19,15 @@ ZS.START
|
||||||
ZPReqPtr .BS 2
|
ZPReqPtr .BS 2
|
||||||
ZPReqLen .BS 2
|
ZPReqLen .BS 2
|
||||||
ZPCtxPtr .BS 2
|
ZPCtxPtr .BS 2
|
||||||
|
pFD .BS 2
|
||||||
|
|
||||||
ZPRespPtr .BS 2
|
ZPRespPtr .BS 2
|
||||||
|
|
||||||
ZPPtr1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
ZPPtr2 .BS 2
|
ZPPtr2 .BS 2
|
||||||
|
BufPtr .BS 2
|
||||||
|
hBuf .BS 1
|
||||||
|
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -83,7 +88,7 @@ J.CIFS2 .DA CIFS2.ChTyp
|
||||||
.DA CIFS2.Write
|
.DA CIFS2.Write
|
||||||
.DA CIFS2.ChOwn
|
.DA CIFS2.ChOwn
|
||||||
L.LIBTCPIP .DA LIBTCPIP
|
L.LIBTCPIP .DA LIBTCPIP
|
||||||
L.SMB.TRANSPORT .DA SMB.TRANSPORT
|
L.NETBIOS .DA NETBIOS
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.LOAD >LDYA L.LIBTCPIP
|
LIB.LOAD >LDYA L.LIBTCPIP
|
||||||
|
@ -127,8 +132,8 @@ CIFS.Negotiate lda (pStack)
|
||||||
dec
|
dec
|
||||||
sta (pStack)
|
sta (pStack)
|
||||||
|
|
||||||
>PUSHWI SMB.NegReq.end-SMB.TRANSPORT
|
>PUSHWI SMB.NegReq.end-NETBIOS
|
||||||
>PUSHW L.SMB.TRANSPORT
|
>PUSHW L.NETBIOS
|
||||||
ldy #1+4 hSocket
|
ldy #1+4 hSocket
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
|
|
||||||
|
@ -162,11 +167,11 @@ CIFS.Negotiate lda (pStack)
|
||||||
lda (ZPRespPtr),y
|
lda (ZPRespPtr),y
|
||||||
bne .97
|
bne .97
|
||||||
|
|
||||||
ldy #3
|
ldy #S.NETBIOS.LEN+2
|
||||||
lda (ZPRespPtr),y
|
lda (ZPRespPtr),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
adc #4 + NETBIOS header
|
adc #S.NETBIOS
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
|
@ -504,21 +509,7 @@ CIFS2.FStat lda #MLI.E.BADCALL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CIFS.Stat >STYA ZPPtr1 resolved path
|
CIFS.Stat >STYA ZPPtr1 resolved path
|
||||||
|
|
||||||
lda MountTable+2
|
jsr MakeTrans2Reg
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPCtxPtr
|
|
||||||
|
|
||||||
ldx #S.SMB.H.CMD.TRANS2
|
|
||||||
jsr RequestSetupX
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.1 lda SMB.Trans2.H,x
|
|
||||||
sta (ZPReqPtr),y
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #SMB.Trans2.H.Len
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
|
@ -616,7 +607,6 @@ CIFS2.Pipe lda #MLI.E.BADCALL
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CIFS.OpenDir >STYA ZPPtr1 resolved path
|
CIFS.OpenDir >STYA ZPPtr1 resolved path
|
||||||
>SYSCALL2 PutS
|
|
||||||
|
|
||||||
>LDYAI S.FD.DIR
|
>LDYAI S.FD.DIR
|
||||||
>SYSCALL2 GetMem
|
>SYSCALL2 GetMem
|
||||||
|
@ -627,6 +617,16 @@ CIFS.OpenDir >STYA ZPPtr1 resolved path
|
||||||
lda #S.FD.T.DIR
|
lda #S.FD.T.DIR
|
||||||
sta (ZPPtr2)
|
sta (ZPPtr2)
|
||||||
|
|
||||||
|
lda hHandler
|
||||||
|
ldy #S.FD.HANDLER
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
ldy #S.FD.DIR.FC
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
iny
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>PUSHWI 0
|
>PUSHWI 0
|
||||||
txa
|
txa
|
||||||
|
@ -639,19 +639,264 @@ CIFS2.OpenDir lda #MLI.E.BADCALL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CIFS.ReadDir
|
CIFS.ReadDir jsr GetPFD
|
||||||
CIFS2.ReadDir lda #MLI.E.INVPATH
|
|
||||||
|
ldy #S.FD.DIR.FC
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
iny
|
||||||
|
ora (ZPPtr2),y
|
||||||
|
bne CIFS.ReadDir.Next
|
||||||
|
|
||||||
|
jsr MakeTrans2Reg
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.2 lda SMB.FindFirst,x
|
||||||
|
sta (ZPReqPtr),y
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
cpx #SMB.FindFirst.Len
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
bra CIFS.ReadDir.Send
|
||||||
|
|
||||||
|
CIFS.ReadDir.Next
|
||||||
|
jsr MakeTrans2Reg
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.2 lda SMB.FindNext,x
|
||||||
|
sta (ZPReqPtr),y
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
cpx #SMB.FindNext.Len
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
phy
|
||||||
|
|
||||||
|
ldy #S.FD.DIR.FC+1
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
tax
|
||||||
|
dey
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
|
||||||
|
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search ID
|
||||||
|
sta (ZPRespPtr),y
|
||||||
|
txa
|
||||||
|
iny
|
||||||
|
sta (ZPRespPtr),y
|
||||||
|
|
||||||
|
ply
|
||||||
|
CIFS.ReadDir.Send
|
||||||
|
jsr SetT2ReqLenYA
|
||||||
|
|
||||||
|
>PUSHYA
|
||||||
|
>PUSHW ZPReqPtr
|
||||||
|
lda MountTable+3 hSocket
|
||||||
|
|
||||||
|
ldx #LIBTCPIP.Send
|
||||||
|
jsr GO.LIBTCPIP
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #S.PS.PID
|
||||||
|
lda (pPS),y
|
||||||
|
sta CIFS.PID
|
||||||
|
|
||||||
|
dec CIFS.Status
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sec
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CIFS2.ReadDir lda MountTable+3 hSocket
|
||||||
|
ldx #LIBTCPIP.Recv
|
||||||
|
jsr GO.LIBTCPIP
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr GetRespData
|
||||||
|
|
||||||
|
ldy #S.NETBIOS+S.SMB.H.STATUS
|
||||||
|
lda (ZPRespPtr),y
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+1 Search ID
|
||||||
|
lda (ZPRespPtr),y
|
||||||
|
tax
|
||||||
|
dey
|
||||||
|
lda (ZPRespPtr),y
|
||||||
|
|
||||||
|
ldy #S.FD.DIR.FC
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
iny
|
||||||
|
txa
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
|
jsr GetRespDataOffset
|
||||||
|
jsr CIFS2.ReadDir.GetBuf
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr GetRespDataOffset
|
||||||
|
jsr CIFS2.ReadDir.FillBuf
|
||||||
|
|
||||||
|
>LDYA BufPtr
|
||||||
|
ldx hBuf
|
||||||
|
|
||||||
|
stz CIFS.Status
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 cmp #E.NODATA
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
dec CIFS.Retries
|
||||||
|
beq .90
|
||||||
|
|
||||||
|
lda #0
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.90 lda #MLI.E.IO
|
||||||
|
|
||||||
|
.99 stz CIFS.Status
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CIFS.CloseDir
|
CIFS2.ReadDir.GetBuf
|
||||||
CIFS2.CloseDir
|
lda #1 +Ending 0
|
||||||
|
sta ZPPtr2
|
||||||
|
stz ZPPtr2+1
|
||||||
|
|
||||||
|
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+2 Search Count
|
||||||
|
lda (ZPRespPtr),y
|
||||||
|
tax
|
||||||
|
|
||||||
|
.1 lda ZPPtr2
|
||||||
|
clc
|
||||||
|
adc #S.STAT
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
inc ZPPtr2+1
|
||||||
|
|
||||||
|
.2 lda ZPPtr1
|
||||||
|
clc
|
||||||
|
adc #22
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.3 lda (ZPPtr1) Filename Len
|
||||||
|
pha
|
||||||
|
sec
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .4
|
||||||
|
|
||||||
|
inc ZPPtr2+1
|
||||||
|
|
||||||
|
.4 pla
|
||||||
|
inc
|
||||||
|
sec
|
||||||
|
adc ZPPtr1
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .5
|
||||||
|
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.5 dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>LDYA ZPPtr2
|
||||||
|
>SYSCALL2 GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA BufPtr
|
||||||
|
>STYA ZPPtr2
|
||||||
|
stx hBuf
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CIFS2.ReadDir.FillBuf
|
||||||
|
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+2 Search Count
|
||||||
|
lda (ZPRespPtr),y
|
||||||
|
tax
|
||||||
|
|
||||||
|
.1 jsr FileInfo2StatBuf
|
||||||
|
|
||||||
|
lda ZPPtr1
|
||||||
|
sec skip Filename Len
|
||||||
|
adc #22
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.2 ldy #$ff
|
||||||
|
|
||||||
|
.3 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
tya
|
||||||
|
sec
|
||||||
|
adc ZPPtr1
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .4
|
||||||
|
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.4 tya
|
||||||
|
sec
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .5
|
||||||
|
|
||||||
|
inc ZPPtr2+1
|
||||||
|
|
||||||
|
.5 ldy #S.STAT-1
|
||||||
|
|
||||||
|
.6 lda StatBuf,y
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
dey
|
||||||
|
bpl .6
|
||||||
|
|
||||||
|
lda #S.STAT
|
||||||
|
clc
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .7
|
||||||
|
|
||||||
|
inc ZPPtr2+1
|
||||||
|
|
||||||
|
.7 dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta (ZPPtr2)
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CIFS.CloseDir jsr GetPFD
|
||||||
|
|
||||||
|
>DEBUG
|
||||||
|
|
||||||
|
CIFS2.CloseDir lda #MLI.E.INVPATH
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CIFS.Open
|
CIFS.Open
|
||||||
CIFS2.Open
|
CIFS2.Open
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CIFS.Close
|
CIFS.Close jsr GetPFD
|
||||||
|
|
||||||
|
>DEBUG
|
||||||
|
|
||||||
CIFS2.Close
|
CIFS2.Close
|
||||||
|
lda #MLI.E.INVPATH
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CIFS.Read
|
CIFS.Read
|
||||||
CIFS2.Read
|
CIFS2.Read
|
||||||
|
@ -665,6 +910,24 @@ CIFS2.ChOwn
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MakeTrans2Reg lda MountTable+2
|
||||||
|
>SYSCALL2 GetMemPtr
|
||||||
|
>STYA ZPCtxPtr
|
||||||
|
|
||||||
|
ldx #S.SMB.H.CMD.TRANS2
|
||||||
|
jsr RequestSetupX
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.1 lda SMB.Trans2.H,x
|
||||||
|
sta (ZPReqPtr),y
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
cpx #SMB.Trans2.H.Len
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
GetSMBContext lda (pStack),y
|
GetSMBContext lda (pStack),y
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPCtxPtr
|
>STYA ZPCtxPtr
|
||||||
|
@ -763,26 +1026,73 @@ GetRespData sta hResp
|
||||||
sta ZPRespPtr+1
|
sta ZPRespPtr+1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
GetRespDataOffset
|
||||||
|
ldy #S.NETBIOS+S.SMB.H+15 Data Offset
|
||||||
|
lda (ZPRespPtr),y
|
||||||
|
clc
|
||||||
|
adc ZPRespPtr
|
||||||
|
tax
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda (ZPRespPtr),y
|
||||||
|
adc ZPRespPtr+1
|
||||||
|
pha
|
||||||
|
|
||||||
|
txa
|
||||||
|
clc
|
||||||
|
adc #S.NETBIOS
|
||||||
|
sta ZPPtr1
|
||||||
|
|
||||||
|
pla
|
||||||
|
adc /S.NETBIOS
|
||||||
|
sta ZPPtr1+1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
FileInfo2StatBuf
|
||||||
|
phx
|
||||||
|
|
||||||
|
ldx #S.STAT-1
|
||||||
|
|
||||||
|
.1 stz StatBuf,x
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
ldy #20 File Attribute
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
and #10
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
lda #S.STAT.MODE.DIR
|
||||||
|
sta StatBuf+S.STAT.MODE+1
|
||||||
|
|
||||||
|
.2 ldy #12+3 Data Size
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.3 lda (ZPPtr1),y
|
||||||
|
sta StatBuf+S.STAT.SIZE,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
.8 plx
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
GetPFD tax
|
||||||
|
lsr
|
||||||
|
lda Nod.Table.hFD-2,x
|
||||||
|
>SYSCALL2 GetMemPtr
|
||||||
|
>STYA pFD
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
GO.LIBTCPIP jmp (pLIBTCPIP)
|
GO.LIBTCPIP jmp (pLIBTCPIP)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBTCPIP .AZ "libtcpip"
|
NETBIOS .DA #0 DIRECT TCP TRANSPORT
|
||||||
hLIBTCPIP .BS 1
|
|
||||||
pLIBTCPIP .BS 2
|
|
||||||
hSocket .BS 1
|
|
||||||
hReq .BS 1
|
|
||||||
hResp .BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
CIFS.Status .BS 1
|
|
||||||
CIFS.PID .BS 1
|
|
||||||
CIFS.Retries .BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
MountTable .BS 2 pMountPoint
|
|
||||||
.BS 1 hSMBContext
|
|
||||||
.BS 1 hSocket
|
|
||||||
*--------------------------------------
|
|
||||||
SMB.TRANSPORT .DA #0 DIRECT TCP TRANSPORT
|
|
||||||
.DA #0 24 BITS LENGTH
|
.DA #0 24 BITS LENGTH
|
||||||
.DA /SMB.NegReq.end-SMB.H
|
.DA /SMB.NegReq.end-SMB.H
|
||||||
.DA #SMB.NegReq.end-SMB.H
|
.DA #SMB.NegReq.end-SMB.H
|
||||||
|
@ -863,8 +1173,8 @@ SMB.TreeConnect.T.Len .EQ *-SMB.TreeConnect.T
|
||||||
SMB.Trans2.H .DA #15 WORD COUNT
|
SMB.Trans2.H .DA #15 WORD COUNT
|
||||||
.BS 2 TotalParamCount
|
.BS 2 TotalParamCount
|
||||||
.DA 0 TotalDataCount
|
.DA 0 TotalDataCount
|
||||||
.DA 2 MaxParameterCount
|
.DA 10 MaxParameterCount
|
||||||
.DA 40 MaxDataCount
|
.DA 512 MaxDataCount
|
||||||
.DA #0 MaxSetupCount
|
.DA #0 MaxSetupCount
|
||||||
.HS 00 Reserved1
|
.HS 00 Reserved1
|
||||||
.DA 0 Flags
|
.DA 0 Flags
|
||||||
|
@ -889,24 +1199,42 @@ SMB.QueryPathInfo.Len .EQ *-SMB.QueryPathInfo
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SMB.FindFirst .DA 1 TRANS2_FIND_FIRST2
|
SMB.FindFirst .DA 1 TRANS2_FIND_FIRST2
|
||||||
.BS 2 PrmCnt
|
.BS 2 PrmCnt
|
||||||
.HS 00 Padding
|
.HS 000000 Padding
|
||||||
.DA $0016 SearchAttributes
|
.DA $0037 SearchAttributes
|
||||||
.DA 1024 SearchCount
|
.DA 1024 SearchCount
|
||||||
.DA 2 Flags
|
.DA 2 Flags
|
||||||
.DA SMB_INFO_STANDARD InformationLevel
|
.DA SMB_INFO_STANDARD InformationLevel
|
||||||
* .AZ "*.*" FileName
|
.HS 00000000 SearchStorageType
|
||||||
SMB.FindFirst.end .EQ *-SMB.FindFirst
|
.AZ "*" FileName
|
||||||
|
SMB.FindFirst.Len .EQ *-SMB.FindFirst
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SMB.FindNext .DA 2 TRANS2_FIND_NEXT2
|
SMB.FindNext .DA 2 TRANS2_FIND_NEXT2
|
||||||
.BS 2 PrmCnt
|
.BS 2 PrmCnt
|
||||||
.HS 00 Padding
|
.HS 000000 Padding
|
||||||
.BS 2 SID
|
.BS 2 SID
|
||||||
.DA 1024 SearchCount
|
.DA 1024 SearchCount
|
||||||
.DA SMB_INFO_STANDARD InformationLevel
|
.DA SMB_INFO_STANDARD InformationLevel
|
||||||
.HS 00000000 ResumeKey
|
.HS 00000000 ResumeKey
|
||||||
.DA 2 Flags
|
.DA 2 Flags
|
||||||
* .AZ "*.*" FileName
|
.AZ "*" FileName
|
||||||
SMB.FindNext.end .EQ *-SMB.FindNext
|
SMB.FindNext.Len .EQ *-SMB.FindNext
|
||||||
|
*--------------------------------------
|
||||||
|
LIBTCPIP .AZ "libtcpip"
|
||||||
|
hLIBTCPIP .BS 1
|
||||||
|
pLIBTCPIP .BS 2
|
||||||
|
hSocket .BS 1
|
||||||
|
hReq .BS 1
|
||||||
|
hResp .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
CIFS.Status .BS 1
|
||||||
|
CIFS.PID .BS 1
|
||||||
|
CIFS.Retries .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
MountTable .BS 2 pMountPoint
|
||||||
|
.BS 1 hSMBContext
|
||||||
|
.BS 1 hSocket
|
||||||
|
*--------------------------------------
|
||||||
|
StatBuf .BS S.STAT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libcifs.s
|
SAVE usr/src/lib/libcifs.s
|
||||||
|
|
|
@ -188,6 +188,242 @@ XRW.E.EXIT ldx A2L
|
||||||
bit IO.D2.DrvOff,x turn off
|
bit IO.D2.DrvOff,x turn off
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
XRW.TrackSelect lda #2
|
||||||
|
sta XRW.RecalibrateCnt
|
||||||
|
sta XRW.BadSeek
|
||||||
|
|
||||||
|
.1 stz XRW.RetryCnt
|
||||||
|
|
||||||
|
.2 jsr XRW.ReadAddr read next address field.
|
||||||
|
bcc .4 if CC, A = current track
|
||||||
|
|
||||||
|
.3 inc XRW.RetryCnt one less chance.
|
||||||
|
bpl .2 branch if < 128
|
||||||
|
|
||||||
|
dec XRW.RecalibrateCnt
|
||||||
|
sec
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
ldy XRW.UnitIndex
|
||||||
|
|
||||||
|
lda #41
|
||||||
|
sta XRW.D2Trk-1,y
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta XRW.D2VolNum-1,y reset volnum for seeking 4 Qtracks
|
||||||
|
|
||||||
|
jsr XRW.Seek Seek from Track 41 -> 0
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.4 cmp XRW.ReqTrack
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
lda XRW.BadSeek
|
||||||
|
beq .5 2 bad seeks, already
|
||||||
|
|
||||||
|
dec XRW.BadSeek
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
.5 lda XRW.SeekTime
|
||||||
|
bmi .6 seektime already > 128
|
||||||
|
|
||||||
|
* clc
|
||||||
|
* adc #IO.D2.SeekTimeI
|
||||||
|
* sta XRW.SeekTime
|
||||||
|
|
||||||
|
* sta XRW.D2SeekTime-1,y
|
||||||
|
|
||||||
|
.6 lda XRW.ReqTrack
|
||||||
|
jsr XRW.Seek
|
||||||
|
bra .3
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
.LIST ON
|
||||||
|
XRW.ReadAddr ldy #$FC
|
||||||
|
.LIST OFF
|
||||||
|
sty XRW.CheckSum init nibble counter to $FCFC
|
||||||
|
|
||||||
|
ldx A2L get slot #
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
bne .2 counter LO
|
||||||
|
|
||||||
|
inc XRW.CheckSum counter HI
|
||||||
|
beq .99
|
||||||
|
|
||||||
|
.2 lda IO.D2.RData,x read nibl
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
.3 cmp #$D5 address mark 1 ?
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
.4 lda IO.D2.RData,x
|
||||||
|
bpl .4
|
||||||
|
|
||||||
|
cmp #$AA address mark 2 ?
|
||||||
|
bne .3 if not, is it address mark 1 ?
|
||||||
|
|
||||||
|
ldy #3 index for 4 byte read
|
||||||
|
|
||||||
|
.5 lda IO.D2.RData,x
|
||||||
|
bpl .5
|
||||||
|
|
||||||
|
cmp #$96 address mark 3 ?
|
||||||
|
bne .3 if not, is it address mark 1
|
||||||
|
|
||||||
|
lda #0 init Chksum
|
||||||
|
|
||||||
|
.6 sta XRW.CheckSum
|
||||||
|
|
||||||
|
.7 lda IO.D2.RData,x read 'odd bit' nibl
|
||||||
|
bpl .7
|
||||||
|
|
||||||
|
rol align odd bits, '1' into lsb.
|
||||||
|
sta XRW.Temp4x4 save them.
|
||||||
|
|
||||||
|
.8 lda IO.D2.RData,x read 'even bit' nibl
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
and XRW.Temp4x4 merge odd and even bits.
|
||||||
|
sta XRW.AddrField.C,y store data byte.
|
||||||
|
eor XRW.CheckSum
|
||||||
|
dey
|
||||||
|
bpl .6 loop on 4 data bytes.
|
||||||
|
|
||||||
|
tay if final checksum non-zero,
|
||||||
|
bne .99 (2) then error.
|
||||||
|
|
||||||
|
ldy XRW.UnitIndex (4)
|
||||||
|
|
||||||
|
.9 lda IO.D2.RData,x (4)
|
||||||
|
bpl .9 (2)
|
||||||
|
|
||||||
|
eor #$DE (2)
|
||||||
|
bne .99 (2)
|
||||||
|
|
||||||
|
lda XRW.AddrField.V (4)
|
||||||
|
sta XRW.D2VolNum-1,y (4)
|
||||||
|
lda XRW.AddrField.T (4)
|
||||||
|
sta XRW.D2Trk-1,y (4)
|
||||||
|
ldy XRW.AddrField.S (4)
|
||||||
|
|
||||||
|
clc (2)
|
||||||
|
rts (6)
|
||||||
|
|
||||||
|
.99 sec
|
||||||
|
.LIST ON
|
||||||
|
XRW.ReadAddr.RTS
|
||||||
|
rts
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
* A = target track
|
||||||
|
*--------------------------------------
|
||||||
|
XRW.Seek ldx XRW.UnitIndex
|
||||||
|
pha save target track
|
||||||
|
|
||||||
|
jsr XRW.Trk2Qtrk
|
||||||
|
sta XRW.TargetQTrack
|
||||||
|
|
||||||
|
lda XRW.D2Trk-1,x
|
||||||
|
|
||||||
|
jsr XRW.Trk2Qtrk
|
||||||
|
sta XRW.CurrentQTrack
|
||||||
|
|
||||||
|
tay
|
||||||
|
|
||||||
|
pla
|
||||||
|
sta XRW.D2Trk-1,x will be current track at the end
|
||||||
|
|
||||||
|
tya
|
||||||
|
jsr XRW.Seek2QT
|
||||||
|
bra .4
|
||||||
|
|
||||||
|
.1 pha
|
||||||
|
|
||||||
|
jsr XRW.SEEKOFF
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
* Current < Target, must move in
|
||||||
|
|
||||||
|
inc
|
||||||
|
|
||||||
|
.HS B0 BCS
|
||||||
|
|
||||||
|
* Current > Target, must move out
|
||||||
|
|
||||||
|
.2 dec
|
||||||
|
|
||||||
|
sta XRW.CurrentQTrack
|
||||||
|
|
||||||
|
and #6
|
||||||
|
ora A2L
|
||||||
|
tax
|
||||||
|
|
||||||
|
pla
|
||||||
|
|
||||||
|
bcs .3
|
||||||
|
|
||||||
|
* Current < Target, must move in
|
||||||
|
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
|
||||||
|
.3 jsr XRW.SEEK2QT2
|
||||||
|
|
||||||
|
.4 lda XRW.SeekTime
|
||||||
|
jsr XRW.Wait100usecA
|
||||||
|
|
||||||
|
lda XRW.CurrentQTrack
|
||||||
|
cmp XRW.TargetQTrack
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.8 jsr XRW.Wait25600usec
|
||||||
|
|
||||||
|
XRW.SEEKOFF sta IO.D2.Ph0Off,x
|
||||||
|
sta IO.D2.Ph0Off,y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
XRW.SEEK2T ldx XRW.UnitIndex
|
||||||
|
jsr XRW.Trk2Qtrk
|
||||||
|
|
||||||
|
XRW.SEEK2QT pha
|
||||||
|
and #6
|
||||||
|
ora A2L
|
||||||
|
tax
|
||||||
|
|
||||||
|
pla
|
||||||
|
inc
|
||||||
|
|
||||||
|
XRW.SEEK2QT2 and #6
|
||||||
|
ora A2L
|
||||||
|
tay
|
||||||
|
lda A2L
|
||||||
|
ora #IO.D2.RData
|
||||||
|
sta .1+1
|
||||||
|
sta .2+1
|
||||||
|
|
||||||
|
sta IO.D2.Ph0On,x
|
||||||
|
.1 lda IO.D2.RData SELF MODIFIED
|
||||||
|
sta IO.D2.Ph0On,y
|
||||||
|
.2 lda IO.D2.RData SELF MODIFIED
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
XRW.Trk2Qtrk asl x2
|
||||||
|
sta .1+1
|
||||||
|
|
||||||
|
bit XRW.D2VolNum-1,x
|
||||||
|
bpl .1 x4
|
||||||
|
bvs .1 > $C0 ? (VOL=254)
|
||||||
|
|
||||||
|
lsr x3
|
||||||
|
|
||||||
|
.1 adc #$ff SELF MODIFIED
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* preniblize subroutine (16 sector format)
|
* preniblize subroutine (16 sector format)
|
||||||
*
|
*
|
||||||
* converts 256 bytes of user data in (buf) into 6 bit nibls in nbuf2.
|
* converts 256 bytes of user data in (buf) into 6 bit nibls in nbuf2.
|
||||||
|
@ -309,59 +545,6 @@ L596F ldy #$FF index to last byte of data to write.
|
||||||
stx wrefd5+1
|
stx wrefd5+1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.TrackSelect lda #2
|
|
||||||
sta XRW.RecalibrateCnt
|
|
||||||
sta XRW.BadSeek
|
|
||||||
|
|
||||||
.1 stz XRW.RetryCnt
|
|
||||||
|
|
||||||
.2 jsr XRW.ReadAddr read next address field.
|
|
||||||
bcc .4 if CC, A = current track
|
|
||||||
|
|
||||||
.3 inc XRW.RetryCnt one less chance.
|
|
||||||
bpl .2 branch if < 128
|
|
||||||
|
|
||||||
dec XRW.RecalibrateCnt
|
|
||||||
sec
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
ldx XRW.UnitIndex
|
|
||||||
|
|
||||||
lda #41
|
|
||||||
sta XRW.D2Trk-1,x
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta XRW.D2VolNum-1,x reset volnum for seeking 4 Qtracks
|
|
||||||
|
|
||||||
jsr XRW.Seek Seek from Track 41 -> 0
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.4 cmp XRW.ReqTrack
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
* lda XRW.BadSeek
|
|
||||||
* beq .5 2 bad seeks, already
|
|
||||||
|
|
||||||
* dec XRW.BadSeek
|
|
||||||
* bne .6
|
|
||||||
|
|
||||||
*.5 lda XRW.SeekTime
|
|
||||||
* bmi .6 seektime already > 128
|
|
||||||
|
|
||||||
* clc
|
|
||||||
* adc #IO.D2.SeekTimeI
|
|
||||||
* sta XRW.SeekTime
|
|
||||||
|
|
||||||
* ldx XRW.UnitIndex
|
|
||||||
* sta XRW.D2SeekTime-1,x
|
|
||||||
|
|
||||||
.6 lda XRW.ReqTrack
|
|
||||||
jsr XRW.Seek
|
|
||||||
bra .3
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
XRW.SectorIO bit XRW.bWrite
|
XRW.SectorIO bit XRW.bWrite
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
|
@ -378,23 +561,22 @@ XRW.SectorIO bit XRW.bWrite
|
||||||
jsr XRW.DEBUG
|
jsr XRW.DEBUG
|
||||||
|
|
||||||
.2 jsr XRW.ReadAddr
|
.2 jsr XRW.ReadAddr
|
||||||
bcs .3
|
bcs .3 (2)
|
||||||
|
|
||||||
lda XRW.AddrField.S
|
cpy XRW.ReqSector (4)
|
||||||
cmp XRW.ReqSector
|
bne .3 (2)
|
||||||
beq .8
|
|
||||||
|
bit XRW.bWrite (4)
|
||||||
|
bmi XRW.Write (3)
|
||||||
|
|
||||||
|
jmp XRW.Read
|
||||||
|
|
||||||
.3 inc XRW.RetryCnt
|
.3 inc XRW.RetryCnt
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
sec
|
sec
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.8 bit XRW.bWrite
|
|
||||||
bmi XRW.Write
|
|
||||||
|
|
||||||
jmp XRW.Read
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* write subroutine (16 sector format)
|
* write subroutine (16 sector format)
|
||||||
*
|
*
|
||||||
|
@ -402,38 +584,40 @@ XRW.SectorIO bit XRW.bWrite
|
||||||
* from (buf), low to high. assumes 1 usec cycle time. self modified code !!
|
* from (buf), low to high. assumes 1 usec cycle time. self modified code !!
|
||||||
*
|
*
|
||||||
* on entry: x = slotnum times 16
|
* on entry: x = slotnum times 16
|
||||||
*
|
|
||||||
* on exit: carry set if error (write protect violation).
|
|
||||||
* if no error, acc=uncertain, x=unchanged, y=0, carry clear.
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
XRW.Write lda IO.D2.ReadProt,x PREWRITE MODE
|
XRW.Write bit IO.D2.ReadProt,x (4) PREWRITE MODE
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
bit IO.D2.ReadMode,x (4)
|
||||||
|
|
||||||
* lda IO.D2.ReadMode,x
|
lda #$FF (2)
|
||||||
|
nop (2)
|
||||||
lda nbuf2
|
|
||||||
sta pcl
|
|
||||||
|
|
||||||
lda #$FF Self Sync Byte
|
|
||||||
|
|
||||||
sta IO.D2.WriteMode,x (5) goto write mode
|
sta IO.D2.WriteMode,x (5) goto write mode
|
||||||
ora IO.D2.WShift,x (4)
|
ora IO.D2.WShift,x (4)
|
||||||
ldy #5 (2)
|
|
||||||
nop (2)
|
|
||||||
pha (3)
|
|
||||||
pla (4)
|
|
||||||
|
|
||||||
wsync pha (3) exact timing.
|
nop (2)
|
||||||
|
|
||||||
|
ldy nbuf2 (4)
|
||||||
|
sty pcl (3)
|
||||||
|
|
||||||
|
ldy #5 (2)
|
||||||
|
|
||||||
|
.1 pha (3) exact timing.
|
||||||
pla (4) exact timing.
|
pla (4) exact timing.
|
||||||
jsr wnibl7 (13,9,6) write sync.
|
jsr wnibl7 (13,9,6) write sync.
|
||||||
dey (2)
|
dey (2)
|
||||||
bne wsync (3-) must not cross page !
|
bne .1 (3) must not cross page !
|
||||||
|
|
||||||
|
nop (2)
|
||||||
|
nop (2)
|
||||||
|
|
||||||
lda #$D5 (2) 1st data mark
|
lda #$D5 (2) 1st data mark
|
||||||
jsr wnibl9 (15,9,6)
|
jsr wnibl9 (15,9,6)
|
||||||
|
|
||||||
lda #$AA (2) 2nd data mark
|
lda #$AA (2) 2nd data mark
|
||||||
jsr wnibl9 (15,9,6)
|
jsr wnibl9 (15,9,6)
|
||||||
|
|
||||||
lda #$AD (2) 3rd data mark
|
lda #$AD (2) 3rd data mark
|
||||||
jsr wnibl9 (15,9,6)
|
jsr wnibl9 (15,9,6)
|
||||||
tya (2) zero checksum
|
tya (2) zero checksum
|
||||||
|
@ -535,25 +719,22 @@ wrefd5 ldx #$60 (2) restore slot. warning: modified by prenib
|
||||||
pla (4)
|
pla (4)
|
||||||
nop (2)
|
nop (2)
|
||||||
|
|
||||||
.1 nop (2)
|
.1 clc (2)
|
||||||
|
|
||||||
lda XRW.EndMark,y (4) DE AA EB
|
lda XRW.EndMark,y (4) DE AA EB
|
||||||
jsr wnibl (15,6) write it
|
jsr wnibl (15,6) write it
|
||||||
dey (2)
|
dey (2)
|
||||||
bpl .1 (3) if not.
|
bpl .1 (3) if not.
|
||||||
|
|
||||||
clc (2)
|
bmi .2 (3)
|
||||||
|
.2 nop (2)
|
||||||
|
|
||||||
|
lda #$FF (2)
|
||||||
|
jsr wnibl (6+9,6) write turn off byte.
|
||||||
|
|
||||||
jsr XRW.Write.RTS (6+6)
|
XRW.ReadMode lda IO.D2.ReadMode,x (4) out of write mode
|
||||||
|
lda IO.D2.WShift,x (4) to read mode.
|
||||||
|
|
||||||
nop (2)
|
|
||||||
nop (2)
|
|
||||||
|
|
||||||
* lda #$FF (2)
|
|
||||||
* jsr wnibl (15,6) write turn off byte.
|
|
||||||
|
|
||||||
XRW.ReadMode lda IO.D2.ReadMode,x out of write mode
|
|
||||||
lda IO.D2.WShift,x to read mode.
|
|
||||||
rts return from write.
|
rts return from write.
|
||||||
|
|
||||||
* 7-bit nibl write subroutines
|
* 7-bit nibl write subroutines
|
||||||
|
@ -569,29 +750,33 @@ wnibl sta IO.D2.WLoad,x (5) nibl write
|
||||||
XRW.Write.RTS rts (6)
|
XRW.Write.RTS rts (6)
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* determine if motor is stopped
|
XRW.TestWP ldx A2L
|
||||||
*
|
lda IO.D2.ReadProt,x test for write protected
|
||||||
* if stopped, controller's shift register will not be changing.
|
lda IO.D2.ReadMode,x
|
||||||
* return y = 0 and zero flag set if it is stopped.
|
rol write protect-->carry-->bit 0=1
|
||||||
|
lda IO.D2.RData,x keep in read mode
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.CheckMotorOn
|
XRW.Wait25600usec
|
||||||
ldx A2L
|
lda #0
|
||||||
XRW.CheckMotorOnX
|
XRW.Wait100usecA
|
||||||
ldy #0 init loop counter.
|
phx
|
||||||
|
|
||||||
.1 lda IO.D2.RData,x read the shift register.
|
.1 ldx #18 (2)
|
||||||
jsr .9 delay
|
|
||||||
|
|
||||||
pha
|
.2 dex (2)
|
||||||
pla more delay.
|
bne .2 (3)
|
||||||
|
|
||||||
cmp IO.D2.RData,x has shift reg changed ?
|
inc XRW.montimel (6)
|
||||||
bne .9 yes, motor is moving.
|
bne .3 (3)
|
||||||
|
|
||||||
dey no, dec retry counter
|
inc XRW.montimeh (6)
|
||||||
bne .1 and try 256 times.
|
|
||||||
|
|
||||||
.9 rts Z if motor OFF
|
.3 dec (2)
|
||||||
|
bne .1 (3)
|
||||||
|
|
||||||
|
plx
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* read subroutine (16-sector format)
|
* read subroutine (16-sector format)
|
||||||
*
|
*
|
||||||
|
@ -745,218 +930,29 @@ L57CD pla place last byte into user buffer
|
||||||
XRW.Read.RTS rts
|
XRW.Read.RTS rts
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A = target track
|
* determine if motor is stopped
|
||||||
|
*
|
||||||
|
* if stopped, controller's shift register will not be changing.
|
||||||
|
* return y = 0 and zero flag set if it is stopped.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.Seek ldx XRW.UnitIndex
|
XRW.CheckMotorOn
|
||||||
pha save target track
|
ldx A2L
|
||||||
|
XRW.CheckMotorOnX
|
||||||
|
ldy #0 init loop counter.
|
||||||
|
|
||||||
jsr XRW.Trk2Qtrk
|
.1 lda IO.D2.RData,x read the shift register.
|
||||||
sta XRW.TargetQTrack
|
jsr .9 delay
|
||||||
|
|
||||||
lda XRW.D2Trk-1,x
|
|
||||||
|
|
||||||
jsr XRW.Trk2Qtrk
|
|
||||||
sta XRW.CurrentQTrack
|
|
||||||
|
|
||||||
tay
|
|
||||||
|
|
||||||
pla
|
|
||||||
sta XRW.D2Trk-1,x will be current track at the end
|
|
||||||
|
|
||||||
tya
|
|
||||||
jsr XRW.Seek2QT
|
|
||||||
bra .4
|
|
||||||
|
|
||||||
.1 lda XRW.CurrentQTrack
|
|
||||||
cmp XRW.TargetQTrack
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
pla more delay.
|
||||||
|
|
||||||
jsr XRW.SEEKOFF
|
cmp IO.D2.RData,x has shift reg changed ?
|
||||||
bcs .2
|
bne .9 yes, motor is moving.
|
||||||
|
|
||||||
* Current < Target, must move in
|
dey no, dec retry counter
|
||||||
|
bne .1 and try 256 times.
|
||||||
|
|
||||||
inc
|
.9 rts Z if motor OFF
|
||||||
|
|
||||||
.HS B0 BCS
|
|
||||||
|
|
||||||
* Current > Target, must move out
|
|
||||||
|
|
||||||
.2 dec
|
|
||||||
|
|
||||||
sta XRW.CurrentQTrack
|
|
||||||
|
|
||||||
and #6
|
|
||||||
ora A2L
|
|
||||||
tax
|
|
||||||
|
|
||||||
pla
|
|
||||||
|
|
||||||
bcs .3
|
|
||||||
|
|
||||||
* Current < Target, must move in
|
|
||||||
|
|
||||||
inc
|
|
||||||
inc
|
|
||||||
|
|
||||||
.3 and #6
|
|
||||||
ora A2L
|
|
||||||
tay
|
|
||||||
|
|
||||||
sta IO.D2.Ph0On,x
|
|
||||||
sta IO.D2.Ph0On,y
|
|
||||||
|
|
||||||
.4
|
|
||||||
* lda XRW.SeekTime
|
|
||||||
lda #IO.D2.SeekTimeP
|
|
||||||
jsr XRW.Wait100usecA
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.8 jsr XRW.Wait25600usec
|
|
||||||
|
|
||||||
XRW.SEEKOFF sta IO.D2.Ph0Off,x
|
|
||||||
sta IO.D2.Ph0Off,y
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
XRW.SEEK2T ldx XRW.UnitIndex
|
|
||||||
jsr XRW.Trk2Qtrk
|
|
||||||
|
|
||||||
XRW.SEEK2QT pha
|
|
||||||
and #6
|
|
||||||
ora A2L
|
|
||||||
tax
|
|
||||||
|
|
||||||
pla
|
|
||||||
inc
|
|
||||||
and #6
|
|
||||||
ora A2L
|
|
||||||
tay
|
|
||||||
|
|
||||||
sta IO.D2.Ph0On,x
|
|
||||||
sta IO.D2.Ph0On,y
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
XRW.Wait25600usec
|
|
||||||
lda #0
|
|
||||||
XRW.Wait100usecA
|
|
||||||
phx
|
|
||||||
|
|
||||||
.1 ldx #18 (2)
|
|
||||||
|
|
||||||
.2 dex (2)
|
|
||||||
bne .2 (3)
|
|
||||||
|
|
||||||
inc XRW.montimel (6)
|
|
||||||
bne .3 (3)
|
|
||||||
|
|
||||||
inc XRW.montimeh (6)
|
|
||||||
|
|
||||||
.3 dec (2)
|
|
||||||
bne .1 (3)
|
|
||||||
|
|
||||||
plx
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
XRW.Trk2Qtrk asl x2
|
|
||||||
sta .1+1
|
|
||||||
|
|
||||||
bit XRW.D2VolNum-1,x
|
|
||||||
bpl .1 x4
|
|
||||||
bvs .1 > $C0 ? (VOL=254)
|
|
||||||
|
|
||||||
lsr x3
|
|
||||||
|
|
||||||
.1 adc #$ff SELF MODIFIED
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
.LIST ON
|
|
||||||
XRW.ReadAddr ldy #$FC
|
|
||||||
.LIST OFF
|
|
||||||
sty XRW.CheckSum init nibble counter to $FCFC
|
|
||||||
|
|
||||||
ldx A2L get slot #
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
bne .2 counter LO
|
|
||||||
|
|
||||||
inc XRW.CheckSum counter HI
|
|
||||||
beq .99
|
|
||||||
|
|
||||||
.2 lda IO.D2.RData,x read nibl
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
.3 cmp #$D5 address mark 1 ?
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
nop
|
|
||||||
|
|
||||||
.4 lda IO.D2.RData,x
|
|
||||||
bpl .4
|
|
||||||
|
|
||||||
cmp #$AA address mark 2 ?
|
|
||||||
bne .3 if not, is it address mark 1 ?
|
|
||||||
|
|
||||||
ldy #3 index for 4 byte read
|
|
||||||
|
|
||||||
.5 lda IO.D2.RData,x
|
|
||||||
bpl .5
|
|
||||||
|
|
||||||
cmp #$96 address mark 3 ?
|
|
||||||
bne .3 if not, is it address mark 1
|
|
||||||
|
|
||||||
lda #0 init Chksum
|
|
||||||
|
|
||||||
.6 sta XRW.CheckSum
|
|
||||||
|
|
||||||
.7 lda IO.D2.RData,x read 'odd bit' nibl
|
|
||||||
bpl .7
|
|
||||||
|
|
||||||
rol align odd bits, '1' into lsb.
|
|
||||||
sta XRW.Temp4x4 save them.
|
|
||||||
|
|
||||||
.8 lda IO.D2.RData,x read 'even bit' nibl
|
|
||||||
bpl .8
|
|
||||||
|
|
||||||
and XRW.Temp4x4 merge odd and even bits.
|
|
||||||
sta XRW.AddrField.C,y store data byte.
|
|
||||||
eor XRW.CheckSum
|
|
||||||
dey
|
|
||||||
bpl .6 loop on 4 data bytes.
|
|
||||||
|
|
||||||
tay if final checksum non-zero,
|
|
||||||
bne .99 then error.
|
|
||||||
|
|
||||||
clc
|
|
||||||
|
|
||||||
.9 lda IO.D2.RData,x
|
|
||||||
bpl .9
|
|
||||||
|
|
||||||
eor #$DE
|
|
||||||
bne .99
|
|
||||||
|
|
||||||
ldy XRW.UnitIndex
|
|
||||||
lda XRW.AddrField.V
|
|
||||||
sta XRW.D2VolNum-1,y
|
|
||||||
|
|
||||||
lda XRW.AddrField.T Successful Read, update Drive table
|
|
||||||
sta XRW.D2Trk-1,y and exit with A = Trk
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
.99 sec
|
|
||||||
.LIST ON
|
|
||||||
XRW.ReadAddr.RTS
|
|
||||||
rts
|
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
|
||||||
XRW.TestWP ldx A2L
|
|
||||||
lda IO.D2.ReadProt,x test for write protected
|
|
||||||
lda IO.D2.ReadMode,x
|
|
||||||
rol write protect-->carry-->bit 0=1
|
|
||||||
lda IO.D2.RData,x keep in read mode
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.DEBUG sta CLRPAGE2
|
XRW.DEBUG sta CLRPAGE2
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,8 @@ L.MSG.USAGE .DA MSG.USAGE
|
||||||
L.MSG.TCPIPERR .DA MSG.TCPIPERR
|
L.MSG.TCPIPERR .DA MSG.TCPIPERR
|
||||||
L.MSG.UNKNOWN .DA MSG.UNKNOWN
|
L.MSG.UNKNOWN .DA MSG.UNKNOWN
|
||||||
L.MSG.CONNECTED .DA MSG.CONNECTED
|
L.MSG.CONNECTED .DA MSG.CONNECTED
|
||||||
|
L.MSG.NOCONN .DA MSG.NOCONN
|
||||||
|
L.MSG.MOUNTED .DA MSG.MOUNTED
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Called once at process creation
|
* Called once at process creation
|
||||||
|
@ -106,7 +108,7 @@ CS.RUN lda hSocket
|
||||||
>PUSHWI 0
|
>PUSHWI 0
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>LIBCALL hLIBCIFS,LIBCIFS.SessionSetup
|
>LIBCALL hLIBCIFS,LIBCIFS.SessionSetup
|
||||||
bcs .9
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
>PUSHB hSocket
|
>PUSHB hSocket
|
||||||
>PUSHB hSMBContext
|
>PUSHB hSMBContext
|
||||||
|
@ -123,8 +125,22 @@ CS.RUN lda hSocket
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>LIBCALL hLIBCIFS,LIBCIFS.Mount
|
>LIBCALL hLIBCIFS,LIBCIFS.Mount
|
||||||
|
bcs .9
|
||||||
|
|
||||||
sta hMount
|
sta hMount
|
||||||
|
|
||||||
|
>PUSHW L.MSG.MOUNTED
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
>SYSCALL ArgV
|
||||||
|
>PUSHYA
|
||||||
|
|
||||||
|
lda #3
|
||||||
|
>SYSCALL ArgV
|
||||||
|
>PUSHYA
|
||||||
|
|
||||||
|
>PUSHBI 4
|
||||||
|
>SYSCALL PrintF
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
clc
|
clc
|
||||||
|
@ -206,6 +222,7 @@ CS.RUN.CheckArgs
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
lda #ERR.SKT.NOCONN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -219,7 +236,7 @@ CS.RUN.CheckArgs.RTS
|
||||||
CS.RUN.Connect >PUSHBI 0 no protocol
|
CS.RUN.Connect >PUSHBI 0 no protocol
|
||||||
lda #S.SOCKET.T.SEQPKT
|
lda #S.SOCKET.T.SEQPKT
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||||
bcs CS.RUN.CheckArgs.RTS
|
bcs .9
|
||||||
|
|
||||||
sta hSocket
|
sta hSocket
|
||||||
|
|
||||||
|
@ -251,6 +268,15 @@ CS.RUN.Connect >PUSHBI 0 no protocol
|
||||||
ldx TimeOut
|
ldx TimeOut
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
.9 pha
|
||||||
|
|
||||||
|
>PUSHW L.MSG.NOCONN
|
||||||
|
lda #1
|
||||||
|
>SYSCALL ArgV
|
||||||
|
>PUSHYA
|
||||||
|
>PUSHBI 2
|
||||||
|
|
||||||
|
pla
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -262,8 +288,7 @@ CS.RUN.Connect >PUSHBI 0 no protocol
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
rts
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT lda (pEvent)
|
CS.DOEVENT lda (pEvent)
|
||||||
bpl .9 is it a TIMER event?
|
bpl .9 is it a TIMER event?
|
||||||
|
@ -272,6 +297,7 @@ CS.DOEVENT lda (pEvent)
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
dec TimeOut
|
dec TimeOut
|
||||||
|
|
||||||
.9 sec do not discard TIMER event
|
.9 sec do not discard TIMER event
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -309,7 +335,9 @@ hLIBCIFS .BS 1
|
||||||
MSG.USAGE .AZ "Usage : CIFSD <ip|host> sharename mountpoint"
|
MSG.USAGE .AZ "Usage : CIFSD <ip|host> sharename mountpoint"
|
||||||
MSG.TCPIPERR .AZ "CIFSD:TCP/IP Not initialized properly."
|
MSG.TCPIPERR .AZ "CIFSD:TCP/IP Not initialized properly."
|
||||||
MSG.UNKNOWN .AZ "CIFSD:%s: Unknown host\r\n"
|
MSG.UNKNOWN .AZ "CIFSD:%s: Unknown host\r\n"
|
||||||
MSG.CONNECTED .AZ "CIFSD:Connected to: %s\r\n"
|
MSG.NOCONN .AZ "CIFSD:No Connection To %s\r\n"
|
||||||
|
MSG.CONNECTED .AZ "CIFSD:Connected To %s\r\n"
|
||||||
|
MSG.MOUNTED .AZ "CIFSD:%s Mounted As %s\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
|
|
@ -236,6 +236,7 @@ STATUS jsr STATUS.CONTROL.Init
|
||||||
sta (ZPBufPtr),y
|
sta (ZPBufPtr),y
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -250,6 +251,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 cmp #S.IOCTL.STATCODE.EOF
|
.3 cmp #S.IOCTL.STATCODE.EOF
|
||||||
bne STATUS.9
|
bne STATUS.9
|
||||||
|
|
||||||
|
@ -260,7 +262,9 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
||||||
lda INBUF.TAIL
|
lda INBUF.TAIL
|
||||||
eor INBUF.HEAD
|
eor INBUF.HEAD
|
||||||
beq .4 NO DATA? eof = TRUE
|
beq .4 NO DATA? eof = TRUE
|
||||||
|
|
||||||
lda #1
|
lda #1
|
||||||
|
|
||||||
.4 dec
|
.4 dec
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -268,6 +272,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
||||||
.FIN
|
.FIN
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
STATUS.9 lda #MLI.E.BADCTL
|
STATUS.9 lda #MLI.E.BADCTL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -278,7 +283,9 @@ CONTROL jsr STATUS.CONTROL.Init
|
||||||
lda (ZPIOCTL),y
|
lda (ZPIOCTL),y
|
||||||
cmp #S.IOCTL.CTRLCODE.SETDCB
|
cmp #S.IOCTL.CTRLCODE.SETDCB
|
||||||
bne STATUS.9
|
bne STATUS.9
|
||||||
|
|
||||||
ldy #S.DCB.COM-1
|
ldy #S.DCB.COM-1
|
||||||
|
|
||||||
.2 lda (ZPBufPtr),y
|
.2 lda (ZPBufPtr),y
|
||||||
sta DCB,y
|
sta DCB,y
|
||||||
dey
|
dey
|
||||||
|
@ -287,17 +294,19 @@ CONTROL jsr STATUS.CONTROL.Init
|
||||||
OPEN lda DIB+S.DIB.S
|
OPEN lda DIB+S.DIB.S
|
||||||
bit #S.DIB.S.OPENED
|
bit #S.DIB.S.OPENED
|
||||||
beq OPEN.1
|
beq OPEN.1
|
||||||
|
|
||||||
OPEN.E lda #MLI.E.OPEN
|
OPEN.E lda #MLI.E.OPEN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
OPEN.1 php
|
OPEN.1 php
|
||||||
sei
|
sei
|
||||||
ldx DEVSLOTn08F
|
ldx DEVSLOTn08F
|
||||||
stz SSC.RESET-$8F,x
|
stz SSC.RESET-$8F,x
|
||||||
|
|
||||||
|
.DO SSCIRQ=1
|
||||||
lda #SSC.CTL.CLKINT+SSC.CTL.B9600+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
|
lda #SSC.CTL.CLKINT+SSC.CTL.B9600+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
|
||||||
sta SSC.CTL-$8F,x
|
sta SSC.CTL-$8F,x
|
||||||
.DO SSCIRQ=1
|
|
||||||
lda #SSC.CMD.TEIRQ+SSC.CMD.TE+SSC.CMD.DTR
|
lda #SSC.CMD.TEIRQ+SSC.CMD.TE+SSC.CMD.DTR
|
||||||
sta SSC.CMD-$8F,x
|
sta SSC.CMD-$8F,x
|
||||||
|
|
||||||
|
@ -307,6 +316,8 @@ OPEN.1 php
|
||||||
stz OUTBUF.TAIL
|
stz OUTBUF.TAIL
|
||||||
|
|
||||||
.ELSE
|
.ELSE
|
||||||
|
lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
|
||||||
|
sta SSC.CTL-$8F,x
|
||||||
lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR
|
lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR
|
||||||
sta SSC.CMD-$8F,x
|
sta SSC.CMD-$8F,x
|
||||||
.FIN
|
.FIN
|
||||||
|
@ -341,25 +352,32 @@ READ php
|
||||||
stz ZPCount2+1
|
stz ZPCount2+1
|
||||||
.10 inc ZPCount
|
.10 inc ZPCount
|
||||||
bne .11
|
bne .11
|
||||||
|
|
||||||
inc ZPCount+1
|
inc ZPCount+1
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.11 .DO SSCIRQ=1
|
.11 .DO SSCIRQ=1
|
||||||
ldy INBUF.TAIL
|
ldy INBUF.TAIL
|
||||||
cpy INBUF.HEAD
|
cpy INBUF.HEAD
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
lda INBUF,y
|
lda INBUF,y
|
||||||
iny
|
iny
|
||||||
cpy #BUF.SIZE
|
cpy #BUF.SIZE
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
.1 sty INBUF.TAIL
|
.1 sty INBUF.TAIL
|
||||||
|
|
||||||
sta (ZPBufPtr)
|
sta (ZPBufPtr)
|
||||||
inc ZPBufPtr
|
inc ZPBufPtr
|
||||||
bne .12
|
bne .12
|
||||||
|
|
||||||
inc ZPBufPtr+1
|
inc ZPBufPtr+1
|
||||||
|
|
||||||
.12 inc ZPCount2
|
.12 inc ZPCount2
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
inc ZPCount2+1
|
inc ZPCount2+1
|
||||||
bra .10
|
bra .10
|
||||||
.FIN
|
.FIN
|
||||||
|
@ -369,20 +387,28 @@ READ php
|
||||||
|
|
||||||
bit #SSC.STATUS.RDRF incoming char?
|
bit #SSC.STATUS.RDRF incoming char?
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda SSC.DATA-$8F,x
|
lda SSC.DATA-$8F,x
|
||||||
sta (ZPBufPtr)
|
sta (ZPBufPtr)
|
||||||
inc ZPBufPtr
|
inc ZPBufPtr
|
||||||
bne .13
|
bne .13
|
||||||
|
|
||||||
inc ZPBufPtr+1
|
inc ZPBufPtr+1
|
||||||
|
|
||||||
.13 inc ZPCount2
|
.13 inc ZPCount2
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
inc ZPCount2+1
|
inc ZPCount2+1
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.8 lda ZPCount2
|
.8 lda ZPCount2
|
||||||
bne .81
|
bne .81
|
||||||
|
|
||||||
ora ZPCount2+1
|
ora ZPCount2+1
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
lda ZPCount2
|
lda ZPCount2
|
||||||
|
|
||||||
.81 ldy #S.IOCTL.BYTECNT
|
.81 ldy #S.IOCTL.BYTECNT
|
||||||
sta (ZPIOCTL),y
|
sta (ZPIOCTL),y
|
||||||
iny
|
iny
|
||||||
|
@ -392,6 +418,7 @@ READ php
|
||||||
plp
|
plp
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #MLI.E.IO
|
.9 lda #MLI.E.IO
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
|
|
||||||
|
@ -403,14 +430,18 @@ READ php
|
||||||
WRITE php
|
WRITE php
|
||||||
sei
|
sei
|
||||||
jsr READ.WRITE.Init
|
jsr READ.WRITE.Init
|
||||||
|
|
||||||
.2 inc ZPCount
|
.2 inc ZPCount
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
inc ZPCount+1
|
inc ZPCount+1
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.3 .DO SSCIRQ=1
|
.3 .DO SSCIRQ=1
|
||||||
lda SSC.STATUS-$8F,x
|
lda SSC.STATUS-$8F,x
|
||||||
bit #SSC.STATUS.nDSR true when 0
|
bit #SSC.STATUS.nDSR true when 0
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
lda OUTBUF.HEAD
|
lda OUTBUF.HEAD
|
||||||
cmp OUTBUF.TAIL Buffer Empty?
|
cmp OUTBUF.TAIL Buffer Empty?
|
||||||
bne .6 not empty, queue char
|
bne .6 not empty, queue char
|
||||||
|
@ -418,9 +449,11 @@ WRITE php
|
||||||
lda SSC.STATUS-$8F,x
|
lda SSC.STATUS-$8F,x
|
||||||
and #SSC.STATUS.TDRE Register Empty ?
|
and #SSC.STATUS.TDRE Register Empty ?
|
||||||
beq .5 not empty, queue char
|
beq .5 not empty, queue char
|
||||||
|
|
||||||
lda (ZPBufPtr) yes, write directly to ACIA
|
lda (ZPBufPtr) yes, write directly to ACIA
|
||||||
inc ZPBufPtr
|
inc ZPBufPtr
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
inc ZPBufPtr+1
|
inc ZPBufPtr+1
|
||||||
|
|
||||||
.4 sta SSC.DATA-$8F,x
|
.4 sta SSC.DATA-$8F,x
|
||||||
|
@ -437,25 +470,33 @@ WRITE php
|
||||||
lda (ZPBufPtr)
|
lda (ZPBufPtr)
|
||||||
inc ZPBufPtr
|
inc ZPBufPtr
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
inc ZPBufPtr+1
|
inc ZPBufPtr+1
|
||||||
.7 sta OUTBUF,y
|
.7 sta OUTBUF,y
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.ELSE
|
.ELSE
|
||||||
.4 lda SSC.STATUS-$8F,x
|
.4 lda SSC.STATUS-$8F,x
|
||||||
bit #SSC.STATUS.nDSR true when 0
|
bit #SSC.STATUS.nDSR true when 0
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
bit #SSC.STATUS.TDRE Outgoing char?
|
bit #SSC.STATUS.TDRE Outgoing char?
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
lda (ZPBufPtr)
|
lda (ZPBufPtr)
|
||||||
inc ZPBufPtr
|
inc ZPBufPtr
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
inc ZPBufPtr+1
|
inc ZPBufPtr+1
|
||||||
|
|
||||||
.5 sta SSC.DATA-$8F,x
|
.5 sta SSC.DATA-$8F,x
|
||||||
bra .2
|
bra .2
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
.8 plp
|
.8 plp
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #MLI.E.IO
|
.9 lda #MLI.E.IO
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
.99 lda #E.NODATA
|
.99 lda #E.NODATA
|
||||||
|
@ -509,6 +550,7 @@ IRQ ldx DEVSLOTn08F
|
||||||
and #BUF.MASK
|
and #BUF.MASK
|
||||||
cmp INBUF.TAIL
|
cmp INBUF.TAIL
|
||||||
beq .1 buffer full, discard and exit
|
beq .1 buffer full, discard and exit
|
||||||
|
|
||||||
sta INBUF.HEAD
|
sta INBUF.HEAD
|
||||||
|
|
||||||
lda SSC.DATA-$8F,x read data to clear IRQ
|
lda SSC.DATA-$8F,x read data to clear IRQ
|
||||||
|
@ -522,14 +564,17 @@ IRQ ldx DEVSLOTn08F
|
||||||
ldy OUTBUF.TAIL something to transmit ?
|
ldy OUTBUF.TAIL something to transmit ?
|
||||||
cpy OUTBUF.HEAD
|
cpy OUTBUF.HEAD
|
||||||
beq .8 in that case, HOW TO CLEAR IRQ ????
|
beq .8 in that case, HOW TO CLEAR IRQ ????
|
||||||
|
|
||||||
lda OUTBUF,y
|
lda OUTBUF,y
|
||||||
sta SSC.DATA-$8F,x write data to clear IRQ
|
sta SSC.DATA-$8F,x write data to clear IRQ
|
||||||
tya
|
tya
|
||||||
inc
|
inc
|
||||||
and #BUF.MASK
|
and #BUF.MASK
|
||||||
sta OUTBUF.TAIL
|
sta OUTBUF.TAIL
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
.FIN
|
.FIN
|
||||||
|
|
|
@ -626,24 +626,31 @@ Detect6502 ldy #0 Test 6502 BCD bug
|
||||||
* A = Z80 Slot
|
* A = Z80 Slot
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DetectZ80 ldx #Z80Code.Size
|
DetectZ80 ldx #Z80Code.Size
|
||||||
|
|
||||||
.1 lda Z80Code.Start-1,x
|
.1 lda Z80Code.Start-1,x
|
||||||
sta Z80CODE-1,x 00000H for Z80
|
sta Z80CODE-1,x 00000H for Z80
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
stz ZPPtr1
|
stz ZPPtr1
|
||||||
lda #$C1
|
lda #$C1
|
||||||
|
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
|
||||||
.2 sta (ZPPtr1)
|
.2 sta (ZPPtr1)
|
||||||
lda $100D
|
lda $100D
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
lda ZPPtr1+1
|
lda ZPPtr1+1
|
||||||
cmp #$C8
|
cmp #$C8
|
||||||
beq .9 CS
|
beq .9 CS
|
||||||
|
|
||||||
clc
|
clc
|
||||||
adc #$20
|
adc #$20
|
||||||
sta $100A
|
sta $100A
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.8 lda ZPPtr1+1
|
.8 lda ZPPtr1+1
|
||||||
and #$0F
|
and #$0F
|
||||||
clc
|
clc
|
||||||
|
|
|
@ -450,9 +450,11 @@ K.SYSCALL2.AUX sta SETREADAUX MAIN to AUX Mem API
|
||||||
K.SYSCALL2.MAIN sta CLRREADAUX Coming from KERNEL in AUX...
|
K.SYSCALL2.MAIN sta CLRREADAUX Coming from KERNEL in AUX...
|
||||||
sta CLRWRITEAUX
|
sta CLRWRITEAUX
|
||||||
jsr .1
|
jsr .1
|
||||||
|
|
||||||
sta SETREADAUX
|
sta SETREADAUX
|
||||||
sta SETWRITEAUX
|
sta SETWRITEAUX
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 bit K.SYSCALL.BANK,x Get Target LC BNK
|
.1 bit K.SYSCALL.BANK,x Get Target LC BNK
|
||||||
|
|
||||||
K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change
|
K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change
|
||||||
|
@ -460,6 +462,7 @@ K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change
|
||||||
lda $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2
|
lda $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2
|
||||||
cmp K.SYSCALL.BANK,x
|
cmp K.SYSCALL.BANK,x
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
pha remember source BNK
|
pha remember source BNK
|
||||||
stx .6+1
|
stx .6+1
|
||||||
lda K.SYSCALL.BANK,x
|
lda K.SYSCALL.BANK,x
|
||||||
|
@ -476,6 +479,7 @@ K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change
|
||||||
|
|
||||||
.5 ldx #$ff SELF MODIFIED
|
.5 ldx #$ff SELF MODIFIED
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.6 ldx #$ff SELF MODIFIED
|
.6 ldx #$ff SELF MODIFIED
|
||||||
.7 lda #$ff SELF MODIFIED
|
.7 lda #$ff SELF MODIFIED
|
||||||
|
|
||||||
|
|
|
@ -25,12 +25,13 @@ PFT.CheckPathYA >PUSHYA
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 lda Flt.Table.pftHI,x
|
.1 inx
|
||||||
|
lda Flt.Table.pftHI-1,x
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
|
||||||
lda Flt.Table.pftLO,x
|
lda Flt.Table.pftLO-1,x
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
@ -48,21 +49,25 @@ PFT.CheckPathYA >PUSHYA
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
lda Flt.Table.cbLO,x
|
lda Flt.Table.cbLO-1,x
|
||||||
sta .7+1
|
sta .7+1
|
||||||
|
|
||||||
lda Flt.Table.cbHI,x
|
lda Flt.Table.cbHI-1,x
|
||||||
sta .7+2
|
sta .7+2
|
||||||
|
|
||||||
|
stx hHandler
|
||||||
|
|
||||||
pla discard JSR return @
|
pla discard JSR return @
|
||||||
pla
|
pla
|
||||||
lda /K.Buf256 pass full path to handler
|
lda /K.Buf256 pass full path to handler
|
||||||
iny skip "/"
|
iny skip "/"
|
||||||
|
* ldy #K.Buf256
|
||||||
|
|
||||||
.6 ldx #$ff SELF MODIFIED SYSCALL #
|
.6 ldx #$ff SELF MODIFIED SYSCALL #
|
||||||
|
|
||||||
.7 jmp $ffff SELF MODIFIED
|
.7 jmp $ffff SELF MODIFIED
|
||||||
|
|
||||||
.8 inx
|
.8 cpx #K.FLT.MAX
|
||||||
cpx #K.FLT.MAX
|
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>LDYAI K.Buf256
|
>LDYAI K.Buf256
|
||||||
|
@ -106,14 +111,22 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
beq .8 Handler is 0, back to kernel....
|
beq .8 Handler is 0, back to kernel....
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
tax
|
||||||
>STYA .1+1
|
|
||||||
|
lda Flt.Table.cbLO-1,x
|
||||||
|
sta .7+1
|
||||||
|
|
||||||
|
lda Flt.Table.cbHI-1,x
|
||||||
|
sta .7+2
|
||||||
|
|
||||||
|
stx hHandler
|
||||||
|
|
||||||
pla discard JSR return @
|
pla discard JSR return @
|
||||||
pla
|
pla
|
||||||
ldx .80+1 restore SYSCALL #
|
ldx .80+1 restore SYSCALL #
|
||||||
lda .81+1 restore passed hFILE
|
lda .81+1 restore passed hFILE
|
||||||
|
|
||||||
.1 jmp $ffff SELF MODIFIED
|
.7 jmp $ffff SELF MODIFIED
|
||||||
|
|
||||||
.8 lda (pFD) #S.FD.T
|
.8 lda (pFD) #S.FD.T
|
||||||
cmp #S.FD.T.CDEV
|
cmp #S.FD.T.CDEV
|
||||||
|
|
|
@ -37,7 +37,6 @@ VSDRIVE.Init >LDYAI VSDRIVE.MSG0
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
|
|
||||||
jsr VSDRIVE.Ping
|
jsr VSDRIVE.Ping
|
||||||
|
|
||||||
bcs .92
|
bcs .92
|
||||||
|
|
||||||
>LDYAI VSDRIVE.SRVOK
|
>LDYAI VSDRIVE.SRVOK
|
||||||
|
@ -45,6 +44,7 @@ VSDRIVE.Init >LDYAI VSDRIVE.MSG0
|
||||||
|
|
||||||
jsr VSDRIVE.SetSlot
|
jsr VSDRIVE.SetSlot
|
||||||
bcs .91
|
bcs .91
|
||||||
|
|
||||||
pha Push slot
|
pha Push slot
|
||||||
pha 2 times
|
pha 2 times
|
||||||
>LDYAI VSDRIVE.DEVOK
|
>LDYAI VSDRIVE.DEVOK
|
||||||
|
@ -54,12 +54,15 @@ VSDRIVE.Init >LDYAI VSDRIVE.MSG0
|
||||||
>LDYAI VSDRIVE.OK
|
>LDYAI VSDRIVE.OK
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.90 >LDYAI VSDRIVE.DRVKO
|
.90 >LDYAI VSDRIVE.DRVKO
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.91 >LDYAI VSDRIVE.NOSLOT
|
.91 >LDYAI VSDRIVE.NOSLOT
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.92 pha Push EC
|
.92 pha Push EC
|
||||||
>LDYAI VSDRIVE.SRVKO
|
>LDYAI VSDRIVE.SRVKO
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
|
@ -72,19 +75,20 @@ VSDRIVE.Init >LDYAI VSDRIVE.MSG0
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
VSDRIVE.Check bit RRAMWRAMBNK2
|
VSDRIVE.Check ldx #REGULAR.SIZE
|
||||||
bit RRAMWRAMBNK2
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.1 lda DRV.EntryPoint-1,x
|
||||||
|
eor REGULAR-1,x
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
lda $D001
|
|
||||||
eor DRV
|
.9 rts
|
||||||
bne .8
|
|
||||||
lda $D002
|
|
||||||
eor DRV+1
|
|
||||||
bne .8
|
|
||||||
sec
|
|
||||||
.8 bit RROMBNK1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SSC.Detect stz TmpPtr1
|
SSC.Detect stz TmpPtr1
|
||||||
sta TmpPtr1+1
|
sta TmpPtr1+1
|
||||||
|
@ -94,31 +98,37 @@ SSC.Detect stz TmpPtr1
|
||||||
lda (TmpPtr1),y
|
lda (TmpPtr1),y
|
||||||
cmp DEVSIG.Value,x
|
cmp DEVSIG.Value,x
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
lda TmpPtr1+1 A=SlotCN
|
lda TmpPtr1+1 A=SlotCN
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
|
clc
|
||||||
|
adc #$8F
|
||||||
tax X=SlotN0
|
tax X=SlotN0
|
||||||
stz SSC.RESET,x
|
stz SSC.RESET-$8F,x
|
||||||
jsr VSDRIVE.Wait
|
jsr VSDRIVE.Wait
|
||||||
lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
|
lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
|
||||||
sta SSC.CTL,x
|
sta SSC.CTL-$8F,x
|
||||||
jsr VSDRIVE.Wait
|
jsr VSDRIVE.Wait
|
||||||
lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR
|
lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR
|
||||||
sta SSC.CMD,x
|
sta SSC.CMD-$8F,x
|
||||||
jsr VSDRIVE.Wait
|
jsr VSDRIVE.Wait
|
||||||
|
|
||||||
lda TmpPtr1+1 A=Slot Cn, X=n0
|
lda TmpPtr1+1 A=Slot Cn, X=n0
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts X=SlotN0, A=SlotCN
|
rts X=SlotN0, A=SlotCN
|
||||||
|
|
||||||
.3 inc TmpPtr1+1 no match, try next slot....
|
.3 inc TmpPtr1+1 no match, try next slot....
|
||||||
lda TmpPtr1+1
|
lda TmpPtr1+1
|
||||||
cmp #$C8
|
cmp #$C8
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -129,36 +139,45 @@ VSDRIVE.Ping ldx DRV+2 DRV.Slotn0
|
||||||
|
|
||||||
.10 jsr VSDRIVE.IncTimer Wait.......
|
.10 jsr VSDRIVE.IncTimer Wait.......
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
ldy #10
|
ldy #10
|
||||||
.1 lda SSC.STATUS,x
|
|
||||||
|
.1 lda SSC.STATUS-$8F,x
|
||||||
and #SSC.STATUS.TDRE Ready for transmit?
|
and #SSC.STATUS.TDRE Ready for transmit?
|
||||||
bne .20
|
bne .20
|
||||||
|
|
||||||
jsr VSDRIVE.IncTimer Wait.......
|
jsr VSDRIVE.IncTimer Wait.......
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
dey
|
dey
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #1
|
lda #1
|
||||||
sec
|
sec
|
||||||
rts Time Out.....
|
rts Time Out.....
|
||||||
|
|
||||||
.20 stz VSDRIVE.Ping.TO
|
.20 stz VSDRIVE.Ping.TO
|
||||||
stz VSDRIVE.Ping.TO+1
|
stz VSDRIVE.Ping.TO+1
|
||||||
|
|
||||||
ldy #5 5 bytes to send
|
ldy #5 5 bytes to send
|
||||||
|
|
||||||
.2 lda VSDRIVE.CMDS-1,y
|
.2 lda VSDRIVE.CMDS-1,y
|
||||||
sta SSC.DATA,x
|
sta SSC.DATA-$8F,x
|
||||||
.3 lda SSC.STATUS,x
|
|
||||||
|
.3 lda SSC.STATUS-$8F,x
|
||||||
and #SSC.STATUS.TDRE char transmitted?
|
and #SSC.STATUS.TDRE char transmitted?
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
jsr VSDRIVE.IncTimer
|
jsr VSDRIVE.IncTimer
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
lda #2
|
lda #2
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.4 dey
|
.4 dey
|
||||||
bne .2 next byte
|
bne .2 next byte
|
||||||
|
|
||||||
lda #521^$ffff 522 bytes to recieve
|
lda #521^$ffff 522 bytes to recieve
|
||||||
sta VSDRIVE.Ping.BC
|
sta VSDRIVE.Ping.BC
|
||||||
lda /521^$ffff
|
lda /521^$ffff
|
||||||
|
@ -167,34 +186,43 @@ VSDRIVE.Ping ldx DRV+2 DRV.Slotn0
|
||||||
stz VSDRIVE.Ping.TO+1
|
stz VSDRIVE.Ping.TO+1
|
||||||
|
|
||||||
ldy #3 EC if no byte recieved
|
ldy #3 EC if no byte recieved
|
||||||
.5 lda SSC.STATUS,x
|
|
||||||
|
.5 lda SSC.STATUS-$8F,x
|
||||||
and #SSC.STATUS.RDRF incoming char?
|
and #SSC.STATUS.RDRF incoming char?
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
* jsr VSDRIVE.Wait
|
* jsr VSDRIVE.Wait
|
||||||
jsr VSDRIVE.IncTimer
|
jsr VSDRIVE.IncTimer
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
tya
|
tya
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.6 ldy #4 EC=4 if recieved only partial reply
|
.6 ldy #4 EC=4 if recieved only partial reply
|
||||||
|
|
||||||
lda SSC.DATA,x
|
lda SSC.DATA-$8F,x
|
||||||
inc VSDRIVE.Ping.BC
|
inc VSDRIVE.Ping.BC
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
inc VSDRIVE.Ping.BC+1
|
inc VSDRIVE.Ping.BC+1
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
VSDRIVE.IncTimer
|
VSDRIVE.IncTimer
|
||||||
inc VSDRIVE.Ping.TO
|
inc VSDRIVE.Ping.TO
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
inc VSDRIVE.Ping.TO+1
|
inc VSDRIVE.Ping.TO+1
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
VSDRIVE.Wait lda #0
|
VSDRIVE.Wait lda #0
|
||||||
|
|
||||||
.1 dec
|
.1 dec
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
VSDRIVE.CMDS .HS C6.00.00.03
|
VSDRIVE.CMDS .HS C6.00.00.03
|
||||||
|
@ -210,15 +238,19 @@ VSDRIVE.SetSlot ldx #2 Starts at Slot1
|
||||||
.1 lda DEVPTRS,x Drive1
|
.1 lda DEVPTRS,x Drive1
|
||||||
cmp DEVPTRS pointing to S0D1 NODEV ?
|
cmp DEVPTRS pointing to S0D1 NODEV ?
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda DEVPTRS+1,x
|
lda DEVPTRS+1,x
|
||||||
cmp DEVPTRS+1
|
cmp DEVPTRS+1
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda DEVPTRS+16,x Drive2
|
lda DEVPTRS+16,x Drive2
|
||||||
cmp DEVPTRS
|
cmp DEVPTRS
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda DEVPTRS+17,x
|
lda DEVPTRS+17,x
|
||||||
cmp DEVPTRS+1
|
cmp DEVPTRS+1
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda #DRV.EntryPoint
|
lda #DRV.EntryPoint
|
||||||
sta DEVPTRS,x
|
sta DEVPTRS,x
|
||||||
sta DEVPTRS+16,x
|
sta DEVPTRS+16,x
|
||||||
|
@ -241,10 +273,12 @@ VSDRIVE.SetSlot ldx #2 Starts at Slot1
|
||||||
lsr exit with A=SLOT
|
lsr exit with A=SLOT
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 inx
|
.2 inx
|
||||||
inx
|
inx
|
||||||
cpx #16
|
cpx #16
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
rts sec from CPX
|
rts sec from CPX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
VSDRIVE.Install ldx #PATCH.SIZE
|
VSDRIVE.Install ldx #PATCH.SIZE
|
||||||
|
@ -253,14 +287,19 @@ VSDRIVE.Install ldx #PATCH.SIZE
|
||||||
sta DRV.EntryPoint-1,x
|
sta DRV.EntryPoint-1,x
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
bit RRAMWRAMBNK2
|
bit RRAMWRAMBNK2
|
||||||
bit RRAMWRAMBNK2
|
bit RRAMWRAMBNK2
|
||||||
|
|
||||||
ldx #DRV.SIZE
|
ldx #DRV.SIZE
|
||||||
|
|
||||||
.2 lda DRV-1,x
|
.2 lda DRV-1,x
|
||||||
sta $D000,x
|
sta $D000,x
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
bit RROMBNK1
|
bit RROMBNK1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -280,10 +319,12 @@ VSDRIVE.OK .AZ "VSDRIVE Driver Successfully Installed.\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes)
|
* ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
REGULAR .AS "(C)APPLE "
|
||||||
|
REGULAR.SIZE .EQ *-REGULAR
|
||||||
PATCH .PH DRV.EntryPoint
|
PATCH .PH DRV.EntryPoint
|
||||||
bit RRAMWRAMBNK2
|
sta RRAMWRAMBNK2
|
||||||
jsr $D001
|
jsr $D001
|
||||||
bit RRAMWRAMBNK1
|
sta RRAMWRAMBNK1
|
||||||
rts
|
rts
|
||||||
.EP
|
.EP
|
||||||
PATCH.SIZE .EQ *-PATCH
|
PATCH.SIZE .EQ *-PATCH
|
||||||
|
@ -309,17 +350,17 @@ DRV.UNITNUM .EQ $43
|
||||||
DRV.BUFF .EQ $44
|
DRV.BUFF .EQ $44
|
||||||
DRV.BLKNUM .EQ $46
|
DRV.BLKNUM .EQ $46
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV .EQ *
|
DRV .PH $D001 Main LC Bnk 2 $D001->$DFFF
|
||||||
.PH $D001 Main LC Bnk 2 $D001->$DFFF
|
|
||||||
|
|
||||||
cld
|
DRV.START cld
|
||||||
|
|
||||||
DRV.Slotn0 ldx #$ff Self Modified
|
ldx #$ff Self Modified
|
||||||
lda DRV.COMMAND S=0,R=1,W=2,F=3
|
lda DRV.COMMAND S=0,R=1,W=2,F=3
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldx #$ff return Status
|
ldx #$ff return Status
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
.8 lda #0
|
.8 lda #0
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -414,6 +455,7 @@ DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.DO.CMD.ERR1 pla
|
DRV.DO.CMD.ERR1 pla
|
||||||
pla
|
pla
|
||||||
|
|
||||||
DRV.DO.CMD.ERR lda #MLI.E.IO
|
DRV.DO.CMD.ERR lda #MLI.E.IO
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -463,23 +505,23 @@ DRV.DO.CMD.W lda #$B1 lda (),y
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.SSCSend sta .2+1
|
DRV.SSCSend sta .2+1
|
||||||
|
|
||||||
.1 lda SSC.STATUS,x
|
.1 lda SSC.STATUS-$8F,x
|
||||||
* bit #SSC.STATUS.DCD+SSC.STATUS.DSR
|
* bit #SSC.STATUS.DCD+SSC.STATUS.DSR
|
||||||
* beq DRV.DO.CMD.ERR1
|
* beq DRV.DO.CMD.ERR1
|
||||||
and #SSC.STATUS.TDRE Outgoing char?
|
and #SSC.STATUS.TDRE Outgoing char?
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
.2 lda #$ff
|
.2 lda #$ff
|
||||||
sta SSC.DATA,x
|
sta SSC.DATA-$8F,x
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.SSCGet lda SSC.STATUS,x
|
DRV.SSCGet lda SSC.STATUS-$8F,x
|
||||||
* bit #SSC.STATUS.DCD+SSC.STATUS.DSR
|
* bit #SSC.STATUS.DCD+SSC.STATUS.DSR
|
||||||
* beq DRV.DO.CMD.ERR1
|
* beq DRV.DO.CMD.ERR1
|
||||||
and #SSC.STATUS.RDRF incoming char?
|
and #SSC.STATUS.RDRF incoming char?
|
||||||
beq DRV.SSCGet
|
beq DRV.SSCGet
|
||||||
|
|
||||||
lda SSC.DATA,x
|
lda SSC.DATA-$8F,x
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.READWRITE bit RRAMWRAMBNK1
|
DRV.READWRITE bit RRAMWRAMBNK1
|
||||||
|
|
Loading…
Reference in New Issue
Block a user