File UPDOWN2

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

*20
	PMODE
/PROGRAM CONSTANTS, PAGE ZERO
	*20
POINT,	0
CASE,	0
C257,	257
C212,	212
C240,	240
C215,	215
C255,	255
C260,	260
DIG,	0
C7400,	7400
M20,	-20
MBLK,	0
TEMP,	0
MYES,	-400 
PSTART,	EPROG	/TEXT BUFFER-1
INFILE,	INPUT
TBLK,	0
CHSIZE,	0
FULL,	200
RESPA,	0
RESPB,	0
TWOSB,	0
IPAUSE,	PAUSE
INEWON,	NEWONE
C1000,	1000
NEXTC,	NEXTCH
NEXTC4,	NEXTCH-4
PWTABL,	PATRN-2		/AD-2 OF PW TABL
FIRST,	2000		/FINAL TEXT ADDR
CHAR,	0
AWSIZE,	WSIZE
ADISPF,	DISPOF
APASS1,	PASS1
M56,	-56
CHMASK,	MASKON+2
WARN,	4141		/WARN SIG PW
LOCHAR,	0		/DISPLAY POINTER
BLANK,	BLANKS
MD1000,	-1750
D1000,	1750
MD100,	-144
D100,	144
MD10,	-12
D10,	12
M43,	-43
DECPUT,	DECOUT
LINE,	LINES
SPACES,	SPACE
TIPE,	TYPE
LMHC,	0		/HC OF L MASK
HCWIND,	0		/HC OF WINDOW
RMHC,	0		/HC OF R MASK
C10,	10
M40,	-40
MASKIT,	MASK
SHOW,	WINDOW
NTIME,	0
ONCE,	0
HOLD,	0
KLOCK,	4100		/MSEC CLOCK
KLOCKP,	5100		/HSEC CLOCK
LASTCH,	0
ICHLIN,	CHLINE
C40,	40
C1,	1
/DISPLAY PARAMETERS
WINDSP,	1		/CHAR SPACING
MASKSP,	2		/MASK-CHAR "
BOUND,	-700		/-R DISP BORDER
IHORCO,	0		/LEFTMOST HC
VERCO,	0		/VERT DISP COOR
LSIZE,	-6		/-SIZE OF L MASK
RSIZE,	-6		/-SIZE OF R MASK
MOVE,	0		/DELTA HC/FRAME
WSIZE,	0		/HOLDS CURR WSIZ
	0
	0
	0
	0
	0		/WSIZE ARRAY
/TIME PARAMETERS
DISPON,	-24		/-MSEC/FRAME ON
DISPOF,	0		/-CURRENT OFF TM
	0
	0
	0
	0
	0		/DISPOF ARRAY
WARNON,	-144		/-HSEC E-LINE SG
PAUSET,	-310		/-HSEC PAUSE
/UP AND DOWN PARAMETERS
DOWN,	-1		/SLOW INCR
UP,	1		/POS FAST INCR
NPOINT,	-30		/-NO OBS/CASE
NCASE,	-1		/-NO WSIZE CASES
PASS1,	0		/CURR SKIM FLAG
	0
	0
	0
	0
	0		/PASS1 ARRAY
/TEXT PARAMETERS
INSERT,	0		/NO. EXTRA BLANK
SLIDE,	1		/NEW CHARS/FRAME
/SUBR DOUBLES AC IF FULL-SIZE CHAR
DOUBLE,	0
	DCA HOLD	/SAVE AC
	TAD CHSIZE
	SZA CLA		/RETURN IF ZERO
	JMP .+3
	TAD HOLD
	JMP I DOUBLE
	TAD HOLD
	CLL RAL		/DOUBLE
	JMP I DOUBLE
/SUBR SETS HCS RELATIVE TO LMHC
SETUP,	0
	CLA
	TAD LSIZE
	CIA
	CLL RTL
	TAD MASKSP
	JMS DOUBLE
	TAD LMHC
	DCA HCWIND
	TAD WSIZE
	DCA TEMP
	SKP
	TAD WINDSP
	TAD C10
	ISZ TEMP
	JMP .-3
	TAD MASKSP
	JMS DOUBLE
	TAD HCWIND
	DCA RMHC
	JMP I SETUP
