mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 00:32:44 +00:00
1060 lines
17 KiB
Plaintext
1060 lines
17 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
.OP 65C02
|
||
.OR $2000
|
||
.TF drv/pppssc.drv
|
||
*--------------------------------------
|
||
DBG .EQ 1
|
||
HWFC .EQ 0
|
||
SWFC .EQ 1
|
||
INBUF.SIZE .EQ 2048
|
||
*--------------------------------------
|
||
.INB inc/macros.i
|
||
.INB inc/a2osx.i
|
||
.INB inc/kernel.i
|
||
.INB inc/mli.e.i
|
||
.INB inc/com.i
|
||
.INB inc/com.6551.i
|
||
.INB inc/nic.i
|
||
.INB inc/eth.i
|
||
.INB inc/libtcpip.i
|
||
*--------------------------------------
|
||
.DUMMY
|
||
.OR ZPBIN
|
||
ZS.START
|
||
ZPArgsPtr .BS 2
|
||
ZPPtr1 .BS 2
|
||
ZPPtr2 .BS 2
|
||
ZPPtr3 .BS 2
|
||
|
||
ZPBufLen .BS 2
|
||
FCS .BS 2
|
||
|
||
DWORD .BS 4
|
||
|
||
hETCFILE .BS 1
|
||
b7D .BS 1
|
||
bLCP .BS 1
|
||
bIPCP .BS 1
|
||
Len .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.UNEXPECTED .DA MSG.UNEXPECTED
|
||
L.MSG.SYNTAX .DA MSG.SYNTAX
|
||
L.MSG.SSCInit .DA MSG.SSCInit
|
||
L.MSG.LCPInit .DA MSG.LCPInit
|
||
L.MSG.IPCPInit .DA MSG.IPCPInit
|
||
L.MSG.LocalIP .DA MSG.LocalIP
|
||
L.MSG.RemoteIP .DA MSG.RemoteIP
|
||
.DO DBG=1
|
||
L.MSG.DUMPBUF .DA MSG.DUMPBUFS
|
||
.DA MSG.DUMPBUFR
|
||
L.MSG.HEXDUMP .DA MSG.HEXDUMP
|
||
.FIN
|
||
L.LCP.ConfReq .DA LCP.ConfReq
|
||
L.LCP.EchoRep .DA LCP.EchoRep
|
||
L.IPCP.ConfReq .DA IPCP.ConfReq
|
||
L.IN.Buf .DA IN.Buf
|
||
L.IN.Bufp1 .DA IN.Buf+1
|
||
L.OUT.Buf .DA OUT.Buf
|
||
J.LCP .DA LCP.IN.ConfReq
|
||
.DA LCP.IN.ConfAck
|
||
.DA LCP.IN.ConfNak
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
.DA LCP.IN.EchoReq
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
.DA LCP.Discard
|
||
J.IPCP .DA IPCP.IN.ConfReq
|
||
.DA IPCP.IN.ConfAck
|
||
.DA IPCP.IN.ConfNak
|
||
.DA IPCP.Discard
|
||
.DA IPCP.Discard
|
||
.DA IPCP.Discard
|
||
.DA IPCP.Discard
|
||
.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
|
||
bcs .9
|
||
|
||
jsr PPP.ETCFILE
|
||
bcs .9
|
||
|
||
jsr PPP.Init
|
||
bcs .9
|
||
|
||
>PUSHW L.MSG.DETECT.OK
|
||
>PUSHW L.FD.DEV.NAME
|
||
>PUSHBI 2
|
||
>SYSCALL PrintF
|
||
bcs .9
|
||
|
||
>PUSHWI DRV.END
|
||
>PUSHWI DRV.CS.END-DRV.CS.START
|
||
>PUSHWI DRV.CS.START
|
||
>LDYA L.DRV.CS.START
|
||
>SYSCALL InsDrv
|
||
.9 bcs .99
|
||
|
||
>STYA FD.DEV+S.FD.DEV.DRVPTR
|
||
|
||
>PUSHW L.FD.DEV
|
||
>PUSHW L.FD.DEV.NAME
|
||
>SYSCALL MKDev
|
||
bcs .99
|
||
|
||
lda FD.DEV.NAME+3
|
||
and #$0F
|
||
tax
|
||
lda #A2osX.S.NIC
|
||
sta A2osX.S,x
|
||
|
||
* clc
|
||
|
||
rts
|
||
|
||
.99 pha
|
||
jsr SSC.Close
|
||
pla
|
||
|
||
* sec
|
||
|
||
Dev.Detect.RTS rts
|
||
*--------------------------------------
|
||
PPP.Init >LDYA L.MSG.LCPInit
|
||
>SYSCALL PutS
|
||
|
||
>LDYA L.LCP.EchoRep Pre calculate EchoRep FCS
|
||
jsr PPP.FCS16.Set
|
||
|
||
>LDYA L.LCP.ConfReq
|
||
jsr PPP.FCS16.Set
|
||
|
||
.DO DBG=1
|
||
>LDYA L.LCP.ConfReq
|
||
ldx #0
|
||
jsr DumpBuf.PPP
|
||
.FIN
|
||
|
||
>LDYA L.LCP.ConfReq
|
||
jsr SSC.WritePPP
|
||
bcs .9
|
||
|
||
.1 jsr SSC.ReadPPP
|
||
bcs .9
|
||
|
||
tya
|
||
beq .1
|
||
|
||
sty ZPBufLen
|
||
stz ZPBufLen+1
|
||
|
||
.DO DBG=1
|
||
>LDYA L.IN.Buf
|
||
ldx #2
|
||
jsr DumpBuf.PPP
|
||
.FIN
|
||
|
||
jsr PPP.IN.JUMP
|
||
bcs .9
|
||
|
||
bit bLCP
|
||
bpl .1
|
||
|
||
>LDYA L.MSG.IPCPInit
|
||
>SYSCALL PutS
|
||
|
||
jsr IPCP.OUT.ConfReq
|
||
bcs .9
|
||
|
||
.2 jsr SSC.ReadPPP
|
||
bcs .9
|
||
|
||
tya
|
||
beq .2
|
||
|
||
sty ZPBufLen
|
||
stz ZPBufLen+1
|
||
|
||
.DO DBG=1
|
||
>LDYA L.IN.Buf
|
||
ldx #2
|
||
jsr DumpBuf.PPP
|
||
.FIN
|
||
|
||
jsr PPP.IN.JUMP
|
||
bcs .9
|
||
|
||
bit bIPCP
|
||
bpl .2
|
||
|
||
* clc
|
||
rts
|
||
|
||
.9 jsr SSC.Close
|
||
|
||
lda #MLI.E.IO
|
||
* sec
|
||
rts
|
||
*--------------------------------------
|
||
PPP.IN.JUMP lda IN.Buf+3
|
||
cmp #$21
|
||
bne LCP.Discard
|
||
|
||
lda IN.Buf+2
|
||
cmp #$C0
|
||
bne .1
|
||
|
||
lda IN.Buf+4
|
||
beq LCP.Discard
|
||
|
||
cmp #16
|
||
bcs LCP.Discard
|
||
|
||
asl
|
||
tax
|
||
jmp (J.LCP-2,x)
|
||
|
||
.1 cmp #$80
|
||
bne LCP.Discard
|
||
|
||
lda IN.Buf+4
|
||
beq LCP.Discard
|
||
|
||
cmp #8
|
||
bcs LCP.Discard
|
||
|
||
asl
|
||
tax
|
||
jmp (J.IPCP-2,x)
|
||
*--------------------------------------
|
||
LCP.Discard
|
||
IPCP.Discard
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
LCP.IN.ConfReq ldy #0
|
||
|
||
.1 lda IN.Buf,y FF03C021
|
||
sta OUT.Buf,y
|
||
iny
|
||
cpy #4
|
||
bne .1
|
||
|
||
lda #2 Configure-Ack
|
||
sta OUT.Buf,y
|
||
|
||
iny ID
|
||
|
||
lda IN.Buf,y
|
||
sta OUT.Buf,y
|
||
|
||
iny Len MSB
|
||
|
||
lda IN.Buf,y
|
||
sta OUT.Buf,y
|
||
sta ZPBufLen+1
|
||
|
||
iny Len LSB
|
||
|
||
lda IN.Buf,y
|
||
sta OUT.Buf,y
|
||
sta ZPBufLen
|
||
|
||
sec
|
||
sbc #4 minus LEN LEN ... FCS FCS
|
||
tax
|
||
|
||
iny First option ID
|
||
|
||
.2 lda IN.Buf,y
|
||
cmp #6 ACCM ?
|
||
bne .7
|
||
|
||
phy
|
||
phx
|
||
|
||
ldx #4
|
||
|
||
.3 lda IN.Buf+2,y
|
||
sta DWORD-1,x
|
||
iny
|
||
dex
|
||
bne .3
|
||
|
||
* ldx #0
|
||
|
||
ldy #0
|
||
|
||
.4 lda #1
|
||
|
||
.5 and DWORD,y
|
||
bne .6
|
||
|
||
stz ACCM.OUT,x
|
||
|
||
.6 inx
|
||
asl
|
||
bne .5
|
||
|
||
iny
|
||
cpy #4
|
||
bne .4
|
||
|
||
|
||
plx
|
||
ply
|
||
|
||
.7 jsr LCP.Ack.Copy
|
||
bne .2
|
||
|
||
lda ZPBufLen
|
||
clc
|
||
adc #6
|
||
sta ZPBufLen
|
||
bcc .8
|
||
|
||
inc ZPBufLen+1
|
||
|
||
.8 >LDYA L.OUT.Buf
|
||
jsr PPP.FCS16.Set
|
||
|
||
.DO DBG=1
|
||
>LDYA L.OUT.Buf
|
||
ldx #0
|
||
jsr DumpBuf.PPP
|
||
.FIN
|
||
|
||
>LDYA L.OUT.Buf
|
||
jmp SSC.WritePPP
|
||
*--------------------------------------
|
||
LCP.Ack.Copy txa
|
||
sec
|
||
sbc IN.Buf+1,y
|
||
|
||
pha
|
||
|
||
ldx IN.Buf+1,y
|
||
|
||
.1 lda IN.Buf,y
|
||
sta OUT.Buf,y
|
||
iny
|
||
dex
|
||
bne .1
|
||
|
||
plx
|
||
rts
|
||
*--------------------------------------
|
||
LCP.Ack.Next txa
|
||
sec
|
||
sbc IN.Buf+1,y
|
||
tax
|
||
|
||
tya
|
||
clc
|
||
adc IN.Buf+1,y
|
||
tay
|
||
|
||
rts
|
||
*--------------------------------------
|
||
LCP.IN.ConfAck sec
|
||
ror bLCP
|
||
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
LCP.IN.ConfNak
|
||
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
LCP.IN.EchoReq .DO DBG=1
|
||
>LDYA L.LCP.EchoRep
|
||
ldx #0
|
||
jsr DumpBuf.PPP
|
||
.FIN
|
||
|
||
>LDYA L.LCP.EchoRep
|
||
jmp SSC.WritePPP
|
||
*--------------------------------------
|
||
IPCP.IN.ConfReq ldy #0
|
||
|
||
.1 lda IN.Buf,y FF038021
|
||
sta OUT.Buf,y
|
||
iny
|
||
cpy #4
|
||
bne .1
|
||
|
||
lda #2 Configure-Ack
|
||
sta OUT.Buf,y
|
||
|
||
iny ID
|
||
|
||
lda IN.Buf,y
|
||
sta OUT.Buf,y
|
||
|
||
iny Len MSB
|
||
|
||
lda IN.Buf,y
|
||
sta OUT.Buf,y
|
||
sta ZPBufLen+1
|
||
|
||
iny Len LSB
|
||
|
||
lda IN.Buf,y
|
||
sta OUT.Buf,y
|
||
sta ZPBufLen
|
||
|
||
sec
|
||
sbc #4 minus LEN LEN ... FCS FCS
|
||
tax
|
||
|
||
iny First option ID
|
||
|
||
.2 lda IN.Buf,y
|
||
cmp #3 IP ADDR ?
|
||
bne .7
|
||
|
||
phy
|
||
phx
|
||
|
||
>PUSHW L.MSG.RemoteIP
|
||
|
||
ldx #0
|
||
|
||
.3 lda IN.Buf+2,y
|
||
sta DCB.GW,x
|
||
>PUSHA
|
||
iny
|
||
inx
|
||
cpx #4
|
||
bne .3
|
||
|
||
>PUSHBI 4
|
||
>SYSCALL PrintF
|
||
|
||
plx
|
||
ply
|
||
|
||
.7 jsr LCP.Ack.Copy
|
||
bne .2
|
||
|
||
lda ZPBufLen
|
||
clc
|
||
adc #6
|
||
sta ZPBufLen
|
||
bcc .8
|
||
|
||
inc ZPBufLen+1
|
||
|
||
.8 >LDYA L.OUT.Buf
|
||
jsr PPP.FCS16.Set
|
||
|
||
.DO DBG=1
|
||
>LDYA L.OUT.Buf
|
||
ldx #0
|
||
jsr DumpBuf.PPP
|
||
.FIN
|
||
|
||
>LDYA L.OUT.Buf
|
||
jmp SSC.WritePPP
|
||
*--------------------------------------
|
||
IPCP.IN.ConfAck sec
|
||
ror bIPCP
|
||
|
||
* clc
|
||
rts
|
||
*--------------------------------------
|
||
IPCP.IN.ConfNak ldy #10
|
||
ldx #0
|
||
|
||
>PUSHW L.MSG.LocalIP
|
||
|
||
.1 lda IN.Buf,y
|
||
sta IPCP.ConfReq,y
|
||
sta DCB.IP,x
|
||
>PUSHA
|
||
inx
|
||
iny
|
||
cpy #14
|
||
bne .1
|
||
|
||
>PUSHBI 4
|
||
>SYSCALL PrintF
|
||
*--------------------------------------
|
||
IPCP.OUT.ConfReq
|
||
>LDYA L.IPCP.ConfReq
|
||
jsr PPP.FCS16.Set
|
||
|
||
.DO DBG=1
|
||
>LDYA L.IPCP.ConfReq
|
||
ldx #0
|
||
jsr DumpBuf.PPP
|
||
.FIN
|
||
|
||
>LDYA L.IPCP.ConfReq
|
||
jmp SSC.WritePPP
|
||
*--------------------------------------
|
||
SSC.Init >LDYA L.MSG.SSCInit
|
||
>SYSCALL PutS
|
||
|
||
jsr SSC.Close
|
||
|
||
ldy #0
|
||
|
||
.10 lda SSC.STATUS-$8F,x
|
||
bit #SSC.STATUS.nDCD+SSC.STATUS.nDSR true when 0
|
||
bne .20
|
||
|
||
iny
|
||
bne .10
|
||
|
||
* bra .9
|
||
|
||
.20 lda #SSC.CTL.1S+SSC.CTL.8D+SSC.CTL.CLKINT+SSC.CTL.B115200
|
||
sta SSC.CTL-$8F,x
|
||
|
||
lda #SSC.CMD.NOP+SSC.CMD.TE+SSC.CMD.RIRQDIS+SSC.CMD.DTR
|
||
sta SSC.CMD-$8F,x
|
||
|
||
ldy #0
|
||
|
||
.1 lda SSC.STATUS-$8F,x
|
||
bit #SSC.STATUS.nDCD+SSC.STATUS.nDSR true when 0
|
||
beq .2
|
||
|
||
iny
|
||
bne .1
|
||
|
||
.9 lda #MLI.E.IO
|
||
sec
|
||
rts
|
||
|
||
.2 lda SSC.DATA-$8F,x discard any garbage byte
|
||
|
||
.DO SWFC=1
|
||
lda #C.XOFF
|
||
sta SSC.DATA-$8F,x
|
||
.FIN
|
||
|
||
.DO HWFC=1
|
||
lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.DTR
|
||
sta SSC.CMD-$8F,x
|
||
.FIN
|
||
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
SSC.Close ldx DEVSLOTn08F
|
||
stz SSC.RESET-$8F,x
|
||
|
||
lda #SSC.CMD.RIRQDIS
|
||
sta SSC.CMD-$8F,x Applewin Bug ???
|
||
|
||
rts
|
||
*--------------------------------------
|
||
SSC.ReadPPP php
|
||
sei
|
||
|
||
ldx DEVSLOTn08F
|
||
|
||
.DO SWFC=1
|
||
lda #C.XON
|
||
sta SSC.DATA-$8F,x
|
||
.FIN
|
||
|
||
.DO HWFC=1
|
||
lda #SSC.CMD.NOP+SSC.CMD.TE+SSC.CMD.RIRQDIS+SSC.CMD.DTR
|
||
sta SSC.CMD-$8F,x
|
||
.FIN
|
||
|
||
stz b7D
|
||
|
||
.10 ldy #0
|
||
|
||
.1 lda SSC.STATUS-$8F,x
|
||
bit #SSC.STATUS.nDCD true when 0
|
||
bne .9
|
||
|
||
bit #SSC.STATUS.RDRF incoming char?
|
||
bne .3
|
||
|
||
iny
|
||
bne .1
|
||
|
||
.8
|
||
.DO SWFC=1
|
||
lda #C.XOFF
|
||
sta SSC.DATA-$8F,x
|
||
.FIN
|
||
|
||
.DO HWFC=1
|
||
lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.DTR
|
||
sta SSC.CMD-$8F,x
|
||
.FIN
|
||
|
||
plp
|
||
clc
|
||
rts
|
||
|
||
.3 lda SSC.DATA-$8F,x
|
||
|
||
bit b7D
|
||
bmi .4
|
||
|
||
cmp #$7D
|
||
bne .40
|
||
|
||
ror b7D
|
||
bra .1
|
||
|
||
.4 stz b7D
|
||
eor #%00100000
|
||
|
||
.40 cmp #$FF
|
||
bne .10
|
||
|
||
sta IN.Buf
|
||
ldy #1
|
||
|
||
stz b7D
|
||
|
||
.5 lda #SSC.STATUS.RDRF
|
||
|
||
.50 bit SSC.STATUS-$8F,x incoming char?
|
||
beq .50
|
||
|
||
lda SSC.DATA-$8F,x
|
||
bit b7D
|
||
bmi .6
|
||
|
||
cmp #$7D
|
||
bne .7
|
||
|
||
ror b7D
|
||
bra .5
|
||
|
||
.6 stz b7D
|
||
eor #%00100000
|
||
|
||
sta IN.Buf,y
|
||
iny
|
||
bra .5
|
||
|
||
.7 cmp #$7E
|
||
beq .8
|
||
|
||
sta IN.Buf,y
|
||
iny
|
||
bne .5
|
||
|
||
.9 lda #MLI.E.IO
|
||
plp
|
||
sec
|
||
.99 rts
|
||
*--------------------------------------
|
||
SSC.WritePPP >STYA ZPPtr1
|
||
|
||
ldy #7
|
||
lda (ZPPtr1),y Len LO
|
||
clc
|
||
adc #6
|
||
sta ZPPtr3
|
||
|
||
php
|
||
sei
|
||
|
||
ldx DEVSLOTn08F
|
||
|
||
lda SSC.STATUS-$8F,x
|
||
bit #SSC.STATUS.nDCD true when 0
|
||
bne .9
|
||
|
||
.DO HWFC=1
|
||
lda #SSC.CMD.NOP+SSC.CMD.TE+SSC.CMD.RIRQDIS+SSC.CMD.DTR
|
||
sta SSC.CMD-$8F,x
|
||
.FIN
|
||
|
||
lda #SSC.STATUS.TDRE
|
||
|
||
.1 bit SSC.STATUS-$8F,x Register Empty ?
|
||
beq .1
|
||
|
||
lda #$7E
|
||
sta SSC.DATA-$8F,x
|
||
|
||
.2 lda (ZPPtr1)
|
||
|
||
cmp #$7D
|
||
beq .5
|
||
|
||
cmp #$7E
|
||
beq .5
|
||
|
||
cmp #32
|
||
bcs .6
|
||
|
||
tay
|
||
lda ACCM.OUT,y
|
||
beq .53
|
||
|
||
.5 lda #SSC.STATUS.TDRE
|
||
|
||
.51 bit SSC.STATUS-$8F,x Register Empty ?
|
||
beq .51
|
||
|
||
lda #$7D
|
||
sta SSC.DATA-$8F,x
|
||
|
||
lda #SSC.STATUS.TDRE
|
||
|
||
.52 bit SSC.STATUS-$8F,x Register Empty ?
|
||
beq .52
|
||
|
||
lda (ZPPtr1)
|
||
eor #%00100000
|
||
bra .6
|
||
|
||
.53 lda (ZPPtr1)
|
||
|
||
.6 sta SSC.DATA-$8F,x
|
||
|
||
inc ZPPtr1
|
||
bne .60
|
||
|
||
inc ZPPtr1+1
|
||
|
||
.60 dec ZPPtr3
|
||
bne .2
|
||
|
||
lda #SSC.STATUS.TDRE
|
||
|
||
.7 bit SSC.STATUS-$8F,x Register Empty ?
|
||
beq .7
|
||
|
||
lda #$7E
|
||
sta SSC.DATA-$8F,x
|
||
|
||
lda #SSC.STATUS.TDRE
|
||
|
||
.8 bit SSC.STATUS-$8F,x Register Empty ?
|
||
beq .8
|
||
|
||
.DO HWFC=1
|
||
lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.DTR
|
||
sta SSC.CMD-$8F,x
|
||
.FIN
|
||
|
||
plp
|
||
clc
|
||
rts
|
||
|
||
.9 lda #MLI.E.IO
|
||
|
||
plp
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
.DO DBG=1
|
||
DumpBuf.PPP >STYA ZPPtr1
|
||
|
||
stz ZPPtr2
|
||
stz ZPPtr2+1
|
||
|
||
ldy #7
|
||
lda (ZPPtr1),y Len LO
|
||
clc
|
||
adc #6
|
||
sta ZPPtr3
|
||
|
||
dey
|
||
lda (ZPPtr1),y Len HI
|
||
adc #0
|
||
sta ZPPtr3+1
|
||
|
||
>PUSHW L.MSG.DUMPBUF,x
|
||
>PUSHW ZPPtr3
|
||
>PUSHBI 2
|
||
>SYSCALL PrintF
|
||
bcs .9
|
||
|
||
.1 >PUSHW L.MSG.HEXDUMP
|
||
>PUSHW ZPPtr2
|
||
|
||
ldy #0
|
||
|
||
.2 >PUSHB (ZPPtr1),y
|
||
iny
|
||
cpy #16
|
||
bne .2
|
||
|
||
>PUSHBI 18
|
||
>SYSCALL PrintF
|
||
bcs .9
|
||
|
||
lda ZPPtr1
|
||
adc #16
|
||
sta ZPPtr1
|
||
lda ZPPtr1+1
|
||
adc #0
|
||
sta ZPPtr1+1
|
||
|
||
lda ZPPtr2
|
||
adc #16
|
||
sta ZPPtr2
|
||
bcs .8
|
||
lda ZPPtr2+1
|
||
adc #0
|
||
sta ZPPtr2+1
|
||
|
||
lda ZPPtr3
|
||
sec
|
||
sbc #16
|
||
sta ZPPtr3
|
||
lda ZPPtr3+1
|
||
sbc #0
|
||
sta ZPPtr3+1
|
||
bcc .9
|
||
|
||
ora ZPPtr3
|
||
bne .1
|
||
|
||
.8 clc
|
||
|
||
.9 rts
|
||
.FIN
|
||
*--------------------------------------
|
||
PPP.FCS16.Check sec
|
||
.HS 90 BCC
|
||
PPP.FCS16.Set clc
|
||
php
|
||
|
||
>STYA ZPPtr1
|
||
|
||
lda #$ff
|
||
sta FCS
|
||
sta FCS+1
|
||
|
||
ldy #7
|
||
lda (ZPPtr1),y Len LO
|
||
clc
|
||
adc #4 add FF 00 XX XX but dont include FCS FCS
|
||
eor #$ff
|
||
sta ZPPtr2
|
||
|
||
dey
|
||
lda (ZPPtr1),y Len HI
|
||
adc #0
|
||
eor #$ff
|
||
sta ZPPtr2+1
|
||
|
||
ldy #0
|
||
|
||
.1 inc ZPPtr2
|
||
bne .2
|
||
|
||
inc ZPPtr2+1
|
||
beq .7
|
||
|
||
.2 lda (ZPPtr1),y
|
||
iny
|
||
bne .3
|
||
|
||
inc ZPPtr1+1
|
||
|
||
.3 eor FCS
|
||
tax
|
||
|
||
lda FCS.LO,x
|
||
eor FCS+1
|
||
sta FCS
|
||
|
||
lda FCS.HI,x
|
||
sta FCS+1
|
||
|
||
bra .1
|
||
|
||
.7 plp
|
||
bcc .8 CC = set
|
||
|
||
lda FCS
|
||
eor #$ff
|
||
eor (ZPPtr1),y
|
||
bne .9
|
||
|
||
iny
|
||
|
||
lda FCS+1
|
||
eor #$ff
|
||
eor (ZPPtr1),y
|
||
bne .9
|
||
|
||
clc
|
||
rts
|
||
|
||
.8 lda FCS
|
||
eor #$ff
|
||
sta (ZPPtr1),y
|
||
|
||
iny
|
||
|
||
lda FCS+1
|
||
eor #$ff
|
||
sta (ZPPtr1),y
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
.INB usr/src/drv/pppssc.drv.s.e
|
||
*--------------------------------------
|
||
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.UNEXPECTED .AZ "\r\nERR:Unexpected reply From Modem\r\n{%s}\r\n"
|
||
MSG.SYNTAX .AZ "\r\nERR:Bad Syntax In ppp.conf\r\n{%s}\r\n"
|
||
MSG.SSCInit .AZ "Connecting..."
|
||
MSG.LCPInit .AZ "LCP Negotiation..."
|
||
MSG.IPCPInit .AZ "IPCP Negotiation..."
|
||
MSG.LocalIP .AZ "Local IP is %d.%d.%d.%d\r\n"
|
||
MSG.RemoteIP .AZ "Remote IP is %d.%d.%d.%d\r\n"
|
||
.DO DBG=1
|
||
MSG.DUMPBUFS .AZ ">>Send:%H\r\n"
|
||
MSG.DUMPBUFR .AZ "Recv<<:%H\r\n"
|
||
MSG.HEXDUMP .AZ "%H:%h %h %h %h %h %h %h %h:%h %h %h %h %h %h %h %h\r\n"
|
||
.FIN
|
||
*--------------------------------------
|
||
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"
|
||
*--------------------------------------
|
||
LCP.ConfReq .HS FF03
|
||
.HS C021 LCP
|
||
LCP.ConfReq.DATA
|
||
.HS 01 Configure-Request
|
||
.HS FF ID
|
||
.DA /LCP.ConfReq.LEN,#LCP.ConfReq.LEN
|
||
* .HS 01.04 MRU
|
||
* .DA /1400,#1400
|
||
.DO SWFC=1
|
||
.HS 02.06.000A0000 ACCM
|
||
.ELSE
|
||
.HS 02.06.00000000 ACCM
|
||
.FIN
|
||
.HS 05.06.EA4C2B41 MAGIC
|
||
* .HS 07.02
|
||
* .HS 08.02
|
||
LCP.ConfReq.LEN .EQ *-LCP.ConfReq.DATA
|
||
.BS 2 FCS
|
||
*--------------------------------------
|
||
IPCP.ConfReq .HS FF03
|
||
.HS 8021 IPCP
|
||
IPCP.ConfReq.DATA
|
||
.HS 01 Configure-Request
|
||
.HS FF ID
|
||
.DA /IPCP.ConfReq.LEN,#IPCP.ConfReq.LEN
|
||
* .HS 02.06.00.2D.0F.00 VJ
|
||
.HS 03.06.00.00.00.00 IP Address
|
||
IPCP.ConfReq.LEN .EQ *-IPCP.ConfReq.DATA
|
||
.BS 2 FCS
|
||
*--------------------------------------
|
||
IN.Buf .BS 256
|
||
OUT.Buf .BS 256
|
||
*--------------------------------------
|
||
.INB usr/src/drv/pppssc.drv.s.d
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/drv/pppssc.drv.s
|
||
ASM
|