|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 8192 (0x2000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body File, seg_0426f7
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Text_Io, Moving_String; use Moving_String; package body File is Current_Character : Character := Ascii.Nul; Current_Character_Line : Natural := 1; Current_Character_Column : Natural := 0; Previous_Character_Column : Natural; Current_Sentence : Moving_String.Object := Moving_String.Null_Object; Input_Line : Moving_String.Object := Moving_String.Null_Object; Position : Natural := 0; Look_A_Head : Boolean; procedure Initialize is begin Look_A_Head := False; end Initialize; function Is_At_End return Boolean is begin return Current_Character = Ascii.Eot; end Is_At_End; procedure Get_Line is A_Character : Character; begin Moving_String.Free (Current_Sentence); Moving_String.Free (Input_Line); while not Text_Io.End_Of_Line loop Text_Io.Get (A_Character); Current_Sentence := Current_Sentence & A_Character; Input_Line := Input_Line & A_Character; end loop; Input_Line := Input_Line & Ascii.Lf; Text_Io.Skip_Line; if Text_Io.End_Of_File then Input_Line := Input_Line & Ascii.Eot; end if; end Get_Line; procedure Get_Char (Output_Character : out Character) is begin if Position = Moving_String.Length (Input_Line) then Get_Line; Position := 0; end if; Position := Position + 1; Output_Character := Moving_String.Char_At (Input_Line, Position); end Get_Char; procedure Next is begin if Look_A_Head then Look_A_Head := False; if Current_Character = Ascii.Lf then Previous_Character_Column := Current_Character_Column; Current_Character_Column := 0; Current_Character_Line := Current_Character_Line + 1; end if; else Get_Char (Current_Character); Current_Character_Column := Current_Character_Column + 1; if Current_Character = Ascii.Lf then Previous_Character_Column := Current_Character_Column; Current_Character_Column := 0; Current_Character_Line := Current_Character_Line + 1; end if; end if; end Next; function Get_Sentence return String is begin return Moving_String.Image (Current_Sentence); end Get_Sentence; function Get_Value return Character is begin return Current_Character; end Get_Value; procedure Unget is begin Look_A_Head := True; if Current_Character = Ascii.Lf then Current_Character_Column := Previous_Character_Column; Current_Character_Line := Current_Character_Line - 1; end if; end Unget; function Get_Line return Natural is begin return Current_Character_Line; end Get_Line; function Get_Column return Natural is begin return Current_Character_Column; end Get_Column; end File;
nblk1=7 nid=2 hdr6=8 [0x00] rec0=24 rec1=00 rec2=01 rec3=066 [0x01] rec0=1f rec1=00 rec2=07 rec3=004 [0x02] rec0=1f rec1=00 rec2=04 rec3=03e [0x03] rec0=0c rec1=00 rec2=05 rec3=000 [0x04] rec0=1b rec1=00 rec2=05 rec3=040 [0x05] rec0=1a rec1=00 rec2=04 rec3=000 [0x06] rec0=8e rec1=8c rec2=00 rec3=026 tail 0x2153d9da4862d59f519b4 0x42a00088462060003 Free Block Chain: 0x2: 0000 00 03 00 13 80 0d 65 64 75 72 65 20 4e 65 78 74 ┆ edure Next┆ 0x3: 0000 00 06 03 fc 80 04 70 22 29 3b 04 00 23 20 20 20 ┆ p"); # ┆ 0x6: 0000 00 00 02 54 80 21 20 6e 6f 74 20 65 6e 64 20 6f ┆ T ! not end o┆