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

⟦b181d11a1⟧ TextFile

    Length: 6144 (0x1800)
    Types: TextFile
    Names: »TEST_8.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_8.S« 

TextFile

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;