.SF ZQ0FSF COMSF DOCL vSF.Z80j  o !#"%$'&()*+,.-0/123456798:;<=?>@ABDCEFGHIJLKNMOPQRTSUVWXYZ[\]^_a`bdcefghiGowxp+Ëd7\wEí/eէjLfdp+Ë.[^$zN:G\w;V~ zT,ˡtH;ɾVbnbUG]D],dY}3VZi_q9b7ezǎ%7߅蝫 ?, ^`; ܎UWK1?`1rzvUgoVZo+#&ψCbkLg= ^`SbJPW17VZ7U#~5/u.22G7ߑ,Z⺂zW\_^UW3oQ&֏C菰;ģ=;V;Wro,@kNjYZ F;Y[[X393&Mv2Ȝ5E_h:EeRRg~, toi嫼^Կp/|22 ki>)dtP/ʯ/= ;#[񈹉(.)tP/ʯ/ ug.a^w+KK&^L,5DXV'uP/JО΢_MğE^ɵT^IuϥZy` Y^Y\g~ݳмʣ,A,*΢4@L ,A,*΢x ¶,A,*΢kˈFV\neQ΢_XvbGL+* MTY‡ B#,^A,*rE|fY`0bYu[q_ܣ/A,*Y?0J+9EzYT@:K,vx0oj⺭q&h_6ˢR ?GԌz,.D%^ŌQ mśeQ.`Q3ae{o+`\WY^YI ?GԌz1ģGkV$xA,*A^uYtGv0WٹJ+>}RNI[.zˢ{Β:n~P 9#ΕܫL#l+/(uUdtP/J΢@\2xi%$8EeQ -^gIE7?呱׏ĕY/sVNOTo:E%YRgfyd7fDƇ(iDZWtP/J΢n̈/k|V.Ru<6ˢYRg1c]w7fD|+^L+,|fw/I9%m*  C{A߳f˻Xs} +vUʿU!j ` EdK3Ꚙ{a[Y4]h9$iQ˼K3ꚘE,kҩz"Q ;#ietWXY2gK]\:ܳP_ ܳ~VQx*Dʢ֫ܳP+rkd{d@RqtIILg#>϶蝔yo"Z]wCndF J+(]):&.:E_ 8tgke+wQ,9#0h zVZߜtqHvV,89cke?ՅTz=hY`qV,Ap!jg|xŐ3L<; ʢB˾p뉧) 䑑35V},*;t1j#EOӅ/'4U*]hVc@ V=MZ"U囕Pxϸc3!>ʢB $iٱʢBP$WZ$,0xBT+ C;bϺj#%^leו-_n޶蝔ܫ;1j0oH+,z.@hʢBP|9\ڱSC~YVCietewhtZY4]hd?/^~a1\e:gQ١ QWCziete?/^tBY b[Y4]hBw.2ϨkbVCiestQP,̵{u5rV>ͽHȹYXwS3!|WfꬕEp.޾9/oYoor#~\ie;) ܫ\t@+ne?7M(/qrpa1ό`ְֱEOӅ֡Hv%+ڏ3rFKV=MZv[Г*"_eΌ`ְv+,z.|gU EOӅ֡HvtTXh?N Y`^H+>՟Ee.T9g;vcH+ -;-**"_eήu]1,kGʢBw :]$?wdY#H+8{k4]h}OS*3kj1A}+.4Yj#2"l+IYhN޹Hy{ZY4]hYEβX3/ΰ+4,z.@2N+8{gBrAcЭ,zE.*[iE҄(uEy2VJ+X/;v(9;W|gUgw2ۺJ+8x`Ep.$r( 4sz.ʢ;̪г!5W<\[Y4]hOܷSp,t?܏>ʢ ,TUky[]FZYNB{ܓ%ETs g蝔yܓpy{Z^1-. [Y']T&? 3v {te_O-UWCie?Յ%]_qg+ީ^#'鴲B,,ЪNOuU׎o,&=/%,zB{uUD,ЪNOTڡj{?e|VSuF^*[YOu]ܣ/>d5hv%VSuFҺOVS]hP?Q2#1j<[YNՅI>*[YOu|@E\bj#x蝪 57_i:yD%YtW-g>МY`1ʢ $PggwC< VSuFpOV+.4An|w,z'eFpOVS]h xAnj{7AV^#'Ep.h>"]!c VO./3#fX î@ietewh-U,>c bZYϳЅȎ|g5VpOV".'T@:t<2xcY}i:qEcuGZY4]hݡ ]j#;v7fD|+(]=OJ+GE"t?ܯdvEOӅ֡HKpiT,^qrY,k[YOuuY ~5sʑV^#8x`t9МY1B{ ~5{1dV>lu7cV=MZvV _eeįVО|].X#e9&VpE2Ou/U*`ǎW̅vE,kʢB{nkd1#~O+ C'{d}%e2VS]htw^}]bG ,z'eFp7>颛?W˺j#,TP+2o?bVC/EOӅ\*H.^cj VQx{wOw!z5{!&,z.TG_'gp7bʢ8JoOS.V=Mڃ/U[YG/VpVZ=v-B{n@Y }dietqH%T,`.C<1ģZYOud@ZYNBFp;<0oϬ@<ʢBgvbGj{?ʢ R}ì?ƺîд蝔 \8?vXwA׵¶i8$IPv*89cğ+u,YTrwewcY1,nzkjg+IYh=|y`EOӅ$};x2geY b[Y4]hZ< 9î@1 E<]sbƷ1,z.'T@:t_e  Ep.ޞ]8?w]+4,z'e ?%g^aWh vĴ yg".4ygΰ+4;bVVQxEdt ;ie;) Ap?ۡe[Y4]h9[/Gv|Vse/ʢB㐧I^2НKd:,?\=оaWhg+IYhqVwv󙅦?DNt 񨝫&;'XsʢB{NZM\] ʢ8JoOSOϴ蝔{T,T_;yw]J+ǡ]dhв;-U%(rFj ie?ϢC*-GL+ -%4U*]W3ȲF{5oe?|`W; M+IYhGBCə|g1J+X/;vE?ʢBB\{?9'N1V}]YhE,k蓠xWEuQČuh+ C~EΎ]V+ C/yܧbW'ET ?wߌZzx?¶蝔y8$h/Us\ֈ_B Psͨex E,'A}ͯF:ET]h8x`tC$.;ϨkbZiǿk4]h9PYYV=MڃV=M8tXvGQSk\.*;= p?Dz=;vʢOgQɵ蝔y<eCrO<[Y4]h ?Nj#A ʢB{n<2ϨkbvrO+ -$4]Tv({*suM̈_ie?Ϣ2[YNB{U,89%(rfyF]J+bCaٹʼ%^vPv:ou?Ǡ֡ì?{*#3f`.sd.ʿHuM̎}9;W|g,.Dƌ/9WVE=ҵUY59b/&}9g.2XVZy8$hwi8$}*x%FC߱S[ie?Յ:BX ;WZYNBF>ZY՗Kg֡ ȈnjşY@}+,4n0h EOӅm?e0;>Dɬ+ʢEe"ʢ֫T_)21#jgz+IYhy8X$QʢB}2gcFψʢ+ [&sNųET]hMv-՟Ee.T\.sd.2o EOӅ!/&}9gΉ,h+IYh-K91va[iteGO|H.^̙K[B3Pʢ8JoMT7_,^qrƷ79k蝔y<}޹H.z|c1oa[YG-=ݿT3;gF0k侅me;) VZy8kG-ul3gМY`a/,gǒBUƇ(qlVM!^v0en3uw3"~?l z} J+GSʢ'gpΉ,z.G&:@E7k1vug51,tP%uEWY͞csV=M$e2?w2ʢB֫ pxdUv,.Qtqm?o֢/rv2xfXʢB~o?z-^g%^7&ʢ8JoN]Urˌe2wU%Noe;) A.B-ڟ&WZYG. ~ue[Yueqwb캛c၃2X0oJ+Gκvy-*Ż?Nc[Y4]hz5_Yر0#ET]h8x`VZieNmyd*c͇.z\eB\eٵoعWXA0uѻ1c]2xqlȢʢB!Y Ze%^ZYGҩJG_8=/\eĕVSuo⩃}VZieNmyd*ݘc-2>Dc+n̈{j#kxa},/4U&W*fQʿ}n`s-`#+s%Ƚs@=!;JZWIT9ʢWo+ʿ)9ˎݱ(+;Wbj#<0rFA?|]MY#c] }&-#guWa9A?|J+:.Q~OW+ CzUKٱC_ }EOӅ! 'g*Ctiew[WZWEu*C_ }EOӅݡpWj{ʢw.4M-yO?eJ+bCة-\e13"~ %*1#G-A=/4첏兆ݹcW*fQJ+/D],z.TGn4/WȠ%^V>-yO?eJ+bCرٹjv3"~гۍc^/c][n\eQs{ǎ%7߅hVZt4ѻZYܢ[ 91EOӅ(SQì˨uletqm?e_5r٣|/ֱEy-*sw/XLEOӅ( ke?*\-jKi8$),9֫ pEOӅW*Ep..9.D,KnQ-/rWfEOӅW*EVZiZi߾WrX/*kxa=;kvQ#~*@\ٱSÃ]w2eLƱV2O|ʢB{GYggܣعrv2ʢ8JoOS.{-xej̍-`WQ,z.4~Tྜྷ+?N0VC:V}]Yh\+IYhHU<0Q1¶i8$T,^/"#FxeV}]Yh\+ީ^#8x`t͟GykdJaVme;) \Eܻ!JUFӅ}IPv*n<QsţεEOӅCcG 0VI^2V=MZ"OȽd2nWI^2V=MZ#Ƚd2,tV_o%s**FӅ֡D%Y_g V=MZ6Jҡ,tӿ ?Nμ;sj ie;Uڃo⩃}E7<+,z.TGh'r/╿ʜ;̙KV2h8$T,^qrvCx#E,8[+WkGJ(YqQ,z.4Id: 1~YY }d QEOӅ]UY pʢBP$yQ c/ֱEϢC*EXjete Cٹʎ%^ZY4]hGO^2V2jh$C+~aWh vĴ/C* A5r߭,tVU_E_WP+rkd*,k[Y4]hݡ ?Nj#A}+.4Y)2@]wsV^#WyG+>yʢwRZU^]1񌴒|wt C%^ZY4]hُMG@V%9f]FʢB~o ke?K*k\-gET]h8x`VZi߾WrX/3{*̵(Aw.2XUƒg[7{؝?z"c+o?zW+(]o"W_$qrY }dʢwRAp:[$h zu7,0ʢBP$yQ c/,z.o^t{9;WٱK+(]UoBgOw!zz=37DI+d_ Ơ[Ymtu(M=R~A5r#~.ʢB [8Y }dįV},*;t1jj Ĵiвi'4U*]h9A}+.4Y; \V>MG_ty{ij\⥕EVZixk^=cC w2ɱ~\e\ٹ3#7znߎݹʌ`ְ&fع\eQČ#c+'t:tsQeF]ʿx >r|{*3we,sr#`ְֱ ՇY ;W}9,kKΕ%ʿpZBn9n+w`͕+jgJ+C:cyg+ì?{ej#wW+->uA]WCyr3Y3Ꚙ=g\+->2n>2 ,fg51;{qO+->2:u] }dK1 f #~FPK[o99[ww5Y`,߯3ȲF{xrA9NoeL+|s4Q_|ʢB!.T)!CWCUg|],/WE0趲eŻb<2CP3^rà1V}yxV p8Kx+V=E:tc\r.z54]Tv(ҡ p]l\[N+ -Ց/"ϱv`͕V=ER}XY1u5Y`Fyʢ\:]ٹ{e_AieWEeV=MZd]E"+A]Wc@ V=MdE'g]1,kG[Y4]h.TU# {t+,4}nΉ#D?ʢWo+ʿ}䞱!^fXuݹ;rY;v*}9UMsyF]ʿx?ݵ1FK3Ꚙ{yQtVTnbK3Ꚙ{ď?zSwl_9]A&WXƳV=MZ#ϋ$hW,'gW12^4ʢEe/Tkߙ޹K+ ClObʏ3xg51ʢqaZYܳP$0cVrݠ뎵^Z|R]QxDH cի1 E,σd>Eh zu7,0ʢBP$yQ c/,TʢB֫ H. s˟K[U&zf|3S}C蝪 O쓶κhfst>28/s<[YNBF2TŢy`ޞ3,0xie;) - 譴ʿ}䞱!^r *;O;rރuNmߌ`ְ&fĮr\e;Wف5WZou?ǠvsA5r߳U&jAf ;Ϩkb[i%=ݿTZY՗Kgv@ف5WY}b[YzuQ١ cA5r;vʢBKu娾Hs,kg]ʢ+ [?@3 ne_rϢCT_/"#ٱY`\ie;) qݫX?3xv,Vr\Y]MZ#i}",^]eg|{Coetu(X}fulet$i|g'7#5uletqHR&Y8~YVCBT+ -|*EOӅr9/_߁5Wf,МY`.ʢWo+ʿUM~*s<;W}9jK8  g],z.Ehpp7#swC񘴲蝪 -_c|wC zvFc|+ʿ=@sa1\eCLnVZyʢB{,fd+%^vC񘴲S_,z.蝪 /߅zvFc]WL+ʿ)9ˎ 4;Wٍ?ٱs鞝!L- QJ+U뙮VQx{<\f*{n̈V=MZ"z=Zώ^L- Qʢw.4RE/W;rfUvcFķJ+xk^=cC s{*=XsűVsJʢBP娾Hs,kgZxʢB=H֫I;[$^Mxɹj#bf,o+9EEW+ -C+"g91E<]s?%ieѧ= sk&metqHE_WʢwR5PST,񇸃;V[iS,s;* B?nFʿ@.O>?Y^:/~ Ơ[κgp<%X"DZVh>zW+[TY+(`zw?$VS]hYI EdٹB?ϨkbVd+#aZY]T~?}+s4+JW+>YhJKtJe\v2CVZ)jetewh,U >П?AgQ١ QǷ1,zSʢWo+ʿ)9ˎXxcճ^;ql_:t\ee &,k[R}\e܇xx,k侑V0$޹<VCwj2ֱV],z.4Њ'g5ƪw[`ʢBN [8c>Coe?ϢC*o?bV},*SE:}^/,zEJ+bCAݹ0s3"3n\֡¥iCZY\.*ݟcٹw5V=MEʜ EEYA%^ <¶gQY+^ѿJ+X/;v/~p, 8J<ջZY4]h|3On~0#;W1DYV=MZ#'pךģp`,z.?G֣ZYG J+>yPYٱCfYietqHvV,89=?aVS]h /&/GV>zUX$=,z.z*nQ ̅G̘[Zi^?*FӅH-;sĕV=MڃdS[,_|+.L׍VSuFtE+灉1 |䴲V=MZ"I hyr3Y3ꚘEOӅyr㯢V=MZvɁ C[YGMѹ4qA-@v1ET]hN+ CY pE0g.c7EOӅ(J?zҡ,zEJ+X/;vF s]!C;#5c+(:&.:V=MڃHZ_!C;#fYiet:yr  ne? PSkeו-ucE,kDI/:(g b[V=MZ"i}",^-GL+ -;_OpiT ʢWo+(E嬫Ey2d/rAc;vijG&XʢWo+ʿ)9ˎ\e Uf J+Υ ti UdYVZY4]hdyr,k[YG-TfdF cTZYueqwkle;) QR8[8cݷi:<ģ,s?1FִgQݡ ~/nq#d[Ym%UV,A cM+^ѿJ+{2x]S۱Kx\ecʿauMJ+8PSjeW_.[.T#3"si:<ģ,3O.(ì?xawC@EϢ2C+3YY`^a[Y4]h Dzc3#5ulet:yr  ne? ʢBP$pW>2O.(;v*.#,YTfwh5+g,sV}^]TvB}A[YmVdJ+{2x%^uM̠gYFvʿA0НK⏰*a;W<\g%^F=W{W;Wi\eQ~s ʿ}Р]FFEIGY#c Fl+vǒB~*{c+ToӕV}Y垅yd԰+4#~V=MZ"ӕE/3 %^uMj iet:(J?zBqruM,s%\⥕Esf,sV[O5vbG̈=?OW+ CH&S(?NUV netQ$ɡ̲@ϵ蝪 -C+Tre9|\e5VZio,s̙!^[ou?Ǡfgΰ+4;bF}ql|ZY4]hd'E2YEqrveew+ "IOg,s-j#,zBЊ~?\~e9;WY }VZ]$-3ﭻHvʣ|O.ToI?e~eʣ|4ѻo-ޒ0#V:X5kѧzF-i֠wk JqVoZh-ޒ=W K2 j5l+OȽd2]ToIH$!IH"x>sVc@L+- IB$$ Ij%4UZgT-ޞ'{d0ƈ?,kKΕ=O"ɴgu-ToILgQxcݼ;˺,0xi|ɤz&xKZc=^uGv3/\8ᔮE2-ޒvbGn#F`+wYS}.p$$ ]Qo-a/Oѹtԕ90[&.-3ۣ 4TE&aAGAhIjEg`\"To ;鞝!l; < B3HR+GWkM<HwHo e8k/S feJ-^Ie We{QWXkd\Q:EeɁ(+"͗ ͗͗O:F y 8!:< 02q#"͗ỳ8G> ͗p#"͗:F! | !!:+(-(^DM> = O :+ R0 {^G^*- *R8( +|("ͭ 2N>2>2|8 ͋(͑2^^!>Nw^2>2N>2|2 ͗: :^ 2G!͔!"͐^:G! ( (#<>2*+"!Nͽ~ (#>22|^0 *"h7*w#" <))V^z[*R0 *+"h^ R !>2!&++++V^z(B))))+FNSC"͗22>2X^X!͗T×<!!6# x 08 ?͗7q#~#Ʌo$!\͔#~N 2h!""z!" !"7! !47!5$!4![602>d> >{w!"B84[: >0 6 >2#60!!3!n{~O͗#*.*. *. 0000: Program to SHOW a FILE. 9/11/84 Usage is: SF Progname.Typ option Option = N if line numbers wanted *** CANNOT OPEN INPUT FILE *** ** DISK READ ERROR ** Program terminated. ** End of File ** =7 ----------------------------------------------------------------- SF .. a Show File program for CP/M systems ------------------------------------------------------------------ By John Gill, Rt 5, Box 370, Blountville, TN 37617 Telephone 615-323-2453 January 25, 1984 Version 1.1 - March 18, 1984 Fixed bug in displaying line numbers on lines with imbedded tabs. Add selectable line number toggle. Version 1.2 - September 11, 1984 Corrected bug in ADD$HL routine. Added End of File messages in Find and Move Forward commands. NOTE: The program "SF" is written in ZILOG Z-80 assembler code and will only run on a Z-80 with CP/M 2.2 or greater. ------------------- ɠ hav decide t mak th sourc cod availabl s tha other ma adap i easil t thei systems Permissio i grante t cop o distribut th progra fo non-commercia us only Pleas contrac m i an commercia us o th progra i desire o th use make an significan improvement i th progra o it logic. S i CP/ utilit t SHO th content o ASCI tex fil o disk I ha severa feature tha mak i muc mor usefu tha th standar inquir utilitie suc a "TYPE17 an CP/ "TYPE". Features and restrictions: -------------------------- 1. Displays the file with or without preceding line numbers. 2. Allows you to move through the file in a forward or backward manor by a line-act-a-time, a page-at-a-time, a line increment, or to go to any absolute line number. 3. Allows the user to switch from page-by-page mode to continuous scrolling display at any point in the program. 4. Allows you to search for a string in the file and have the screen display the page where the string is found. .pa COMMAND FORMAT: -------------- Sho Fil i ru i th sam wa a a th CP/ utilit TYPE Ther i on optional parameter that controls the addition of line numbers to the display. For example: SF MYPROG.ASM displays the file without line numbers. SF MYPROG.Z80 N displays the file with line numbers inserted in the front of each line. INTERNAL COMMANDS ----------------- Onc S i loaded th progra open th tex fil an display th firs pag o 2 lines Th curse i the a th botto o th scree waitin fo you nex command Th bel wil b run i a invali ke strok i made Allowabl command are: Single character commands: These commands take effect as soon as they are entered. No carriage return is required or expected. N Toggles the line number function. This allows the user to start without line numbers and switch to line numbering as desired. Ctl-R Moves the display window 1 page toward the front of the file. Ctl-C Moves the display window 1 page toward the end of the file. (The space bar and return key also perform this function). Ctl-E Moves the window down 1 line and inserts a new line at the top of the screen. The entire screen is actually re-written. Ctl-X Scrolls the entire screen up one line and adds a new line at the bottom of the screen. Ctl-S Causes the program to switch from page-by-page mode to that of continuous scrolling. Pressing any key, while the screen is scrolling, will put the system back in command mode. Ctl-K Exit Show File and return to CP/M. .pa Note Th contro codes liste above follo th WordSta forma fo curse movement M ow syste make us o th Functio an arro key i plac o th contro codes Th entr o Control- terminate th progra an return t CP/M Th code ar define a th beginnin o th progra an ca easil b change t fi you termina requirements. Multiple character commands: These commands require a carriage return to terminate the input. The backspace key erases the last input character. A control-U will cause the command to be erased so that a new command may be entered. The value "nnnn" represents a 1 to 4 digit ASCII line number. nnnn Move directly to line number "nnnn". The contents of this line will be display on the top line of the screen. See the section below on out of range line numbers. +nnnn Move the screen window FORWARD "nnnn" lines in the file. -nnnn Similar to +nnnn, except the window is moved BACKWARD toward the front of the file. Fstrin Searche fro th "curren line" forwar i th fil unti it finds the string. The line where the string is found will appear at the top of the screen. Note: if the "F" command is entered without a string, it will use the previous string if one is available. This allows repeated Finds without having to re-enter the string each time. The "current line" is defined as the last displayed line on the screen. The second search will start at the end of this last line. Out-of-range line numbers. -------------------------- If end of file is encountered while moving through the file, the program will clear the screen and be waiting for your next command. The line counter will be positioned at the last line number in the file. A command that would cause the line number to be positioned before the front of the file, will be modified so that the first page of the file is shown. The program displays only the portion of the line that will fit the screen width. All characters beyond this limit will not be displayed (no word wrap). They will be processed in the Find command operation. When line numbers are requested, th displaye lin widtireducebcharacte positions. A note on how the program operates. ----------------------------------- Whe displayin dat o th CRT al ta character ar expande t th standar CP/ positions Tab ar no expande i th "Find command Al contro characters othe tha Lin Feed o Carriag Returns ar no sen t th screen Th progra assume eac lin ends with a Line Feed character. Sinc tex file ar store a collectio o variabl lengt record i CP/͠ system ther i n eas wa t ge t an particula record On mus star a th beginningo som "know poin" an rea forwar sequentiall unti th desire recor i reached Thi progra build tabl o "know points a i read forwar i th file. Whe th use request lin numbe tha ha no bee previousl processed th compute locate th closes "know point tha i ha an the read forward Th proces i muc faste i th backwar movement sinc th compute ha alread se thes "know points an ca mov t th closes on i fractio o second Whe yo start yo ar positione a th en o th las lin numbe o th CRT A tha time i yo reques lin tha i a th en o th file th compute ha t rea forwar throug th entir fil befor i ca displa th requeste data. I ha somewha o spee advantag i tha i doe no hav t sen th dat t th CR unti i reache th requeste line Th progra keep trac o th lin number tha g wit th To an Botto line o th screen I yo reques forwar lin movemen tha i les tha ful screen th progra wil scrol th scree rathe tha rewrit th entir screen An backwar movemen (towar the front of the file) will cause the entire screen to be rewritten. Th progra doe n interna dat blocking I operate wit th standar 12 byt record Sinc man user hav Deblockin BIOS fee tha ver littl spee gai woul resul fro interna recor blocking Th logi use t kee trac o th "know points coul b lo mor complicate tha i currentl i (an it ba enoug a i is). Th progra occupie abou 170 byte o memory I als use anothe 40 byte fo tabl area Al consol input/outpu i don directl throug th BIOS Thi prevent an o th CP/͠ contro function fro havin an effec o progra operation Th dis operation ar al processe usin th standar CP/ BDO calls. .pa A note on re-assembling the program. ------------------------------------ Th progra wa writte i Zilo Z-8 mnemonics personall d no lik th extende Inte mnemonics Th Zilo mnemonic mak lot more sense to me. ɠ use a Cromemc assemble versio 3.0 t assembl th sourc o a S-10 bu CP/ system Th Cromemc assemble recognize th firs eigh character o variabl name an labels Severa o m name an label hav exceede thi limit bu the caus n proble since the first eight characters are unique. Th Cromemc assemble produce HE fil tha i compatabl wit the CP/M LOAD command. It also can produce a REL file also. One Last word: If you have any problems or suggestions concerning this program, please let me know about them.