Skip to content

Commit 0c24a70

Browse files
diggerbonkidolpxtschak909markjfisherFozzTexx
authored
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]>
1 parent acf50e9 commit 0c24a70

File tree

252 files changed

+12313
-3969
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

252 files changed

+12313
-3969
lines changed

.github/workflows/build-fujinet-pc.yml

Lines changed: 62 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@ on:
1616
# - Release
1717
# default: 'Debug'
1818
prepRelease:
19-
description: 'Prepare GitHub Release (Draft)'
19+
description: 'Prepare GitHub Release Draft'
2020
type: boolean
2121
default: false
22-
23-
env:
24-
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
25-
BUILD_TYPE: ${{ github.event.inputs.buildType }}
22+
23+
schedule:
24+
- cron: '12 3 * * *'
25+
26+
# env:
27+
# # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
28+
# BUILD_TYPE: ${{ github.event.inputs.buildType }}
2629

2730
jobs:
2831
build:
@@ -34,13 +37,17 @@ jobs:
3437
runner: ubuntu-22.04
3538
target: ubuntu-22.04-amd64
3639
default-shell: bash
37-
# - name: Ubuntu 20.04
38-
# target: ubuntu-20.04-amd64
39-
# runner: ubuntu-20.04
40-
# default-shell: bash
41-
- name: macOS 12
42-
target: macos-12
43-
runner: macos-12
40+
- name: Ubuntu 24.04
41+
runner: ubuntu-24.04
42+
target: ubuntu-24.04-amd64
43+
default-shell: bash
44+
- name: macOS 13
45+
target: macos-13
46+
runner: macos-13
47+
default-shell: bash
48+
- name: macOS 14
49+
target: macos-14
50+
runner: macos-14
4451
default-shell: bash
4552
- name: Windows
4653
target: windows-x64
@@ -66,6 +73,7 @@ jobs:
6673
shell: ${{ matrix.os.default-shell }}
6774
outputs:
6875
fujinet_version: ${{ steps.version.outputs.fujinet }}
76+
build_date: ${{ steps.version.outputs.build_date }}
6977

7078
steps:
7179
# Setup MSYS2 on Windows
@@ -165,6 +173,7 @@ jobs:
165173
run: |
166174
./fujinet -V
167175
echo "fujinet=$(./fujinet -V | awk '{if(tolower($1)=="fujinet-pc") print $2}')" >> $GITHUB_OUTPUT
176+
echo "build_date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
168177
169178
- name: 'Tar dist files'
170179
working-directory: build
@@ -179,15 +188,15 @@ jobs:
179188
path: build/fujinet-pc-${{ matrix.fujinet_target }}_${{ steps.version.outputs.fujinet }}_${{ matrix.os.target }}.tar
180189

181190
release:
182-
if: ${{ github.event.inputs.prepRelease == 'true' }}
191+
if: ${{ github.event_name == 'schedule' || github.event.inputs.prepRelease == 'true' }}
183192
# Create GitHub release
184193
runs-on: ubuntu-latest
185194
name: Release
186195
needs: build
187196

188197
steps:
189198
- name: Download build artifacts
190-
uses: actions/download-artifact@v3
199+
uses: actions/download-artifact@v4
191200
with:
192201
path: release
193202

