[comp.os.minix] ST MINIX 1.5.5. HARDWARE SCROLLING !!!!!!

SA44%liverpool.ac.uk@nsfnet-relay.ac.uk (Kevin Maguire) (05/10/90)

Here are my patches to the ST minix 1.5.5. kernel for hardware scrolling
Untar the file in your kernel directory. Apply the diffs.
Define HARD_SCROLL in the kernel makefile to get it. Then re-make
your kernel as usual. Simple as that. It's only a minor mod.
It does use up an extra 32K for the extra screen RAM though. So 1M owner
may not like it ;-(

It's a very simple mod. Just gets 64K for the screen RAM on startup
(in stmain.c) instead of the usual 32K. The hardware video base register
is set to the start of this 64K. When a line is to be scrolled the
video base register is moved on by the size of a screen line. 1280 bytes
Sorry this only works in 25line modes (both colour and mono though:-()
After 26 lines srolled this way we have have run out of screen RAM so
the contents of the screen RAM is moved back by a fast 68K routine
and the video base is reset. This way we are moving 26 times less memory
The 68K routine is also much faster than the old version.
A rough estimate is the scrolling is about 100 to 200 times faster
than before ;-)
NB Contrary to popular belief no sychronisation with the vbl is required
to alter the screen base address. The ST has two hardware registers;
the video base and the current video RAM position (which is read only).
The video base is loaded into the 'current register' just before the VBL
During the actual screen scan the 'current' register is used to get the
picture from the RAM. Thus changing the video base only takes effect
on the next screen refresh. (I know this from writing triple buffered
game sprite routines in the past :-) Sorry this is where I also get
my speed fanjo tendancies *8>) "Save two cycles there, and another there

I hope you like the speed improvement. Frans can you include this in
the ST 1.5.10 kernel patches ???????

NB if you just want the fast 68K routine then just make the kernel
as normal. If you want the standard slow scroll the define
SLOW_SCROLL, simple as that. Try "cat /usr/man/man1" for a test.

So we have:
SLOW_SCROLL  Standard sllllooowwwwww scrolling.
no define    Normal scrolling with the fast 68K routine.
HARD_SCROLL  Full hardware scolling

