File CONVERT

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

*20
/PROGRAM	CONVERT
/PDP-12	PROGRAM
/INPUT:	PACKED LINC SOURCE
/FILED IN LAP6,LAP6A-3L,OR
/LAP6-3L SYSTEM ON UNIT 1
/OUTPUT:	PACKED ASCII SOURCE
/IN WA OF DIAL ON UNIT 0
/
	JMP QAINIT
	TEX1
	ANS1
	JMP QARFSH
	JMP SETUP
TEX1, TEXT >FCONVERT
H 
HLAP6 SOURCE PROGRAM
HSTARTS IN BLOCK<3
HON UNIT ONE\>
ANS1,	7400
	0000
	3400
/PUT QANA HERE
			/Q+A ROUTINE FOR PDP-12
QAINIT,	LDA I		/SAVE JMP RETURN
	2
	ADD 0
	STA I
QAB,	0		/JMP 	+3
	ADD QAL+3
	STC 1		/PTR TO FIRST PARAM
	LDA 1		/GET FIRST PARAM
	ADD QAQ+1	/PTR TO HALFWORD-1
	STC QAG-3
	LDA I 1
	STC QARFSH-1
	STC 6
QACA,	SET 3
	QARFSH-1
	SET 4		/XR4 TO PTR TO QUESTIONS
	QAG-3
			/TO HERE IF FIRST TIME THROUGH OR FOLLOWING A CR
	SET 1
	4
	JMP QAT
	NOP		/F
	LDH I 4		/H. BUMP PTR IF H OR F
QAD,	JMP QAO
	JMP .+6		/74
	JMP QAE		/34
	SAE I		/CR?
	43
	JMP QAD		/NO
	JMP QACA+4
			/INITIALIZE ANSWER BUFR
	STH 3		/74 TO ANSWERS
	LDH I 4		/NEXT HALFWORD
	ADA I
	-60
	COM
	STC 6
	STH I 3		/0 IN AC
	XSK I 6
	JMP .-2
	LDH I 3		/BUMP PTR TO ANSWERS
	JMP QAD
			/ANSWER BUFR IS INITIATED
QAE,	STH 3
	SET I 4		/XR4 TO PTR TO LAST TYPED CHAR IN ANSWER BUFR
	0
			/----RE-ENTER HERE TO REFRESH----
QARFSH,	LDA I		/INITIAL Y POSITION
	137 
	STC QAH-1
	SET I 3		/XR3 TO PTR TO HALFWORD QUESTIONS-1
	0
	SET 5		/XR5 TO PTR TO LAST DISPLAYED CHAR IN ANSWER BUFR
	QARFSH-1
QAG,	SET 1
	3
JMP QAT
	JMP .+7		/F
	LDH I 3		/H. BUMP PTR
	LDA I		/NEITHER. ASSUME HALF SIZE
	BCL I
	STC QAM+2	/SET INSTR TO CLEAR FF FOR HALF SIZE
	ADD QAW		/NOP IN AC
	JMP QAM
	LDH I 3		/BUMP PTR
	LDA I
	BSE I
	STC QAM+2	/SET INSTR TO SET FF FOR FULL SIZE
	ADD QAW+1	/ADD 9U IN AC
QAM,	STC QAP+3
	MSC I 4		/EAD CONTROL REGISTER
	BSE I		/THIS INSTR CHANGES. EITHER BSE & OR BCL &
	200
	MSC 4		/AC TO CONTROL REGISTER
	SET I 1		/XR1 TO INITIAL X POSITION
	100
	LDA I		/Y COORDINATE MULTIPLE
	-40
	ADM I		/Y COORDINATE
	0
