; VAXXFR ; .TITLE VAXXFR .NLIST TOC .SBTTL DATA AREAS .IDENT /VS01.0/ ; ; VAXXFR - VAXNET TRANSFER ROUTINES - REFER TO VAXNET.FOR ON VAX ; .PSECT VAXCM RW,D,OVR,GBL NERC: .WORD 0 CANL: .WORD CANR: .WORD XB: .WORD RB: .WORD CNTRL: .WORD RBUFR: .BLKW 66. XBUFR: .BLKW 66. RIOSB: .BLKW 2 XIOSB: .BLKW 2 ; .PSECT ; LCHIN = 3 LCHOUT = LCHIN ; RCHIN = 2 RCHOUT = RCHIN ; ; PARM LIST FOR CALL COMND ; LIST: .WORD 1 ; 1 ARG .WORD XBUFR ; ADDR OF BUFFER ; .MCALL SETF$S,CLEF$S,WTSE$S,QIO$S,QIOW$S,ASTX$S ; .MACRO TSTER NERPOS,?OK BCC OK INC NERC SETF$S #4 MOV #NERPOS,@2(R5) MOV @#$DSW,@4(R5) OK: .ENDM ; ; .PAGE .SBTTL VAXXFR VAXXFR:: QIOW$S #IO.ATT,#2,#1,#100.,#XIOSB, TSTER -2 TST NERC BEQ 1$ RTS PC 1$: CMPB XIOSB,#IS.SUC BEQ 2$ MOV #-1,@2(R5) MOVB XIOSB,R0 MOV R0,@4(R5) RTS PC 2$: CLR XB INC CNTRL CLEF$S #4 ; 100$: INC RB QIO$S #,#RCHIN,#1,#100.,#RIOSB,#WRITLT,<#RBUFR,#132.> TSTER 1 ; 200$: TST NERC BEQ 202$ RETURN 202$: TST CNTRL BNE 205$ CALL GETCTL 205$: TST RB BEQ 100$ TST XB BEQ 400$ WTSE$S #4 CLEF$S #4 BR 200$ ; 400$: INC XB QIO$S #IO.RLB,#LCHIN,#1,#100.,#XIOSB,#WRITRT,<#XBUFR,#132.> TSTER 2 BR 200$ .PAGE .SBTTL GETCTL GETCTL:: CMP XIOSB+2,#1 BEQ 10$ MOV R5,-(SP) ; SAVE R5 MOV #LIST,R5 JSR PC,COMAND MOV (SP)+,R5 ; RESTORE R5 BR REENAB 10$: BICB #340,XBUFR ; TURN INTO CONTROL CHARACTER QIOW$S #IO.WVB,#RCHOUT,#1,#100.,#XIOSB,,<#XBUFR,#1> TSTER 6 ; REENAB:: CLR RB CLR XB INC CNTRL RETURN .PAGE .SBTTL WRITLT ; WRITLT:: MOV #RBUFR,R1 CMPB RIOSB,#IS.SUC BNE 390$ MOV RIOSB+2,R0 BEQ 390$ CMPB RBUFR,#12 ; BNE 370$ ; MUST BE 11/70 CLRB RBUFR MOVB #15,RBUFR(R0) INC R0 INC R1 370$: QIOW$S #IO.KIL,#LCHIN,#1,#100.,,, TSTER 7 QIOW$S #IO.WVB,#LCHOUT,#1,#100.,#RIOSB,,<#RBUFR,R0> TSTER 3 390$: JSR PC,YDONE TST (SP)+ ; CLEAR IOSB WORD ON STACK ASTX$S .PAGE .SBTTL WRITRT ; WRITRT:: MOV XIOSB+2,R0 CMPB XIOSB,#IE.ABO BNE 6$ TST R0 BNE 12$ JMP 400$ 6$: ; ; CHECK IF TERMINATED BY ESCAPE ; CMP #IS.ESC,XIOSB BNE 20$ ; ; IT'S ESCAPE CHECK IF MORE THAN 1 CHARACTER ; TST R0 BEQ 15$ ; SINGLE ESCAPE - SEND IT 12$: INC RB INC XB QIOW$S #IO.KIL,#LCHIN,#1,#100.,,, TSTER 8. QIOW$S #IO.KIL,#RCHIN,#1,#100.,,, TSTER 9. ; CLR CNTRL SETF$S #4 CMPB #'X,XBUFR BNE 30$ INC NERC 30$: BR 400$ ; 15$: MOVB #33,XBUFR BR 25$ 20$: CMP XIOSB,#IS.CR BNE 400$ MOVB #15,XBUFR(R0) 25$: INC R0 QIOW$S #IO.KIL,#RCHOUT,#1,#100.,,, QIOW$S #,#RCHOUT,#1,#100.,#XIOSB, ,<#XBUFR,R0> TSTER 4 JSR PC,YDONE 400$: TST (SP)+ ASTX$S .PAGE .SBTTL XDONE ; YDONE:: CLR XB CLR RB SETF$S #4 RETURN .END