This Week In FujiNet is being released the weekend after Thanksgiving. It’s covering Week 46 and Week 47. With Thanksgiving taking up a big chunk of 47 you would think things would have slowed down, ha, apparently the holidays have motivated quite a few people to make good advances on the FujiNet project just this past week. Very interesting things continue to happen each day and it’s always fascinating to see what combination of questions, conjecture, coding and solutions spur on advances in one platform vs. another.
This posting covers:
Week 46 – Nov. 13 -19th
Week 47 – Nov. 20 – 23rd (half of the week)
- I was a guest on Antic, the Atari Podcast where I was able to talk about all sorts of interesting FujiNet developments and progress, hopefully reaching even more people that don’t read these posts or wander into the Facebook group. Listen to ANTIC Episode 93 – All FujiNet, All The Time at the site linked or wherever you grab podcasts.
- AppleII FujiNet now can print to the FujiNet Virtual Printer (implementation led by Thom Cherryhomes)
- DiamondGOS for Atari got cc65 bindings from Thom Cherryhomes for easier development
- AppleII Fujinet has Real Time Clock support – reads time from the FujiNet (contributed by ivanizag)
- The modem implementation was untangled from the original Atari code (sio) and moved into it’s own lib (contributed by markjfisher)
- JeffP continued pushing into Disk II support for AppleII
Where to purchase a device:
- FujiNet Official Site
- Buy A FN Device from Vintage Computer Center
- Buy A FN Device from Arcade Shopper
- Purchase a FujiNet device from TBA – The Brewing Academy
- Antonio @masteries on AA Sells FujiNets from Spain – now Apple2, Atari & ADAM
You can find more information about the FujiNet project
- 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.
- AppleII + fujinet by unmotivated dev – a very nice run thru of Fujinet on Apple2 setting up a ASM env using all four disk slots on the FujiNet
- Playing with the LEDS on the new FujiNet/Meatloaf hardware – a short by Jamie Idolpx
RonKlein has been on a huge roll programming for the ADAM. Using some samples from TCH he has rolled out a more polished netcat app for ADAM, which will include a nice directory of hosts to connect to with your ADAM. He’s been working on 64 column support for maximum screen density and scroll speed.
Ron Klein: Yes, it looks like a mess. Learning about colors, screen positions, transparency, etc.. Most of this is through trial and error and the moment.
Ron Klein: I think I can get 64 columns to work. Network support has been added to this.
mozzwald: Looks like a real adam application 🙂
Thom Cherryhomes: nice 🙂
A lot is going on in the AppleII space these past two weeks. A number of new FujiNet devices were introducted to the Apple and are either available or very close to being available.
A video to watch – the best run down of Apple2 Hardware on the tubes. Refresh your Apple2 knowledge:
Stephen Edwards “Inside the Apple II”
ivanizag popped in and provided a real time clock for the FN device.
ivanizag: Right. There is code on how to use the Fujinet RTC directly or via the Prodos Driver there. Using a ProDOS driver is tricky. It have to be the first .system file on the volume. The code of the driver and more general info on prodos drivers is here https://github.com/a2stuff/prodos-drivers. And there is a built driver binary in https://github.com/FujiNetWIFI/fujinet-apps/blob/master/clock/apple2/dist.apple2/fn.clock.system
jeffp continued his work to re-factor the IWM code in order to allow DISKII support for the FujiNet.
Jeff Piepmeier: ok, got the file i/o calls out of disk.cpp and into mediatypepo.cpp
Jeff Piepmeier: that’s all for now, but one step closer to woz support
A couple of new members came up and were able to order the two extra A2 boards that Moz had left- AdamMcG and jtsom both ordered and received their boards and started to setup and help test and code.
Thom Cherryhomes ported over the Mastodon client to Apple2.
Thom Cherryhomes kicked of the Apple2 printer support with this:
Thom Cherryhomes: @here To anyone who might want to pick this up:
If we were to specify the commands (and how) to talk to the virtual modem and printer over smartport, could somebody write code to put on ROM (and potentially on a card) to intercept calls from slots 1 and 2 and send them to the printer and modem respectively? 🙂
Some furious coding and a few days later…
Thom Cherryhomes: writes a “dumb typewriter” program
if i’ve implemented the device right, all that is needed is to simply call a write command
so should be Really freakin easy to cram into say a 256 byte rom
Thom Cherryhomes: @jeffmazur printer is up.
So basically, any compatibility ROM can just send a smartport WRITE command to the printer device, and it will get rendered using the currently running virtual printer.
* Find smartport dispatcher, use it to…
* scan for the device named PRINTER, get its device #
* send WRITEs to it any time you need to print something
jeffmazur: I’ll take a stab at it later today. The first step is unnecessary since the dispatcher in the //c is known. Getting the device number could be done in the p1init routine and sending characters in the p1write routine. Looks like there’s plenty of room to replace the existing routines with the FN ones.
Jeff Mazur began to write a sample ROM for IIC with collab from TCH and robj.
jeffmazur: OK. I have a patched ROM but no way to see if it works!
robj: the IIc+ seems to repeat the unit#1 as unit#5, so then from then on, the rest of the devices are numbered 1 higher on it
Then NorthF popped in with some help and fixes.
NorthF: I have attached an improved version of sp. c (and dumbtype.c).
The change is minimal.
I think the sp_find_printer() function can’t find the printer device properly because there is a problem with the comparison logic of the device name.
For comparison, the device name is the same length, and if the name is different, 0 is returned and the device check failed.
However, in the IIcPlus environment, there is a “NETWORK” with the same length (7) characters before “PRINTER” and determines that the device check failed before checking “PRINTER”.
The above parts have been corrected by sp. c and dumbtype. c.
I tested the operation with IIcPlus and IIc, but I didn’t test with IIGS or IIe.
After some firmware fixes from TCH to the Apple2…
jeffmazur: YAY!! That fixed it. Am printing now with PR#1. Need to check some other programs (PrintShop)
A lot of work between Thom CH, JeffM, RobJ, JeffP to sort out printing to a slot, getting at least one virtual printer setup (Imagewriter II was chosen) and lots of trial and error…
jeffmazur: Here is the binary image you can burn to a 32K (E)EPROM to replace the //c system ROM. Or load into ROMXc if you have one.
I’ve done testing from BASIC, cataloging disks, CopyIIPlus, etc. All works, but be patient! Helps to watch the debug to know when it’s done printing (else, wait for the cursor or other indication that it’s done). PR#0 then will get you back.
andy diller: You need a new ROM to print? or is that part of the grappler?
Thom Cherryhomes: you need rom code in the slot 1 address space to redirect to the fujinet printer @jeffmazur wrote one for the //c (not //c+ yet)and we will need to make a card for slotted apple 2’s containing a ROM which does this. again, an artifact of the simple fact that we are the only people on planet earth who have ever tried to make a smartport character device, let alone a handful of them.
jeffmazur: For those following along at home, here are the new patches to allow PR#1 printing on the //c. Still need to work out CR/LF and graphics handling. Hopefully, these will happen on the FN side so this ROM should not need to be changed (except to add a PRINTER unit# scan routine if it can’t be made static).
Printing support will be am amazing feature for the Apple2 FujiNet. Check back in upcoming posting or just go and join the Discord now and take direct part in these developments!
Apple II Disk Image Formats
robj: One thing to consider with disk images is that only images that contain Prodos on them, will boot from a smartport. If they have the older DOS 3.3 on them, then they will not boot.
robj: so then if you add support for .do or .dsk images, then there can be the assumption that they will work, when depending on the content they may not. (hope that makes sense)
Thom Cherryhomes: so the smartport emulators can’t boot dos 3.3 at all…
robj: no, it did not exist when the original dos was introduced.
robj: this is why floppy emulation is good to have, then this allows any older based floppy images to work
Thom Cherryhomes: OK
Thom Cherryhomes: what a mess.
robj: That’s another reason why Totalreplay is so good, its allowed a lot of dos based games to run as they have been ported over to run from prodos, then added in to the collection.
Lots of discussion of .PO prodos and .DO DOS disk images, formats and what this all means for FujiNet support…
Thom Cherryhomes: again, DOS 3.3 does not have any code to talk to smartport at all- RWTS is hard-coded for Disk ][.
andy diller: ok, so DISKII support is another way to do this.
Thom Cherryhomes: yes. this is why diskII support is important. Apple never made a 5.25″ smartport drive
andy diller: yeah i saw that nice graphic that was posted.
Thom Cherryhomes: we’re going to have to do some interesting gymnastics to make this stuff appear to just work. and I’m gonna say it now, we may wind up making our own Liron clone.
Thom Cherryhomes: 😉
Thom Cherryhomes: mostly because the Yellowstone is comparatively an expensive card.
mozzwald: this is all getting very complex
Thom Cherryhomes: welcome to apple2– everything on Apple2 is an exercise in gymnastics. Just be glad you never had to write any graphics code in hi res (everything very non-linear, so you need tables to plot to the screen really fast)
To wrap up the two weeks for Apple, Thom CH pushed a bunch of fixes for CONFIG on the Apple2 resolving a number of little issues that had been building up over time.
- CONFIG is now a SYSTEM file. The loader isn’t needed.
- there is now a delay after getting wifi status. This should allow for wifi to transition to a valid state after SSID is set
- Added PUSH ANY KEY to Apple2 FujiNET CONFIG Startscreen
A lot of things going on in the Atari platform these past few weeks. It’s a big section. The week started with Thom Cherryhomes (TCH) producing a nice APX DLI screen for a project…
Thom Cherryhomes: Working on #Ataribit #FujiNet APX Catalog splash screen. Decided to leave the blue bar on the right off the final, because it only appears in one rendered graphic, and not in any real APX material. On to the core program. #RetroComputing
Playfield color 0 renders the APX Playfield color 1 renders the second stripe Playfield color 2 renders the fourth stripe Playfield color 3 renders the sixth stripe. Player color 0 renders the first stripe Player color 1 renders the third stripe Player color 2 renders the fifth stripe Player color 3 renders the seventh stripe
A DLI is used under APX to flip back in the system charset for 24 scanlines, before flipping back to the custom charset.
GUIs for the Atari
GEOS 2.0 was ported to the Atari…
Andy Diller (me) put the GEOS ATRs up on his TNFS server and posted about it. There was no disk support so while FN could boot the images there was no provisions yet to save or open documents in GEOS.
Some discussion about using an Atari mouse (or Amiga) to control the cursor in GEOS.
Thom Cherryhomes: Amiga/ST are both QAM encoded mice, with a slightly different table.
flashjazzcat: You have to recompile it to use an Amiga mouse (see ‘Building’): https://github.com/ytmytm/geos-atari
On its face, that should mean ST mouse support is trivial to add, although I found it necessary to sample the mouse at 1KHz to get it to track properly in my GOS. I haven’t looked at the mouse driver in the source code yet.
Scoth42: I really need to see if I can sort out what’s up with my ST Mouse on an ST before I go trying to get it working on 8-bit. It’ll work fine sometimes, very sometimes, but other times will get stuck only moving up or down when I move the mouse in either direction
GEOS news led to some discssion on GUIs for the 8bits – there are now three. GEOS, GOS (from flashjazzcat) and Diamond GUI.
Ripjetski: Now the race is on! GOS over geos, who will finish first?
flashjazzcat: GEOS has already won, since it’s in a far more functional state than my OS. In fact Diamond won decades ago. But it’s about more than ‘who’s first’. 🙂
Diamond is also available in a CART format, for instant loading on the Atari.
Thom Cherryhomes: Diamond GOS 3.0 does work with NOS. 😉
Andy Diller (me) finally got netcat working on the Atari with SSH support and was able to login to his local SGI server.
Thom Cherryhomes: since netcat uses the standard editor, it works fine with ace80 and other 80 column extenders — the thing about netcat is that it is dumb
There is zero terminal emulation. It was done to show how to communicate with the network device.
But Diamond tickled something in Thom’s head and so…
Thom Cherryhomes: I do admit looking at the Diamond Utilities and Programming kit that it’s not hard writing diamond apps. he crammed quite an API into that goofy cartridge
@here if anyone wants to write diamond GOS apps. try writing a fujinet one. 🙂
The API is ridiculously simple, uses accumulator to specify function, and a set of parameters in zero page.
Thom Cherryhomes: or am I gonna have to do this to prove the point too? 😛 🙂
Thom Cherryhomes: it’s taking all my energy to make the bindings at the moment
Thom Cherryhomes: halfway through the bindings.
Thom Cherryhomes: will hand this off to the cc65 guys.
A day later the cc65 bindings were complete for Diamond OS…
Thom Cherryhomes: ok, binding is up there, will alert the CC65 peeps.
Shawn Jefferson came back in to announce that his cloud Z-machine was ready for testing:
Shawn Jefferson: I pretty much have a workable Z-machine client done now… just need to open my server to the Internet and let some folks try it out. Some games work great, other’s not quite as great due to the very simple text formatting of frotz in Dumb mode. Another set-back, I let some of the magic smoke out of my Fujinet… plugged in USB power so I could boot with a cartridge (ACE 80XL cart) to test, and I guess the USB extension cable or something else caused some issue. My FN still works, but I don’t think I can flash it any longer 😦
It turns out Shawn may have shorted out the u2 chip on the FN.
mozzwald: U2 is the USB to serial chip 😦 you wont be able to update firmware.
Zmachine client: https://drive.google.com/drive/folders/14Pq3X9eenDsB3fzja3UOW4HLFICtKwxn?usp=share_link
Shawn Jefferson: Who wants to try the Zmachine client for FN? You can download it here: https://drive.google.com/drive/folders/14Pq3X9eenDsB3fzja3UOW4HLFICtKwxn?usp=share_link
You have to change the server to 18.104.22.168:3000 (hopefully that works, I have it port forwarded)
If you get an error while playing, try to reset your FN (JSON bug). Use “save” and “restore” to save and restore your game, don’t type anything else, things will probably go totally sideways. If you run some sort of 80-column mode, make sure to change your screen width to 80 in the program.
I included a soft 80-column driver on the ATR called “E80”. If you load it first you will be in 80-column mode. For some reason it really affects SIO… load from FN will work, but it’s very slow. Not sure why. ACE80XL cartridge also tested and working fine.
Atari Config Bug Fixes
Schadret (on github: frachel) had done the hard work in porting Atari CONFIG back into the common CONFIG repo, in order to keep parity with all the supported platforms (ADAM and Apple2) continued development with CONFIG. The porting hasn’t been without it share of issues however, and there has been a bug in the Display List for the Atari CONFIG that shows as a tear and roll in the CONFIG’s config screen (yes, CONFIG itself has a config).
Schadret (github: frachel): Yeah, I was trying the idea someone gave me before doing a more drastic fix, but doesn’t seem to have worked. Once that one line gets turned to double-height (16 scanlines) the list becomes too big.. it was suggested to change some lines further down to 1 scanline (value 0) and it might be ok, but Andy tested and it wasn’t. I’ll work on a real fix in the next day or so.. I think I’ll just rearrange the layout of that screen a little – otherwise I think I’ll need a 2nd displaylist array just for that screen, which seems like a waste.
On Nov 25th, with some code fixes from Schadret Mozzwald released a new Atari Firmware that fixed the Display List issues with CONFIG and the issue is gone.
mozzwald: @here can I get some folks to test out the new Atari config program. I want to make sure the display list issues are gone. press C to view the config and make sure there are no display issues. you can flash this firmware with fujinet-flasher from the command line: fujinet-flasher /path/to/firmware.zip
Meanwhile, fenrock has been breaking down the fnConfig code into multiple files targeting each of their functions…
fenrock (github: markjfisher): I’m going to work on the wifi issue on the backlog for having multiple SSID configs in INI file.
I’ve got a local change that splits the monster fnConfig.cpp into 15 separate files each dealing with their own part of the configuration, I’m going to push that first else any other devs making changes to config in the firmware are going to cause me a lot of conflict headaches.
If that’s ok with peeps I’ll go ahead.
fnConfig.cpp is now 10 lines instead of 1600
Andy Diller (me) set down to figure out the DT80 card ROM and using it with CP/M that is available on the FujiNet device (via emulation on the ESP32). I want to use the XEP-80 eventually but for now the DT80 is the only thing setup to provide the right about of columns of text (80) and emulation (ADM-3) for connecting to the CP/M system.
I learned about 4k vs 8k roms (I think 4k were the “right carts” supported only on the original 800). To use the DT80 ROM in my AVG and UNO carts I had to have a 8k rom. Moz had one already, which worked. Some pages talk about conversation tools – but they didn’t work for me.
The DT80 locked up on my NUC, but it did finally work ok in the 1088XEL I also have- which has a sophia for DVI output which renders the font readable on a LCD panel.
AlexS popped over and was asking for help running a TNFS server on his existing MacOSX server. There were a number of challenges waiting for him to open up the service and allow outside access to his Macintosh.
One show stopper was that Apple already has a service listening on the UDP port that TNFS wants to use. Even though AlexS could re-build TNDS to use a new port, without a proxy in place there are no FN clients that would use the different port.
FN Secrets Encryption
fenrock (github: markjfisher): So checkout my fnconfig.ini wifi section:
[WiFi] enabled=1 SSID=atari4e4 passphrase=AL?>dCEw:uGZ1oWxG encrypted=1
I’ve gone with (as talked about earlier) a key based on (not equal to) the MAC address of the fujinet.
So if you change MAC you’d have to reset to default, and re connect to your wifi, and reset your hosts/drives, but meh I doubt that’s a thing.
It will detect that your wifi passphrase is not encrypted on booting the device, and encrypt/save it back to SD. From that point if it needs to read it again on next boot, it silently decrypts it.
It means that if your SD is lost then your wifi password is encrypted. Low hanging fruit, but Rome wasn’t built in a day.
This started a discussion and revealed a number of issues that may hinder this for wider adoption.
Schadret (github: frachel): Keep in mind that fujinet-pc currently gives you a hardcoded MAC address D0:1C:ED:C0:FF:EE so that may need to be changed so the key won’t be the same for everyone using -pc .. ?
WebUI Look Refresh
but fenrock wasn’t done there. This lead him to looking deeper into the FujiNet’s Web interface and the current options and layout inside of this project…
fenrock (github: markjfisher): While I’m playing with the UI interface, I noticed there’s nothing in the Boot Settings. What do people think of this?
fenrock (github: markjfisher): I’ve also changed the CSS to fix the boxes so they fit better. Notice the HRs are now correctly across the entire form instead of mysteriously stopping, and I’ve tweaked a few other things. A couple of things to fix, but getting there:
Just today fenrock checked in his changes and TCH merged them into the core code. They look amazing.
FujiNet and TNFS Timeouts
Scoth42 brought up some issues with TNFS timeouts notices when FujiNet boots. Moz confirmed and noted that these issues also affect ADAM FujiNet boots. The issue revolves around the amount of time spent waiting for a TNFS host to load a slot.
Scoth42: Although something is still borking up the Fujinet unless I’m misunderstanding how it works – it reboots to Ready after it gets cranky, and if I reboot the Atari without rebooting the Fujinet it doesn’t respond at all. Probably not an issue for most users but anyone powering it externally could run into a problem
Thom Cherryhomes: part of the issue is that there are two timeouts, an SIO timeout, and the fujinet retry timeout– since we have timeouts for most network operations set to 0x0F, the firmware should be trying for 15 seconds max.
Scoth42: Also, with no SD card in, it seems what whatever is locking up the fujinet is wiping the config too
mozzwald: I’m gunna play around with the timeout and see if anything gets better
Moz posted a firmware with reduced timeouts and that seems to make things better — Scoth42 also was testing.
Disk Slot Return Issue
Scoth42 noticed another issue from the migration of Atari’s CONFIG from it’s original repo into the common CONFIG:
Scoth42: In the old config, you’d browse through a TNFS server, find a disk image, hit Return on it and pick a drive slot, and then it’d return you to where you were in the TNFS server. In new config it drops you back to the main menu. If you’re mounting something that’s multiple sides/disks/etc it means you have to browse back through the whole TNFS tree again to get back there– and if it’s something like Alternate Reality or the other big games that are multiple disks that can get old real fast
Thom Cherryhomes: if you see in the config code, we have states that we flip between which are the major parts of the program and substates for divisions within those parts of the program and we just set the variables to jump to those parts of the program when needed –the core logic of config is literally built out of switch statements (it’s the finite state machine (FSM) pattern)
Schadret (github: frachel): I tried looking at that early on, couldn’t find a simple way back to the file list, but now that I’m more familiar I’ll look again. After you select a file the state goes to SELECT_SLOT .. and when you pick a slot, SS_DONE is set and select_slot_done() in select_slot.c sets the state to HOSTS_AND_DEVICES. If I set the state there to SELECT_FILE instead you do go back into the TNFS host, but at the root /
[3:09 PM]Schadret (github: frachel): because that path goes through the SF_INIT code with no way around it currently. I’m a little more leery touching the “common”/”framework” code since I can’t test on other systems.
mozzwald: I messed with this a little bit and kinda sorta got it to work. I added a new sf_substate called SF_BACKTO which I set in addition to setting SELECT_FILE. Then in select_file() I changed to this:
if (sf_subState==SF_BACKTO) sf_subState = SF_DISPLAY; else sf_subState = SF_INIT;
mozzwald: This gets you back to the same dir, but your selected file becomes the top of the list. if you selected something in the middle of the page, you cannot hit prev to go back/see what’s higher in the list
Schadret (github: frachel): I’ll mess around with your idea. Wondering if pos is getting reset somewhere.
Mozwald released a firmware with his fix and added a new branch to track this work.
Mozwald has finished his first round of C64 FujiNet hardware and cases to protect them while fitting to the C64 contours.
As with many first tries there are still some issues to sort on the hardware design. What is different here is that Mozzwald has a capable partner in hardware design, Jamie (idolpx) the creator of Meatloaf and the lead in merging of Meatloaf functionality into the FujiNet project.
First hardware issue was around the I2C GPIO expander and getting it to work.
idolpx: oh… yes.. the interrupt is firing.
mozzwald: so, the chip is “working” but we can’t talk to it?
idolpx: so it has to be something with the I2C address. Don’t you think?
mozzwald: did you try at lower speed?
mozzwald: is there some simple arduino i2c bus scan sketch?
Lots of back and forth testing and hacking between Jamie and Mozz.
idolpx: Also I think the interrupt for IEC is getting cleared when the interrupt is being set for the User Port and that’s why IEC stops working.
idolpx: I believe this will do it!
idolpx: just pushed if you want to try this out.
]idolpx: try that.
idolpx: I have to clean and optimize some stuff but it is working.
mozzwald: yeah! working now 😄
On to the next issue: RESET
mozzwald: I’ve been trying to figure out the constant RESET when fujiloaf isn’t connected to the c64. because the RESET line is floating it seems to jump above the high level and back down triggering the reset. one of the 2 I have does it constantly, the other does not but I can make it happen by touching the IEC port
But mozzwald soon determined that no cutting was required:
mozzwald: @idolpx before you go chopping up your fujiloaf, I changed this in parallel.cpp to input and it seems to be working with the line hooked up expander.pinMode( ATN, GPIOX_MODE_OUTPUT );
mozzwald: ATN should be an input always as I understand it
Thom Cherryhomes: that is correct
Thom Cherryhomes: you can’t use it as an output.
mozzwald: so, probably no need to go cutting the board anymore 😄
Work continues to iron out any more issues on the prototype boards.
jskists continued with his one man show to get FujiNet on the little rc2014. These past few weeks he brought up the SD card and then ported netcat over and was able to use the rc2014 and the prototype FujiNet to access the Level 29 BBS.
jskists: And yes. adding a pull-up resistor network to my breadboard, for the SD breakout, did the trick — the error message had turned into timeout error! With a closer look, I noticed that I had the wire for MOSI at the wrong pin!
jskists: And yes, the SD card is now mounted!
jskists: Porting the “netcat” to RC2014’s CP/M using the network protocols. Finally got reading “function” working. Now for the “write” function…
TalkieToaster obtained a Raspberry Pi interface for the BBC Micro and is investigating running FujiNet-PC on the RiPi, to then use as a FujiNet device for the BBC Micro.
TalkieToaster: Bit of a nightmare getting the damn thing to fit under the keyboard through, had to take the mainboard out. However, it’s so damn fast running BeebSCSI that I pretty much don’t want to go back to using the Retroclinics Datacenter board I have installed for flash card hard drive access.
TalkieToaster: The firmware runs from a Fat32 Boot image on the Pi instead of a full Linux installation like Raspberry Pi OS.
thweasel and That Old Nerd continued on yet more troubleshooting work to nail down the FujiNet Bus. Issues around bus noise and using buffers for the signals to the spectrum to help fix that.
thweasel: : Stumped… If I fix the data value in code it works, if I use a variable it breaks.
Data writes to ram fine, the read if I use a variable just goes crazy
Starting to suspect the simulator might be causing the problem somehow?!
I think … ESP32 Libraries let you put an slight offset in when the SPI data is sampled. With the Arduino Library there is no offset option, so you get a clash on the clock moving the ShiftReg before sampling, you miss a bit or get a weird edge reading. And I suspect it is making the Simulator twitch… In short; going to try the Shiftin routines… SPI can be an ESP thing later
seatsafetyswitch: I appreciate you looking into it. We’ll get a handle on this eventually, it’s just a matter of time
thweasel: I’ve seen several tutorials/explanations/guides, no one seems to have a “good” pattern for running shift registers with SPI. Its like it one of those things that people thinks is easy, so needs no explanation because they got it working so everyone can! its a faff
TON has some breakthrus:
That Old Nerd: I think I finally figured out the issue with my circuit. I believe that the HC245s are switching too slow. To get any type of usable output I had to bypass the OE pin on the 245 and use the IORQ to directly drive the CE on the ROM. We should still be able to use the 245s for isolation when we need the ESP to control the board, but from my testing using IORQ to drive the 245 is problematic. BTW the image is of an LPRINT on repeat with the HC245s bypassed.
thweasel: Trace looks like an IO call pushing 0xFF 3 times on the databus.
Their work continues…
This was another surprising amount of updates for a period I’d imagined would be much more quiet. Apple firmware support is really firming up with DISKII, printer, clock and timing fixes all being added. Atari had a number of new avenues opened up (Diamond GUI Programming for just one) and some solid fixes also in timing, CONFIG and the web ui. Commodore is top of mind for Jamie and Mad Mozzy and it won’t be long before a prototype 2 CBM board. At some point the Spectrum is going to pop in and there may be a board for the RC-2014 before any of them!