QAH,	LDH I 3
	JMP QAO+1
	JMP QAZ		/74 BUMP PTR TO NEXT CHAR, PUT 40 IN AC
	JMP QAJ		/34
	SHD I		/NEITHER
	4300
	JMP QAG		/CR. MOVE X AND Y COORDINATE
	JMP QAP		/ISPLAY CHAR
	JMP QAH		/PICK UP NEXT CHAR
	JMP QAP		/TO HERE IF DISPLAYING ANSWER BUFR
	SRO I	/SWITCH TO DISPLAY CURSOR. EITHER 0000 OR 7777
	0		/IFXR4=XR5, THEN SWITCH=7777
	JMP QAF
			/QUESTION MODE
QAI,	LDH I 5
	JMP QAO+1
	JMP QAH		/74
	JMP QAH		/34
	JMP QAI-4	/NEITHER. DISPLAY IT
QAJ,	JMP GETKBD	/TO HERE IF DISPLAYED BUFFER
	AZE I
	JMP QAB	/NOTHING TYPED . EXIT
	SET I 2
	QAY
	SHD 2		/LF?
	JMP QAK+4	/YES. EXIT
	SHD I 2		/CR?
	JMP QAN
	XSK 6		/IS THERE AN ANSWER FIELD?
	JMP QARFSH
	SHD I 2		/<?
	JMP QAL
	SHD I 2		/>?
	JMP QAK
	SHD I 2		/ALT?
	JMP QACA
	SHD I 2		/BACK SLASH?
	JMP QARFSH	/IGNORE
	SHD I 2		/RUBOUT?
	JMP QAL		/IGNORE
	SHD I 2		/TAB?
	JMP QARFSH	/IGNORE
	STC .+5		/ACCEPTABLE CHAR
	JMP QAO		/TEST NEXT CHAR
	JMP QAQ		/74 BACK PTR UP BY 1
	JMP QAQ		/34 ^
	LDA I		/OK. STORE IT
	0
	STH 4
	JMP QARFSH	/REDISPLAY
QAL,	LDH 4		/TO HERE IF RUBBOUT OR <
	JMP QAO+1
	JMP QARFSH	/74 IGNORE
	-6002
	LDH 2		/TEST THE CHAR
	SAE I		/RUBOUT?
	37
	JMP QAQ		/NO. BACK PTR UP BY 1
	SET 5
	4
	SET 3
	4
	JMP .+2
	LDH I 5		/BUMP PTR
	LDH I 3		/GET NEXT CHAR
	JMP QAO+1
	NOP		/IF 74 OR 34, REPLACE CURRENT CHAR WITH 0
	CLR
	STH 5
	AZE		/WAS IT 74 OR 34?
	JMP .-7		/NO. CONTINUE
	JMP QAQ		/BACK PTR UP BY 1
			/TO HERE IF CR
QAN,	XSK 6	
	JMP QAK+4	/EXIT ROUTINE IF NO ANSWER FIELD
	JMP QAO
	JMP QARFSH	/74 MOVE PTR TO NEXT QUESTION FIELD
	JMP QAE+1	/34 END OF BUFR. MOVE PTR TO FIRST QUESTION FIELD
	JMP QAN+2
	
QAO,	LDH I 4		/S/R
	SHD I		/	+1 74 BEGIN FIELD
	7400		/	+2 34 END BUFR
	JMP 0		/	+3 NEITHER 74 NOR 34
	SAE I
	34
	XSK I 0
	XSK I 0
	JMP 0
			/S/R TO DISP LINC CHAR IN AC
QAP,	ROL 1		/MULT BY 2 FOR INDEX TO ADDRESS OF TABLE
	ADD QAX+4
	STC 2		/ADDRESS OF CHAR TO DISP IN XR2
	ADD QAU		/THIS INSTR CHANGES. EITHER OP OR ADD 9U
	ADD QAU
	ADD 1		/ADD 4 TO XR1 TO SPACE CHAR
	STC 1
	ADD 5		/GET ADDRESS OF ANSWER BUFR
	COM
	ADD 4
	AZE
	CLR
	STC QAI-2	/SWITCH=0 OR 7777
	ADD QAH-1	/Y COORDINATE IN AC
	DSC 2
	DSC I 2		/DISPLAY CHAR
	JMP 0
