Jacques Posted September 28, 2020 Share Posted September 28, 2020 Hi Guys, would a feedback/ideas for improvement of configurator program usability be welcome? After week with it, I just have few ideas regarding e.g. ATR (un)mounting interface, having known SIO2IDE and SIO2SD. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 28, 2020 Author Share Posted September 28, 2020 sure. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 29, 2020 Author Share Posted September 29, 2020 As part of the sioNetwork refactoring: * The protocols have been deleted, and I am rewriting them in their own library, in lib/network-protocol * sio_read/write/status now have a sister _channel() method which returns the appropriate data for a given channel mode (PROTOCOL, JSON, etc.) * Everything is being documented in the code that I touch, e.g. This is an area that people could help with, helping comb through, asking questions about parts of the code, and then marking up the code so that it can be understood by other developers just coming on. -Thom 2 Quote Link to comment Share on other sites More sharing options...
Jacques Posted October 1, 2020 Share Posted October 1, 2020 (edited) Quote Button A (Left) Short press: disk swap Long press: enable/disable SIO2BT mode Button B (Middle left) Short press: print debug info to serial console Long press: Safe reset (unmount SD card then reboot) Hold during power up to reset FujiNet config Hard Reset Button (Right) Just a question, how it actually swaps drives? Does it do shift-left or shift-right on the mountings? That would be actually pretty convenient to have e.g. A as a shift-left and B (or A+B) as shift-right (if possible). This way even 3 or more disk-sides games could be run (e.g. Brundless). Edited October 1, 2020 by Jacques 1 Quote Link to comment Share on other sites More sharing options...
+DrVenkman Posted October 1, 2020 Share Posted October 1, 2020 3 hours ago, Jacques said: Just a question, how it actually swaps drives? Does it do shift-left or shift-right on the mountings? That would be actually pretty convenient to have e.g. A as a shift-left and B (or A+B) as shift-right (if possible). This way even 3 or more disk-sides games could be run (e.g. Brundless). It’s basically the same as the ATR Swap button on a SIDE2 cartridge or Incognito board with Flashjazzcat’s firmware - for two disks, whatever you have mounted as D2: moves to the D1: slot, and whatever you have mounted as D1: rotates to the end of the line into the D2: slot. So two ATRs simply swap places. If you have 3 or more slots in use, then it simply rotates the current D1: slot to the end of the line, with each other slot moving down closer to the beginning of the list. So for a three-disk setup, pressing the button moves D1: to D3:; the disk in D2: moves to D1:, and the disk in D3: moves to D2:. The same principle applies if you have 4 slots in use. Quote Link to comment Share on other sites More sharing options...
Jacques Posted October 1, 2020 Share Posted October 1, 2020 Thank you for explanation, @DrVenkman So button B for additional rotating in right direction could be useful. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 1, 2020 Author Share Posted October 1, 2020 (edited) I disagree. We need button B for additional functionality. It makes zero sense to add a rotate in the opposite direction, because you're rotating on a limited set in any case. At most, you're rotating, what? 6 disks? (e.g. Alternate Reality or Omnitrend Universe?) Additionally, if there is a gap in the slots, the rotation deliberately stops there. -Thom Edited October 1, 2020 by tschak909 Quote Link to comment Share on other sites More sharing options...
StickJock Posted October 1, 2020 Share Posted October 1, 2020 Think of it as being in solidarity with the original 6502, which was shipped without a ROR instruction! ? 1 2 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 1, 2020 Author Share Posted October 1, 2020 (edited) As part of the process of rewriting the networking (N:) device, I am explicitly hooking into errno values that are emitted by lwIP, so that they can be exposed to the Atari and provide much better error reporting when doing network operations. These errors are reported via status byte 4 of DVSTAT, and ones that are critical correspond with an ERROR 144 reported from SIO (ERROR). https://github.com/FujiNetWIFI/fujinet-platformio/wiki/Error-Codes-for-N%3A-Device These are attached to the existing programmer pages on the wiki for the N: device. -Thom Edited October 1, 2020 by tschak909 1 Quote Link to comment Share on other sites More sharing options...
Jacques Posted October 2, 2020 Share Posted October 2, 2020 (edited) 17 hours ago, tschak909 said: I disagree. We need button B for additional functionality. It makes zero sense to add a rotate in the opposite direction, because you're rotating on a limited set in any case. At most, you're rotating, what? 6 disks? (e.g. Alternate Reality or Omnitrend Universe?) Additionally, if there is a gap in the slots, the rotation deliberately stops there. -Thom Well, for me, given there's no LCD display on the device: 1) it would make sense, because with shift LEFT and (if available) RIGHT it's more difficult to GET LOST in swapping if you need to jump back and forth between images. With one button, you need to click it n-times to rotate it all to do D1-D2-D1. Just A and B if two buttons were available 2) the rotation shouldn't really stop when there's a gap, it's a bit unlogic, why shouldn't it be rotated as a whole anyway? 3) to allow shift-RIGHT on button B, maybe further combinations of pressing-time or pressing A-B together could be used for more functionality on buttons? Just a thought Edited October 2, 2020 by Jacques Quote Link to comment Share on other sites More sharing options...
mozzwald Posted October 2, 2020 Share Posted October 2, 2020 2 hours ago, Jacques said: Well, for me, given there's no LCD display on the device: 1) it would make sense, because with shift LEFT and (if available) RIGHT it's more difficult to GET LOST in swapping if you need to jump back and forth between images. With one button, you need to click it n-times to rotate it all to do D1-D2-D1. Just A and B if two buttons were available 2) the rotation shouldn't really stop when there's a gap, it's a bit unlogic, why shouldn't it be rotated as a whole anyway? 3) to allow shift-RIGHT on button B, maybe further combinations of pressing-time or pressing A-B together could be used for more functionality on buttons? Just a thought Ultimately we want the ability to change disks from the web interface which would allow you to see what is mounted but it has not been implemented yet. To be clear, this is how disk swap with the button works now: start D1 D2 D3 D4 swap D4 D1 D2 D3 swap D3 D4 D1 D2 swap D2 D3 D4 D1 swap D1 D2 D3 D4 1 Quote Link to comment Share on other sites More sharing options...
+DrVenkman Posted October 2, 2020 Share Posted October 2, 2020 10 minutes ago, mozzwald said: Ultimately we want the ability to change disks from the web interface which would allow you to see what is mounted but it has not been implemented yet. To be clear, this is how disk swap with the button works now: start D1 D2 D3 D4 swap D4 D1 D2 D3 swap D3 D4 D1 D2 swap D2 D3 D4 D1 swap D1 D2 D3 D4 Wait, what? I’ve never actually tested rotating more than two disks, but given what you wrote above, that means FujiNet is rotating the disk order opposite to the way that U1MB+SIDE2 and Incognito do it. It also means that if you want to use a 3- or more disk set game or set of working disks, you need to put Disk 2 of any set into the D4: slot, then Disk 3 into D3:, and Disk 4 into D2: ... That seems incredibly counter-intuitive to me. Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted October 2, 2020 Share Posted October 2, 2020 (edited) 26 minutes ago, mozzwald said: To be clear, this is how disk swap with the button works now: start D1, D2, D3, D4 swap D4, D1, D2, D3 swap D3, D4, D1, D2 swap D2, D3, D4, D1 swap D1, D2, D3, D4 wat?! 2 Disks Should be start D1, D2 swap D2, D1 swap D1, D2 3 Disks Should be start D1, D2, D3 swap D2, D3, D1 swap D3, D1, D2 swap D1, D2, D3 4 Disks Should be start D1, D2, D3, D4 swap D2, D3, D4, D1 swap D3, D4, D1, D2 swap D4, D1, D2, D3 swap D1, D2, D3, D4 Wayhey! something none of the testers have tried Just shows how often this is required. Edited October 2, 2020 by Mr Robot Typos 1 Quote Link to comment Share on other sites More sharing options...
Jacques Posted October 2, 2020 Share Posted October 2, 2020 (edited) Indeed, shifting/rotating left (including no mounts, please) feels much more intuitive, with possibility of counter-rotation it would be just all that's needed. Web interface for disk mountings would be nice addition, but I think all the fun with FujiNet is to finally use Atari for Internet access (BBS's, etc.) WITHOUT PC, so using PC to swap disks wouldn't be one's first choice, methinks. P.S. I did try it and got confused, that's probably because of rotation to the right and rotation stopping on gaps (unmounted drives) Edited October 2, 2020 by Jacques Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted October 2, 2020 Share Posted October 2, 2020 6 minutes ago, Jacques said: rotation stopping on gaps (unmounted drives) That should definitely happen, who wants to flip the disk on a two disk game and then have to press the button 4 more times to turn it back! Should point out there are 8 mounts btw, not 4, if we don't stop on empty drive we have to loop through 8 drives to get back to the start. Quote Link to comment Share on other sites More sharing options...
Jacques Posted October 2, 2020 Share Posted October 2, 2020 (edited) I don't think so, since you have no LCDdisplay, but you know what you've mounted where (even with gaps), respective number of clicks gets you there. In most cases you shift L or R just around few nearby drives, so it's not an issue anyway to shift with gaps, provided you have both L and R shifts. For me it would be much more consistant to simply shift what's or what's not in drives. If you land no disk in drive, you have an idea where you are, too. Edited October 2, 2020 by Jacques Quote Link to comment Share on other sites More sharing options...
mozzwald Posted October 2, 2020 Share Posted October 2, 2020 (edited) Heh, whoops.. they shift the other direction, sorry We do what we can with the buttons we have and the Atari side config. 'Bonus' configuration will be handled with the web interface. Early on we made it clear that the web interface will be needed for some configurations. personally, I don't even see a use case for having an empty slot but I'm not hardcore user either so, ignoring everything after an empty slot for rotate makes sense to me. the problem with swapping empty slots is that you would always have to swap 8 slots even if you only have 2 disk inserted. Lots of wasted button presses. Edited October 2, 2020 by mozzwald Empty slots 1 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 2, 2020 Author Share Posted October 2, 2020 and yes, we can change the direction of the rotation to go left. -Thom 2 Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted October 2, 2020 Share Posted October 2, 2020 (edited) . Edited October 2, 2020 by Mr Robot Remove unnecessary sarcasm Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 2, 2020 Author Share Posted October 2, 2020 Now someone's just being a smartass. Here's the current code for disk image rotate: // Disk Image Rotate /* We rotate disks my changing their disk device ID's. That prevents us from having to unmount and re-mount devices. */ void sioFuji::image_rotate() { Debug_println("Fuji cmd: IMAGE ROTATE"); int count = 0; // Find the first empty slot while (_fnDisks[count].fileh != nullptr) count++; if (count > 1) { count--; // Save the device ID of the disk in the last slot int last_id = _fnDisks[count].disk_dev.id(); for (int n = count; n > 0; n--) { int swap = _fnDisks[n - 1].disk_dev.id(); Debug_printf("setting slot %d to ID %hx\n", n, swap); _sio_bus->changeDeviceId(&_fnDisks[n].disk_dev, swap); } // The first slot gets the device ID of the last slot _sio_bus->changeDeviceId(&_fnDisks[0].disk_dev, last_id); } } Quote Link to comment Share on other sites More sharing options...
Jacques Posted October 2, 2020 Share Posted October 2, 2020 8 minutes ago, mozzwald said: the problem with swapping empty slots is that you would always have to swap 8 slots even if you only have 2 disk inserted. Lots of wasted button presses. That starts to be interesting logical exercise For me rotation should ALWAYS allow you to get anywhere. Having gaps is common practice when using D1-D8 disk-drives emulation devices, let's say with SIO2SD and now FujiNet, I'm keeping always D3 empty, just in case I need to power on and use real floppy drive, which I have assigned as D3. Or you leave some drives empty, just in case to mount something temporarily. So now with empty D3 to be able to rotate between ATR images in D1, D2, D4, D5, D6, D7, D8, I would need to add something to D3 just to build the bridge? Hmm... Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted October 2, 2020 Share Posted October 2, 2020 yeah that's going backwards. The first slot should get the disk id of the next slot not the last slot Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 2, 2020 Author Share Posted October 2, 2020 Ok, I just tested again (and I pasted the code), the disk swaps do indeed rotate "left" so D1,D2,D3 D2,D3,D1 D3,D1,D2 D1,D2,D3 -Thom 2 Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted October 2, 2020 Share Posted October 2, 2020 5 minutes ago, Jacques said: That starts to be interesting logical exercise For me rotation should ALWAYS allow you to get anywhere. Having gaps is common practice when using D1-D8 disk-drives emulation devices, let's say with SIO2SD and now FujiNet, I'm keeping always D3 empty, just in case I need to power on and use real floppy drive, which I have assigned as D3. Or you leave some drives empty, just in case to mount something temporarily. So now with empty D3 to be able to rotate between ATR images in D1, D2, D4, D5, D6, D7, D8, I would need to add something to D3 just to build the bridge? Hmm... This is an interesting point, with D3 empty but D1, 2, 4, 5 populated it should still be possible to rotate through all the populated disks. I wouldn't ever make D3 be in slot 1 though, its empty/turned off. If you want it to be in slot 1 stick a blank disk in it to enable it. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 2, 2020 Author Share Posted October 2, 2020 I deliberately made the first gap found, the end of the rotation. so: D1,D2,D3,D4 D7,D8 D2,D3,D4,D1 D7,D8 D3,D4,D1,D2 D7,D8 D4,D1,D2,D3 D7,D8 D1,D2,D3,D4 D7,D8 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.