DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC3600/RC7000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC3600/RC7000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦87dd44e43⟧ TextFile

    Length: 5632 (0x1600)
    Types: TextFile
    Notes: RCSL-43-GL-
    Names: »YMSNO«

Derivation

└─⟦45bd0f8dd⟧ Bits:30000464 DOMUS disk image
    └─ ⟦this⟧ »/YMSNO« 
└─⟦6dbcc9c03⟧ Bits:30000463 DOMUS disk image
    └─ ⟦this⟧ »/YMSNO« 
└─⟦a2e222af0⟧ Bits:30001626 DOMUS disk image
    └─ ⟦this⟧ »/YMSNO« 

TextFile


;					RCSL:	43-GLXXXX
;					AUTHOR:	CHH/FRS
;					EDITED:80.01.25	

















;		MSNOP
;		MONITOR AND INTERRUPT SNOOPER

















; KEYWORD:	MUS, MONITOR, INTERRUPT, SNOOPER, LISTING.

;ABSTRACT:	SNOOPS ALL MONITOR FUNCTIONS AND INTERRUPTS
;		AND SAVES CUR, PSW, COROUT, DEVICE CODE
;		OR MONITOR CALL, AC0, AC1, AC2, CURRENT
;		MESS BUFFER IN A CYCLIC BUFFER IN CORE.
;		IF PSW < 62 THE PROGR. WILL GOING IN HALT.
;		THE PROGRAM WILL ALSO
;		COMPARE UP TO 20 CONST WITH ACTUELL
;		CONST IN CORE .
;		ASCII PAPER TAPE  RCSL 43-GLXXXX.
;		REL. BIN. DC001 RCSL 43-GLXXXX.
;		REL. BIN. DC101 RCSL 43-GLXXXX.

«ff»

	.TXTM	1		; TEXT BYTES PACKED LEFT/RIGHT
	.TITLE	MSNOP
	.NREL
	.RDX	10

	RECS	= 64		; NO OF RECORDS IN THE BUFFER

	.RDX	8

S0000:				; START OF PROGRAM DESCRIPTION
	1B0+1			; PSPEC, OWN PROCESS DESCRIPTOR
	A0000			; PSTART
	0			; CHAIN
	P0000-S0000		; SIZE
	.TXT	.MSNOP.		;
	.TXT	/800125 MSNOP 00.01/; IDENT

A0000:				;
	INTDS			; DISABLE INTERRUPT
	LDA	0	AR100	; AC0 := SEARCHING INSTR.
	LDA	2	1	; AC2:= INTR RESPO. ADDR
	LDA	1	MIN1	; AC1:=MINIMAL VALUE FROM INTR.RESPO.
	JSR		AR10	;
	LDA	1	A1200	;
	STA	1	+1,2	; SAVE 'A0100' IN RESTO 2
	STA	2	A1010	;
	LDA	0	AR200	;
	LDA	2	3	; AC2:= ADDR MONITOR CALL
	LDA	1	MIN2	;
	JSR		AR10	;
	LDA	1	A1400	;
	STA	1	+1,2	; SAVE A0200'S ADDR IN RESTO 4
	STA	2	A1310	;
	INTEN			; ENABLE INTERRUPT
	LDA	2	CUR	;
A0010:				;
	STOPPROCESS		; STOPPROCESS
	JMP		.-1	;
AR10:
	STA	3	A1300	;
	ADD	1,2		; AC2:=MIN+ADDR
	INC	2,2		;
	LDA	3	+0,2	;
	SUB#	0,3	SZR	; IF AC2(0) <> AC0 THEN
	JMP		.-3	; GOTO 1;
	LDA	0	A1100	; ELSE FOUND INSTR
	STA	0	+0,2	; SAVE JMP@.+1 IN RETSO 1 + 3
	JMP	@	A1300	;
«ff»

A0100:				;
	JSR		B0000	; SAVE VARIABLES
AR100:  LDA	3	TABLE	; RESTORE RESTO 1
	ADD	1,3		; RESTORE RESTO 2
	LDA	2	A1010	;
	JMP		+2,2	; RETURN TO INTR.RESPO.


A0200:				;
	LDA	1	.1B0	; SET BIT 0 FOR MONITOR CALL
	ADD	2,1		; ADD MONITOR CALL NO
	JSR		B0000	; SAVE VARIABLES
AR200:  LDA	1	.EVENT	;
	ADD	3,1		;
	LDA	2	A1310	;
	JMP		+2,2	;


