TITLE PAPER TAPE PUNCH LABEL PROGRAM FOR PDP-10 SUBTTL R. P. MALISKA IFNDEF SEGMNT ;-1=REENTRANT 0=LOW SEGMENT ONLY IFNDEF PAT ;-1=ASSEM PATCH AREA 0=DONT ASSEM. PATCH AREA REPEAT 0,< PUNCH CHRACTERS =============== CHARACTERS AVAILABLE ARE: A THROUGH Z, 0 THROUGH 9, AND MISC. CHARACTERS: SPACE CAR RET AND #$%&()*=-:+;/?., OPERATING INSTRUCTIONS ====================== USER SIMPLY TYPES THE CHARACTERS HE WISHES TO PUNCH ON THE TTY. WHEN FINISHED HE TYPES A ^Z(CONTROLL Z) SAMPLE DIALOGUE =============== R PUNCH ;USER TYPES THIS TO MONITOR * ;PUNCH RESPONDS WITH * THIS IS A TEST ;USER TYPES THIS ^Z ;USER HAS TYPED ^Z FINISHED ;PUNCH TYPES THIS EXIT ^C . ;USER IS BACK IN MONITOR NOTE THAT YOU MAY RUBOUT CHARACTERS UP UNTILL THE APPERANCE OF A CARR. RET CHARACTER RESTRICTIONS ============ DEVICE PTP MUST BE A PAPER TAPE PUNCH ALTHOUGH THE AOUTHOR HAS TRIED THIS ROUTINE ON THE CDP ITS RELIABILITY IS NOT ASSURED GOOD LUCK > EXTERN JOBREN,JOBVER VPNCH==001 IFN SEGMNT,< HISEG > AC=4 P=17 T=1 N=20 CNT=3 BEG: RESET MOVEI 0,BEG HRRI JOBREN ;SET A REENTRY ADDRESS MOVEI VPNCH HRLI JOBVER ;STORE JOB VERSION TTCALL 3,[ASCIZ/*/] INIT T,1 SIXBIT /TTY/ XWD 0,TTYIN JRST TTYERR INIT P,10 SIXBIT /PTP/ XWD PTPOUT,0 JRST PTPERR MOVE P,[XWD -N,PDL] PUSHJ P,FEED ;LEADER! LOOP: SOSG TTYIN+2 INPUT T, ILDB AC,TTYIN+1 CAIN AC,15 ;CR? JRST CR ;YES! CAIL AC,140 ;SPACE? JRST LOOP CAIN AC,32 ;TYPED ^Z TO END JRST ENDIT ;YES CLOSE FILE! CAIN AC,54 ;TYPED A COMMA? JRST COMMA ;PUNCH A COMMA SUBI AC,40 JUMPE AC,SPACE JUMPL AC,LOOP ;GET NXT CHAR. MOVE AC,TABLE(AC) ;GET CHAR FORMAT JUMPE AC,LOOP ;=0? SETZ CNT, ;CLEAR COUNTER ROTC CNT,6 ROT AC,-6 SKIPN CNT ;THIS ROUTINE OUTPUTS A SPACE SPACE: MOVEI CNT,6 MOVEI AC+1,0 ROTC AC,-6 ROT AC+1,7 PUSHJ P,PUT SOJG CNT,.-4 JRST LOOP ;THIS ROUTINE PUNCHES A COMMA COMMA: MOVEI AC+1,1 PUSHJ P,PUT MOVEI AC+1,6 PUSHJ P,PUT MOVEI AC+1,0 PUSHJ P,PUT JRST LOOP ;THIS ROUTINE FEEDS TAPE FOR A CARRIAGE RET. CR: PUSHJ P,FEED-1 JRST LOOP ;THIS ROUTINE CLOSES THE FILE WHEN ^Z IS TYPED ENDIT: PUSHJ P,FEED PUSHJ P,FEED CLOSE P, CLOSE T, RESET TTCALL 3,[ASCIZ/ FINISHED /] EXIT ;THIS ROUTINE PUNCHES LEADER, TRAILER, AND SPACES SKIPA CNT,[50] ;SHORT SPACE FOR CARR. RET. FEED: MOVEI CNT,^D200 ;LONG SPACE FOR LEADER AND TRAILER SETZ AC+1, PUSHJ P,PUT SOJG CNT,.-1 POPJ P, ;THIS IS THE OUTPUT ROUTINE PUT: SOSG PTPOUT+2 OUTPUT P, IDPB AC+1,PTPOUT+1 POPJ P, TTYERR: TTCALL 3,[ASCIZ/ CAN'T INIT DEVICE TTY /] EXIT PTPERR: TTCALL 3,[ASCIZ/ CAN'T INIT DEV PTP /] EXIT IFN SEGMNT,< LOC 140 > TTYIN: BLOCK 3 PTPOUT: BLOCK 3 PDL: BLOCK N IFN SEGMNT,< RELOC BEG+240 > TABLE=. C240: BLOCK 4 45651775122 BLOCK 3 C250: 030000004136 030000003641 040000120412 040000041604 0 040000040404 030000000303 2010040201 DIGIT: 050036414136 040000017721 3145454523 2651514122 0477442414 4651515172 4651515136 6050474040 2651515126 3645454530 C272: BLOCK 3 040000060606 0 050030454030 ALPHA: 0 3744444437 2651515177 2241414136 3641414177 4141515177 4040505077 645454136 7704040477 40000417741 7601010102 4122140477 101010177 7720142077 7702142077 3641414136 3044444477 3542454136 3146444477 4651515122 4040774040 7601010176 7006030670 7603140376 4122142241 4020172040 6151414543 C333: BLOCK ^D5 IFN PAT,< PATCH: BLOCK ^D10 > END BEG