// /***************************************************************************
// Aaru Data Preservation Suite
// ----------------------------------------------------------------------------
//
// Filename       : Enums.cs
// Author(s)      : Natalia Portillo <claunia@claunia.com>
//
// Component      : Disk image plugins.
//
// --[ Description ] ----------------------------------------------------------
//
//     Contains enumerations for SuperCardPro flux images.
//
// --[ License ] --------------------------------------------------------------
//
//     This library is free software; you can redistribute it and/or modify
//     it under the terms of the GNU Lesser General Public License as
//     published by the Free Software Foundation; either version 2.1 of the
//     License, or (at your option) any later version.
//
//     This library is distributed in the hope that it will be useful, but
//     WITHOUT ANY WARRANTY; without even the implied warranty of
//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
//     Lesser General Public License for more details.
//
//     You should have received a copy of the GNU Lesser General Public
//     License along with this library; if not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2011-2026 Natalia Portillo
// ****************************************************************************/

using System;
using System.Diagnostics.CodeAnalysis;

namespace Aaru.Images;

public sealed partial class SuperCardPro
{
#region ScpDiskType enum

    [SuppressMessage("ReSharper", "InconsistentNaming")]
    [SuppressMessage("ReSharper", "UnusedMember.Global")]
    public enum ScpDiskType : byte
    {
        Commodore64      = 0x00,
        CommodoreAmiga   = 0x04,
        CommodoreAmigaHD = 0x08,
        AtariFMSS        = 0x10,
        AtariFMDS        = 0x11,
        AtariFMEx        = 0x12,
        AtariSTSS        = 0x14,
        AtariSTDS        = 0x15,
        AtariSTSSHD      = 0x16, // Per SCP spec v2.5: Atari ST SS HD
        AtariSTDSHD      = 0x17, // Per SCP spec v2.5: Atari ST DS HD
        AppleII          = 0x20,
        AppleIIPro       = 0x21,
        Apple400K        = 0x24,
        Apple800K        = 0x25,
        Apple144         = 0x26,
        PC360K           = 0x30,
        PC720K           = 0x31,
        PC12M            = 0x32,
        PC144M           = 0x33,
        TandySSSD        = 0x40,
        TandySSDD        = 0x41,
        TandyDSSD        = 0x42,
        TandyDSDD        = 0x43,
        Ti994A           = 0x50,
        RolandD20        = 0x60,
        AmstradCPC       = 0x70,
        Generic360K      = 0x80,
        Generic12M       = 0x81,
        Generic720K      = 0x84,
        Generic144M      = 0x85,
        TapeGCR1         = 0xE0,
        TapeGCR2         = 0xE1,
        TapeMFM          = 0xE2,
        HddMFM           = 0xF0,
        HddRLL           = 0xF1
    }

#endregion

#region ScpFlags enum

    [Flags]
    public enum ScpFlags : byte
    {
        /// <summary>Per SCP spec: If set (bit 0), flux starts at index pulse</summary>
        StartsAtIndex = 0x01,
        /// <summary>Per SCP spec: If set (bit 1), drive is 96tpi, else 48tpi</summary>
        Tpi = 0x02,
        /// <summary>Per SCP spec: If set (bit 2), drive is 360rpm, else 300rpm</summary>
        Rpm = 0x04,
        /// <summary>Per SCP spec: If set (bit 3), image contains normalized data</summary>
        Normalized = 0x08,
        /// <summary>Per SCP spec: If set (bit 4), image is read/write capable</summary>
        Writable = 0x10,
        /// <summary>Per SCP spec: If set (bit 5), image has footer</summary>
        HasFooter = 0x20,
        /// <summary>Per SCP spec: If set (bit 6), image is not floppy (extended mode)</summary>
        NotFloppy = 0x40,
        /// <summary>Per SCP spec: If set (bit 7), image was not generated by SuperCard Pro device</summary>
        CreatedByOtherDevice = 0x80
    }

#endregion
}