DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦45e1c70bc⟧ Ada Source

    Length: 11264 (0x2c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Tiny_Talk, seg_035fca

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Bounded_String, Statements, Object, Scanner, Tiny_Error,
     Block_Class, Easy_X, Message, Pen_Class, Turtle_Class, Date_Class,
     String_Class, Tiny_X, Counter, Statistic, Bug, Io_Exceptions;


package body Tiny_Talk is

    package Bs renames Bounded_String;

    Display : Message.Tiny_String;
    Program : Message.Tiny_String;

    function Get_Display return String is
    begin
        return Bs.Image (Display);
    end Get_Display;

    procedure Set_Display (To : String) is
    begin
        Bs.Copy (Display, To);
    end Set_Display;

    function Get_Program return String is
    begin
        return Bs.Image (Program);
    end Get_Program;

    procedure Set_Program (To : String) is
    begin
        Bs.Copy (Program, To);
    end Set_Program;

    procedure Run (The_Program : String;
                   On_Display : String;
                   Unparse : Boolean;
                   Statistics : Boolean) is
        Result : Object.Reference;
        Main_Node : Statements.Node := Statements.Empty_Node;
    begin
        Set_Display (On_Display);
        Set_Program (The_Program);
        Scanner.Open (The_Program);
        Scanner.Next;  
        Tiny_X.Open (The_Program);
        Turtle_Class.Create_Default;
        Pen_Class.Create_Default;  
        Date_Class.Create_Default;
        Statements.Parse (Main_Node);
        if Unparse then
            Statements.Unparse (Main_Node);
        end if;
        loop
            case Easy_X.Next_Event is
                when Easy_X.Update =>
                    Turtle_Class.Reset;
                    Pen_Class.Reset;
                    String_Class.Reset;
                    Counter.Start_General_Counter;
                    Result := Statements.Interpret (Main_Node, Result);
                    Counter.State_Message;
                when Easy_X.Button_Down =>
                    exit;
                when Easy_X.Button_Up =>
                    null;
            end case;
        end loop;

        if Statistics then  
            Statistic.Write;
        end if;
        Tiny_X.Close;
    exception

        when Bug.Undefined_Name_In_Symbol_Table =>
            Tiny_Error.Undefined_Name_In_Symbol_Table;

        when Bug.Id_String_Overflow | Bug.Too_Many_Strings =>
            Tiny_Error.String_Class_Full;

        when Bug.String_Large_Overflow =>
            Tiny_Error.String_Large_Overflow;

        when Bug.Search_No_String_Object =>
            Tiny_Error.Search_No_String_Object;

        when Bug.Unknown_String_Message =>
            Tiny_Error.Unknown_String_Message;

        when Bug.Missing_Point =>
            Tiny_Error.Missing_Point;

        when Bug.Missing_Right_Brace =>
            Tiny_Error.Missing_Right_Brace;

        when Bug.Missing_Reserved_Word =>
            Tiny_Error.Missing_Reserved_Word;

        when Bug.Mismatch_Arguments_List =>
            Tiny_Error.Mismatch_Arguments_List;

        when Bug.Missing_Right_Parentheses =>
            Tiny_Error.Missing_Right_Parentheses;

        when Bug.Not_Enough_Messages =>
            Tiny_Error.Not_Enough_Messages;

        when Bug.Too_Many_Messages =>
            Tiny_Error.Too_Many_Messages;

        when Bug.Too_Many_Blocks =>
            Tiny_Error.Too_Many_Blocks;

        when Bug.Block_Not_Found =>
            Tiny_Error.Block_Not_Found;

        when Bug.Unknown_Block_Message =>
            Tiny_Error.Unknown_Block_Message;

        when Bug.Unknown_Integer_Message =>
            Tiny_Error.Unknown_Integer_Message;

        when Bug.Unknown_Boolean_Message =>
            Tiny_Error.Unknown_Boolean_Message;

        when Bug.Unknown_Turtle_Message =>
            Tiny_Error.Unknown_Turtle_Message;

        when Bug.Too_Many_Turtles =>
            Tiny_Error.Turtle_Table_Full;

        when Bug.Unknown_Date_Message =>
            Tiny_Error.Unknown_Date_Message;

        when Bug.Unexpected_Action_On_Date =>
            Tiny_Error.Unexpected_Action_On_Date;

        when Bug.Unknown_Pen_Message =>
            Tiny_Error.Unknown_Pen_Message;

        when Bug.Too_Many_Pens =>
            Tiny_Error.Too_Many_Pens;

        when Bug.Unexpected_Object =>
            Tiny_Error.Incorrect_Object;

        when Bug.Too_Many_Keywords =>
            Tiny_Error.Too_Many_Keywords;

        when Bug.Not_Enough_Keywords =>
            Tiny_Error.Not_Enough_Keywords;

        when Bug.Missing_Identifier =>
            Tiny_Error.Missing_Identifier;

        when Bug.Unexpected_Token =>
            Tiny_Error.Unexpected_Token;

        when Bug.Mismatch_Type =>
            Tiny_Error.Mismatch_Type;

        when Bug.Mismatch_Message =>
            Tiny_Error.Mismatch_Message;

        when Bug.Too_Many_Includes =>
            Tiny_Error.Too_Many_Includes;

        when Io_Exceptions.Name_Error =>
            Tiny_Error.Bad_File_Name;

        when Easy_X.Fatal_Error =>
            Tiny_Error.Fatal_X;

        when Numeric_Error =>
            Tiny_Error.Numeric_Error;

        when Constraint_Error =>
            Tiny_Error.Out_Of_Range;

        when Program_Error =>  
            Tiny_Error.Internal_Error;

        when Storage_Error =>
            Tiny_Error.Out_Of_Memory;

        when Bug.Unexpected_Include_File_Name =>
            Tiny_Error.Unexpected_Include_File_Name;
    end Run;



end Tiny_Talk;

E3 Meta Data

    nblk1=a
    nid=6
    hdr6=10
        [0x00] rec0=26 rec1=00 rec2=01 rec3=010
        [0x01] rec0=1a rec1=00 rec2=0a rec3=03e
        [0x02] rec0=23 rec1=00 rec2=09 rec3=036
        [0x03] rec0=03 rec1=00 rec2=08 rec3=04c
        [0x04] rec0=21 rec1=00 rec2=07 rec3=04e
        [0x05] rec0=06 rec1=00 rec2=04 rec3=03a
        [0x06] rec0=25 rec1=00 rec2=02 rec3=010
        [0x07] rec0=0f rec1=00 rec2=05 rec3=000
        [0x08] rec0=25 rec1=00 rec2=02 rec3=010
        [0x09] rec0=0d rec1=00 rec2=05 rec3=000
    tail 0x21732e3c484dd6f791736 0x42a00088462060003
Free Block Chain:
  0x6: 0000  00 03 00 39 80 0a 65 6e 74 73 5f 4c 69 73 74 3b  ┆   9  ents_List;┆
  0x3: 0000  00 00 00 2d 80 17 20 20 20 20 20 20 20 20 20 20  ┆   -            ┆