/SUBR READS IN TEXT PASSAGE IN SUCCESSIV
/TEXT BLOCKS, STARTING WITH BN TBLK
INPUT,	0
	LINC
	LMODE
	STC ONCE	/ONCE THRU FLAG
	LDF 1		/LINC DF=1
	LDA I 0
	4000	
	STC MBLK	/MEM BLK=4
FIX,	ADD TBLK
	ADD MBLK	/FORM 2ND TAPE
	STC MODE+1	/INSTR
MODE,	RDC U		/READ TAPE 1
	0		/2ND TAPE INSTR
	PDP
	PMODE
	CLA
	TAD ONCE
	SZA CLA		/DO ONLY ONCE
	JMP CONT
	TAD INPUT+3	/SET LDF 1 FOR
	DCA HOKEY	/LATER USE
	TAD I FIRST	/GET ADD OF
	AND C7400	/HOW MANY I/O
	CLL RTR		/BLOCKS MORE?
	CLL RTR
	CLL RTR
	TAD M20
	CLL RTR		/LEAVE 0-13 BLKS
	SNA
	JMP CONT+2	/DONE: RETURN
	CIA
	DCA TEMP	/ISZ LOOP
	ISZ ONCE	/SET ONCE FLAG
	JMP CLAW
CONT,	ISZ TEMP       /ANOTHER BLK?
	JMP CLAW
	TAD FIRST
	DCA 12		/TEXT START
	JMP I INPUT
CLAW,	TAD C1000
	TAD MBLK	/NEXT MBLK
	SZA		/RESET IF MBLK=0
	JMP .+3
	TAD FIX-2	/MBLK=4
	ISZ HOKEY	/INCR LDF
	DCA MBLK	/NEW MBLK
	ISZ TBLK	/NEW TBLK
	LINC
	LMODE
HOKEY,	0		/LDF N INSTR
	JMP FIX		/NEXT I/O
	PMODE
/SUBROUTINE GIVES AC+1 SPACES OUTPUT
SPACE,	0
	CMA
	DCA NTIME
	TAD C240
	JMS TYPE
	ISZ NTIME
	JMP .-3
	JMP I SPACE
TYPE,	0
	TLS
	TSF
	JMP .-1
	CLA
	JMP I TYPE
/SUBR TO OUPUT AC+1 LINES
LINES,	0
	CMA
	DCA NTIME
	TAD C212
	JMS TYPE
	ISZ NTIME
	JMP .-3
	TAD C215
	JMS TYPE
	JMP I LINES
/SUBR TYPES AC AS SIGNED DECIMAL INTEGER
DECOUT,	0
	DCA HOLD
	DCA DIG
	TAD HOLD
	SMA
	JMP DIG0
	CIA
	DCA HOLD
	TAD C255
	JMS TYPE
	TAD HOLD
DIG0,	TAD MD1000
	SMA
	JMP .+10
	TAD D1000
	DCA HOLD
	TAD DIG
	TAD C260
	JMS TYPE
	DCA DIG
	JMP .+3
	ISZ DIG
	JMP DIG0
	TAD HOLD
DIG1,	TAD MD100
	SMA
	JMP .+10
	TAD D100
	DCA HOLD
	TAD DIG
	TAD C260
	JMS TYPE
	DCA DIG
	JMP .+3
	ISZ DIG
	JMP DIG1
	TAD HOLD
DIG2,	TAD MD10
	SMA
	JMP IDIG2-2
	TAD D10
	DCA HOLD
	TAD DIG
	TAD C260
	JMS I TIPE
	TAD HOLD
	TAD C260
	JMS I TIPE
	TAD I DECPUT	/RET AD=DECOUT
	DCA HOLD
	JMP I HOLD	/JMP I DECOUT
	ISZ DIG
	JMP I IDIG2	/JMP DIG2
IDIG2,	DIG2
/MASKING SUBROUTINE
MASK,	0		/HOLDS RET ADR
	CLA
	DCA ONCE	/LEFT FIRST
	TAD LSIZE	/-LEFT M SIZE
	SMA		/ANY L M AT ALL?
	JMP RIGHT
	DCA NTIME	/SET UP ISZ LOOP
	TAD LMHC	/HC OF L MASK
	DCA 1		/LINC BETA-1 REG
	TAD VERCO	/VERT. COOR.
