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

⟦64eb53d2e⟧ TextFile

    Length: 4096 (0x1000)
    Types: TextFile
    Names: »YPPX2«

Derivation

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

TextFile

.TXTM 1
.RDX 10
.TITL PPX02
.NREL

; *** TELETYPE PUNCH DRIVER ***

PHEAD:	1B0+1B1+1B7+1			; PROGRAM SPECIFICATION
	PINIT				; START
	0				; CHAIN
	PDES-PHEAD			; SIZE
.TXT .PTP<0><0>.			; NAME

_PINIT:	SUB	1,1			; BREAK:
	MOVZL	0,0	SNC		; IF -. POWER THEN
	STA	1	RESERVER,2	; RESERVER.CUR:=0;
PNEXT:	NEXTOPERATION			; START:
	SETRESERVATION			; +0 CONTROL
	JMP	PCONTR			; +1 IRR
	STA	0	PMODE,2		; SAVE MODE
	LDA	0	.1		; DISABLE INTR FOR TTO
	SKPBZ	9			;
	JMP	.-1			;
	MSKO	0			;
POUT:	LDA	1	ADDRESS,2	; REPEAT
	GETBYTE				;   GETBYTE;
	LDA	3	PMODE,2		;
	MOV	3,3 SNR			; IF MODE <> 0 THEN
	JMP	PJDOA			; BEGIN
	MOVZS	0,1			; 
	ADD	1,1 SZR			;   PARITY:=PARITY(CHR);
	JMP	.-1			;
	MOVCR	3,3 SNC			;   IF MODE=EVEN THEN
	ADDOR	3,3			;   PARITY:=-,PARITY;
	MOVS	3,3			;   CHR:=CHR ADD PARITY SHIFT 7;
	ADD	3,0			; END;
PJDOA:	LDA	1	.127		;   IF CHAR = TTYOFF THEN
	AND	0,1			;
	LDA	3	.15		;
	SUB#	1,3 SZR			;   BEGIN
	JMP	PKDOA			;     OUTCHAR(CHAR);
	JSR	PDOAS,2			;     OUTCHAR(TTYON);
	LDA	0	.14		;   END;
PKDOA:	JSR	PDOAS,2			;   ELSE OUTCHAR(CHAR);
	ISZ	ADDRESS,2		;   ADDR:=ADDR+1;
	DSZ	COUNT,2			;   COUNT:=COUNT-1;
	JMP	POUT			; UNTIL COUNT = 0;
PDONE:	SUB	0,0			;
	MSKO	0			; ENABLE INTR FOR ALL
	RETURNANSWER			; SENDANSWER;
	JMP	PNEXT			; GOTO NEXTOPERRATION;

POFFL:	SUB	0,0			; ENABLE TTY INTR;
	MSKO	0			;
	LDA	0	.1B11		; STATUS:=EM;
	JMP	PDONE+2			;

«ff»

PCONTR:	MOV	0,0 SNR			; CASE MODE OF
	JMP	PDONE			;   SENSE:;
	LDA	1	.4		;
	AND#	0,1 SZR			;   POSITION:;
	JMP	PDONE			;
	LDA	1	.1		;
	SKPBZ	9			;
	JMP	.-1			;   OPEN,CLOSE:DISABLE INTR;
	MSKO	1			;
	LDA	1	.8		;
	AND#	0,1 SZR			;   OPEN:
	JMP	PCLOSE			;   BEGIN
	LDA	0	.14		;     SET TTY ON;
	JSR	PDOAS,2			;     
	JSR	PNULL			;     PUNCH NULL;
	JMP	PDONE			;   END;
PCLOSE:					;   CLOSE:
	JSR	PNULL			;   BEGIN
	LDA	0	.15		;     PUNCH NULL;
	JSR	PDOAS,2			;     SET TTY OFF;
	JMP	PDONE			;   END;
					; GOTO DONE;
PNULL:	STA	3	PRET1,2		; PROCEDURE PUNCH NULL;
	LDA	1	.128		; BEGIN
	STA	1	COUNT,2		;
	SUB	0,0			;   FOR I:=1 STEP 1 TO 128 DO
	JSR	PDOAS,2			;   OUTCHAR(NULL);
	DSZ	COUNT,2			;
	JMP	.-3			;
	JMP@	PRET1,2			; END;

.14	:	14
«ff»

PDES:					; PROCESS DESCRIPTOR
	0				; NEXT
	0				; PREV
	0				; CHAIN
	PTOP-PDES			; SIZE
.TXT .PTP<0><0>.			; NAME
	PDES+EVENT			; EVENT
	PDES+EVENT			; EVENT
	0				; BUF
	PHEAD				; PROG
	0				; STATE
	0				; TIMER
	1B0+1B1+1			; PRIOR
	PINIT				; BREAK
	PDES				; PDES
	0				; AC1
	PDES				; AC2
	0				; AC3
	PINIT*2				; PSW
	0				; SAVE
	0				; BUF
	0				; ADDRESS
	0				; COUNT
	0				; RESERVER=0
PMODE=.-PDES				; MODE
	0				;
	0				; CONV=0
PRETURN=.-PDES				; RETURN FROM OUTCHAR
	0				;
PRET1=.-PDES				; RETURN1
	0
PDOAS=.-PDES				; OUTCHAR:
	STA	3	PRETURN,2	; PDOAS:
PDC:	SKPBZ	9			; IF TTO NOT BUSY THEN
	JMP	PDA			; BEGIN
	SKPBN	8			; IF TTI.DONE <> 0 THEN
	JMP	POFFL			; GOTO OFFLINE;
PDB:	DOAS	0	9		; PUTBYTE(TTO);
	JMP@	PRETURN,2		; RETURN;
PDA:	LDA	1	.0		; END;
	LDA	2	.1		;
	WAITINTERUPT			; WAIT 20 MS
	JMP	PDC			;
PTOP:
					; TOP OF PROCESS DESCRIPTOR
.END PDES 
«ff»
«nul»