.TITLE HS-to-LP program ; ; ; This routine monitors the HS: handler and ; transfers any input to the line printer. ; ; .MCALL .READW,.WRITW,.LOOKUP,.EXIT .MCALL .CLOSE,.PRINT ERRBYT = 52 ;ERROR CODE ETB = 27 ;END CODE ; ; ; LOOKUP HS: AND LP: ; ; HSPOOL::.LOOKUP #LAREA,#1,#HS ;GET HANDSHAKE DEVICE CLR IOBLK MOV #AREA,R5 MOV #512.,NUM ; ; ; READ 2 BLOCKS AND WRITE TO PRINTER ; IF EOF, CLOSE FILES AND REPEAT. ; ; LOOP: .READW R5,#1 TST R0 ;ANY WORDS TRANSFERRED?? BNE LOK ;YES, CONTINUE BCC LOK ;NO ERRORS .PRINT #EMESS ;READ ERROR .EXIT ; ; ; FIRST TIME THROUGH OPEN THE LP ; ; LOK: MOV R0,NUM ;NUMBER OF WORDS READ .LOOKUP #LAREA,#0,#LP ;GET THE PRINTER BR WRIT ;AND WRITE NORMALLY ; ; ; READ FROM HS UNTIL EOF ; ; LOP2: MOV #512.,NUM .READW R5,#1 TST R0 ;ANY WORDS TRANSFERRED?? MOV R0,NUM BNE WRIT ;YES BCC WRIT ;NO ERROR TSTB @#ERRBYT ;WHAT WAS ERROR?? BEQ LEOF ;END OF FILE .PRINT #EMESS ;READ ERROR .CLOSE #1 .CLOSE #0 .EXIT ; ; ; WRITE TO LP ; ; WRIT: .WRITW R5,#0 BCC WOK ;WRITE OK .PRINT #WMESS .CLOSE #0 .CLOSE #1 .EXIT ; ; ; WRITE OK--DO ANOTHER READ ; ; WOK: ADD #2,IOBLK BR LOP2 ;REREAD ; ; ; EOF DETECTED ; ; LEOF: .CLOSE #0 .CLOSE #1 JMP HSPOOL ;RECYCLE ; ; ; BUFFERS AND CONSTANTS ; ; LAREA: .BLKW 3 RAREA: .BLKW 5 WAREA: .BLKW 5 BUFF: .BLKW 512. AREA: .WORD 0 IOBLK: .WORD 0 .WORD BUFF NUM: .WORD 512. .WORD 0 LP: .RAD50 /LP / HS: .RAD50 /HS / EMESS: .ASCIZ /?HSPOOL-F-Read error/ WMESS: .ASCIZ /?HSPOOL-F-Write error/ .END HSPOOL