|
|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC3600/RC7000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC3600/RC7000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 7168 (0x1c00)
Types: TextFile
Notes: RCSL-43-AA-
Names: »YPANE«
└─⟦45bd0f8dd⟧ Bits:30000464 DOMUS disk image
└─⟦this⟧ »/YPANE«
└─⟦6dbcc9c03⟧ Bits:30000463 DOMUS disk image
└─⟦this⟧ »/YPANE«
└─⟦a2e222af0⟧ Bits:30001626 DOMUS disk image
└─⟦this⟧ »/YPANE«
; RCSL: 43-AA XXX
; AUTHOR: HEJ/FRS
; EDITED: 81.05.27
; PANEL
; KEYWORDS: MUS, UTILITY.
; ABSTRACT: THIS PROGRAM IS USED FOR LOOKUP
; AND CHANGING OF LOCATIONS IN RC3600 MEMORY.
; ASCII SOURCE: RCSL: 43-AA XXX
«ff»
; RCSL: 43-AA XXX
; PANEL
; INPUT: <ADR> <OLD> <NEW>
;
; FUNCTION: IF CORE(ADR) = OLD THEN CORE(ADR):= NEW
;
; OUTPUT: ADR:<ADR> OLD/NEW <CORE(ADR)> ... <CORE(ADR+7)>
;
;
; ALL VALUES ARE OCTAL.
; ADR MUST BE A WORD ADDRESS, AND NOT PAGE 0 (20-37).
;
;
;
;
; EXAMPLE:
;
; LOOKUP THE VALUES IN ADDR 2345 - 2354.
; AND CHANGE 2345 TO 4444.
;
;
; >PANEL
; 2345
; ADR:002345 OLD:000777 055031 034103 000414 055031 034104 000072 006007
; 2345 777 4444
; ADR:002345 NEW:004444 055031 034103 000414 055031 034104 000072 006007
;
;
; REVISIONS:
.TITLE PAN01 ; 1981.05.27 FRS
«ff»
;
; INPUT: <ADR><SP><OLD><SP><NEW> ALL VALUES ARE OCTAL
; OUTPUT: ADR: <ADR> OLD/NEW: <CONTENTS OF CORE(ADR:ADR+7)>
; ADR MUST BE A WORD ADDRESS AND NOT PAGE 0 ( 20-37)
;
.NREL
.TXTM 1
.RDX 10
DPROG: 1
DSTRT
0
DPROC-DPROG
.TXT .PAN01. ; PAN<REVISION> TO SAVE SPACE
DSTRT: ;START: BREAK:
LDA 1 .1 ; INPUT
STA 1 MS0 ;
LDA 0 LINEX ;
JSR OPCOM ; OPIN(LINE); OPWAIT(LENG)
SUBO 0,0 ;
STA 0 P ; P:= 0
LDA 1 ADRX ;
STA 1 VALX ;
JSR READOCTAL; ADR
JSR READOCTAL; OLD
JSR READOCTAL; NEW
LDA 1 .3 ;
STA 1 MS0 ; OUTPUT
LDA 0 TEXT1 ;
JSR OPCOM ; OPMESS(ADR:)
LDA 1 ADRX ;
STA 1 VALX ; VALUE:= ADR
JSR UD ; OUTOCTAL(ADR)
LDA 1 OLD ;
LDA 0 TEXT3 ;
LDA 2 ADR ;
LDA 3 .1B12 ; NEXTADDR:=ADDR+8;
ADD 2,3 ;
STA 3 NADR ;
STA 2 VALX ;
LDA 3 0,2 ;
SUB # 3,1,SZR ; IF CORE(ADR) = OLD THEN
JMP D120 ;
LDA 1 NEW ; BEGIN
STA 1 0,2 ; CORE(ADR):= NEW
LDA 0 TEXT2 ; OPMESS(NEW:)
; END ELSE
D120: JSR OPCOM ; OPMESS(OLD:)
LDA 0 .1B12 ; FOR I:=0 STEP 1 UNTIL 8 DO
STA 0 CCOUNT ;
JSR UD ; WRITE(OUT,VALUE);
DSZ CCOUNT ;
JMP .-2 ;
LDA 0 CRX ;
JSR OPCOM ; OPMESS ( CR)
JMP DSTRT ; GOTO START
«ff»
; VARIABLES
ZZ= '??' ; IN UNUSED LOCATIONS
CCOUNT: ZZ
NADR: 0
CONSL: .+1
.TXT .TTY<0><0>.
MESS: .+1
MS0: 1
MS1: P-LINE*2
MS2: LINE*2
LENG: ZZ
LINEX: LINE*2
LINE: .DO 10
0
** .ENDC
P: ZZ
VALX: ZZ
ADRX: .+1
ADR: 0
OLD: ZZ
NEW: ZZ
TEXT1: .*2+2
.TXT .ADR:.
TEXT2: .*2+2
.TXT .NEW:.
TEXT3: .*2+2
.TXT .OLD:.
CRX: .*2+2
.TXT .<10>.
«ff»
;
; PROCEDURE OPCOM
;
; AC0: BYTEADDR OF TEXTSTRING
;
OPCOM: STA 3 LINK1 ;ENTRY: SAVE LINK
OPCON: STA 0 MS2 ;ENTRY FROM UD
LDA 1 MESS ;
LDA 2 CONSL ; SENDMESSAGE( TTY, MESS)
SENDMESSAGE
WAITANSWER
STA 1 LENG ; SAVE BYTES TRANSFERRED
JMP@ LINK1 ; RETURN
LINK1: JMP LINK1 ;
;
; PROCEDURE READOCTAL
;
; VALX: ADDR OF VALUE
; VALX IS INCREMENTED
;
READO: STA 3 LINK1 ;ENTRY:
SUBO 0,0 ;
STA @ 0 VALX ; VALUE:= 0
LDA 3 P
LDA 0 LENG ;
ADCZ# 3,0,SNC ; IF P>=LENG THEN GOTO FINIS
JMP R200 ;
LDA 1 LINEX ;
ADD 3,1 ; ADDR OF CUR BYTE
GETBYTE ; IF FIRSTBYTE = CR THEN
LDA 3 .CR ;
SUB# 0,3 SZR ;
JMP R100 ;
LDA 3 NADR ; CURADDR:=NEXTADDR;
STA 3 ADR ;
R100: GETBYTE ;NEXT:
INC 1,1 ;
ISZ P ;
JMP .+1 ;
LDA 3 .48 ; ZERO
SUBZ 3,0,SNC ;
JMP R200 ;
LDA 3 .7 ;
ADCZ# 3,0,SZC ;
JMP R200 ;
LDA @ 3 VALX ;
ADDZL 3,3 ;
MOVZL 3,3 ; VAL:= VAL*8
ADD 0,3 ; + CHAR-48
STA @ 3 VALX ;
JMP R100 ; GOTO NEXT
R200: ISZ VALX ;FINIS: INCREASE VALX
JMP @ LINK1 ; RETURN
«ff»
;
; PROCEDURE UD
;
; VALX: ADDR OF VALUE TO PRINT
; VALX IS INCREMENTED
;
UD: STA 3 LINK1 ;ENTRY:
LDA @ 1 VALX ; GET VALUE
ISZ VALX ;
JMP .+1 ;
LDA 0 LINEX ;
STA 0 P ;
LDA 0 .24 ; CHAR:= 24
MOVOL 1,1 ; VAL:= VAL<<1 +1
JMP CP200 ; GOTO LAST BIT
CP100: ;NEXT CHAR:
LDA 0 .6 ; CHAR:= 6
MOVL 0,0 ; CHAR:= CHAR<<1 + CARRY
MOVZL 1,1 ; VAL:= VAL<<1
MOVL 0,0 ; CHAR:= CHAR<<1 + CARRY
MOVZL 1,1 ; VAL:= VAL<<1
CP200: ;LAST BIT:
MOVL 0,0 ; CHAR:= CHAR<<1 + CARRY
STA 1 LENG ; SAVE VAL
LDA 1 P ; GET ADDR
PUTBYTE ; PUT CHAR
ISZ P ; INCREASE ADDR
LDA 1 LENG ; GET VAL
MOVZL 1,1,SZR ; VAL:= VAL<<1
JMP CP100 ; IF VAL<>0 THEN GOTO NEXT CHAR
LDA 0 .32 ;
LDA 1 P ;
PUTBYTE ; PUT SPACE
INC 1,1 ;
SUBO 0,0 ; CHAR:= NUL BYTE
PUTBYTE ; PUT NUL
LDA 0 LINEX ;
JMP OPCON ; PRINT VALUE
«ff»
DPROC: ; PROCESS DESCRIPTOR
0 ; NEXT
0 ; PREVIOUS
0 ; CHAIN
DPTOP-DPROC ; SIZE
.TXT .PANEL. ; NAME
DPROC+EVENT ; FIRST EVENT
DPROC+EVENT ; LAST EVENT
MESBUFS ; MESSAGE BUFFERS
DPROG ; PROGRAM HEAD
0 ; STATE
0 ; TIMER
2000 ; PRIORITY
DSTRT ; BREAK ADDRESS
DPROC ; AC0
0 ; AC1
DPROC ; AC2
0 ; AC3
DSTRT*2 ; PSW*2+CARRY
0 ; SAVE
MESBUFS:
.
.
0
10
DPROC
0
ZZ
ZZ
ZZ
ZZ
DPTOP:
.END DPROC
«ff»
«nul»