*20 /CARDS1 PROGRAM: TYPES OUT PASTE-ON /SECTIONS FOR GB-3 TACHISTOSCOPE CARDS /ON TTY. SUCCESSIVE CARDS ARE SUCCESSIVE /LINES OF SPECIFIED DIAL SOURCE FILE. /ONE CARD TYPED PER TTY PAGE (2 FORM /FEEDS BETWEEN CARDS). OPTIONAL LABEL& /AUTOMATICALLY INCREMENTED CARD NO. /TYPED ON 3RD LINE OF PAGE (WON"T BE /DISPLAYED). / /PARAMETERS (ENTERED AT KEYBOARD)* / /"LABEL":0-40 ASCII CHARACTERS-6 BIT SET /"SPACE":SINGLE CHAR TO REPLACE BLANK IN / SOURCE FILE (FOR FIXATION,E.G.) /"MARGIN":NO. LEADING SPACES BEFORE LINE / TYPED-EACH LINE STARTS HERE /"DX": NO. SPACES BETWEEN CHARS OF LINE / 0=NORMAL LINE, ETC. /"LINES": NO. LINES DOWN FROM LABEL /"FILE TBLK": STARTING SOURCE FILE TBLK / LMODE START, HLT SET I 11 PARAMS-4000 JMP MESSAG /"LABEL=" /ACCEPT SUCCESSIVE ASCII CHARS FROM TTY /TO FORM CARD LABEL-INPUT ENDED WITH LF / SET I 6 LABEL-4000 NLAB, JMP ACCEPT SAE I 212 /LF? JMP .+4 CLR STH I 6 /END LABEL=00 JMP .+4 STH I 6 JMP TYPE /ECHO JMP NLAB /ACCEPT SINGLE CHAR FROM TTY FOR "SPACE" JMP MESSAG JMP ACCEPT STH SPACE+4000 JMP TYPE /ACCEPT 4 PARAMS. AS DECIMAL INTEGERS JMP MESSAG JMP GET STC MARGIN JMP MESSAG JMP GET STC DX JMP MESSAG JMP GET STC LINES STC NCARD JMP MESSAG JMP GET ADA I 7000 /MBLK=7 STA TBLK /SAVE TBLK+MBLK /VERIFY THAT SPECIFIED TBLK IS LEGAL FIL STC .+2 RDC 0 /INPUT FILE BUFFER IS 07400-07777 SET I 17 7377 /PTR-1/2 LDA I 17 SAE I 5262 /="*2"? JMP ERROR2 LDA I 17 SAE I 6043 /="0,CR"? JMP ERROR2 JMP CRLF /CR,LF /PARAMETERS READY, OUTPUT BEGINS /EACH CARD TYPED HERE / NXCARD, LDA I C1, 1 ADM I NCARD, 0 /INCR CARD NO. /2 FORM FEEDS+7 LINE FEEDS GETS TO TOP /OF NEXT PAGE, 3RD LINE DOWN LDA I C214, 214 JMP TYPE ADD C214 JMP TYPE SET I 1 -7 LDA I C212, 212 JMP TYPE XSK I 1 JMP .-4 JMP STRING /ENCODE SOURCE /TYPE "MARGIN" SPACES,LABEL,CARD NO.,CR ADD MARGIN AZE I JMP C240+4 /NO MARGIN COM STC 1 LDA I C240, 240 JMP TYPE XSK I 1 JMP .-4 SET I 11 LABEL-4000 JMP MESSAG ADD NCARD JMP DECPUT LDA I 215 JMP TYPE /SPACE DOWN "LINES" LINES, TYPE /"MARGIN" SPACES, SOURCE LINE,CR,LF LDA I MARGIN, 0 AZE I JMP SOURCE /NO MARGIN COM STC 1 ADD C240 JMP TYPE XSK I 1 JMP .-3 SOURCE, SET I 11 BUFFER-4000 JMP MESSAG JMP CRLF JMP NXCARD /CARD DONE! / /SUBR ENCODES NEXT LINE OF SOURCE FILE /(VIA HALF-WD PTR 17) INTO BUFFER&UP. /BLANKS IN SOURCE REPLACED BY "SPACE". /"DX" EXTRA BLANKS INSERTED BETWEEN /CHARACTERS. EACH LINE MUST BEGIN WITH / "/" (NOT TYPED). / STRING, LDA 0 STC RJSTRG SET I 11 BUFFER-4000 JMP NEXCHR /NEXT 6 FILE BIT AZE I /00=END OF FILE JMP EOF SAE I 57 JMP ERROR /NO "/" START! CH, JMP NEXCHR SAE I C40, 40 /BLANK? JMP .+3 LDA I SPACE, 0 /REPLACES BLANK STH I 11 LDA I DX, 0 AZE I JMP CH /NO EXTRA SPACES COM STC 1 ADD C40 STH I 11 /EXTRA SPACE(S) XSK I 1 JMP .-2 LDA CHAR /LAST INPUT CHAR SAE I 43 /END OF LINE? JMP CH /GET NEXT CHAR CLR STH I 11 /ENDS WITH 00 RJSTRG, HLT /R.J. / /SUBR FETCHES NEXT CHAR (HALF-WORD) FROM /INPUT FILE, READING IN NEXT TBLK AS /NEEDED. RETURNS CHAR IN AC & "CHAR". /EXITS TO "EOF" ON DETECTING FILE END=00 / NEXCHR, DJR LDH I 17 STC CHAR ADD 17 AZE /END BUFR=7777 JMP CHAR-1 /READ IN NEXT BLOCK OF TAPE FILE INTO /7400-7777 & RESET PTR TO 7400-1/2 SET I 17 7377 ADD C1 ADM I TBLK, 0 STC .+2 RDC 0 JMP .+1 /USE UP DJR LDA I CHAR, 0 JMP / /ARRIVES HERE ON END-OF-FILE / EOF, SET I 11 ENDLAB-4000 JMP MESSAG JMP START ENDLAB, 4343 TEXT "END OF FILE" / /ARRIVES HERE ON SOURCE FILE ERROR / ERROR1, SET I 11 ERLAB1-4000 JMP EOF+2 ERROR2, SET I 11 ERLAB2-4000 JMP EOF+2 ERLAB1, TEXT "ILLEGAL SOURCE LINE" ERLAB2, TEXT "NOT A SOURCE FILE" / /PARAMETER LABELS PARAMS, 4343 TEXT "LABEL=" 0043 TEXT "SPACE=" 0043 TEXT "MARGIN" 0043 TEXT "DX" 0043 TEXT "LINES " 0043 TEXT "FILE TBLK" / /SUBR RETURNS TTY CHAR IN AC / ACCEPT, PDP PMODE KSF JMP .-1 KRB LINC LMODE JMP / /SUBR TYPES AC / TYPE, PDP PMODE TLS TSF JMP .-1 CLA LINC LMODE JMP / /SUBR TYPES CR.LF + PACKED ASCII MESSAGE /POINTED BY 11 / MESSAG, LDA 0 STC RJMESG LDH I 11 AZE I RJMESG, HLT /RETURN:00=END SAE I 43 /CRLF? JMP .+3 JMP CRLF JMP RJMESG-2 ADA I -37 /ADD 100 OR 200 APO /FOR 8-BIT CODE ADD C100 ADA I 237 JMP TYPE JMP RJMESG-2 C100, 100 / /SUBR TYPES AC AS SIGNED DECIMAL INTEGER /WITH (I5,1X) FORMAT. LEAD 0"S BLANKED / DECPUT, STC NUM ADD STC RJDCPT STC ZERO /LEADING-0 FLAG ADD NUM APO JMP .+4 LDA I C240, 240 JMP .+5 COM STC NUM LDA I 255 JMP TYPE /" " OR "-" SIGN STC 7 /COUNTS DIGITS ADD NUM ADA I -1750 /THOUSANDS APO JMP .+3 XSK I 7 JMP .-5 AZE I /-0? JMP .-3 ADA I 1750 /RESTORE STC NUM ADD 7 ADM I ZERO, 0 /TOTAL DIGIT SUM AZE I JMP .+5 /LEADING ZERO LDA I 260 ADD 7 SKP ADD C240 JMP TYPE STC 7 ADD NUM ADA I -144 /HUNDREDS APO JMP .+3 XSK I 7 JMP .-5 AZE I JMP .-3 ADA I 144 STC NUM ADD 7 ADM ZERO AZE I JMP .+5 LDA I 260 ADD 7 SKP ADD C240 JMP TYPE STC 7 ADD NUM ADA I -12 /TENS APO JMP .+3 XSK I 7 JMP .-5 AZE I JMP .-3 ADA I 12 STC NUM ADD 7 ADD ZERO AZE I JMP .+5 LDA I C260, 260 ADD 7 SKP ADD C240 JMP TYPE ADD C260 ADD NUM JMP TYPE ADD C240 JMP TYPE RJDCPT, HLT / /SUBR TYPES CR.LF / CRLF, LDA 0 STC RJCRLF LDA I 212 JMP TYPE LDA I 215 JMP TYPE RJCRLF, HLT / /SUBR ACCEPTS SIGNED DECIMAL INTEGER /FROM TTY.FORMAT: OPTIONAL SIGN&LEADING /BLANKS,1-4 DECIMAL DIGITS, FOLLOWED BY /LINE FEED. ILLEGAL CHARACTER OR RUBOUT /RESTARTS INPUT. INITIAL "=" & ALL /NUMERIC CHARS ECHOED. RETURNED IN AC. / GET, LDA 0 STC RJGET STC NUM SET I 7 -5 /MAX 4 DIGITS STC SIGN /SIGN FLAG LDA I C275, 275 JMP TYPE /TYPE "=" JMP INCHAR /GET & ECHO CHAR SAE I 240 SKP JMP .-4 /SKIP LEAD BLANK SAE I 255 /="-"? JMP .+3 STC SIGN /SET SIGN FLAG NEXDIG, JMP INCHAR ADA I -257 /DIGIT? APO JMP ENTERR /ILLEGAL CHAR ADA I -12 APO I /DIGIT? JMP ENTERR XSK I 7 /TOO MANY DIGITS SKP JMP ENTERR /TOO MANY! ADA I 11 /RESTORE DIGIT AZE I CLR /-0 TO +0 STC DIGIT ADD NUM MUL I 12 /DEC.SHITF LEFT ADA I DIGIT, 0 STC NUM JMP NEXDIG ENTERR, LDA I /ENTRY ERROR: 277 JMP TYPE /"?" JMP GET+3 /RESTART INPUT / /SUBR ACCEPTS TTY CHAR, CHECKS FOR LF /TERMINATOR, ECHOES NON-LF & RETURNS AC / INCHAR, LDA 0 STC DONE-1 /SAVE RJ PDP PMODE KSF JMP .-1 KRB LINC LMODE SAE I 212 SKP JMP DONE /LF=ENTRY IN STA DIGIT JMP TYPE /ECHO ADD DIGIT HLT /RJ:DIGIT IN AC DONE, LDA I SIGN, 0 /CHECK FOR - AZE JMP .+3 ADD NUM RJGET, HLT /MAINLINE RETURN LDA I NUM, 0 COM JMP RJGET /