FabGL

ESP32 Display Controller (VGA, PAL/NTSC Color Composite, SSD1306, ST7789, ILI9341), PS/2 Mouse and Keyboard Controller, Graphics Library, Sound Engine, Game Engine and ANSI/VT Terminal

OTHER License

Stars
1.4K
Committers
1

Bot releases are visible (Hide)

FabGL - v1.0.9 Latest Release

Published by fdivitto about 2 years ago

  • Added PC8250 class (Universal Asynchronous ReceiverITransmitter emulator)
  • Terminal: removed support for Arduino and internal serial port
  • Terminal: added support for BREAK signal
  • added BASIC demo programs as ASCII files
  • fixed modeline parser (doesn't parse additional parameters when V and H sync is not specified)
  • Display controllers: added support for double buffering suspension
  • Added support for TTGO T-Display V1.1 (class TTGOTDisplayV11Controller)
  • img2bitmap, improved color extension and python3 friendly
  • Added SerialPort class
  • Added SerialPortTerminalConnector class
  • Multitasking CP/M: support for out-of-terminal serial port
  • Multitasking CP/M: added TERM USB new command
  • AnsiTerminal: added new baud rates
  • AnsiTerminal: fixed crash if no mouse is configured
  • AnsiTerminal: use of PS/2 port as serial port (5V levels, RX/TX only)
  • PC Emulator: allow to download of images from https and from redirects
  • PC Emulator: added experimental support for serial port
  • PC Emulator: fixed BIOS int14 initialization bug
  • PC Emulator: increased SD card speed on running machine (without WiFi)
  • PC Emulator: improved disk change support
  • PC Emulator: added "Restart Machine" option in SysReq menu
  • removed unnecessary IRAM code (allow to compile with core 2.0.4)
  • improved core 2.0.0 compatibility
FabGL - v1.0.8

Published by fdivitto over 2 years ago

  • improved PlatformIO compatibility
FabGL - v1.0.7

Published by fdivitto over 2 years ago

  • general improvements and bugfixes
  • CVBS: optimized CPU usage and bug fixes
  • CVBS: monochrome can be switched while running
  • CVBS: added progressive PAL wide mode
  • CVBS: added progressive NTSC wide mode
  • CVBS: added BaseExample demo
  • CVBS: added NTSC 240p mode
  • bugfix: MCP23S17, clean exit when no MCP23S17 is found (WROVER-E)
  • frame buffer allocation: improved strategy to allow more lines
  • UI: memory footprint optimization
  • UI: Added uiStaticLabel control
  • Audio: rewritten audio generator code (save more than 4K of memory)
  • Audio: fixed compatibility with ESP32 core >2.0.0
  • Audio: added support for Sigma-Delta audio generation
  • Added SoundChipSimulator example (by Carles Oriol)
  • Added Norwegian keyboard layout (thanks to Knut Zakariassen)
  • AnsiTerminal: adjusted some resolutions to work with lower free memory
  • SpaceInvaders: now can work with just a mouse or just a keyboard
  • Terminal: fixed UART compatibility with core >2.0.0
  • Terminal: simplified connectSerialPort() serial parameters avoiding use of UARTConf
  • Terminal: avoid use of "struct" registers when writing
  • Terminal: added 3 stop bits option
  • Terminal: bugfix, cannot open dialog when CTS/RTS Flow Control is selected
  • Added ttf2header.py to convert TTF fonts to FabGL headers
  • Added Japanese keyboard layout (thanks https://github.com/bellTanTan/fabglKeyboardJapaneseLayout)
  • PC Emulator: better modeline for Hercules emulation
  • PC Emulator: improved timer accuracy
  • PC Emulator: reduced memory footprint
FabGL - v1.0.6

Published by fdivitto over 2 years ago

  • fixed compatibility with ESP32 core >= 2.0.1
  • PCEmulator: 8086 CPU speed optimizations
  • PCEmulator: improved 8086/80186 emulation
  • added CVBS16Controller for composite video output (experimental)
FabGL - v1.0.5

Published by fdivitto about 3 years ago

  • fixed several bugs
  • general improvements
  • more ESP32 core 2.0.0 friendly
  • improved MCP23S17 class
  • VGA signals: default VisibleArea instead of FrontPorch
  • VGA: improved some modelines
  • improved InputBox class with additional dialogs (file browser, file selector, ...)
  • PCEmulator: chosen 640x480@60Hz as default modeline
  • PCEmulator: configuration loaded from mconfs.txt
  • PCEmulator: added configuration dialog
  • PCEmulator: selection of disk images using dialog boxes
  • PCEmulator: added MCP23S17 I/O extender support
  • PCEmulator: CTRL-ALT-DEL resets just the emulated machine
  • PCEmulator: SYSREQ (ALT+PRINTSCREEN) shows running machine menu
  • PCEmulator: now it is possible to mount floppy disk while running
  • PCEmulator: RTC synchronized just on ESP32 poweron
  • PCEmulator: rewritten disk access routines to allow boot from HDD or floppy
  • PCEmulator: added support for additional floppy images (160KB, 180KB, 320KB, 360KB, 720KB, 1200KB, 2880KB)
  • PCEmulator: improved 8253 timer emulation. Now benchmarks are more realistic
  • PCEmulator: added parameters to configure HDD geometry
  • PCEmulator: added new machine configurations (GEM 3, GEOS 2, MSDOS 5.00, MSDOS 6.22, SvarDOS)
  • UI: better support for lower color depth displays
  • i8086: improved emulation
  • UI: added fileDialog (open/save dialog)
  • UI: added uiSimpleMenu control
  • UI: added uiSplitButton control
  • UI: combobox items can overlap parent window borders
  • VGATextController: font is now selectable
FabGL - v1.0.4

Published by fdivitto about 3 years ago

  • Terminal and AnsiTerminal: implemented hardware flow control (RTS/CTS)
  • AnsiTerminal: added RTS and CTS status indicators. RTS is clickable to change its state
  • added French keyboard layout
  • added Belgian keyboard layout
  • added codepages support classes
  • implemented translation of codepages 437 and 1252 to ASCII
  • Terminal: added codepages support
  • UI: added codepages support
  • HardwareTest: added tests for MCP23S17 I/O expander
  • AnsiTerminal: added CTRL-ESC and button in dialog to reboot
  • fixed several bugs
  • several minor improvements
FabGL - v1.0.3

Published by fdivitto over 3 years ago

  • fixed several bugs
  • added IBM PC Emulator example
  • rewritten ULP code from scratch (PS/2 controller)
  • improved PS/2 keyboard and mouse reliability (no more clashes)
  • UI: added uiProgressBar
  • Added InputBox class to simplify build of UI wizards
  • Added InputBox example
  • added MCP23S17 class (SPI 16 bit port expander)
  • added PIT8253 (Programmable Interval Timers)
  • added PIC8259 Programmable Interrupt Controller
  • added i8042, PC keyboard controller
  • added MC146818 class (PC RTC-CMOS)
  • added i8086 (8086 CPU emulator)
  • added GraphicsAdapter class
  • split ALT into left-ALT and right-ALT
  • now international combinations ALT+KEY are handled only using RALT
  • now ALT+KEYPADNUM is handled only using LALT
  • keyboard: when NUMLOCK is ON, pressing SHIFT + KEYPAD generated cursor control virtual keys
  • Keyboard: LALT+KEYPADNUM works also when NUMLOCK is OFF
  • PS2Device: now sendCommand is public
  • Keyboard: CTRL or SHIFT TAB will not generate ASCII
  • Keyboard: with CAPSLOCK ON, letters will be lowercase when SHIFTed
  • Keyboard, bugfix: now setLEDs is consistent with getLEDs
  • added compatibility with IDF 4.1.1
  • PS2Controller: added suspendPort() and resumePort()
  • PS2Device: added suspendPort() and resumePort()
  • removed PS2Controller.waitData, injectInRXBuffer, suspend() and resume()
  • added PS2Controller.enableRX() and disableRX()
  • added PS2Device.syncError(), CLKTimeOutError()
  • Canvas: Reset() now reset also Origin, ClippingRect and horizontal rate
  • Keyboard bugfix: keypad, with NUNLOCK on, DEL doesn't return Dot
  • PS2Preset (PS2Controller.begin() method), added KeyboardPort1_MousePort0, KeyboardPort1 and MousePort1 enum values
  • Terminal: added setColorForAttribute, to select (alternate) colors for Bold, Italic, Faint and Underline attributes
  • Terminal: added soundGenerator() method
  • added compatibility wth Arduino ESP32 ver >=1.0.5
  • Added support for WROVER based boards (SD Card pins default configuration)
  • AnsiTerminal: added option to communicate with USB Serial (thanks to Guido Lehwalder)
  • Mouse: added getPacketSize(), packetAvailable() and getNextPacket()
  • Altair8800, use of different colors for styles
  • VIC20: improved wifi connection and download speed
  • UI, EditBox, added passwordMode property
  • UI: listbox, now multiselect can be disabled
  • UI: listbox, select on mouse over (optional)
  • UI: added uiListBox::listBoxProps
  • added new modelines
FabGL - v1.0.2

Published by fdivitto over 3 years ago

  • Keyboard: added support for ALT + keypad number to generate ASCII characters
  • Keyboard: removed numlock from keyboard layouts to fix a bug when NUMLOCK was down with SHIFTed or ALTed keys
  • Keyboard: added getNextVirtualKey() overload to get scancode and ASCII code associated to the virtual key
  • Keyboard: unified VK_PRINTSCREEN1 and VK_PRINTSCREEN2 into VK_PRINTSCREEN
  • keyboard: now SHIFT + special keys with NUM LOCK enabled or disabled are handled correctly
  • Keyboard: support for scancode set 2 to 1 translation when virtual keys are decoded
  • Keyboard: added scancodeSet() method
  • Terminal: implemented bell sound on CTRL-G
  • removed compiler warnings
FabGL - v1.0.1

Published by fdivitto over 3 years ago

  • AnsiTermial: improved compatibility with slow hosts
  • Terminal: ADM-31, added new escapes
  • general optimizations and improvements and bugfixes
  • Keyboard: improved shifted-key release handling
  • VIC20: improved VIA6522 emulation for better keyboard and joystick handling
  • VIC20: initial implementation of IEC (disk drive). Now LOAD, SAVE and directory listing works
  • AnsiTerminal: added 640x480@60 Hz resolution (now the default)
  • Z80 and 8080 CPU emulation embedded into FabGL
  • some general code refactoring
  • added 720x400@70Hz, 320x200@70Hz and 720x348@73Hz modelines
  • added 9x16 font
FabGL - v1.0.0

Published by fdivitto almost 4 years ago

  • general improvements, optimizations and bug fixes
  • added VGA2Controller (2 colors, resolution up to 1280x768 black/white)
  • added VGA4Controller (4 colors, resolution up to 1024x768 with 4 colors)
  • added VGA8Controller (8 colors, resolution up to 800x600 with 8 colors)
  • added new modelines (1280x768, 1024x768, 800x600, 720x576, etc..)
  • improved PSRAM compatibility
  • added new 14 fixed width fonts for terminal
  • added UIWINDOW_PARENTCENTER to center windows and dialogs
  • avoid flickering by balancing cores
  • removed flickering with VGAxController display controllers
  • terminal: added custom escape sequences to control GPIOs, sound, graphics, sprites, mouse
  • terminal: improved ANSI standard compliance
  • ansiterminal: added sample Basic programs
  • added uiApp::runAsync() to run UI apps in different task
  • added HardwareTest example
  • support for TTGO 1.4 SD Card
  • removed Arduino.h dependencies
  • added VGADirectController class
  • added DirectVGA example
  • added Songs example (thanks to Carles Oriol)
  • added DirectVGA_ElMuro example (thanks to Carles Oriol)
  • added ClassicRacer (thanks to Carles Oriol)
  • added "SAY" text-to-speech program in Multitasking CP/M
  • implemented Spanish keyboard layout and dead keys (thanks to Carles Oriol)
  • VIC20: changes UI style and done general improvements
  • VIC20: improved keyboard emulation and change of layout
  • Altair8800: improved disk handling
FabGL - v0.9.0

Published by fdivitto about 4 years ago

  • general optimizations, improvements and bug fixes
  • added VGA16Controller display driver (bitmapped, low memory requirements)
  • added VGATextController (low memory requirements Text-Only VGA output)
  • added ST7789 based display driver
  • added driver for ILI9341 based displays
  • added VICNoiseGenerator
  • added MultitaskingCPM example
  • optimized SSD1306 driver (sends only the actual changed areas)
  • added SSD1306 UI demo
  • added wav2header tool
  • Terminal: support for custom FabGL escape sequences
  • Terminal: now connectSerialPort can connect directly to UART2, for better performance
  • added TerminalController class (avoids use of escape sequences to control terminal)
  • added LineEditor class (console editor, with cursor movement and advanced editing features)
  • improved FileBrowser class to support mounting of SPIFFS and SDCards
  • improved quality of Fill and draw Ellipse primitives
  • support for pen width for lines, rectangles and paths
  • added RTClock example (SSD1306 OLED + DS3231 RTC)
  • added OLED 128x64 double buffer example
  • SSD1306 driver: support for orientations
  • added ST7789 examples
  • SoundGenerator: simplified samples playing with playSamples() method
  • added sounds to Space Invaders
  • UI: support for mouse-only or keyboard-only modes
  • VIC20: added support for SD card
  • Altair8800: added support for SD card
  • added ILI9341 samples
  • added AnsiLegacy terminal type
  • improved Bold style implementation
  • incorporated ICMP class into fabgl
  • UI: added uiColorListBox control
  • UI: improved TAB focus
  • UI: added uiColorBox control
  • UI: added uiColorComboBox control
  • improved AnsiTerminal demo with UI configuration dialog
  • added SimpleTextTerminalOut example
FabGL - v0.8.0

Published by fdivitto almost 5 years ago

  • VIC20 emulator, added Download from URL
  • Altair8800 emulator, better 88-Disk emulation
  • VGA driver: support for Quad Scan
  • VGA driver: added 512x192 resolution
  • renamed several classes and removed predefined instances
  • created DisplayController as base abstract class for all display drivers
  • added VGA/Sprites example
  • fixed several bugs
  • added I2C thread safe class
  • added SSD1306 OLED display driver
  • added DS3231 real time clock driver
  • added new 11 fixed width fonts
FabGL - v0.7.0

Published by fdivitto about 5 years ago

  • added Commodore VIC20 emulator demo
  • added FileBrowser demo (handle SPIFFS and download files from internet)
  • added uiFileBrowser UI control
  • added inputBox UI helper
  • added new modelines
  • support for fast direct frambuffer access
  • uiApp can now quit
  • combobox: selected item is visible on show
  • added FileBrowser class for FS browsing and handling
  • other minor additions
  • fixed several bugs
FabGL -

Published by fdivitto about 5 years ago

  • Implemented Audio Engine
  • Added ADM-3A, ADM-31, Osborne I and Kaypro terminals
  • UI: Added Slider widget
  • Added new modelines
  • Simplified setup with standard boards
  • Minor changes and bug fixes
FabGL -

Published by fdivitto over 5 years ago

Added Graphical User Interface (GUI)
Fixed bugs

FabGL -

Published by fdivitto over 5 years ago

Badges
Extracted from project README
Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME Everything Is AWESOME