[comp.lang.pascal] mpu -401 Uart mode pascal routines

Aron_Fingers_Nelson@cup.portal.com (09/20/87)

This is Turbo Pascal code for the MPU-401 and IBM-pc. This uses the
MPU in "dumb" mode. It can be and has been used for a MIDI synth
librarian and MIDI filter.
Use it for your own MIDI projects..
Correct mistakes and return to me!  ( hah hah!!! )
Seriously, this file can be used for a MIDI librarian.

This file is UUEncoded.

------------------- CUT HERE ---------------------------------------------
begin 644 mpu.arc
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
1VQ@$!@D/2@]I1RQ00#0`&@``
`
end

-------------------- END UUE FILE ----------------------------

Good Luck in MIDI programming!!!

aron_fingers_nelson@cup.portal.com

Aron_Fingers_Nelson@cup.portal.com (09/24/87)

 I know that I posted some inquiries about MPU 401 code in Pascal -
got hardly any response so I guess hardly anyones working on music in
pascal... Anyway I have another question - I have a routines that
installs itself as a device driver reliably with int(s)
27 hex 1b (CTRL break) - dec 28 hex 1C (clock tick int)
and dec 5 Hex 5 ( print screen ) ------- it works as you might
expect, taking over whenever the INT is invoked. Can anyone tell me
why it doesn't work with hex 0A? This is supposed to be the interrupt
dec 10 address 0028  for the MPU-401. I'm so close at making this work and
it doesn't!!! Why would it work with all the other interrupts and not
with int 10? it just sits there and does nothing...
If anyone knows interrupt handling in pascal please reply..
else 'C' is looking very good nowdays..................

                      aron_fingers_nelson@cup.portal.com