This Week in Fujinet covers a few weeks in one go, so strap in. I’ve now realized that this early fall season may in fact be the quiet season, despite what I’ve said in the past. Many platforms have quieted down recently and while it has been generally a good thing- allowing the Apple2 work to get buttoned down and ready- there is other work happening as new people land in the server and begin to dive into the programming side of the FujiNet. The usual suspects are here in this post: the AppleII work pushes on, Meatloaf silently bakes into the FujiNet ecosystem, and the Atari gets some cool advanced game features. CP/M – which is something I’ve really ignored my entire retro-computing life is making an re-appearance due to the multi-system support it lends to the interactive fiction authors. And of course FujiNet has been running a CP/M emulation for years…
This posting specifically covers:
Week 39 – Sep 25 – Oct 1
Week 40 – Oct 2 – Oct 8
Week 41 – Oct 9 – Oct 15
Housekeeping
You can find more information about the FujiNet project and purchasing a device at these locations:
- FujiNet Official Site
- Buy A FN Device from Vintage Computer Center
- Buy A FN Device from Arcade Shopper
- Antonio @masteries on AA Sells FujiNets from Spain – now Apple2 FN
- GH Project Wiki Pages for Devices Hacking & Coding
- Join our Discord and learn and contribute
- The FujiNet Facebook Group has interesting discussions
Check Mr. Robot’s Live Fujinet Server Status – where to connect with your FN
FujiNet Flasher – keep your FN up2date for best results.
Cool New Things
High Score Enabled Atari Games
Thomas CH has created a new system for tracking & recording high scores for Atari classic games. See the video below announcing this new feature. More and more games are being modified to support this new exciting feature.
You can view the current Collected High Scores are on scores.irata.online.
This seems to work by modifying the ATR image header with a new flag, and FN now understands when such a ATR is loaded, and it will intercept calls to write the high-score to the disk and instead send them to the server that TCH maintains. The results are viewable on the scores pages above. No reason this couldn’t be done some how for other platforms and have multi-platform high score boards.
Hibernated2 on CPM
Stefan Vogt of Puddle Soft and Hibernated 1 (an amazing infocom style text adventure game released for a large number of retro platforms) is working on his next game, Hibernated 2. Apparently this game is so awesome and complex it requires the use of the z5 Infocom zmachine which was _not_ released on the Atari 8bit. In order to support the Atari 8bit Stefan embarked upon the quest to use CPM as an intermediate os to handle the z5 engine and allow H2 to be played on a wider array of systems. He has a CPM zmachine already – Vezza – but CPM on the Atari required the albatross ATR-8000 hardware to provide a Z80 and implement CPM– or did it? No silly, the FujiNet does the Z80 and CPM for you in code! You just need a 80col term (DT80) for your Atari and you can easily access CPM. More info about CPM on the FujiNet is on the wiki.
Remote Infocom Client
Shawn Jefferson plopped into the discord and started hacking away on an amazing idea. Following the thread of interactive fiction that has surfaced in the past few months, Shawn has started a client for Atari, written in C, that will connect to a remote server which can execute and ‘play’ zmachine games for you. It’s like Infocom gaming on the cloud. With the client that Shawn is building you can connect from an Atari and play (and persist the game state if you need to stop) any zmachine games that Shawn loads up on his server. The client and server pass JSON back and forth. FujiNet does the heavy lifting here for the Atari client.
This is another incredible example of FujiNet’s power for these platforms. And there is no reason that clients couldn’t be written up for ADAM, Apple2 or other supported platforms. And I think the way this may be setup would allow playing a single game across various different platform clients if you decided to do that in the future. More info on this as the client shapes up and Shawn has something to release.
Recent Videos
- 8-Bit Show And Tell – VCMW and Meatloaf
- Commodore Users Europe – Meatloaf and FujiNet for C64 – Jaime Idolpx * Commodore Users Europe * 17th of September 2022
- Andy Diller (me) – FujiNet Code Evolution Overview
- tschak909 – High Score Enabled Games
- apc – Visit FujiNet CP/M with Altirra
- Red Rock Video Productions – A Demo of the Copy Features for Fujinet on the Adam
- kikems retro – Retrowiki Reanimator server with fujinet tnfs services.
- hMST – Masteries – manufacturing Apple2 Fujinets in EU!
Shout Outs
I missed this when it came out, but catching up on my Antic the Atari 8-bit Podcasts I heard a nice call out to my posts here at AtariOrbit from Kay on the 91st episode of the podcast “HAM Atari.” Jump to 26 min in to hear the call out, but listen to the entire thing.
Code Updates
Just some of the many commits to the project for the past few weeks.
- JeffP – lots of commits to finish SP timing.
- TCH – starting to figure out CPM support for SmartPort (so apple2 can use the CPM emulation running on the ESP32)
- JanK – SIO over UDP
- DaBaDa79 added an autorun feature to NOS!
1. added a command “AUTORUN” (id #27) which does
NTRANS 3
SOURCE TNFS://BOOT.TNFS/AUTORUN/AUTORUN.BAT
2. injected the AUTORUN command at the entry point of DOS (just before the CP loop)
3. added a DNS to my router for the hostname BOOT.TNFS (alias for my TNFS server)Platforms
ADAM
Ron Klein has a kitted out ADAM and continues working and testing and using FN for ADAM.
HenryR posted “official unreleased SmartBasic from Coleco that was patch to work with a disk drive” to use for future ADAM N: device hacks and fun. It already just works with FN-
Henry R: When our type ‘catalog’ it will display the contents of the disk in the Fuji drive automatically
There was some discussion of the MIB238-WiFi board and how it compares to FN.
8bit_era (Stefan Vogt) popped in and was asking about CPM support on ADAM in related to his upcoming new game, Hibernated 2 – which he is porting to CPM and looking to release for various retro platforms that can run CPM. Which the ADAM can.
Apple 68k
Tashtari joined the server and has been looking around at the start of the Mac journey. Tash has already created a suite of amazing devices that emulate the DCD and localtalk for the classic Macs. He has been looking into a floppy device and is interested in where the FN could go for 68k macs. Tash has already provided a bunch of useful info for the project.
This platform is still is slumber mode until the Apple2 SP is finished and done. JeffP has recently been moving core IWM parts of his work out of the SmartPort sections, which will only make implementation for the Mac that much more straighforward when the time comes to work on this.
Apple2
Thomas Cherryhomes has fleshed out an Apple2 CPM terminal and placed it up for someone to pick up and run with.
Thom Cherryhomes: @Jeff Piepmeier @here I have placed the current state of apple II CPM in master.
There is a “terminal” on apps in the Apple II/NEEDSWORK folder.
If anyone wants to hack on it!
…
Thom Cherryhomes: Yeah, you know, it negates the need for a softcardMichael Sternberg has kicked out some starts at enhancing the Apple FNTools:
Michael Sternberg: @Thom Cherryhomes The tar.gz file contains my first swing at providing a scaffold for dispatching multiple commands. If one of its commands is not found, it passes control to the next possible extended command.
robj has dropped a number of useful apps that test the IWM and SP parts of the FN implementation, to help nail down the very last of the timing issues across all the supported SP boards and systems.
Then robj dropped a new set of timings that helped JeffP with his SPI timings for the DIY SoftSP:
robj: I added a debug print in the iwm_read_packet_timeout routine to print out the spirx_byte_ctr after the packet has been received and ran over some different combo’s of hardware, interesting. Seems I need to have a bit of a look at the Liron, did not seem to like the II+. This is the results I see:
Jeff Piepmeier: you figured it out! I wasn’t making the SPI capture long enough. I finally did the math based on logic analyzer captures and that fixed it.
Jeff Piepmeier: running the whole WRITE test now on SSC DIY SoftSPMore rounds of testing across the systems ensued with this break-thru.
Ron Klein and RodneyR tested- Ron found a small bug that robj and Jeff quickly fixed that allowed the IIGS back to running GSOS without any issues.
TCH showed an update on the Apple2 version of the FujiNet news reader….
JeffP ruminated on what is going on w/ timings and working within the constraints of a real-time-os:
Jeff Piepmeier: thinking about the architecture, requirements, constraints to make the ESP service the SP bus but do other things as well. We need to be able to exploit the time between SP commands and the peripheral response. Does the SP firmware timeout on the response to a read or status? If not, we can let the ESP do all sorts of other stuff before responding. Does the SP firmware timeout after a write command before the peripheral raises ACK to say it’s ready to be written to? If not, then there’s a bunch of time available to do other things.
We have a requirement that we start listening for a command packet less than 10’s us (on IIgs it’s 27 us) between ENABLE and REQ. I’m wondering if we can buck ESP good practice on ISR’s and put the whole command receiving routine in an ISR that is triggered by ENABLE? It’s about 1 ms of work to go from ENABLE to REQ de-assert. Could that ISR have high enough priority that it’s guaranteed to be called within 27 us of being triggered? Typical ISR has 2 us latency from what I can read online. That is plenty fast for doing a command receive. I’m wondering if we can have some lower latency task that is figuring out when it’s OK to respond sending a packet or receiving a packet? It could throw control or signal it’s time to do that work? We’d disable interrupts like we do now and take care of the data. I guess that’s not immune to higher-priority tasks like the network stack.
I don’t know … just rambling and brainstorming. Wondering if there’s a way to use the RTOS to our advantage instead of trying to work around it.
TCH wants to find a good useable graphics libraries for cc65 and Apple2- which would allow a consistent and fancy look for some of these new Apple2 tools and apps he has been working on.
a2graph for cc65 was mentioned, as well as g3 (but for Aztec C), and fdraw.
Michael Sternberg continued with some contributions to stabilzing FNTools for Apple2:
Michael Sternberg: FNTOOLS was previously getting clobbered by other extended commands. This should now be corrected.
JeffP is working to separate out the IWM and SP code:
Jeff Piepmeier: I realize my iwm class is a mixture of the “bus” software architecture developed starting with the Atari and low-level smartport bus handling. So I think i’ll break out the low-level stuff into an iwm_ll or something. That might make it easier to replace smartport with slot i/o in the future.
And apparently Total Replay v5 is about to be released, as well as a Angry Birds for Apple2…
Ron Klein: Marc Golembeck was nice enough to allow me to join his list of testers for Angry Birds. Loads up great with FujiNet. Just getting started with testing on my IIgs.
Atari 8bit
apc released SIO over UDP! This will allow someone using the Altirra Atari Emulator to connect to a REAL FujiNet device and use it… over UDP. Before this users were limited to the ‘virtual’ FN running with the python-based bridge- an 100% emulated solution. But this left out a lot of things that exist on a real FujiNet device. Now one can test a physical FujiNet while running the Atari side completely in emulation. Incredible.
We also found out apc stands for Atari Personal Computer, a phrase that the human apc liked and used. And has been using for software for a while, below is a screen shot from software that was created for the Atari back in the 90s.
mnemo mentioned that BW-DOS has been disassembled and is realized on GH. This is a SPX compatible DOS and could be used now to allow better integrated Fujinet support in a Sparta-Like system, as SDX itself remains closed-source and has issues with FujiNets.
There is a German posting in abbuc forums– here is an English translation via Goooooogle.
Mnemo also mentioned screen flicker on 800XL that was potentially caused by the FN… adding a cap stopped it.
mnemo: Hmmm, a post on abbuc forum mentions a 470 uF cap on the Fujinet’s SIO between Gnd and +5V to remove screen flicker and wifi problems when FujiNet is working. Anyone saw that?
I also have some screen flicker on my 800XLTalkieToaster read that and modified his FN, which resolved the issue…
TalkieToaster: yes, completely stopped the video disruption on my atari 800.
This completely eliminated the video interference I was getting during SIO use on my Atari 800. Never had an issue with my 800XL @mnemo but I could have just been lucky. What was noted is that if the FujiNet is powered by USB that this removes the problem as well.This could be added on future revisions of the FN device for Atari if confirmed by Moz.
A new user, CrossBow dropped in with some requests for help- he was repairing (adding ram) to an Atari400 and wanted to use a FujiNet to load some software to verify that the RAM install was working. He had issues getting the FN up and working on the 400. After hooking up some debugging and monitoring he was getting back invalid checksums. The 400 had bent SIO pins but CB tested the pins back into the system and they had continutiy. No idea if he was ever able to get his test run.
TCH announced all the Atari DOS images on his server had updated N handlers!
Thom Cherryhomes: atari8bit #FujiNet All of the DOS disks on the apps.irata.online TNFS have been updated and tested with the latest N: handler. Is there a DOS we missed? help me add it!
With the talk about CPM, 80 columns and it’s use for the upcoming Hibernated1, Andy Diller (me) was trying to find a way to use the XEP-80 II hardware to provide the 80 col screen necessary for CPM use on the Atari. Using the XEP-80 would obliviate the need for the DT-80 cart, and it would provide clean readable true 80 columns on the Atari. Just need to connect to the CPM emulation running on the FN… which requires an ADM3 terminal to access. VT is not supported on the CPM. I needed to load a disk that: had a FN handler, had a XEP handler, provided a terminal with ADM3 terminal support and then I should be able to connect up to the CPM on the FN. Getting those things together isn’t easy and I’m not done yet.
TCH pointed me to an interesting project- vt – on GH from Cathryn Mataga, an old-school Atari games developer. Her app does vt100 support with the original XEP-80 but locked on w/ the XEP-80 II. Hopefully I’m able to contact her and we can see if it can be updated to support the XEP-80 II. There is also a ADM3 terminal that TCH wrote in the FujiNet repo, which I’m looking at to see if it can detect the XEP-80 II and be used for this.
Shawn Jefferson updated the status on his client for the cloud-zmachine (see above).
Shawn Jefferson: I’m still working on the client to the Z-machine API. I have a server setup with the latest version of Frotz and have things configured so that I can parse the output and display everything, including the status line. That was bit of a pain, largely due to my NAS running FreeBSD, which is where I’m running a chroot jailed version of that API.
apc showed a screen shot of a working example of his new SIO via UDP. Using Altirra he connected to a real FN device and was able to use the CPM emulation running on the ESP32!
apc: i’ve added recent cpm changes into branch and did a test with altirra. it’s crazy slow (byte i/o needs some optimization in netsio) but it loads ๐
Think about this for a second, it makes my head hurt.
- APC has a system running Windows, running the Altirra application, running an emulated Atari 800 OS via emulated 6502 cpu.
- the Fujinet bridge software is also running on the PC, connected as a virtual device to the virtual Atari- sending out SIO packets to and from the virtual Atari via UDP packets, over ethernet which is over wifi to…
- A real FujiNet device, sitting there, just powered up and on wifi, getting those SIO packets.
- The ESP32 on the FujiNet device is running an emulated Z80 cpu, which is running CPM 2.2.
- That CPM system is running the Vezza application, which is running a z-code interpreter (a tiny VM) that is running Hibernated 1 zcode.
- apc can play the game!
This, to me, is simply bonkers. Maybe the most bonkers thing I’ve seen in the retro community in a while. But bonkers in a really good way. Amazing work apc.
apc: yeah, altirra is checking for network data in 16-20 ms intervals, not problem for byte arrays (data blocks), but byte-by-byte stream is horribly slow (cpm case)
This demo also brought some kudos from 8bit_era, who in turn introduced Sijnstra, who recently joined the discord and is the code behind the VEZZA application.
apc: Hi!
I am still fascinated there is so many things to discover with my childhood computer ๐ CP/M, IF games, VMs to run them. Great job!8bit_era: IF games for old machines are having a new height actually
8bit_era: Fun fact: both Marc Blank and Amy Briggs have played Hibernated ๐TCH announced the High Score Storage he has implemented (see above at top of post). How did he do it? GH has the deets.
What this looks like to the FujiNet:
Scores are maintained at http://scores.irata.online/
Lots of discussion on adding games to support the new high scores. More games added…
Lots of people competing now with these games to get their own initials up there on the High Score list. Waiting for someone to make a ATR disk that just hacks in their own initials without having to play the games…
CPM
8bit_era is here and working on things to ensure those of us with Atari’s and FujiNets will be able to play his next Hibernated game, which will run on CPM for many systems that can’t run the z5 Infocom engine (like Atari).
And mnemo pointed me to franny to help w/ my CPM woes. I am just reading that now and will have to check into this project!
Other Platforms
jskists is working on a RC2014 implementation of FN. He’s following the RS232 implementation for now, but TCH suggested he look elsewhere and the RS232 implementation isn’t going to be useful to him. jskists will do some more research about Atari SIO, since many of the fundamental aspects of FN revolve around it, for better or worse.
PC-Compatibles
TCH is slowly working out the serial routines to get this platform uplifted…
Thom Cherryhomes: apologies anyone who is following, I am stuck in a quagmire of debugging serial routines and the higher level communication routines
I can send ONE command very well
I can’t send TWO commands back to back.
something internally is getting fudged (it’s not the FIFO)
@here if anyone wants to hack on the comms routines, I will post on github.Wrap-up
So passes another three weeks of FujiNet development. It’s interesting to see the Atari platform start to get these high-level features that build off the rich base functionality of the FujiNet. While the Atari users win in the short term, these examples can clearly and explicitly show users and hackers on the other platforms what their systems can do once they achieve a mass of developer input and exploration. CPM is also an example of a cross-platform classic retro OS which is being used by modern authors of games. More use of the CPM emulation in FN will be a welcome development across all the platforms that FN supports.
Images are from MrRobots cool twitter feed of 8bit artwork and startup screens.