MASKON,	LINC
	LMODE
	DSC I 0		/DISP MASK PW
	7777		/FOUND HERE
	PDP
	PMODE
	ISZ NTIME	/MORE MASK AREA?
	JMP MASKON	/MORE MASK 
	CLA
	TAD ONCE	/DONE RIGHT YET?
	SZA
	JMP I MASK	/RETURN
RIGHT,	ISZ ONCE
	TAD RSIZE	/-R MASK SIZE
	SMA
	JMP I MASK	/NO R MASK
	DCA NTIME
	TAD RMHC
	JMP MASKON-2
/WINDOW DISPLAY SUBROUTINE
WINDOW,	0		/HOLDS RET AD
	CLA
	TAD WSIZE
	DCA NTIME	/SET UP ISZ LOOP
	TAD HCWIND	/PUT WINDOW HC 
	DCA 1		/INTO LINC B-2 
	TAD LOCHAR	/AD-1 OF FIRST
	DCA 10		/INTO AUTO IND
WNEXT,	TAD I 10	/GET NEXT CHAR
	CLL RAL		/DOUBLE CODE
	TAD PWTABL	/AD PW TABLE
	DCA 2		/INTO LINC B-2
	TAD VERCO	/VERT. CO.
	LINC 
	LMODE
	DSC 2		/DISPLAY PWS
	DSC I 2
	PDP
	PMODE
	ISZ NTIME	/DONE?
	JMP .+2
	JMP I WINDOW	/RETURN
	CLA
	TAD WINDSP
	JMS DOUBLE
	TAD 1
	DCA 1		/INCR H.C.
	JMP WNEXT	/DO NEXT CHAR
/PROGRAM STARTS HERE
START,	HLT
	LAS		/GET INIT TBLK
	DCA TBLK	/FROM R SWS
	JMS I INFILE	/GET TEXT PASSAG
NEWONE,	HLT		/NEW RUN
	TAD NCASE
	DCA CASE
	TAD C10
	JMS I LINE
	TAD MOVE
	JMS I DECPUT
	TAD C257	/ "/"
	JMS I TIPE
	TAD C10
	TAD WINDSP
	JMS I DECPUT
	JMS I SPACES
	TAD INSERT
	JMS I DECPUT
	JMS I SPACES
	TAD DISPON
	CIA
	JMS I DECPUT
	JMS I SPACES
	TAD UP
	JMS I DECPUT
	TAD DOWN
	JMS I DECPUT
	IAC
	JMS I LINE
	TAD AWSIZE	/WS ARRAY-1
	DCA 15
	TAD ADISPF	/DISPOF ARRAY-1
	DCA 16
	TAD APASS1	/PASS1 ARRAY-1
	DCA 17
LOOP1,	STL RTL
	JMS I SPACES
	TAD I 15	/WSIZE(I)
	CIA
	JMS I DECPUT
	STL RTL
	JMS I SPACES
	STA
	DCA I 16	/INIT DISPOF(I)
	IAC
	DCA I 17	/INIT PASS1(I)
	ISZ CASE	/ANOTHER CASE?
	JMP LOOP1
	JMS I LINE
	TAD NPOINT
	DCA POINT	/NO OBS/CASE
	HLT
LOOP2,	TAD NCASE	/CYCLE THE CASES
	DCA CASE
	TAD AWSIZE
	DCA 15
	TAD ADISPF
	DCA 16
	TAD APASS1
	DCA 17
	JMS I LINE
SENT,	LINC
	LMODE
	SNS I 0		/CHAR SIZE: SW 0
	ADD FULL
	ESF
	STC CHSIZE	/SET CHAR SIZE
	ADD C1
	SNS 2		/SW 2 0N:TWO SUB
	CLR
	STC TWOSB
	PDP
	PMODE
	TAD I 15	/WSIZE(I)
	DCA WSIZE
	TAD I 16	/DISPOF(I)
	DCA DISPOF
	TAD I 17	/PASS1(I)
	DCA PASS1	/SKIM FLAG
