-------------------------------------------------------------------------------
-----------H----H--X----X-----CCCCC-----22222----0000-----0000-----11----------
----------H----H----X-X-----C--------------2---0----0---0----0---1-1-----------
---------HHHHHH-----X------C----------22222---0----0---0----0-----1------------
--------H----H----X--X----C----------2-------0----0---0----0-----1-------------
-------H----H---X-----X---CCCCC-----22222----0000-----0000----11111------------
-------------------------------------------------------------------------------
-- Contact: hxc2001<at>hxc2001.com ---------------------- http://hxc2001.com --
-------------------------------------------------------------------------------
HxC Floppy Emulator project
(c) 2006-2018 Jean-Franois DEL NERO / (c) HxC2001
-------------------------------------------------------------------------------

Note : Online version with pictures available at this address :

http://torlus.com/floppy/forum/viewtopic.php?f=33&t=1683&p=16457

-------------------------------------------------------------------------------
- General STM32 HxC Floppy Emulator Firmware Usage                            -
-------------------------------------------------------------------------------

 -> Format the USB Stick in FAT32 (FAT12 & FAT16 also supported).

 -> (Optional if you have an LCD/OLED screen)
    Copy the right HXCSDFE.CFG file to the root of the USB Stick
    (See "Mode selection" below for more details).

 -> Copy or generate your disks images to the USB Stick.
    (See "File images supported" below for mode details).

 -> Insert the USB Stick into the emulator.

-------------------------------------------------------------------------------
- Mode selection                                                              -
-------------------------------------------------------------------------------

There are actually three main modes available :

---------------
- Normal mode -
---------------

In this mode the file image/disk to load is directly selected with the buttons
and the LCD screen. One I2C screen is needed to be able to use this mode. 
An optional "select" push button can be connected on the JA connector.
No extra software needed.

config file is optional (Config-Less support).

If you you want to have the last image selection image feature, the config file is needed.
Copy the file HXCSDFE.CFG to the root of the flash media.
The HXCSDFE.CFG file to use can be found at Config_Files/Normal_mode/HXCSDFE.CFG into the following archive :
http://hxc2001.com/download/floppy_drive_emulator/HXCFEUSB_HFE_beta_firmware.zip

----------------
- Indexed mode -
----------------

In this mode the file images must be named DSKA0000.HFE/.IMG, DSKA0001.HFE/.IMG, DSKA0002.HFE/.IMG,...
(HFE & IMG images supported)
The 2/3 digits display shows the actual file number selected.

No LCD and/or extra push button is needed to use this mode.
No extra software needed.

This is the recommended mode when you don't have the extra LCD & button and when
your machine can't use the autoboot mode (see below).

The config file to copy to the root of the flash media for this mode :

Config_Files/Indexed_mode/HXCSDFE.CFG

-----------------------------------
- "Autoboot" / File selector mode -
-----------------------------------

In this mode, the AUTOBOOT.HFE software is used to select the images to load
directly on the computer.
This software is actually available on Amiga, Atari ST and CPC computers.

No LCD and/or extra push button is required to use this mode, but the LCD may help you
to see which disk is actually mounted.

The config and the software file to copy to the root of the flash media for this mode
are in the folder File_Selector/ and Config_Files/Autoboot_mode

-------------------------------------------------------------------------------
- Internal parameters settings                                                -
-------------------------------------------------------------------------------

There is many parameters that can be changed. You generally don't have to change 
them as the default values are fine in most cases. 

Anyway if needed, these settings can be changed with the internal menu.

To access the setting menu, remove the USB stick and press both buttons. Then you can navigate
through the various available options.

This menu is available with both LCD/OLED and 7 Segments Gotek drive.

The file selectors have also a setting page that can be used to change these
parameters.

--- OLED/LCD Gotek Menu ---

Here is some of the available parameters :

- User interface mode. (Normal/Indexed/File selector).

- Floppy Interface mode (predefined modes and custom modes).

- System Family selection. 

