File SEG0

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

*20
/
/PDP-12 DEMO MONITOR
/BANK 0
/
/
/
/RELEASE VERSION 1
/22 AUG 69
/REVISED 14 SEP 69
/REVISED 13 OCT 69
/REVISED 23 OCT 69
/
/
/
/LAST MODS 12/21/69    RICH DE JOHN
/
/
/
/SOME ASSIGNMENTS
LMODE
LINC=6141
XOA=0021
RMF=6224
RIB=6234
ION=6001
IOF=6002
TLS=6046
PMODE
CLC=7240
PDP=0002
/ASSIGNMENTS FOR CROSS BANK
/REFERENCES
SCI=2525
STATE=3223
ZDML=STATE+1
Y01=20
TAPDSP=3343
TAPMES=TAPDSP+2
ERR1=1621
ERR10T=3760
ERR6T=3741
UNITM=3365
ZPNAME=3367
CALLDL=3356
/INTERRUPT SERVICE ROUTINES
SEGMNT 0
PMODE
*1
	NOP
	DCA SVAC	/ENTRY FROM PDP-8 MODE
	TAD 0
	DCA SVPC
	TAD 1	/SET PDP-8 MODE INDICATOR
	LINC
LMODE
	JMP INTSAV	/GO TO SAVE STATE ROUTINE
*20
/SAVED TRAP STATE
TSTATE=.-1
ISVFLO, 0
ISVAXO, 0
ISVEFS, 0
ISVMQ,  0
ISVFLD, 0
ISVPC,  0
ISVLNK, 0
ISVAC,  0
JF2,	JMP FOOS2	/USED DURING TAPE INT.
TIMER,	0
CASE,	0	/CASE OF INPUT CHAR
LNCODE,	0	/LINC CODE OF INPUT CHAR (KBD)
/RETURN FROM INTERRUPT SERVICE,
RET8,	LINC
RET,	SET I 14
	ISTATE
	JMP GO
/LINC MODE INTERRUPT HANDLER
LMODE
*41
	STC SVAC
	LDA
	40
	BSE I
	JMP
ILLT,	STC SVPC
INTSAV,	ROR I 1	/SAVE LINK, BIT 1 IS MODE AT INTERRUPT TIME
	STC SVLNK
	SET I 14
	ISTATE
	JMP SVSUB1	/SAVE SOME COMMON STUFF
/TAPE INTERRUPT?
/YES IF TAPE INTERRUPT ENABLED, AND TAPE DONE.
/SWITCH IN TAPE INTERRUPT SERVICE HANDLES
/UNWANTED INTERRUPTS
TAPSER,	STD
	JMP KSER
	XOA
	ROL I 6
	LZE
	JMP TAPINT
/KEYBOARD INTERRUPT?
KSER,	CLR
	PDP
PMODE
	KSF
	JMP TSER
	KRB
	LINC
LMODE
	STC ICHR
	ADD   ONE
	STC   KSTF
	JMP STCNG
/TELETYPE PRINTER FLAG?
PMODE
TSER,	TSF
	JMP ISER
	TCF
	DCA TFLG
	JMP RET8
/ALL OTHER INTERRUPTS COME HERE
ISER,	TAD INEXT	/CHAIN EXTENDED?
	SZA CLA
	JMS I INEXT	/E YES
	JMP ISER0
	JMP RET8
/SUBROUTINE TO SAVE SOME COMMON STUFF
/FOR INTERRUPT SERVICE AND
/TRAP SERVICE
LMODE
SVSUB1,	FLO I
	ADD M1
	STA I 14
	XOA
	ADD C400
	STD
	CLR
	STA I 14
	SFA
	STA I 14
	QAC
	ROL 1
	QLZ
	ADD ONE
	STA I 14
	CLR
	IOB
	RIB
	STA I 14
	LDF 1
	JMP 0
