Open HovKlan-DH opened 2 years ago
To add to this feature request - btw I'm not trying to hijack this issue because I think the following might be related in terms of the changes to code required:
It would also be very nice to be able to completely disconnect both the SD cards and the internal floppy from the IEC bus - I guess the ROM has device ID detection logic. For example, to be able to use an original external 1541 that has no device ID switch, where some C64 games and demos require that all other devices on the IEC bus are disconnected to function. As well as modded drive ID switches, I believe some original 1541 drives had a switch to disconnect the IEC ATN line to facilitate this.
There is the S.T.F.U program for the C64 that can sometimes fool the ROM's device ID detection but it doesn't always work and the only sure way is to disconnect the ATN line. https://csdb.dk/release/?id=160842
Another somewhat related issue: https://github.com/MEGA65/mega65-core/issues/126
@cybern0id The internal floppy drive and D81 mounted from SD-card is nothing to do with the IEC bus. They're handled via the F011 FDC controller IC as in C65 (well on MEGA65 for sure it's implemented inside the FPGA). To handle the internal drive (or when it's "replaced" by D81 from SD-card, ie "mounted") both of C65 and MEGA65 has its own DOS implemented in the computer itself to directly control the FDC controller IC (the mentioned F011) that is called "CBDOS" Computer-Based-DOS, so you see the reason of the name (ie it's not the usual DOS which runs the disk drive itself - as eg 1541 is kind of a full computer with CPU, memory ... -, but on the computer itself).
@lgblgblgb thanks, understood. I was making assumptions based on observations rather than coming from an understanding of the internals of the C65.
Still, when in Mega C64 mode, both the SD and internal floppy are detected by their internal device IDs as set in the Freezer menu - running the S.T.F.U program shows them as "Foreign" devices and C64 games and demos that demand no other devices on the IEC bus refuse to run. Obviously my interpretation of the inner workings of the C65 are incorrect but it would still be nice to be able to set device IDs for the internal drives, as specified by the OP and also switch internal devices "off". I was imagining that the combined functionality would fit nicely in the Freezer UI.
I should mention that setting the Freezer menu so each of the devices are set to "No Disk" still results in the device IDs being detected in C64 mode. Perhaps I do need to raise a separate github issue / feature request after all?
I think, the problem here that part of this story is up to the ROM ... For example the hardware of MEGA65 itself can say what is the internal drive 0 and 1, of the internal disk drives (can be replaced by "D81 mount"). There are (often called drive 8 and 9 ... But for real that "8" and "9" is already not by the hardware so the freezer has no control over it, it's the ROM. And btw the previous topic, even on C64, device number 1 is TAPE, thus just by having some device number does not mean it must be the IEC bus at all, it's just the notion of ROM nothing more or less. Freezer can just assign what medium is treated as internal drives (real internal floppy, or a D81 "mounted") but cannot rewrite the ROM who has the control what device number (I mean device number used by ROM!!! not the one on IEC bus, can be very different, ie you can emit IEC bus id 1 on IEC bus, while for C64 ROM it's tape and never ends on the IEC bus) assigned to what hardware devices let it be IEC bus, FDC internal drive, or even TAPE (not on MEGA65 but eg on C64) or even screen ....
For example if you write a MEGA65 software driving IEC bus by your own (not with ROM routines) via the CIAs you can talk with IEC-device-id 8 on the bus (regardless from BASIC LOAD "$",8 will access the internal drive, where no IEC bus access is involved at all), and it's nothing to do with the internal drive or D81 anymore, since you control the IEC bus, and internal drive is not not on the IEC bus. The problem if you use ROM features, since ROM assumes what "8" and "9" etc means and how those should be "routed" to different devices like tape (again if MEGA65 has tape but it hasn't, this is more like a C64 example only here!), IEC bus, F011 disk controller ...
Thus, what you would like to have - I guess - is more a ROM feature to be able to remap "real" devices used by ROM routines to "route" the requests to certain devices (ie internal drive, IEC bus ...)?
Sorry for my bad English and lame explanation, my English is not the best ...
It would be nice. Just formatted my mega65.d81 because it defaulted back.
That's why the routine asks: ARE YOU SURE?
That's why the routine asks: ARE YOU SURE?
I dont agree.
Why? Well workflow based, an 8bit Computer uses disks. So I want to use the same workflow with the Images. A Disk dont magically changes itself. Currently the Images do. So I have to adapt the workflow, which is weird. It may make sense in a programmers way, but not in a users way.
ARE YOU SURE? Should refer to the LAST DISK INSERTED, not a magical change that COULD happen.
It would be nice to access either a SD mounted disk or the internal floppy, without the need to mount the internal floppy via the freeze. Of course the SD disk must be mounted via freezer, but after that it should be possible to do both of these:
LOAD "$",8
(or justLOAD "$"
) to access the SD mounted diskLOAD "$",9
to access the internal floppyBoth DRIVE8 and DRIVE9 should be possible to configure which real drive it should use (maybe I want DRIVE8 to be the internal floppy and DRIVE9 to be an external floppy).
The configuration should be permanent saved, so the same is set after a power cycle.