|
|
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: 6274 (0x1882)
Types: TextFile
Names: »TEST.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.S«
MAINMODULE CACHE_MEMORY_TESTS;
%PRINT
"***********************************************************************"
"
"THE FOLLOWING TEST-FACILITIES ARE INCLUDED:
"
" 1/ TEST OF CACHE-ENABLING/DISABLING:
" THE CACHE MAY BE ENABLED/DISABLED BY THE COMMANDS:
" 'ENABLE CACHE' , 'DISABLE CACHE'.
"
" 2/ REPETITIVE LOAD/ READS OF CACHE:
" 1K CONSECUTIVE DATA-MEMORY LOCATIONS ARE WRITTEN
" WITH A RECOGNIZABLE PATTERN (1,2,3,.......#3FF)+LOGPAGE.
" THE 1K LOCATIONS ARE READ TWICE, AND CHECKED.
" THE SAME PROCEDURE IS CARRIED OUT WITH ALL DATA
" DATA PAGES, EXCEPT LOG DATA PAGES 0,1 AND #3F.
" HAVING DONE THIS, ALL THE LOADED MEMORY LOCATIONS ARE
" READ, CHECKING FOR FAULTS.
" INPUT PARAMETERS: NUMBER OF RUNS(WHICH IS AGLOBAL PARAMETER).
" (AND THE GLOBAL VARIABLE CACHE_STATUS,
" CACHE_STATUS IS A BOOLIAN VARIABLE,
" CACHE_STATUS=1 : CACHE ENABLED,
" =0 : CACHE DISABLED.
"
" 3/ TEST OF THE CACHE-MEMORY ABILITY TO CLEAR CACHE-LOCATIONS
" TO WHICH OTHER CPUS/ADDRESSING MODULES WRITE.
" THIS TEST MUST COMPRISE TEST OF CHANNEL BUS CACHE-INTERFACE,
" AND PROCESSOR BUS CACHE-INTERFACE.
"
" 4/ TEST OF CACHE-CLEARING MECHANISM.
" ALGORITHM: MAP IN PHPAGE Y AS LOGPAGE 4.
" CLEAR LOGPAGE 4.
" MAP IN PHPAGE X AS LOGPAGE 3.
" WRITE PATTERN, READ END CHECK PATTERN.
" MAP IN PHPAGE Y AS LOGPAGE 3, AND PHPAGE X AS LOGPAGE
" 4.
" CLEAR CACHE.
" READ LOGPAGE 3 (=PHPAGE Y). THE PAGE MUST BE CLAERED,
" NU REMAINS OF PHPAGE X MAY EXIST IN CACHE.
"
"
"PERFORMANCE TEST: PERF 1,2,3..........
" UDVALGE INSTRUKTIONER UDFOERES ET STORT ANTAL GANGE, I EN PERIODE
" BESTEMT AF COUNT, OG FAST-TIMEREN. EXEKVERINGSTIDEN PR INSTRUK-
" TION UDREGNES.
"
"***********************************************************************
%SOURCE HEADER.S
%SOURCE @**DAMOS.D*GENS.D*GENERAL.S
%SOURCE CONSOLE.S
VAR
INPUTSTRING: ARRAY[0..15] OF INTEGER;
INPUT_LAST: INTEGER; "POINTS TO LAST VALID CHARACTER
INPUT_POINTER: INTEGER; "POINTER TO CURRENT CHARACTER
DICA: INTEGER; "=1: DISABLE CACHE, =0: ENABLE CACHE"
LEVEL: INTEGER;
RESULTS: ARRAY[0..#20] OF INTEGER; "RESULTS FROM TEST
ANTAL_RES: INTEGER; "NUMBER OF VALID ELEMENTS IN <RESULTS>
OUT_ENABLE: INTEGER; "1 ~ MAX OUTPUT
EXPECT_DATA: INTEGER;
ACTUAL_DATA: INTEGER;
ERROR_STATUS: INTEGER;
FAULT_ADDRESS: INTEGER;
CER_MC_VALUE: INTEGER;
KONTROL: INTEGER;
LOC_OUT_ENABLE: INTEGER;
LOC_LEVEL: INTEGER;
NEW_CER_VALUE: INTEGER;
OLD_CER_VALUE: INTEGER;
COUNT: INTEGER;
TEST: INTEGER;
CONST
TESTOUTPUT = 0;
%SOURCE TEST_CERS.S
%SOURCE INIT_DTT.S
%SOURCE ERROR_MESSAGE.S
%SOURCE CHECK_ERROR.S
%SOURCE TEST_1.S
%SOURCE UNDEF_TEST.S
%SOURCE KONTROL_LOAD.S
%SOURCE LEVEL_LOAD.S
%SOURCE TEST_2.S
%SOURCE TEST_5.S
%SOURCE TEST_8.S
%SOURCE TRACE_TRAP_TEST.S
%SOURCE TEST_6.S
%SOURCE TEST_3.S
%SOURCE TEST_7.S
%SOURCE TEST_4.S
%SOURCE PERF_1.S
%SOURCE PERF_2.S
%SOURCE PERF_3.S
%SOURCE PERF_4.S
%SOURCE COUNT_LOAD.S
%SOURCE TESTNUMBER.S
%SOURCE PERFNUMBER.S
%SOURCE INPUTERROR.S
%SOURCE TEST_ALL.S
BEGIN "MAIN PROGRAM"
CAD;
#0000=>R7;
#1=>R0=>DICA;
#F=>R0=>LEVEL;
1=>R0=>OUT_ENABLE;
#1234=>R0;
RCR;
R0 EXTRACT #F;
R0=>CER_MC_VALUE;
LDM(#7);
INIT_OC(R7,R6);
OUTNEWLINE(R6);
OUTTEXT(ADDRESS('JKZ CACHE MEMORY TEST PROGRAM(:0:)')=>R3,R6);
OUTNEWLINE(R6);
OUTTEXT(ADDRESS('CACHE ERROR REGISTER MASTER CLEAR VALUE: (:0:)')=>R3,R6);
CER_MC_VALUE=>R3;
OUTHEX(R3,R6);
OUTNEWLINE(R6);
FLUSHOUT(R6);
"START OF INPUT FROM CONSOLE"
WHILE R0=R0 DO
BEGIN "0"
OUTTEXT(ADDRESS('-->(:0:)')=>R3,R6);
FLUSHOUT(R6);
#0=>R0;
R0=>INPUT_POINTER;
WHILE R3<>#D DO
BEGIN
IN_BYTE(R3,R6);
R3=>R7;
R7=>INPUTSTRING[R0];
R7=>INPUT_LAST;
R0+1;
END;
0=>R0;
R0=>INPUT_POINTER;
"AT THIS POINT, THE ARRAY >INPUTSTRING< CONTAINS VALID CHARACTERS,
"THE LAST VALID CHARACTER DESIGNATED BY INPUT_LAST.
"INPUT_POINTER POINTS AT THE FIRST BYTE.
"START OF COMMAND INTERPRETER"
#0=>R4;
#43=>R1;
INPUTSTRING[R4]=>R2;
IF R2=R1 THEN
BEGIN
COUNT_LOAD(R6);
END
ELSE BEGIN "1"
#44=>R1;
#0=>R4;
INPUTSTRING[R4]=>R2;
IF R2=R1 THEN
BEGIN
#1=>R2;
R2=>DICA;
CAD;
OUTTEXT(ADDRESS('CACHE DISABLED(:0:)')=>R3,R6);
OUTNEWLINE(R6);
END
ELSE BEGIN "2"
#45=>R1;
#0=>R4;
INPUTSTRING[R4]=>R2;
IF R2=R1 THEN
BEGIN
#0=>R2;
R2=>DICA;
CAE;
OUTTEXT(ADDRESS('CACHE ENABLED(:0:)')=>R3,R6);
OUTNEWLINE(R6);
END
ELSE BEGIN "3"
#54=>R1;
#0=>R4;
INPUTSTRING[R4]=>R2;
IF R2=R1 THEN
BEGIN
TESTNUMBER(R6);
END
ELSE BEGIN "4"
#50=>R1;
#0=>R4;
INPUTSTRING[R4]=>R2;
IF R2=R1 THEN
BEGIN
PERFNUMBER(R6);
END
ELSE BEGIN
'K'=>R1;
IF R1=R2 THEN
BEGIN
KONTROL_LOAD(R6);
END
ELSE
BEGIN
'L'=>R1;
IF R1=R2 THEN
BEGIN
LEVEL_LOAD(R6);
END
ELSE
BEGIN
'A'=>R1;
IF R1=R2 THEN
BEGIN
TEST_ALL(R6);
END
ELSE
BEGIN
INPUTERROR(R6);
END;
END;
END;
END;
END; "4"
END; "3"
END; "2"
END; "1"
END; "0"
END; "MAINMODULE
ENDMODULE