.TITLE REDRCT .IDENT /JAN80/ ; ; PROGRAM TO REDIRECT DEVICES BY SIMPLY CHANGING THE REDIRECT ; POINTER IN THE DEVICE TO BE REDIRECTED. ; ; ORIG PROG: DR DICKEY FEB , 1980 ; ; MODIFICATIONS: ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; DSW=0 .MCALL DIR$,EXIT$,QIOW$ ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; START: DIR$ #GETRED ;GET DEVICE TO BE REDIRECTED. CMPB #IS.TMO,IOSTAT ;TIMEOUT? BEQ 70$ ; .. J IF SO CMPB #IE.EOF,IOSTAT ;CTRL/Z? BEQ 70$ ; .. J IF SO CMPB #IS.SUC,IOSTAT ;SUCCESS? BEQ 10$ ; .. J IF SO 5$: DIR$ #SYNTAX ;SYNTAX ERROR BR START ; 10$: BICB #60,UNIT ;COMPUTE UNIT NUMBER. BICB #60,UNIT+1 ; " MOVB UNIT+1,R0 20$: TSTB UNIT BEQ 30$ ADD #10,R0 DECB UNIT BR 20$ ; 30$: MOV .PUDBA,R1 ;SCAN PUD FOR THIS DEVICE. 40$: CMP R1,.PUDEA ;REACHED END OF PUD? BLE 50$ ; .. J IF NOT. DIR$ #NODEV ;ERROR. NO PUD ENTRY BR START ;GO BACK AND TRY AGAIN. 50$: CMP DEVICE,U.DN(R1) ;RIGHT DEVICE NAME? BNE 60$ ; .. J IF NOT. CMPB R0,U.UN(R1) ;RIGHT DEVICE NUMBER BEQ 100$ ; .. J IF SO. 60$: ADD #U.SZ,R1 ;GO TO NEXT PUD ENTRY BR 40$ ; " ; 70$: DIR$ #EXIT ; ; 100$: DIR$ #GETTO ;GET DEVICE TO REDIRECT TO - CMPB #IS.TMO,IOSTAT ;TIMEOUT? BEQ 70$ ; .. J IF SO CMPB #IE.EOF,IOSTAT ;CTRL/Z? BEQ 70$ ; .. J IF SO. CMPB #IS.SUC,IOSTAT ;SUCCESS? BEQ 110$ ; .. J IF SO 105$: DIR$ #SYNTAX ;SYNTAX ERROR. BR 100$ ; 110$: BICB #60,UNIT ;DECODE DEVICE NUMBER BICB #60,UNIT+1 ; " MOVB UNIT+1,R0 120$: TSTB UNIT BEQ 130$ ADD #10,R0 DECB UNIT BR 120$ 130$: MOV .PUDBA,R2 ;SCAN PUD FOR THIS DEVICE. 140$: CMP R2,.PUDEA ;END OF PUD? BLE 150$ ; .. J IF NOT. DIR$ #NODEV ;ERROR. NO PUD ENTRY. BR 100$ ; 150$: CMP DEVICE,U.DN(R2) ;IS THIS THE RIGHT DEVICE NAME? BNE 160$ ; .. J IF NOT. CMPB R0,U.UN(R2) ;IS THIS THE RIGHT UNIT NUMBER? BEQ 200$ ; .. J IF SO. 160$: ADD #U.SZ,R2 ;TRY NEXT PUD ENTRY. BR 140$ ; " ; 200$: MOV R2,U.RP(R1) ;MOVE "TO" PUD ADDRESS INTO "FROM" ;REDIRECT POINTER. BR 70$ ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; GETRED: QIOW$ IO.RPR,1,1,,IOSTAT,, SYNTAX: QIOW$ IO.WAL,1,1,,,, NODEV: QIOW$ IO.WAL,1,1,,,, EXIT: EXIT$ GETTO: QIOW$ IO.RPR,1,1,,IOSTAT,, ; IOSTAT: .BLKW 2 ; DEVICE: .BLKB 2 UNIT: .BLKB 2 ; GETR: .BYTE 12,15 .ASCII \ENTER DEVICE THAT IS TO BE REDIRECTED > \ GETRL=.-GETR ; SYN: .BYTE 12,15 .ASCII /SYNTAX ERROR/ SYNL=.-SYN ; NOD: .BYTE 12,15 .ASCII /NO SUCH DEVICE/ NODL=.-NOD ; GETT: .BYTE 12,15 .ASCII \ENTER DEVICE TO REDIRECT TO > \ GETTL=.-GETT ; .EVEN .END START