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

⟦d4da0d26c⟧ TextFile

    Length: 3198 (0xc7e)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

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

TextFile

PBK 26-feb-89

How to build a portable Parameter_Parser:

Step 1. Gather the R1K sources
 
 !!Voyager!Environment.Directory.Rev10_2_5.Units.Utilities.
      Parameter_parser'spec       [no need to copy]
      Parameter_parser'body
      Parameter_parser.Get_Float
      Parameter_parser.Parse

 !!Voyager!Environment.Miscellaneous.Rev10_Working.Units.Utilities.
      Enumeration_Ops'spec
      Enumeration_Ops'body
      String_Sort_Generic'spec
      String_Sort_Generic'body
      Name_Sort
      Pure_Element_Table_sort'spec
      Pure_Element_Table_sort'body

 Not copied :
      Universal              -- too big; replace by Text_IO.Float_IO.Get
      Minmax                 -- trivial
      Bounded                -- looks like a twin brother to Bounded_String
      String_Utilities            -- available everywhere
      Directory & Polymorphic_IO  -- vain; need to be replaced anyhow

----

Step 2. Clean up the source and make sure everything compiles

   2.1 Eliminates all special Rational pragmas
   2.2 Substitutes Bounded_String to Bounded
   2.3 Substitutes instanciation of Text_Io.Float_IO for P@.Get_Float
   2.4 Fix some minor errors on out parameters (!!)
   2.5 Build tests

     => [ R1k_Initial ]
----

Step 3. Get rid of dependencies to Directory and Polymorphic_IO
         
   3.1 Eliminate the Rational-directory-name form of lexical element
   3.2 Eliminate the "indirect file" form of option
   3.3 Adjust comments to reflect changes
   3.4 Regresssion test
                         
     => [ R1k_Raw_port ]
----

Step 4. Spawn a target development path

   4.1 Model contains Text_IO, String_Utilities, Bounded_String
       target_key is Mc68020_Os2000, all units are joined.
   4.2 Add pragma Main to main tests programs
   
     => [ M68k_Raw_port ]
   
----

Step 5. Eliminate all unused code, reduce generic part

   5.1 Exit: 3/4 of Enumeration_Ops, Minmax, Name_Sort, String_Sort_Generic
       Pure_Element_Table_Sort, Unbounded_String
   5.2 Inline Get_Float and include remaining part of Enumeration_ops
   5.3 Create a non generic package Parameter_Parser_Defs and move
       to it all declarations and subprogram that do not depend on
       generic formals. With this package only on Parameter_Parser'body
       for greater flexibility (and better R1000 compatibility).                        
   5.4 Accept changes in target path.
   5.5 Regression test
   5.6 Check code sizes: with CDF 4.0.6, Debugging_Level=Full
         N instantiations => 6K + [16K .. 22K] * N bytes codes
         
     => [ R1K_Port_1, M68k_Port_1 ]

----

Possible improvements:

  A. More code can migrate to the non-generic part: some little
     code "massaging" needs to be done (not only pure region-copy as
     in above steps) -> risks of regression
       - procedure Diagnosis (which contain error messages)
       - some procedures in the main Parse algorithm (with additional
           parameters)
           
  B. Re-introduce directory-names and Indirect-files, but with a target
     system dependent file-name parser and Read function (?)
     
----
Nota bene: the view name is given between [ and ]. All units are joined
   accross R1K path and M68K path