mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-25 20:33:13 +00:00
860 lines
18 KiB
Plaintext
860 lines
18 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.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
|
||
*--------------------------------------
|
||
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
|
||
*--------------------------------------
|
||
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
|
||
*--------------------------------------
|
||
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
|
||
sec
|
||
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
|
||
* 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 U1.WRITE
|
||
.DA U1.WRITE
|
||
.DA U2.WRITE
|
||
*--------------------------------------
|
||
VEDRIVE.READ >LDYAI FRAMEBUF
|
||
>STYA ZPBufPtr
|
||
|
||
ldx CONF.NIC
|
||
jmp (.1,x)
|
||
|
||
.1 .DA U1.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
|
||
|
||
ldy #DRV.SIZE-1
|
||
|
||
.2 lda DRV,y
|
||
sta DRV.START,y
|
||
dey
|
||
bne .2
|
||
|
||
lda Slotn0
|
||
sta DRV.START
|
||
|
||
ldy #DRV.IP.SIZE-1
|
||
|
||
.3 lda DRV.IP,y
|
||
sta DRV.IP.START,y
|
||
dey
|
||
bne .3
|
||
|
||
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
|
||
|
||
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
|
||
|
||
.7 lda ADT.REQ-1,y
|
||
sta DRV.OutBuf-1,y
|
||
dey
|
||
bne .7
|
||
|
||
bit RROMBNK1
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
.10 .DA DRV.U2
|
||
.DA DRV.U2
|
||
.DA DRV.U2
|
||
*--------------------------------------
|
||
.20 .DA DRV.U2.SIZE
|
||
.DA DRV.U2.SIZE
|
||
.DA DRV.U2.SIZE
|
||
*--------------------------------------
|
||
.INB usr/src/shared/x.printf.s
|
||
*--------------------------------------
|
||
* 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 $D002
|
||
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/sys/pm.vedrive.s.cf
|
||
.INB usr/src/sys/pm.vedrive.s.ip
|
||
.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"
|
||
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
|
||
*--------------------------------------
|
||
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
|