QAQ,	LDA I		/BACK UP PTR BY 1
	-4000
	ADM
	4
	JMP QARFSH	/REDISPLAY
			/
QAT,	LDH I 1		/S/R
	SHD I		/	+1 F
	0600		/	+2 H
	JMP 0		/	+3 NEITHER
	SAE I
	10
	XSK I 0
	XSK I 0
	JMP 0
			/
QAZ,	LDH I 3
	LDA I
	40
	JMP QAI-4
			/TO HERE IF >
QAK,	LDH I 4
	AZE I		/IS CURRENT CHAR BLANK?
	JMP QAQ		/YES. IGNORE
	JMP QAX		/MOVE DOT FORWARD
			/TO HERE TO EXIT WITH SKIP
	LDA I
	1
	ADM
	QAB
	JMP QAB
			/CHARACTER PATTERNS
QAV,	0101		/KBD 0, ILLEGAL. USED AS MARKER
	0101
	4477		/1:A
	7744
	5177		/2:B
	2651
	4136		/3:C
	2241
	4177		/4:D
	3641
	4577		/5:E
	4145
	4477		/6:F
	4044
	4136		/7:G
	2645
	1077		/10:H
	7710
	7741		/11:I
	0041
	4142		/12:J
	4076
	1077		/13:K
	4324
	0177		/14:L
	0301
	3077		/15:M
	7730	
	3077		/16:N
	7706	
	4177		/17:O
	7741
	4477		/20:P
	3044
	4276		/21:Q
	0376
	4477		/22:R
	3146
	5121		/23:S
	4651
	4040		/24:T
	4077
	0177		/25:U
	7701	
	0176		/26:V
	7402
	0677		/27:W
	7701
	1463		/30:X
	6314
	0770		/31:Y
	7007
	4543		/32:Z
	6151
	4177		/33:/
	0000
			/34:BACKSLASH IGNORED ON INPUT
	0		/NOT USED
	0		/NOT USED
	0000		/35:]
	7741
			/CODES 36:ALT, 37:RUBOUT NOT DISPLAYED
QAY,	4543		/LF,CR
	7476		/<,>
	3634		/ALT, BACKSLASH
	3747		/RUBOUT, TAB
	0000		/40:SPACE
	0000
	7500		/41:X!
	0000
	7000		/42:"
	0070
			/CODES 43:, 44:, 45:LF NOT DISPLAYED
QAX,	JMP QAO+1
	JMP QAQ
	JMP QAQ
	JMP QARFSH
	QAV
	0		/NOT USED
	5166		/46: &
	0526
			/CODE 47:TAB NOT DISPLAYED
	0		/NOT USED
	0		/NOT USED
	3600		/50:(
	0041
	4100		/51:)
	0036
	2050		/52:*
	0050
	0404		/53:+
	0437
	0500		/54:,
	0006
	0404		/55:-
	0404
	0001		/56:.
	0000
	0601		/57:/
	4030
	4536	/60:0
	3651
	2101		/61:1
	0177
	4523		/62:2
	2151
	4122		/63:3
	2651
	2414		/64:4
	0477
	5172		/65:5
	0651
	1506		/66:6
	4225
	4443		/67:7
	6050
	5126	/70:8
	2651
	5122		/71:9
	3651
	2200		/72::
	0000
	4601		/73:;
	0000
			/CODE 74:<NOT DISPLAYED
QAU,	2		/CONSTANT
	0	/NOT USED
	1212		/75:=
	1212
			/CODE 76:> NOT DISPLAYED
QAW,	NOP
	ADD QAU
	4020		/77:?
	2055
/
QAF,	DSC I
	6000
	JMP QAI
/
			/END Q+A
