DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦1bf8d3acb⟧ TextFile

    Length: 4096 (0x1000)
    Types: TextFile
    Names: »TEST_7.S«

Derivation

└─⟦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« 

TextFile

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);