flexemu [-i] [-h] [-f path] [-p path] [-c color] [-0 path] [-1 path] [-2 path] [-3 path] [-t] [-T (scroll|curses)] [-r <two_hex_digits>] [-V] [-u] [-j screen_factor] [-C startup_command] [-O cccc] [-L path]
flexemu [-i] [-h] [-f path] [-p path] [-c color] [-0 path] [-1 path] [-2 path] [-3 path] [-V] [-u] [-j screen_factor] [-C startup_command] [-O cccc] [-L path]
flexemu supports the following features:
| Name | Description | Eurocom II | Default | |||
|---|---|---|---|---|---|---|
| V5 | V7 | |||||
| Emulated Hardware | ||||||
| Emulated hardware | flexemu can either emulate an Eurocom II/V5 or Eurocom II/V7. | Eurocom II/V7 | ||||
| CPU frequency |
The CPU frequency can be set to:
|
✓ | ✓ | Original frequency | ||
| MC146818 Realtime Clock | Optionally emulate a MC146818 real time clock, which is a hardware extension. | - | ✓ | Emulate realtime clock | ||
| User Interface | ||||||
| Screen size | The screen size can be set to default, double, triple, quadruple or quintuple size. | ✓ | ✓ | Double size (1024x512 pixel) | ||
| Number of shades or colors | Depending on the available RAM extension 2, 8 or 64 shades can be supported. Only if a RAM extension is selected, 8 or 64 shades are available. | 2/8/64 ✓/-/- |
2/8/64 ✓/✓/✓ |
2 | ||
| Monochromatic color | A monochromatic color like green or orange can be selected. | ✓ | ✓ | green | ||
| Multi color scheme | Displaying multiple colors (not only shades of a monochromatic color). Only if 8 or 64 shades are selected. | - | ✓ | off | ||
| Display Inverse | Display video normal or inverse. | - | ✓ | off | ||
| Display Smooth | When enabled the video screen is display with a smooth effect. When disabled the video screen displays pixels. | ✓ | ✓ | off | ||
| Memory | ||||||
| RAM extension | ✓ - - |
✓ ✓ ✓ |
2 x 96 KByte | |||
| Files and Directories | ||||||
| Disk/Monitor directory | A Directory Path containing FLEX disk images and monitor program. | ✓ | ✓ | Windows: <INSTDIR>\data Unix like OS: /usr/share/flexemu |
||
| Monitor program | A Filename or Directory Path for the monitor program. | ✓ | ✓ | neumon54.hex | ||
| Disk Drive 0 | A filename or directory Path for disk drive 0. | - | ✓ | system.dsk | ||
| Disk Drive 1 | A filename or directory path for disk drive 1. | - | ✓ | Not set | ||
| Disk Drive 2 | A filename or directory path for disk drive 2. | - | ✓ | Not set | ||
| Disk Drive 3 | A filename or directory path for disk drive 3. | - | ✓ | Not set | ||
| Cassette Drive 0 | A filename for cassette drive 0. | ✓ | - | system.mdcr | ||
| Cassette Drive 1 | A filename for cassette drive 1. | ✓ | - | Not set | ||
| Virtual Disk | ||||||
| Active | Enable or disable support of directory disks, also called virtual disks. | - | ✓ | on | ||
| Default Format | Choose the default format used when first time using a directory disk. It is stored in the directory in the file .flexdiskrc | - | ✓ | 80 tracks, 36 sectors | ||
| Tracks | When choosing "[Set Tracks and Sectors]" as default format the number of tracks can be set individually. | - | ✓ | 80 | ||
| Sectors | When choosing "[Set Tracks and Sectors]" as default format the number of sectors can be set individually. | - | ✓ | 36 | ||
| Terminal (Unix like OS only) | ||||||
| Terminal Type |
If terminal only mode is active, there are
different terminal types available:
On the FLEX prompt it is also possible to switch between graphical user interface and terminal mode. See corresponding EMU commands for details. |
✓ | ✓ | Simple Scrolling Terminal | ||
| Ignore output of NUL (0x00) characters | In terminal only mode the output of NUL characters can be ignored. Their initial usage to wait until the teleprinter returns to the first printing position is not needed any more. There are terminals which incorrectly display it as a space. For details see: Wikipedia Null character. Some terminals also use NUL characters in escape sequences. | ✓ | ✓ | on | ||
| Ignore output of ESC (0x1B) characters | Using simple scrolling terminal type the output of ESC characters can be ignored. This option has to be switched off, to send escape sequences to the terminal. When doing this it is recommended to change TTYESC to a different character than ESC using TTYSET DOS Utility. This can avoid the terminal to stick in an escape sequence. | ✓ | ✓ | on | ||
| Expert Preferences | ||||||
| Undocumented instructions | Optionally emulate MC6809 with undocumented instructions. | ✓ | ✓ | off | ||
| More flexible MMU | Optionally emulate a more flexible MMU. Only if 2 x 384 KByte RAM extension is selected. | - | ✓ | off | ||
| Enable formatting disk in drive 0 |
|
- | ✓ | off | ||
| Enable formatting disk in drive 1 |
|
- | ✓ | off | ||
| Enable formatting disk in drive 2 |
|
- | ✓ | off | ||
| Enable formatting disk in drive 3 |
|
- | ✓ | off | ||
| Use file time | This is a flexemu extension to the FLEX filesystem. If enabled a directory entry also contains the hour and minute of the file creation. This feature is only partially implemented. FLEX does not yet support it. | - | ✓ | off | ||
[1] When this option is enabled a floppy disk can be formatted from within the emulator. Only *.FLX disk image files (not *.DSK or virtual disk images) support formatting a disk. When this option is on, the corresponding disk image file can be an empty file. NEWDISK.CMD distributed on system.dsk for example can be used to format a disk. When trying to read or write such an empty, unformatted disk the floppy disk controller responds with error bit "record not found". After successfully formatting it with NEWDISK.CMD it is detected as FLEX formatted disk, read or write is possible. In general as disk can be formatted with other disk formats like CP/M or MS/DOS.
All flexemu settings are stored in a file on Unix like OS or in the Windows Registry. The detailed location is
| Windows: | HKEY_CURRENT_USER\SOFTWARE\Gnu\Flexemu |
| Unix like OS: | $HOME/.config/flexemu/flexemurc |
| Windows: | <INSTDIR>\flexlabl.conf |
| Unix like OS: | /etc/flexlabl.conf |
On Unix like OS the path depends on the sysconfdir directory. Before compiling flexemu this path can be adapted (see ./configure --help).
A user specific flexemu label file can be defined by creating the file (for example by copying it from the system wide configuration file):
$HOME/.config/flexemu/flexlabl.conf
The user specific configuration file has precedence over the system wide configuration file.
| Fieldname | Default value | Description |
|---|---|---|
| Enable logging | off | Enable or disable logging. |
| Min Address | 0000 | Only log instructions on an address higher or equal to this address. |
| Max Address | FFFF | Only log instructions on an address lower or equal to this address. |
| Start Address | <not set> | Start Instruction logging when the value of the PC is equal to the Start Address. |
| Stop Address | <not set> | Stop Instruction logging when the value of the PC is equal to the Stop Address. |
| Log cycle count | off | Log the number of cycles the CPU executed since the last reset. |
| Log register values | all off | Log a combination of CPU register values. The PC address is always logged. Register values are logged before executing the instruction on the current PC address. |
| Loop optimization | off | Loop optimization detects repeated instruction sequences and prints them using an optimized syntax. Within a loop no cycle count or register contents are logged. The first loop execution is always logged outside the loop to still see the cycle count and register contents when entering the loop. All following loop executions are surrounded by a "DO" and "REPEAT" pseudo instruction. "REPEAT" is followed by the number of repetitions. Source code analysis has shown that this saves a tremendous amount of logging file capacity while providing the exact same information. [2] |
| Format | Text |
The format of the logging file can be selected.
|
| CSV Separator | Semicolon |
Only enabled if log format is CSV Text. The separator character can be selected. [1]
|
| Filename | <not set> | Filename to be used for the instruction logging. Independant of the Start and Stop Address this file remains open as long as Flexemu keeps running until another Filename is set or logging is disabled. |
[1] Comma is not available as separator character because it is used to separate operands in the MC6809 assembler syntax.
[2] Loop optimization example with displaying loop register A contents:
The contents of a Memory Window can be controlled by the following properties:
| Property | Default value | Description |
|---|---|---|
| Window Title | %START-%END | The window title. It can contain variables which are replaced. [1]
|
| Start Address | C100 | The start address of the memory range to be displayed. [2][3] |
| End Address | C6FF | The end address of the memory range to be displayed. [2][3] |
| Style | 16 bytes per line | The display style to be used.
|
| Display Address | Yes | Display the address on the left of each row. |
| Display ASCII | Yes | Display the ASCII content on the right of each row. [4] |
| Extra space each 8th byte | No | Insert an extra space every 8 bytes. |
| Automatic update window size | Yes | When changing the style the window size gets updated automatically. |
[1] The window title must not contain comma or semicolon.
[2] If end address is lower than start address the values are automatically
swapped.
[3] The default address range is the FLEX Utility Command Space.
[4] Only printable ASCII characters are displayed. ASCII control characters
or non ASCII values are replaced by an underscore.
| Menu | Description | |||||||
|---|---|---|---|---|---|---|---|---|
| Search->Find | Start to find an ASCII string, a regular expression string
or one or multiple HEX bytes. The search starts at the current cursor position until end of data, continues at start of data until current cursor position minus one. [1] To guarantee consistent data the menu only is enabled if CPU is stopped. |
|||||||
| Search->Find Next | Continue to find next after starting find with Search->Find. To guarantee consistent data the menu only is enabled if CPU is stopped. |
|||||||
| Windows: | <INSTDIR>\flexemu.conf |
| Unix like OS: | /etc/flexemu.conf |
On Unix like OS the path depends on the sysconfdir directory. Before compiling flexemu this path can be adapted (see ./configure --help).
This file allows to configure:
Usually these setting do not have to be changed.
A user specific flexemu configuration file can be defined by creating the file (for example by copying it from the system wide configuration file):
$HOME/.config/flexemu/flexemu.conf
The user specific configuration file has precedence over the system wide configuration file.
00 ..
7F) together with some additional keys codes
(hex code > 7F). flexemu emulates almost all keys available on
PAT09 as discribed in the following chapters. Eurocom II/V5 strips off the
most significant bit from the keyboard input with the concequence of only
supporting the ASCII character set.
| Hotkey | Description |
|---|---|
| Ctrl+Shift+Q | Exit application |
| Ctrl+1 | Set default screen size |
| Ctrl+2 | Set double screen size |
| Ctrl+3 | Set triple screen size |
| Ctrl+4 | Set quadruple screen size |
| Ctrl+5 | Set quintuple screen size |
| Ctrl+F12 | Toggle smooth display |
| Pause | Toggle CPU to stop or run |
| Shift+Pause | Send non maskable interrupt (NMI) to CPU |
| Shift+Alt+Pause | Reset and run CPU |
| User Interface | Hotkeys |
|---|---|
| Windows | F11 or Alt+Enter |
| macOS | Ctrl+Meta+F |
| KDE | F11 or Ctrl+Shift+F |
| GNOME | Ctrl+F11 |
| Others | F11 |
| PAT09 key | Mapped key | Emitted hex code |
|---|---|---|
| F1 | F1 | C0 |
| F2 | F2 | C1 |
| F3 | F3 | C2 |
| F4 | F4 | C3 |
| F5 | F5 | C4 |
| F6 | F6 | C5 |
| F7 | F7 | C6 |
| F8 | F8 | C7 |
| F9 | F9 | C8 |
| F10 | F10 | C9 |
| F11 | Shift+F1 | CA |
| F12 | Shift+F2 | CB |
| F13 | Shift+F3 | CC |
| F14 | Shift+F4 | CD |
| F15 | Shift+F5 | CE |
| F16 | Shift+F6 | CF |
| F17 | Shift+F7 | D0 |
| F18 | Shift+F8 | D1 |
| F19 | Shift+F9 | D2 |
00 up to
1F and 7F can be entered with flexemu:
| key combination | Control character | hex code |
|---|---|---|
| Ctrl+@ or Ctrl+` [1] | NUL |
00 |
| Ctrl+A ... Ctrl+Z | SOH ... SUB |
01 ... 1A |
| ESC or Ctrl+[ or Ctrl+{ [1] | ESC |
1B |
| Ctrl+\ or Ctrl+| [1] | FS |
1C |
| Ctrl+] or Ctrl+} [1] | GS |
1D |
| Ctrl+^ or Ctrl+~ [1] | RS |
1E |
| Ctrl+_ or Ctrl+Delete [1] | US |
1F |
| Delete [2] | DEL |
7F |
[1] Depending on the keyboard layout evtl. also Alt Gr has to be pressed.
[2] Works only for the Delete key located on the main keypad.
|
|
On flexemu both keypads are emulated using the numeric keypad:
| PAT09 key | Mapped key | Emitted hex code | |||
|---|---|---|---|---|---|
| <key> | Shift+<key> | Ctrl+<key> | Shift+Ctrl+<key> | ||
| Pos1 | F1 |
E1 |
B1 |
A1 |
|
| ↓ | F2 |
E2 |
B2 |
A2 |
|
| Page Down | F3 |
E3 |
B3 |
A3 |
|
| ← | F4 |
E4 |
B4 |
A4 |
|
| Clear | F5 |
E5 |
B5 |
A5 |
|
| → | F6 |
E6 |
B6 |
A6 |
|
| Page Up | F7 |
E7 |
B7 |
A7 |
|
| ↑ | F8 |
E8 |
B8 |
A8 |
|
| End | F9 |
E9 |
B9 |
A9 |
|
![]() |
Insert [1] | FA |
EA |
FA |
EA |
![]() |
Delete [2] | 91 |
81 |
91 |
81 |
7F,
Ctrl+Delete key emits key code 1F.
But in addition it provides a simple command line interface to display or change memory contents or display, set or clear breakpoints. or boot FLEX operating system. From within FLEX the monitor program can be entered by entering MON on the FLEX prompt.
flexemu is deployed with the following monitor programs:
| Monitor program | Eurocom II | RAM Extension | Boot disk | Comment | ||||
|---|---|---|---|---|---|---|---|---|
| Version | File | V5 | V7 | None | 2 x 96 KByte |
2 x 384 KByte |
||
| V5.4 spec | neumon54.hex | - | ✓ | ✓ | ✓ | ✓ | system.dsk, system54.dsk | |
| V5.3 | mon53.s19 | - | ✓ | ✓ | - | - | system54.dsk | |
| V5.4 | mon54.s19 | - | ✓ | - | ✓ | - | system54.dsk | |
| U5.4 | monu54-6.s19 | - | ✓ | - | ✓ | ✓ | system54.dsk | Boot FLEX by entering D |
| V2.4 | mon24.s19 | ✓ | - | ✓ | - | - | ||
| V2.4 | mon24z.s19 | ✓ | - | ✓ | - | - | ||