Page 1 of 1

MIDIV10 by Ian Jones

Posted: Fri May 31, 2024 7:57 am
by sixxie
I have no idea how this is supposed to work (D64 serial port?), and I also have no idea why I even have the disk (possibly inherited from Robin?). But this supposedly pokes at MIDI stuff.

Re: MIDIV10 by Ian Jones

Posted: Fri May 31, 2024 9:04 am
by robcfg
Maybe it controls a cartridge hosting a midi device?

The program is written in Basic, so we could take a peek...

Re: MIDIV10 by Ian Jones

Posted: Fri May 31, 2024 9:09 am
by robcfg
Heh,

The code is writing to port &HFF74 as if it were a control port and &HFF75 like a data port:

Code: Select all

440 :'PLAYBACK
450 CLS:GOSUB 90
455 T2=60000/TEMPO
460 POKE&HFF74,3:POKE&HFF74,22 :'SET MIDI
470 POKE&HFF75,207:POKE&HFF75,NS:'STYLE
480 INPUT "ENTER TO START";ST
490 FOR J= 0 TO 3:'VOICE
500 POKE&HFF75,191+CH(J):POKE&HFF75,VO(J)
510 NEXTJ
520 FOR J= 0 TO 3:'VIBRATO
530 POKE&HFF75,175+CH(J):POKE&HFF75,1:POKE&HFF75,VI(J)
540 NEXTJ
550 FOR J= 0 TO 3:'SUSTAIN
560 POKE&HFF75,175+CH(J):POKE&HFF75,64:POKE&HFF75,SU(J)
570 NEXTJ
580 FOR J= 0 TO 3:'PORTAMENTO
590 POKE&HFF75,175+CH(J):POKE&HFF75,65:POKE&HFF75,PO(J)
600 NEXT J
610 FORI=1 TO 300
620 IF N1(I,0)=999 THEN GOTO 750
630 FOR J=0 TO 3
640 POKE&HFF75,143+CH(J)
650 POKE&HFF75,N1(I,J)
660 POKE&HFF75,VE(J)
670 NEXT J
680 WAIT T2*L1(I)
690 FOR J=0 TO 3
700 POKE&HFF75,127+CH(J)
710 POKE&HFF75,N1(I,J)
720 POKE&HFF75,VE(J)
730 NEXTJ
740 NEXTI
750 PRINT"AGAIN (Y?N)"
760 YN$=INKEY$:IF YN$="" THEN 760
770 IF YN$="Y" THEN 440 :ELSE 280
So I guess we have a search and capture order for a Midi cartridge for the Dragon :mrgreen:

Re: MIDIV10 by Ian Jones

Posted: Fri May 31, 2024 10:00 am
by robcfg
I also found this:

https://github.com/go4retro/MIDIMaestro

Which references the Rulaford MIDI Interface, could that be it?

Looking at the V1 schematics, which should be closer or that of the original cartridge, turns out that address bits 5,6,8,9,10,11,12,13,14 and 15 are fed into the 74LS133 NAND gate which will output Low when all these bits are set high (address >= &HFF60).

That value is then inverted and fed along address bits 1,2,3,4 and 7 to the 74LS138 3-to-8 line decoder, where it enables the 6850's |CS2 signal.

Finally, address bit 0 is used to tell the RS (Register Select) of the 6850 if we are writing to a control register (&HFF74) or sending data (&HFF75).

So, it seems we've found our cartridge, and the good thing is that we can buy one or make it ourselves!

Re: MIDIV10 by Ian Jones

Posted: Fri May 31, 2024 10:59 am
by robcfg
I found another funny thing :mrgreen:

When operating the disk drive (which is funny because you cannot have the disk cartridge and the midi cartridge together unless you have a MPI or similar device), the program tries to

Code: Select all

OPEN"I",#2,"LARGO.M10"
which in the Dragon results in a

Code: Select all

?DN ERROR
Where can I find a list of the File channel IDs?

Re: MIDIV10 by Ian Jones

Posted: Fri May 31, 2024 11:26 am
by sixxie
robcfg wrote: Fri May 31, 2024 10:00 am I also found this:

https://github.com/go4retro/MIDIMaestro

Which references the Rulaford MIDI Interface, could that be it?
Could be! I've done very little with MIDI, and never on the Dragon.

It was actually a FB post by Jim that prompted me to upload this, as I remembered I had it.

Re: MIDIV10 by Ian Jones

Posted: Sun Jun 02, 2024 8:23 pm
by Go4Retro
If someone is interested:

https://store.go4retro.com/tandy/midi-maestro/

There's a jumper on the unit that sets the addressing for Dragon (ff74/75)

Re: MIDIV10 by Ian Jones

Posted: Sun Jun 02, 2024 10:04 pm
by robcfg
Nice!

I saw the manual of the original Rulaford MIDI interface for the CoCo and the ports were different, so the jumper is a nice touch.

Do you have the Dragon version of the manual by any chance?