mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-19 07:30:41 +00:00
ProDOS.FX:XCLK support, PM.VEDRIVE
This commit is contained in:
parent
d249f0c0b9
commit
afc4e61dc9
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -900,7 +900,7 @@ LA021 jsr BS.KW.FRE
|
||||
|
||||
lda #$00
|
||||
sta BS.MEMSIZE
|
||||
jmp LA089 Z
|
||||
bra LA089 Z
|
||||
*--------------------------------------
|
||||
BS.KW.FRE stz BS.TXTTAB
|
||||
|
||||
@ -937,7 +937,7 @@ LA07D lda AS.HIMEM+1
|
||||
lda AS.HIMEM
|
||||
sta BS.MEMSIZE
|
||||
sta AS.STRINGSTART
|
||||
|
||||
*--------------------------------------
|
||||
LA089 clc
|
||||
beq LA08D
|
||||
|
||||
@ -999,7 +999,7 @@ LA0E0 sta XBBDA
|
||||
|
||||
LA0F8 lda #BS.E.NOBUFFER
|
||||
LA0FA rts
|
||||
|
||||
*--------------------------------------
|
||||
LA0FB clc
|
||||
|
||||
LA0FC lda ZP.A2L
|
||||
@ -1039,7 +1039,7 @@ LA10E ldy #$00
|
||||
|
||||
LA12F clc
|
||||
rts
|
||||
|
||||
*--------------------------------------
|
||||
LA131 jsr LA160
|
||||
bcs LA12F
|
||||
|
||||
@ -1119,15 +1119,15 @@ LA199 lda XBBD7
|
||||
ldx XBBD9
|
||||
inx
|
||||
|
||||
LA1AD lda (ZP.PCL),y
|
||||
.1 lda (ZP.PCL),y
|
||||
sta (ZP.A1L),y
|
||||
iny
|
||||
bne LA1AD
|
||||
bne .1
|
||||
|
||||
inc ZP.A1H
|
||||
inc ZP.PCH
|
||||
dex
|
||||
bne LA1AD
|
||||
bne .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -321,7 +321,7 @@ LA3F2 cmp XBBDC
|
||||
bne LA3E1
|
||||
|
||||
beq LA3DB
|
||||
|
||||
*--------------------------------------
|
||||
LA3FD lda (ZP.A2L),y
|
||||
beq LA410
|
||||
|
||||
|
@ -967,7 +967,7 @@ LB481 inx
|
||||
dec ZP.PCL
|
||||
bne LB481
|
||||
|
||||
BS.KW.NOMON clc
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
BS.CheckFilename
|
||||
@ -1582,7 +1582,7 @@ BS.KW.ONLINE jsr MON.CROUT
|
||||
pla
|
||||
sta MLI.DEVNUM
|
||||
|
||||
clc
|
||||
BS.KW.NOMON clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
BS.Expand2.P .DA #1
|
||||
|
1374
BASIC.FX/BASIC.S.X.txt
Normal file
1374
BASIC.FX/BASIC.S.X.txt
Normal file
File diff suppressed because it is too large
Load Diff
131
BIN/IRC.S.TLS.txt
Normal file
131
BIN/IRC.S.TLS.txt
Normal file
@ -0,0 +1,131 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
CS.RUN.TLS jsr CS.RUN.TLS.init
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.TLS.CHELLO
|
||||
>PUSHWI TLS.CHELLO.L
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
|
||||
bcs .9
|
||||
|
||||
lda #TIMEOUT.MAX
|
||||
sta TimeOut
|
||||
|
||||
.1 jsr CS.RUN.TLS.Read
|
||||
bcc .2
|
||||
|
||||
ldx TimeOut
|
||||
bne .1
|
||||
|
||||
lda #MLI.E.IO
|
||||
bra .9
|
||||
|
||||
.2
|
||||
>DEBUG
|
||||
|
||||
bra .1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.9 pha
|
||||
>LDYA L.MSG.TLSKO
|
||||
>SYSCALL PutS
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.TLS.init >LDYA L.MSG.TLS
|
||||
>SYSCALL PutS
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
sta ZPPtr1
|
||||
lda A2osX.RANDOM16+1
|
||||
and #$7F
|
||||
sta ZPPtr1+1
|
||||
|
||||
>LDYA L.TLS.CHELLO.UT
|
||||
>STYA ZPPtr2
|
||||
|
||||
ldy #31
|
||||
|
||||
.10 lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
dey
|
||||
bpl .10
|
||||
|
||||
lda #50
|
||||
sta TimeOut
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.TLS.Read >SLEEP
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI 11
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Read
|
||||
bcs .99
|
||||
|
||||
cpy #11
|
||||
bne .9
|
||||
|
||||
ldy #TLS.HDR.L-1
|
||||
|
||||
.1 lda (ZPBufPtr),y
|
||||
cmp TLS.HDR,y
|
||||
bne .9
|
||||
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
>PUSHW L.MSG.TLS.HDR
|
||||
ldy #TLS.LENGTH
|
||||
lda (ZPBufPtr),y
|
||||
>PUSHA
|
||||
iny
|
||||
lda (ZPBufPtr),y
|
||||
>PUSHA
|
||||
|
||||
ldy #TLS.HS.MT
|
||||
lda (ZPBufPtr),y
|
||||
>PUSHA
|
||||
|
||||
>PUSHBI 3
|
||||
>SYSCALL PrintF
|
||||
|
||||
>SLEEP
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW ZPBufPtr
|
||||
ldy #TLS.LENGTH+1
|
||||
lda (ZPBufPtr),y
|
||||
sec
|
||||
sbc #6
|
||||
tax
|
||||
|
||||
dey
|
||||
lda (ZPBufPtr),y
|
||||
sbc #0
|
||||
>PUSHA
|
||||
|
||||
txa
|
||||
>PUSHA
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Read
|
||||
bcs .99
|
||||
|
||||
>STYA ZPPtr2 RCVD len
|
||||
|
||||
.99 rts
|
||||
|
||||
.9 lda #MLI.E.IO
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/irc.s.tls
|
||||
LOAD usr/src/bin/irc.s
|
||||
ASM
|
@ -5,11 +5,12 @@ NEW
|
||||
.OR $2000
|
||||
.TF bin/irc
|
||||
*--------------------------------------
|
||||
TLS .EQ 0
|
||||
TLS .EQ 1
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/eth.i
|
||||
.INB inc/libtcpip.i
|
||||
.DO TLS=1
|
||||
@ -120,7 +121,7 @@ J.ESC .DA CS.RUN.CHARIN.LEFT
|
||||
.DA CS.RUN.CHARIN.RIGHT
|
||||
.DO TLS=1
|
||||
L.MSG.TLS .DA MSG.TLS
|
||||
L.MSG.TLS.1 .DA MSG.TLS.1
|
||||
L.MSG.TLS.HDR .DA MSG.TLS.HDR
|
||||
L.MSG.TLSKO .DA MSG.TLSKO
|
||||
L.TLS.CHELLO .DA TLS.CHELLO
|
||||
L.TLS.CHELLO.UT .DA TLS.CHELLO.UT
|
||||
@ -283,7 +284,7 @@ CS.RUN.CheckArgs
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetBuffers
|
||||
>LDYAI 2048
|
||||
>LDYAI 5120
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
|
||||
@ -353,73 +354,6 @@ CS.RUN.Connect >PUSHBI S.SOCKET.T.STREAM
|
||||
>PUSHBI 0
|
||||
>SYSCALL PrintF
|
||||
rts
|
||||
*--------------------------------------
|
||||
.DO TLS=1
|
||||
CS.RUN.TLS jsr CS.RUN.TLS.init
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.TLS.CHELLO
|
||||
>PUSHWI TLS.CHELLO.L
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
|
||||
bcs .9
|
||||
|
||||
lda #TIMEOUT.MAX
|
||||
sta TimeOut
|
||||
|
||||
.1 >SLEEP
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI 2048
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Read
|
||||
bcc .2
|
||||
|
||||
ldx TimeOut
|
||||
bne .1
|
||||
|
||||
bra .9
|
||||
|
||||
.2 >STYA ZPPtr2 RCVD len
|
||||
>PUSHW L.MSG.TLS.1
|
||||
>PUSHW ZPPtr2
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
.9 pha
|
||||
>LDYA L.MSG.TLSKO
|
||||
>SYSCALL PutS
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.TLS.init >LDYA L.MSG.TLS
|
||||
>SYSCALL PutS
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
sta ZPPtr1
|
||||
lda A2osX.RANDOM16+1
|
||||
and #$7F
|
||||
sta ZPPtr1+1
|
||||
|
||||
>LDYA L.TLS.CHELLO.UT
|
||||
>STYA ZPPtr2
|
||||
|
||||
ldy #31
|
||||
|
||||
.10 lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
dey
|
||||
bpl .10
|
||||
|
||||
lda #50
|
||||
sta TimeOut
|
||||
|
||||
rts
|
||||
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
CS.RUN.Register >LDYA L.MSG.REGISTER
|
||||
jsr CS.RUN.STATUSMSG
|
||||
@ -1091,6 +1025,10 @@ CS.QUIT ldy #hOutputBuf
|
||||
|
||||
>SYSCALL FreeMem
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
.DO TLS=1
|
||||
.INB usr/src/bin/irc.s.tls
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
LIBTCPIP .AZ "libtcpip"
|
||||
@ -1104,7 +1042,7 @@ MSG.SKTOK .AZ "Connected\r\n(Exit key is Ctrl-T)\r\n"
|
||||
MSG.SKTERR .AZ "Socket Error : $%h\r\n"
|
||||
.DO TLS=1
|
||||
MSG.TLS .AZ "TLS:Negociation..."
|
||||
MSG.TLS.1 .AZ "TLS:Received %D bytes.\r\n"
|
||||
MSG.TLS.HDR .AZ "TLS:Received %D bytes, Message Type:%h.\r\n"
|
||||
MSG.TLSKO .AZ "TLS:Negotiation failed."
|
||||
.FIN
|
||||
MSG.REGISTER .AZ "Registering User..."
|
||||
@ -1184,6 +1122,11 @@ TLS.CHELLO.L .EQ *-TLS.CHELLO
|
||||
TLS.CHELLO.L1 .EQ *-TLS.CHELLO.1
|
||||
TLS.CHELLO.L2 .EQ *-TLS.CHELLO.2
|
||||
TLS.CHELLO.LE .EQ *-TLS.CHELLO.E
|
||||
*--------------------------------------
|
||||
TLS.HDR .DA #TLS.CT.HS
|
||||
.DA TLS.LV.TLS12
|
||||
TLS.HDR.L .EQ *-TLS.HDR
|
||||
*--------------------------------------
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
@ -2,10 +2,10 @@ NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
IO.D2.SeekTimeR .EQ 45 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 30 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 30 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 30 ProDOS.FX initial
|
||||
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||
IO.D2.SeekTimeF .EQ 56 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 56 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 28 ProDOS.FX initial
|
||||
IO.D2.SeekTimeI .EQ 14 ProDOS.FX increment -> until > 128
|
||||
*--------------------------------------
|
||||
IO.D2.Ph0Off .EQ $C080
|
||||
IO.D2.Ph0On .EQ $C081
|
||||
|
@ -393,12 +393,11 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||
lda #0
|
||||
jsr BB.Wait100usecA
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bcc .11
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
nop
|
||||
nop
|
||||
.11 lda IO.D2.Ph0Off,y
|
||||
.11
|
||||
*--------------------------------------
|
||||
BB.Read ldx BB.Slotn0
|
||||
|
||||
|
@ -136,14 +136,12 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bcc .90
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
nop
|
||||
nop
|
||||
.90 lda IO.D2.Ph0Off,y
|
||||
|
||||
rts
|
||||
|
||||
.90 rts
|
||||
*--------------------------------------
|
||||
D2.SeekPhOnY and #6
|
||||
ora D2.Slotn0
|
||||
|
@ -24,7 +24,7 @@ LDR.MSG.IIe .AT "//e"
|
||||
LDR.MSG.IIc .AT "//c"
|
||||
LDR.MSG.IIgs .AT "IIgs"
|
||||
LDR.MSG.Unknown .AT "Unknown"
|
||||
LDR.MSG.CLK .AT "XClk"
|
||||
LDR.MSG.CLK .AT "?Clk"
|
||||
LDR.MSG.RAM .AT "/RAM"
|
||||
LDR.MSG.ROOTERR .AT "ERR reading CATALOG"
|
||||
*--------------------------------------
|
||||
@ -430,7 +430,7 @@ LDR.ClkDevDCLK php
|
||||
ldy PAKME.DCLK+1
|
||||
jmp LDR.SetupCLK
|
||||
|
||||
.9 cld
|
||||
.9 cld
|
||||
*--------------------------------------
|
||||
LDR.ClkDevNCLK php
|
||||
sei
|
||||
@ -520,7 +520,7 @@ LDR.ClkDevNCLK php
|
||||
bra LDR.SetupCLK
|
||||
*--------------------------------------
|
||||
LDR.ClkDevTCLK jsr LDR.IsIIc
|
||||
bcs .9
|
||||
bcs LDR.ClkDevXCLK
|
||||
|
||||
stz idxl
|
||||
lda #$C1
|
||||
@ -532,11 +532,6 @@ LDR.ClkDevTCLK jsr LDR.IsIIc
|
||||
.1 jsr LDR.CheckTClkID
|
||||
bcs .7
|
||||
|
||||
* sta SETPAGE2
|
||||
* stz $478,x
|
||||
* stz $7f8,x
|
||||
|
||||
* sta CLRPAGE2
|
||||
stz $478,x
|
||||
stz $7f8,x
|
||||
|
||||
@ -568,8 +563,31 @@ LDR.ClkDevTCLK jsr LDR.IsIIc
|
||||
lda idxl+1
|
||||
cmp #$C8
|
||||
bne .1
|
||||
*--------------------------------------
|
||||
LDR.ClkDevXCLK bit RROMBNK2
|
||||
sta $C070
|
||||
bit $FACA
|
||||
bit $FACA
|
||||
bit $FAFE
|
||||
|
||||
lda $DFFE
|
||||
cmp #$4A
|
||||
bne .9
|
||||
|
||||
lda $DFFF
|
||||
cmp #$CD
|
||||
bne .9
|
||||
|
||||
lda $D8F0
|
||||
bit $F851
|
||||
cmp #$AD
|
||||
beq .1
|
||||
|
||||
.9 rts
|
||||
|
||||
.1 lda #'X'
|
||||
ldx PAKME.XCLK
|
||||
ldy PAKME.XCLK+1
|
||||
*--------------------------------------
|
||||
LDR.SetupCLK stx ZPInBufPtr
|
||||
sty ZPInBufPtr+1
|
||||
|
100
ProDOS.FX/ProDOS.S.XCLK.txt
Normal file
100
ProDOS.FX/ProDOS.S.XCLK.txt
Normal file
@ -0,0 +1,100 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* Driver For ROMXce Clock
|
||||
*--------------------------------------
|
||||
* we can safely use $200, PCL/H, AIL/H (used by TCLK)
|
||||
*--------------------------------------
|
||||
XCLK.API.RTCBUF .EQ $2B0
|
||||
XCLK.API.WRCLK .EQ $C803
|
||||
XCLK.API.RDCLK .EQ $C806
|
||||
*--------------------------------------
|
||||
XCLK.START php
|
||||
sei
|
||||
ldx #XCLK.START2xx.L
|
||||
|
||||
.1 lda XCLK.START2xx,X
|
||||
sta XCLK.CODE2xx,X
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
jsr XCLK.CODE2xx
|
||||
* Minutes
|
||||
lda XCLK.API.RTCBUF+1
|
||||
and #%01111111 59
|
||||
jsr XCLK.BCD2BIN
|
||||
sta TIMELO
|
||||
* Hour
|
||||
lda XCLK.API.RTCBUF+2
|
||||
and #%00111111 23
|
||||
jsr XCLK.BCD2BIN
|
||||
sta TIMELO+1
|
||||
* Day
|
||||
lda XCLK.API.RTCBUF+4
|
||||
and #%00111111 31
|
||||
jsr XCLK.BCD2BIN
|
||||
sta DATELO
|
||||
* Year
|
||||
lda XCLK.API.RTCBUF+6 99
|
||||
jsr XCLK.BCD2BIN
|
||||
sta DATELO+1
|
||||
* Month
|
||||
lda XCLK.API.RTCBUF+5
|
||||
and #%00011111 12
|
||||
jsr XCLK.BCD2BIN
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
tsb DATELO
|
||||
rol DATELO+1
|
||||
|
||||
plp
|
||||
rts
|
||||
|
||||
XCLK.BCD2BIN tax
|
||||
and #$F0
|
||||
lsr CC
|
||||
sta PCL temp location
|
||||
lsr CC
|
||||
lsr CC
|
||||
adc PCL
|
||||
sta PCL
|
||||
|
||||
txa
|
||||
* clc
|
||||
and #$0F
|
||||
adc PCL
|
||||
|
||||
rts
|
||||
|
||||
XCLK.START2xx bit RROMBNK2
|
||||
sta $C070
|
||||
bit $FACA
|
||||
bit $FACA
|
||||
bit $FAFE
|
||||
jsr XCLK.API.RDCLK
|
||||
bit $F851
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
rts
|
||||
|
||||
XCLK.START2xx.L .EQ *-XCLK.START2xx
|
||||
*--------------------------------------
|
||||
XCLK.CODE2xx .EQ XCLK.API.RTCBUF-XCLK.START2xx.L
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
XCLK.LEN .EQ *-XCLK.START
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* CONTROL SECTION :
|
||||
*--------------------------------------
|
||||
.DO XCLK.LEN>125
|
||||
ERROR:XCLK Driver too big
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/prodos.fx/prodos.s.xclk
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
ASM
|
@ -568,7 +568,7 @@ XRW.Wait100usec lda #1
|
||||
XRW.Wait100usecA
|
||||
phx
|
||||
|
||||
.1 ldx #18 (2)
|
||||
.1 ldx #20 (2)
|
||||
|
||||
.2 dex (2)
|
||||
bne .2 (3)
|
||||
@ -836,15 +836,13 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
|
||||
|
||||
jsr XRW.Wait25600usec
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bcc .90
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
nop
|
||||
clc Exit wit CC (recalibrate)
|
||||
|
||||
.90 lda IO.D2.Ph0Off,y
|
||||
|
||||
rts
|
||||
.90 rts
|
||||
*--------------------------------------
|
||||
XRW.SeekPhOnY and #6
|
||||
ora A2L
|
||||
|
@ -220,6 +220,7 @@ PAKME.RAMX .DA RAMX.PAK
|
||||
PAKME.DCLK .DA DCLK.PAK
|
||||
PAKME.NCLK .DA NCLK.PAK
|
||||
PAKME.TCLK .DA TCLK.PAK
|
||||
PAKME.XCLK .DA XCLK.PAK
|
||||
PAKME.CCLK .DA CCLK.PAK
|
||||
PAKME.SEL1 .DA SEL1.PAK
|
||||
PAKME.SEL2 .DA SEL2.PAK
|
||||
@ -289,6 +290,12 @@ TCLK.PAK .DA #0
|
||||
.INB usr/src/prodos.fx/prodos.s.tclk
|
||||
.EP
|
||||
|
||||
XCLK.PAK .DA #0
|
||||
.DA XCLK.LEN
|
||||
.PH XDOS.ClockDrv
|
||||
.INB usr/src/prodos.fx/prodos.s.xclk
|
||||
.EP
|
||||
|
||||
CCLK.PAK .DA #0
|
||||
.DA CCLK.LEN
|
||||
.PH XDOS.ClockDrv
|
||||
@ -309,7 +316,7 @@ SEL2.PAK .DA #0
|
||||
*--------------------------------------
|
||||
.AS "PAKME" TAG
|
||||
.DA $2000 BIN ORG
|
||||
.DA #13 Chunk Count
|
||||
.DA #14 Chunk Count
|
||||
.DA PAKME.Table Chunks
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
408
SYS/PM.VEDRIVE.S.BK.txt
Normal file
408
SYS/PM.VEDRIVE.S.BK.txt
Normal file
@ -0,0 +1,408 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* Drivers
|
||||
*--------------------------------------
|
||||
* OP = 2 : Write drv1
|
||||
* OP = 3 : Read drv1
|
||||
* OP = 4 : Write drv2
|
||||
* OP = 5 : Read drv2
|
||||
* CMD = $C5+OP+BLKLO+BLKHI+CHKSUM
|
||||
* DO NOT trash DRV.COMMAND...DRV.BLKNUM as ProDOS
|
||||
* reuses them after Block operation
|
||||
* A1,A2 are used by Disk II Driver,
|
||||
* so we use it safely as Tmp Ptr
|
||||
*--------------------------------------
|
||||
DRV.A1L .EQ $3C
|
||||
DRV.A1H .EQ $3D
|
||||
DRV.A2L .EQ $3E
|
||||
DRV.A2H .EQ $3F
|
||||
DRV.COMMAND .EQ $42
|
||||
DRV.UNITNUM .EQ $43
|
||||
DRV.BUFF .EQ $44
|
||||
DRV.BLKNUM .EQ $46
|
||||
*--------------------------------------
|
||||
DRV.BLK .PH DRV.BLK.START Main LC Bnk 2 $D001->$DFFF
|
||||
|
||||
DRV.BLK.1 lda DRV.COMMAND S=0,R=1,W=2,F=3
|
||||
bne .1
|
||||
|
||||
bit DRV.UNITNUM return Status
|
||||
bmi .3
|
||||
|
||||
ldx DRV.D1TotalBlks
|
||||
ldy DRV.D1TotalBlks+1
|
||||
bra .8
|
||||
|
||||
.3 ldx DRV.D2TotalBlks
|
||||
ldy DRV.D2TotalBlks+1
|
||||
|
||||
.8 lda #0
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 cmp #3
|
||||
beq .8 Format ....
|
||||
|
||||
bcs DRV.BLK.CMD.ERR more....IO error
|
||||
|
||||
ora #2 W=2,R=3
|
||||
ldy DRV.UNITNUM
|
||||
bpl .2
|
||||
|
||||
adc #2 CC from bcs
|
||||
|
||||
.2 sta DRV.UDPBuf.Cmd store cmd
|
||||
eor #ADT.CMD.VSD
|
||||
eor DRV.BLKNUM
|
||||
eor DRV.BLKNUM+1
|
||||
sta DRV.UDPBuf.Sum Compute & store CheckSum
|
||||
|
||||
lda DRV.BLKNUM
|
||||
sta DRV.UDPBuf.BlkL
|
||||
lda DRV.BLKNUM+1
|
||||
sta DRV.UDPBuf.BlkH
|
||||
*--------------------------------------
|
||||
lda DRV.COMMAND
|
||||
dec 1-1=0 if read
|
||||
bne DRV.BLK.CMD.W go write
|
||||
*--------------------------------------
|
||||
* Read block
|
||||
*--------------------------------------
|
||||
DRV.BLK.CMD.R >LDYAI S.UDP+5
|
||||
jsr DRV.NIC.SendUDP
|
||||
bcs DRV.BLK.CMD.ERR
|
||||
|
||||
jsr DRV.BLK.GetFrame
|
||||
bcs .9
|
||||
|
||||
ldy #DRV.R200.L
|
||||
|
||||
.6 lda DRV.R200-1,y
|
||||
sta $200-1,y
|
||||
dey
|
||||
bne .6
|
||||
|
||||
inc DRV.BUFF+1
|
||||
|
||||
jsr $200
|
||||
|
||||
dec DRV.R200.DEC
|
||||
dec DRV.BUFF+1
|
||||
|
||||
jsr $200
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
DRV.BLK.CMD.ERR lda #MLI.E.IO
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Write Block
|
||||
*--------------------------------------
|
||||
DRV.BLK.CMD.W ldy #DRV.W200.L
|
||||
|
||||
.1 lda DRV.W200-1,y
|
||||
sta $200-1,y
|
||||
dey
|
||||
bne .1
|
||||
|
||||
inc DRV.BUFF+1
|
||||
|
||||
stz DRV.UDPBuf.Data+512
|
||||
|
||||
jsr $200
|
||||
|
||||
dec DRV.W200.DEC
|
||||
dec DRV.BUFF+1
|
||||
|
||||
jsr $200
|
||||
|
||||
>LDYAI S.UDP+5+512+1
|
||||
jsr DRV.NIC.SendUDP
|
||||
|
||||
bcs DRV.BLK.CMD.ERR
|
||||
|
||||
jsr DRV.BLK.GetFrame
|
||||
bcs .9
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
DRV.BLK.GetFrame
|
||||
stz DRV.TimeOut
|
||||
|
||||
.1 lda VBL
|
||||
|
||||
.2 pha
|
||||
jsr DRV.NIC.Rcvd
|
||||
pla
|
||||
bcc .3
|
||||
|
||||
eor VBL
|
||||
bpl .2
|
||||
|
||||
dec DRV.TimeOut
|
||||
bne .1
|
||||
|
||||
lda #MLI.E.IO
|
||||
* sec
|
||||
rts
|
||||
|
||||
.3 jsr DRV.BLK.CheckFrame
|
||||
bcs .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.BLK.CheckFrame
|
||||
lda DRV.InBuf+S.ETH.EII.TYPE
|
||||
cmp /S.ETH.EII.TYPE.IP
|
||||
bne .9
|
||||
|
||||
lda DRV.InBuf+S.ETH.EII.TYPE+1
|
||||
cmp #S.ETH.EII.TYPE.IP
|
||||
beq .4
|
||||
|
||||
cmp #S.ETH.EII.TYPE.ARP
|
||||
bne .9
|
||||
|
||||
lda DRV.InBuf+S.ARP.OPERATION+1
|
||||
|
||||
cmp #S.ARP.OPERATION.REQ
|
||||
bne .9
|
||||
|
||||
ldx #3
|
||||
|
||||
.1 lda DRV.InBuf+S.ARP.SPA,x
|
||||
cmp DRV.UDPBuf+S.IP.DST,x
|
||||
bne .9
|
||||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
jsr DRV.NIC.SendARP
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
|
||||
.4 lda DRV.InBuf+S.IP.PROTOCOL
|
||||
cmp #S.IP.PROTOCOL.UDP
|
||||
bne .9
|
||||
|
||||
ldx #3
|
||||
|
||||
.5 lda DRV.InBuf+S.IP.SRC,x
|
||||
cmp DRV.UDPBuf+S.IP.DST,x
|
||||
bne .9
|
||||
|
||||
lda DRV.InBuf+S.IP.DST,x
|
||||
cmp DRV.UDPBuf+S.IP.SRC,x
|
||||
bne .9
|
||||
|
||||
dex
|
||||
bpl .5
|
||||
|
||||
lda DRV.InBuf+S.TCPUDP.SRCPORT
|
||||
cmp DRV.UDPBuf+S.TCPUDP.DSTPORT
|
||||
bne .9
|
||||
|
||||
lda DRV.InBuf+S.TCPUDP.SRCPORT+1
|
||||
cmp DRV.UDPBuf+S.TCPUDP.DSTPORT+1
|
||||
bne .9
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.BLK.IPUDPCheksum
|
||||
stz DRV.UDPBuf+S.IP.HDR.CHECKSUM
|
||||
stz DRV.UDPBuf+S.IP.HDR.CHECKSUM+1
|
||||
|
||||
stz DRV.CheckSum
|
||||
stz DRV.CheckSum+1
|
||||
|
||||
lda DRV.FrameSize
|
||||
sec
|
||||
sbc #S.ETH.EII
|
||||
sta DRV.UDPBuf+S.IP.TOTAL.LENGTH+1
|
||||
|
||||
lda DRV.FrameSize+1
|
||||
sbc /S.ETH.EII
|
||||
sta DRV.UDPBuf+S.IP.TOTAL.LENGTH
|
||||
|
||||
clc
|
||||
|
||||
ldy #S.IP.V.IHL
|
||||
|
||||
ldx #10 10 words for IP Header
|
||||
|
||||
.1 lda DRV.UDPBuf,y
|
||||
adc DRV.CheckSum
|
||||
sta DRV.CheckSum
|
||||
iny
|
||||
lda DRV.UDPBuf,y
|
||||
adc DRV.CheckSum+1
|
||||
sta DRV.CheckSum+1
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
lda DRV.CheckSum
|
||||
adc #0
|
||||
eor #$FF
|
||||
sta DRV.UDPBuf+S.IP.HDR.CHECKSUM
|
||||
|
||||
lda DRV.CheckSum+1
|
||||
adc #0
|
||||
eor #$FF
|
||||
sta DRV.UDPBuf+S.IP.HDR.CHECKSUM+1
|
||||
*--------------------------------------
|
||||
stz DRV.UDPBuf+S.UDP.CHECKSUM
|
||||
stz DRV.UDPBuf+S.UDP.CHECKSUM+1
|
||||
|
||||
lda DRV.FrameSize
|
||||
sec
|
||||
sbc #S.IP
|
||||
sta DRV.UDPBuf+S.UDP.LENGTH+1
|
||||
|
||||
pha
|
||||
|
||||
eor #$ff
|
||||
sta DRV.nCnt
|
||||
|
||||
lda DRV.FrameSize+1
|
||||
sbc /S.IP
|
||||
sta DRV.UDPBuf+S.UDP.LENGTH
|
||||
|
||||
tax
|
||||
|
||||
eor #$ff
|
||||
sta DRV.nCnt+1
|
||||
|
||||
clc
|
||||
|
||||
pla A,X = UDP Len
|
||||
adc #S.IP.PROTOCOL.UDP
|
||||
sta DRV.CheckSum+1
|
||||
|
||||
txa
|
||||
adc /S.IP.PROTOCOL.UDP (all zero)
|
||||
sta DRV.CheckSum
|
||||
|
||||
ldy #S.IP.SRC
|
||||
ldx #4 4 words for SRC & DST IP
|
||||
|
||||
.2 lda DRV.UDPBuf,y
|
||||
adc DRV.CheckSum
|
||||
sta DRV.CheckSum
|
||||
iny
|
||||
lda DRV.UDPBuf,y
|
||||
adc DRV.CheckSum+1
|
||||
sta DRV.CheckSum+1
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
>LDYAI DRV.UDPBuf
|
||||
>STYA DRV.A1L
|
||||
|
||||
ldy #S.IP
|
||||
|
||||
.3 inc DRV.nCnt
|
||||
bne .4
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .8
|
||||
|
||||
.4 lda (DRV.A1L),y
|
||||
adc DRV.CheckSum
|
||||
sta DRV.CheckSum
|
||||
|
||||
iny
|
||||
bne .5
|
||||
|
||||
inc DRV.A1H
|
||||
|
||||
.5 inc DRV.nCnt
|
||||
bne .6
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .7
|
||||
|
||||
.6 lda (DRV.A1L),y
|
||||
adc DRV.CheckSum+1
|
||||
sta DRV.CheckSum+1
|
||||
iny
|
||||
bne .3
|
||||
|
||||
inc DRV.A1H
|
||||
bra .3
|
||||
|
||||
.7 lda #0
|
||||
adc DRV.CheckSum+1
|
||||
sta DRV.CheckSum+1
|
||||
|
||||
.8 lda DRV.CheckSum
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta DRV.UDPBuf+S.UDP.CHECKSUM
|
||||
|
||||
lda DRV.CheckSum+1
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta DRV.UDPBuf+S.UDP.CHECKSUM+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.R200 lda DRV.InBuf+S.UDP+10+256,y
|
||||
DRV.R200.DEC .EQ *-DRV.R200+$1ff
|
||||
bit RRAMWRAMBNK1
|
||||
sta (DRV.BUFF),y
|
||||
bit RRAMWRAMBNK2
|
||||
iny
|
||||
bne DRV.R200
|
||||
|
||||
rts
|
||||
|
||||
DRV.R200.L .EQ *-DRV.R200
|
||||
*--------------------------------------
|
||||
DRV.W200 bit RRAMWRAMBNK1
|
||||
lda (DRV.BUFF),y
|
||||
bit RRAMWRAMBNK2
|
||||
sta DRV.UDPBuf.Data+256,y
|
||||
DRV.W200.DEC .EQ *-DRV.W200+$1ff
|
||||
eor DRV.UDPBuf.Data+512
|
||||
sta DRV.UDPBuf.Data+512
|
||||
iny
|
||||
bne DRV.W200
|
||||
|
||||
rts
|
||||
|
||||
DRV.W200.L .EQ *-DRV.W200
|
||||
*--------------------------------------
|
||||
DRV.D1TotalBlks .BS 2
|
||||
DRV.D2TotalBlks .BS 2
|
||||
DRV.BLK.Slotn0 .BS 1 SELF MODIFIED slot 0n
|
||||
DRV.TimeOut .BS 1
|
||||
DRV.FrameSize .BS 2
|
||||
DRV.nCnt .BS 2
|
||||
DRV.CheckSum .BS 2
|
||||
*--------------------------------------
|
||||
.EP
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
DRV.BLK.SIZE .EQ *-DRV.BLK
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/pm.vedrive.s.bk
|
||||
LOAD usr/src/sys/pm.vedrive.s
|
||||
ASM
|
@ -4,12 +4,54 @@ NEW
|
||||
GS.Init sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.GS .EQ *
|
||||
.PH $D400
|
||||
GS.Read php
|
||||
sei
|
||||
|
||||
ldx Slotn0
|
||||
*--------------------------------------
|
||||
GS.READWRITE.9 plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
GS.Write php
|
||||
sei
|
||||
|
||||
ldx Slotn0
|
||||
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
GS.Name >PSTR "LanCEgs"
|
||||
*--------------------------------------
|
||||
DRV.GS .PH DRV.NIC.START
|
||||
|
||||
jmp DRV.GS.Write
|
||||
|
||||
DRV.GS.Read php
|
||||
sei
|
||||
|
||||
|
||||
|
||||
|
||||
*--------------------------------------
|
||||
DRV.GS.9 plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.GS.Write php
|
||||
sei
|
||||
|
||||
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
.EP
|
||||
|
||||
.LIST ON
|
||||
DRV.GS.SIZE .EQ *-DRV.GS
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/pm.vedrive.s.gs
|
||||
|
@ -4,15 +4,21 @@ NEW
|
||||
VEDRIVE.MACInit ldx #5
|
||||
|
||||
.1 lda CONF.SRCMAC,x
|
||||
|
||||
sta DHCP.DISC.SRCMAC,x
|
||||
sta DHCP.REQ.SRCMAC,x
|
||||
|
||||
sta DHCP.DISC.CHADDR,x
|
||||
sta DHCP.REQ.CHADDR,x
|
||||
|
||||
sta ARP.REQ.SRCMAC,x
|
||||
sta ARP.REQ.SHA,x
|
||||
|
||||
sta ARP.REP.SRCMAC,x
|
||||
sta ARP.REP.SHA,x
|
||||
|
||||
sta ADT.REQ.SRCMAC,x
|
||||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
@ -21,13 +27,17 @@ VEDRIVE.MACInit ldx #5
|
||||
VEDRIVE.IPInit ldx #3
|
||||
|
||||
.1 lda CONF.ADDRESS,x
|
||||
|
||||
sta ARP.REQ.SPA,x
|
||||
sta ARP.REP.TPA,x
|
||||
sta ARP.REP.SPA,x
|
||||
sta ADT.REQ.IP.SRC,x
|
||||
|
||||
lda CONF.SERVER,x
|
||||
sta ARP.REQ.TPA,x
|
||||
sta ADT.REQ.IP.DST,x
|
||||
|
||||
sta ARP.REP.TPA,x
|
||||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
@ -143,9 +153,22 @@ VEDRIVE.UDPChecksum
|
||||
|
||||
dey
|
||||
lda (ZPBufPtr),y
|
||||
adc /S.IP.PROTOCOL.UDP (all zero)
|
||||
adc /S.IP.PROTOCOL.UDP (all zero)
|
||||
sta ZPCheckSum
|
||||
jsr VEDRIVE.AddSrcDstIPToChecksum
|
||||
|
||||
ldy #S.IP.SRC
|
||||
ldx #4 4 words for SRC & DST IP
|
||||
|
||||
.1 lda (ZPBufPtr),y
|
||||
adc ZPCheckSum
|
||||
sta ZPCheckSum
|
||||
iny
|
||||
lda (ZPBufPtr),y
|
||||
adc ZPCheckSum+1
|
||||
sta ZPCheckSum+1
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
ldy #S.UDP.LENGTH+1
|
||||
lda (ZPBufPtr),y
|
||||
@ -223,23 +246,6 @@ VEDRIVE.ComputeChecksum
|
||||
sta (ZPBufPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.AddSrcDstIPToChecksum
|
||||
ldy #S.IP.SRC
|
||||
ldx #4 4 words for SRC & DST IP
|
||||
|
||||
.1 lda (ZPBufPtr),y
|
||||
adc ZPCheckSum
|
||||
sta ZPCheckSum
|
||||
iny
|
||||
lda (ZPBufPtr),y
|
||||
adc ZPCheckSum+1
|
||||
sta ZPCheckSum+1
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CheckDHCPOffer
|
||||
>LDYAI FRAMEBUF
|
||||
>STYA ZPBufPtr
|
||||
@ -459,7 +465,6 @@ VEDRIVE.CheckARPFrame
|
||||
|
||||
ldy #S.ARP.OPERATION+1
|
||||
lda (ZPBufPtr),y
|
||||
|
||||
cmp #S.ARP.OPERATION.REP
|
||||
bne .5
|
||||
*--------------------------------------
|
||||
@ -479,6 +484,8 @@ VEDRIVE.CheckARPFrame
|
||||
|
||||
.2 lda (ZPBufPtr),y
|
||||
sta ADT.REQ.DSTMAC,x
|
||||
sta ARP.REP.DSTMAC,x
|
||||
sta ARP.REP.THA,x
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
|
@ -234,10 +234,154 @@ U1.WRITE php
|
||||
*--------------------------------------
|
||||
U1.Name >PSTR "Uthernet V1"
|
||||
*--------------------------------------
|
||||
DRV.U1 .EQ *
|
||||
.PH $D400
|
||||
DRV.U1 .PH DRV.NIC.START
|
||||
|
||||
jmp DRV.U1.SendARP
|
||||
jmp DRV.U1.SendUDP
|
||||
|
||||
DRV.U1.Rcvd php
|
||||
sei
|
||||
|
||||
ldx DRV.BLK.Slotn0
|
||||
|
||||
lda /PP.RxEvent
|
||||
sta PacketPagePTR+1,x
|
||||
lda #PP.RxEvent
|
||||
sta PacketPagePTR,x
|
||||
|
||||
lda PacketPageDATA+1,x
|
||||
ldy PacketPageDATA,x
|
||||
and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt
|
||||
beq DRV.U1.9
|
||||
|
||||
lda RTDATA+1,x discard RxStatus
|
||||
lda RTDATA,x
|
||||
|
||||
lda RTDATA+1,x get RxLength
|
||||
sta DRV.FrameSize+1
|
||||
eor #$ff
|
||||
sta DRV.nCnt+1
|
||||
|
||||
lda RTDATA,x
|
||||
sta DRV.FrameSize
|
||||
eor #$ff
|
||||
sta DRV.nCnt
|
||||
|
||||
>LDYAI DRV.InBuf
|
||||
>STYA DRV.A1L
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 inc DRV.nCnt
|
||||
bne .3
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .8
|
||||
|
||||
.3 lda RTDATA,x
|
||||
sta (DRV.A1L),y
|
||||
iny
|
||||
|
||||
inc DRV.nCnt
|
||||
bne .4
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .8
|
||||
|
||||
.4 lda RTDATA+1,x
|
||||
sta (DRV.A1L),y
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc DRV.A1L+1
|
||||
bra .2
|
||||
|
||||
.8 plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.U1.9 plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.U1.SendARP >LDYAI S.ARP
|
||||
>STYA DRV.FrameSize
|
||||
>LDYAI DRV.ARPBuf
|
||||
bra DRV.U1.Send
|
||||
*--------------------------------------
|
||||
DRV.U1.SendUDP >STYA DRV.FrameSize
|
||||
|
||||
jsr DRV.BLK.IPUDPCheksum
|
||||
|
||||
>LDYAI DRV.UDPBuf
|
||||
|
||||
DRV.U1.Send >STYA DRV.A1L
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
ldx DRV.BLK.Slotn0
|
||||
|
||||
lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL
|
||||
sta TxCMD+1,x
|
||||
lda #PP.TxCMD.LID+PP.TxCMD.TxStartFULL
|
||||
sta TxCMD,x
|
||||
|
||||
lda DRV.FrameSize+1
|
||||
sta TxLength+1,x
|
||||
eor #$ff
|
||||
sta DRV.nCnt+1
|
||||
|
||||
lda DRV.FrameSize
|
||||
sta TxLength,x
|
||||
eor #$ff
|
||||
sta DRV.nCnt
|
||||
|
||||
lda /PP.BusST
|
||||
sta PacketPagePTR+1,x
|
||||
lda #PP.BusST
|
||||
sta PacketPagePTR,x
|
||||
|
||||
lda PacketPageDATA+1,x
|
||||
ldy PacketPageDATA,x
|
||||
bit /PP.BusST.Rdy4TxNOW
|
||||
beq DRV.U1.9
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 inc DRV.nCnt
|
||||
bne .2
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .8
|
||||
|
||||
.2 lda (DRV.A1L),y
|
||||
sta RTDATA,x
|
||||
iny
|
||||
|
||||
inc DRV.nCnt
|
||||
bne .3
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .8
|
||||
|
||||
.3 lda (DRV.A1L),y
|
||||
sta RTDATA+1,x
|
||||
iny
|
||||
bne .1
|
||||
|
||||
inc DRV.A1H
|
||||
bra .1
|
||||
|
||||
.8 plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.EP
|
||||
|
||||
.LIST ON
|
||||
DRV.U1.SIZE .EQ *-DRV.U1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/pm.vedrive.s.u1
|
||||
|
@ -250,15 +250,15 @@ U2.Name >PSTR "Uthernet II"
|
||||
Offset .BS 2
|
||||
TotalSize .BS 2
|
||||
*--------------------------------------
|
||||
DRV.U2 .EQ *
|
||||
.PH DRV.NIC.START
|
||||
DRV.U2 .PH DRV.NIC.START
|
||||
|
||||
DRV.U2.START jmp DRV.U2.Write
|
||||
jmp DRV.U2.SendARP
|
||||
jmp DRV.U2.SendUDP
|
||||
|
||||
DRV.U2.Read php
|
||||
DRV.U2.Rcvd php
|
||||
sei
|
||||
|
||||
ldx DRV.START
|
||||
ldx DRV.BLK.Slotn0
|
||||
|
||||
>AR.SELECT S0.RX.RSR
|
||||
lda W5100.DR,x get the received size HI
|
||||
@ -289,18 +289,18 @@ DRV.U2.Read php
|
||||
* lda DRV.TotalSize
|
||||
sec
|
||||
sbc #2 MACRAW:strip 2 bytes Header from Size
|
||||
sta DRV.BufSize
|
||||
sta DRV.FrameSize
|
||||
eor #$ff
|
||||
sta DRV.nCnt
|
||||
|
||||
lda DRV.TotalSize+1
|
||||
sbc #0
|
||||
sta DRV.BufSize+1
|
||||
sta DRV.FrameSize+1
|
||||
eor #$ff
|
||||
sta DRV.nCnt+1
|
||||
|
||||
>LDYA DRV.InBuf
|
||||
>STYA .4+1
|
||||
>LDYAI DRV.InBuf
|
||||
>STYA DRV.A1L
|
||||
|
||||
ldy #0
|
||||
|
||||
@ -311,11 +311,12 @@ DRV.U2.Read php
|
||||
beq .8
|
||||
|
||||
.3 lda W5100.DR,x
|
||||
.4 sta $FFFF,y SELF MODIFIED
|
||||
|
||||
sta (DRV.A1L),y
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc .4+2
|
||||
inc DRV.A1H
|
||||
bra .2
|
||||
|
||||
.8 >AR.SELECT S0.RX.RD
|
||||
@ -343,30 +344,39 @@ DRV.U2.9 plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.U2.Write php
|
||||
sei
|
||||
DRV.U2.SendARP >LDYAI S.ARP
|
||||
>STYA DRV.FrameSize
|
||||
>LDYAI DRV.ARPBuf
|
||||
bra DRV.U2.Send
|
||||
*--------------------------------------
|
||||
DRV.U2.SendUDP >STYA DRV.FrameSize
|
||||
|
||||
>STYA DRV.BufSize
|
||||
jsr DRV.BLK.IPUDPCheksum
|
||||
|
||||
>LDYAI DRV.UDPBuf
|
||||
|
||||
DRV.U2.Send >STYA DRV.A1L
|
||||
|
||||
lda DRV.FrameSize+1
|
||||
eor #$ff
|
||||
sta DRV.nCnt+1
|
||||
|
||||
tya
|
||||
lda DRV.FrameSize
|
||||
eor #$ff
|
||||
sta DRV.nCnt
|
||||
|
||||
>LDYA DRV.OutBuf
|
||||
>STYA .3+1
|
||||
php
|
||||
sei
|
||||
|
||||
ldx DRV.START
|
||||
ldx DRV.BLK.Slotn0
|
||||
|
||||
>AR.SELECT S0.TX.FSR
|
||||
lda W5100.DR,x get send size HI
|
||||
nop
|
||||
nop
|
||||
ldy W5100.DR,x LO
|
||||
cpy DRV.BufSize
|
||||
sbc DRV.BufSize+1
|
||||
cpy DRV.FrameSize
|
||||
sbc DRV.FrameSize+1
|
||||
bcc DRV.U2.9
|
||||
|
||||
>AR.SELECT S0.TX.WR
|
||||
@ -390,21 +400,21 @@ DRV.U2.Write php
|
||||
inc DRV.nCnt+1
|
||||
beq .8
|
||||
|
||||
.3 lda $FFFF,y SELF MODIFIED
|
||||
.3 lda (DRV.A1L),y
|
||||
sta W5100.DR,x
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc .3+2
|
||||
inc DRV.A1H
|
||||
bra .2
|
||||
|
||||
.8 >AR.SELECT S0.TX.WR
|
||||
lda DRV.Offset
|
||||
clc
|
||||
adc DRV.BufSize
|
||||
adc DRV.FrameSize
|
||||
pha save LO
|
||||
lda DRV.Offset+1
|
||||
adc DRV.BufSize+1
|
||||
adc DRV.FrameSize+1
|
||||
sta W5100.DR,x write HI
|
||||
pla
|
||||
sta W5100.DR,x write LO
|
||||
@ -418,9 +428,7 @@ DRV.U2.Write php
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.Offset .BS 2
|
||||
DRV.BufSize .BS 2
|
||||
DRV.TotalSize .BS 2
|
||||
DRV.nCnt .BS 2
|
||||
*--------------------------------------
|
||||
.EP
|
||||
|
||||
|
@ -12,9 +12,9 @@ NEW
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/nic.i
|
||||
.INB inc/nic.91c96.i
|
||||
.INB inc/nic.8900a.i
|
||||
.INB inc/nic.w5100.i
|
||||
.INB inc/nic.91c96.i
|
||||
.INB inc/eth.i
|
||||
.INB inc/net.tcpip.i
|
||||
.INB inc/net.dhcp.i
|
||||
@ -33,16 +33,33 @@ timerC .EQ 17
|
||||
bRemoteMac .EQ 18
|
||||
Slotn0 .EQ 19
|
||||
*--------------------------------------
|
||||
ADT.CMD.VSD .EQ $C5 "E": Virtual Drive Command Envelope
|
||||
ADT.CMD.PING .EQ $D9 "Y": PING
|
||||
DRV.EntryPoint .EQ $BF41
|
||||
DRV.NIC.START .EQ $D500
|
||||
*--------------------------------------
|
||||
CONF.FBUF .EQ $4000
|
||||
CONF.LBUF .EQ $4400
|
||||
CONF.FILEPATH .EQ $4500
|
||||
FRAMEBUF .EQ $4600
|
||||
*--------------------------------------
|
||||
ADT.CMD.VSD .EQ $C5 "E": Virtual Drive Command Envelope
|
||||
ADT.CMD.PING .EQ $D9 "Y": PING
|
||||
DRV.EntryPoint .EQ $BF41
|
||||
*--------------------------------------
|
||||
DRV.BLK.START .EQ $D400
|
||||
DRV.NIC.START .EQ $D800
|
||||
*--------------------------------------
|
||||
DRV.NIC.SendARP .EQ DRV.NIC.START
|
||||
DRV.NIC.SendUDP .EQ DRV.NIC.START+3
|
||||
DRV.NIC.Rcvd .EQ DRV.NIC.START+6
|
||||
*--------------------------------------
|
||||
DRV.ARPBuf .EQ $DA00-S.UDP-5-S.ARP
|
||||
DRV.UDPBuf .EQ $DA00-S.UDP-5 Frame Buffer = S.UDP+5+512+1 bytes
|
||||
DRV.UDPBuf.Env .EQ DRV.UDPBuf+S.UDP
|
||||
DRV.UDPBuf.Cmd .EQ DRV.UDPBuf+S.UDP+1
|
||||
DRV.UDPBuf.BlkL .EQ DRV.UDPBuf+S.UDP+2
|
||||
DRV.UDPBuf.BlkH .EQ DRV.UDPBuf+S.UDP+3
|
||||
DRV.UDPBuf.Sum .EQ DRV.UDPBuf+S.UDP+4
|
||||
DRV.UDPBuf.Data .EQ DRV.UDPBuf+S.UDP+5
|
||||
*--------------------------------------
|
||||
DRV.InBuf .EQ $DA00 Frame Buffer = 1536 bytes
|
||||
*--------------------------------------
|
||||
VEDRIVE.Init >LDYAI VEDRIVE.MSG0
|
||||
jsr PrintFYA
|
||||
|
||||
@ -111,8 +128,7 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
|
||||
.7 >LDYAI VEDRIVE.SRVOK
|
||||
jsr PrintFYA
|
||||
|
||||
* jsr VEDRIVE.SetSlot
|
||||
sec
|
||||
jsr VEDRIVE.SetSlot
|
||||
bcc .8
|
||||
|
||||
>LDYAI VEDRIVE.NOSLOT
|
||||
@ -124,7 +140,7 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
|
||||
>LDYAI VEDRIVE.DEVOK
|
||||
jsr PrintFYA
|
||||
|
||||
* jsr VEDRIVE.Install
|
||||
jsr VEDRIVE.Install
|
||||
bcc .9
|
||||
|
||||
>LDYAI VEDRIVE.DRVIKO
|
||||
@ -133,6 +149,7 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
|
||||
|
||||
.9 >LDYAI VEDRIVE.DRVIOK
|
||||
jsr PrintFYA
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CheckDRV
|
||||
@ -177,11 +194,17 @@ VEDRIVE.Ping lda CONF.PORT
|
||||
|
||||
.4 jsr VEDRIVE.CheckADTRep
|
||||
bcc .8
|
||||
|
||||
|
||||
jsr VEDRIVE.CheckARPFrame
|
||||
bra .3
|
||||
|
||||
.8
|
||||
.8 ldy #S.UDP+$29
|
||||
lda (ZPBufPtr),y
|
||||
sta CONF.D1TOTALBLK
|
||||
iny
|
||||
lda (ZPBufPtr),y
|
||||
sta CONF.D1TOTALBLK+1
|
||||
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -198,7 +221,7 @@ VEDRIVE.SendUDP jsr VEDRIVE.IPChecksum
|
||||
VEDRIVE.SendARP ldx CONF.NIC
|
||||
jmp (.1,x)
|
||||
|
||||
.1 .DA U1.WRITE
|
||||
.1 .DA GS.WRITE
|
||||
.DA U1.WRITE
|
||||
.DA U2.WRITE
|
||||
*--------------------------------------
|
||||
@ -208,7 +231,7 @@ VEDRIVE.READ >LDYAI FRAMEBUF
|
||||
ldx CONF.NIC
|
||||
jmp (.1,x)
|
||||
|
||||
.1 .DA U1.READ
|
||||
.1 .DA GS.READ
|
||||
.DA U1.READ
|
||||
.DA U2.READ
|
||||
*--------------------------------------
|
||||
@ -294,22 +317,26 @@ VEDRIVE.Install ldx #PATCH.SIZE
|
||||
bit RRAMWRAMBNK2
|
||||
bit RRAMWRAMBNK2
|
||||
|
||||
ldy #DRV.SIZE-1
|
||||
>LDYAI DRV.BLK
|
||||
>STYA ZPPtr1
|
||||
|
||||
.2 lda DRV,y
|
||||
sta DRV.START,y
|
||||
dey
|
||||
bne .2
|
||||
lda #DRV.BLK.START
|
||||
sta ZPPtr2
|
||||
lda /DRV.BLK.START
|
||||
sta ZPPtr2+1
|
||||
|
||||
lda #DRV.BLK.SIZE
|
||||
eor #$ff
|
||||
sta ZPnCnt
|
||||
|
||||
lda /DRV.BLK.SIZE
|
||||
eor #$ff
|
||||
sta ZPnCnt+1
|
||||
|
||||
jsr VEDRIVE.Move
|
||||
|
||||
lda Slotn0
|
||||
sta DRV.START
|
||||
|
||||
ldy #DRV.IP.SIZE-1
|
||||
|
||||
.3 lda DRV.IP,y
|
||||
sta DRV.IP.START,y
|
||||
dey
|
||||
bne .3
|
||||
sta DRV.BLK.Slotn0
|
||||
|
||||
ldx CONF.NIC
|
||||
lda .10,x
|
||||
@ -317,7 +344,7 @@ VEDRIVE.Install ldx #PATCH.SIZE
|
||||
|
||||
lda .10+1,x
|
||||
sta ZPPtr1+1
|
||||
|
||||
|
||||
lda .20,x
|
||||
eor #$ff
|
||||
sta ZPnCnt
|
||||
@ -325,49 +352,68 @@ VEDRIVE.Install ldx #PATCH.SIZE
|
||||
lda .20+1,x
|
||||
eor #$ff
|
||||
sta ZPnCnt+1
|
||||
|
||||
|
||||
lda #DRV.NIC.START
|
||||
sta ZPPtr2
|
||||
lda /DRV.NIC.START
|
||||
sta ZPPtr2+1
|
||||
|
||||
ldy #0
|
||||
|
||||
.4 inc ZPnCnt
|
||||
bne .5
|
||||
|
||||
inc ZPnCnt+1
|
||||
beq .6
|
||||
|
||||
.5 lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
iny
|
||||
bne .4
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr2+1
|
||||
bra .4
|
||||
|
||||
.6 ldy #S.UDP
|
||||
jsr VEDRIVE.Move
|
||||
|
||||
.7 lda ADT.REQ-1,y
|
||||
sta DRV.OutBuf-1,y
|
||||
dey
|
||||
ldx #S.ARP
|
||||
|
||||
.7 lda ARP.REP-1,x
|
||||
sta DRV.ARPBuf-1,x
|
||||
dex
|
||||
bne .7
|
||||
|
||||
ldx #S.UDP
|
||||
|
||||
.8 lda ADT.REQ-1,x
|
||||
sta DRV.UDPBuf-1,x
|
||||
dex
|
||||
bne .8
|
||||
|
||||
lda #ADT.CMD.VSD
|
||||
sta DRV.UDPBuf.Env
|
||||
|
||||
ldx #3
|
||||
|
||||
.80 lda CONF.D1TOTALBLK,x
|
||||
sta DRV.D1TotalBlks,x
|
||||
dex
|
||||
bpl .80
|
||||
|
||||
bit RROMBNK1
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.10 .DA DRV.U2
|
||||
.DA DRV.U2
|
||||
.10 .DA DRV.GS
|
||||
.DA DRV.U1
|
||||
.DA DRV.U2
|
||||
*--------------------------------------
|
||||
.20 .DA DRV.U2.SIZE
|
||||
.DA DRV.U2.SIZE
|
||||
.20 .DA DRV.GS.SIZE
|
||||
.DA DRV.U1.SIZE
|
||||
.DA DRV.U2.SIZE
|
||||
*--------------------------------------
|
||||
.INB usr/src/shared/x.printf.s
|
||||
VEDRIVE.Move ldy #0
|
||||
|
||||
.1 inc ZPnCnt
|
||||
bne .2
|
||||
|
||||
inc ZPnCnt+1
|
||||
beq .8
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
iny
|
||||
bne .1
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr2+1
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
* ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes)
|
||||
*--------------------------------------
|
||||
@ -375,287 +421,20 @@ COPYRIGHT .AS "(C)APPLE "
|
||||
COPYRIGHT.LEN .EQ *-COPYRIGHT
|
||||
PATCH .PH DRV.EntryPoint
|
||||
bit RRAMWRAMBNK2
|
||||
jsr $D002
|
||||
jsr DRV.BLK.START
|
||||
bit RRAMWRAMBNK1
|
||||
rts
|
||||
.EP
|
||||
PATCH.SIZE .EQ *-PATCH
|
||||
*--------------------------------------
|
||||
* Drivers
|
||||
*--------------------------------------
|
||||
* OP = 2 : Write drv1
|
||||
* OP = 3 : Read drv1
|
||||
* OP = 4 : Write drv2
|
||||
* OP = 5 : Read drv2
|
||||
* CMD = $C5+OP+BLKLO+BLKHI+CHKSUM
|
||||
* DO NOT trash DRV.COMMAND...DRV.BLKNUM as ProDOS
|
||||
* reuses them after Block operation
|
||||
* A1,A2 are used by Disk II Driver,
|
||||
* so we use it safely as Tmp Ptr
|
||||
*--------------------------------------
|
||||
DRV.A1L .EQ $3C
|
||||
DRV.A1H .EQ $3D
|
||||
DRV.A2L .EQ $3E
|
||||
DRV.A2H .EQ $3F
|
||||
DRV.COMMAND .EQ $42
|
||||
DRV.UNITNUM .EQ $43
|
||||
DRV.BUFF .EQ $44
|
||||
DRV.BLKNUM .EQ $46
|
||||
*--------------------------------------
|
||||
DRV.Write .EQ DRV.NIC.START
|
||||
DRV.Read .EQ DRV.NIC.START+3
|
||||
*--------------------------------------
|
||||
DRV.OutBuf .EQ $D800-S.UDP-6 Frame Buffer = S.UDP+5+512+1 bytes
|
||||
DRV.OutBuf.Env .EQ DRV.OutBuf+S.UDP
|
||||
DRV.OutBuf.Cmd .EQ DRV.OutBuf+S.UDP+1
|
||||
DRV.OutBuf.BlkL .EQ DRV.OutBuf+S.UDP+2
|
||||
DRV.OutBuf.BlkH .EQ DRV.OutBuf+S.UDP+3
|
||||
DRV.OutBuf.Sum .EQ DRV.OutBuf+S.UDP+4
|
||||
DRV.OutBuf.Data .EQ DRV.OutBuf+S.UDP+5
|
||||
*--------------------------------------
|
||||
DRV.InBuf .EQ $DA00 Frame Buffer = 1536 bytes
|
||||
*--------------------------------------
|
||||
DRV .PH $D001 Main LC Bnk 2 $D001->$DFFF
|
||||
|
||||
DRV.START .BS 1 SELF MODIFIED slot 0n
|
||||
>DEBUG
|
||||
lda DRV.COMMAND S=0,R=1,W=2,F=3
|
||||
bne .1
|
||||
|
||||
ldx #$ff return Status
|
||||
ldy #$ff
|
||||
|
||||
.8 lda #0
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 cmp #3
|
||||
beq .8 Format ....
|
||||
|
||||
bcs DRV.DO.CMD.ERR more....IO error
|
||||
|
||||
ora #2 W=2,R=3
|
||||
ldy DRV.UNITNUM
|
||||
bpl .2
|
||||
|
||||
adc #2 CC from bcs
|
||||
|
||||
.2 sta DRV.OutBuf.Cmd store cmd
|
||||
eor #ADT.CMD.VSD
|
||||
eor DRV.BLKNUM
|
||||
eor DRV.BLKNUM+1
|
||||
sta DRV.OutBuf.Sum Compute & store CheckSum
|
||||
|
||||
lda DRV.BLKNUM
|
||||
sta DRV.OutBuf.BlkL
|
||||
lda DRV.BLKNUM+1
|
||||
sta DRV.OutBuf.BlkH
|
||||
*--------------------------------------
|
||||
lda DRV.COMMAND
|
||||
dec 1-1=0 if read
|
||||
bne DRV.DO.CMD.W go write
|
||||
*--------------------------------------
|
||||
* Read block
|
||||
*--------------------------------------
|
||||
DRV.DO.CMD.R ldy #S.UDP+5
|
||||
lda /S.UDP+5
|
||||
|
||||
jsr DRV.Write
|
||||
|
||||
|
||||
|
||||
DRV.DO.CMD.ERR
|
||||
lda #MLI.E.IO
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Write Block
|
||||
*--------------------------------------
|
||||
DRV.DO.CMD.W lda #$B1 lda (),y
|
||||
|
||||
lda #MLI.E.IO
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.RWBYTE bit RRAMWRAMBNK1
|
||||
sta (DRV.BUFF),y
|
||||
bit RRAMWRAMBNK2
|
||||
rts
|
||||
*--------------------------------------
|
||||
.EP
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
DRV.SIZE .EQ *-DRV
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
DRV.IP .PH $D400
|
||||
|
||||
DRV.IP.START ldy #S.IP.TOTAL.LENGTH+1
|
||||
lda ZPBufCnt
|
||||
sec
|
||||
sbc #S.ETH.EII
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
lda ZPBufCnt+1
|
||||
sbc /S.ETH.EII
|
||||
sta (ZPBufPtr),y
|
||||
lda #0
|
||||
ldy #S.IP.HDR.CHECKSUM
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
sta (ZPBufPtr),y
|
||||
|
||||
stz ZPCheckSum RESET IP CHECKSUM
|
||||
stz ZPCheckSum+1
|
||||
|
||||
clc
|
||||
|
||||
ldy #S.IP.V.IHL
|
||||
|
||||
ldx #10 10 words for IP Header
|
||||
|
||||
.1 lda (ZPBufPtr),y
|
||||
adc ZPCheckSum
|
||||
sta ZPCheckSum
|
||||
iny
|
||||
lda (ZPBufPtr),y
|
||||
adc ZPCheckSum+1
|
||||
sta ZPCheckSum+1
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
ldy #S.IP.HDR.CHECKSUM
|
||||
lda ZPCheckSum
|
||||
adc #0
|
||||
eor #$FF
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
lda ZPCheckSum+1
|
||||
adc #0
|
||||
eor #$FF
|
||||
sta (ZPBufPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
clc
|
||||
|
||||
ldy #S.UDP.LENGTH+1
|
||||
lda (ZPBufPtr),y
|
||||
adc #S.IP.PROTOCOL.UDP
|
||||
sta ZPCheckSum+1
|
||||
|
||||
dey
|
||||
lda (ZPBufPtr),y
|
||||
adc /S.IP.PROTOCOL.UDP (all zero)
|
||||
sta ZPCheckSum
|
||||
|
||||
ldy #S.IP.SRC
|
||||
ldx #4 4 words for SRC & DST IP
|
||||
|
||||
.2 lda (ZPBufPtr),y
|
||||
adc ZPCheckSum
|
||||
sta ZPCheckSum
|
||||
iny
|
||||
lda (ZPBufPtr),y
|
||||
adc ZPCheckSum+1
|
||||
sta ZPCheckSum+1
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
ldy #S.UDP.LENGTH+1
|
||||
lda (ZPBufPtr),y
|
||||
eor #$ff
|
||||
tax
|
||||
|
||||
dey
|
||||
lda (ZPBufPtr),y
|
||||
eor #$ff
|
||||
ldy #S.UDP.CHECKSUM
|
||||
|
||||
phy Save Offset
|
||||
pha Save !ByteCount.HI
|
||||
|
||||
lda #0 Reset Checksum
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
sta (ZPBufPtr),y
|
||||
|
||||
>LDYA ZPBufPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #S.IP
|
||||
|
||||
.3 inx
|
||||
bne .4
|
||||
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
|
||||
pha
|
||||
.4 lda (ZPPtr1),y
|
||||
adc ZPCheckSum
|
||||
sta ZPCheckSum
|
||||
|
||||
iny
|
||||
bne .5
|
||||
|
||||
inc ZPPtr1+1
|
||||
.5 inx
|
||||
bne .6
|
||||
|
||||
pla
|
||||
inc
|
||||
beq .7
|
||||
|
||||
pha
|
||||
|
||||
.6 lda (ZPPtr1),y
|
||||
|
||||
adc ZPCheckSum+1
|
||||
sta ZPCheckSum+1
|
||||
iny
|
||||
bne .3
|
||||
|
||||
inc ZPPtr1+1
|
||||
bra .3
|
||||
|
||||
.7 adc ZPCheckSum+1 A=0 from beq .7
|
||||
sta ZPCheckSum+1
|
||||
|
||||
.8 ply
|
||||
lda ZPCheckSum
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
lda ZPCheckSum+1
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta (ZPBufPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
.EP
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
DRV.IP.SIZE .EQ *-DRV.IP
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* CONTROL SECTION :
|
||||
*--------------------------------------
|
||||
.DO DRV.SIZE>255
|
||||
ERROR:DRV.SIZE too big
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
|
||||
|
||||
.INB usr/src/shared/x.printf.s
|
||||
*--------------------------------------
|
||||
.INB usr/src/sys/pm.vedrive.s.cf
|
||||
.INB usr/src/sys/pm.vedrive.s.bk
|
||||
.INB usr/src/sys/pm.vedrive.s.ip
|
||||
.INB usr/src/sys/pm.vedrive.s.gs
|
||||
.INB usr/src/sys/pm.vedrive.s.u1
|
||||
.INB usr/src/sys/pm.vedrive.s.u2
|
||||
.INB usr/src/sys/pm.vedrive.s.gs
|
||||
*--------------------------------------
|
||||
VEDRIVE.MSG0 .AZ "VEDRIVE (ADTPro Virtual Ethernet HD) Driver\n"
|
||||
VEDRIVE.DRVKO .AZ "VEDRIVE (Or other custom Driver) Already Installed.\n"
|
||||
@ -703,6 +482,8 @@ CONF.MASK .HS 00000000
|
||||
CONF.GATEWAY .HS 00000000
|
||||
CONF.SERVER .HS 00000000
|
||||
CONF.PORT .DA /1977,#1977
|
||||
CONF.D1TOTALBLK .DA $FFFF
|
||||
CONF.D2TOTALBLK .DA $FFFF
|
||||
*--------------------------------------
|
||||
MLIGETPREFIX.P .DA #1
|
||||
.DA CONF.FILEPATH
|
||||
@ -829,7 +610,7 @@ DHCP.REQ.OPT.SVRIP .BS 4
|
||||
DHCP.REQ.END .EQ *
|
||||
DHCP.REQ.LEN .EQ *-DHCP.REQ
|
||||
*--------------------------------------
|
||||
ADT.REQ
|
||||
ADT.REQ
|
||||
ADT.REQ.DSTMAC .BS 6 DST MAC
|
||||
ADT.REQ.SRCMAC .BS 6
|
||||
.DA /S.ETH.EII.TYPE.IP
|
||||
|
@ -370,8 +370,8 @@ PATCH.LEN .EQ *-PATCH
|
||||
*--------------------------------------
|
||||
*DRV.PCL .EQ $3A
|
||||
*DRV.PCH .EQ $3B
|
||||
*DRV.A1L .EQ $3C
|
||||
*DRV.A1H .EQ $3D
|
||||
DRV.A1L .EQ $3C
|
||||
DRV.A1H .EQ $3D
|
||||
*DRV.A2L .EQ $3E
|
||||
*DRV.A2H .EQ $3F
|
||||
*--------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user