.TITLE UCXSUBS Utility subroutines for UCX TCP/IP .IDENT /V1.1-00/ ; from get_host.mar .LIBRARY /SYS$SHARE:LIB.MLB/ .psect data noexe DEV: .ASCID /BG:/ CHAN: .LONG 0 IOSB: .QUAD 0 COMMAND:.LONG LENGTH .ADDRESS COMM COMM: .BYTE 1 .BYTE 2 .WORD 0 LENGTH=.-COMM HOST_D: .BLKL 2 HOST_NAM:.word 16 .byte dsc$k_dtype_t .byte dsc$k_class_s .address haddr HADDR: .blkb 16 .psect code nowrt ; .ENTRY GET_HOST,^M GET_HOST:: .CALL_ENTRY HOME_ARGS=TRUE,MAX_ARGS=2 MOVL 4(AP),R0 MOVL (R0),HOST_D MOVL 4(R0),HOST_D+4 $ASSIGN_S DEVNAM=DEV, CHAN=CHAN $QIOW_S CHAN=CHAN,- FUNC=#IO$_ACPCONTROL,- IOSB=IOSB,- P1=COMMAND,P2=#HOST_D,- P3=#HOST_NAM,P4=#HOST_NAM BLBC R0,DONE CMPW #1,IOSB BEQLU DONE MOVZWL IOSB,R0 DONE: RET ; from netio.mar $IODEF ;** $INETSYMDEF PORTNUM=79 .psect data noexe LEN: .LONG 0 ;-------------------------------; ; SOCKET STRUCTURE ; ;-------------------------------; PAR11: .WORD 6 ;** INET$C_TCP .BYTE 1 ;** INET_PROTYP$C_STREAM .BYTE 0 PAR12: .LONG 16 .ADDRESS LOCAL_ADR LOCAL_ADR: .WORD 2 ;** INET$C_AF_INET .BYTE 0,50 .BYTE 192,107,46,26 .BLKB 8 PAR13: .LONG 16 .ADDRESS SOCKET SOCKET: .WORD 2 ;** INET$C_AF_INET PORT: .WORD PORTNUM ;PORT # ADDRESS:.BYTE 192,107,46,27 ;ADDRESS .BLKL 2 ;UNUSED .psect code nowrt ; .ENTRY OPEN_NET,^M<> OPEN_NET:: .CALL_ENTRY HOME_ARGS=TRUE,MAX_ARGS=2 MOVL HADDR,ADDRESS LOCAL: $ASSIGN_S CHAN=CHAN,DEVNAM=DEV $QIOW_S CHAN=CHAN,- FUNC=#IO$_SETMODE,- IOSB=IOSB,- P1=PAR11,P3=#PAR12 ;-------------------------------; ; REVERSE THE BYTES ; ;-------------------------------; MOVB PORT,R0 MOVB PORT+1,PORT MOVB R0,PORT+1 ;---------------; ; CONNECT ; ;---------------; $QIOW_S CHAN=CHAN,- FUNC=#IO$_ACCESS,- IOSB=IOSB,- P3=#PAR13 BLBC R0,ERROR MOVZWL IOSB,R0 BLBC R0,ERROR ERROR: RET ;--------------------------------------------------; .ENTRY WRITE_NET,^M<> MOVL @8(AP),LEN $QIOW_S CHAN=CHAN,- FUNC=#IO$_WRITEVBLK,- IOSB=IOSB,- P1=@4(AP),P2=LEN RET ;--------------------------------------------------; .ENTRY READ_NET,^M<> AGAIN: $QIOW_S CHAN=CHAN,- FUNC=#IO$_READVBLK,- IOSB=IOSB,- P1=@4(AP),P2=#1024 CMPW #1,IOSB BNEQU DISCONNECT MOVZWL IOSB+2,R0 RET DISCONNECT: MOVL #0,R0 RET .END