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

⟦c2a15e6d4⟧ TextFile

    Length: 1868 (0x74c)
    Types: TextFile
    Names: »TEST_1_SLAVE.S«, »TEST_2_SLAVE.S«

Derivation

└─⟦17728abc9⟧ Bits:30005143 8" CR80 Floppy CR80FD_0130 ( CR/D/1422 FLERCPU Source )
    └─⟦1815caf3d⟧ 
        └─ ⟦this⟧ »TEST_1_SLAVE.S« 
        └─ ⟦this⟧ »TEST_2_SLAVE.S« 

TextFile

PROCEDURE TEST_1_SLAVE (R6);
"***********************************************************************
"***********************************************************************

VAR
SAVE:     ARRAY[0..7] OF INTEGER;

LABEL CONTA;
LABEL STARTA;


BEGIN
     R7=>SAVE[7];
     STC(6,ADDRESS(SAVE[7])=>R7);



     SVS(R0);
     R0 SHIFTRL 8;
     R0 EXTRACT 3;

     STATUS_BASE=>R7;
     R7+R0=>R7;
     2=>R1=>R7;                                      "STATUS OF THIS CPU:=
                                                     "TEST_1_SLAVE
     START_ADR=>R7;
     R7@INTEGER=>R0;
     WHILE R0<>1 DO R7@INTEGER=>R0;                  "WAIT UNTIL START=1

     DICA=>R0;
     IF R0=0 THEN CAE ELSE CAD;
     T_COUNT=>R0;
STARTA:
     SEM_ADR=>R7;
     R7@INTEGER=>R1;
     WHILE R1=0 DO                                   "WAIT UNTIL SEM=1 IN
                                                     "A TIMEOUT LOOP
         BEGIN
             R0-1;
             IF R0=0 THEN                            "IF TIMEOUT THEN
                 BEGIN
                 DICA=>R0;
                 CAD;
                 GOTO CONTA;
                 END;
             R7@INTEGER=>R1;                         "CONTINUE WITHOUT
                                                     "INCREMENTING SLAVE-
                                                     "COUNT
         END;
     SLC_ADR=>R7;
     R7@INTEGER=>R0+1=>R7@INTEGER;                   "INCREMENT SLAVECOUNT
CONTA:
     DICA=>R0;
     IF R0=0 THEN CAE ELSE CAD;
     C_STROBE_ADR=>R7;
     R7@INTEGER=>R1;
     IF R1<>1 THEN                                   "EXIT IF COMMANDSTROBE
         BEGIN                                       " =1
             T_COUNT=>R0;
             SEM_ADR=>R7;
             0=>R1=>R7@INTEGER;
             GOTO STARTA;
         END;
     CAD;
     UNS(7,ADDRESS(SAVE[0])=>R7);
     EXIT(R6);
END;