why it is not possible?

Página 1/3
| 2 | 3

Por PingPong

Prophet (3793)

Imagen del 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 ?

Login sesión o register para postear comentarios

Por Louthrax

Prophet (2406)

Imagen del 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 ??

Por Meits

Scribe (6460)

Imagen del 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.

Por Hrothgar

Champion (479)

Imagen del 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.

Por Metalion

Paragon (1451)

Imagen del Metalion

28-01-2017, 19:28

I think the disk ROM does use the interruptions.

Por Manuel

Ascended (18247)

Imagen del Manuel

28-01-2017, 20:01

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

Por Louthrax

Prophet (2406)

Imagen del 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.

Por Latok

msx guru (3843)

Imagen del Latok

28-01-2017, 20:11

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

Por Manuel

Ascended (18247)

Imagen del 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.

Por sd_snatcher

Prophet (3486)

Imagen del 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)

Por syn

Prophet (2069)

Imagen del 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

Página 1/3
| 2 | 3