/
/
/
/
/KEYBOARD INPUT ROUTINE
/
LKRB= 6036		/PDP-8 IOT KBD
LTSF= 6041		/TSF
LTLS= 6046		/TLS
/
GETKBD,	LDA
	0
	STC EXIT+6	/SAVE RETURN
	ADD 1		/SAVE XRS 1 AND 2
	STC EXIT+3
	ADD 2
	STC EXIT+5
	STC EXIT+1
	KST		/WAS SOMETHING TYPED?
	JMP 0		/NO: EXIT
	IOB
	LKRB		/GET TTY CHAR, CLEAR FLAG
	STA I		/SAVE IT
TY,	0
	ADA I
	-237
	APO		/BETWEEN 200 AND 237?
	JMP CNTRL	/CONTROL CHAR. CHECK FOR CR,LF, TAB
/
	SET I 1		/NO
	CHARS-1
	SET I 2
	-7
	LDA
	TY
	SAE I 1
	JMP .+2
	JMP EXIT	/ILLEGAL CHAR. DON	T ECHO
	XSK I 2		/CHECKED THEM ALL?
	JMP .-4
/
	ADA I
	-337
	APO		/BETWEEN 240 AND 337?
	JMP LEGAL	/YES. LEGAL CHAR
/
	SAE I 1		/NO. CHECK FURTHER.
	JMP .+7
	LDA I		/RUBOUT
	334
	JMP TPE		/ECHO BACKSLASH
	LDA I
	37
	JMP EXIT+2	/LEGAL EXIT
/
	SAE I 1
	JMP EXIT	/ILLEGAL
			/ALT
	JMP EXIT+2	/EXIT, DON	T ECHO
/
LEGAL,	LDA
	TY
	JMP TPE		/ECHO CHAR
	ADD TY
	BCL I		/STRIP IT TO 6-BIT
	7700
	JMP EXIT+2
/TO HERE IF CONTROL CHAR
CNTRL,	SAE I
	7755
	JMP CKLF
	LDA I		/CR
	43
	STC EXIT+1
	LDA I
	215
	JMP TPE
	LDA I
	212
	JMP TPE
	JMP EXIT
/
CKLF,	SAE I
	7752
	JMP .+4
	LDA I		/LF
	45
	JMP CNTRL+5
	SAE I
	7751
	JMP EXIT		/ILLEGAL
	LDA I
	47
	JMP EXIT+2	/EXIT, DON	T ECHO
/
EXIT,	LDA I		/GET 6-BIT ASCII
	0
	SET I 1		/RESTORE XRS
	0
	SET I 2
	0
	JMP		/EXIR S/R GETKBD
/S/R TO PRINT C(AC)
TPE,	IOB
	LTLS		/PRINT IT
	LDA
	0
	STC .+4		/SAVE RETURN
	IOB
	LTSF
	JMP .-2		/WAIT FOR FLAG
	JMP		/EXIT
CHARS,	243	/HASH
	244	/DOLLAR SIGN
	245	/PER CENT
	247	/APOSTROPHE
	300	/AT SIGN
	336	/UP ARROW
	337	/BACK ARROW
	40	/RUBOUT
	36	/ALT
/END OF S/R GETKBD
CONV,	60	/0-9
61
62
63
64
65
66
67
70
71
43	/CR
37	/RO
40	/SPACE
11	/I
56	/P
55	/-
53	/+
34 /VERT BAR
32	/LB
36	/CASE
01	/A-Z
02
03
04
05
06
07
10
11
12
13
14
15
16
17
20
21
22
23
24
25
26
27
30
31
32	/Z
45	/LF
77
77	/?
75	/=
25	/U
54	/COMMA
56	/PERIOD
52	/ORIGIN
57 /LT BRAC TO SLASH
77	/UNDERLINE??
74	/QUOTES
76	/QUOTES
74	/QUOTES
76	/QUOTES
35	/RT BRACKET
52
72	/COLON
00
47 /TAB
SETUP,	LDA I
	4000
	STA
	BNIN
	LDA
	ANS1+1
	AZE
	JMP SETUP1
	LDH
	ANS1+4000
	BCL I
	70
	ADM
	BNIN
	JMP SETUP3