/SOME COMMON STORAGE
INEXT,	0	/INTERRUPT EXTENSION
STSVD,	0	/DEMO STATE SAVED 7=YES,0=NO
KSTF,	0	/KEYBOARD FLAG - 1 IF CHAR IN
TFLG,	0	/TTY FLAG - 1=BUSY, 0=NOT
OTAC,	0	/USED DURING TAPE INTERRUPT
/START OF INSTRUCTION TRAP HANDLER
*140
	0
	STC ISVAC
	IOB
	IOF
	JMP ITRAP
/INTERRUPT STATE
ISTATE=.-1
SVFLO, 0
SVAXO, 0
SVEFS, 0
SVMQ,  0  /MQ, ALL 12 BITS
SVFLD, 0  /FIELDS, SAVED IN LINC MODE ALWAYS
SVPC,  0  /SAVED PC, 8- OR LINC- DEPENDING ON MODE
SVLNK, 0  /BIT 0=LINK STATE, BIT 1 IS MODE, 1=PDP-8, 0=LINC
SVAC,  0
/TRY TO HANDLE EXTRANEOUS INTERRUPTS
/POWER CLEAR AND SEE IF THEY CLEAR.
/IF NOT, CANNOT RECOVER, AND DEMO SYSTEM MUST BE RELOADED.
/IF INTERRUPT CLEARS, CONTROL C WILL RESTART THE DEMO, RE-
/EXECUTING A TAPE COMMAND IF ONE WERE IN PROGRESS
	PMODE
ISER0,	CLC
	LINC
	LMODE
	ESF	/GENERATE A PWR CLR
	SET I 1
PMODE
	JMP   ILLINT
	PDP
	ION
C7000,	NOP
	IOF
	TAD .-2	/RESTORE 1
	DCA 1
	LINC
LMODE
	SET I 14
	ISTATE
	JMP COPY
	JMP STOPT
TWO,	2	/"SPURIOUS INTERRUPT"
/THIS ROUTINE HANDLES UNCLEARABLE INTERRUPTS
ILLINT,	LINC
	SET I 1
	5400	/PDPMODE JMP I 0
	LDA I
	JMP IOFF	/SET 41 TO RETURN, INTERRUPTS OFF
	STC ILLT
	JMP STOPT
THREE,	3	/"UNCLEARABL INTERRUPT"
/JUST RETURN TO LINC MODE, INTERRUPTS OFF
IOFF,	STC .+4
	ADD SVAC
	IOB
	RMF
/THE FOLLOWIN LOCATION GETS CLOBBERRED
/ IF AN UNCLEARABLE INTERRUPT OCCURS
KCTAB,	216	/DOUBLE ENTYRY TABLE FOR CONTROL
		/CARACTER LOOKUP
	-13	/-IS NEW STATE, + IS LIST OF NES NEW STATES
	211	/I
	-2	/ALWAYS GOES TO STATE 2
	210	/H
	TH+TH-1
	203	/C
	TC+TC-1
	223	/S
	TS+TS-1
ICHR,	0	/ALSO SERVES TO END LOOP
	7777	/NO STATE TRANSITION NECESSARY
/STATE SELECTER
/CAUSES A STATE CHANGE  IF AND ONLY IF
/ONE OF TTE CONTROL  CODES IS STRUCK
STCNG,	SET I 11
	KCTAB-1
	ADD   ICHR
	SAE I 11
	JMP   .-1
	LDA I 11	/GET CODE WORD FROM TABLE
	APO I	/- IS STATE, + IS TABLE ADDR.
	JMP STC0
	COM
	JMP STC1
STC0,	ADA
	STATE
	ROR 1
	STC 11
	LDH 11
STC1,	AZE I
	JMP RET	/NO STATE CHANGE
	STC   10
	SET I 14
	ISTATE
	JMP   COPY	/SAVE STATE IF STATE=STTSVD=7
	STC   KSTF	/CLEAR KBDD FLLAG
	ADD   10
STC2,	STA
	STATE
	LDA I
	1400
	ESF
	LDA I
	JMP   FOO1
	STC   FOOSWT
	LIF 1
	JMP SCI
