|
|
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: 4096 (0x1000)
Types: TextFile
Names: »TEST_7.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_7.S«
PROCEDURE TEST_7 (R6);
"*********************************************************************
"*********************************************************************
VAR
SAVE: ARRAY[0..7] OF INTEGER;
ADR_HEX23: INTEGER;
ADR_HEX3C: INTEGER;
C_RECORD_ARRAY: ARRAY[0..#10] OF INTEGER;
LOG_PAGE1: INTEGER;
LOCAL_COUNT: INTEGER;
LABEL TIMER_REENTRY;
BEGIN
R7=>SAVE[7];
STC(6,ADDRESS(SAVE[7])=>R7);
OUTNEWLINE(R6);
OUTTEXT(ADDRESS('TEST 7 RUNNING (:0:)')=>R3,R6);
OUTNEWLINE(R6);
FLUSHOUT(R6);
COUNT=>R0=>LOCAL_COUNT;
WHILE LOCAL_COUNT=>R0 <>0 DO
BEGIN
"MAP IN LOG_PROG_PAGE0 AS DATAPAGE 1
#0FC0=>R1;
SIO(R0,R1); "READ PHPAGE OF LOGPROGPAGE 0
#0FA0=>R1;
CAD;
CIO(R0,R1); "MAP IN THIS PHPAGE AS LOGDATAPAGE 20
IF DICA=>R0=0 THEN CAE;
"SAVE LOGPROGLOCATIONS HEX 23 AND HEX 3C
#8023=>R7;
R7@INTEGER=>R0=>ADR_HEX23;
#803C=>R7;
R7@INTEGER=>R0=>ADR_HEX3C;
#8023=>R7;
#0=>R1;
R1=>R7@INTEGER;
#803C=>R7;
LOCATION(TIMER_REENTRY)=>R0;
R0=>R7@INTEGER;
KONTROL=>R0 EXTRACT 1;
IF R0=1 THEN CAD;
"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;
KONTROL=>R0 EXTRACT 2;
R0 SHIFTRL 1;
IF R0=1 THEN CAD;
#1234=>R0=>R1=>R2=>R3=>R4=>R5=>R6=>R7;
0=>R4;
LDT(R4); "TIMER:=0
WHILE R4=0 DO SVT(R4); "WAIT UNTIL TIMER IS NEGATIVE
SVS(R2);
R2 EXTRACT #F;
LDS(R2);
KONTROL=>R0;
R0 EXTRACT 3;
R0 SHIFTRL 2;
IF R0=1 THEN CAD;
" RCR; IF THE CACHE WAS ENABLED, IT IS
" DISABLED AT THE TIMER INTERRUPT,
" AND VICE VERSA
"
" R0 SHIFTRL #F;
" IF R0=0 THEN
" BEGIN
" CAE;
" END
" ELSE
" BEGIN
" CAD;
" END;
KONTROL=>R0 EXTRACT 4;
R0 SHIFTRL 3;
IF R0=1 THEN CAD;
WHILE R0=R0 DO
BEGIN
#8000=>R0; "THIS CODE DISASSEMBLED BECOMES:
" 8056 MOD8 80
" 0048 MOVC 0 ->R0
" 8056 MOD8 80
" 0049 MOVC 0 ->R1
" 018A ADD R0 R1
" D2BC SVS R2
#8000=>R1;
R1+R0;
SVS(R2);
END;
TIMER_REENTRY:
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
KONTROL=>R0 EXTRACT 5;
R0 SHIFTRL 4;
IF R0=1 THEN CAD;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
"REESTABLISH LOGPROGLOCATIONS HEX 23 AND HEX 3C
ADR_HEX23=>R6;
#8023=>R7;
R6=>R7@INTEGER;
ADR_HEX3C=>R6;
#803C=>R7;
R6=>R7@INTEGER;
"REGISTERS IN THE CONTEXT RECORD CONTAINS:
"R0=OP1 AT ADD
"R1=DESTINATION AT ADD (R1:=R1+R0)
"R2=PSW AFTER SVS
"R3=JUNK
"R4=TIMER
"R5=JUNK
"R6=JUNK
"R7=JUNK
"▶1b◀
"DUMP CONTEXTRECORD, REESTABLISH CONTEXT STACK POINTER
KONTROL=>R0 EXTRACT 6;
R0 SHIFTRL 5;
IF R0=1 THEN CAD;
#FFDD=>R7;
R7@INTEGER=>R6;
0=>R0;
#10=>R2;
WHILE R0<>R2 DO "READ CONTEXTRECORD => C_RECORD_ARRAY
BEGIN
R6@INTEGER=>C_RECORD_ARRAY[R0];
R6@INTEGER=>R7=>RESULTS[R0];
R0+1;
R6+1;
END;
#FFDD=>R7; "REESTABLISH CONTEXT STACK POINTER
#FF00=>R7@INTEGER;
IF (OUT_ENABLE=>R0)=1 THEN
BEGIN
"DUMP CONTEXT RECORD
OUTNEWLINE(R6);
OUTTEXT(ADDRESS(' R0 R1 R2 R3 R4 R5 R6 R7 (:0:)')=>R3,R6);
OUTNEWLINE(R6);