SETUP1,	LDH
	ANS1+4001
	AZE
	JMP SETUP2
	LDH
	ANS1+1
	BCL I
	70
	ADM
	BNIN
	LDH
	ANS1+4000
	BCL I
	70
	ROL 3
	ADM
	BNIN
	JMP SETUP3
SETUP2,	BCL I
	70
	ADM
	BNIN
	LDH
	ANS1+1
	BCL I
	70
	ROL 3
	ADM 
	BNIN
	LDH
	ANS1+4000
	BCL I
	70
	ROL 6
	ADM
	BNIN
	STA 
	NBNIN
SETUP3,	ADA I
	1001
	STA
	BNIN1
/READ INITIAL BLOCKS IN
OVRTEX,	RDC U
BNIN,	0	/2000-2377
	RDC U
BNIN1,	0	/2400-2777
	SET I 10
	4\INIT-1
	SET I 11	/Q6:3000-3377
	6777
	LDH I 10
	AZE	/NULL?
	JMP .+2
	JMP OVRIN	/END
	STH I 11
	JMP .-5
INIT, TEXT >*20
/THIS PROGRAM DOES
/NOT TRANSLATE ALL
/SITUATIONS.
/CHECK LISTING!!
ZTA=5
LMB=0600
UMB=0640
 >
	0
OVRIN,	SET I 10
	4\2001
	LDA I
	6370
	STA
	TPOUT
START,	JMP HWD
	SAE I
	66
	JMP TXMETA
/COMMENT MODE
COMMT,	SAE I
	12
	JMP MOCT
/END OF COMMENT
MORE,	JMP LINCD
	SET 12
	10
	LDH I 12
	SAE I
	66
	JMP .+2
	JMP START
	SAE I
	22
	JMP .+2
	JMP START
MO1,	LDA I
	100
	JMP LINCD
	JMP START
/MORE COMMENTS
MOCT,	JMP LINCD
	JMP HWD
	JMP COMMT
/CHECK FOR TEXT META
TXMETA,	SAE I
	70 /ALT-A
	JMP ICK
TXBG,	LDA I
	0047
	JMP LINCD
	LDA I
	0030
	JMP LINCD
	LDA I
	53
	JMP LINCD
	LDA I
	47
	JMP LINCD
	JMP SPACE
	LDA I
	71
TXAGIN, JMP LINCD
	JMP HWD
	SAE I
	71
	JMP TXAGIN
/END OF TEXT META
	JMP LINCD
	JMP START
/SMALL I CHECK
ICK,	SAE I
	15
	JMP UCK
/SMALL I
	JMP LINCD
	JMP SPACE
	JMP START
/SMALL U CHECK
UCK,	SAE I
	62
	JMP TAGCK
/SMALL U
	JMP LINCD
	JMP SPACE
	JMP START
/TAG CHECK
TAGCK,	SAE I
	22
	JMP SYMCK
/TAG
	JMP HWD
	JMP SWAP
	JMP COMMA
	JMP MO1
/SYMBOL CHECK
SYMCK,	SET 12
	10
	ADA I
	-11
	APO I	/NUMBER?
	JMP TERM
	SET 12	/YES
	10
	LDH I 12	/PEEK AT NEXT HWD
	ADA I
	-55	/Z OR BELOW
	APO I
	JMP TERM
	LDH 12	/YES
	ADA I
	-23
	APO
	JMP TERM
	LDH 10	/YES,A-Z
	JMP SWAP
	JMP START
TERM,	LDH 10
	SAE I
	77
	JMP .+3
	JMP LINCD
	JMP QUIT