/STATE TRANSITION TABLES
/ORDERED BY THE CHARACTERS, THEN BY THE 
/CURRENT STATE. ENTRIES ARE HALFWORD.
/ENTRIES ARE OCTAL, BUT STATES ARE DECIMAL.
/TAKE CARE!!!!!
TH,	0101
	0110
	1110
	1201
	0101
	0101
	0101
TC,	1414
	0000
	0000
	0006
	0707
	0000
	0000
TS,	1615
	0006
	0700
	0606
	0706
	0000
	0000
/TRAP PROCESSOR SUBROUTINES
/ILLEGAL CHAR, GET ANOTHER
KERR,	CLR
	STC KSTF
/KBDA - OPR 13. ASCII INPUT COMMAND (8-BIT)
IKBDA,	STC CASE
/KBD - OPR 15
IKBD,	ADD KSTF
	AZE
	JMP KBDT
	ADD LINS
	ROR I 5	/WAIT BIT ON?/
	STC 0	/CLEAR THE AC
	LZE
	JMP IKBD	/LOOP UNTIL  CHAR IN
	JMP KBDX	/IMMEDIATE EXIT
/TYP - OPR 14
ITYP,	ADD ISVAC
	JMP TYPE
	JMP XP1
/TYPE ONE CHARACTER SUBROUTINE
FIFTY,
TYPE,	SET 10
	0
	STC 11
	LDA
	TFLG
	AZE
	JMP .-3
	ADD 11
	IOB
	TLS
	LDA I
ONE,	1
	STC TFLG
	JMP 10
/OKST OPR (12)
IOKST,	ADD KSTF
	AZE
	JMP XP2
	JMP XP1
/DO KEYBOARD, TRANSLATE, ECHO CHAR
/(OR CR,LF FOR CR) AND RETURN ONE OR
/TWO LINC CHARACTERS
/IF CASE IS NON-ZERO, SECOND CHARACTER IS STILL
/TO BE SENT TO PROGRAM.
/SAME CODE IS USED FOR ASCII AND LINC CODE INPUT, 
/DIFFERENCE IS THAT KTRNS RETURNS THE FULL ASCII CHAR 
/IN LNCODE, AND 0 IN CASE, WHILE IT RETURNS
/THE TRANSLATED CHARACTERS I FOR LINC CODE, WIHT
/CASE =0 IF A LOWER CASE CHAR, AND 23 IF U.C.
KBDT,	LDA
	CASE
	AZE I
	JMP KTRNS
	CLR
KBDR,	STC CASE
	STC KSTF
	ADD LNCODE
	JMP KBDX
/RETURN FROM TRANSLATION ROUTINE
/ECHO ASCII CHARACTER 8ICHR).  IF CHAR
/WERE A LINC EOM, ALSO ECHO A LINE FEED
KRET,	STC LNCODE
	STC CASE
	ADD ICHR
	JMP TYPE
	ADD   ICHR
	SAE I
	215	/IS IT A CR???
	JMP   .+3	/NO
	ADD M3	/MAKE IT A LF
	JMP TYPE	/YES, TYPE CR, LF
	LDA
	CASE
	AZE I
	JMP KBDR
KBDX,	STC ISVAC
	JMP XP1
/TRANSLATE CHAR IN ICHR TO LINC CODE
/RETURN TO P+1 IF ILLEGAL
/AND TO    P+2 IF OK, WITH THE LINC
/CHAR IN LNCODE, AND CASE = 0 IF L.C.
/AND = 23 IF U.C.
KTRNS,	ADD LINS
	BCL I
M17,	7760	/KBD OR KBDA?
	SAE I
	13
	JMP KT0	/KBD
	LDA 
	ICHR	/KDBA
	JMP KRET
/IS CHARACTER A LETTER? (RANGE 301-333)
KT0,	LDA I
	-332
	ADD ICHR
	APO I
	JMP KT1
	ADA I
	-300+332
	APO
	JMP KT1
/ADD 23 AND EXIT
KT2,	ADA I
K23,	23
	JMP KRET
/NOT A LETTER,IN SPECIALS TABLE?
LMODE
KT1,	SET I 15
	KTBL-1
	SET I 14
	-7
	LDA
	ICHR
