Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!mimsy!eneevax!iarocci From: iarocci@eneevax.UUCP (Bill Dorsey) Newsgroups: comp.sys.atari.st Subject: vertical blank interrupt handler package Message-ID: <538@eneevax.UUCP> Date: Sat, 3-Jan-87 15:55:45 EST Article-I.D.: eneevax.538 Posted: Sat Jan 3 15:55:45 1987 Date-Received: Sat, 3-Jan-87 21:55:36 EST Reply-To: iarocci@eneevax.UUCP (Bill Dorsey) Distribution: world Organization: never Lines: 192 I have found the following vertical blank handler package to be useful for a number of purposes, and thought I'd pass it on. The arc'ed file includes enough documentation so that most people should be able to use it. Basically, it allows one to write vertical blank interrupt routines in C, never having to delve into 68000 code or worry about saving registers, etc. It uses the vertical blank queue to insert a scheduler which calls user processes. I'm thinking about rewriting the scheduler in 68000 to speed it up a bit, but this version works well, so here it is. Be sure to skim through the documentation file, as it contains explanations of constants you may want to change. One constant must be changed depending on whether you are using a monochrome or RGB system in order for the sleep() function to work properly. If anyone has any questions or comments, I'll try to answer them as best I can. ----------------------------------------------------------------------------- begin 644 vbi.arc M&@A%6$%-4$Q%+D,`````_00``"$.ERN>7^H'```,+U2`L",FS1PT9=BP<3$& M1(L6`\O(H9-F3!@V(,2P">-F#8@T;NA(E%,'#AT0:#B282,1Q,&$;!HH`*%" M)DT00][`R2,GS1DT)U$,20$B1@X<-S+F`1&DS9DR;5B`2.)FC`N;-6<*A"*Q MC<$Y:=ZX^3@'I<0R8I:>D<-1)!D09M[(`<$QC]@R(.B\`=$FS!J\/H&"4@,O-]/\ M.=[%(8.[`7F&KD(0@>$\/PGY(QVI?9?FSHAW.1LRDLO@>6T2Q)TTI$'(O^RX M+&TY7LT!EEC@F3$9;(BA(=<<*;GW7+L@2<&<,+!5QQIF-7QTX%TB?%&C"Y) M]-EK#69U$W+7O1&:?90Y"=<;"KUQ1UG.E<4C'!>*!D(=8+G1W9`@-/&<1U=< MR$8:FY4UA&EMD,J2'"Q(=MA)![U1QWM]PB$7617N`- M.=>MHY8J!X,43E$&7D-*%H:`)=+JEF`EUN%C=CB.%==E/+PQ1T%RNH"&#PY# M+/&E(A"4AL8B-*R`?"+),1844CQQZV4E(KN%$RR[W,4.)O<%$@HIR+2'31^% M9!EH,;!`*ADRX#P3"&R(U5T:2E,(TDDPOR9@##P;C9G5<\C`L])`IV$@"B#A MQS,(/?0`PA193%&$%%(0]?-,D!!PV=1FH"`"57,`IU"4M\$5G,2\<>&&""E$ M7;=\9G\9-0A]F"SUV"@<'4,/8S`I4N5;]_@R&(_ZXV""@4#EH,F">.N>^"RA#"J"K MS;;;<*=@ND"Z\[ZZ@"#(X+I-==\]N]ZV$YM[ZKUSW7WPB0,M/AVT.^&I?B%) MQ!W3;^CD`B0#L/_XN\5+0P]@L(./\$`&,("$`9A0P#2L8`76X]_I0K.1I0`P M#)@JU?=@-[RQ4;`,F[-<]$1'O=))4"`?3,SVRA*##8(@?+*#'_F$9;[6""8A M(%1=Y[@'O,.U;VG$0T$*RW`\I(UP>J2+X``FB$,5[K`LWE/!ZUX8.[S-\':K ML>$0T\)&<=N5"&%JQ=C3$ MG0W9R*@WQC$E;.JC,7B!XPA0V&#D%R&1J7+P: MSWP&-"%@1UB&E`$+3A"$$R12C:"$`V)`0,H30!([[L&+%($V!Y:4`0XHH,$I M"7`Z&C0*.V0H2QU"ZYD"YD8A3XH%E"@0Y0F$ M8,H=I'&)`DGE*K?I2FK!DE.RG*)+;(G+&NSR=#7XI5B">2IB8L0-Q[3(=Y99 M21H(5D))+D,`12Y#`````)D(```A#FTQ(QG+#P``#"]4@+`C)HV+,2!:M!A8 M1@Z=-&/"L`$AADT8-VM`I'%#IZ&<.G#H@$!SD0R;AB"V6&DX)\T;-R!BN(`! M`@2,&"]NOL!QHTL#!2!4_`P*8L@;.'GDI#F#1B2*(2EBYN!),0^((&W.E&G# M`D02-V-<#!4*5""4AFW2S&GY4N.'X[ M1S.=.V&,=UU"<6&,\5I>8=`1W6L@4'&1&B`((<047:$PPTTI MM"!##3&T`(,--]3@0DU5P$%&EICYY49>D9EG1AIXY!FE1-5)^888X[G!&F>N MB58'4YWI)L8;.H(P1T.IY58A641)%]YJ_WEFI5YOH/?&'6]A]U:1<'C(&@AU MM.2&>4PVD5U&5WC(1AJEO34$96^TT>I),=@A57FAHX.O9RQ&NV6LIQ7))BN0,5@I"R8"00:A(<+%"FPD4F5U M<+1#`@D$!&S0(AEW&'FSPLJ1AR`HBD>R5K+&;'E!6=PS1Y35(4>K9`Q=M$!C M>&T:F@-112//%KVF-$NX43<,O=Q=!&T[UVM-FZS3-Y=*"00@*0 M$&`TX;SNJL>];0FNP!Y#:<1U&CM4SL9+YJT%1^9`64[UE4U[]85"&CW`L(-&/.`=]Q#+ MI['""BD,E3C==J?1A0MS*-=1#T9(4401?`O$N$1IZ"&8WVL-%H:T65?N>0]3 M@-00"C`PD0+M`B'945]SL)\<4E,=`'I/,,,[V/&2%ST>X"!ZTXL*Y8"2N#30 M"`4H4($5A,"$UA6A"D5(P1:T!X(>]``$Q^-:!E-@N*C`0(+6,T`&-]A!$()0 MA-KK@>](=Y+R6:Y[$IG(#JU&+,L-I"(7R8B/RO"C^%'0`/5#$`H\M[\8)L=K M,'G"$OCW0^6@!W(P":"+#&0&9CD1!(GK0^74&+HHWH^*H*O)%>4`DRED80I% MD((4N+@1('XQ2#`QPW).TC:ML?$G.-M/@`R'N`$839$_>P.H4'"2'`EF@TG` MT9Z(%17)3;`FFVM::,YP$C>@+G2C+&7R\!`#&.1O!4*`0@M\`(%_[7!.'-`02J1Q((7R+)ROG,XW$$02A[-P"8!2J/>0_42`2M1P`+HG"&'/3@#4?8 MA1*>\)ZE@^$3,5K##X:0HSU(H5-4P,(4N-"'Y+3/[TK7%S.(QC2Y6V(3AP<) M*`IPBO/<']&,ADQZ"296*$$HJ'AJ@#EF<8M#'6<9Z(!%2]5AC.WC*0'86!-_ M`A4.0@TG43%C5(0E-:%GG-)4JVI'/.J1BT[5RR"]IM"?;!.D^02G.$^CMO;A M%27K#)UQSN`8E+03I`67`)!]3`^P]SXN:D4DS_(92KK%OK<`KJX4 M)$#Q4(B\AZ:A>8V%X`I8$%TY3/2)4%I[V1!$]GI3CI:?=[KC",8_\G!*AOA*Z6]RVNF-OG1/7@T%[O'EUK? MVL&5`56VOQM<`R@;3V4NPG^SX$,%:WMM8W;PF]L=5PS[6:U4I>.]VZ>:Y]HY MKFW-XQXSK.OVL;N,'U*(#^3J(;IJDV>K.4FCP19I@10XXU/%EVK1IAK0>7JU MU!7#%L"VO7PS6WPAI"C"[ZAP/O*XX6^1")4./.UT=26N@JRX<=*:\I6KIN4' M!!_,Z_WE-$NS6\TN0EKCJL58CS7@8;SJMB^N@)_X.%UP0`%J0]SQ@5/GQW#` M--?&/@:35Z[H%&8Y]Y(^!1L7`0I,QR[.+:7F;M7]QD1_]?NV$/>C'^0-2.L! MVU60!-CET0I!8$+>KRR27!\%):5!/-XSUQD`[*M2XZ)S8!(0\?BW:6P0\H-SH9, MS3)XQI2!`_0.=S0@T$,^C!C.:JY>LW,^'1@-Q#F[U11$?__I``((0J1!'0@! MR3%'&4N9`((2;Z#14!+%"31&&E8ID(1V<-5Q4A@:N;54''487XW77#B)2;&D=]D4T&XT:(F8H;87*T4!,<$(&9XUL. ME9%0';,A=H=C8\!WQQMUE)=8C7*X]R`(LZ&8QFP7V16O0BT@-,<:T25FWUD* MN7%&3YKF61GM:'N>_UJ!5T;!.G'EQEF#L0&'7DT6P0>E,&Q4HO: M<3='377"V%IT!F6'650&'52%[=A*VP%5+-3- M7M%90S5.;&U-FJ4E]*.#%<<32^F7(;1%W"%K$!GL%\35I[+>V<8;FH&*F&1U MAC.L;#\U(0(5I`""T.7&(IDZ0\&,Y3\`5@Y001B9?^J4N=^8KV(C0@R/##(7 M%6T&-6#A4>C*H)%2U05K9&J!&693!HN0IB9GJ$-QT$*U1_'K+C8[GLL0CW$%:1.90!^Z$00P*2F+_CG81.*AL4@GA6X=J4H4I%$%1O)%*8N2@F8B8 M:G&IJ<_C/F61$(5-02#)#>/J\J+G<:]\9N*>':#H@C&`(&;1J4F((C($YCD/ M>A%!S4QR@[#3-.0-8E"#_("2QS(TRS=@@:0DA>80Z+UQ035J"(]JXL"\K$5L M\*$B86SFQI$,K6P&V8BXSG@O/+XDB@H)T^T:`*)FZXXQ7;-62/:7`!&F0'(G@)CU^`]!E)0""%(P@!67E0 M5N6.*2+W+(@X!^E?NT@2N?(1!FH(B2<5DC"$)4P!"H3R8B'I(B>YV.$C*1(6 M7SR2EK6H#9O:;%80R)`\KT0K#^Q,YAOGP,R?T5,O]*K)06E6/601+I6(B4(5 M@N`$*E2A"1:Y7+N099\-F2E,_E&5<$@X-VOYT#/1VLP,FU?0C&RD5Y4"%J92 MLA(Y_-*@&UF*1V:#..V1,)S2H<@3E@0"+&B5JZ@Y0A&:0(2M$M%IU71(9"SW M'MS4!#=#*]:QZ)2PPUQ2:7(!"T;,A*8@_:]I0#G>;"2HSB62:#R=DHLP/Q>M M;,VJ,_=B&EI9Y+M3CF\_KN+7;%I@D*%MYD&1\M772CJ&LW#T,(Q]9.'0]<:Q MM:R1!LZU\S.0@H#!Q M#C6%%K[*0-A7POHF4&:0E'F'2QE(:D\X@F:>9XY@1=W`EEK&`DJE-.;5# MUZ577MG7%>=QCVW.+<."TJ"=YQXLBSZC7&4\(DKFKB1(=!!>V;9&PM%:9`XZ M4LK/Y-]JHAGM/;Y3S7#[`*PC-8 M8&QD0#VA(68:;AQ+8\D#$4EF5L8ROK2,FS3%#"A8,T(02"'OGMS35JVVL95*45ZFQ%?@S!WYUKM!2$Y,5?,T65PC;" M@J+6,3`L<6>EQB.MS;SN#@UAHAB4A18>4Z=DKFX./M$"`I6RU*5-:)\;:H*U M;?GH02Z<[PI+U#AJ07(EE;GQL*6F,^7BKG/(VJ"\L!8&XLQ&3JFC(EU+';74 M.5LNTI[)@<<9%Z-*BE*_NM1@\C"&"V,L7?]ZZS6/BL6DBCS!5UZP",M0L+L, M;#.0!DG$(E+'E3P-4-=U(W/^V!5Q@J"0Q&SJO)2&.O+AK@G%,RF,I)D$=A14S>YXRD$*&@/OAW_'*U].*R:XA&1P#7.:M@"'DEM=X$*ZO#LJ3'LOE"Y^_ M%[C@NO;RY3[TD4/-NQK=F)BU:7'F40!NU%EH_10>4#4Q0A6<,(1]/L$)4P"C MRKF#`J*TX.T>E*P1OP(=A2!1#V$J'Z]:'O)@-;BIL@,*QY0EGIJ``!()`-UF MX@P11RYE_2!G*<$R-X83)D-76N;24(""3>C!?=X'?F`A?DOV.@980G"#&^*" M&N2V%.F2&9W5/M01?PD79/8'"0R`-+`"`E>0!$S`!`UD+ODV8-?V2J7%*HZA,"'0(;/Q/QK1?2#P?9B$&!*8 M'VOX9('G<4C5?C+H8,TR!-$B.NT!1R6X`!_!)GP!8R+A?W;3%P7S@BXW@)%1 M@`#2(7/0+FH1+V7@AG`8?D6T9#6(.XZHA\ABB62`B4YU>2/8:+!1@@V`-50E M%E.Q?\UV<'SR1U`8$6\3-X-!A02!A7;5(0@()B@0!@\8AV1"#.W/H&C9X$10U1RYX5-;(`.S7 MC`08)BA2!BG2ASXB&-HV7W2`+DXG%^T8*YD1%"11@NHX+!I'%*-'9)%('WA6 M:/C3>2#PCO'8(9KA=&H,-,H!]4( MD-@83]K8)J1WD/RX%@6ICRZY=E@3D;M&!H`R!RNQ'L-8C)PX60WA$8O#/ON( M&.$QCOJW%L+4+WQU0G]U$(,X>FE0$-`H&SD4(YAWAVY`$#P2$TD/S' M+_53@V\PB"@'-KTV$#^7;B`($O5H&_CH+$W0!$5`!$D0!%10!$R0!2)(@499 M&H-X)W$/4MYFL:5,BO11P?R?>.$'L0IDW13&5B5$5!4$QH(5D))+D@`0P!#```` M`&P$```A#F@Q/F1I!@``#"]4@+`C)HT+-"!:M!A81@Z=-&/"L`$AADT8-VM` MI'%#IZ&<.G#H@$!SD0R;AB"V6&DX)\T;-R!BN(`!`@2,&"]NOL!QHTL#!2!4 M_`P*8L@;.'GDI#F#1B2*(2EBYN!),0^((&W.E&G#`D02-V-<#!4*5""4AFW2 MS&GY4N.'X[1S.=.V&,=UU"<6&,\5I>8=`1W6L@4'&1&B`((<047:$PPTTIM"!##3&T`(,--]3@0DU5 MP$%&EICYY49>D9EG1AIXY!FE1-5)^888X[G!&F>NB58'4YWI)L8;.H(P1T.I MY58A641)%]YJ_WEFI5YOH/?&'6]A]U:1<'C(&@AUM.2&>4PVD5U&5WC(1AJE MO34$96^TT>I),=@A57FAHX. MO9)TRV(J*3;8,9J.`=E\[VX0'VV[#$/30A!$9%%S#*@??2X3I"^>@`P6 M*X!Q>QA/[&$V2W$0/CG84^1A4ZW8%0D,<024T!1A!0R#Y'`#3`D@#'[!S?QA!-/=%4#37OU)<410G1/?-U+ M"X(3J%`%FB6@!NX3B++>P"P^Z48O52),7QP$D37,`4&7&H/_"B>[)`SP?%8( M`A-L%K[QE>]\Z7M!``=8P.5]#P1.@((4GJ"^!.`@@88)`Q[2T`9Z@<`-]!(# M2MQSN=RL)4\GRQW&%*3!PXQ!-,/C8-B(D(0I!`%FI4N`"I(FLR;TX'12K%L1 MG'!%VM5LBS#K8@]@IX"?T"$/OEF9YCXR!I'L82@:B=K'\+0#/.9,:BHP0QW` 811)909)AT/V06PS',(A`1H` ` end