/LOAD TEXT BUFFER WITH NEXT SENTENCE, 
/EXTRA BLANKS AS PER INSERT
	TAD PSTART
	DCA 11		/FIRST BUF LOC
	TAD PSTART
	DCA LOCHAR
	TAD WSIZE
	JMS I BLANK	/LEADING BLANKS
NEXTCH,	TAD I 12	/NEXT TEXT CHAR
	DCA CHAR
	TAD CHAR
	TAD M40
	SZA CLA		/BLANK?
	JMP .+5
	TAD INSERT	/NO. EXTRA BLNKS
	CMA		/+TEXT BLANK
	JMS I BLANK	/FILL BLANKS
	JMP NEXTCH
	TAD CHAR
	DCA I 11	/STORE CHAR
	TAD CHAR
	TAD M56
	SNA CLA		/END SENTENCE?
	JMP I IPAUSE	/JMP PAUSE
	TAD CHAR
	TAD M43
	SZA CLA		/LAST SENT?
	JMP I NEXTC	/NEXTCH
/END OF PASSAGE(C43) FOUND: 
/GET MORE TEXT FROM CONTIGUOUS BLOCKS
	ISZ TBLK
	JMS I INFILE
	JMP I NEXTC4	/NEXTCH-4
/SUBR STORES NO.=-AC TEXT BLANKS
BLANKS,	0
	DCA NTIME
	TAD C40
	DCA I 11
	ISZ NTIME
	JMP .-3
	JMP I BLANKS
PAUSE,	TAD WSIZE
	JMS I BLANK	/TRAILING BLANKS
	TAD 11
	CIA
	DCA LASTCH	/SAVE -LAST ADD
	TAD IHORCO
	DCA LMHC
	JMS SETUP	/INIT H.C.S
	CLLR
	TAD KLOCKP
	CLLR		/START CLOCK
	JMS I MASKIT	/MASK THRU PAUSE
	CLCA
	TAD PAUSET
	SPA CLA
	JMP .-4
GO,	CLLR
	TAD KLOCK
	CLLR
	JMS I MASKIT
	JMS I SHOW
	CLCA
	TAD DISPON
	SPA CLA
	JMP .-5
	CLLR
	TAD KLOCK
	CLLR
	JMS I MASKIT
	CLCA
	TAD DISPOF
	SPA CLA
	JMP .-4
	CLLR		/STOP CLOCK
	TAD MOVE
	JMS DOUBLE	/DOUBLE IF FULL
	TAD LMHC
	DCA LMHC	/INCR LMHC
	JMS SETUP	/NEW HCS
	TAD SLIDE
	TAD LOCHAR
	DCA LOCHAR	/NEW CHARS
	TAD 10		/ADDR LAST CHAR
	TAD LASTCH
	SPA CLA		/PAST END?
	JMP I ICHLIN	/JMP CHLINE
/DONE WITH SENT. GET RESPS FROM SUBJ A
/VIA RESP PANEL AND ALSO FROM SUBJ B VIA
/ANALOG BOX IF SW 2 ON (I.E.,IF TWOSB=1)
	6314		/CLEAR RESP PANL
	TAD TWOSB
	SNA CLA
	JMP SUBJA
	DCA RESPB
SUBJB,	LINC
	LMODE
	SAM 10		/READ ANALOG BOX
	PDP
	PMODE
	DCA 1		/SAVE ANALOG RES
	TAD 1
	TAD FULL
	SPA CLA		/<-200?
	JMP SUBJA	/RESPB=NO=0
	TAD MD100
	TAD 1
	SPA CLA		/>144?
	JMP SUBJB	/NO RESPB YET
	ISZ RESPB	/RESPB=YES=1