KT1A,	SAE I 15
	JMP KT1R
	LDA 
	15
	ADA I
	30-KTBL
	JMP KT4
KT1R,	XSK I 14
	JMP KT1A
/NOT IN SPECIALS TABLE, INRANGE 243-272?
	ADA I
	-271
	APO I
	JMP KERR	/ILLEGAL CHAR, GET ANOTHER
	ADA I
	-243+272
	APO
	JMP KERR
KT4,	ROR 1
	ADA I
	TTAB+3777
	STC 14
	LDH 14
	AZE I
	JMP KERR
	ADA I
	-12
	AZE I
	CLR
	APO I
	JMP KRET
	ADD K23
	STC LNCODE
	ADD K23
	JMP KRET+1
KTBL,	212
	215
	240
	275
	333
	375
	377
/TABLE FOR TRANSLATING SPECIAL CHARACTER, EITHER
/IN FRANGE 243-272, OR SPECIAL CHARS FOUND IN KTBL.  FIRST
/ARE FOUND IN CHARACTER POSITION C-243.  SECOND ARE FOUND IN
/CHARACTER POSITION T+27, WHERE  T IS
/CODE IN KTBL.  A ZERO ENTRY INDICATES AN
/ILLEGAL H CHARACTER.  OTHER ENTRIES ARE CODED
/BY ADDING 23 TO L.C. CHARACTERS, AND STORING ACTI
/ACTUAL CODES FOR U.C. CHARS.
TTAB, 3410
  0527
  3000
  0000
  3206
  3107
  3312
  1314
  1516
  1720
  2122
  2301
  2426
  0411
  3525
/EXTEND INTERRUPT CHAIN - OPR 11
IXCHN,	ADD LINS+1
	STC INEXT
/ENTER XP2 IN EITHER PDP OR LINC MODE
XP2,	PDP	/RETURN TO P+2,
PMODE
	ISZ ISVPC
XP1,	PDP
	ISZ ISVPC
IRET,	LINC
LMODE
/RESTORE PROCESSOR STATUS AND GO
/CALL BY:
/   SET I 14
/    ASTATE   /RELEVANT STATE LOCATIONS
/   JMP GO
GOT,	IOB	/RETURN FROM TRAP
	IOF
	SET I 14
	TSTATE
GO7,	LDA
	STATE
	BCO I
	7
	AZE I	/IF STATE=STSVD=7, CLR STSVD
	STC STSVD
GO,	LDA I 14
	ADD   C4000	/CREATE AN OVERFLOW IF REQ.
	LDA I 14
	AZE
	AXO
	LDA I 14
	ESF
	LDA I 14
	ROR 14	/MZ
	LDA I 14
	ROR 3	/RESTORE FIELDS
	STH
	RL+4001	/RESOTRE IF
	STH
	R8+4001	/RESTORE IF FOR 8 MODE
	ADD   FORTY
	STH
	GO2+4000
	ROL 5
	BSE I
	40
	STH
	GO1+4000
GO2,	LDF
	LDA I 14
	SAE I
	JMP 0
	JMP .+3
	LDA
	2000
	STC RPC
GO1,	LDF	/RESTORE DF
	LDA I 14
	ROL I 1	/LINK
	APO
	JMP   R8
RL,	LDA I 14
	LIF 0
	DJR	/DISABLE JUMP  RETURN
	IOB
	ION
RPC,	0
/
R8,	LDA I 14
	LIF	/SET TO PROPER IF IN CODE ABOVE
	PDP
PMODE
	ION
	JMP I RPC
LMODE
/SAVE THE DEMO STATE, BY COPYING IN
/FROM C(14) TO DSV***
/CALL BY:
/   SET I 14
/    ASTATE
/   JMP COPY
/   ALL RETURNS
COPY,	SET 12
	0
	LDA
	STATE
	BCO
	STSVD	/STSVD=7 IF SAVED, 0 IF NOT
	SAE I
	7
	JMP CPYX
	STC STSVD	/SET STATE SAVED INDICATOR
	SET I 15
	DSTATE
	SET I 13
	-10
	LDA I 14
	STA I 15
	XSK I 13
	JMP .-3
