mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-31 23:09:33 +00:00
641 lines
14 KiB
Plaintext
641 lines
14 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
.OP 65C02
|
||
.OR $2000
|
||
* .TF sys/pm/pm.vedrive
|
||
.TF sys/pm.vedrive
|
||
*--------------------------------------
|
||
.INB inc/macros.i
|
||
.INB inc/io.i
|
||
.INB inc/monitor.i
|
||
.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/eth.i
|
||
.INB inc/net.tcpip.i
|
||
.INB inc/net.dhcp.i
|
||
*--------------------------------------
|
||
ZPPtr1 .EQ $0
|
||
ZPPtr2 .EQ $2
|
||
len .EQ 4
|
||
idx .EQ 5
|
||
int .EQ 6
|
||
ZPBufPtr .EQ 8
|
||
ZPBufCnt .EQ 10
|
||
ZPnCnt .EQ 12
|
||
ZPCheckSum .EQ 14
|
||
timerS .EQ 16
|
||
timerC .EQ 17
|
||
bRemoteMac .EQ 18
|
||
Slotn0 .EQ 19
|
||
*--------------------------------------
|
||
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
|
||
|
||
jsr VEDRIVE.CheckDRV
|
||
bcc .1
|
||
|
||
>LDYAI VEDRIVE.DRVKO
|
||
jsr PrintFYA
|
||
rts
|
||
|
||
.1 jsr VEDRIVE.ReadConf
|
||
bcc .2
|
||
|
||
>LDYAI VEDRIVE.CONFINV
|
||
jsr PrintFYA
|
||
rts
|
||
|
||
.2 jsr VEDRIVE.CheckHW
|
||
bcc .3
|
||
|
||
>LDYAI VEDRIVE.NICKO
|
||
jsr PrintFYA
|
||
rts
|
||
|
||
.3 jsr VEDRIVE.MACInit
|
||
lda CONF.ADDRESS
|
||
bne .4
|
||
|
||
>LDYAI VEDRIVE.DHCP
|
||
jsr PrintFYA
|
||
|
||
jsr VEDRIVE.DHCPReq
|
||
bcc .4
|
||
|
||
>LDYAI VEDRIVE.DHCPKO
|
||
jsr PrintFYA
|
||
rts
|
||
|
||
.4 jsr VEDRIVE.IPInit
|
||
|
||
jsr VEDRIVE.ARPReq
|
||
bcc .5
|
||
|
||
>LDYAI VEDRIVE.IPKO
|
||
jsr PrintFYA
|
||
|
||
rts
|
||
|
||
.5 ldx #11
|
||
|
||
.6 lda CONF.ADDRESS,x
|
||
pha
|
||
dex
|
||
bpl .6
|
||
|
||
>LDYAI VEDRIVE.IPOK
|
||
jsr PrintFYA
|
||
|
||
jsr VEDRIVE.Ping
|
||
bcc .7
|
||
|
||
>LDYAI VEDRIVE.SRVKO
|
||
jsr PrintFYA
|
||
rts
|
||
|
||
.7 >LDYAI VEDRIVE.SRVOK
|
||
jsr PrintFYA
|
||
|
||
jsr VEDRIVE.SetSlot
|
||
bcc .8
|
||
|
||
>LDYAI VEDRIVE.NOSLOT
|
||
jsr PrintFYA
|
||
rts
|
||
|
||
.8 pha Push slot
|
||
pha 2 times
|
||
>LDYAI VEDRIVE.DEVOK
|
||
jsr PrintFYA
|
||
|
||
jsr VEDRIVE.Install
|
||
bcc .9
|
||
|
||
>LDYAI VEDRIVE.DRVIKO
|
||
jsr PrintFYA
|
||
rts
|
||
|
||
.9 >LDYAI VEDRIVE.DRVIOK
|
||
jsr PrintFYA
|
||
|
||
rts
|
||
*--------------------------------------
|
||
VEDRIVE.CheckDRV
|
||
ldx #COPYRIGHT.LEN
|
||
|
||
sec
|
||
|
||
.1 lda DRV.EntryPoint-1,x
|
||
eor COPYRIGHT-1,x
|
||
bne .9
|
||
|
||
dex
|
||
bne .1
|
||
|
||
clc
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
VEDRIVE.Ping lda CONF.PORT
|
||
sta ADT.REQ.UDP.DST
|
||
|
||
lda CONF.PORT+1
|
||
sta ADT.REQ.UDP.DST+1
|
||
|
||
>LDYAI ADT.REQ
|
||
>STYA ZPBufPtr
|
||
|
||
>LDYAI ADT.REQ.LEN
|
||
>STYA ZPBufCnt
|
||
jsr VEDRIVE.SendUDP
|
||
bcs .9
|
||
|
||
jsr VEDRIVE.InitTimer
|
||
|
||
.3 jsr VEDRIVE.READ
|
||
bcc .4
|
||
|
||
jsr VEDRIVE.Wait
|
||
bcc .3
|
||
|
||
rts
|
||
|
||
.4 jsr VEDRIVE.CheckADTRep
|
||
bcc .8
|
||
|
||
jsr VEDRIVE.CheckARPFrame
|
||
bra .3
|
||
|
||
.8 ldy #S.UDP+$29
|
||
lda (ZPBufPtr),y
|
||
sta CONF.D1TOTALBLK
|
||
iny
|
||
lda (ZPBufPtr),y
|
||
sta CONF.D1TOTALBLK+1
|
||
|
||
* clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
VEDRIVE.CheckHW ldx CONF.NIC
|
||
jmp (.1,x)
|
||
|
||
.1 .DA GS.Init
|
||
.DA U1.Init
|
||
.DA U2.Init
|
||
*--------------------------------------
|
||
VEDRIVE.SendUDP jsr VEDRIVE.IPChecksum
|
||
jsr VEDRIVE.UDPChecksum
|
||
|
||
VEDRIVE.SendARP ldx CONF.NIC
|
||
jmp (.1,x)
|
||
|
||
.1 .DA GS.WRITE
|
||
.DA U1.WRITE
|
||
.DA U2.WRITE
|
||
*--------------------------------------
|
||
VEDRIVE.READ >LDYAI FRAMEBUF
|
||
>STYA ZPBufPtr
|
||
|
||
ldx CONF.NIC
|
||
jmp (.1,x)
|
||
|
||
.1 .DA GS.READ
|
||
.DA U1.READ
|
||
.DA U2.READ
|
||
*--------------------------------------
|
||
VEDRIVE.InitTimer
|
||
lda VBL
|
||
sta timerS
|
||
stz timerC
|
||
rts
|
||
*--------------------------------------
|
||
VEDRIVE.Wait lda VBL
|
||
tax
|
||
eor timerS
|
||
bpl .8
|
||
|
||
stx timerS
|
||
|
||
dec timerC
|
||
bne .8
|
||
|
||
sec
|
||
rts
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
* Find 2 free slots in DEVPTRS (D1 & D2)
|
||
*--------------------------------------
|
||
VEDRIVE.SetSlot ldx #2 Starts at Slot1
|
||
|
||
.1 lda DEVPTRS,x Drive1
|
||
cmp DEVPTRS pointing to S0D1 NODEV ?
|
||
bne .2
|
||
|
||
lda DEVPTRS+1,x
|
||
cmp DEVPTRS+1
|
||
bne .2
|
||
|
||
lda DEVPTRS+16,x Drive2
|
||
cmp DEVPTRS
|
||
bne .2
|
||
|
||
lda DEVPTRS+17,x
|
||
cmp DEVPTRS+1
|
||
bne .2
|
||
|
||
lda #DRV.EntryPoint
|
||
sta DEVPTRS,x
|
||
sta DEVPTRS+16,x
|
||
lda /DRV.EntryPoint
|
||
sta DEVPTRS+1,x
|
||
sta DEVPTRS+17,x
|
||
txa
|
||
asl
|
||
asl
|
||
asl
|
||
ora #$0D
|
||
ldy DEVCNT
|
||
iny
|
||
sta DEVLST,y add Drv1
|
||
ora #$80
|
||
iny
|
||
sta DEVLST,y add Drv2
|
||
sty DEVCNT
|
||
txa
|
||
lsr exit with A=SLOT
|
||
clc
|
||
rts
|
||
|
||
.2 inx
|
||
inx
|
||
cpx #16
|
||
bne .1
|
||
|
||
rts sec from CPX
|
||
*--------------------------------------
|
||
VEDRIVE.Install ldx #PATCH.SIZE
|
||
|
||
.1 lda PATCH-1,x
|
||
sta DRV.EntryPoint-1,x
|
||
dex
|
||
bne .1
|
||
|
||
bit RRAMWRAMBNK2
|
||
bit RRAMWRAMBNK2
|
||
|
||
>LDYAI DRV.BLK
|
||
>STYA ZPPtr1
|
||
|
||
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.BLK.Slotn0
|
||
|
||
ldx CONF.NIC
|
||
lda .10,x
|
||
sta ZPPtr1
|
||
|
||
lda .10+1,x
|
||
sta ZPPtr1+1
|
||
|
||
lda .20,x
|
||
eor #$ff
|
||
sta ZPnCnt
|
||
|
||
lda .20+1,x
|
||
eor #$ff
|
||
sta ZPnCnt+1
|
||
|
||
lda #DRV.NIC.START
|
||
sta ZPPtr2
|
||
lda /DRV.NIC.START
|
||
sta ZPPtr2+1
|
||
|
||
jsr VEDRIVE.Move
|
||
|
||
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.GS
|
||
.DA DRV.U1
|
||
.DA DRV.U2
|
||
*--------------------------------------
|
||
.20 .DA DRV.GS.SIZE
|
||
.DA DRV.U1.SIZE
|
||
.DA DRV.U2.SIZE
|
||
*--------------------------------------
|
||
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)
|
||
*--------------------------------------
|
||
COPYRIGHT .AS "(C)APPLE "
|
||
COPYRIGHT.LEN .EQ *-COPYRIGHT
|
||
PATCH .PH DRV.EntryPoint
|
||
bit RRAMWRAMBNK2
|
||
jsr DRV.BLK.START
|
||
bit RRAMWRAMBNK1
|
||
rts
|
||
.EP
|
||
PATCH.SIZE .EQ *-PATCH
|
||
*--------------------------------------
|
||
.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
|
||
*--------------------------------------
|
||
VEDRIVE.MSG0 .AZ "VEDRIVE (ADTPro Virtual Ethernet HD) Driver\n"
|
||
VEDRIVE.DRVKO .AZ "VEDRIVE (Or other custom Driver) Already Installed.\n"
|
||
VEDRIVE.CONF .AZ "Checking %S...\n"
|
||
VEDRIVE.CONFKO .AZ "Error reading VEDRIVE.CONF file.\n"
|
||
VEDRIVE.CONFSYN .AZ "Syntax error in VEDRIVE.CONF file.\n"
|
||
VEDRIVE.CONFINV .AZ "Invalid VEDRIVE.CONF file.\n"
|
||
VEDRIVE.NICKO .AZ "Hardware not detected.\n"
|
||
VEDRIVE.NICOK .AZ "%S Rev. %d.%d Found At Slot %d.\n"
|
||
VEDRIVE.DHCP .AZ "Querying DHCP...\n"
|
||
VEDRIVE.DHCPKO .AZ "No response from DHCP.\n"
|
||
VEDRIVE.IPKO .AZ "Unable to setup IP configuration.\n"
|
||
VEDRIVE.IPOK .AZ "IP config : %d.%d.%d.%d/%d.%d.%d.%d GW=%d.%d.%d.%d\n"
|
||
VEDRIVE.SRV .AZ "Contacting ADTPro Server..."
|
||
VEDRIVE.SRVKO .AZ "No Response From ADTPro Server.\n"
|
||
VEDRIVE.SRVOK .AZ "ADTPro Server Is Online.\n"
|
||
VEDRIVE.NOSLOT .AZ "No ProDOS device slot available.\n"
|
||
VEDRIVE.DEVOK .AZ "VEDRIVE Installed 2 devices at S%d,D1 & S%d,D2.\n"
|
||
VEDRIVE.DRVIKO .AZ "Unable to install VEDRIVE.\n"
|
||
VEDRIVE.DRVIOK .AZ "VEDRIVE Successfully Installed.\n"
|
||
*--------------------------------------
|
||
CONF.FILENAME .AS "vedrive.conf"
|
||
CONF.FILENAME.L .EQ *-CONF.FILENAME
|
||
*--------------------------------------
|
||
CONF.KW >PSTR "nic"
|
||
>PSTR "slot"
|
||
>PSTR "address"
|
||
>PSTR "netmask"
|
||
>PSTR "gateway"
|
||
>PSTR "server"
|
||
>PSTR "port"
|
||
.HS 00
|
||
*--------------------------------------
|
||
CONF.KW.NIC >PSTR "lancegs"
|
||
>PSTR "uthernet"
|
||
>PSTR "uthernet2"
|
||
.HS 00
|
||
*--------------------------------------
|
||
CONF.NIC .HS FF
|
||
CONF.SLOT .HS 00
|
||
CONF.IPCFG .EQ *
|
||
CONF.SRCMAC .HS 000E3A123456
|
||
CONF.ADDRESS .HS 00000000
|
||
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
|
||
*--------------------------------------
|
||
MLIOPEN.P .DA #3
|
||
.DA CONF.FILEPATH
|
||
.DA CONF.FBUF
|
||
.BS 1 FILE#
|
||
*--------------------------------------
|
||
MLINEWLINE.P .DA #3
|
||
.BS 1
|
||
.DA #$7F
|
||
.DA #$0D
|
||
*--------------------------------------
|
||
MLIREAD.P .DA #4
|
||
.BS 1
|
||
.DA CONF.LBUF
|
||
.DA 255
|
||
.BS 2
|
||
*--------------------------------------
|
||
MLICLOSE.P .DA #1
|
||
.BS 1
|
||
*--------------------------------------
|
||
ARP.REQ .HS FFFFFFFFFFFF S.ETH.DSTMAC
|
||
ARP.REQ.SRCMAC .BS 6
|
||
ARP.REQ.ETYPE .DA /S.ETH.EII.TYPE.ARP
|
||
.DA #S.ETH.EII.TYPE.ARP
|
||
.HS 0001.0800.06.04
|
||
ARP.REQ.OP .DA /S.ARP.OPERATION.REQ
|
||
.DA #S.ARP.OPERATION.REQ
|
||
ARP.REQ.SHA .BS 6
|
||
ARP.REQ.SPA .BS 4
|
||
ARP.REQ.THA .BS 6
|
||
ARP.REQ.TPA .BS 4
|
||
*--------------------------------------
|
||
ARP.REP .EQ *
|
||
ARP.REP.DSTMAC .BS 6
|
||
ARP.REP.SRCMAC .BS 6
|
||
ARP.REP.ETYPE .DA /S.ETH.EII.TYPE.ARP
|
||
.DA #S.ETH.EII.TYPE.ARP
|
||
.HS 0001.0800.06.04
|
||
ARP.REP.OP .DA /S.ARP.OPERATION.REP
|
||
.DA #S.ARP.OPERATION.REP
|
||
ARP.REP.SHA .BS 6
|
||
ARP.REP.SPA .BS 4
|
||
ARP.REP.THA .BS 6
|
||
ARP.REP.TPA .BS 4
|
||
*--------------------------------------
|
||
DHCP.DISC .HS FFFFFFFFFFFF DST MAC
|
||
DHCP.DISC.SRCMAC .BS 6
|
||
.DA /S.ETH.EII.TYPE.IP
|
||
.DA #S.ETH.EII.TYPE.IP
|
||
DHCP.DISC.IP .HS 4500
|
||
.DA /DHCP.DISC.END-DHCP.DISC.IP,#DHCP.DISC.END-DHCP.DISC.IP
|
||
.HS 0000
|
||
.HS 0000
|
||
.DA #64 TTL
|
||
.DA #S.IP.PROTOCOL.UDP
|
||
.BS 2 IP CHECKSUM
|
||
.HS 00000000
|
||
.HS FFFFFFFF
|
||
*--------------------------------------
|
||
DHCP.DISC.UDP .DA #0,#UDP.PORT.DHCPC
|
||
.DA #0,#UDP.PORT.DHCPS
|
||
.DA /DHCP.DISC.END-DHCP.DISC.UDP,#DHCP.DISC.END-DHCP.DISC.UDP
|
||
.BS 2 UDP CHECKSUM
|
||
*--------------------------------------
|
||
.HS 01010600 OP,HTYPE,HLEN,HOPS
|
||
DHCP.DISC.XID .HS 54328574
|
||
.HS 0000 SECS
|
||
.DA S.DHCP.FLAGS.BRDCST
|
||
.HS 00000000 CIADDR
|
||
DHCP.DISC.YIADDR .HS 00000000
|
||
.HS 00000000 SIADDR
|
||
DHCP.DISC.GIADDR .HS 00000000
|
||
DHCP.DISC.CHADDR .HS 00000000.00000000.00000000.00000000
|
||
.BS 64 SNAME
|
||
.BS 128 FILE
|
||
.HS 63825363 COOKIE
|
||
.HS 3501 OPT
|
||
.DA #S.DHCP.OPTIONS.DHCPDiscover
|
||
.HS 37020103FF 37040103060FFF
|
||
DHCP.DISC.END .EQ *
|
||
DHCP.DISC.LEN .EQ *-DHCP.DISC
|
||
*--------------------------------------
|
||
DHCP.REQ .HS FFFFFFFFFFFF DST MAC
|
||
DHCP.REQ.SRCMAC .BS 6
|
||
.DA /S.ETH.EII.TYPE.IP
|
||
.DA #S.ETH.EII.TYPE.IP
|
||
DHCP.REQ.IP .HS 4500
|
||
.DA /DHCP.REQ.END-DHCP.REQ.IP,#DHCP.REQ.END-DHCP.REQ.IP
|
||
.HS 0000
|
||
.HS 0000
|
||
.DA #64 TTL
|
||
.DA #S.IP.PROTOCOL.UDP
|
||
.BS 2 IP CHECKSUM
|
||
.HS 00000000
|
||
.HS FFFFFFFF
|
||
*--------------------------------------
|
||
DHCP.REQ.UDP .DA #0,#UDP.PORT.DHCPC
|
||
.DA #0,#UDP.PORT.DHCPS
|
||
.DA /DHCP.REQ.END-DHCP.REQ.UDP,#DHCP.REQ.END-DHCP.REQ.UDP
|
||
.BS 2 UDP CHECKSUM
|
||
*--------------------------------------
|
||
.HS 01010600 OP,HTYPE,HLEN,HOPS
|
||
DHCP.REQ.XID .HS 54328574
|
||
.HS 0000 SECS
|
||
.DA S.DHCP.FLAGS.BRDCST
|
||
.HS 00000000 CIADDR
|
||
DHCP.REQ.YIADDR .HS 00000000
|
||
.HS 00000000 SIADDR
|
||
.HS 00000000 GIADDR
|
||
DHCP.REQ.CHADDR .HS 00000000.00000000.00000000.00000000
|
||
.BS 64 SNAME
|
||
.BS 128 FILE
|
||
.HS 63825363 COOKIE
|
||
.HS 3501 OPT
|
||
.DA #S.DHCP.OPTIONS.DHCPRequest
|
||
.HS 3204
|
||
DHCP.REQ.OPT.REQIP .BS 4
|
||
.HS 3604
|
||
DHCP.REQ.OPT.SVRIP .BS 4
|
||
.HS FF
|
||
DHCP.REQ.END .EQ *
|
||
DHCP.REQ.LEN .EQ *-DHCP.REQ
|
||
*--------------------------------------
|
||
ADT.REQ
|
||
ADT.REQ.DSTMAC .BS 6 DST MAC
|
||
ADT.REQ.SRCMAC .BS 6
|
||
.DA /S.ETH.EII.TYPE.IP
|
||
.DA #S.ETH.EII.TYPE.IP
|
||
ADT.REQ.IP .HS 4500
|
||
.DA /ADT.REQ.END-ADT.REQ.IP,#ADT.REQ.END-ADT.REQ.IP
|
||
.HS 0000
|
||
.HS 0000
|
||
.DA #64 TTL
|
||
.DA #S.IP.PROTOCOL.UDP
|
||
.BS 2 IP CHECKSUM
|
||
ADT.REQ.IP.SRC .BS 4 SRC IP
|
||
ADT.REQ.IP.DST .BS 4 DST IP
|
||
*--------------------------------------
|
||
ADT.REQ.UDP .DA #$C0,#$00 SRC PORT
|
||
ADT.REQ.UDP.DST .BS 2 DST PORT
|
||
.DA /ADT.REQ.END-ADT.REQ.UDP,#ADT.REQ.END-ADT.REQ.UDP
|
||
.BS 2 UDP CHECKSUM
|
||
*--------------------------------------
|
||
.DA #ADT.CMD.VSD
|
||
.HS 030000C6 READ D1, BLK 0
|
||
ADT.REQ.END .EQ *
|
||
ADT.REQ.LEN .EQ *-ADT.REQ
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/sys/pm.vedrive.s
|
||
ASM
|