|
|
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: 4424 (0x1148)
Types: TextFile
Names: »TEST_4.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_4.S«
PROCEDURE TEST_4 (R6);
"*********************************************************************
" description:
" this program tests the byte-write mechanism of the cpu/cache.
"
" Algorithm: - clear the page to be used.
" - read the page, and check that it is cleared.
" (the cache is loaded)
" - write a pattern in the lower bytes of the page.
" (whereby the cache-memory should be updated
" accordingly).
" - read the page, and check that the pattern is correct.
" - write a pattern in the upper bytes of the page.
" (whereby the cache should be updated accordingly).
" - read the page, and check that the pattern is correct.
"
" This sequence is carried out in the logical pages #1d to 7.
"
"
" The above test is carried out the number of times designated by
" COUNT.
"
"
"*********************************************************************
VAR
SAVE: ARRAY[0..7] OF INTEGER;
LOG_PAGE1: INTEGER;
LOCAL_COUNT: INTEGER;
BEGIN
R7=>SAVE[7];
STC(6,ADDRESS(SAVE[7])=>R7);
OUTNEWLINE(R6);
OUTTEXT(ADDRESS('BYTE-WRITE-TEST STARTED(:0:)')=>R3,R6);
OUTNEWLINE(R6);
FLUSHOUT(R6);
INIT_DTTS(R6);
COUNT=>R0;
R0=>LOCAL_COUNT;
WHILE R0<>0 DO
BEGIN "1
#1D=>R1=>LOG_PAGE1; "FOR LOGPAGES 1D TO 2 DO
WHILE R1<>6 DO
BEGIN "2
#0=>R2;
WHILE R2<#400 DO
BEGIN "3 WRITE ZEROS IN LOGPAGE R1
R1=>R3 SHIFTLL #A; "
R3+R2;
0=>R4=>R3@INTEGER;
R2+1; "
END; "3 "
#0=>R2;
WHILE R2<#400 DO "READ PATTERN IN LOGPAGE R1
BEGIN "3 "
R1=>R3 SHIFTLL #A; "
R3+R2;
R3@INTEGER=>R5;
IF R5<>0 THEN "FAULTY DATA READ
BEGIN "4
0=>R3=>EXPECT_DATA;
R5=>ACTUAL_DATA;
R3=>FAULT_ADDRESS;
ERROR_MESSAGE(R6);
END; "4
R2+1;
END; "3
LOG_PAGE1=>R1;
#0=>R2;
WHILE R2<#400 DO
BEGIN "3 WRITE PATTERN IN LOGPAGE R1
R1=>R6=>R6 SHIFTLL #A=>R6; " IN LOWER BYTES
R6+R2;
R6 SHIFTLL 1=>R6;
R2=>R0 EXTRACT 8=>R0;
#8090; " R0=>R6@BYTE
R2+1; "
END; "3 "
"CHECK LOWER-BYTE-PATTERN IN LOGPAGE
"R1
LOG_PAGE1=>R1;
0=>R2;
WHILE R2<#400 DO
BEGIN "3
R1=>R6 SHIFTLL #A=>R6;
R6+R2; "R6:= R6+R2
R6@INTEGER=>R3=>ACTUAL_DATA;
R6=>FAULT_ADDRESS;
R2=>R6 EXTRACT 8=>R6=>EXPECT_DATA;
CHECK_ERROR(R6);
R2+1;
END; "3
#0=>R2;
WHILE R2<#400 DO
BEGIN "3 WRITE PATTERN IN LOGPAGE R1
R1=>R6 SHIFTLL #A; " IN UPPER BYTES
R6+R2;
R6 SHIFTLL 1;
R6+1;
R2=>R0 EXTRACT 8=>R0;
#FF=>R5;
R5-R0=>R0;
#8090; " R0=>R6@BYTE
R2+1; "
END; "3 "
LOG_PAGE1=>R1;
#0=>R2;
WHILE R2<#400 DO "READ AND CHECK PATTERN.
BEGIN
R1=>R3 SHIFTLL #A;
R3+R2;
R3@INTEGER=>R4;
R3=>FAULT_ADDRESS;
R4=>ACTUAL_DATA;
R2=>R3 EXTRACT 8=>R4;
#FF=>R5;
R5-R4=>R5 SHIFTLL 8;
R5+R4=>R5=>EXPECT_DATA;
CHECK_ERROR(R6);
R2+1;
END;
TEST_CERS(R6);
OUT_ENABLE=>R6;
IF R6=1 THEN
BEGIN
OUTTEXT(ADDRESS('4(:0:)')=>R3,R6);
FLUSHOUT(R6);
END;
LOG_PAGE1=>R1-1=>LOG_PAGE1; "NEXT LOGPAGE
END; "2
IF (OUT_ENABLE=>R0)=1 THEN
BEGIN
OUTNEWLINE(R6);
FLUSHOUT(R6);
END;
LOCAL_COUNT=>R0-1=>LOCAL_COUNT;
END; "1
IF (OUT_ENABLE=>R0)=1 THEN
BEGIN
OUTTEXT(ADDRESS('BYTE-WRITE-TEST TERMINATED (:0:)')=>R3,R6);
OUTNEWLINE(R6);
FLUSHOUT(R6);
END;
UNS(7,ADDRESS(SAVE[0])=>R7);
EXIT(R6);
END; "END OF TEST1 "