CPYX,	CLR
	JMP 12
/START CURRENT DEMO USER, IN SAVED STATE, OR
/IN FRESH STATE, IF NO STATE SAVED
Y07,	ADD   STSVD
	AZE
	JMP Y07A
	STC INEXT
	SET I 14
	YSTATE	/FRESH STATE
	JMP GO
Y07A,	SET I 14
	DSTATE
	JMP   GO7
/INITIAL STATE
YSTATE=.-1
	0
	0
C1400,	1400
	0
	6020	/FIELDS 2,3
	6020	/START AT 20
	0
	0
/SOME STATE LOCATIONS
DSTATE=.-1
 0
 0
 0
 0
 0
 0
 0
 0
/OPERATE INSTRUCTION DISPACTH TABLE
IOPRT,	JMP XP1
	JMP XP1
	JMP XP1
	JMP XP1	/4-NOP
	JMP IRETV	/5-RETIREEVE
	JMP INDM	/6-NEXT DEOMO
	JMP IEDM	/7-END DEMO
	JMP XP1	/10-NOP
	JMP IXCHN	/11-EXTEND INT. CHAIN
	JMP IOKST	/12-KST
	JMP IKBDA	/13-ASCII KBD
	JMP ITYP	/14-TYPE
	JMP IKBD	/15-KBD
/INSTRUCTION TRAP PROCESSOR
/SAVE STATE FIRST
ITRAP,	ROR I 1
	STC ISVLNK
	SET I 14
	TSTATE
	JMP SVSUB1
	ROR 3
	STH
	RP5+4001
	ADD   FORTY
	STH
	IT1+4000
	STH
	RP2+4000
	ROL 5
	BSE I
FORTY,	40
	STH
	RP5+4000
	LDA I
M1,	-1
	ADD 140
	BSE I
	JMP
	STA
	10
	STA
	RP5+2
	STC ISVPC
IT1,	LDF
	LDA 10
	STC LINS
	LDA I 10
	STC LINS+1
	ADD 10
	STC RP0
	LDA I 10
	STC SVP2
	LDA I 10
	STC SVP3
	SET I 14	/IF IN DEMO AND STATE NOT SAVED
	TSTATE	/THEN SAVE IT
	JMP COPY
	LDF 1
/DISPATCH ON TRAPPED INSTRUCTION
DSPT,	ADD LINS
	BCL I
	37
	SAE I
	0500	/OPR?
	JMP ITAPE
	ADD LINS
	BCL I
	7760
	ADA I 
	JMP IOPRT-1
	STC   RPC
	JMP   RPC-2
ITAPE,	SAE I
	0700	/TAPE COMMAND
	JMP XP1
	JMP SUNIT
	ADD ISVEFS
	BCL I	/CLEAR TAPE INST TRAP
C400,	400
	ESF
	LDA
	LINS
	BCL I
	7770
	ADA I
	JMP TTT
	STC TTT-1
	STC MTBF	/MTB FLAG (0= NOT MTB)
	STC WRTF
	ADD LINS+1
	ROL 3
	STC SBN	/USED IN COMMON BY SOME ROUTINES
	JMP TTT	/REPLACED BY AN APPROPRIATE JMP
TTT,	JMP TTR1
	JMP TTR1
	JMP TTR1
	JMP TT1
	JMP TCHK1
	JMP TCHK
	JMP TCHK
	JMP TTR1
TT1,	ADD ONE	/MTB COMMAND
	STC MTBF
	JMP TTR1
/CHECK UPPER AND LOWER BLOCKS OF A
/WRITE AND CHECKKGROUP COMMAND
TCHK1,	ADD SBN
	BCL I
	7770
	JMP TBLK
TCHK,	JMP TBLK	/CHECK START BLOCK OF A COMMAND
	ADD ONE
	STC WRTF
	JMP TTR1	/EXECUTE THE TAPE COMMAND