Nsfnet : sa44%ibm.liv.ac.uk@nsfnet-relay.ac.uk
Uucp   : ...!mcvax!ukc!liv-ib!sa44
===============================cut=here=================================
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 hardscrl.tar.Z
M'YV-3<*L*6,F#9LR !(J7,BPH<.'$"-*G$@1 (R+-BZ"L'BQX\:.'CF"A#$Cz
M1HP9(&#0L"$CAHV,-6R@A&'RI(R/%7/JW,FS)X Z<^B$D:-0SILW='P^-(I4y
MJ=.G4*-*G4HUYX@I;^3(R0."#IHT<T"(24,'!%@0<(;223.F#INA7=^ :,-Ux
MS!LW!<_4D1-F[5T0*. <##.GC-DS;K*62:%@Q @09 BF<6-X2A4H4H)\@1)$w
M"A6S9D#D>;,7!)JA9""#76,V;%HY:_U23AUFC%TY9":?B=L539G&CZ?4@<,7v
MQ)PQOMN4<='8,N8@('J :$'$>>;-G:D MPZ]AX+&D"53!C&$R9,A2Z: %DW:u
M=!@[AL. &,/FS1C6?T>7/HU;]1S6=KE!AU%L'"2' N6=EUX"TE&7('I3-/;@t
M@MZ!%UE!XPWQ1!.<?99&:/J!<$<8 K)7VD!YB/$&:KR)85@,+L0PWQMMI+66s
M& >!5YAA=K6A7(F3&4?'&F*0X<(8$F[8(8/3$:$AAT%H]^22%3YVX62&(=$9r
M$5],,8043S#!Q'HACE@B?V2,*(=AQQ'(AFX*:"D%$4Q2)R>77H(I9F-W,OC=q
M$$,P:9L"04PAZ!C3(=J"'4T&@9X"3- IW0M R?'"FV)<2@:"5C!)Z1R68OK"p
M&'8HP(:GE5Z:AA@*H($JJ"],1E\=D;W0QF1IX/&G$4P$<82A#3[1*'H@D(#"o
MA%.D4.RQ2D:IK+'</8O"G8PI\(002C 95(UXN"#7MF%,YBU:1HTQ[AQY!%5&n
M&^?2,<=I9+QQQ[A<*)  "%W1D<>X]-FWQKC*M9'5OM_2048;8;1K1GUPP$&Pm
MD'?@2J^]^ 858+M$&EFP'634H;" [1(W&1WCRC&'##/(,#$(]W85!H[+%7PPl
M'/R^X; -./PKUZW'C2LD&?_1I_//0;.QQAP3(T&$%$R2@,:H813HAAPNH%'Lk
MTSU6??6H=P6EM=,OS'$&'?I^_;2^<"QG=;TM!^BUU6?4IS5Q]FE-]KY6HZTVj
M" /)01D;6K-=L5!CI)&PU4&%00895"-N,,):!V4&&>8ZC@;ED=/1AADTKTVQi
MD'RQZ_@<I+EAI.-VI!'9&UJCB'#GA(K)9-]_NW"KK@I$S88."1@;A)C5C@''h
M?#7RKOMW])5!H@[VRM'&=*'Y#ORRURI1+>UE 'X[[\96_RP;JHIAKGPD@%^&g
MZ=[::VRDRK8@%_: DU96]]A^'_[XQ9J/_AOJ'VN%LO#S5AWF!X3F/:\%H0F@f
M_+ZC0.ZAP'OYNY\+R*<_C?6/?=.1PW3D0@(@4*]^$<04_LKW@O-94 $!1%<;e
M' A!$HIP@A$T8?H2\*E0K4I3+J#,'398+ _2SWHA7-4(*S@N&?C@!9&QPPO<d
MX!8V(,]F><"9SGAGEYOES 5SZ!^@VH<H8PV!5[Y*UHRL^*\L;@L.W7H#[\[8c
MK2SV[EA#X.*ROMBK7RF+C5A40%" M@:A(4V-"=ACT8Z6QS=N,5%S!*,=B=9'b
MHR$MBPKX80H<J#0I,&8,Q4O \120O.49$'K+^AT3I.4]!I;!;]FS7:Y8"$(7a
M"A&&))0A_]Z(0??Q[92UD]\'@>A*\<&2B+/TXO]NB<KX#;"'GT0@,7,Y0%,6z
MTUNLY"7X7DC!$N[O@D1HGP9MV<%=VH^:,;PF"G&92A5&\YNOK*8L[57#\.%0y
MASSLIB2#Z$MU[@\$1D1B&93(Q (]D8S03$ 5HWA%-WHQCHCTHB+%.% IYA&/x
M@,2C0>$H1X7648QX;&A!CY0;,U3EHU/IB UH0(./C,2D($$I2&1R@QND9"4Mw
ML4$-;E"#&< @)3%H20Q*:A&0^O2G"P&*4(B2$*8D92I&!:I2E\K4IH)4!5 %v
M@0M<\(( QJ &-> :0.>0@"GT!01!( X^<0""&.! !S"H@0YHX-(8Y" ',%! u
M"^8Z1H*6L:M?#8@&95!2EZ#5!CJX:EG?&E>H&O:PB%6! @R+SQRP8 8E/:Q<t
MZ2H#Q\Z@!M.9:PL4@*\0X L$?:6!"V!P Q?@( <@6%@:X$ ?MAR-!7HXI7W>s
M=)\YL&"@K:TM"!07F=1\]K? Q5=FF,!9$'@67YB]ZFA+>]K4$J8L P6!40:(r
MI=1F92YEF,,<PG"&[.YV<65(#1WD @<TI.L+T?WL<(M[7!#8("4S&"T.3(M:q
M^E"-#2#@@?)\,)_3N*&[XMW9&^#C OR.  8LT&\8^(L"Z0@,/G$ @;* N]X5p
M&/>S+I6!RF"@,K@Z-RC&&<.:SA=B-YTR 2AN&;Z:, 4HL)>]B8VQC&=,XQK;o
M^,;%7>R-%<M8DK* !JB5K&9!6P,6U$!&FMUL<)?L@C+@@0ZXQ-<78ELNVAZMn
MN$O^;9.?'&40H!>*N;UREH&[92C[3<KE/>] %6!A%9>YRU]HTQL*%&<1YQA?m
M,-ZQGO?,9QSK6<<J ,$,9H"#Q]( )9(=\V_%\)7@UL=F+E%T<(^+ C*(H3C^l
M)<-!PG(7-G#E#EE)C5WJ(*!3SH$QDL;7@Y>#7WR1(08L($-<4RV6X@#7A#%0k
M@&='8,(/Z1H$O#:=KST[V18(F@8(1O9-DHQE13,Z#8X^"APB3>O.XJO2EY9/j
MIC<-@DY_.M0S(K693]WL,:^ZP)]]=:QGG>IL!Q?7O_ZU9^5,YS:5X7SR%@M9i
M0.#D ;V'NR0JRVE2]]^N@%JZ\L-26.[P%>3L=DT@@,]6C).&6[U%#BP02S,]h
MZ]E];Q<^89&/&<JPPS'D(7EA0<$/&$/L>8-*> /ZK712@@<:_'H.D0D*'&*.g
MKYG#  \XN+D;Q) '*(?ELS[' Y):[F5ZLZ'.<F!>>\T]8%9_5KMR@+D<4!"&f
M&Z2 !6&XZ9(]:^'Z*,XXI,FZ8>#PAI&=\M>2/G>KC9-S.NQ\ZUW_>AAD-&D0e
ME'U%J:G[9/J2AK^PW>T'8GK<J\ZN5I-!!BT@PPU>$ ;(A\$&+&@!U[T.W'F_d
MQS!K.D-8S'#=53\/*+]1O*(Q2;,=?G8$.<4!@N<P]*)G=P4DW?R$.QZ6?<M'c
M!I@UR@[M?;X?P-W9XP%NF[Y0 [%7N^.A:7ZM282<>'.</%#<;8GO[0:S=+\,b
M9/&-!I5C).EFUP7='O]=Y )\$+QI/ *+C/53+??7NP0&+8"UK&GM63,\MZYEa
ME1$J0 ,X,(#1(6BD)0,W171&=W,B]FAPH .?97KH!AAAEP(K$&LQ$'F35WDMz
M<'F=!X $*!:VET53EV44Z'@;*'F49WF8QW4QP'+TQW@5R'4P@($:R($M^('Oy
M]5N>%5TCR(#9=7Q4!Q^-YVHKV($N^&,X (,RN'A&6(,7F(&OIH,>"((^*()Dx
M)80F.(-1J()6N(0Y8 -.2(0H2(.M9H,X6(4L>(4]^%D_F'U!6()FN&0IB(1Aw
MR(,LL%,T4(8GN&2#$5QN)0-."':Y]H?!96FVEFZS]X#25H?5!@*0"%QW:(%>v
M1X60UX8N&()K$A2*87ZB9UWJ9X0@@'J3^%NPT87Y-@39)Q_$UWU!(C") 0+2u
M]WZ&$7^I)XGS)F+,!P,2.(%55X' YA(SD'_KQG\?!EW91XP#6( E)1TE45DVt
MX(!RT'QL$(' ^(77-H4YJ(D\&() N(5TB(B4B(9XZ(V7QP)^Z(7K(H4W2(5)s
MN(-8"(=:2((-2(Z_58ELJ(1Z2(#K"(7MF(;<N(_R^(;6%H[V.(3XF(T!>8[\r
MF(YC^(^*5HEJ"(]Y.(\'*8?B>(_L>(20$8]NN(>YMW=/J&B!"%R#6(A[=XKIq
MYFZ_)6LLT";6" ?S!Y >69'KQH&2%H<.(V@WP84LJ6KF"!GX)WGJ2))!.1=#p
MB9.RII.*QI-<D3()V84V68%-:90I(Y&1N)5CYEGC)13X545I$%X'6!(SD!$Uo
M.9%+F7>8>)'3N)#XDHKS%VP=14.!YBA+  (J\ *_1I<?8I?D@01)  71(1U-n
M@#,>L9=LUHT/:9 7AI! "9=*J8T?Z98BV8=(*9DG^5LI29*&F)2**!\OV8C5m
M" /7F)9%V) 6^(XY*7D["8!2&9D=:95%>0-'&8-)28'@(B[F,@8=Y53 ^1 Bl
M15(JI1$B$1(CT1$WP%8OQ1(N,5-'=E,TH8!8A1/!>9TZ(51#411'<512D538k
M&9[B.9X^Q5A3557D!#A7E56[Z09'@E=E$59[159NM59G%0-M15C%)B0(PYOPj
M"59B)0/TF0,Z$!-HA1)N!5> 9F. AD\KP0+ )R-"1ED/"GPEQ6S %6A)4!9Gi
MP1]ML&FC5WJ?B(MGAB[JT@9(4VZ*^5MG)QTJ@ (H4!\%IP(I\',J(0-%D ([h
M )A4\ 3J80=#83@P P(GD&:>" <GH)=\:6$C\"$7 @)WTB5?$B;$96'X<G8Mg
M(!T_)WL7P00["IAHHB:IX72Z 0*4$5YA00<']XIAH9A,VFMFT&Q8JJ5 UQ%>f
MBF(O$&ASD :QU6VA805)0 1%("P!,S!*VFPO&J-WL1LT:J.'9@/*(AV*LZ-Ye
M"@(]^J-!^C('0:1?$##CA:2'^EN *JA/T (^P#%?$#K/(QTH@!Q#D0)<EQH^d
MP%\XH*,*<)LEF9KL$A0<XS&]^9OD"9S#R5/)69PW=9PBM9PWH1+.^1(<=EDXc
MA9\R\%X]%:S6FA#:250  )[?V9W7^JW@&JX,P5CM]'*V@BMX\ )7A0/H^4SKb
M&39TT*OOZ57Q&: #:I^!E9\*.F2\VC'O>05D&1!< 0*H=1&!%0,Z( /Z6E@[a
MUJ V]5COE6C =B64D0!&\ 1.0 5-@&(N 9CM9XMA(8MR@0+715:DIT&UJ'#*z
MLJ*2B"^8D016$"5% #IU, 9ET:N307H@L >_)E#\D0 J8 >A\Z65*@:$81AOy
M$!JILSK2%0;/P[(^.Q1 VQ8F0[2!1K6DHT%LMZ>RX7T1ISIE(!>9T02ARC(Cx
MDP#O-P96^[5,"[)>ZZH:!+5G.S7RLK9PBW!WP&G=]XJ'.F0/.P.HA:$3*QYEw
M8+$8J[$<:P,>BUEN*[* 4;*B2(LW!;(KRY=XYK)2 +,R2[,V&W$=D[-RP;.[v
MYJ0$ :5;(J5Z0ER>%;5R +3Q.K1X&FB?ZJ=L&[9-VP8[T!N&41 F4Q9\.[N*u
MN6MPVK-P"[1"Z[1VNQ=K4B)&6QBTN[2V&SIER[I3NQ=SD+PF<UU;2Q:%!XO=t
M![UB&P1D*[<"@K:RLK;@ZWX*][;\,;US*WQVV[["I[?;1V**^6>,U1*%IF$1s
M:UC[J6&P!GPH(;CX,@9'BU,S((&5:@6?P;(%?, T00,*'&A&8 3N&QHH8 >Fr
M*F+R4I@19ZITNT/&%H,[RV; 1KJA,07F<06H2Z7%A6(G"QC0IJ6Y"VT\\,$^q
M$,+Y5\,KL *HQC(H)CQY8(LH &T6!FMF8:OX$L1L( =$G :V^J9L4!@FW*23p
M4[I1FB<NW&8)\"& H:C_!:L:?*JA$ZFL*J-G(,:F^KI.BX'3R@0OBL9J[ ,,o
M* <IH"P\R\6!Q,'U)F(P*L<@8 )C?+QML 5C7,==D'%@G,8XS,9MP (FG&(Hn
MA@+ODA5TH"R'7'1VO .1C&)CC+73<<:+.L>$G *:)\<9O,:ES,EZ/,C2*QUCm
M[,BL#,0"U<1$_,G"%\6T/*J#:JJHJJH'V*K\H2Q_/,JI3,9M# *S"@(X,$JSl
MG&*\7*JG2@:IZK16PZIP2\R+3,IEK,S\Y1+.W,E]P&]3;!AY3,NN[+1^)\IAk
M?,QUK*,@4*F*HP9"5;_=U[R&X:;HO,'6N\Z @<J9/"#P7*E8J[UOP+7=>ZAZj
M;%^WO,&Y_,PH%LV^3,W C,W#_,4 [<O=O,S-K,O0'*B]/,W5W ;7#!C9C-'&i
MG,YMH"S+#,X>G0!]4,790\5<['105\QA',@J;<BFBLB*#,@J#<EZG "4C :6h
MC,D]K<GPW,D,C27'S,%WH,M^&1J5FL53*B8*#6QP&L^!IL)/P,):C-50.\XSg
M_1M+G "K-EY/+7Q^5U89]\EVP09*S#)K0@=[X0:<C+]150,M860"JI?^BXIEf
M< 9@86;NMZAZ"31TP,F"3=CJHD%IP-BZ>'59%\QH3*."K-%.NP5R(*$XC,B<e
MW%Z*;=F+BMD[+0<W$6@!+0==(-GX,L.?K<G>#%J4&FB1QH5H<4IF86:$]Q<.d
M+")?L:DH,%?0Y@-:BL<OK **W<,'J (OU\.</&0U0(!&5@-D1<"@6-BZC<:)c
M'12NG=V/;1:2?7PO1]HSF@*9C<R%W-EZ&=L#TMK'-]KLS*CH?=JI[=ZL'=HGb
M; :F4[I>S<)60 15<'Q&^F4.0\E9EW&*_=.CC-^V*KSEW&RPO=JS30.U'8!3a
MF=N0S=M=^]L,9Q"&,=PM4-S'7<)+K-Q!P=PN^MPKD-<-RU@UA6 UA5D3:FPQz
M(>,OD5ESE=S+;6$KGG70S>,I[N-ZR>+?'=-O*FQQBB\Q?;E<O: UUJ W@ ,Ty
MP )3'F3^.V0X<%4L@ ,HH^-*QM4],.9D7N9F?N9HGN9JON9LKN:*]5DJ(,DXx
MZP9D(<D9BF4JT.9ZON=\WN=FKL\F?+>\&Q1?@"ME(1U4( 554 2S7%Q04 5"w
MP 1), 01UW:I,>=D@0(_S+.-K=T:%!1R4+,W^[EX\0;&>X""3.JDY^)^%E6Rv
M5^5;'EE93E<X0&A=GA%@_L(2+=)R< 9BL 4QT 4'* 5'( 1?< 6"206,#I@Gu
M.]C393K3N^N_[.M;  /"+AW$;NR1CI<7;K3W<0;/GAJ_C>3[_:16G;HF_-H8t
M/.AT4.AT?LDEW&;X$LN$',QW2Z,HT,E$O<TH(.T4;<V!3',5K"P\<,,NK>]\s
MH.\XG<;]#M+2_,M.^SPF(/!&0/ WW-&=#%P>/>^:O:J-3,C/C"_L[N[[)AU&r
M\#M3P.CI#@+DSFL1_ELJ;>_MB^\OO.^H[.\C;343_W,#GU\&;P.C5/,)?]8+q
M#ZLX#\P[CP<]7_#,'/1+K/&S/-7-EM9O@ ((EA(Z&KN3R2/6>UWC58H-L]T$p
MH8RH%+>6^UGV-13*8_49=_5CK,-([ 0:P@3Y-]?SWC$%O74QN+:&KKOST?5Fo
M_QU,BL*F.R<MO"=6NAZ4'*\= P<@,P?BNE3#:JR4CZP7L5/XV9PQE1&DY5(Tn
M<54L89V1CYW9RIU-@53>.OJJO_I.-6^,[ZNY2QC;U08PH[7A(B":GEJD9K/=m
M^VL#)0=I< 9H4!:5]0(T\ (>1G0@T 0N, 4N  7RDCU.Y%EIXSQ@L:=_ >X!l
M1Y9?OV985 8VFP N &5/I@#?'_XN8!1M8/Z%@?YDT!=AP/[@3P?B+P;:)?_Hk
M3_YT8/[]%F5?$"]?("V,#/,7-8*?&T@ ,D !_+\W$ !O'QU@'G(G ?2A.0 'j
M] X,2 ">)>P<H$_6SW(7W^(MG2B+K)H$T(0HX-=Y-1CP(QT@1!%<<A?<J@V&i
MS2[('Q)!!A+ @<$#-\ ,:"!3H3P2P!<@/0+")7RF*78J1D"5>S6Y8W$D '6Sh
M=U",9WDU(L(@X!<707$0 [_A,OTMP/@D?>,N%,"Y$0-$C21E(#64 H^"S0@+g
M$H<KN($P4 >$G[Z8$9$!!.B %L 8OF 8C$$92/:0P0RH7>J <@A9ZR?C?"R%f
MDW'Z0LS14EXP&(%!)Y2![H\:2H0$9A&*00B%;!ZA'62$CT4!64)%> =Q$+*!e
M 9LP$G;"#$2 0.$%@H3+01+B02.3$4)A*AR%+&"DF,(;A I=@"K$03= $Y["d
M2S@)N90KM(6P$ ?HP5W("3'A&)J%=; 83L(8H!*082V\A8TPISA#7K@*I:$Sc
ME$M8Q@7R!QBHVV3@;Z"!-O#GY, =.!A\(!"D T)P)1%!&W@$<PUO68*PI@FFb
M0"@8,0J$6& 3!O *0IDLR!MB$UD0@<IP%>[!;B-MT. I48-LT W6A3<0!^=@a
M,A2%F' 8WJ 4*/O\H'<168*0<1'"W4(V- @BI(8XR!$20XBX=UB?23R)*#$Ez
3JL25R!);HDM\B3 Q)LK$F0A4 !'"y
 x
end