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

⟦106131f2b⟧ TextFile

    Length: 1592 (0x638)
    Types: TextFile
    Names: »WAKEUP.S«

Derivation

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

TextFile

PROCEDURE WAKEUP (R6);
"*************************************************************************
"*************************************************************************

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

LABEL
     NO_SPACE;


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


     "FIND FIRST CHARACTER AFTER SPACE


     "FIND SPACE IN INPUTSTRING, INPUT_POINTER WILL POINT AT SPACE+1"
     "EXIT IF INPUTPOINTER>HEX E.

     #0=>R4;
     #20=>R1;
     R4=>INPUT_POINTER;
           INPUTSTRING[R4]=>R0;
           WHILE R0<>R1 DO
              BEGIN
               R4+1;
               INPUTSTRING[R4]=>R0;
               INPUT_POINTER=>R5;
               R5+1;
               R5=>INPUT_POINTER;
                 IF R4>=#F THEN
                       BEGIN
                       GOTO NO_SPACE;
                       END;
              END;

     NO_SPACE:
     R5+1;
     R5=>INPUT_POINTER;    "INPUT_POINTER POINTS AT THE
                           "FIRST CHARACTER AFTER THE FIRST SPACE.


     INPUTSTRING[R5]=>R0;
                           "R0 = FIRST CHARACTER AFTER SPACE


     'A'=>R1;
     IF R1=R0 THEN
         BEGIN
             WAKEUP_ALL(R6);
         END
     ELSE
         BEGIN
             #30=>R3;
             INPUTSTRING[R5]=>R6-R3=>R3 EXTRACT 4;
             CASE R3 OF
             0:THIS_CPU(R6);
             1:WAKEUP_ONE(R3,R6);
             2:WAKEUP_ONE(R3,R6);
             3:WAKEUP_ONE(R3,R6);
             4:WAKEUP_ONE(R3,R6);
             OTHERWISE INPUTJUNK(R6);
         END;



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