/TEST ONE BLOCK TO SEE THAT IT IS IN THE
/RANGE 110-125
TBLK, ADD LINS+1
	BCL I
	7000
	ADD M107
	APO
	JMP TFAIL
	ADA I
	-134+107	/WRITE PROTECT ALL BLKS BUT 110-125
	APO I
	JMP TFAIL
ELEVEN,	CLR
	JMP 0
/IF ILLEGAL WRITE, SET BLOCK NUMBER IN ERROR MESSAGE, AND DO IT
TFAIL,	SET I 14
	ERR6T+3777
	JMP SBLOCK
	JMP STOPT
	6	/"ILLEGAL WRITE AT BLOCK ---"
/SET BLOCK NUMBER INTO ERROR MESSAGE
SBLOCK,	SET 16
	0
	SET I 15
M3,	-3
SBN1,	LDA
	SBN
	ROL 3
	STA I
SBN,	0
	BCL I
	7770
	ADD   C4060
	STH I 14
	XSK I 15
	JMP SBN1
	JMP 16
LINS,	0
	0
	JMP 0
/EXECUTE THE COMMAND, MTBS FIRST, THEN
/THE COMMAND ITSELF, IN PLACE
TTR1,	LDA I
	JMP FOOS	/FIRST INTERRUPT GOES HERE
	JMP SETTIM
/CHECK THE TAPE SUBROUTINE
/SETS CONTROL IN MAINTENANCE MODE
/ISSUES A MTB, AND CHECKS FOR SELECTION,
/AND APPROPRIATE WRITE MODE
/THEN GOES OFF TO DISPLAY WITH INT
/ENABLED WAITING FOR THE TAPE.
/REMAINDER OF TAPE PROCESSING IS UNDER
/INTERRUPT CONTROL
CKSUB,	ADD LINS
	BCL I
	7067	/0700+U ONLY
	ADD	GO7+3		/NOW IT IS A CHK  (CHANGED FROM ADD THREE)
	STC LINS
	XOA
	BCL I
	7770
	ADD FIFTY
	AXO
	ADD FORTY
	STC CKX1
	JMP LINS	/START WITH AN MTB COMMAND
	LDA I
	5000
	IOB
	6151	/SET TAPE IR=12
	IOB
	6154	/READ THE REGISTER
	ROR I 2
	LZE I	/1=UNIT LE SELECTED
	JMP TTRER	/UNIT NOT SELECTED
	APO
	JMP CKX	/WRITE ENABLED
	LDA I	/NOT ENABLED, NEEDED?
WRTF,	0
	AZE I
	JMP CKX
	JMP STOPT
	12	/"SET WRITE ENABLED"
CKX,	LDA I
CKX1,	0
	AXO
	LDA
	2000
	STC SVB10
	SET I 12
	-3
	IOB
	ION
	LIF 1
	JMP TAPDSP
TTRER,	JMP STOPT
SEVEN,	7	/"NOT SELECTED"
/SET UP UNIT NUMBER
SUNIT,	ADD LINS
	ROR I 4
	XOA
	ROL I 1
	BCL I
	7770
	ADA I
C4060,	4060
	STA
	UNITM
	CLR
	JMP 0
SETTIM,	STC FOOSWT
	ADD C7000
	STC TIMER
	JMP 0
/TAPE INTERRUPT SERVICE
TAPINT,
FOOSWT,	JMP .
FOO1,	ROR I 6
	BCL I
	100
	STC SVAXO
	JMP RET
FOOS,	LDA I
MTBF,	0
	AZE
	JMP TPXT
	LDA I
	JMP FOOS1
	JMP FOORET
TPXT,	LDA I
SVB10,	0
	STA
	2000
	LDA I
	JMP FOO1
	STC FOOSWT
	JMP XP2
FOOS1,	JMP TACTST
	STA
	NTAC
	APO I
	COM
	STC OTAC
	ADD JF2	/JMP FOOS2
FOORET,	JMP SETTIM
	JMP LINS
	JMP RET