MNEM,	SET 12
	10
	ADA I
	-55
	APO I
	JMP CRMORE
	LDH 12
	ADA I
	-23
	APO
	JMP CRMORE
/LETTER. IS NEXT CHAR
/A LETTER?
	LDH I 12
	ADA I
	-55
	APO I
	JMP CRMORE
	LDH 12
	ADA I
	-23
	APO
	JMP CRMORE
/YES, CHECK LAST CHAR
	LDH I 12
	ADA I
	-55
	APO I
	JMP CRMORE
	LDH 12
	ADA I
	-23
	APO
	JMP CRMORE
	LDH 10		/MNEMONIC
	JMP LINCD
	JMP HWD
	JMP LINCD
	JMP HWD
	JMP LINCD
	JMP SPACE
	JMP START
CRMORE,	LDH 12
	SAE I
	12
	JMP .+2
	JMP MORE
	JMP LINCD
	JMP START
/HWD MUST CHECK
/FOR END OF Q4
/AND BRING-IN NEW
/HALF WORD
HWD,	CLR
	ADD 0
	STC BACK
	LDA
	10
	SAE I
	6377
	JMP .+2
	JMP EQ4
	LDH I 10
BACK,	0
EQ4,	SET I 10
	7777
	LDA
	NBNIN
	ADA I
	1
	STA
	NBNIN
	ADA I
	1001
	STA
	NBNIN1
	RDC U
NBNIN,	0
	RDC U
NBNIN1,	0
	JMP BACK-1
/SPACE CREATES A SPACE
SPACE,	CLR
	ADD 0
	STC BACK1
	LDA I
	14
	JMP LINCD
BACK1,	0
/COMMA OUTPUTS A COMMA
COMMA,	CLR
	ADD 0
	STC BACK2
	LDA I
	63
	JMP LINCD
BACK2,	0
/SWAP INTERCHANGES NUMBER
/AND LETTER COMBINATIONS
/THEN OUTPUTS BOTH
SWAP,	CLR
	ADD 0
	STC BACK3
	LDH 10
	STA
	SWAP1
	JMP HWD
	STA
	SWAP2
	LDA I
SWAP2,	0
	JMP LINCD
	LDA I
SWAP1,	0
	JMP LINCD
BACK3,	0
/LINC SETS UP O/P
/BUFFER IN Q6
LINCD,	STC OPWD
	ADD 0
	STC BACK4
	LDA
	11
	SAE I
	7377
	JMP OUTPUT
	WRC	/YES, END OF OP BUFFER
TPOUT,	0
	LDA
	TPOUT
	ADA I
	1
	SAE I
	6467
	JMP .+2
	JMP TPQ+3
	STA
	TPOUT
	SET I 11
	6777
OUTPUT,	LDA I
OPWD,	0
	ADA I
	CONV
	STC PICKUP
	LDA
PICKUP,	0
	STH I 11
BACK4,	0
QUIT,  LDA
	TPOUT
	STA
	TPQ
	WRC
TPQ,	0
	0416
	JMP .-1
	CHK U
	0000
	0416
	JMP .-1
	SET I 15
	RCG
	SET I 16
	7300
	SET I 14
	-57
	SET I 13
	TEXTZ-1
	LDA I 13
	IOB
	6041 /TSF
	JMP .-2
	IOB
	6046 /TLS
	XSK I 14
	JMP .-7
	JMP 15
TEXTZ,	0215
	0212
	322
	305
	315
	317
	326
	305
	240
	324
	301
	320
	305
	240
	306
	322
	317
	315
	240
	325
	316
	311
	324
	240
	261
/REMOVE TAPE FROM UNIT 1
	0215
	0212
	324
	331
	320
	305
	240
	314
	306
	240
	301
	320
	240
	263
	267
	260
	254
	260
	240
	303
	322
	215
	212
/TYPE LF AP 370,0 CR
/CONVERT
/18 DEC 69



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