CX5M DMS-II Sequencer

Pagina 2/9
1 | | 3 | 4 | 5 | 6 | 7

Van dms1guy

Resident (50)

afbeelding van dms1guy

24-05-2014, 08:44

Quote:

Either way, I’m very impressed with the software! It looks great, much fancier than the Yamaha stuff, and also seems very advanced. Also a big scroll thing at the bottom telling me when I had a MIDI framing error Smile. I can only hope Synthesix will ever be this solid a piece of software!

Thanks Grauw, I really appreciate you saying that, because I really poured my heart and soul into producing something realy special for the Mk2, and I never really got the feedback before I left the project.

Quote:

After some fiddling, here’s how to lay down a simple phrase:

This is great Grauw .. well done !
You seem to have worked most of it out.

Van grit

Resident (53)

afbeelding van grit

24-05-2014, 10:27

Thanks for the comments. Grauw / Manuel: I've updated the file with it's 'unmodified pristine version'. Suppose you're right about the ROM but I just couldn't resist.

Van Manuel

Ascended (17947)

afbeelding van Manuel

24-05-2014, 12:23

Grauw, can you make a video of this software running on your real Yamaha? Please include starting up.

Van dms1guy

Resident (50)

afbeelding van dms1guy

24-05-2014, 12:39

Quote:

Grauw, can you make a video of this software running on your real Yamaha? Please include starting up.

I would love to see that Smile

Van Grauw

Ascended (9917)

afbeelding van Grauw

24-05-2014, 14:40

grit, thanks, it’s very much appreciated Smile.

Manuel, dms1guy, here: DMS1 Mk2 MIDI Recorder for SFG-05 (MSX)

Van dms1guy

Resident (50)

afbeelding van dms1guy

24-05-2014, 15:07

Quote:

Manuel, dms1guy, here: DMS1 Mk2 MIDI Recorder for SFG-05 (MSX)

Wow ! it is all coming back to me. ... another walk down memory lane.

The effort that went into that design. As you know, there are not many pixels in an MSX display, and I used the mouse cursor to display system state like record mode and phrase numbers for copy and paste.

The "initialising RAM disk" message is when the system looks for all the banked memory and initialises the memory manager. Incidentally, the memory manager doesn't just handle the MSX paged memory, but also a separate Digital Music Systems memory banking scheme which my friend Simon Brattel (of Drak Star fame: http://torinak.com/qaop#!darkstar) came up with.

On a side note, it may be that the emulation crashing problems may be to do with my scans to see if the Digital Music Systems memory expansion catridge running Simon's memory banking design, is installed.

Van Manuel

Ascended (17947)

afbeelding van Manuel

24-05-2014, 15:22

The emulation problem seems to come from this (mostly pasted from IRC):

the software seems to hang in some loop in which it checks $f9a2
that's in the play buffer area
looks like that area contains a routine
perhaps it's just waiting for some interrupt or so?

 8F4B  ei                  FB
 8F4C  nop                 00
 8F4D  di                  F3
 8F4E  ld     hl,#f9a2     21 A2 F9
 8F51  ld     c,(hl)       4E
 8F52  inc    hl           23
 8F53  ld     a,(hl)       7E
 8F54  sub    c            91
 8F55  cp     #c9          FE C9
 8F57  jr     nc,#8f4b     30 F2

so, something should become C9
aha, the diff between 0xF9A2 and 0xF9A3's content it seems
but F9A3 contains 0xC9 already
and F9A2 contains 0
so the diff *is* 0xC9
If A >= N, then C flag is reset.
so I guess it waits for it to become smaller than 0xC9
Question is: who writes there
ei; nop; di is interesting
a small time gap for interrupts to happen?
ISR seems to be at 0x2CFC
and indeed, it seems to get written around there
oh, it deopends on #3FF6 and #3FF5, which are the MIDI DATA and STATUS registers, which are not properly implemented
The YM2148 is only very partly implemented
that's the MIDI serial chip
I tried to port it from blueMSX in the days, but I got stuck on stuff I didn't know how to port
the program does a readData and a readStatus on that 2148
I guess I need a datasheet Tongue
not found Sad
then i guess the bluemsx implementation has to serve as the datasheet
wouterv: unfortunately the program does the same in blueMSX, according to mars2000you
so it won't help to complete the implementation exactly like in blueMSX I guess

And at this point I gave up Tongue

This is what happens exactly in openMSX: https://www.youtube.com/watch?v=KObWdwt3zUE

Van dms1guy

Resident (50)

afbeelding van dms1guy

24-05-2014, 16:16

Quote:

8F4B ei FB
8F4C nop 00
8F4D di F3
8F4E ld hl,#f9a2 21 A2 F9
8F51 ld c,(hl) 4E
8F52 inc hl 23
8F53 ld a,(hl) 7E
8F54 sub c 91
8F55 cp #c9 FE C9
8F57 jr nc,#8f4b 30 F2

This is a simple loop that reads F9A2 and F9A3
and loops until the value read from F9A2 becomes larger than the fixed value (C9) which is in F9A3.

F9A2 must be a up-counter

Normally the system runs with interrupts disabled to ensure accurate playback, but while the system is waiting for the up-counter F9A2 to reach and cross the threshold value in F9A3, it enables interrupts so that any pending MSX system interrupts can be serviced. The NOP is there to ensure that any pending interrupts trigger a handler, as the Z80 datasheet suggested that if you put EI and DI back-to-back that there were circumstances where the interrupt handler may not trigger.

So basically it is waiting for a timed period to elapse, and while it is waiting, it uses this opportunity to allow any pending MSX interrupts to be serviced, as the rest of the time, the system runs with interrupts disabled.

The question is, why is the byte at F9A2 not being incremented.
I don't know if F9A2 is memory or a hardware port.
If it is a hardware port, then it is a TIMER
If it is memory, then it is updated from a TIMER handler.

Without more information, that is as much as I can deduce from the disassembly you have presented.

Van Grauw

Ascended (9917)

afbeelding van Grauw

24-05-2014, 17:05

Play buffer stuff is used by the SFG-05’s MBIOS, the PSG play routines are disabled when it’s active with a bit of a hack in the H.PLAY hook. It uses two timers and replaces the regular BIOS ISR. Switches to interrupt mode 2 too if it doesn’t run in SFG-01 compatibility mode.

I imagine at least these timers need to be emulated properly. You can read some details in the manual. YM2151 datasheet is also on the MAP.

Van Manuel

Ascended (17947)

afbeelding van Manuel

24-05-2014, 18:00

As you can see in the text I pasted, F9A2 is updated in the ISR depending on #3FF6 and #3FF5, which are the MIDI DATA and STATUS registers (implemented in the YM2148).

Pagina 2/9
1 | | 3 | 4 | 5 | 6 | 7