[comp.lang.pascal] MPU-401 code

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

This is a preliminary MPU-401 interrupt shell for MIDI programs.
All this program does is put the MIDI bytes received by the
ISR (interrupt service routines) in a circular queue.
**Note** that the user must sort the MIDI data and store the bytes
in a logical manner **then** send the bytes out the MIDI port.
For some reason this Interrupt structure does not like a procedure
call within the ISR. Anyone who can help and is interested in working
on this ---- Please respond via E-MAIL..
This is put on the Net in hopes that someone can improve on the code
and to get more response on MIDI programming in turbo-pascal.
Written in Turbo Pascal
UUENCODED FILE MPUINT.arc
------------------------ CUT HERE -----------------------------

begin 644 mpuint.arc
M&@A-4%4N24Y#`"4E)24EFP8``#0/5@^0G<X.```,>UI`.M*G@8(]("`Y:)*&
M#`@V9>R480-"2IDP9%Y<D9.&3IDY"4D4/)C0`14T'\N`@"/GS9@R9.K(^0@B
MS$P0=-Z`N/-&SIJ='=$DQ#`2H4(Z*$&D<>-1CIPZ<.B`:%F'SM*/+A***%HR
MB=29&$&^,6,&9](Q:>2,J</&)H@X=<K$3:B!JT(R9<Q<=;CT;=RX+I:.25B"
M*X@<+V+@>('C!HC'CX.T=`/"R<0Y;RA#<F&7H,&``T<:-#@D\QPZ!A\3"4(E
M")0G4JB`Z`&"Q(P9,':D!C&E-977L6?7OAU#MX*$!XA(F2*<!([<CQ&2"4,G
MS-2+9/+@U#FGC!N'(Y$KE]*<!G00TJE;!YM]^_67:22""`_I0)`A2YH;*;(C
M.H@F4%0!PGWYA0>9%$5,481L^AEA'`A5!!';%TT\0401S<U@QH.0&.!$%4PP
M(5P+Q4&&D!D]@7!&&71,5]U\GT$&@A%),$%%$>31)D,--/3W6$XSUG@C>6]4
M!8(8>7@$DAMO2'5'&$S!I!1E<,FE$HPDI=$&'#UYY)`9+;7AEY6!N3&8:`J,
MIH`5-NU&A99E?/%$52SLMD09>7QQ11AS?`'%3'-T1T:=Q_T7X!=EX)'&:7,0
M^AB`59"161DZ@"#$&V]`!*5QH%D`0A(O/#%5D5:Y09-`(:!I1!UF6I69BBRZ
M:%VE2WFTHAS](303'3*Y`1*)2I7%)`BR8FEI&6?TY1][(('YAIA5SF4@9&F4
M%4496]*A'5+>P=JB>B#H0!N)NT%VF4HK?ONBN-X:$684#WI'AG$&_>D23#*I
M!$551("+`D-DI"%$DI0BZ5$*_76(@@H@[$N'6*8>2;![D&;U1'XJI&`0FW(\
MAD6E!I=AG!#(+E5NL(96@:BBC`IG1AAL=&=6MXEV]"!D6(1+6VXGSP3'1:@=
M!PD".;,+19<@;-$;:\!1T86/"U^'$6^^-0U"QB>S:A5%*.0,I4/CI=##>9!%
MK74:%(U7TQA6R8=UH8\=+8=46ZS66M-=Z/Q?0P(3W%_4W7U'++AO/U;$=_0J
M8.]+,=WD\!!M.(3"&)'K$#+""3&`T!3R@C3&LVU\37&`61EH1YMP@_!QR#<_
ME@:M4=Z:N(R+XWM3NE_T^R(*IW<,<!JZAV$YP9@C=`2+$*L4,@C.BEFQL3)R
MG%I]:H#L]_0'K`&[K67@.KT!)"?KQO0)J*$W=-J/S6$";[81)ZGBOARSR.3[
M#/3T#:0_1QUCC('"&@C#G_G8Q:6Y)>TTU"D@'9XV/0=4"P1K\`$)8@"#"LYL
M?$*+0/O>5Q5QT>$I]!-:`L[&-1283W1DD,,<Q`:#%(`@11O\`JG6][O@Z4V!
M29.5`ADHM`/(:W;'$M_)'@BIE2WJ82Z#F<RX19F:T:%UJCM??UZGOI/%D%1Z
MDU]WH&@_ZGR/BOOK'PK2$$"A&:!HM,'A%A!(AQURR``/3(,$*6A!)DX/`5?L
M8`\^&!<HDA`$*.A:30270CFPT(4PA),,JP)%-;)QAWJCW+R&*"Z>I:Z+04L(
M',451O^1\8W'HT/NU-.U,FHRCG.L(`PN"((\TL&#(/0C4]`&2"ST(`QC`.`+
M.^;*F_U03;5KG$K,P(8ZS`$-LLH5\XIYS,&]J'DSVUO`IK02I(U$>H4JFL0\
M,K*281`Y1#Q4S5I&&RVJA(D@<"*'#G`'-*!-)8%$@=SHH+2JP<9I+A2=<J;@
MPIVY4%+D0V/#NE0WUKCFGD_39-38`P*['30X;SO<)-.DN)8P+E\520D=()4P
M"$0-00J2#:3<@\NVJ82-5WH;QU1G/6X:)'PF*U0X539.))93B>=$21,5]<3=
M8/)D`IUGTI;V&X1"\8&"U*<4I-!/$,``>^@4:CV9AE"]@71!4`PJT@IZ-Z/N
MYH^V))!Q))JX8&*4"A_9:(!\!$B&G611(#AFD=C@$#'D=)AI.4W#+&H[E8P!
M9A!QB$K=`@D)1`TI<%42$E'4,2BE[&H:4T#16&>0U]4*6=WKIA!3EP8I]JP,
M/_.B&>,(`A_0AHX5A*I.@QC3A#3@#$UZ`Q[R@`+<L(""IH1$`^[`$8^@8`0W
M8,$)1NJ$)GW*5]5A0V!=X((3Y/:UL9UM;6%PVQ@\E[<=*0,*AAN@&;&*;6DP
M34,7%08Q!#8$SN50`_#2%MKBIH+/+6)-0<(N<ZI7G=-C`%GSJU4#3K6HL>%A
MYI#J-<&%33BKC.I6B8HWJR8(J_S5FU0=BC<.,:"S[.KD&$T)&;#V0*PGDR_+
MD,@N/H9POPK0`!H(35!524Y4+E!!4P`E)<@(```T#ZX2Y!U@$P``#"#V@&@!
MZ8`/2`I`*&P"I0J()$ZH%)$BI0H4*B"F("G"A(E"A3P@,2#(H$\#!2<#@A@2
M1@Z=,G(RCD'SAHV>$W-`A&%SYHV<-'30M,D)XLX+$&/2R!E3ATU+$''JE)$*
MPHR<-VUT7G4#PDT9-G/><#694""3,'/H@*#RIL[,,F1T@(B1`\2<,G#4XK@!
M@JQ*%8"=/)$X!;"*E`BIH"D#(LV<F&WJI.WZ1BV9-SK=Y$&Z$RP(.IC-U'$S
MADX:L3E]@H!S=0S<.G+*S$&L(`W7,&XJ+XXIALV;,6M8?$;CV&Z9,D,_8QX3
M1C)CUF]Z(R=*]N3)/2H@.5B[^"Z(R)/%,`Y#A@S<QJ39U#%/!OWW,+977STC
M)TS6[!'([B&1!*I4J2[8-H9^_'T'1QT!DE:=`MA!TH1^)!WAFQ@[S4$0!639
MT5)*(!`Q11!6%`&"7+:]=`9,.HD1EGHOK737&3J0`,.,-NS`(4-5$!$$%4&P
M,,03540T(GHFPF0C@]DQL>!U+3295DMJE0B3''7D99P<=J3A&D$/+`A%:Z_%
M!@*.7R3AQDMR4)G7%U/`E*5K7TC1EFE>':F0$$4<`1&'"MG&AFV,@8`""3$4
M<10D!@C4D$8=3N&72"34`,.AB8*`:!!8/,I`I#-0*A"B0F2*V*8UQ."II08,
M(6I"D-8@PZF($K&JI:3>`*L!1"2A::0VW#J%KJ/*V*NE"`CT41&.!FN$$"GL
M\)%"`DU!!;`H)?21GX`*2@(.0[Q`PA`X'/71'DT\804(F/HXQ4`@Q):63XR1
M$08=81AW1AMEG+DK#H:20$2XSY)K;J,L8+IK$*9Z"**AT)9[;KH*A[AOO_\V
M.Z[#!!ML'9*00+#2$T2(2,43&4UD11)#B`B11!19A%%V&BQI+8XZ\CAB#ZOY
M1,<6\M(+A\Y=."N0%&60!P(4;T@9$X20/+!:'5%R%<=`D/3%81IFC-E0S4&`
MP(,/5:7!!IJ((1!4OOY-5<86<8`&1Q<W:YWCCD$<N0>79HX1&[YG@A#%STH3
MA(%?C67=]AMP>`UV$YA^$06;26@AXME2NQWW'&Z-@<+A<*2`&`9?><=YW##8
M35`.?F']<9`8\3!F&'@X#KGDP^7+X8^L7YXY"KA'U.S&UV6W71%.$`'"$T8\
M%-%$%5U4LA0GI_QQR"!D-_C&S_[L$@A;R`B####`K0/.)(#O+"0+[)&;&W/`
M44929F@)0A%/]`<:"#C(4$-=4*"\X+/8\HJV8&`K5.T!"D^`POR2Q2I2,0Q1
MQOK(KW95`R.<ZEFYHF`0+O@165$P!QQ4B*HH*(00@B!4%`08!)^%KEE!*@86
M-"`+/;2K(1C!8@%+@A2*0(7_S:]X1V)2DYI$/.,I34UJN0N6M,28+_TF3&4@
MR`&\!"8RP(8Q17!#&*13)BE$`04ZC((.Q)"'E_S.6AJ2`Y\:TP8YL*`-:%F#
M7,CX$CN=,$][LI9"X#B'-5CJ`..CC%I0$`.[H($-#_'B&0'81F(%4GL[*U\,
M@K;&-#02$@@(I"5C@IOV\'$-=E0()+DG2?'A;)-V+&(0%>!$UUA13$1PS!;9
M4(8N?C&,>!@2'<NPR(^D$3$&V*1P/NE($.PRE'?4DQ.`24Q$!;*0<SAD(J.`
M!SLA:I-_?*3.NB>#29XO`0(Y0AFBAB8DOJ>/[2K#&1R#IJI<)2OYVY_56!7,
M2P+RE(U4S2?/=P"!W$4MQ#3"$Z0PS5Q"H@*/,@`DN3G)N*'24@\02"?320?8
M<.5^9T,*<>#@`H@23B&JW%@KH9B1<9;)"E1`0;[H((<\Z$!*)Y)#+W^I1Q"\
MP0QF^*=P7L0W.@@G?G)(RQ?NX!,R[/1]8B'#4(M*HC.ITT@<PI,RUWC3G([3
M4A,(Y!-RB@(RF:F<5:(#F]S$Q#C-"5`I`,$*;H!,GJ[44A((Y!!>A$R@"I6H
M<FA/TP*ITC.U=`4X2*L*0$"#MB+5#4K%JUX=$$B[BE6Q*Y`!,O'5ABN0<D8S
MTH%CEYI7N,6MJO^<+'(LVSW,PD`'=QE#4CE+!E/:JZ>I!"+P.#8!Y25A6D%@
M0N0@<H2C2>$)*2-"%7:XKNQT@"PC?25CS`24+^!(:,,I3G'NL!O&9+0-!P+!
MB>B0$]L`!00")2@9L&8&F+RU#6\P3T[((M4\*H0*LJ'#<SGDKG$^%U5W^,E+
MV,`5%)R`:/\\02^A`+4AM*$]@\(!LYQ5%/U^I;\G(,*\ZA6?=R4.O>9Q@8#M
M2&`Z&!C!))@!#7"87Z`\6%`GN`)0T``"*[:A#9LQ31ML<P9CEK$,&AYP@0\\
M0!F0V,'\17$3DI`KN]#+)3D^4DA96<4K/H1]]&(#&\HT!2E`ESE2CFY.[F>;
M)V4YHTEXS#S;NTQK14Q$@20"73G4)K$F`:4H\'$JM<C%,,;YQR8.LG_#S,G2
MI$%#+R%#DD^RY.0Z>0IN*]-C&"P0+",R*,69UP^-=U/YO($^]ADS'LNLD%C.
M89:UM+.</U+B_;IASU6V*4XWS*$.?UA;1K@A@TM]8O\">)RL5L"2&[0$F6VL
M02?0SQ<@$>SK6$H!'V(($T0$A=\>00I!:()'KS/L8C/(4M8&-N$,+::W`.<+
M<_I"5-2&3!"DL3%#@BE4:YI,]V(RO.A^IG)6)R0B/&%4XEFG&Q#3`-5%`3EY
MR0/.S%`AZRYFWZQJ`*U1L%VK8"4*+#@!"')-JWR1H=Q+/@F9.021VSJW(7;L
M<I2G[!@YV+%W&`EDZ3@4!>_2P8YC8$-0]6;'V+AO7FM4"4$2`((LM"4FT,%T
M5HC:E/;T!`35I1H$$MH3T.`A#X1D00P6B:B%GT`QTLU)'GYN::&W:S1NH'%1
MB$/+QHB9.7FY8DZ&7.1=SH'BB&KZ&YX>=3D#T^I"N'%.8N.:/Y\G/DFHLEQ.
MP`+5CH8.5#>`>9P"]1A@MI>'%QL(UE"&/+!&-G>Y.(=B/G.3<\C"7RBY':\`
MY%.?H`EI&.\)]9[.OML!+B&@N$;?MP9P0TW<_RF#DHOG@MEJ`!H(455%544N
M24Y#`"4E):L$```T#VH2-)8`"@``#'M`J("4I$\#!0%!Y'@18R&.&R!`4)&3
M)XV;,R#HH$DS!\2<-&W@L"D#(DZ=,B=!0#IA$&'$*53JP$E#!L20-'+&U&$3
M1D[)DRGK?+P(`DU/,FSR@`CC1NF8,&QT\J23YHV;CI`JM$Q(96-'-V7N_$1)
M<@Z:-SMKWGDC9PT(JR`LTBDC1XY,.B#(R$ECIXP;$'+04@6+-<+6B!HY@K@3
MIJ.<,E"3`A:*IDQ-,77PFD7+1BU;MR!$S*$CD^;8DR)42M@Z4,GAB$V>$*G"
MI,@4$#H.JF00Q6(:O"!:^)#H%02<P&,LUWF\.`T;-H#+S"F#5R-)DV1=@*@R
M/6/Q.Y7=Z(9D(0_:Q4RKOXE[Q@U;DI'?FO%.4DR>N1TUAL';)HQ2HWV-9T$8
M.K6QTWZ6Q?67=:>5X8)N9M3AQAA4P15%&2'1D8<.(`CQQALC,161<,0I9H2$
M%%;UUQW.0?<8:7(L6)E'=.PGE'ST-3B>!^!15YE/=-A%$EL@F`'5=#N,9P`4
MF5D4!0KVS97"B,-U19(;8;11EG\=_;;4<P\J4"2*%?YU!G5F!-9&%+B!$"5)
M)%H)`I9:>L1E7'A%IATD"[1TT$%#6#6:;A'!%@067T3QQ11):%$$"#V`8`,,
ME"8I9J$@&)$$$U04(06D(,A0`PT[8+K'F7CM5=,;\UG7'9:C*44@57UYY-=0
M&+TYAY\*4)$''&40&I&B23A!1!%8@`J#"RXT<6BBBS9:A*681@%4&5]H""RH
M/<GAWQ;$&HML%SB^::D5/0D+@K5DM<GN2=G^6@:UA49!QQMPL!"%&&_@Q:%<
M99PIAZ4''?=&<F0L1U)O;OQ6*@@!/?7<4DU156>/?YE7!WINJ!?==-7-B%U*
M+45D1T]QM0FPP-2*$;!%ZA9)9!JX10I#1NLYBZBBC#J:UQOC(3!R&5ND0:X.
M-C\,L8)>#@U"R=7>"T?-(,#P<$*/@6S<&P#+T1'4]?+K;](1!02)8;KY18:E
M)TY8YKH13LRAAR!"Y@:]+I\!LYB0&)#&?"C8BR^H^_8;'`@Q3&G=7U'$#1W2
M&0DYW@9EL-%=XSL]'JF1EL]+J-K4]ETP<LHQE\2$<@@.1ZD!_5V2U`H"QM29
M]/UET1@^5=Y=UM3A7/73NN6]-Z9QS:<Z"#P,IS.T/3^Z^+JP0SY%'6.,$;C4
M*8Q'@NX+1Y]TVFZL/?K!I9-T.NZ%T]'RRW^U/I][>)5A$E2^QP'[\[?[5'+?
MKJ</ZO(\D]9X$O`\X8F';Q+P'^2L-AX)E`$/#AN/`T`7L_Z)#7G#.9Z5&'=!
MZ5'/>NE+`;4HJ("VI<A"&(*#AMI$MQ#=;6FNB\,%(V6_P3W//7G93QB`)R8#
M*LF"AHN4Z@;XO`ME2"F0"]))!LB]=:5PA9#C')+`)SX%&`QA"@,!DP;SI")T
MC"(LO$\91!@\]@FK?XZK'0@>^!MA-=&'?&.`Z[P8)*4D+U/.F0N0PC.>!\!1
M)1$8VA9J"(>C18J.%"G5>")POM1)C77Y>QV^]O<`$JH$`98DH0G?=@3J&$%-
M;.*0N<JHMP,2KY-T^.0;UD0U0<JP7UV@5Z$:F;ZK*0AW);E@R4CX)P5H`!(A
#`!H`
`
end
--------------------END-----------------------------------------

Hope to hear from more programmers!
        Aron_fingers_nelson@cup.portal.com