
|
MIDI op de MSX Arsoft, 01-09-94
Voor de MSX-computer zijn op dit moment 4 bekende MIDI-interfaces:
- Philips muziekmodule
- FAC Midi-interface
- MIDISaurus
- MSX-MIDI (op de Turbo-R)
De onderstaande informatie geldt voor de muziekmodule en waarschijnlijk ook voor
de FAC Midi-interface. Het verschil met de muziekmodule zijn de poortnummers en
de afwezigheid van bepaalde timers.
Muziekmodule:
--------------
De ACIA oftewel de MIDI-interface wordt bestuurd via poorten 0,1,4 en 5:
OUT 0 - instellen ACIA functies
OUT 0,3 : reset ACIA
OUT 0,21: instellen MIDI-protocol
(8 databits, geen pariteit, 1 stopbit, geen interrupt, 31250 bps)
bit 0,1 - b1 b0 zend- en ontvangstsnelheid:
----------------------------------------------------
0 0 gelijk aan kloksnelheid, dus 500 kbits p/s
> 0 1 1/16 van de kloksnelheid, dus 31250 bits p/s
1 0 1/64 van de kloksnelheid, dus 7812,5 bits p/s
1 1 algemene reset van de ACIA
bit 2,3,4 - b4 b3 b2 databits pariteit stopbits
-------------------------------------
0 0 0 7 even 2
0 0 1 7 oneven 2
0 1 0 7 even 1
0 1 1 7 oneven 1
1 0 0 8 geen 2
> 1 0 1 8 geen 1
1 1 0 8 geen 1
1 1 1 8 oneven 1
bit 5 - Als dit bit 1 is wordt een interrupt veroorzaakt als de
ACIA klaar is met het verzenden van het laatste teken.
bit 6 - Bit 6 controleert het Request To Send (RTS) signaal op
pin 5. In de module is dit niet aangesloten, zodat het
hier geen functie heeft.
bit 7 - Als dit bit 1 is wordt interrupt veroorzaakt een correct
ontvangen teken een interrupt.
OUT 1 - verzenden DATA
INP(4) - lezen ACIA status
bit 0 Er is een teken correct ontvangen. Nadat het teken met
INP(5) gelezen is wordt dit bit gereset.
bit 1 De zendbuffer is leeg, er kan desgewenst een nieuw teken
verzonden worden.
bit 2 Geeft toestand van het Data Carrier Detect signaal.
(niet aangesloten, dus altijd 0)
bit 3 Geeft toestand van het Clear To Send signaal.
(niet aangesloten, dus altijd 0)
bit 4 Er is een teken ontvangen zonder het aantal
voorgeschreven stopbits (Frame error).
bit 5 Er is een teken ontvangen in de ontvangstbuffer terwijl
het vorige nog niet gelezen was (Overrun error).
bit 6 Er is een teken ontvangen met foute pariteit
(Parity error).
bit 7 Er werd een interrupt gegeven. De microprocessor kan aan
dit bit zien dat de interrupt van de ACIA afkomstig is.
Na lezen van DATA worden bits 4,5 en 6 weer op nul gezet.
INP(5) - voor het ontvangen van MIDI DATA.
## Polling mode
Initialisatie:
OUT 0,%00000011 - reset ACIA
OUT 0,%00010101 - 8 bits, no parity, 1 stopbit, no interrupt, 31250 bps
Het sturen van een byte via de MIDI-poort gaat als volgt:
- lees INP(4) (acia-status)
- als bit 1 gezet is kan er een teken verstuurd worden
- stuur de byte met OUT 1,byte
Het ontvangen van een byte via de MIDI-poort gaat als volgt:
- lees INP(4) (acia-status)
- als bit 0 gezet is staat er een teken gereed
- lees dit teken met INP(5)
## Interrupt mode
Initialisatie:
OUT 0,%00000011 - reset ACIA
OUT 0,%10010101 - 8 databits, geen pariteit, 1 stopbit, interrupt, 31250 bps
Het ontvangen van een byte via de MIDI-poort gaat als volgt:
- lees INP(4) (acia-status)
- als bit 7 gezet is dan betekend dat dat de interrupt van de ACIA afkomstig
was. Zoniet dan moet uw routine de interrupt verder laten gaan.
- lees dit teken met INP(5)
|