DEFINITION MODULE FileSystem ; (* Advice: do NOT use, FIO is cleaner, this module is here for compatibality purposes only. Hopefully one day it will be removed. Title: FileSystem, allows simple use of files. Version: V1.0 Date: Wednesday 22/1/86 LastEdit: Tue Oct 17 16:04:00 BST 1989 Author: Gaius Mulley Reading University FileSystem - another layer above the UnixStdIO, hides streams and select streams etc. It allows the user to Open and Close a File. Also allows simple character IO to/from files as well as allowing Record Structures to be written and read to/from files and default IO. Could be improved by adding an EOF() function, thus allowing File to be implemented as a 'Hidden Type'. Tue Oct 17 16:04:23 BST 1989 - made the FileSystem compatible with Logitech FileSystem. - prefer to take the aproach as above but this means that the Logitech version needs to be altered. *) FROM SYSTEM IMPORT WORD ; IMPORT FIO ; EXPORT QUALIFIED File, Response, IO, Lookup, Close, Reset, ReadChar, WriteChar, WriteStructToFile, ReadStructFromFile, WriteStructToDefault, ReadStructFromDefault ; TYPE Response = (done, notdone) ; IO = (read, write) ; File = RECORD res : Response ; Opened: BOOLEAN ; in : FIO.File ; out : FIO.File ; io : IO ; END ; (* Lookup - opens a specified file, filename. Henceforth the file is *) (* referenced by, f. This file is very primitive in that it can *) (* only be used for rw operations. ie read XOR write but not both. *) PROCEDURE Lookup (VAR f: File ; filename: ARRAY OF CHAR ; Create: BOOLEAN) ; (* Close - closes a specified file, f. After this call no *) (* reference to f should be made. *) PROCEDURE Close (VAR f: File) ; (* Reset - does absolutley nothing. Only remains to allow modules *) (* to be compatable with other systems which have this procedure. *) PROCEDURE Reset (VAR f: File) ; (* ReadChar - reads a character from a specified file, f. *) PROCEDURE ReadChar (VAR f: File ; VAR ch: CHAR) ; (* WriteChar - writes a character to a specified file, f. *) PROCEDURE WriteChar (VAR f: File ; ch: CHAR) ; (* WriteStructToFile - writes a structure record, a, to file, f. *) (* Any structure may be passed as an array of word. *) PROCEDURE WriteStructToFile (VAR f: File ; a: ARRAY OF WORD) ; (* ReadStructFromFile - reads a structure record, a, from file, f. *) PROCEDURE ReadStructFromFile (VAR f: File ; VAR a: ARRAY OF WORD) ; (* WriteStructToDefault - writes a given structure to the current *) (* output. *) PROCEDURE WriteStructToDefault (a: ARRAY OF WORD) ; (* ReadStructFromDefault - reads a structure, a, from the current *) (* input. *) PROCEDURE ReadStructFromDefault (VAR a: ARRAY OF WORD) ; END FileSystem.