FOOS2,	JMP TACTST
	APO
	COM
	ADD OTAC
	AZE			/CHANGED FROM APO
	JMP   FOOS2A
	XSK I 12
	JMP   FOOS1+3
	JMP BADB
FOOS2A,	TAC
	JMP FOOS1+1
/BAD BLOCK HANDLING
BADB,	LDA I
NTAC,	0
	COM
	ADD LINS+1
	ROL 3
	STC   SBN
	SET I 14
	ERR10T+3777
	JMP SBLOCK
	JMP STOPT
	10	/"BAD BLOCK --- "
/BADT TAPE MESSAGE
BADT,	JMP STOPT
	11	/"BAD TAPE"
TACTST,	TAC
	AZE
	JMP 0
TPIGO,	JMP SETG
	LDA I
	LIF 0
	STA I 16
	LDA I
	JMP TWAIT
	STA I 16
	DJR
RP5,	LDF
	LIF
	JMP .
TWAIT,	JMP SETG
	LDA I
SVP2,	0
	STA I 16
	LDA I
SVP3,	0
	STA I 16
	LDA I
	JMP TPXT
	JMP SETTIM
	JMP RET
SETG,	SET I 16
RP0,	0
RP2,	LDF
	JMP 0
/STOP THE MOVING TAPE
STOPT,	SET 10
	0
	LDA I
C4000,	4000
	IOB
	6152	/ISSUE A TAPE PRESET
	CLR
	AXO
	ADD C1400
	ESF
	LDF 0
	LDA 10
	LIF 1
	JMP Y01
/
/
/THE FOLLOWING CODE IS PAGED IN WITH
/THE RESIDENT INDEX.  STATE 7 ENTRY
/WILL ASSURE THAT IT IS IN PLACE
/ALONG WITH THE INDEX.  
/
/CONTAINED IS THE CODE FOR OPR 5 (IRETV),
/OPR 6 (INDM), AND OPR 7 (IEDM).  THESE 
/ARE ONLY CALLED FROM DEMO PROGRAMS.
	*1720
/RETRIEVE AN INDEX ENTRY
/
/CALL:  OPR 5
/       PARAMADDR
/       (ALL RETURNS)
/
/       PARAMADDR,  TEXT "FULLPNAM"
/                   5757
/                    5757
/                  5757
/                  5757
/
/THE LAST FOUR WORDS WILL BE REPLACED
/WITH THE SIGNIFICANT INFORMATION IFF
/THE SEARCH IS SUCCESSFUL
/
IRETV,	ADD   LINS+1
	ADD   M1
	BSE I
	2000
	STC   12
	SET I 11
	-4
	SET I 10
	ZPNAME-1
	ADD   IT1	/AN APPROPRIATE FIELD INSTRUCTION
	STA
	.+2
	STC   RRTX+1
LOOP,	LDF
	LDA I 12	/MOVE PC+1,+2,+3,+4
	LDF 1
	STA I 10	/TO ZPNAME,+1,+2,+3
	XSK I 11
	JMP   LOOP
	LDA I
	LIF 0	/SET UP A RETURN IN LOC. 4,5 OF
	STA	/OF BANK 1
	2004
	LDA I
	JMP   RRTX
	STA
	2005
	LDF 0
	LIF 1
	JMP   CALLDL	/GO TO BANK 1 TO CALL THE
		/DIRECTORY SEARCH ROUTINE
RRTX,	JMP   RRRT	/NOT FOUND
	LDF	/SET TO PROPER LDF ABOVE
	BCL I
	6000	/MAKE POINTER A IF REFERENCE
	ADD   THREE
	STC   10
	SET I 11
	-4
	LDA I 10
	STA I 12
	XSK I 11
	JMP   .-3
RRRT,	LDF 1
	JMP   XP2
/
/NEXT DEMO
/
INDM,	ADD ELEVEN
/
/EXIT DEMO
/
IEDM,	ADD TWO
	JMP   STC2
M107,	7670
/
/
/END OF BANK 0 CODE	/
/



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