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

⟦aaf378978⟧ TextFile

    Length: 4422 (0x1146)
    Types: TextFile
    Names: »CONINPUT1.S«

Derivation

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

TextFile

PROCEDURE CONINPUT1 (R6);
"*************************************************************************
"*************************************************************************

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



LABEL OUTT;


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

     MENU1(R6);

      "START OF INPUT FROM CONSOLE"

     WHILE R0=R0 DO
     BEGIN "1"


         0=>R1=>EXIT_STATUS;

          OUTTEXT(ADDRESS('-->(:0:)')=>R3,R6);
          FLUSHOUT(R6);

          #0=>R0;
          R0=>INPUT_POINTER;
          WHILE R3<>#D DO
          BEGIN
               IN_BYTE(R3,R6);
              R3=>R7;
               R7=>INPUTSTRING[R0];
               R7=>INPUT_LAST;
              R0+1;
          END;


          0=>R0;
          R0=>INPUT_POINTER;
          "AT THIS POINT, THE ARRAY >INPUTSTRING< CONTAINS VALID CHARACTERS,
          "THE LAST VALID CHARACTER DESIGNATED BY INPUT_LAST.
          "INPUT_POINTER POINTS AT THE FIRST BYTE.



     "START OF INITIAL CMI

     #0=>R4;
     'T'=>R1;
     INPUTSTRING[R4]=>R2;
     IF R2=R1 THEN
         BEGIN
         TEST_NUMBER(R6);
         END
     ELSE
         BEGIN
         'Q'=>R1;
         IF R2=R1 THEN
             BEGIN
             #D000=>R3;
             0=>R5;
             CIO(R5,R3);
             END
         ELSE
             BEGIN
             'S'=>R1;
             IF R2=R1 THEN
                BEGIN
                SWITCH_NUMBER(R6);
                END
             ELSE
                BEGIN
                'U'=>R1;
                IF R2=R1 THEN
                   BEGIN
                   UNIT_MAP(R6);
                   END
                ELSE
                   BEGIN
                   'C'=>R1;
                   IF R1=R2 THEN
                       BEGIN
                       COUNT_LOAD(R6);
                       END
                   ELSE
                       BEGIN
                       'M'=>R1;
                       IF R1=R2 THEN
                            BEGIN
                            1=>R1=>MENU_ENABLE;
                            MENU1(R6);
                            END
                       ELSE
                            BEGIN
                            'R'=>R1;
                            IF R1=R2 THEN
                                BEGIN
                                SET_REPORTLEV(R6);
                                END
                            ELSE
                                BEGIN
                                'I'=>R1;
                                IF R1=R2 THEN
                                    BEGIN
                                    INFO(R6);
                                    END
                                ELSE
                                    BEGIN
                                    'D'=>R1;
                                     IF R1=R2 THEN
                                         BEGIN
                                         1=>R1=>DICA;
                                         END
                                     ELSE
                                         BEGIN
                                         'E'=>R1;
                                         IF R1=R2 THEN
                                              BEGIN
                                              0=>R1=>DICA;
                                              END
                                         ELSE
                                              BEGIN
                                              'W'=>R1;
                                              IF R1=R2 THEN
                                                 BEGIN
                                                 TIMEOUT(R6);
                                                 END
                                              ELSE
                                                 BEGIN
                                                 INPUTJUNK1(R6);
                                                 END;
                                              END;
                                         END;
                                    END;
                                END;
                            END;
                       END;
                   END;
                END;
              END;
          END;


     EXIT_STATUS=>R1;
     IF R1=1 THEN GOTO OUTT;

     END; "1"


OUTT:

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