; LSRPIP - LOW SPEED READER PIP. ; PROGRAM TO TRANSFER FILE FROM LOW SPEED PAPER-TAPE READER ; TO RT-11 FILE NAMED IN COMMAND STRING. ; OPERATING INSTRUCTIONS. ; CALL IN PROGRAM BY TYPING "R LSRPIP" C.R. ; RESPOND TO CSI "*" WITH NAME OF FILE TO BE CREATED. ; FOLLOWED BY "=" OR "<". ; LSRPIP THEN ASKS " PLACE TAPE IN READER, SET SWITCH TO START ; THEN STRIKE ANY KEY TO BEGIN TRANSFER." ; THE TAPE WILL PAUSE OCCASSIONALLY DURING THE READ ; PROCESS BUT THE OPERATION IS NOT COMPLETE TILL ; THE "*" PROMPT IS RETURNED AFTER THE TAPE FINALLY STOPS. ; THE KEYBOARD IS DISABLED DURING THE READ SO TO ABORT ; STOP THE READER AND TYPE CTRL C AFTER THE "*" IS TYPED. .MCALL .REGDEF,.TTYIN, .WRITW, .PRINT, .CSIGEN, .CLOSE,..V2.. .REGDEF ; ..V2.. START: BIC #10000, 44 ; USE TELETYPE IN GENERAL MODE .CSIGEN #DEVSPC, #DEFEXT, #0 ; USE CSI TO GET AND OPEN OUTPUT FILE BIS #10000, 44 ; SET TO SPECIAL MODE FOR PROMPT. .PRINT #MSG ; PRINT SETUP MESSAGE. .TTYIN ; WAIT FOR KEYBOARD STROKE. .PRINT #MSGCR ; DO CRLF AFTER PROMPT CLR BLOCK ; NEW FILE, ZERO RELATIVE BLK # BUFCLR: MOV #BUFFER, R1 ; POINT R1 TO BUFFER. CLRLP: CLR (R1)+ ; CLEAR BUFFER. CMP R1, #BUFEND ; FINISHED? BLO CLRLP ; NO: DO ANOTHER. MOV #BUFFER, R1 ; RESET FOR INPUT. TTINLP: MOVB #1, @#177560 ; DISABLE TTY INTERRUPT, ENABLE RDR WAIT: TSTB @#177560 ; BYTE IN YET? BMI BYTEIN ; BRANCH IF YES. INC COUNT ; NO - BUMP TIMEOUT COUNTER. BNE WAIT ; KEEP WAITING IF TIMEOUT NOT 0. ; FINALLY TIMED OUT: ASSUME END OF TAPE AND CLOSE FILE. .WRITW 0, #BUFFER, #400, BLOCK ; TIMED OUT, WRITE LAST BLOCK .CLOSE 0 MOV #100, @#177560 ; ENABLE INTERRUPT FOR CTRL C. BR START BYTEIN: CLR COUNT ; RESET TIMEOUT COUNTER. MOVB @#177562, (R1)+ ; PUT BYTE INTO BUFFER. CMP R1, #BUFEND ; BUFFER FULL? BLO TTINLP ; NO - GET NEXT BYTE .WRITW 0, #BUFFER, #400, BLOCK ; YES - WRITE IT OUT. INC BLOCK ; BUMP BLOCK # BR BUFCLR ; AND INIT BUFFER FOR NEXT. BUFFER: .=.+1000 BUFEND: DEFEXT: 0 0 ; DEFAULT EXTENSION BLOCK FOR CSIGEN COUNT: 0 ; TIMEOUT COUNTER. BLOCK: 0 ; FILE RELATIVE BLOCK #. .NLIST BEX MSG: .ASCII /PLACE TAPE IN READER, SET SWITCH TO START,/ .BYTE 15, 12 .ASCII /THEN STRIKE ANY KEY TO BEGIN TRANSFER./ .BYTE 0 MSGCR: .BYTE 15, 12, 0 .EVEN .LIST BEX DEVSPC: .END START