why it is not possible?

Pagina 1/3
| 2 | 3

Door PingPong

Prophet (3555)

afbeelding van PingPong

28-01-2017, 17:37

Various times i've hear about the ability of c64 to drive SID during disk I/O. Why MSX cannot do the same ? (playing psg during disk I/O). To me it does not appear as a tech limits. the VDP, PSG, FM-PAC or other devices could be driven during VDP interrupts why this does not work for disk interface?
Anyone can explain why ?

Aangemeld of registreer om reacties te plaatsen

Van Louthrax

Prophet (2281)

afbeelding van Louthrax

28-01-2017, 17:52

Wasn't there a demo that was playing samples through MusicModule directly from disk? The disk drive had to be a specific model because of direct hardware access... Darn, what was the name of this demo ??

Van Meits

Scribe (5996)

afbeelding van Meits

28-01-2017, 17:59

Real Motion by NOP. It loads a chunk of sample, starts playing it and while doing so it loads the next part.
There are a few releases. The audio clips are generated by their Sampbox macro (iirc) program.

Van Hrothgar

Champion (479)

afbeelding van Hrothgar

28-01-2017, 19:17

Isn't it just that C64 is a monolithic beast that had unchanged specs from the early '80s to way into the '90s, whereas each and every disk capable MSX model had its own variations in how the disk drivers and mechanics worked? That sounds like quite a different playing field if you want to use cycle timed tricks and direct hardware access.

Van Metalion

Paragon (1203)

afbeelding van Metalion

28-01-2017, 19:28

I think the disk ROM does use the interruptions.

Van Manuel

Ascended (16966)

afbeelding van Manuel

28-01-2017, 20:01

Isn't it because the C64 has no FDC, and MSX does?

Van Louthrax

Prophet (2281)

afbeelding van Louthrax

28-01-2017, 20:12

PingPong wrote:

To me it does not appear as a tech limits. the VDP, PSG, FM-PAC or other devices could be driven during VDP interrupts why this does not work for disk interface?
Anyone can explain why ?

So I think that most MSX disk drivers, when accessing a track or sector, have to wait for a specific signal or something that will come from the disk interface. At that time, it just can't be interrupted by the VDP or anything, because it might miss some data, as the disk keeps rotating (and assuming there's no "buffering" interface)? So everthing is done in "DI" mode.

Van Latok

msx guru (3785)

afbeelding van Latok

28-01-2017, 20:11

It's because c64 has DMA and MSX doesn't....

Van Manuel

Ascended (16966)

afbeelding van Manuel

28-01-2017, 20:53

latok: what do you mean exactly? What kind of DMA?

My point was that the C64 is controlling the disk drive on a lower level as it has no FDC. That gives more opportunity to fiddle in the loading process.

Van sd_snatcher

Prophet (3351)

afbeelding van sd_snatcher

28-01-2017, 21:02

The key aspect are the interrupts being disabled or not. The SD-Mapper 512 by FB-Labs was designed in a way that it doesn't require the interrupts to be disabled, and it keeps them enabled all the time. So BGM playback continues normally during disk I/O.

The problem with the old floppy disk interfaces is that they had cheap designs without any buffer, and were based on software polling (AKA busy wait) instead of interrupts. This is as cheap as it can get, but requires 100% of the CPU attention in order to not loose sync with the disk.

Link for the software polling article because the MRC interface went nuts with the parenthesis:
https://en.wikipedia.org/wiki/Polling_(computer_science)

Van syn

Paragon (1975)

afbeelding van syn

28-01-2017, 22:53

To summarize

Why it is not possible: classic diskroms disable interrupts for long periods of time
Why it is possible: modern diskroms don't disable interrupts
In other words: it works on harddisk/sd not on floppy drives

Also the c64 floppy drives has its OWN built-in MOS 6502 so the main CPU doesn't access the floppy drive at all https://en.wikipedia.org/wiki/Commodore_1541

Info provided by GuyveR800

Pagina 1/3
| 2 | 3