B0000:				;
	STA	3	A1300	; SAVE RETURN
	STA	0	A1000	; SAVE AC0
	LDA	2	B1300	; GET RECORD ADDRESS
	LDA	3	CUR	;
	STA	3	+0,2	; SAVE CUR
	STA	1	+3,2	; SAVE DEVICE CODE
	LDA	0	0	;
	STA	0	+1,2	; SAVE PSW
	LDA	0	COROUT	;
	STA	0	+2,2	; SAVE COROUT
	LDA	0	AC0,3	;
	STA	0	+4,2	; SAVE CUR.AC0
	LDA	0	AC1,3	;
	STA	0	+5,2	; SAVE CUR.AC1
	LDA	0	AC2,3	;
	STA	0	+6,2	; SAVE CUR.AC2
	LDA	0	BUF,3	;
	STA	0	+7,2	; SAVE BUF
	LDA	0	.8	;
	ADD	0,2		;
	STA	2	B1300	; B1300:=NEXT RECORD
	LDA	0	0	; IF PSW < 62 THEN
	LDA	2	62	;
	ILS	0,2		;
	HALT			; HALT;
	LDA	3	CPOINT	;
CCHECK: LDA	2	0,3	;
	MOV	2,2	SZR	;
	JMP	ICOMP		; COMPARE;
	LDA	3	CUR	;
	LDA	0	A1000	; GET AC0
	DSZ		B1100	; IF BUFFER FULL THEN
	JMP   @		A1300	;  BEGIN
	LDA	2	B1000	;
	STA	2	B1100	;  B1100=NO OF RECORDS
	LDA	2	B1200	;
	STA	2	B1300	;  B1300=START OF BUFFER
	JMP   @		A1300	; END; RETURN;

«ff»

ICOMP:
	LDA	2	+0,2	; IF PATTERN <> ADDR.PATTERN THEN
	LDA	0	+1,3	;
	SUB#	0,2	SZR	;
	HALT			; HALT;
	LDA	0,	.2	;
	ADD	0,3		; AC3:=AC3+2;
	JMP	CCHECK		; GOTO CHECK TERMINATOR;
«ff»



A1000	: 0			;  SAVE AC0
A1010	: 0			; RETURN TO INTERRUPT RESPONSE
A1100	: JMP   @	.+1	;
A1200	: A0100			;
A1300	: 0			;
A1310	: 0			; RETURN TO MONITOR FUNCTIONS
MIN1	: 14			; MINIMAL VALUE INTR.RESPO
MIN2	: 6			; MINIMAL VALUE MONITOR CALL
A1400	: A0200			;


	CPOINT	: A1500		; CHECK RECORD POINTER
A1500 : 	0		; ADDR X 
	      1		; PATTERN Y
		0		; ADDR X
	     1015		; PATTERN Y
		3		; ADDR X
	     1015		; PATTERN Y
		4		; ADDR X
	     1015		; PATTERN Y
		5		; ADDR X
	     1015		; PATTERN Y
		6		; ADDR X
	     1015		; PATTERN Y
	        7		; ADDR X
	     1015		; PATTERN Y
	       10		; ADDR X
	     1015		; PATTERN Y
		0		; TERMINATOR

B1000	: RECS			; NO OF RECORDS
B1100	: RECS			; ACTUAL NO OF REC. LEFT IN BUFFER
B1200	: .+2			; POINTER TO BUFFER
B1300	: .+1			; POINTER TO NEXT RECORD
	  .BLK	10*RECS		; BUFFER
	B1300+1			; START OF BUFFER
«ff»
;	PROCESS DESCRIPTION

P0000:				; START OF PROCESS DESCRIPTION
	0			; NEXT
	0			; PREV
	0			; CHAIN
	P9999-P0000		; SIZE
	.TXT	.MSNOP.		; NAME
	P0000+EVENT		; EVENT, FIRST
	P0000+EVENT		; EVENT, LAST
	0			; BUFFER, FIRST FREE
	S0000			; PROG, PROGRAM DESC START
	0			; STATE,RUNNING
	0			; TIMER
	1B6			; PRIORITY
	A0010			; BREAK ADDRESS
	0			; AC0
	0			; AC1
	0			; AC2
	0			; AC3
	A0000*2			; PSW
P9999:				; END OF PROCESS DESCRIPTION
	.END	P0000
«ff»
«nul»