home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / oberon / oeio.mod < prev    next >
Text File  |  1991-02-24  |  2KB  |  94 lines

  1. (* This I/O module is easily tailored to run on Oberon-M in
  2.     the MSDOS environment, or under the closed-environment
  3.     Oberon System from ETH Zurich.  Just use the bracketing
  4.     comment fields to control which system you are using.   
  5.    (Oberon Example)  (c) Copyright E. R. Videki, 1991 *)
  6.     
  7. MODULE OEIO ;
  8.  
  9. (*   Oberon System  I/O  **********
  10.  
  11.     IMPORT Texts , Oberon ;
  12.  
  13. VAR W : Texts.Writer ;
  14.     lastpos : LONGINT ;
  15.  
  16. PROCEDURE Write * (ch:CHAR) ;
  17. BEGIN Texts.Write(W,ch)
  18. END Write;
  19.  
  20. PROCEDURE WriteString * (s:ARRAY OF CHAR);
  21. BEGIN Texts.WriteString(W,s)
  22. END WriteString ;
  23.  
  24.  
  25. PROCEDURE WriteLn * ;
  26. BEGIN Texts.WriteLn(W);  Texts.Append(Oberon.Log, W.buf)
  27. END WriteLn ;
  28.  
  29.  
  30. PROCEDURE GetInput * (VAR s:ARRAY OF CHAR) ;
  31. CONST CR = 0DX ;  LF = 0AX ;  HT = 09X ;
  32. VAR par : Oberon.ParList ;   R : Texts.Reader ;
  33.     i , j : INTEGER ;   ch : CHAR ;
  34. BEGIN
  35.     s[0] := 0X ;    i := 0 ;   j := SHORT( LEN(s) );
  36.     par := Oberon.Par ;    
  37.     Texts.OpenReader(R, par.text,  lastpos ) ;
  38.     Texts.Read(R,ch) ;
  39.     WHILE (~R.eot) & ((ch = " ") OR (ch = HT)) DO Texts.Read(R,ch) END;  (*blank elim*)
  40.     WHILE (~R.eot) & (ch > " ") DO
  41.         s[i] := ch ;  INC(i);  Texts.Read(R,ch) 
  42.     END;
  43.     s[i] := 0X ;
  44.     lastpos := Texts.Pos(R)
  45.     
  46. END GetInput ;
  47.  
  48.  
  49. PROCEDURE Init * ;
  50. BEGIN lastpos := Oberon.Par.pos
  51. END Init ;
  52.  
  53. BEGIN
  54.     Init;     Texts.OpenWriter(W)
  55.     
  56.     
  57. ******* End of Oberon System I/O    *)
  58.  
  59.  
  60.  
  61.  
  62. (* MSDOS I/O (using the distributed Oberon-M I/O modules)  ********   *)
  63.  
  64.     IMPORT Term ;
  65.  
  66. PROCEDURE Write * (ch:CHAR) ;
  67. BEGIN Term.Wch(ch)
  68. END Write;
  69.  
  70. PROCEDURE WriteString * (s:ARRAY OF CHAR);
  71. BEGIN Term.WSv(s)
  72. END WriteString ;
  73.  
  74.  
  75. PROCEDURE WriteLn * ;
  76. BEGIN  Term.WL
  77. END WriteLn ;
  78.  
  79.  
  80. PROCEDURE GetInput * (VAR s:ARRAY OF CHAR) ;
  81. BEGIN Term.RS(s)
  82. END GetInput ;
  83.  
  84.  
  85. PROCEDURE Init * ;
  86. (* only has use under the Oberon System, not under MSDOS *)
  87. END Init ;
  88.  
  89.  
  90.  
  91. (*  ******** End of MSDOS I/O *)
  92.  
  93. END OEIO .
  94.