Class Tape

  • Direct Known Subclasses:
    SE_Tape

    public abstract class Tape
    extends Interface
    Simulation of the FA6 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.

      • Owner

        private final Calculator Owner
        Calculator to which the interface is connected to
      • 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-603P/"
        OS X
        "/User/user_id/FX-603P/"
        Unix
        "/home/user_id/FX-603P/"
        Symbian
        "D:/others/FX-603P/"
        Android
        "/mnt/sdcard/Android/data/net.sourceforge.uiq3.fx603p"
      • Last_Header

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

      • Tape

        protected Tape​(Calculator Owner)
        Parameters:
        Owner - Calculator to which the interface is connected to
    • 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

        create new file for tape IO

        Parameters:
        Type - File Type.
        File_Name - file name to create
        Casio_File_Name - file name to embedd inside the file header
        Header - header to write
        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
      • Home_Directory

        @NotNull
        public @NotNull String Home_Directory()
        The simulators home directory. The usual positions are:
        Windows
        "C:/Documents and Settings/user_id/FX-603P/"
        OS X
        "/User/user_id/FX-603P/"
        Unix
        "/home/user_id/FX-603P/"
        Symbian
        "D:/others/FX-603P/"
        Android
        "/mnt/sdcard/Android/data/net.sourceforge.uiq3.fx603p/"
        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-603P/"
        OS X
        "/User/user_id/FX-603P/"
        Unix
        "/home/user_id/FX-603P/"
        Symbian
        "D:/others/FX-603P/"
        Android
        "/mnt/sdcard/Android/data/net.sourceforge.uiq3.fx603p/"
        Parameters:
        Home_Directory - The home directory to be used.
      • Open

        public void Open​(@NotNull
                         Interface.File_Type Type,
                         @NotNull
                         @NotNull 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_Alpha

        public int Read_Alpha​(short @NotNull [] Out_Text)
                       throws Op_Error
        Read Display from Simulated Cassette interface.
        Returns:
        amount of characters read.
        Throws:
        Op_Error - I/O Error
      • Read_Display

        public Number Read_Display​(short @NotNull [] Out_Text)
                            throws Op_Error
        Read Display from Simulated Cassette interface.
        Throws:
        Op_Error - I/O 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
      • Read_M

        public void Read_M()
                    throws Op_Error
        Read M register from file
        Throws:
        Op_Error - io error
      • Read_Steps

        public void Read_Steps()
                        throws Op_Error
        Read Steps from Simulated Cassette interface.
        Throws:
        Op_Error - I/O 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

        public void Write​(short @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_Alpha

        public void Write_Alpha​(short @NotNull [] Print)
                         throws Op_Error
        Print displayed alpha text to simulated printer (max 40 characters)
        Parameters:
        Print - Alpha Text
        Throws:
        Op_Error - something went wrong
      • Write_Display

        public void Write_Display​(@NotNull
                                  Number L_X,
                                  short @NotNull [] Text)
                           throws Op_Error
        Writes displayed register to simulated cassette interface.
        Parameters:
        L_X - X Register
        Text - Alpha Text
        Throws:
        Op_Error - could mot save the display
      • Write_EOF

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

        public void Write_M()
                     throws Op_Error
        Writes memory register to simulated cassette interface.
        Throws:
        Op_Error - an calculator error