- Single or Double step track mode.

- Emulation Bitrate (Auto or forced).

- Floppy write protect state.

- Step Sound output settings.

- LCD/OLED characters per line setting (16/18/20/21 or 40 characters per line).

- LCD Backlight timeout setting.

- Select Button emulation (on/off and timeout setting)

- Rotary type setup.

Note : To clear/reset all settings to the default values, press the right button at power up.


--- Original 7 Segments Gotek Menu ---

-> To access it, remove the USB Stick and press both buttons.
--> Choose the sub menu number - wait some seconds for the selection validation.
---> Check and/or change the setting - wait some seconds for the selection validation.

The new setting is then saved into the device.

    Current Menu and sub menu definition :

    Menu 0 - System family selection :

            00 = AUTO (DEFAULT)
            01 = Amiga
            02 = Acorn
            03 = Atari ST
            04 = IBM PC AT/XT
            05 = Camputer Lynx
            06 = Commodore 1581
            07 = Thomson
            08 = x68000
            09 = SAMCOUPE
            0A = MSX
            0B = Spectrum
            0C = Akai
            0D = Casio
            0E = Emax
            0F = Ensoniq
            10 = General Music
            11 = Korg
            12 = Ensoniq ASR10 (Ensoniq Auto DD & HD support)
            13 = Opus Discovery
            14 = TI99/4A

    Menu 1 - Interface mode :

            00 = AUTO (DEFAULT)
            01 = IBM PC DD
            02 = IBM PC HD
            03 = ATARI ST DD
            04 = ATARI ST HD
            05 = AMIGA DD
            06 = AMIGA HD
            07 = CPC DD
            08 = GENERIC SHUGART DD
            09 = IBMPC ED
            0A = MSX2 DD
            0B = C64 DD
            0C = EMU SHUGART
            0D = S950 DD
            0E = S950 HD
            0F = S900/S950 (Density Auto)
            10 = PC DD/HD  (Density Auto)

    Menu 2 - Write protect mode :

            00 = AUTO (DEFAULT)
            01 = Write protected.
            02 = Write enabled.

    Menu 3 - Double Step :

            00 = AUTO (DEFAULT)
            01 = Single step
            02 = Double step

    Menu 4 - User interface mode :

            00 = AUTO (DEFAULT/From Config file)
            01 = Normal mode
            02 = Indexed mode
            03 = Autoboot/selector mode

    Menu 5 - Auto select delay :

            01-08 : Delay (number of seconds).

    Menu 6 - Head settling delay :

            00-30 : Delay (number of milli-seconds).

    Menu 7 - Rotary type :

            00 = 1 increment per step rotary.
            01 = 2 increment per step rotary.
            02 = Disable.

    Menus 8<->E : Not currently assigned.

    Menu F - Display firmware version

    Note : To clear/reset all settings to the default values, press the right button at power up.


-------------------------------------------------------------------------------
- File images supported                                                       -
-------------------------------------------------------------------------------

Direct support :


- Universal support :
  All machines are supported by the (H)xC (F)loppy (E)mulator (HFE) file format :
  *.HFE ( Read / Write )
  *.HFE (v3 - Copy protected images/"ipf" support) ( Read )

- Amiga :
 *.ADF ( Read / Write )

- Atari ST:
 *.ST  ( Read / Write )

- PC and compatibles (Computers, Synth and tools...) 
 *.IMG ( Read / Write ), *.IMA ( Read / Write )

- Microbee :
 *.DSK ( Read / Write )

- MSX :
 *.DSK ( Read / Write ), *.IMG ( Read / Write )

- Amstrad CPC/Spectrum/Tatung Einstein : 
 *.DSK (CPC/ZX Spectrum Normal & Extended DSK) ( Read / Write )

- Acorn :
 *.ADL,*.ADM,*.SSD,*.DSD and *.ADF files support  (all Read / Write )

- Camputer Lynx :
 *.LDF ( Read / Write )

- Commodore C64 :
 *.D81 ( Read / Write )

