Class Tape

  • Direct Known Subclasses:
    SE_Tape

    public abstract class Tape
    extends Interface
    Simulation of the FA2 Cassette interface.
    Author:
    "Martin Krischik" «krischik@users.sourceforge.net»
    • Field Detail

      • Logger

        private static final Logger Logger

        Class logger instance.

      • TAG

        private static final String TAG

        Class logger tag.

      • File_Name

        String File_Name

        Last file name created or opened. Remembered to improve error messages.

      • File_Read

        protected long File_Read
        Characters read from input stream
      • Home_Directory

        @Nullable
        protected @Nullable String Home_Directory
        The simulators home directory. The usual positions are:
        Windows
        "C:/Documents and Settings/user_id/FX-602P/"
        OS X
        "/User/user_id/FX-602P/"
        Unix
        "/home/user_id/FX-602P/"
        Symbian
        "D:/others/FX-602P/"
        Android
        "/mnt/sdcard/Android/data/net.sourceforge.uiq3.fx602p"
      • Last_Header

        public int[] Last_Header
        No CASIO style filename to embed into the header
    • Constructor Detail

      • Tape

        public Tape()
    • Method Detail

      • Close

        public void Close()
                   throws Op_Error
        Close files and all streams attached to them.
        Throws:
        Op_Error - Something went wrong
      • Create

        public void Create​(@NotNull
                           Interface.File_Type Type,
                           String File_Name,
                           int[] Casio_File_Name,
                           int Header)
                    throws Op_Error
        Parameters:
        Type - File Type.
        File_Name - file name to create
        Casio_File_Name - file name to embed inside the file header
        Header -
        Throws:
        Op_Error - Something went wrong
      • Create_Stream

        @Nullable
        protected abstract DataOutputStream Create_Stream​(@NotNull
                                                          @NotNull String Filename)
                                                   throws Op_Error
        Create a new file for output.
        Parameters:
        Filename - filename.
        Returns:
        data stream to write to.
        Throws:
        Op_Error - io error.
      • File_Size

        public abstract long File_Size()
                                throws Op_Error
        Get file Size
        Returns:
        File size
        Throws:
        Op_Error - any file io error
      • Get_File_Read

        public long Get_File_Read()
        Get amount of bytes read from file
        Returns:
        Bytes read
      • Home_Directory

        @NotNull
        public @NotNull String Home_Directory()
        The simulators home directory. The usual positions are:
        Windows
        "C:/Documents and Settings/user_id/FX-602P/"
        OS X
        "/User/user_id/FX-602P/"
        Unix
        "/home/user_id/FX-602P/"
        Symbian
        "D:/others/FX-602P/"
        Android
        "/mnt/sdcard/Android/data/net.sourceforge.uiq3.fx602p/"
        Returns:
        The home directory to be used.
      • Home_Directory

        public void Home_Directory​(@Nullable
                                   @Nullable String Home_Directory)
        The simulators home directory. The usual positions are:
        Windows
        "C:/Documents and Settings/user_id/FX-602P/"
        OS X
        "/User/user_id/FX-602P/"
        Unix
        "/home/user_id/FX-602P/"
        Symbian
        "D:/others/FX-602P/"
        Android
        "/mnt/sdcard/Android/data/net.sourceforge.uiq3.fx602p/"
        Parameters:
        Home_Directory - The home directory to be used.
      • Open

        public void Open​(@NotNull
                         Interface.File_Type Type,
                         String File_Name)
                  throws Op_Error

        open file of given type

        Parameters:
        Type - File Type.
        File_Name - File name to open
        Throws:
        Op_Error - Something went wrong
      • Open

        @NotNull
        public Interface.File_Type Open​(@NotNull
                                        @NotNull String File_Name)
                                 throws Op_Error

        open file and return type

        Parameters:
        File_Name - File name to open
        Returns:
        the file type of the file
        Throws:
        Op_Error - Something went wrong
      • Open_Stream

        @Nullable
        protected abstract DataInputStream Open_Stream​(@NotNull
                                                       @NotNull String Filename)
                                                throws Op_Error
        Create a new file for input.
        Parameters:
        Filename - filename.
        Returns:
        data stream to read from.
        Throws:
        Op_Error - io error.
      • Read

        public int Read()
                 throws Op_Error
        Read one byte from the simulated cassette interface. Don't be fooled by the return Type - it's just because the Java byte Type has a silly -128 .. 127 range.
        Returns:
        byte array
        Throws:
        Op_Error - any kind of IO error
      • Read

        public int @NotNull [] Read​(int size)
                             throws Op_Error
        Read a few byte from the simulated tape interface. Don't be fooled by the return Type - it's just because the Java byte Type has a silly -128 .. 127 range.
        Parameters:
        size - amount of bytes to be read
        Returns:
        byte array
        Throws:
        Op_Error - any kind of IO error
      • Read_EOF

        public void Read_EOF()
                      throws Op_Error
        Read over an EOF maker to the next value.
        Throws:
        Op_Error - any kind of IO error
      • Write

        public void Write​(int Data)
                   throws Op_Error
        Write one byte to the simulated cassette interface. Don't be fooled by the parameter Type - it's just because the Java byte Type has a silly -128 .. 127 range.
        Parameters:
        Data - a byte
        Throws:
        Op_Error - any kind of IO error
      • Write

        public void Write​(int @NotNull [] Data)
                   throws Op_Error
        writes the bytes in the array to the interface. Note that the Java designers in there great wisdom defined a byte as -128..128 - while in 99% of all cases one need 0..255. Hence we use a int array to pass bytes. As an Ada advocate this mistreatment of data types gives me pimples.
        Parameters:
        Data - byte array
        Throws:
        Op_Error - any kind of IO error
      • Write_EOF

        public void Write_EOF()
                       throws Op_Error
        Writes an EOF marker into the file.
        Throws:
        Op_Error - any kind of IO error