/OS/8 HANDLER FOR PDP/11-RSTS/E /IT USES A SERIAL I/O INTERFACE WITH A /TELETYPE-LIKE INSTRUCTION SET. / /PETER HANAK /TECHN. UNIV. BP. /DEPT. FOR INSTRUMENTATION AND MEASUREMENT /LAST EDITED: SEPT 30, 1977 / / /CALLING DEVICE HANDLERS /CDF N ;WHERE N IS THE VALUE OF THE / CURRENT PROGRAM'S INSTRUCTION FIELD / TIMES 10 (OCTAL) /CIF ;DEVICE HANDLERS ARE ALWAYS IN FIELD 0 /JMS I ENTRY ;ENTRY CONTAINS THE ENTRY POINT / ADDRESS OF THE HANDLER /ARG(1) ;FUNCTION CONTROL WORD: / BIT: MEANING: / 0 0 FOR INPUT, 1 FOR OUTPUT / 1 TO 5 NUMBER OF 128-WORD RECORDS / TO BE TRANSFERRED. IF 0, NO / OPERATION. / 6 TO 8 MEMORY FIELD FOR TRANSFERRING / DATA. / 9 TO 11 USED FOR DECTAPES. /ARG(2) ;BUFFER ADDRESS /ARG(3) ;STARTING BLOCK NUMBER /JMP ERR ;ERROR RETURN; IF AC0=1, FATAL ERROR /... ;NORMAL RETURN (I/O TRANSFER COMPLETE) / /PERIPHERAL INSTRUCTIONS /PEC = PERIPHERAL CODE OF 'SERIAL INPUT' INTERFACE /PEC+10 = PERIPHERAL CODE OF 'SERIAL OUTPUT' INTERFACE PEC=400 PKSF=KSF-30+PEC PKCC=KCC-30+PEC PKRS=KRS-30+PEC PKRB=KRB-30+PEC PTSF=TSF-30+PEC PTLS=TLS-30+PEC EJECT OS-8 OUTPUT HANDLER FOR PDP-11-RSTS-E: PDP.S1-V1.2 /USAGE: /THIS OUTPUT HANDLER WORKS AS INPUT DEVICE OF RSTS/E /TERMINAL KBN:. IT MUST BE LOADED AND ACTIVATED BY OS/8 /BUILD USING THE FOLLOWING COMMANDS: /.RUN SYS BUILD /$LOAD PTR: ;IF TO BE LOADED FROM PAPER TAPE /^ ;PLACE THE TAPE 'PDP.BN' INTO THE READER AND / HIT ANY KEY /$INSERT PDP ;IF TO BE ACTIVATED /$BOOT ;REBOOT THE SYSTEM IF THERE ARE NO MORE / CHANGES /$WRITE ZERO DIRECT?NO ;DON'T CLEAR THE DIRECTORY! /SYS BUILT /.SA SYS BUILD ;SAVE THE NEW COPY OF BUILD / /THE RSTS/E TERMINAL KBN: MUST HAVE THE FOLLOWING /CHARACTERISTICS: WIDTH W (80<=W<=240), TAB, FORM, /NO LC OUTPUT, XON, LOCAL ECHO, NO LC INPUT, NO FILL, STALL, /SPEED S, NO PARITY, NO UP ARROW, NO ESC SEQ. /AT THE BME MUSZER ES MERESTECHNIKA TANSZEK KB14: AND /SPEED 9600 SHOULD BE USED. / /TO SEND A FILE TO THE PDP/11 CALL PIP AT ANOTHER RSTS/E /TERMINAL AND THEN TYPE, TERMINATING THE LINE WITH A /CARRIAGE RETURN: /#DEVICE:FILENAME.EXT /IF THE OPERATION IS SUCCESSFUL A # APPEARS ON THE /RSTS/E TERMINAL AND A * (OR .) ON THE CONSOLE. /NORMAL OPERATION: / IT SENDS CHARS TO THE PDP/11, FILTERING OUT BLANKS, RUBOUTS / AND SCANS WHETHER A CTRL/S HAS BEEN OUTPUTTED BY THE PDP/11. / AFTER RECEIVING A CTRL/S IT SUSPENDS SENDING / CHARS UNTIL ANOTHER CHAR BUT CTRL/S COMES / THEN RESUMES OPERATION. WITH EMPTY BUFFER / IT TAKES THE NORMAL EXIT. / /FATAL ERROR EXIT: / IF THE HANDLER HAS BEEN CALLED FOR INPUT /CTRL/C: / RECEIVING CTRL/C FROM THE CONSOLE IT / RETURNS TO THE MONITOR. /CTRL/S: / IF A CTRL/S HAS BEEN SENT TO THE PDP/11, THE / REMAINDER OF THE BUFFER WILL BE IGNORED. /HANDLER HEADER BLOCK *0 -1 /1 DEVICE DEVICE PDP DEVICE PDP 1400 /DEVICE CONTROL BLOCK:WRITE ONLY,PUNCH-TYPE PDPP-200 /ENTRY POINT OFFSET ZBLOCK 2 /BODY OF HANDLER *200 PDPP, 0 CLA RDF /CALLING FIELD TAD CDFCIF DCA EXIT TAD I PDPP /ARG1: FCW AND MK70 /BUFFER FIELD TAD CDFINS DCA CHANDF STL RAR /SET AC0 TAD I PDPP /ARG1: FCW; BIT0=1, ISZ PDPP /IF OUTPUT REQUESTED SPA JMP FATERR /FATAL ERROR AND MK7700 CMA /-# OF DOUBLEWORDS= DCA WCOUNT /=-RECORD# *128/2-1 TAD I PDPP /ARG2: BUFFER ADDRESS ISZ PDPP DCA BUFADD /ARG3 IS NOT USED CHANDF, CDF /BUFFER FIELD SETTING PKRB /PDP-READER INIT JMP CTRLCE /IS THERE A CTRL/C ? NCTRLC, ISZ WCOUNT /INCREMENT COUNT JMP PDPWRI /CONTINUE WRITING FATERR, ISZ PDPP /BUFFER FULL OR FATAL ERROR ISZ PDPP EXIT, HLT JMP I PDPP PDPWRI, TAD I BUFADD JMS SEND /SENDS FIRST CHAR DCA CHAR ISZ BUFADD TAD I BUFADD JMS SEND /SENDS SECOND CHAR CLL RTR RTR TAD CHAR RTR RTR JMS SEND /SENDS THIRD CHAR ISZ BUFADD KSF /ANY CONSOLE INPUT ? JMP NCTRLC /NO CTRLCE, KRS /YES; CTRL/C ? AND MK177 TAD M3 SZA CLA JMP NCTRLC /NO CDFCIF, CDF CIF /YES JMP I .+1 7600 /RETURN TO MONITOR SEND, 0 /SENDING SUBROUTINE DCA TEMPOR PKSF /ANY PDP INPUT ? JMP SENDIT /NO PKRB /YES; CTRL/S ? AND MK177 /MASK IT TAD M23 /-CTRL/S SZA CLA JMP SENDIT /NO WAIT, PKSF /YES; WAIT FOR INPUT JMP WAIT PKRB /CTRL/S ? AND MK177 /MASK IT TAD M23 /-CTRL/S SNA CLA JMP WAIT /YES; WAIT FOR NEXT SENDIT, TAD TEMPOR /NO, EXAM IF BLANK AND MK177 /MASK IT TAD M177 /EXAM IF RUBOUT SNA JMP RETURN /RETURN IF RUBOUT TAD P162 /EXAM IF CR SZA JMP LFEXAM STA /YES DCA CRFLAG /NOTE CR JMP SENDYT /SEND CR LFEXAM, TAD P3 /EXAM IF LF SZA CLA JMP SENDYD /NO, SEND IT TAD CRFLAG /YES, EXAM CRFLAG SNA CLA JMP SENDYD /NO CR, SEND LF DCA CRFLAG /YES, CLEAR CRFLAG JMP RETURN /AND RETURN IMMEDIATELY SENDYD, DCA CRFLAG /CLEAR CRFLAG SENDYT, TAD TEMPOR /SEND CHAR AND MK377 /MASK IT SNA JMP RETURN /FILTER OUT BLANKS PTLS PTSF JMP .-1 AND MK177 /MASK IT TAD M23 /CTRL/S? SNA CLA JMP FATERR /YES, IGNORE REMAINDER OF BUFFER RETURN, CLA TAD TEMPOR AND MK7400 JMP I SEND CDFINS, CDF MK70, 70 MK177, 177 MK377, 377 MK7400, 7400 MK7700, 7700 M3, -3 M23, -23 /-CTRL/S M177, -177 /-RUBOUT P3, 3 /CR-LF P162, 162 /RUBOUT-CR WCOUNT, 0 /DOUBLE WORD COUNTER BUFADD, 0 /BUFFER POINTER CHAR, 0 /TEMPORARY STORAGE TEMPOR, 0 /TEMPORARY STORAGE CRFLAG, 0 /-1 AFTER CR, OTHERWISE 0 $$$$$$$$ /END OF CODE $$$$$$$$