- Thomson machines : 
 *.FD ( Read / Write )

- TI99/4A
*.DSK ( Read / Write ), *.V9T9 ( Read / Write ) 

- Sam Coup : 
 *.SAD ( Read / Write ), *.MGT ( Read / Write )

- Spectrum : 
 *.TRD, *.SDD, *.DSK (all Read / Write )
 *.OPD (Opus Discovery)

- Akai (S900 / S950 / S01 / S20 / MPC...):
  *.IMG, *.AKAI (DD & HD) (all Read / Write )

- Casio :
  *.FZ1 (Read / Write )

- Emax :
 *.IMG (Read / Write )

- Ensoniq :
 *.IMG (Read / Write )

- General Music :
 *.IMG (Read / Write )

- Korg : 
 *.IMG ( Read / Write )

- Roland : 
 *.OUT ( Read / Write )


The HFE files can be generated from a large kind of files images with this software :

http://hxc2001.com/download/floppy_drive_emulator/HxCFloppyEmulator_soft_beta.zip


Indirect image support (With the HFE support) :

KRYOFLUXSTREAM      :  KryoFlux Stream Loader                (*.raw)
AMIGA_DMS           :  AMIGA DMS Loader                      (*.dms)
AMIGA_ADZ           :  AMIGA ADZ Loader                      (*.adz)
AMIGA_EXTADF        :  AMIGA EXTENDED ADF Loader             (*.adf)
AMIGA_OLDEXTADF     :  AMIGA OLD EXTENDED ADF Loader         (*.adf)
ZXSPECTRUM_FDI      :  ZX SPECTRUM FDI Loader                (*.fdi)
AMIGA_ADF           :  AMIGA ADF Loader                      (*.adf)
ACORN_ADF           :  ACORN ADF Loader                      (*.adf)
AMSTRADCPC_DSK      :  Amstrad CPC DSK Loader                (*.dsk)
ATARIST_DIM         :  ATARI ST DIM Loader                   (*.dim)
ATARIST_STX         :  Atari ST STX/Pasti Loader             (*.stx)
ATARIST_STT         :  ATARI ST STT Loader                   (*.stt)
COPYQM              :  COPYQM IMG Loader                     (*.dsk)
TELEDISK_TD0        :  TELEDISK TD0 Loader                   (*.td0)
ATARIST_MSA         :  ATARI ST MSA Loader                   (*.msa)
ATARIST_STW         :  STW Loader                            (*.stw)
RAW_IMZ             :  IBM PC IMZ Loader                     (*.imz)
HXCMFM_IMG          :  HXC MFM IMG Loader                    (*.mfm)
ORIC_DSK            :  ORIC DSK Loader                       (*.dsk)
ATARIST_ST          :  ATARI ST ST Loader                    (*.st)
ROLAND_W30          :  Roland W30 file Loader                (*.w30)
SPS_IPF             :  SPS IPF Loader                        (*.ipf)
TI994A_V9T9         :  TI99 4A V9T9 Loader                   (*.v9t9)
AMIGA_FS            :  AMIGA FS Loader                       (*.amigados)
PROPHET2000         :  PROPHET 2000 Loader                   (*.img)
RAW_IMG             :  IBM PC IMG Loader                     (*.img)
FLP_IMG             :  FLP PC Magazine image Loader          (*.flp)
MSX_DSK             :  MSX DSK Loader                        (*.dsk)
FAT12FLOPPY         :  FAT12/MS DOS Loader                   (*.fat)
HXC_HFE             :  SD Card HxCFE HFE file Loader         (*.hfe)
VTR_IMG             :  VTR IMG Loader                        (*.vtr)
IMD_IMG             :  ImageDisk IMD file Loader             (*.imd)
HXC_AFI             :  HxC AFI file loader                   (*.afi)
C64_D81             :  C64 D81 Loader                        (*.d81)
ZXSPECTRUM_TRD      :  Zx Spectrum TRD Loader                (*.trd)
ZXSPECTRUM_SCL      :  ZX SPECTRUM SCL Loader                (*.scl)
THOMSONTO8D_SAP     :  THOMSON TO8D SAP Loader               (*.sap)
TRS80_JV1           :  TRS80 JV1 Loader                      (*.jv1)
TRS80_JV3           :  TRS80 JV3 Loader                      (*.jv3)
TRS80_JVC           :  TRS80 JVC Loader                      (*.jvc)
SVD                 :  SVD Loader                            (*.svd)
NEC_D88             :  NEC D88 Loader                        (*.d88)
X68000_HDM          :  X68000 HDM file Loader                (*.hdm)
RAW_LOADER          :  RAW Sector loader                     (*.img)
SNES_SMC            :  Super famicom SMC Loader              (*.smc)
VEGAS6809           :  VEGAS6809 image Loader                (*.veg)
TRS80_DMK           :  TRS80 DMK Loader                      (*.dmk)
TI994A_PC99         :  TI99 4A PC99 Loader                   (*.pc99)
APRIDISK            :  APRIDISK Loader                       (*.dsk)
ENSONIQ_EDE         :  ENSONIQ EDE Loader                    (*.ede)
FAT12FLOPPY         :  FAT12/MS DOS Loader                   (*.fat)
ENSONIQ_GKH         :  ENSONIQ GKH Loader                    (*.gkh)
THOMSON_FD          :  THOMSON FD Loader                     (*.fd)
CASIO_FZF           :  Casio FZF file Loader                 (*.fzf)
DRAGON3264_VDK      :  DRAGON32 & 64 VDK Loader              (*.vdk)
OBERHEIM_DPX        :  Oberheim DPX Loader                   (*.dpx)
ENSONIQ_EDM         :  Ensoniq mirage EDM Loader             (*.edm)
EMAX_EM             :  EMAX EM1 & EM2 Loader                 (*.em1)
SAMCOUPE_MGT        :  SAM COUPE MGT Loader                  (*.mgt)
SAMCOUPE_SAD        :  SAM COUPE SAD Loader                  (*.sad)
EMULATORII          :  E-mu Emulator II / SP1200 dsk Loader  (*.emuiifd)
EMULATORII_EMUII    :  E-mu Emulator II *.eii Loader         (*.eii)
EMULATORI           :  E-mu Emulator I dsk Loader            (*.emufd)
CAMPUTERSLYNX       :  CAMPUTERSLYNX Loader                  (*.ldf)
BBC_ADL             :  BBC ADL floppy image loader           (*.adl)
BBC_SSD_DSD         :  BBC SSD & DSD floppy image loader     (*.dsd)
FEI                 :  FEI Loader                            (*.fei)
SYSTEM_24           :  System 24 loader                      (*.s24)
SCP_FLUX_STREAM     :  SCP Stream Loader                     (*.scp)
APPLE2_NIB          :  Apple II NIB Loader                   (*.nib)
APPLE2_DO           :  Apple II DO Loader                    (*.do)
SPECCYDOS_SDD       :  Speccy DOS SDD File Loader            (*.sdd)
ARBURG              :  ARBURG RAW Loader                     (*.arburgfd)
GENERIC_XML         :  Generic XML file Loader               (*.xml)

