|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6144 (0x1800)
Types: TextFile
Names: »TEST_8.S«
└─⟦18a2fd90d⟧ Bits:30005144 8" CR80 Floppy CR80FD_0132 ( CR/D/2479 CRD2479: En-CPU CPU/CACHE TEST- PROGRAMMER node: master: CRP5 )
└─⟦56889de57⟧
└─⟦this⟧ »TEST_8.S«
PROCEDURE TEST_8 (R6);
"*********************************************************************
"THE PROGRAM MOVES A BLOCK OF #10 WORDS FROM LOG-DATA-ADRESSES
"#800->#810 TO #10 LOCATIONS AROUND ADRESSES #3C00->3FFF.
" ----------------------
" I I
" I I
" I I
" I I
" I I
" I I
" I====================I #800 START OF PAGE 2
" I I
" I I SOURCE-AREA
" I I
" I--------------------I #80F
" I I
" I I
" I I
" I I
" I I
" I I
" I I
" I I
" I--------------------I----------< START OF DESTINATION AREA
" I I
" I I
" I====================I #4000 START OF PAGE #10
" I I
" I I
" I--------------------I----------< END OF DESTINATION AREA
" I I
" I I
" I I
" I I
"THE VARIABLE >KONTROL< DEFINES THE START OF THE DESTINATION AREA:
" KONTROL DEFINES IN WHICH WRITE-OPERATION A PAGE-FAULT IS TO ARISE:
" KONTROL=1 => PAGEFAULT IN THE FIRST WRITE
" =2 => PAGEFAULT IN THE SECOND WRITE
" ETC.
" IE KONTROL=1 => FIRST DESTINATION ADR = #4000
" =2 => FIRST DESTINATION ADR = #3FFF
" =
" =N => FIRST DESTINATION ADR = #4001 - N
"
" COUNT DEFINES THE NUMBER OF WORDS TO BE MOVED
"
" KONTROL(13:12) DEFINES THE ACCESS-STATUS BITS FOR LOG-DATA
" PAGE #10
"
"*********************************************************************
VAR
SAVE: ARRAY[0..7] OF INTEGER;
SAV_REG0: INTEGER;
SAV_REG1: INTEGER;
SAV_REG7: INTEGER;
ADR_HEX22: INTEGER;
EXT_DP: INTEGER;
DESTIN_START: INTEGER;
DESTIN_LAST: INTEGER;
ADR_HEX40: INTEGER;
ADR_HEX21: INTEGER;
ADR_HEX3A: INTEGER;
ADR_HEX100: INTEGER;
NO_INTERRUPT: INTEGER;
ADR_HEX3B: INTEGER;
C_RECORD_ARRAY: ARRAY[0..#10] OF INTEGER;
LOG_PAGE1: INTEGER;
LOCAL_COUNT: INTEGER;
LABEL PF_REENTRY;
LABEL CONTINUE;
LABEL NO_INT_ENTRY;
LABEL MON_ENTRY;
BEGIN
R7=>SAVE[7];
STC(6,ADDRESS(SAVE[7])=>R7);
OUTNEWLINE(R6);
OUTTEXT(ADDRESS('TEST 8 RUNNING (:0:)')=>R3,R6);
OUTNEWLINE(R6);
FLUSHOUT(R6);
"MAP IN LOG_PROG_PAGE0 AS DATAPAGE #20
#0FC0=>R1;
SIO(R0,R1); "READ PHPAGE OF LOGPROGPAGE 0
#0FA0=>R1;
CAD;
CIO(R0,R1); "MAP IN THIS PHPAGE AS LOGDATAPAGE 20
R0=>EXT_DP;
IF DICA=>R0=0 THEN CAE;
"SAVE LOGPROGLOCATIONS HEX 22 ,HEX 3B, HEX 40, HEX 100,HEX 21, HEX 3A
#8022=>R7;
R7@INTEGER=>R0=>ADR_HEX22;
#803B=>R7;
R7@INTEGER=>R0=>ADR_HEX3B;
#8040=>R7;
R7@INTEGER=>R0=>ADR_HEX40;
#8100=>R7;
R7@INTEGER=>R0=>ADR_HEX100;
#8021=>R7;
R7@INTEGER=>R0=>ADR_HEX21;
#803A=>R7;
R7@INTEGER=>R0=>ADR_HEX3A;
#8022=>R7;
#0=>R1;
R1=>R7@INTEGER;
R7-1;
R1=>R7@INTEGER;
#803B=>R7;
LOCATION(PF_REENTRY)=>R0;
R0=>R7@INTEGER;
R7-1;
R0=>R7@INTEGER;
GOTO CONTINUE;
MON_ENTRY: "MON 64 ENTRY
" SET LEVEL IN CONTEXT RECORD TO VALUE IN REG 4,
" AND SET PSW11 ACCORDINGLY
R4 EXTRACT 4;
R4 SHIFTLL 4;
#FFDD=>R7;
R7@INTEGER=>R7;
R7+#C; "R7 POINTS NOW AT PSW IN CONTEXT REC.
R7@INTEGER=>R0;
IF R4=0 THEN
BEGIN
#F7FF=>R1;
R1 AND R0=>R0=>R7@INTEGER; "CLEAR PSW11 IN CONTEXT RECORD
END
ELSE
BEGIN
#0800=>R1;
R1 IOR R0=>R0=>R7@INTEGER; "SET PSW11 IN CONTEXT RECORD
END;
R7+1; "R7 NOW POINTS AT EXR IN CONTEXT RECORD
R7@INTEGER=>R0;
#FF0F=>R1;
R0 AND R1=>R1;
R1 IOR R4=>R1;
R1=>R7@INTEGER; "EXR IN CONTEXT STACK := OLD VALUE,
"WITH NEW LEVEL
RTM(0,0);
CONTINUE:
"INITIALIZE DP63
#FFDD=>R7;
#FF00=>R0;
R0=>R7@INTEGER;
#FFDE=>R7;
#F000=>R0=>R7@INTEGER;
#FFDF=>R7;
#FF00=>R0=>R7@INTEGER;
#10=>R2;
0=>R0;
#FFF0=>R7;
#3F3E=>R1;
WHILE R0<>R2 DO
BEGIN
R1=>R7@INTEGER;
R0+1;
R7+1;
END;
"::::::::::::::::::::::::::::::::::::::::::
INIT_DTTS(R6); "MAP IN PHYS-DATA-PAGES #20->#5B
", FULL ACCESS , AS LOG-DATA-PAGES
"2->#3D
EXT_DP=>R3;
#0FA0=>R6;
CIO(R3,R6);
"MAP OUT LOG-DATA-PAGE #10 .
#0F90=>R3;
SIO(R0,R3); "R0:= PHYS-PAGE OF LOG-DATA-PAGE #10
R0 SHIFTRL 2;
R0 SHIFTLL 2;
KONTROL=>R4;
R4 SHIFTRL #C;
R4 EXTRACT 2; "R4:= ACCESS STATUS BITS FOR LOG-DATA-
R0+R4=>R4; "PAGE #10
CIO(R4,R3);
"WRITE PATTERN IN SOURCE AREA.
#810=>R7;
#800=>R1;
#1010=>R0;
WHILE R7<>R1 DO
BEGIN
R0=>R7@INTEGER;
R7-1;
R0-1;
END;
"CLEAR LOCATIONS #3F00->3FFF (DESTINATION AREA)
#3F00=>R7;
#4000=>R0;
0=>R1;
WHILE R0<>R7 DO
BEGIN
R1=>R7@INTEGER;
R7+1;
END;
"PREPARE MONITOR_CALL
#8040=>R7;
LOCATION(MON_ENTRY)=>R0=>R7@INTEGER;
#8100=>R7;
#FFFF=>R0=>R7@INTEGER;
LEVEL=>R4 EXTRACT 4; "NEW LEVEL := LEVEL
MON(064);
"PREPARE REGISTERS FOR MOVM
#800=>R0;
#4001=>R1;
KONTROL=>R2 EXTRACT 5;
R1-R2=>R1;