DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T V ┃
Length: 9392 (0x24b0) Types: TextFile Names: »V«
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3 └─ ⟦fc9b38f02⟧ »DATA« └─⟦9b46a407a⟧ └─⟦12c68c704⟧ └─⟦this⟧ └─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS └─ ⟦91c658230⟧ »DATA« └─⟦458657fb6⟧ └─⟦220843204⟧ └─⟦this⟧
with Device_Independent_Io; with System; package Tape_Specific is subtype File_Type is Device_Independent_Io.File_Type; subtype Byte_Range is Natural range 0 .. 4096; subtype Pipe_Range is Natural range 0 .. 8; subtype Byte_String is System.Byte_String; type On_Off is (On, Off); procedure Set_Block_Size (File : File_Type; Size : Byte_Range); -- default is Recommended_Max_Block_Length procedure Set_Streaming_Mode (File : File_Type; Mode : On_Off); -- on = true turns streaming mode on -- on = false turns streaming mode off -- default is off procedure Set_Pipeline_Size (File : File_Type; Size : Pipe_Range); -- pipeline size to use if in streaming mode -- default is Recommended_Pipeline_Size procedure Unload (File : File_Type); -- the "file" is closed -- the tape drive unloads the tape procedure Rewind (File : File_Type); -- the tape is put at beginning of tape type Skip_Records_Obstacles is (None, -- No obstacle encountered Tape_Mark, -- Tape mark encountered, Bot -- Beginning of tape was encountered while -- while skipping backwards ); type Skip_Marks_Obstacles is (None, -- No obstacle encountered Double_Tape_Mark, -- 2 consecutive tape marks were encountered -- while skipping forward Bot -- Beginning of tape was encountered while -- while skipping backwards ); type Error_Status is (Success, -- No error encountered Record_Length_Long, -- Record on tape was longer than parameter Not_On_Line, -- Drive was offline Retry_Count_Exhausted, -- Record/tape mark can't be read/written Unexpected_Tape_Error, -- Tape position lost, rewind or unload it Unit_Is_Bad); -- Call Field Service -- The following procedures that do not return an error status will have -- the exception DATA_ERROR raised if RECORD_LENGTH_LONG would have been -- returned. DEVICE_ERROR is raised for all other non-SUCCESS statuses. procedure Unload (File : File_Type; Status : out Error_Status); -- the "file" is closed -- the tape drive unloads the tape procedure Rewind (File : File_Type; Status : out Error_Status); -- the tape is put at beginning of tape -- The following should NOT be intermingled with the Read and Write -- procedures in Device_Independent_IO for the same file. -- The READ procedures return the next record of data on the tape. -- COUNT returns the actual size of the physical tape record in bytes. -- Only the first COUNT elements of RECRD are valid. -- If RECORD_LENGTH_LONG is returned as the error status, then RECRD -- contains the first RECRD'LENGTH bytes of the physical tape record and -- COUNT = RECRD'LENGTH. If a tape mark was read, then COUNT = 0. procedure Read (File : File_Type; Recrd : out Byte_String; Count : out Natural); procedure Read (File : File_Type; Recrd : out Byte_String; Count : out Natural; Status : out Error_Status); procedure Read (File : File_Type; Recrd : out String; Count : out Natural); procedure Read (File : File_Type; Recrd : out String; Count : out Natural; Status : out Error_Status); -- The two IS_MARK subprograms return whether the next tape record to be -- read is a tape mark. These subprograms should only be used while in -- streaming mode otherwise they will raise USE_ERROR. They will raise -- MODE_ERROR if the file is not open for input. function Is_Mark (File : File_Type) return Boolean; procedure Is_Mark (File : File_Type; Result : out Boolean; Status : out Error_Status); -- The WRITE procedures write the contents of RECRD on the tape as a -- physical tape record. RECRD'LENGTH must be greater than or equal to 18 -- and less than or equal to the ABSOLUTE_MAX_BLOCK_LENGTH (currently -- 4096) otherwise USE_ERROR will be raised. -- PAST_EOT_MARKER indicates that the area beyond the reflective EOT marker -- on the tape is now being written. Users are cautioned that tape -- standards specify that there is at least 25 ft. of tape from the marker -- to the end of the reel, but only the first 10 ft. are useable. It -- is OK to write in this 10 ft. area but writing beyond that runs the -- risk of running the tape off its reel. procedure Write (File : File_Type; Recrd : Byte_String; Past_Eot_Marker : out Boolean); procedure Write (File : File_Type; Recrd : Byte_String; Past_Eot_Marker : out Boolean; Status : out Error_Status); procedure Write (File : File_Type; Recrd : String; Past_Eot_Marker : out Boolean); procedure Write (File : File_Type; Recrd : String; Past_Eot_Marker : out Boolean; Status : out Error_Status); -- The WRITE_MARK procedures cause a tape mark to be written to the tape. procedure Write_Mark (File : File_Type; Past_Eot_Marker : out Boolean); procedure Write_Mark (File : File_Type; Past_Eot_Marker : out Boolean; Status : out Error_Status); -- The SKIP_RECORDS procedures position the tape either forward -- or backward until ABS (NUM_RECORDS_TO_SKIP) have been skipped or -- an obstacle has been encountered. A positive NUM_RECORDS_TO_SKIP -- implies skipping forward; negative implies skipping backward; zero -- implies no movement. If a tape mark is encountered as an obstacle, -- the position of the tape is on the "other side" of the tape mark; i.e., -- when skipping backward, the next item read would be that same tape mark -- or when skipping forward, the next item read would be the record or -- tape mark beyond the obstacle tape mark. The RECORDS_SKIPPED does -- not include the tape mark. If the Beginning-Of-Tape reflective marker -- is encountered while skipping backward, the position of the tape will -- be at the beginning of the tape, ready to read the first record. -- MODE_ERROR is raised if the file is not open for reading. USE_ERROR -- is raised if the file is in streaming mode. procedure Skip_Records (File : File_Type; Num_Records_To_Skip : Integer; Obstacle : out Skip_Records_Obstacles; Records_Skipped : out Natural); procedure Skip_Records (File : File_Type; Num_Records_To_Skip : Integer; Obstacle : out Skip_Records_Obstacles; Records_Skipped : out Natural; Status : out Error_Status); -- The SKIP_TAPE_MARKS procedures position the tape either forward or -- backward until ABS (NUM_MARKS_TO_SKIP) have been skipped or -- an obstacle has been encountered. A positive NUM_MARKS_TO_SKIP -- implies skipping forward; negative implies skipping backward; zero -- implies no movement. Two consecutive tape marks (a double tape mark) -- is only an obstacle while skipping forward; in which case neither of -- the tape marks is counted in MARKS_SKIPPED. If two consecutive tape -- marks are encountered while skipping backward, it is not an obstacle -- and they are treated as individual tape marks in MARKS_SKIPPED. If -- the Beginning-Of-Tape reflective marker is encountered while skipping -- backward, the position of the tape will be at the beginning of the -- tape, ready to read the first record. If no obstacle was encountered, -- the position of the tape is on the "other side" of the last tape mark. -- MODE_ERROR is raised if the file is not open for reading. USE_ERROR -- is raised if the file is in streaming mode. procedure Skip_Tape_Marks (File : File_Type; Num_Marks_To_Skip : Integer; Obstacle : out Skip_Marks_Obstacles; Marks_Skipped : out Natural); procedure Skip_Tape_Marks (File : File_Type; Num_Marks_To_Skip : Integer; Obstacle : out Skip_Marks_Obstacles; Marks_Skipped : out Natural; Status : out Error_Status); pragma Subsystem (Input_Output); pragma Module_Name (4, 3214); end Tape_Specific;