File CARDS1

Directory of image this file is from
This file as a plain text file

*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
/



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search