(Note : the actual STM32 firmware wasn't yet tested with the above mentionned machines !)

Software step by step guide :
http://hxc2001.com/download/floppy_drive_emulator/HxC_Floppy_Emulator_Software_User_Manual_ENG.pdf

-------------------------------------------------------------------------------
- Optional Add-on hardware                                                    -
-------------------------------------------------------------------------------

--------------------------------------
- I2C SSD1306 128x32 OLED LCD Screen -
--------------------------------------
Note : Since the 3.0.26.1a

  You can connect an SSD1306 based 128x32 OLED screen.

  These screens are compatible with this firmware : http://www.ebay.com/itm/302110929185  ( IIC Interface ! )

  You can connect the screen directly to the J7 connector. (additional pull-up resistors NOT required.)

 - GND, VCC 3.3V, SCL and SDA position on J7 :

                           _____|
                          |     |
                          | USB |
                          |_____|
        OO______________________|
    SDA OO|SCL
    GND OO|VCC3V3
        J7|
          |
__________|

! > Take care with the 3.3V and GND while connecting the screen. Any mistake may damage the screen ! < !


-----------------------
- I2C 2x16 LCD Screen -
-----------------------

 These kind of I2C LCD boards are compatible with the firmware :

 http://www.ebay.com/itm/IIC-I2C-TWI-SP-I-Serial-Interface-Board-Module-Port-For-Arduino-1602LCD-Display-/310565362720?pt=LH_DefaultDomain_0&hash=item484f235c20
 (board only - without the LCD)

 http://www.ebay.com/itm/IIC-I2C-TWI-SPI-Serial-Interface-Board-Module-Port-for-Arduino-1602LCD-Display-/161245616356?pt=LH_DefaultDomain_0&hash=item258afcd8e4
 (board only - without the LCD)

 http://www.ebay.com/itm/New-Blue-IIC-I2C-TWI-1602-16x2-Serial-LCD-Module-Display-for-Arduino-/221439853893?pt=LH_DefaultDomain_0&hash=item338ed80545
 (board + LCD)

 http://www.ebay.com/itm/IIC-I2C-TWI-SP-I-Serial-Interface1602-16X2-Character-LCD-Module-Display-Yellow-/310565065933?pt=LH_DefaultDomain_0&hash=item484f1ed4cd
 (board + LCD)

 Any I2C address is supported : The firmware scan automatically the I2C bus at power up (0x20-0x27 and 0x38-0x3F address range scanned)
 So there is no specific requirement about the I2C address setting.

 To connect the I2C LCD, you have to connect SDA & SCL at the J7 connector (see below).
 Please note that 2 additionnals 4.7Kohms pull up resistors (+5V) are needed on SCL & SDA.
 the +5V and GND wire can be connected on the programming connector (see below) :

 If you want to build the I2C board yourself, here is the schematic:
 http://hxc2001.com/download/floppy_drive_emulator/Ext_Slim_HxC_Floppy_Emulator_I2C_LCD_Schematic.pdf

- Possible +5V source on the PCB (on the programming connector):

 _____________________________
 |
-+--- NC
-+--- GND      O J3 (BOOT0)
-+--- GND      O VCC3V3
-+--- +5V     OO TX
 |        +5V OO RX
 |        GND OO RST
 |--
 |  |
 |  |


 - SCL & SDA position on J7 :

                           _____|
                          |     |
                          | USB |
                          |_____|
        OO______________________|
    SDA OO|SCL
    GND OO|VCC3V3
        J7|
          |
__________|


-----------------------
- Extra select button -
-----------------------

The optional select/middle button, usable with the "normal" mode
can be added on the JA jumper position.
JA is present near the floppy connector.

-----------------------
- Buzzer sound output -
-----------------------

You can connect a piezo or a magnetic buzzer to the JB jumper position.
A transistor is needed for the magnetic version.
The sound output can be disabled or enabled into the selector settings.
(Note : Please remove these old sound mod using directly the floppy step signal, they are producing reliability problems...)

----------
- Rotary -
----------

You can connect an extra Rotary encoder. 


                           _____|
                          |     |
                          | USB |
                          |_____|
    Dir OO Ck___________________|
    SDA OO|SCL
    GND OO|VCC3V3
        J7|
          |
__________|

Connection points : 

     Clock (Ck) -> J7 pin 2.
     Direction (Dir) -> J7 pin 1.
     GND/VSS -> J7 pin 5
     VCC -> J7 pin 6 (Only needed if your rotary have pull-up resistors)


(c)2006-2018 Jean-Franois DEL NERO
(c)2006-2018 HxC2001

http://hxc2001.com
http://hxc2001.free.fr/floppy_drive_emulator/index.html

