/PUNCHR.PA /PUNCH BLOCK LETTERS ON PAPER TAPE. 8/8/74. LAST MOD: 8/21/74. /AUTHOR: MICHAEL HUCK, INSTITUTE OF CHILD DEVELOPMENT. / / AT ANY TIME WHEN THE QUESTION MARK APPEARS, TYPE IN A /LINE CONTAINING 6-BIT CHARACTERS TO BE PUNCHED /FOLLOWED BY A CARRIAGE RETURN. PUNCHR WILL PAUSE TO ALLOW /THE PAPER TAPE TO BE TURNED ON. TYPE ANY CHARACTER TO START /PUNCHING. FOLLOWING ARE DESCRIPTIONS OF THE SPECIAL EFFECTS /KEYS CTRL/O, CTRL/C, AND RUBOUT. / / CTRL/O - DELETE INPUT LINE OR TERMINATE A PUNCH. PUNCHR IS RESTARTED. / CTRL/C - TERMINATE I/O AND RETURN TO MONITOR. / RUBOUT - DELETE LAST ACTIVE CHARACTER IN INPUT LINE. / *3 / TEMPORARY VARIABLES TMPA, 0 TMPB, 0 TMPC, 0 *10 / AUTO INDEX VARIABLES AU0, 0 AU1, 0 AU2, 0 *20 / COMMON SUBROUTINES INPUT= JMS I . INPUTX OUTPT= JMS I . OUTPTX INTRP= JMS I . INTRPX CRLFS= JMS I . CRLFSX NULLS= JMS I . NULLSX MONIT= JMS I . MONITX *30 / VARIABLES CHAR, 0 *50 / CONSTANTS FORM, 334 RUBO, -377 K77, 77 MAXIN, -177 LEADER, -110 / TRAILER MCR, -215 CR, 215 LF, 212 A200, 200 QMARK, 277 MCTRLC, -203 OMDIF, 203-217 / CTRL/C - CTRL/O ARY0, INBUF-1 ARY1, BLET-1 DSPC, 1 / *200 / START UP - SUBROUTINES JMP I .+1 MAIN / MONITX, 0 / BACK TO MONITOR TSF JMP .-1 /BE SURE LAST CHR TYPED JMP I .+1 7600 / INPUTX, 0 / READ CHARACTER FROM KEYBOARD KSF /SKP IF READY TO READ JMP .-1 KRB /READ CH SNA /IGNORE NULL CHRS JMP INPUTX+1 JMP I INPUTX / OUTPTX, 0 / PRINT CHARACTER TO KEYBOARD DCA TMPC /STORE PRINT CH CLA CLL TAD DSPC /GET AC-DISPLAY RAL CLL /ROTATE LEFT 1 SNA IAC /IF ZERO AC=1 TSF /SKP IF READY TO PRINT JMP .-1 DCA DSPC TAD TMPC /GET PRINT CH TLS /PRINT CH CLA CLL JMP I OUTPTX / NULLSX, 0 / PRINT NULL LEADER-TRAILER CLA TAD LEADER /GET NEG LEADER COUNT DCA TMPA NUL1, JMS OUTPTX /PRINT NULL JMS INTRPX /ABORT/RESTART ISZ TMPA JMP NUL1 /MORE NULLS JMP I NULLSX / CRLFSX, 0 / PRINT CRLF COMB CLA TAD CR JMS OUTPTX TAD LF JMS OUTPTX JMP I CRLFSX / INTRPX, 0 / CHECK ABORT/RESTART DURING EXECUTION KSF /CHECK IF CHR TYPED JMP I INTRPX /RETURN KRS /READ INTRP CHR 6030/KCF /CLEAR KEYBOARD/READER TAD MCTRLC /CTRL/C SNA MONIT /ABORT TO MONITOR TAD OMDIF /CRTL/O SNA CLA JMP I A200 /RESTART PUNCHR JMP I INTRPX /STRAY CHR? / *400 / START OF PUNCHR PROG MAIN, KCC /CLEAR FLAGS TLS CRLFS TAD QMARK OUTPT /SIGNAL READY TAD MAXIN DCA TMPA /MAX CHRS FROM INPUT TAD ARY0 DCA AU0 /INIT AUTO INDEX OF INBUF IN, INPUT DCA CHAR TAD MCTRLC /CHECK FOR ABORT/RESTART TAD CHAR SNA MONIT TAD OMDIF SNA CLA JMP I A200 /RESTART CTRL/O TAD RUBO TAD CHAR SZA CLA JMP IN1 /NO RUBO TAD ARY0 /CHECK FOR CHRS IN BUFFER CIA TAD AU0 SNA CLA JMP IN /NO CHRS TO DELETE CMA /-1 TAD AU0 DCA AU0 /DELETE CHR CMA /-1 TAD TMPA DCA TMPA /DEINC CHR COUNTER TAD FORM OUTPT /INFORM USER CHR DELETED JMP IN /GET NEXT CHR IN1, TAD MCR TAD CHAR SNA CLA JMP IN2 TAD CHAR /PROCESS CHAR OUTPT /ECHO TAD CHAR AND K77 /REMOVE UPPER BITS DCA I AU0 /STORE IN BUFFER ISZ TMPA JMP IN IN2, DCA I AU0 /STRING ENDS IN ZERO CHR CRLFS INPUT /PAUSE CLA / NULLS /LEADER TAD ARY0 DCA AU0 OU1, TAD I AU0 SNA JMP OU2 DCA CHAR INTRP /CHECK FOR ABORT/RESTART TAD CHAR CLL RTL /CH*4 TAD CHAR /CH*5 TAD ARY1 DCA AU1 /BLOCK LETTERS TAD I AU1 OUTPT /1 TAD I AU1 OUTPT /2 TAD I AU1 OUTPT /3 TAD I AU1 OUTPT /4 TAD I AU1 OUTPT /5 OUTPT /BLANK OUTPT /BLANK JMP OU1 OU2, NULLS /TRAILER JMP I A200 /RESTART PUNCHR / INBUF=1000 /INPUT BUFFER 200B WORDS / *1200 / BLOCK LETTER DATA BLET, 0;0;0;0;0 176;11;11;11;176; 177;111;111;111;66; 76;101;101;101;42 /ABC 177;101;101;101;76; 177;111;111;111;101; 177;11;11;11;1 /DEF 76;101;101;111;72; 177;10;10;10;177; 0;101;177;101;0 /GHI 60;100;100;100;77; 177;10;24;42;101; 177;100;100;100;0 /JKL 177;4;10;4;177; 177;4;10;40;177; 76;101;101;101;76 /MNO 177;11;11;11;6; 76;101;121;41;136; 176;11;31;51;106 /PQR 46;111;111;111;62; 1;1;177;1;1; 77;100;100;100;77 /STU 37;40;100;40;37; 77;100;60;100;77; 143;24;10;24;143 /VWX 7;10;160;10;7; 141;121;111;105;103 /YZ / 0;177;101;101;0; 2;4;10;20;40; 0;101;101;177;0 /[\] 4;2;175;2;4; 20;70;20;20;20; 0;0;0;0;0 /^_(SPACE) 0;0;277;0;0; 0;7;0;7;0; 14;77;14;77;14 /!"# 104;112;277;112;62 /$ 143;23;11;145;143; 60;116;111;76;120; 0;0;7;0;0 /%&' 0;0;76;101;0; 0;101;76;0;0; 22;14;77;14;22 /()* 0;10;74;10;0; 0;140;340;0;0; 0;10;10;10;0 /+,- 0;140;140;0;0; 40;20;10;4;2; /./ / 76;121;111;105;76; 0;102;177;100;0; 162;111;111;111;106 /012 42;101;111;111;66; 37;20;20;176;20; 47;105;105;105;71 /345 76;111;111;111;62; 1;1;171;5;3; 66;111;111;111;66 /678 46;111;111;111;76 /9 / 0;22;77;22;0; 0;22;177;62;0; 0;10;20;44;0 /:;< 50;50;50;50;50; 0;44;20;10;0; 2;1;131;11;6 /=>? $