@@ -200,12 +209,48 @@ jobs:
200209
for D in fujinet-pc-*_*ubuntu* fujinet-pc-*_*macos*; do gzip -9v $D/fujinet-pc-*_*.tar; done
201210
for D in fujinet-pc-*_*windows*; do (cd $D; F=(fujinet-pc-*_*.tar); tar -xvf $F; rm -f $F; zip -r ${F%.*}.zip fujinet-pc-*); done
202211
203-
- name: Release
204-
uses: softprops/action-gh-release@v1
212+
- name: Prepare Release Draft
213+
if: ${{ github.event.inputs.prepRelease == 'true' }}
214+
uses: softprops/action-gh-release@v2
205215
with:
206216
name: "FujiNet-PC ${{ needs.build.outputs.fujinet_version }}"
207217
tag_name: ${{ needs.build.outputs.fujinet_version }}
208218
draft: true
209219
files: |
210220
release/fujinet-pc-*_*/fujinet-pc-*_*.tar.gz
211-
release/fujinet-pc-*_*/fujinet-pc-*_*.zip
221+
release/fujinet-pc-*_*/fujinet-pc-*_*.zip
222+
223+
- name: Create Nightly Build Release
224+
if: ${{ github.event_name == 'schedule' }}
225+
uses: softprops/action-gh-release@v2
226+
with:
227+
name: "FujiNet-PC Nightly ${{ needs.build.outputs.build_date }}"
228+
body: |
229+
FujiNet-PC **${{ needs.build.outputs.fujinet_version }}** nightly builds for: Apple 2, Atari 8-bit and Tandy Color Computer
230+
⚠️ There is NO guarantee that these builds work!! ⚠️
231+
tag_name: nightly_fn_pc_${{ needs.build.outputs.fujinet_version }}
232+
prerelease: true
233+
make_latest: false
234+
files: |
235+
release/fujinet-pc-*_*/fujinet-pc-*_*.tar.gz
236+
release/fujinet-pc-*_*/fujinet-pc-*_*.zip
237+
238+
postrelease:
239+
if: ${{ github.event_name == 'schedule' }}
240+
# Delete old nightly releases
241+
runs-on: ubuntu-latest
242+
name: Post-Release
243+
needs: release
244+
245+
steps:
246+
- name: 'Checkout'
247+
# Checkout, to make "gh" command working
248+
uses: actions/checkout@v4
249+
250+
- name: Delete old nightly releases
251+
run: |
252+
gh release list --json tagName,createdAt \
253+
--jq 'map(select(.tagName | test("^nightly_fn_pc"))) | sort_by(.createdAt)[0:-3][].tagName' |\
254+
xargs -I% sh -c 'echo Deleting release %; gh release delete % --cleanup-tag'
255+
env:
256+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,6 @@ data/webui/device_specific/BUILD_ATARI/fnconfig.ini
5555
# ignore any releases downloaded via fujinet_firware_uploader
5656
fujinet_releases/*
5757

58+
*~
59+
*.orig
60+
*.rej

boards/esp32-s3-wroom-1-n16r8.json

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
{
22
"build": {
33
"arduino": {
4-
"ldscript": "esp32s3_out.ld",
5-
"partitions": "default_16MB.csv",
6-
"memory_type": "qio_opi"
4+
"ldscript": "esp32s3_out.ld"
75
},
86
"core": "esp32",
97
"extra_flags": [
@@ -14,16 +12,17 @@
1412
"f_cpu": "240000000L",
1513
"f_flash": "80000000L",
1614
"flash_mode": "qio",
17-
"mcu": "esp32s3"
18-
},
15+
"mcu": "esp32s3",
16+
"variant": "esp32s3",
17+
"partitions": "fujinet_partitions_16MB.csv"
18+
},
1919
"connectivity": [
2020
"wifi"
2121
],
2222
"debug": {
2323
"openocd_target": "esp32s3.cfg"
2424
},
2525
"frameworks": [
26-
"arduino",
2726
"espidf"
2827
],
2928
"name": "ESP32-S3-WROOM-1 N16R8",
@@ -36,6 +35,6 @@
3635
"require_upload_port": true,
3736
"speed": 460800
3837
},
39-
"url": "https://www.wemos.cc/en/latest/s3/index.html",
40-
"vendor": "EspressIf"
38+
"url": "https://github.com/FujiNetWIFI/fujinet-firmware",
39+
"vendor": "FujiNet Project"
4140
}

boards/esp32-s3-wroom-1-n8r8.json

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"build": {
3+
"arduino": {
4+
"ldscript": "esp32s3_out.ld"
5+
},
6+
"core": "esp32",
7+
"extra_flags": [
8+
"-DBOARD_HAS_PSRAM",
9+
"-DARDUINO_USB_MODE=1",
10+
"-DARDUINO_USB_CDC_ON_BOOT=1"
11+
],
12+
"f_cpu": "240000000L",
13+
"f_flash": "80000000L",
14+
"flash_mode": "qio",
15+
"mcu": "esp32s3",
16+
"variant": "esp32s3",
17+
"partitions": "fujinet_partitions_8MB.csv"
18+
},
19+
"connectivity": [
20+
"wifi"
21+
],
22+
"debug": {
23+
"openocd_target": "esp32s3.cfg"
24+
},
25+
"frameworks": [
26+
"arduino",
27+
"espidf"
28+
],
29+
"name": "ESP32-S3-WROOM-1 N8R8",
30+
"upload": {
31+
"flash_size": "8MB",
32+
"maximum_ram_size": 327680,
33+
"maximum_size": 8388608,
34+
"use_1200bps_touch": true,
35+
"wait_for_upload_port": true,
36+
"require_upload_port": true,
37+
"speed": 460800
38+
},
39+
"url": "https://github.com/FujiNetWIFI/fujinet-firmware",
40+
"vendor": "FujiNet Project"
41+
}

build-platforms/platformio-fujinet-coco-devkitc.ini

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,18 @@ build_platform = BUILD_COCO
33
build_bus = DRIVEWIRE
44
build_board = fujinet-coco-devkitc
55

6+
[env]
7+
upload_port = /dev/ttyUSB0
8+
upload_speed = 460800
9+
monitor_port = /dev/ttyUSB0
10+
monitor_speed = 115200
11+
612
[env:fujinet-coco-devkitc]
713
platform = espressif32@${fujinet.esp32_platform_version}
814
platform_packages = ${fujinet.esp32_platform_packages}
915
board = fujinet-v1-8mb
1016
build_type = debug
1117
build_flags =
1218
${env.build_flags}
13-
-D PINMAP_COCO_DEVKITC
19+
-D PINMAP_COCO_CART
20+
-D FORCE_UART_BAUD=115200
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[fujinet]
2+
build_platform = BUILD_COCO
3+
build_bus = DRIVEWIRE
4+
build_board = fujinet-coco-esp32-s3-wroom-1-n16r8
5+
6+
[env]
7+
upload_port = /dev/ttyACM1
8+
upload_speed = 460800
9+
monitor_port = /dev/ttyACM1
10+
monitor_speed = 115200
11+
12+
[env:fujinet-coco-esp32-s3-wroom-1-n16r8]
13+
platform = espressif32@${fujinet.esp32_platform_version}
14+
platform_packages = ${fujinet.esp32_platform_packages}
15+
board = esp32-s3-wroom-1-n16r8
16+
build_type = debug
17+
build_flags =
18+
${env.build_flags}
19+
-D PINMAP_COCO_ESP32S3
20+
-D FORCE_UART_BAUD=115200
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[fujinet]
2+
build_platform = BUILD_COCO
3+
build_bus = DRIVEWIRE
4+
build_board = fujinet-coco-esp32-s3-wroom-1-n8r8
5+
6+
[env]
7+
upload_port = /dev/ttyACM1
8+
upload_speed = 460800
9+
monitor_port = /dev/ttyACM1
10+
monitor_speed = 115200
11+
12+
[env:fujinet-coco-esp32-s3-wroom-1-n8r8]
13+
platform = espressif32@${fujinet.esp32_platform_version}
14+
platform_packages = ${fujinet.esp32_platform_packages}
15+
board = esp32-s3-wroom-1-n8r8
16+
build_type = debug
17+
build_flags =
18+
${env.build_flags}
19+
-D PINMAP_COCO_ESP32S3
20+
-D FORCE_UART_BAUD=115200
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[fujinet]
2+
build_platform = BUILD_COCO
3+
build_bus = DRIVEWIRE
4+
build_board = fujinet-foenix-lolin-d32-dw
5+
6+
[env:fujinet-foenix-lolin-d32-dw]
7+
platform = espressif32@${fujinet.esp32_platform_version}
8+
platform_packages = ${fujinet.esp32_platform_packages}
9+
board = fujinet-v1
10+
build_type = debug
11+
build_flags =
12+
${env.build_flags}
13+
-D PINMAP_FOENIX_OS9_D32PRO
14+
-D FORCE_UART_BAUD=230400 ; Set baud rate for Foenix F256
15+
;-D INVERT_SERIAL ; Invert the RX/TX serial pins (e.g. Foenix F256)

0 commit comments

Comments
 (0)