SUBJA,	6312		/READ RESP PANEL
	SNA
	JMP .-2		/NO RESPA YET
	TAD MYES
	SNA CLA		/RESPA=YES?
	IAC
	DCA RESPA
	TAD DISPON
	TAD DISPOF
	CIA		/FT
	JMS I DECPUT
	JMS I SPACES
	TAD RESPA
	TAD C260
	JMS I TIPE
	JMS I SPACES
	TAD TWOSB
	SZA CLA		/TWO RESPS?
	JMP .+3
	JMS I SPACES	/SKIP RESP B
	JMP .+4
	TAD RESPB
	TAD C260
	JMS I TIPE
	IAC
	JMS I SPACES
	STA
	TAD 16
	DCA 16
	TAD PASS1
	SZA CLA		/SKIMMING CASE?
	JMP SKIM
	TAD RESPA
	SZA CLA
	JMP SKIM-2	/YES: FASTER
	TAD DOWN	/NO: SLOWER
SETS,	TAD DISPOF
	DCA I 16	/INTO DISPOF(I)
	ISZ CASE	/ANOTHER CASE?
	JMP I ISENT	/JMP SENT:NEXT C
	ISZ POINT	/MORE OBS/CASE?
	JMP I ILOOP2	/JMP LOOP2
	JMP I INEWON	/JMP NEWONE
	TAD UP		/DECREASE DISPOF
	JMP SETS
/COMES HERE IF PASS1(I)=1:RAPID SLOWING
SKIM,	TAD RESPA
	SNA CLA		/BELOW THRESH?
	JMP .+6
	STA
	TAD 17
	DCA 17
	DCA I 17	/CLR PASS1 FLAG
	JMP SKIM-2	/FASTER
	TAD DOWN
	CLL RAL
	CLL RAL		/SKIM BY X 4
	JMP SETS
/ENOUGH ROOM LEFT ON DISP LINE?
CHLINE,	TAD RMHC
	TAD BOUND
	SPA CLA		/HC PAST BOUND?
	JMP I IGO	/JMP GO:NEXT FRM
	TAD WARN	/PW FOR END-
	DCA I CHMASK	/LINE SIGNAL
	TAD IHORCO
	DCA LMHC	/RESET
	TAD KLOCKP	/LOAD CLOCK
	CLLR
	JMS I MASKIT	/WARN SIGNAL
	CLCA		/CLOCK TIME
	TAD WARNON
	SPA		/DONE WARNING?
	JMP .-4
	STA		/RESTORE MASK PW
	DCA I CHMASK
	JMS SETUP	/RESET HCS
	JMP I IGO	/NEXT FRAME
IGO,	GO
ISENT,	SENT
ILOOP2,	LOOP2
/PATTERN WORDS FOR CHAR DISPL.
PATRN,	4477		/A
	7744
	5177		/B
	2651
	4136		/C
	2241
	4177		/D
	3641
	4577		/E
	4145
	4477		/F
	4044
	4136		/G
	2645
	1077		/H
	7710
	7741		/I
	0041
	4142		/J
	4076
	1077		/K
	4324
	177		/L
	301
	3077		/M
	7730
	3077		/N
	7706
	4177		/O
	7741
	4477		/P
	3044
	4276		/Q
	376
	4477		/R
	3146
	5121		/S
	4651
	4040		/T
	4077
	177		/U
	7701
	176		/V
	7402
	677		/W
	7701
	1463		/X
	6314
	770		/Y
	7007
	4543		/Z
	6151
	4177		/[
	0000
	2040		/\
	0410
	0		/]
	7741
	2000		/^
	2077
	3410		/BACK ARROW
	1010
	0		/SPACE
	0
	7500		/!
	0
	6006		/"
	60
	3614		/NUMBER SIGN
	1436
	7721		/DOLLAR SIGN
	4677
	1446		/%
	6130
	5166		/&
	0523
	500		/APOSTROPHY
	6
	4163		/(
	0
	0		/)
	6341
	2050		/*
	50
	404		/+
	437
	605		/,
	0
	404		/-
	404
	1		/.
	0
	601		//
	4030
	4136		/0
	3641
	2101		/1
	177
	4523		/2
	2151
	4122		/3
	2651
	2414		/4
	477
	5172		/5
	651
	1506		/6
	4225
	4443		/7
	6050
	5126		/8
	2651
	5120		/9
	3651
	4200		/:
	0
	2601		/;
	0
	2410		/<
	0042
	1212		/=
	1212
	4200		/>
	1024
	4020		/?
EPROG,	2055



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