-
Notifications
You must be signed in to change notification settings - Fork 78
Rebuild IEC state machine so it's handled in ISR #816
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diggerbonk
added a commit
to diggerbonk/fujinet-firmware-tnfs-browser
that referenced
this pull request
Feb 1, 2025
* sync latest from ML * [iec] sync latest from Meatloaf * [iec] oops forgot this one * [f256] Add missing DW commands. * [iwm network] Add 0x0a line ending to JSON parser * [sio][fuji] revert fujinet.cpp changes to allocate network device in PSRAM until work out why it is corrupting data * [network] initialise field values - fixes PSRAM issues where translation value was not initialised to 0 and was corrupting binary values * [network][sio] Fix memory leak when network is not closed before reopening * Removed direct access to _fnDisk2s to eliminate shadowing issues with _fnDisks.disk_dev and ensure more consistent access. * Move IWM byte decoding into a function. * Split up service() into sub services to make it easier to add more services (such as Disk II write). * [network] fix crash when device spec is empty. REDUCE DEFAULT LOGGING Most logging is now hidden behind VERBOSE_HTTP or VERBOSE_PROTOCOL which you should enable if you want more logging * drivewire: return config disk sectors (if mounted) only for drive 0 * [dw][foenix] adding boards and pinmap for foenix w/ d32 * [dw][foenix] board fix up * [dw][foenix] builds but not working, no opcode logging seen * Added support for missing DriveWire commands * [dw][foenix] fix board by not inverting tx rx in fnuart2 * Fix Disk II mounting from web interface. * [sio][pc] guard esp32 code to fix fujinet-pc on atari * [webui] fixes FujiNetWIFI#785 Add Alaska AKST+9AKDT * There are no _fnDisk2s on PC build, don't try to return them. * [iwm][fuji] Make fuji a real device so it doesn't rely on the DISK_0 hack The DISK_0 hack is sadly still there, but fujinet-lib doesn't use it by default anymore, but does fall back to it for older firmware that still has this god forsaken hack in it. * [iwm] protect against FN crash after a reset on an open network connection * fnFTP: skip sending password if server didn't 331 * Added support for missing DriveWire commands Moved to a state machine for processing DriveWire commands Moved to a state machine for processing FujiNet commands * Renamed onTimer because it's a global and conflicts. * build: add CoCo esp32s3 support * build.sh - only show board name, not full ini file name when listing available boards * [device] Add new Clock device class independent of platforms * Remove clock debug * Fixed issue where readexError wasn't being reset on each call into op_readex(), causing returns of errors from previous iterations. * use USB instead of ACM * [coco] add force uart baud to s3 * [coco] change S3 UART to 1 from 2 * Remove immediate exit from build.sh if there is an error * [clock] add missing include for gcc build * cause build.sh to exit if pio tasks fail * [iwm] Return correct error code when there is a status call on non-opened protocol This was incorrectly returning 1, which is also the OK code and causing fujinet-lib to tightly loop as it did not think there was an error. * Revert "Use driver/gptimer.h" This reverts commit a017eba. * Improve relative path resolution (retry) * Added ability for Disk II to write. * Allocate track buffer when starting disk, free it when stopping. * Remove unused track buffer allocation. * Restore version.h. * Use heap_caps_free * Add comments about ack is used as write protect. * apple2: fuji: add lobby boot option * Define more SmartPort command constants. * No Disk II write support on PC. * apple2: update autorun.po. Adds Lobby and DiskII Write support * ATARI: Improve trailing slash in sio_set_prefix * Added SmartPort CONTROL and STATUS commands to clear/get monitor Disk II /DRIVEn enable status. * added config.prg to IEC, basic framework * [iec] add mlb to filesystem for testing * [iec] move mlb to the correct folder * [iec] fix release ATN wait on bus process * [iec] add "t1" test loader program * Add debug_version.py to put commit ID into FN_VERSION_FULL during build without altering include/version.h * No need to check what Slot/Drive Disk II responds to on PC. * Add FujiNet-PC nightly builds/releases * [GHA] re-enable targets in Build FN-PC * [GHA] Get ready for FN-PC nightly! * [iec] sync and troubleshooting protocol * Revert block-size values in devrelay to fixed 512 byte size * Fix string_utils use of contains * [iec] check ATN status before and after EOI * [iec] use timer for EOI detection * [iec] disable interrupts during EOI detect * [iec] do check before calling selectProtocol() * [iec] reset protocol to standard serial before read_command() adjust bus state for device detect * [iec] reset bus data after TALK * ATARI: Corrected 'NCD N1:' to clear mount * [PC] precise gettimeofday() for Windows 7 * By default, don't use most recent modified date since it causes everything to rebuild. * Print characters per second when finished sending file. * Fix D64 to not read past the end of a sector on large reads. * Eliminate a bunch of warnings. * Make conditionals match where setup_card_detect is being used. * ini for my cococart * disable pull resistors on NMI pin 27 * Rebuild IEC state machine so it's handled in ISR (FujiNetWIFI#816) * Eliminate a bunch of warnings. * There doesn't seem to be a contains() method in std::string * Use commit date instead of newest modified file date by default. * Print IEC transfer speed. * Clarify which pins are used for IEC on Lolin D32 * There is no up/down/pull/true/false/high/low/0/1, only assert/release. * Start moving IEC bus access and state management out of virtual devices. * Make IEC state private and move IEC access macros to _protocol.h * Speed up transfer. * Don't blindly read past end of D64 sector. * Whitespace cleanup. * Put state machine into cbm_on_clk_isr_handler() * Add dynamic delaying before starting transfer. * JiffyDOS. * Remove unused functions. * Don't set bus idle when there's no current command. * Remove COMPLEX_WAIT ifdef * Remove legacy IEC_ASSERT_RELEASE_AS_FUNCTIONS * Don't send command on EOI, wait for unlisten. * Don't releaseLines() until ATN is released. * Don't try to do secondary command if there's no primary command. * Don't discard bytes during LISTEN. * Release lines immediately on LISTEN. * Set state to BUS_IDLE when releasing lines. * Fix problems with transferDelaySinceLast() * Revert CoCo WIPs so latest firmware builds work for CoCo (FujiNetWIFI#817) * Revert "Renamed onTimer because it's a global and conflicts." This reverts commit fd750ff. * Revert "Added support for missing DriveWire commands" This reverts commit 7a0f211. * sync latest changes from Meatloaf * skip clk isr after unlisten/untalk add delay after clk release in turnaround * careful with constant changes for s3. * [iec] add PIN_DEBUG remove skip in CLK ISR * [iec] fix ml http client add define for JIFFYDOS replace timer functions in _protocol * [iec] enhance ML HTTP client streaming * [iec] adjustments to ML HTTP client * [iec] loading media via HTTP is almost as fast as from SD now! * Merge branch 'iec-tnfs' * [CoCo] WebUI mark some sections as experimental Printer, Modem, Tape Recorder and CP/M as experimental - hidden unless "Show experimental features" is checked * [CoCo] Add Emulator section into WebUI - Added Emulator Settings to enable/disable Becker port, FN-PC, FN-ESP - Added Serial Port section to configure port and baud rate, FN-PC only - Used BOIP configuration to keep enabled/disabled, host or IP and port - For Atari NetSIO, used BOIP configuration section too - Removed NetSIO configuration section - Introduced tweaks.platform in webui/config yaml to allow platform specific texts and controls in WebUI * [PC] update fnconfig.ini * [coco] Update Becker interface on ESP - On ESP, restart FujiNet after Becker enable/disable Serial port driver on ESP was not happy when loaded/unloaded from web server task. - On ESP, no Becker host:port setting in WebUI Default settings is to listen on all IPs (i.e. WiFi IP on FN-ESP) * fnSystem: fix SD card detect for non Atari platforms * [fuji][sio]: QR encoder initial proof of concept * [fuji][atari] QR: to_bits, to_atascii, dynamic sizes * [fuji][sio] QR: use diagonal line atascii * [fuji] QR: add docs/comments * [fuji] QR: fix non-pc builds * [http] add simple URL shortening to web server * [sio] QR: add url shorten option to encode * [http] fix: include algorithm header for all_of * [http] fix missing include vector * small correction in index.tmpl.html * [PC] fix Windows build * [rs232] tweaks. * [fujinet-pc] fix HSIO with serial port SIO * atari: new Altirra 850 handler and relocator to fix break key crash. modem now checks filesize of handler and relocator * add clock SOS time format back in * Device ESP32-S3 : Add Analogic & I2s Audio Out * Only set the network unit if the command count has a value sent by fujinet-lib that supports it * [FN-PC/Atari] poll NetSIO from sio_copy_file() * [network-protocol][http] try GET if PROPFIND fails. * [network-protocol][http] add 408 timeout to the propfind check. * [network-protocol][http] force http_transaction() on open dir handle if propfind fails. * Be smarter about finding python3 * [iwm][fuji] set read_only prior to mount. * FsSD: remove uneeded ternary for debug print * [network-protocol] do not emit EOF on write. * [printer-emulator] PDF printers should support form feed. * Updated SP-over-SLIP protocol. Note: This is an incompatible protocol change. It requires a companion change in AppleWin. FujiNet makes use of command list bytes there weren't used so far. This only works with CBus because CBus alwaways tranports all possible command list bytes no matter what command is given. Now the SP-over-SLIP protocol shows exactly the same behavior CBus protocol. * Fixed tabs. * [rs232][fuji] autorun.img * [rs232][fuji] add some debug msgs. * [rs232][disk] add disk read debugging. * [rs232] undo atari hacks. * Validate the path in Fujinet "hosts list" browser in the web UI. Before this commit it's possible to escape the configured root by specifying .. in the escaped slash: http://localhost:8000/browse/host/1/%2F..%2F..%2F..%2F --------- Co-authored-by: Jaime Idolpx <[email protected]> Co-authored-by: Thomas Cherryhomes <[email protected]> Co-authored-by: Mark Fisher <[email protected]> Co-authored-by: Chris Osborn <[email protected]> Co-authored-by: mozzwald <[email protected]> Co-authored-by: Andrew Diller <[email protected]> Co-authored-by: Boisy Pitre <[email protected]> Co-authored-by: Noah Burney <[email protected]> Co-authored-by: Jeff Piepmeier <[email protected]> Co-authored-by: Michael Sternberg <[email protected]> Co-authored-by: Jan Krupa <[email protected]> Co-authored-by: Eric Carr <[email protected]> Co-authored-by: robjustice <[email protected]> Co-authored-by: naeloob <[email protected]> Co-authored-by: Oliver Schmidt <[email protected]> Co-authored-by: Tomek Rękawek <[email protected]>
diggerbonk
added a commit
to diggerbonk/fujinet-firmware-tnfs-browser
that referenced
this pull request
Feb 1, 2025
* sync latest from ML * [iec] sync latest from Meatloaf * [iec] oops forgot this one * [f256] Add missing DW commands. * [iwm network] Add 0x0a line ending to JSON parser * [sio][fuji] revert fujinet.cpp changes to allocate network device in PSRAM until work out why it is corrupting data * [network] initialise field values - fixes PSRAM issues where translation value was not initialised to 0 and was corrupting binary values * [network][sio] Fix memory leak when network is not closed before reopening * Removed direct access to _fnDisk2s to eliminate shadowing issues with _fnDisks.disk_dev and ensure more consistent access. * Move IWM byte decoding into a function. * Split up service() into sub services to make it easier to add more services (such as Disk II write). * [network] fix crash when device spec is empty. REDUCE DEFAULT LOGGING Most logging is now hidden behind VERBOSE_HTTP or VERBOSE_PROTOCOL which you should enable if you want more logging * drivewire: return config disk sectors (if mounted) only for drive 0 * [dw][foenix] adding boards and pinmap for foenix w/ d32 * [dw][foenix] board fix up * [dw][foenix] builds but not working, no opcode logging seen * Added support for missing DriveWire commands * [dw][foenix] fix board by not inverting tx rx in fnuart2 * Fix Disk II mounting from web interface. * [sio][pc] guard esp32 code to fix fujinet-pc on atari * [webui] fixes FujiNetWIFI#785 Add Alaska AKST+9AKDT * There are no _fnDisk2s on PC build, don't try to return them. * [iwm][fuji] Make fuji a real device so it doesn't rely on the DISK_0 hack The DISK_0 hack is sadly still there, but fujinet-lib doesn't use it by default anymore, but does fall back to it for older firmware that still has this god forsaken hack in it. * [iwm] protect against FN crash after a reset on an open network connection * fnFTP: skip sending password if server didn't 331 * Added support for missing DriveWire commands Moved to a state machine for processing DriveWire commands Moved to a state machine for processing FujiNet commands * Renamed onTimer because it's a global and conflicts. * build: add CoCo esp32s3 support * build.sh - only show board name, not full ini file name when listing available boards * [device] Add new Clock device class independent of platforms * Remove clock debug * Fixed issue where readexError wasn't being reset on each call into op_readex(), causing returns of errors from previous iterations. * use USB instead of ACM * [coco] add force uart baud to s3 * [coco] change S3 UART to 1 from 2 * Remove immediate exit from build.sh if there is an error * [clock] add missing include for gcc build * cause build.sh to exit if pio tasks fail * [iwm] Return correct error code when there is a status call on non-opened protocol This was incorrectly returning 1, which is also the OK code and causing fujinet-lib to tightly loop as it did not think there was an error. * Revert "Use driver/gptimer.h" This reverts commit a017eba. * Improve relative path resolution (retry) * Added ability for Disk II to write. * Allocate track buffer when starting disk, free it when stopping. * Remove unused track buffer allocation. * Restore version.h. * Use heap_caps_free * Add comments about ack is used as write protect. * apple2: fuji: add lobby boot option * Define more SmartPort command constants. * No Disk II write support on PC. * apple2: update autorun.po. Adds Lobby and DiskII Write support * ATARI: Improve trailing slash in sio_set_prefix * Added SmartPort CONTROL and STATUS commands to clear/get monitor Disk II /DRIVEn enable status. * added config.prg to IEC, basic framework * [iec] add mlb to filesystem for testing * [iec] move mlb to the correct folder * [iec] fix release ATN wait on bus process * [iec] add "t1" test loader program * Add debug_version.py to put commit ID into FN_VERSION_FULL during build without altering include/version.h * No need to check what Slot/Drive Disk II responds to on PC. * Add FujiNet-PC nightly builds/releases * [GHA] re-enable targets in Build FN-PC * [GHA] Get ready for FN-PC nightly! * [iec] sync and troubleshooting protocol * Revert block-size values in devrelay to fixed 512 byte size * Fix string_utils use of contains * [iec] check ATN status before and after EOI * [iec] use timer for EOI detection * [iec] disable interrupts during EOI detect * [iec] do check before calling selectProtocol() * [iec] reset protocol to standard serial before read_command() adjust bus state for device detect * [iec] reset bus data after TALK * ATARI: Corrected 'NCD N1:' to clear mount * [PC] precise gettimeofday() for Windows 7 * By default, don't use most recent modified date since it causes everything to rebuild. * Print characters per second when finished sending file. * Fix D64 to not read past the end of a sector on large reads. * Eliminate a bunch of warnings. * Make conditionals match where setup_card_detect is being used. * ini for my cococart * disable pull resistors on NMI pin 27 * Rebuild IEC state machine so it's handled in ISR (FujiNetWIFI#816) * Eliminate a bunch of warnings. * There doesn't seem to be a contains() method in std::string * Use commit date instead of newest modified file date by default. * Print IEC transfer speed. * Clarify which pins are used for IEC on Lolin D32 * There is no up/down/pull/true/false/high/low/0/1, only assert/release. * Start moving IEC bus access and state management out of virtual devices. * Make IEC state private and move IEC access macros to _protocol.h * Speed up transfer. * Don't blindly read past end of D64 sector. * Whitespace cleanup. * Put state machine into cbm_on_clk_isr_handler() * Add dynamic delaying before starting transfer. * JiffyDOS. * Remove unused functions. * Don't set bus idle when there's no current command. * Remove COMPLEX_WAIT ifdef * Remove legacy IEC_ASSERT_RELEASE_AS_FUNCTIONS * Don't send command on EOI, wait for unlisten. * Don't releaseLines() until ATN is released. * Don't try to do secondary command if there's no primary command. * Don't discard bytes during LISTEN. * Release lines immediately on LISTEN. * Set state to BUS_IDLE when releasing lines. * Fix problems with transferDelaySinceLast() * Revert CoCo WIPs so latest firmware builds work for CoCo (FujiNetWIFI#817) * Revert "Renamed onTimer because it's a global and conflicts." This reverts commit fd750ff. * Revert "Added support for missing DriveWire commands" This reverts commit 7a0f211. * sync latest changes from Meatloaf * skip clk isr after unlisten/untalk add delay after clk release in turnaround * careful with constant changes for s3. * [iec] add PIN_DEBUG remove skip in CLK ISR * [iec] fix ml http client add define for JIFFYDOS replace timer functions in _protocol * [iec] enhance ML HTTP client streaming * [iec] adjustments to ML HTTP client * [iec] loading media via HTTP is almost as fast as from SD now! * Merge branch 'iec-tnfs' * [CoCo] WebUI mark some sections as experimental Printer, Modem, Tape Recorder and CP/M as experimental - hidden unless "Show experimental features" is checked * [CoCo] Add Emulator section into WebUI - Added Emulator Settings to enable/disable Becker port, FN-PC, FN-ESP - Added Serial Port section to configure port and baud rate, FN-PC only - Used BOIP configuration to keep enabled/disabled, host or IP and port - For Atari NetSIO, used BOIP configuration section too - Removed NetSIO configuration section - Introduced tweaks.platform in webui/config yaml to allow platform specific texts and controls in WebUI * [PC] update fnconfig.ini * [coco] Update Becker interface on ESP - On ESP, restart FujiNet after Becker enable/disable Serial port driver on ESP was not happy when loaded/unloaded from web server task. - On ESP, no Becker host:port setting in WebUI Default settings is to listen on all IPs (i.e. WiFi IP on FN-ESP) * fnSystem: fix SD card detect for non Atari platforms * [fuji][sio]: QR encoder initial proof of concept * [fuji][atari] QR: to_bits, to_atascii, dynamic sizes * [fuji][sio] QR: use diagonal line atascii * [fuji] QR: add docs/comments * [fuji] QR: fix non-pc builds * [http] add simple URL shortening to web server * [sio] QR: add url shorten option to encode * [http] fix: include algorithm header for all_of * [http] fix missing include vector * small correction in index.tmpl.html * [PC] fix Windows build * [rs232] tweaks. * [fujinet-pc] fix HSIO with serial port SIO * atari: new Altirra 850 handler and relocator to fix break key crash. modem now checks filesize of handler and relocator * add clock SOS time format back in * Device ESP32-S3 : Add Analogic & I2s Audio Out * Only set the network unit if the command count has a value sent by fujinet-lib that supports it * [FN-PC/Atari] poll NetSIO from sio_copy_file() * [network-protocol][http] try GET if PROPFIND fails. * [network-protocol][http] add 408 timeout to the propfind check. * [network-protocol][http] force http_transaction() on open dir handle if propfind fails. * Be smarter about finding python3 * [iwm][fuji] set read_only prior to mount. * FsSD: remove uneeded ternary for debug print * [network-protocol] do not emit EOF on write. * [printer-emulator] PDF printers should support form feed. * Updated SP-over-SLIP protocol. Note: This is an incompatible protocol change. It requires a companion change in AppleWin. FujiNet makes use of command list bytes there weren't used so far. This only works with CBus because CBus alwaways tranports all possible command list bytes no matter what command is given. Now the SP-over-SLIP protocol shows exactly the same behavior CBus protocol. * Fixed tabs. * [rs232][fuji] autorun.img * [rs232][fuji] add some debug msgs. * [rs232][disk] add disk read debugging. * [rs232] undo atari hacks. * Validate the path in Fujinet "hosts list" browser in the web UI. Before this commit it's possible to escape the configured root by specifying .. in the escaped slash: http://localhost:8000/browse/host/1/%2F..%2F..%2F..%2F --------- Co-authored-by: Jaime Idolpx <[email protected]> Co-authored-by: Thomas Cherryhomes <[email protected]> Co-authored-by: Mark Fisher <[email protected]> Co-authored-by: Chris Osborn <[email protected]> Co-authored-by: mozzwald <[email protected]> Co-authored-by: Andrew Diller <[email protected]> Co-authored-by: Boisy Pitre <[email protected]> Co-authored-by: Noah Burney <[email protected]> Co-authored-by: Jeff Piepmeier <[email protected]> Co-authored-by: Michael Sternberg <[email protected]> Co-authored-by: Jan Krupa <[email protected]> Co-authored-by: Eric Carr <[email protected]> Co-authored-by: robjustice <[email protected]> Co-authored-by: naeloob <[email protected]> Co-authored-by: Oliver Schmidt <[email protected]> Co-authored-by: Tomek Rękawek <[email protected]>
diggerbonk
added a commit
to diggerbonk/fujinet-firmware-tnfs-browser
that referenced
this pull request
Feb 10, 2025
* update * tnfs menu changes * updating dir_seek and dir_tell menu options * removing unused option * removing unused method * remove unused var * update * remove planning doc * merge lateset firmware changes into local branches (#2) * sync latest from ML * [iec] sync latest from Meatloaf * [iec] oops forgot this one * [f256] Add missing DW commands. * [iwm network] Add 0x0a line ending to JSON parser * [sio][fuji] revert fujinet.cpp changes to allocate network device in PSRAM until work out why it is corrupting data * [network] initialise field values - fixes PSRAM issues where translation value was not initialised to 0 and was corrupting binary values * [network][sio] Fix memory leak when network is not closed before reopening * Removed direct access to _fnDisk2s to eliminate shadowing issues with _fnDisks.disk_dev and ensure more consistent access. * Move IWM byte decoding into a function. * Split up service() into sub services to make it easier to add more services (such as Disk II write). * [network] fix crash when device spec is empty. REDUCE DEFAULT LOGGING Most logging is now hidden behind VERBOSE_HTTP or VERBOSE_PROTOCOL which you should enable if you want more logging * drivewire: return config disk sectors (if mounted) only for drive 0 * [dw][foenix] adding boards and pinmap for foenix w/ d32 * [dw][foenix] board fix up * [dw][foenix] builds but not working, no opcode logging seen * Added support for missing DriveWire commands * [dw][foenix] fix board by not inverting tx rx in fnuart2 * Fix Disk II mounting from web interface. * [sio][pc] guard esp32 code to fix fujinet-pc on atari * [webui] fixes FujiNetWIFI#785 Add Alaska AKST+9AKDT * There are no _fnDisk2s on PC build, don't try to return them. * [iwm][fuji] Make fuji a real device so it doesn't rely on the DISK_0 hack The DISK_0 hack is sadly still there, but fujinet-lib doesn't use it by default anymore, but does fall back to it for older firmware that still has this god forsaken hack in it. * [iwm] protect against FN crash after a reset on an open network connection * fnFTP: skip sending password if server didn't 331 * Added support for missing DriveWire commands Moved to a state machine for processing DriveWire commands Moved to a state machine for processing FujiNet commands * Renamed onTimer because it's a global and conflicts. * build: add CoCo esp32s3 support * build.sh - only show board name, not full ini file name when listing available boards * [device] Add new Clock device class independent of platforms * Remove clock debug * Fixed issue where readexError wasn't being reset on each call into op_readex(), causing returns of errors from previous iterations. * use USB instead of ACM * [coco] add force uart baud to s3 * [coco] change S3 UART to 1 from 2 * Remove immediate exit from build.sh if there is an error * [clock] add missing include for gcc build * cause build.sh to exit if pio tasks fail * [iwm] Return correct error code when there is a status call on non-opened protocol This was incorrectly returning 1, which is also the OK code and causing fujinet-lib to tightly loop as it did not think there was an error. * Revert "Use driver/gptimer.h" This reverts commit a017eba. * Improve relative path resolution (retry) * Added ability for Disk II to write. * Allocate track buffer when starting disk, free it when stopping. * Remove unused track buffer allocation. * Restore version.h. * Use heap_caps_free * Add comments about ack is used as write protect. * apple2: fuji: add lobby boot option * Define more SmartPort command constants. * No Disk II write support on PC. * apple2: update autorun.po. Adds Lobby and DiskII Write support * ATARI: Improve trailing slash in sio_set_prefix * Added SmartPort CONTROL and STATUS commands to clear/get monitor Disk II /DRIVEn enable status. * added config.prg to IEC, basic framework * [iec] add mlb to filesystem for testing * [iec] move mlb to the correct folder * [iec] fix release ATN wait on bus process * [iec] add "t1" test loader program * Add debug_version.py to put commit ID into FN_VERSION_FULL during build without altering include/version.h * No need to check what Slot/Drive Disk II responds to on PC. * Add FujiNet-PC nightly builds/releases * [GHA] re-enable targets in Build FN-PC * [GHA] Get ready for FN-PC nightly! * [iec] sync and troubleshooting protocol * Revert block-size values in devrelay to fixed 512 byte size * Fix string_utils use of contains * [iec] check ATN status before and after EOI * [iec] use timer for EOI detection * [iec] disable interrupts during EOI detect * [iec] do check before calling selectProtocol() * [iec] reset protocol to standard serial before read_command() adjust bus state for device detect * [iec] reset bus data after TALK * ATARI: Corrected 'NCD N1:' to clear mount * [PC] precise gettimeofday() for Windows 7 * By default, don't use most recent modified date since it causes everything to rebuild. * Print characters per second when finished sending file. * Fix D64 to not read past the end of a sector on large reads. * Eliminate a bunch of warnings. * Make conditionals match where setup_card_detect is being used. * ini for my cococart * disable pull resistors on NMI pin 27 * Rebuild IEC state machine so it's handled in ISR (FujiNetWIFI#816) * Eliminate a bunch of warnings. * There doesn't seem to be a contains() method in std::string * Use commit date instead of newest modified file date by default. * Print IEC transfer speed. * Clarify which pins are used for IEC on Lolin D32 * There is no up/down/pull/true/false/high/low/0/1, only assert/release. * Start moving IEC bus access and state management out of virtual devices. * Make IEC state private and move IEC access macros to _protocol.h * Speed up transfer. * Don't blindly read past end of D64 sector. * Whitespace cleanup. * Put state machine into cbm_on_clk_isr_handler() * Add dynamic delaying before starting transfer. * JiffyDOS. * Remove unused functions. * Don't set bus idle when there's no current command. * Remove COMPLEX_WAIT ifdef * Remove legacy IEC_ASSERT_RELEASE_AS_FUNCTIONS * Don't send command on EOI, wait for unlisten. * Don't releaseLines() until ATN is released. * Don't try to do secondary command if there's no primary command. * Don't discard bytes during LISTEN. * Release lines immediately on LISTEN. * Set state to BUS_IDLE when releasing lines. * Fix problems with transferDelaySinceLast() * Revert CoCo WIPs so latest firmware builds work for CoCo (FujiNetWIFI#817) * Revert "Renamed onTimer because it's a global and conflicts." This reverts commit fd750ff. * Revert "Added support for missing DriveWire commands" This reverts commit 7a0f211. * sync latest changes from Meatloaf * skip clk isr after unlisten/untalk add delay after clk release in turnaround * careful with constant changes for s3. * [iec] add PIN_DEBUG remove skip in CLK ISR * [iec] fix ml http client add define for JIFFYDOS replace timer functions in _protocol * [iec] enhance ML HTTP client streaming * [iec] adjustments to ML HTTP client * [iec] loading media via HTTP is almost as fast as from SD now! * Merge branch 'iec-tnfs' * [CoCo] WebUI mark some sections as experimental Printer, Modem, Tape Recorder and CP/M as experimental - hidden unless "Show experimental features" is checked * [CoCo] Add Emulator section into WebUI - Added Emulator Settings to enable/disable Becker port, FN-PC, FN-ESP - Added Serial Port section to configure port and baud rate, FN-PC only - Used BOIP configuration to keep enabled/disabled, host or IP and port - For Atari NetSIO, used BOIP configuration section too - Removed NetSIO configuration section - Introduced tweaks.platform in webui/config yaml to allow platform specific texts and controls in WebUI * [PC] update fnconfig.ini * [coco] Update Becker interface on ESP - On ESP, restart FujiNet after Becker enable/disable Serial port driver on ESP was not happy when loaded/unloaded from web server task. - On ESP, no Becker host:port setting in WebUI Default settings is to listen on all IPs (i.e. WiFi IP on FN-ESP) * fnSystem: fix SD card detect for non Atari platforms * [fuji][sio]: QR encoder initial proof of concept * [fuji][atari] QR: to_bits, to_atascii, dynamic sizes * [fuji][sio] QR: use diagonal line atascii * [fuji] QR: add docs/comments * [fuji] QR: fix non-pc builds * [http] add simple URL shortening to web server * [sio] QR: add url shorten option to encode * [http] fix: include algorithm header for all_of * [http] fix missing include vector * small correction in index.tmpl.html * [PC] fix Windows build * [rs232] tweaks. * [fujinet-pc] fix HSIO with serial port SIO * atari: new Altirra 850 handler and relocator to fix break key crash. modem now checks filesize of handler and relocator * add clock SOS time format back in * Device ESP32-S3 : Add Analogic & I2s Audio Out * Only set the network unit if the command count has a value sent by fujinet-lib that supports it * [FN-PC/Atari] poll NetSIO from sio_copy_file() * [network-protocol][http] try GET if PROPFIND fails. * [network-protocol][http] add 408 timeout to the propfind check. * [network-protocol][http] force http_transaction() on open dir handle if propfind fails. * Be smarter about finding python3 * [iwm][fuji] set read_only prior to mount. * FsSD: remove uneeded ternary for debug print * [network-protocol] do not emit EOF on write. * [printer-emulator] PDF printers should support form feed. * Updated SP-over-SLIP protocol. Note: This is an incompatible protocol change. It requires a companion change in AppleWin. FujiNet makes use of command list bytes there weren't used so far. This only works with CBus because CBus alwaways tranports all possible command list bytes no matter what command is given. Now the SP-over-SLIP protocol shows exactly the same behavior CBus protocol. * Fixed tabs. * [rs232][fuji] autorun.img * [rs232][fuji] add some debug msgs. * [rs232][disk] add disk read debugging. * [rs232] undo atari hacks. * Validate the path in Fujinet "hosts list" browser in the web UI. Before this commit it's possible to escape the configured root by specifying .. in the escaped slash: http://localhost:8000/browse/host/1/%2F..%2F..%2F..%2F --------- Co-authored-by: Jaime Idolpx <[email protected]> Co-authored-by: Thomas Cherryhomes <[email protected]> Co-authored-by: Mark Fisher <[email protected]> Co-authored-by: Chris Osborn <[email protected]> Co-authored-by: mozzwald <[email protected]> Co-authored-by: Andrew Diller <[email protected]> Co-authored-by: Boisy Pitre <[email protected]> Co-authored-by: Noah Burney <[email protected]> Co-authored-by: Jeff Piepmeier <[email protected]> Co-authored-by: Michael Sternberg <[email protected]> Co-authored-by: Jan Krupa <[email protected]> Co-authored-by: Eric Carr <[email protected]> Co-authored-by: robjustice <[email protected]> Co-authored-by: naeloob <[email protected]> Co-authored-by: Oliver Schmidt <[email protected]> Co-authored-by: Tomek Rękawek <[email protected]> * update * tnfs menu changes * updating dir_seek and dir_tell menu options * removing unused option * removing unused method * remove unused var * update * remove planning doc * update * update * updating menu parse --------- Co-authored-by: Jaime Idolpx <[email protected]> Co-authored-by: Thomas Cherryhomes <[email protected]> Co-authored-by: Mark Fisher <[email protected]> Co-authored-by: Chris Osborn <[email protected]> Co-authored-by: mozzwald <[email protected]> Co-authored-by: Andrew Diller <[email protected]> Co-authored-by: Boisy Pitre <[email protected]> Co-authored-by: Noah Burney <[email protected]> Co-authored-by: Jeff Piepmeier <[email protected]> Co-authored-by: Michael Sternberg <[email protected]> Co-authored-by: Jan Krupa <[email protected]> Co-authored-by: Eric Carr <[email protected]> Co-authored-by: robjustice <[email protected]> Co-authored-by: naeloob <[email protected]> Co-authored-by: Oliver Schmidt <[email protected]> Co-authored-by: Tomek Rękawek <[email protected]>
FozzTexx
added a commit
to FozzTexx/fujinet-platformio
that referenced
this pull request
Jul 24, 2025
* Eliminate a bunch of warnings. * There doesn't seem to be a contains() method in std::string * Use commit date instead of newest modified file date by default. * Print IEC transfer speed. * Clarify which pins are used for IEC on Lolin D32 * There is no up/down/pull/true/false/high/low/0/1, only assert/release. * Start moving IEC bus access and state management out of virtual devices. * Make IEC state private and move IEC access macros to _protocol.h * Speed up transfer. * Don't blindly read past end of D64 sector. * Whitespace cleanup. * Put state machine into cbm_on_clk_isr_handler() * Add dynamic delaying before starting transfer. * JiffyDOS. * Remove unused functions. * Don't set bus idle when there's no current command. * Remove COMPLEX_WAIT ifdef * Remove legacy IEC_ASSERT_RELEASE_AS_FUNCTIONS * Don't send command on EOI, wait for unlisten. * Don't releaseLines() until ATN is released. * Don't try to do secondary command if there's no primary command. * Don't discard bytes during LISTEN. * Release lines immediately on LISTEN. * Set state to BUS_IDLE when releasing lines. * Fix problems with transferDelaySinceLast()
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a big change which changes the state machine so that there are only effectively two states: Capture Byte (
BUS_ACTIVE) and No Capture Byte (BUS_IDLE). The state machine handles bytes as they come in through the CLK ISR handler and queues them up. After a full command is received then it is queued and sent off where theservice()routine will handle it outside of the ISR.Manual testing that you should do before approving this PR:
http://ayce.fozztexx.com/tnfs/iec-test.prg. Let it run for half a dozen loops. Since http is still buggy, it's best to copy the program and its specialbigprizesdata file direct to the SD card.Cand view the FujiNet config.