Google
 

Trailing-Edge - PDP-10 Archives - bb-kl11f-bm_tops20_v7_0_atpch1_19 - autopatch/cobscn.c12
There are 2 other files named cobscn.c12 in the archive. Click here to see a list.
 REP 22/1	;12C1

 WIT
	;MJC	21-JUN-85	[1601] Remove FORTRAN edit numbers
 REP 23/7	;12C2
	XJBFF:	BLOCK	1		;[1632] Holds .JBFF across compiles
	XJBREL:	BLOCK	1		;[1632] Holds .JBREL across compiles
 WIT
	XJBFF:	BLOCK	1		; Holds .JBFF across compiles
	XJBREL:	BLOCK	1		; Holds .JBREL across compiles
 REP 40/9	;12C3
		GETNM			;[1612] Get the name of the program
		MOVE	T2,T1		;[1612] Private name is name returned by GETNM%
 WIT
		GETNM			; Get the name of the program
		MOVE	T2,T1		; Private name is name returned by GETNM%
 REP 63/9	;12C4
		MOVE	T1,.JBFF	;[1632] Save value of .JBFF across compile
		MOVE	T2,.JBREL	;[1632] Save value of .JBREL across compile
		DMOVEM	T1,XJBFF	;[1632]
 WIT
		MOVE	T1,.JBFF	; Save value of .JBFF across compile
		MOVE	T2,.JBREL	; Save value of .JBREL across compile
		DMOVEM	T1,XJBFF	;
 REP 16/10	;12C5
		MOVEI	T1, .FHSLF	;[1600] OWN FORK
		CIS%			;[1600] CLEAR INTERUPT SYSTEM
		MOVE	T2, [LEVTAB,,CHNTAB] ;[1600] ADDR OF LEVEL TAB & CHAN TAB
		SIR%			;[1600] SET INTERUPT ADDRESSES
		EIR%			;[1600] ENABLE INTERUPT SYSTEM

		MOVE	T2, .JBREL	;[1600] END OF CORE (REFERENCES PG 0)
		ORI	T2, 777		;[1612] END OF PAGE-IFY
		MOVEI	T3, 1777	;[1600] START AT END OF PAGE 1
	APR.1:	CAMLE	T3, T2		;[1612] DONE YET?
		 JRST	APR.2		;[1612] YES, ACTIVATE INTERUPTS
		SKIP	(T3)		;[1612] NO, REFERENCE THIS PAGE
		ADDI	T3, 1000	;[1612] BUMP UP 1 PAGE
		JRST	APR.1

	APR.2:	MOVE	T2,[CHNMSK]	;[1600] ARM PROPER CHANNELS
		AIC%			;[1600] ENABLE INTERUPT CHANNELS
		POPJ	SREG,		;[1600]

	; [1600] Blocks for TOPS-20 interupt system
	; [1600]  Note: all interupts happen at level 1

	LEVTAB:	LEV1PC			;[1600] ADDR OF LEVEL 1 PC
		LEV2PC			;[1600] ADDR OF LEVEL 2 PC
		LEV3PC			;[1600] ADDR OF LEVEL 3 PC

		RELOC			;[1600] TO THE LOWSEG

	LEV1PC:	BLOCK	1		;[1600] LEVEL 1 PC
	LEV2PC:	BLOCK	1		;[1600] LEVEL 2 PC
	LEV3PC:	BLOCK	1		;[1600] LEVEL 3 PC

		RELOC			;[1600] BACK TO PURE STORAGE

	CHNMSK==1B<.ICPOV>!1B<.ICIRD>!1B<.ICIWR>!1B<.ICNXP> ;[1600] CHANNEL MASK

	CHNTAB:	PHASE	0		;[1600] *** BEWARE! ***

	;[1600] The value of  "." is  now the  current offset  into the  table
	;[1600] instead of .-CHNTAB so you  are allways <n>-. words away  from
	;[1600] entry <n> instead of <n>-<.-CHNTAB>

		BLOCK	.ICPOV-.	;[1600]  (0-8)
		1,,POVTRP		;[1600]  (9) PDL OVERFLOW
 WIT
		MOVEI	T1, .FHSLF	; OWN FORK
		CIS%			; CLEAR INTERUPT SYSTEM
		MOVE	T2, [LEVTAB,,CHNTAB] ; ADDR OF LEVEL TAB & CHAN TAB
		SIR%			; SET INTERUPT ADDRESSES
		EIR%			; ENABLE INTERUPT SYSTEM

		MOVE	T2, .JBREL	; END OF CORE (REFERENCES PG 0)
		ORI	T2, 777		; END OF PAGE-IFY
		MOVEI	T3, 1777	; START AT END OF PAGE 1
	APR.1:	CAMLE	T3, T2		; DONE YET?
		 JRST	APR.2		; YES, ACTIVATE INTERUPTS
		SKIP	(T3)		; NO, REFERENCE THIS PAGE
		ADDI	T3, 1000	; BUMP UP 1 PAGE
		JRST	APR.1

	APR.2:	MOVE	T2,[CHNMSK]	; ARM PROPER CHANNELS
		AIC%			; ENABLE INTERUPT CHANNELS
		POPJ	SREG,		;

	;  Blocks for TOPS-20 interupt system
	;   Note: all interupts happen at level 1

	LEVTAB:	LEV1PC			; ADDR OF LEVEL 1 PC
		LEV2PC			; ADDR OF LEVEL 2 PC
		LEV3PC			; ADDR OF LEVEL 3 PC

		RELOC			; TO THE LOWSEG

	LEV1PC:	BLOCK	1		; LEVEL 1 PC
	LEV2PC:	BLOCK	1		; LEVEL 2 PC
	LEV3PC:	BLOCK	1		; LEVEL 3 PC

		RELOC			; BACK TO PURE STORAGE

	CHNMSK==1B<.ICPOV>!1B<.ICIRD>!1B<.ICIWR>!1B<.ICNXP> ; CHANNEL MASK

	CHNTAB:	PHASE	0		; *** BEWARE! ***

	; The value of  "." is  now the  current offset  into the  table
	; instead of .-CHNTAB so you  are allways <n>-. words away  from
	; entry <n> instead of <n>-<.-CHNTAB>

		BLOCK	.ICPOV-.	;  (0-8)
		1,,POVTRP		;  (9) PDL OVERFLOW
 REP 66/10	;12C6
		BLOCK	.ICNXP-.	;[1600]  (18-21)
		1,,NXPTRP		;[1600]  (22) NON-EXISTENT PAGE

		BLOCK	^D35-.		;[1600]  (23-35)
		DEPHASE			;[1600]  *** END OF PHASE 0 ***
 WIT
		BLOCK	.ICNXP-.	;  (18-21)
		1,,NXPTRP		;  (22) NON-EXISTENT PAGE

		BLOCK	^D35-.		;  (23-35)
		DEPHASE			;  *** END OF PHASE 0 ***
 REP 2/11	;12C7
	; NEW [1600] /PLB
 WIT
	; NEW  /PLB
 REP 42/11	;12C8
		MOVEM	T3,APRSV3	;[1612] STORE T3
 WIT
		MOVEM	T3,APRSV3	; STORE T3
 REP 5/12	;12C9
	NXPTRP:	DMOVEM	T1, APRSV1	;[1600] SAVE REGS T1 & T2
		MOVEI	T1, .FHSLF	;[1600] US
		GTRPW%			;[1600] GET TRAP WORD
		JUMPE	T1, NXP.0	;[1600] NO ERROR ?
 WIT
	NXPTRP:	DMOVEM	T1, APRSV1	; SAVE REGS T1 & T2
		MOVEI	T1, .FHSLF	; US
		GTRPW%			; GET TRAP WORD
		JUMPE	T1, NXP.0	; NO ERROR ?
 REP 17/12	;12C10
	NOTRAP:	DMOVE	T1, APRSV1	;[1600] GET REGS BACK
		DEBRK%			;[1600] RETURN FROM TRAP
					;[1600] FALL THRU ON ERROR
		DMOVEM	T1, APRSV1	;[1600] SAVE REGS T1 & T2
 WIT
	NOTRAP:	DMOVE	T1, APRSV1	; GET REGS BACK
		DEBRK%			; RETURN FROM TRAP
					; FALL THRU ON ERROR
		DMOVEM	T1, APRSV1	; SAVE REGS T1 & T2
 REP 24/12	;12C11
	NXP.1:	HRROI	T2, [ASCIZ \Illegal Memory Reference\] ;[1600] GENERIC NXM
		TLNE	T1, (PF%WRT)	;[1600] PAGE FAIL ON WRITE?
 WIT
	NXP.1:	HRROI	T2, [ASCIZ \Illegal Memory Reference\] ; GENERIC NXM
		TLNE	T1, (PF%WRT)	; PAGE FAIL ON WRITE?
 REP 68/12	;12C12
	APRTR2:	DMOVE	T1,APRSV1	;[1612] RESTORE REGS
		MOVE	T3,APRSV3	;[1612] FOR CRASH
 WIT
	APRTR2:	DMOVE	T1,APRSV1	; RESTORE REGS
		MOVE	T3,APRSV3	; FOR CRASH
 REP 197/13	;12C13
		HRROI	T1,[ASCIZ \COBOL:	\] ;[1603] No square bracket
 WIT
		HRROI	T1,[ASCIZ \COBOL:	\] ; No square bracket
 REP 203/13	;12C14
	\]				;[1603] No square bracket
 WIT
	\]				; No square bracket
 REP 211/13	;12C15
		DMOVE	T1,XJBFF	;[1632] Restore value of .JBFF
		MOVEM	T1,.JBFF	;[1632]
		MOVEM	T2,.JBREL	;[1632] Restore value of .JBREL
 WIT
		DMOVE	T1,XJBFF	; Restore value of .JBFF
		MOVEM	T1,.JBFF	;
		MOVEM	T2,.JBREL	; Restore value of .JBREL
 REP 31/33	;12C16
		 ERJMP	[MOVE	T1,XJBFF	;[1632] Restore value of .JBFF
			MOVEM	T1,.JBFF	;[1632]
			MOVE	T1,XJBREL	;[1632] Restore value of .JBREL
			MOVEM	T1,.JBREL	;[1632]
 WIT
		 ERJMP	[MOVE	T1,XJBFF	; Restore value of .JBFF
			MOVEM	T1,.JBFF	;
			MOVE	T1,XJBREL	; Restore value of .JBREL
			MOVEM	T1,.JBREL	; 
 SUM 255830