|  | 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: 1964 (0x7ac)
    Types: TextFile
    Names: »WAKEUP_ONE.S«
└─⟦17728abc9⟧ Bits:30005143 8" CR80 Floppy CR80FD_0130 ( CR/D/1422 FLERCPU Source )
    └─⟦1815caf3d⟧ 
        └─⟦this⟧ »WAKEUP_ONE.S« 
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»