Первая попытка помучить DELQA не через драйвер.
Заодно RSXLIB пригодился :)
Код:.TITLE NQT
.IDENT /V01.00/
;DEVICE REGISTER AND VECTOR DEFINITIONS
QNREG == 174440 ;DEVICE REGISTER ADDRESS
QNVEC == 120 ;DEVICE VECTOR ADDRESS
;DEVICE REGISTER OFFSET DEFINITIONS
QN$SAR == 0 ;STATION ADDRESS PROM
QN$RAL == 4 ;RECEIVER BDL ADDRESS LO
QN$RAH == 6 ;RECEIVER BDL ADDRESS HI
QN$TAL == 10 ;TRANSMIT BDL ADDRESS LO
QN$TAH == 12 ;TRANSMIT BDL ADDRESS HI
QN$VEC == 14 ;VECTOR ADDRESS
QN$CSR == 16 ;CONTROL/STATUS REGISTER
;CONTROL/STATUS REGISTER BIT DEFINITIONS
CS.RI == 100000 ;RECEIVE INTERRUPT REQUEST
CS.CA == 20000 ;CARRIER
CS.OK == 10000 ;FUSE OK
CS.SE == 2000 ;SANITY TIMER ENABLE
CS.EL == 1000 ;EXTERNAL LOOPBACK ENABLE
CS.ILD == 400 ;INTERNAL LOOPBACK DISABLE
CS.XI == 200 ;TRANSMIT INTERRUPT REQUEST
CS.IE == 100 ;INTERRUPT ENABLE
CS.RLI == 40 ;RECEIVE LIST INVALID
CS.XLI == 20 ;TRANSMIT LIST INVALID
CS.BD == 10 ;BOOT/DIAGNOSTIC ROM DUMP
CS.NXM == 4 ;NON-EXISTENT MEMORY INTERRUPT
CS.SR == 2 ;SOFTWARE RESET
CS.REN == 1 ;RECEIVER ENABLE
;VECTOR REGISTER BIT DEFINITIONS
VC.MS == 100000 ;MODE SELECT (0 = QNA, 1 = LQA)
VC.OS == 40000 ;REMOTE BOOT OPTION SWITCH
VC.RS == 20000 ;REQUEST SELF-TEST
VC.SSM == 16000 ;SELF-TEST STATUS MASK
VC.IVM == 1774 ;INTERRUPT VECTOR MASK
VC.ID == 1 ;IDENTIFY TEST BIT (Q = QNA, 1 = LQA)
;BUFFER DESCRIPTOR LIST OFFSETS
BD.FLG == 0 ;FLAG
BD.ADH == 2 ;ADDRESS DESCRIPTOR BITS (HI-ORDER)
BD.ADL == 4 ;ADDRESS DESCRIPTOR BITS (LO-ORDER)
BD.LEN == 6 ;BUFFER LENGTH
BD.SW1 == 10 ;STATUS WORD 1
BD.SW2 == 12 ;STATUS WORD 2
BD.ESZ == 14 ;SIZE OF BUFFER DESCRIPTOR
;FLAG WORD DEFINITIONS
FL.INI == 100000 ;INITIALIZATION VALUE
FL.USE == 40000 ;DEQNA IS USING THE BUFFER
;ADDRESS DESCRIPTOR BIT DEFINITIONS
AH.VLD == 100000 ;DESCRIPTOR IS VALIED
AH.CHN == 40000 ;CHAIN DESCRIPTOR
AH.EOM == 20000 ;END OF MESSAGE (XMIT ONLY)
AH.SET == 10000 ;SETUP (XMIT ONLY)
AH.TER == 200 ;LO BYTE ONLY TERMINATION (XMIT ONLY)
AH.STA == 100 ;HI BYTE ONLY START (XMIT ONLY)
AH.HOM == 77 ;HI-ORDER ADDRESS MASK
;STATUS WORD 1 BIT DEFINITIONS
S1.LN == 100000 ;LAST/NOT
S1.ERU == 40000 ;ERROR/USED
; FOR TRANSMIT
S1.LOC == 10000 ;LOSS OF CARRIER
S1.NOC == 4000 ;NO CARRIER
S1.STE == 2000 ;SANITY TIMER WAS ENABLED AT POWER-UP
S1.ABO == 1000 ;TRANSMISSION WAS ABORTED
S1.FAI == 400 ;HEARTBEAT COLLISION CHECK FAILURE
S1.CCM == 360 ;COLLISION COUNT MASK
; FOR RECEIVE
S1.ESE == 20000 ;SETUP, ELOOP, IELOOP PACKET
S1.DIS == 10000 ;DISCARD (OR OVF, CRCERR, SHORT)
S1.RNT == 4000 ;PACKET IS RUNT
S1.RBL == 3400 ;RECEIVE BUFFER LENGTH
S1.FE == 4 ;FRAMING ERROR
S1.CRC == 2 ;CRC ERROR
S1.OV == 1 ;OVERFLOW
.MCALL .DEVICE,.EXIT,.PRINT ;SYSTEM MACRO CALLS
.PSECT DATA,D,RW
DESC:: .WORD 0 ;FLAG WORD
.WORD AH.VLD!AH.EOM ;DESCRIPTOR BITS
.WORD BUFF ;ADDRESS OF TRANSMIT BUFFER
.WORD -WCNT ;2S COMP WORD COUNT
.WORD 0,0 ;STATUS WORDS
.WORD 0 ;FLAG WORD
.WORD 0 ;DESCRIPTOR BITS
.WORD 0,0 ;DUMMY BUFFER ADDRESS, LENGTH
BUFF:: .BYTE -1,-1,-1,-1,-1,-1 ;DESTINATION ADDRESS
ADDR:: .BYTE 0,0,0,0,0,0 ;SOURCE ADDRESS
.WORD 123456 ;PROTOCOL
.REPT 32.
.BYTE 252,125 ;DATA
.ENDR
WCNT == <.-BUFF>/2
AREA: .BLKW 2 ;EMT AREA
LIST: .WORD QNREG+QN$CSR,CS.SR ;DEVICE LIST
.WORD QNREG+QN$CSR,0 ;
.WORD 0 ;
.PSECT CODE,I,RO
START:: .DEVICE #AREA,#LIST ;RESET DEVICE ON EXIT
MOV #QNREG,R5 ;SET DEVICE REGISTER
BIS #CS.SR,QN$CSR(R5) ;PERFORM SOFTWARE RESET
BIC #CS.SR,QN$CSR(R5) ;
MOV R5,R0 ;COPY SOURCE ADDRESS TO PACKET
MOV #ADDR,R1 ;
MOV #6,R2 ;
10$: MOV (R0)+,-(SP) ;
MOVB (SP)+,(R1)+ ;
SOB R2,10$ ;
BIS #CS.ILD,QN$CSR(R5) ;DISABLE INTERNAL LOOPBACK
MOV #DESC,QN$TAL(R5) ;SET BDL ADDRESS
CLR QN$TAH(R5) ;START THE TRANSMISSION
20$: TSTB QN$CSR(R5) ;TRANMISSION DONE?
BPL 20$ ;NO
BIC #CS.RI,QN$CSR(R5) ;RESET XI (BY WRITING 1 TO IT)
MOV #BUFF,R0 ;SET OUTPUT BUFFER ADDRESS
MOV #FMTS,R1 ;SET FORMAT STRING
MOV #DESC,R2 ;SET ARGUMENT BLOCK
CALL $EDMSG ;FORMAT OUTPUT STRING
CLRB @R0 ;MAKE IT ASCIZ
.PRINT #BUFF ;PRINT DESCRIPTOR DATA
.EXIT ;EXIT
.PSECT RODATA,D,RO
FMTS:: .ASCII /FLAG: %P%N/
.ASCII /BITS: %P%N/
.ASCII /BUFF: %P%N/
.ASCII /WCNT: %P%N/
.ASCII /STAT: %P %P/
.BYTE 0
.END START
Код:.RU NQT
FLAG: 177777
BITS: 120000
BUFF: 001024
WCNT: 177731
STAT: 020010 000002
.
Код:pdp-11:/home/form# tcpdump -pni re0 ether src 08:00:2b:31:47:b4
tcpdump: listening on re0, link-type EN10MB
00:09:55.518540 08:00:2b:31:47:b4 ff:ff:ff:ff:ff:ff 2ea7 78:
aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55
aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55
aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55
aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55

