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

⟦c852862b1⟧ TextFile

    Length: 1964 (0x7ac)
    Types: TextFile
    Names: »WAKEUP_ONE.S«

Derivation

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

TextFile

PROCEDURE WAKEUP_ONE (R3;R6);
"*************************************************************************
"*************************************************************************

"R3: CPU_NUMBER TO BE AWAKEN, R6:LINK


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


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


     R3=>CPU_NUMBER;
     C_STROBE_ADR=>R7;
     0=>R1=>R7@INTEGER;            "CLEAR COMMAND STROBE

     COMMAND_BASE=>R7;
     "COMMAND TO CPUNUMBER R3:=IDLE, TO THIS CPU:=MASTER, TO OTHERS:=NOP.

     SVS(R5);
     R5 SHIFTRL 8;
     R5 EXTRACT 3;                 "R5= THIS CPU NUMBER

     CPU_NUMBER=>R3;
     #5=>R2;

     WHILE R1<>R2 DO
          BEGIN
               IF R1=R5 THEN
                    BEGIN
                         #10=>R6;
                    END
               ELSE
                    BEGIN
                         IF R1=R3 THEN
                              BEGIN
                                   1=>R6;
                              END
                         ELSE
                              BEGIN
                                   0=>R6;
                              END
                    END;
               R6=>R7@INTEGER;
               R1+1;
               R7+1;
               END;

      C_STROBE_ADR=>R7;
      1=>R1=>R7@INTEGER;         "SET COMMANDSTROBE

      CPU_NUMBER=>R3;
      ENABLE_INT(R3,R6);
      0=>R1;
      CPU(R1);
      DISABLE_INT(R3,R6);

      #F000=>R1;
      0=>R0;
      WHILE R0<>R1 DO R0+1;      "WAIT

      UNIT_MAP(R6);


      0=>R1;
      IF R3<>R1 THEN
         BEGIN
            INTERPRETCOM(R6);
         END;



      OUTNEWLINE(R6);
      OUTTEXT(ADDRESS('CPU NUMBER (:0:)')=>R3,R6);
      FLUSHOUT(R6);
      CPU_NUMBER=>R3;
      OUTHEX(R3,R6);
      OUTTEXT(ADDRESS(' WAS NOT AWAKENED. (:0:)')=>R3,R6);
      OUTNEWLINE(R6);
      FLUSHOUT(R6);


     UNS(7,ADDRESS(SAVE[0])=>R7);
     EXIT(R6);
END;
 «a5»