IMD 1.16: 29/05/2007 12:22:28 FOGCPM.027 --FOGCPM027GPIB COM_ GPIB DOCGPIB PASNTURBO PAS4 !"#TURBO DOC$TURBOSAVCOM%TURBOSAVDOC&'SLIST COM()*+,-./01234567SLIST COMq89:;<=>?@ABCDEF-02-00 86 SLIST DOCGHIJKLMNOPQRSTUVSLIST DOCWXYZ[\]^_`abcdefSLIST DOCghijklmnopqrstuvSLIST DOCKwxyz{|}~-CPM027 DOCSLISTCTLDATSLISTINSCOMSLISTINSCOM5SLISTINSDTA%SLISTINSMSGSLISTRSVDAT SYSTEM DATThis is the disk name. ten Address, default 7͐bŔ/ Type B - Set Delay, default 600 micro secs.͐bŔ Type C - Perform Serial POLL͐bŔ- Type D - Device Clear Addressed/Universal͐bŔ Type I - Interface Clear͐bŔ Type Q - Check SRQ͐bŔ2 Type R - Make Device a Listener & Send Message͐bŔ! Type T - Make Device a Talker͐bŔ ! !45(!.+/ 0y0( d!kZ!{Z͈͈o&  :(y ͠|( *"x2y( >28!?"9!!>2 :D]SXN]D [ (!e}̈́A8Q0G: x@!\w# (   yV. V!h6# (*(.(!8}(*(̈́w#>?> w#a{ |͒}͛Ɛ'@'7||}>"C"6# ""͐ͩ*B"[R5*"^#V#ͫCopyright (C) 1984 BORLAND IncA Osborne 1al selectedP)(= ERT()~7#~=% o&ͦoͦܐԩͣ}!!"8~#(}:$= +*!Z!*B!!:(=2!Z: <2!!!:O::O:!*B! !45(!.+/ 0y0( d!kZ!{Z͈͈o&  :(y ͠|( *"x2y( >28!?"9!!>2 :D]SXN]D [ (!e}̈́A8Q0G: x@!\w# (   yV. V!h6# (*(.(!8}(*(̈́w#>?> w#a{ |͒}͛Ɛ'@'7||}>"C"6# ""͐ͩ*B"[R5*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#E͊w}8uRB0 >R@RR!+ͨ z R!+ͨ z <!+ͨ z <!+ͨ z <!#ͨ z <!+ͨ z T]KB!z> S>))0 = |JJDMgo>jB0 7?= H\<z5+)+<z {0Gɯgo||H}||/g}/o#}o&K[xAJSJDM!b"!6J"DM'ͬͬdͬ ͬ} wͦWͧ _}8(8J`9{T]=o`9y w >uJ u` }>(; xQ }} ˸T}ٕ(0D=C ,= ( [ 0%D , 7 ͏ ?(8u x O - ; 8˸x X ,-xG}; }م 9; .>#n0[ D = - nx P ,-(-˸G,-; }ٕ? 9.>͏ 8u ?= u+-(>O 0u O 8͏ ?x P , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨ xx(ͼ ?}ٽÏ }ց; <(; 7D = |٤g{٣_z٢Wy١Ox٠GD u J }x>uu}ƀ/ƀo; -J }0W-J W,}l˸ͨ 8 ; ` x( -ͨ 8J -ͨ 8,J }l8;*!` ! >u` ` u--- J ,,,-xGg?+2n*8t z~,->uxua}.; OJ , ; !U >,k- o&0%,` }g; }؉}颋.:}8c~I$I~L*kٷx˸; }0G,͙<},-(-J ! >0 a` o8 Oþ >um.`1pF,t6|!wS<.z}[|%FXc~ur1}Oٯx(<˸ͨ 8; !~Jͨ 0O!><ͨ 8 =  7 <` O ; 7 0 W-J OT0 j oD,:j !I}袋.}8c~I$I~L!>u` ` 77 ` = O nf^VNF!DLT\I!!53!r1!\!> x #-= o˸xO(- }(x>8(C ,C `iM!>u|; |J>| )=|(DMbo˸ͦ88ͦx(0 8> Mx(>-Ͳ{(ay(Ͱͦ \z(>.Ͳ (Ͱ ~ͦ{>EͲ>+|(|Dg>-Ͳ|/ 0:p# ~# +>0w#,-  60#J˸}րogM| .(C = ~> x0w#xG%P %P ZJDM%P = _~65i+~hìx-Sx9?+{Η@}|C C gZJDM0D ,7}o˸  #yO!@9i&   # w# /w# w#!9! E9!!9~(+F͊!"9!(#>2*Ͳ"|>" :( ͆ *6#w*6#6 !\$![ (̈́( #:~CONTRMKBDLSTAUXUSR>2$*#~ Ͷ$*:> >w###6  #6++p>2S-$Ͷ:*6###ww#w$w#w: ##N#F*B> w#w#[s#r>2S$Ͷ$*6 #-Nw#Fwq#p#6#w#w#w* :( ͒: *^ F* < >26"~͟*-w#ww#͟"~ <@*Ͳ!\  <ʮ!\$> >2*|>! * \$\<(!: [1Á\!(f"> 2:!<"F( #~#6e>!["N>!~8>O6*"w (=(&("( :(N 8y(~#x+% (6*#~[*#~ *~(h#"b=  8 J= B== ͯ}8= ͵}/ͭ !*###~-_~(4Q6*>2>*##w:>*##~*#~(E[ ( ( ( !][ ( ( ((w#(6!]~-#8~>7  [>OkͼMs #rkͼpX á[ [ (( #w(q*#~[ (  *##~6͜O$*#~(08ʦ=ʦ==ʩ=ʬò+###~-_q46͡> *:4^q}Ò*|(M|( M6-#͐ͦ[R8 (G> ͒C~͒#*ͦC!h !lTRUEFALSEͦ!9^#(~#(G~͒#> ͒> Ò "F![(#RR0*4#4> RR *4 #4(>>2$*V(/˖:(#~+ x y2!͵( =( X:(R*:(###~-_-͌X> :("͟"*^˞*V˖0 SRѷR8A* N#F#s#r$ 0})jS\*###w* N#FB ͟r+s> !T]>)j)0 0= UR!#U*^#V#N#F#^#V>">!2DM"~x(L* :O(o:" C}=( ?*-N#Fp+qq#p! * F+N+++V+^Bq#p>>> SRѷR* s#r$ s#r"S"! N#FB(^x * 6#[<(H*! Kq#p##K[! *! 4 #4! x *$ *>w""{_!"*nf}(HR0nf" ^VMDnfutqp*s#r*s#r"* 5KB!>u~#fo{_"*R0RnfR0KqputsrNF( ^VNF^V*SutKqp R*R(~w~wnf ut"6# * *!""*NFy(* "*B0Cnf* [R*"*RS[s#r^#VS>O"w2x2!"" @*>2"!"""!\Ͳ*: !~6go(\R*s#r_2x( s x(T]DMR0 -a%}̈́o*!~6o&͠|ͣ}%^C User break1:% I/O% Run-time% error ͒%, PC=[R"͍% Program aborted*1!͍!0hͲ,?_c!! *i!|g}o!NE> Ŕ Data not accepted timeout ͐b*i!|g}o!NEʉ Ŕ# Device not ready for data timeout ͐b*i!|g}o!NE Ŕ No device present ͐bŔ# Press any key to return to program͐b!8!{b!M}2z!"i!.c!! *a&!|g}o!NEi!Ŕ Data not valid timeout ͐b*a&!|g}o!NEʧ!Ŕ Data valid timeout ͐bŔ# Press any key to return to program͐b!8!{b!}2a!M}2z!.}2!"m*m!"m!*&DM.o&"i*m*qNE@"*i!NE ""!"m*m!"m!*DM.o&"i*m*qNEʑ"*i!NE_"!"m*m!"m!."o*ol&}2b*o}2a*m*qNE"!*a&!͇Eʨ"R*b&b!.o&"ic!! *i!|g}o!NE{#Ŕ1 there is a device requesting service on the line͐bù#Ŕ1 There is no device requesting service on the bus͐bc!! ŔUniversal or Addressed U/A͐bR͐bŔ, Note - You may have to increase delay time ͐bŔ! to prevent error message.͐b!8!{bR*{&(͐b*{&(!ANEʭ$*d&!*&!ö$*&!c! ! *&!*e&!!"m*m!"m!."o*ol&}2b*o}2a*m*qNE%!*a&!͇E$*b&R!bŔ b*&!R͐bc! ! ŔType Message to send ͐b!"g*g!"g!8!yb*y&Rb!*g+)*y&!|g}os#r!*g+)^#V! NE&*g!"g!*g+)! s#r*g!cN!*g+)^#V! N}oEʔ%*d&!!*g5z&"k!*k+)^#V! NEʥ&!*k+)!*k+)^#V!s#r!*k+)^#VQ"*k#Z&*&!c!!Ŕ Enter the IEEE Talk Address ͐b!u+_b*u!͛*u! ͯ}oE&*u!@}2eŔThe bus talk command = *e&!͐bŔ Enter the IEEE Listen Address͐b!u+_b*u!͛*u! ͯ}oEo'*u! }2dŔThe bus listen command = *d&!͐bc!!Ŕ2 Enter the Number of 100 Micro Sec. delays before͐bŔ, giving up. The default number is 6 but a ͐bŔ" slow device may need more time. ͐bR͐bŔ+ Note: the number must be less that 32000͐b!u+_b*q!}ͯ*q!͛}oE(*u"q*w!"w*wR)Ŕ- "... There is none righteous, no, not one." ͐bŔ+ Rom. 3:10͐b+RB*Ŕ- "For all have sinned, and come short of the ͐bŔ, glory of God." Rom. 3:23͐b+R*Ŕ- "For the wages of sin is death; but the gift͐bŔ. of God is eternal life through Jesus Christ ͐bŔ- our Lord." Rom. 6:23͐b+R+Ŕ+ "That if thou shalt confess with thy mouth͐bŔ- the Lord Jesus, and shalt believe in thine ͐bŔ* heart that God hath raised him from the ͐bŔ+ dead, thou shalt be saved." Rom. 10:9͐b*w!NE+!"w!G}2e!'}2d!"qcŔ Written by Charles Arnett ͐bŔ 111 Worman Dr. ͐bŔ Union OH ͐bŔ 45322 ͐bŔ 513-836-3272 ͐bR͐bR͐bŔ Type M for Menu ͐b!8!zb*z&(}2z!"w*z&!MNE4/c5)!!Ŕ1 Type A - Set Talk & Listen Address, default 7͐bŔ/ Type B - Set Delay, default 600 micro secs.͐bŔ Type C - Perform Serial POLL͐bŔ- Type D - Device Clear Addressed/Universal͐bŔ Type I - Interface Clear͐bŔ Type Q - Check SRQ͐bŔ2 Type R - Make Device a Listener & Send Message͐bŔ! Type T - Make Device a Talker͐bŔ Type M - Menu͐bŔ Type X - exit͐b!8!zb*z&(}2z*z&ARc/&0BRs/ (0CRƒ/ͷ$0DR“/ͺ#0QR£/#0RR³/[%0TR/*e&!͢"*a&!NE/*&!0IR0!*&DM.*z&!XNE<-QRQ#Û/RRR[%ë/TRT*e&!͢"*a&!NE/*&!û/IRI!*&DM. Written by Charles Arnett for the GPIB.COM program 12/30/85 This progra i men drive s ther i nt much nee fo DO file hav use th erro explanation tha foun i th Osborn manual I yo don' understan an erro messag, use your Osborne manual to figure out what is going on. Yo ma wan t tr longe dela time t solv som o you problems, especiall i yo ar programin a instrument T us th Osborn a GPI (Iee 488 controle simpl activat the GPIB program and select the desired function from the menu. OPTIO A Th progra wil ente routin tha enable yo t se th Tal an Liste addres o th devic yo wan t commun icat to Thi default t 0 fo bot addresses wrot thi progra a genera purpos tes program Thi progra assume tha yo onl wan t communicat t on devic a t time I woul no b difficul t modif th progra fo mor tha on device. OPTIO B Th Osborn wil tim ou i 10 micro-sec i dat i no o th lin o data i no received Man device d no respon tha fas s w cal th routin severa time t allo mor tim fo slo device t respond Th defaul dela i 60 micro-secs T chang th delat tim simpl ente th numbe o tim out tha yo need ie I yo nee milli-sec. ente 01 fo 1 10 micro-secs. OPTIO C Th seria pol i use t determin i th devic i requestin service Thi wil normall b use afte SR messag appear o th bus B performin Seria Pol o eac devic on h bu yo ca tel whic device ar requestin service OPTIO D Whe a operato type the wil b querie a t universa o devic clea i desired devic clea wil clea th devic tha i addresse b th Liste Address A universa clea wil clea al device o th bus OPTIO I Interfac clea i use t clea th bus. OPTIO Q Thi check th th bu t se i an devic i reques tin service I doe no tel yo whic devic i requestin servic bu onl tha on o mor device ar requestin service OPTIO R Thi i use t sen message Thi optio wil promp yo t typ i th messag t send Th progra the addres th devic tha th liste addres i se t an sen th message. The EOI command will be sent with the line feed. .pa OPTIO T Thi optio i use t receiv informatio fro th addresse devic o th bus Th device addresse wil becom talke an th Osborn wil liste an displa th receive information Th Osborn wil receiv strin an qui whe a EO i receive o whe n mor dat appear o th bus I n EO i receive an n dat i o th bu the a erro messag will appear and you can return to the program. OPTIO M Display th menu Th progra re-enter th mai prog ra afte eac option bu doe no displa th menu Yo ca cal th desir optio withou th men bein o th screen OPTION X: To exit the program and return to CPM, type X. .pa URBOSAVDOC HEKLISTCRC { December 23, 1985 } PROGRAM GPIB_CONTROLLER; { *********************************************************** } { CP/M BIOS CALL CP/M Function # } { Control Out 20 } { Status In 21 } { Go To Standby 22 } { Take Control 23 } { Output Interface Message { This program is to use the Osborne 1 on the IEEE488 bus } { With this program you should be able to use the Osborne 1 } { as a bus controller. } { } { Written by Charles J. Arnett } { Pastor Union Baptist Church } { 111 Worman Dr. } { Union OH 45322 } { December 23, 1985 } PROGRAM GPIB_CONTROLLER; { *********************************************************** } { CP/M BIOS CALL CP/M Function # } { Control Out 20 } { Status In 21 } { Go To Standby 22 } { Take Control 23 } { Output Interface Message  24 } { Output Device Message 25 } { Input Device Message 26 } { Input Parallel Poll 27 } { } { *********************************************************** } Var Dummy, Kind, CharA : Char; CharB : byte absolute CharA; VerseCount, TempI, Message, DelayTime, HandL, I,W,X,Z : Integer; Temp, IeeeTalkAddress, IeeeListenAddress, BusMessage, RegH, RegL : Byte; Mess : array[1..99] of Integer; Const SerialPollOn : Byte = $18; SerialPollOff : Byte = $19; Unlisten : Byte = $3F; Untalk : Byte = $5F; DeviceClearAddress : Byte = $04; DeviceClearUniversal : Byte = $14; InterfaceClear : Byte = $01; Procedure Error1; { error routine for outputs } Begin ClrScr; GOTOXY(1,10); If X and 4 = 4 then WriteLn(' Data not accepted timeout '); If X and 2 = 2 then WriteLn(' Device not ready for data timeout '); If X and 1 = 1 then WriteLn(' No device present '); WriteLn(' Press any key to return to program'); Read (KBD,Dummy); Kind := 'M'; X := 0; Bios(20); End; Procedure Error2; { Input error routine } Begin ClrScr; GOTOXY(1,10); If RegL and $04 = $04 then WriteLn(' Data not valid timeout '); If RegL and $02 = $02 then WriteLn(' Data valid timeout '); WriteLn(' Press any key to return to program'); Read (KBD,Dummy); RegL := 1; Kind := 'M'; Bios(20); End; { OutBusMessage is used to send a message byte to the Bus } Procedure OutBusMessage(BusMessage:byte); Begin I := 0; Repeat I := I + 1; X := Bios(24,BusMessage); { Put interface message on the bus } If I = DelayTime THEN Error1; { This gives devices 600 microSec. to respond. } { Increase DelayTime for slow devices. } Until X = 0; End; { OutDeviceMessage is used to send a message byte to a listener } { Put the message byte in Lo(Message) } { Put the EOI information in Hi(Message) } Procedure OutDeviceMessage(Message:integer); Begin I := 0; Repeat I := I + 1; X := Bios(25,Message); If I = DelayTime THEN Error1; { This gives devices 600 microSec. to respond. } { Increase DelayTime for slow devices. } Until X = 0; End; { InDeviceMessage is used to receive a message byte from a talker } Procedure InDeviceMessage; begin I := 0; Repeat I := I + 1; HandL := BiosHL(26); { Receive CHaracter in H reg. and } RegH := Hi(HandL); { EOI & Err. message in L reg. } RegL := HandL; If I = DelayTime then Error2; { This gives devices 600 microSec. to  respond } { increase for slow devices. } Until RegL <= 1; { 1 if EOI } Write(Chr(RegH)); { writes byte in ASCII } End; { Check to see if any device is requesting service } Procedure CheckSrq; begin X := Bios(21); begin ClrScr; GOTOXY(1,9); If X and $01 = $01 then WriteLn(' there is a device requesting service on the line') Else WriteLn(' There is no device requesting service on the bus'); end; end; Procedure DeviceClear; Begin ClrScr; GOTOXY(1,9); WriteLn('Universal or Addressed U/A'); WriteLn; WriteLn(' Note - You may have to increase delay time '); WriteLn(' to prevent error message.'); Read(KBD,Dummy); WriteLn(UpCase(Dummy)); if UpCase(Dummy) = 'A' then begin OutBusMessage(IeeeListenAddress); OutBusMessage(DeviceClearAddress); end else OutBusMessage(DeviceClearUniversal); end; Procedure SerialPoll; { Perform Serial Poll } Begin ClrScr; GOTOXY(9,10); { ------ Now read Serial Poll & check for SRQ ------ } Begin OutBusMessage(SerialPollOn); { Turn on Serial Poll } OutBusMessage(IeeeTalkAddress); { Address talker } begin I := 0; Repeat I := I + 1; HandL := BiosHL(26); { Receive CHaracter in H reg. and } RegH := Hi(HandL); { EOI & Err. message in L reg. } RegL := HandL; If I = DelayTime then Error2; Until RegL <= 1; Write(RegH); { write Serial Poll message as a byte of information } End; Write(' '); OutBusMessage(SerialPollOff); { Turn off Serial Poll } End; { end of Serial Poll 3 times } WriteLn; End; { End of serial Poll } Procedure SendMessage; Begin ClrScr; GOTOXY(9,10); WriteLn('Type Message to send '); Z := 0; Repeat Z := Z + 1; Read(KBD,CharA); Write(CharA); Mess[Z] := CharB and $00FF; if Mess[Z] = $0D then begin Z := Z + 1; Mess[Z] := $0A; end; Until (Z = 99) or (Mess[Z] = $0A);  { stop on Line feed } OutBusMessage(IeeeListenAddress); for W := 1 to Z do begin if Mess[W] = $0A then Mess[W] := Mess[W] + $0100; { above routine is to send an EOI with the line feed } OutDeviceMessage(Mess[W]); end; OutBusMessage(UnListen); END; Procedure SetAddress; begin ClrScr; GOTOXY(1,8); repeat WriteLn(' Enter the IEEE Talk Address '); ReadLn(TempI); Until (TempI > 0) and (TempI < 32); IeeeTalkAddress := TempI + $40; WriteLn('The bus talk command = ',IeeeTalkAddress); repeat WriteLn(' Enter the IEEE Listen Address'); ReadLn(TempI); Until (TempI > 0) and (TempI < 32); IeeeListenAddress := TempI + $20; WriteLn('The bus listen command = ',IeeeListenAddress); end; Procedure SetDelay; Begin ClrScr; GOTOXY(1,8); repeat WriteLn(' Enter the Number of 100 Micro Sec. delays before'); WriteLn(' giving up. The default number is 6 but a '); WriteLn(' slow device may need more time. '); WriteLn; WriteLn(' Note: the number must be less that 32000'); ReadLn(TempI); Until (DelayTime < 32000) and (DelayTime > 1); DelayTime := TempI; end; Procedure RomansRoad; Begin VerseCount := VerseCount + 1; Case VerseCount of 1 : begin WriteLn(' "... There is none righteous, no, not one." '); WriteLn(' Rom. 3:10'); end; 2 : begin WriteLn(' "For all have sinned, and come short of the '); WriteLn(' glory of God." Rom. 3:23'); end; 3 : begin WriteLn(' "For the wages of sin is death; but the gift'); WriteLn(' of God is eternal life through Jesus Christ '); WriteLn(' our Lord." Rom. 6:23'); end; 4 : begin WriteLn(' "That if thou shalt confess with thy mouth'); WriteLn(' the Lord Jesus, and shalt believe in thine '); WriteLn(' heart that God hath raised him from the '); WriteLn(' dead, thou shalt be saved." Rom. 10:9'); end; end; if VerseCount = 4 then VerseCount := 0; end; Begin { Main Program } IeeeTalkAddress := $47; IeeeListenAddress := $27; DelayTime := $06; ClrScr; WriteLn(' Written by Charles Arnett '); WriteLn(' 111 Worman Dr. '); WriteLn(' Union OH '); WriteLn(' 45322 '); WriteLn(' 513-836-3272 '); WriteLn; WriteLn; WriteLn(' Type M for Menu '); Read(KBD,Kind); Kind := UpCase(Kind); VerseCount := 0; REPEAT If Kind = 'M' then begin ClrScr; RomansRoad; GOTOXY(1,8); WriteLn(' Type A - Set Talk & Listen Address, default 7'); WriteLn(' Type B - Set Delay, default 600 micro secs.'); WriteLn(' Type C - Perform Serial POLL'); WriteLn(' Type D - Device Clear Addressed/Universal'); WriteLn(' Type I - Interface Clear'); WriteLn(' Type Q - Check SRQ'); WriteLn(' Type R - Make Device a Listener & Send Message'); WriteLn(' Type T - Make Device a Talker'); WriteLn(' Type M - Menu'); WriteLn(' Type X - exit'); end; READ(KBD,Kind); Kind := UpCase(Kind); Case Kind of 'A' : SetAddress; 'B' : SetDelay; 'C' : SerialPoll; 'D' : DeviceClear; 'Q' : CheckSrq; 'R' : SendMessage; 'T' : Begin OutBusMessage(IeeeTalkAddress); Repeat InDeviceMessage; Until RegL = 1; OutBusMessage(UnTalk); end; 'I' : Bios(20,InterfaceClear); { Conrtol out clears the bus } End; UNTIL Kind = 'X'; END. (* 5 TURBO PASCAL UTILITY PROGRAMS ARE IN THIS FILE: 1 COPY 2 PRINT 3 RENERA 4 DIR 5 ERABAK Separate them for use with Turbo Pascal. *) (* Send remarks to Doug Cox 488 University Ave #611 Palo Alto, Ca. 94301 *) program COPY; label FIN; var source, dest: File; destDrive: char; sourceName, destName: string[14]; buffer: array[1..17152] of byte; recs, rem: byte; ok: boolean; begin ClrScr; GotoXY(1,12); write ('Enter file to COPY: '); repeat GotoXY(21,12); ClrEol; read (sourceName); if sourceName= '' then Goto FIN; GotoXY(1,11); ClrEol; Assign (source, sourceName); {$I-} Reset (source) {$I+}; ok:= (IOresult= 0); if not ok then begin GotoXY(1,11); write ('Sorry, I can''t find "',sourceName,'", try again...'); end; until ok; writeln; writeln; if FileSize (source) <= 135 then begin if Copy(sourceName,2,1)= ':' then sourceName:= Copy(sourceName,3,Length(sourceName));  write ('Destination Drive: '); readln (destDrive); destName:= UpCase(destDrive)+':'+sourceName; Assign (dest, destName); Rewrite (dest); rem:= FileSize (source); while rem <> 0 do begin if rem > 134 then recs:= 134 (*17152/128 records*) else recs:= rem; BlockRead (source, buffer, recs); BlockWrite (dest, buffer, recs); rem:= rem - recs; end; Close (dest); write ('Done.'); end else begin writeln ('Sorry, that file is too big for me to transfer.'); end; Close (source); FIN: end. program PRINT; label FIN; var {$U+} line: string[127]; (* Osborne 1 specific *) fileName: string[14]; anyKey: char; f: Text; ok: boolean; begin ClrScr; GotoXY(1,12); write ('Enter file to PRINT:'); repeat GotoXY(22,12); ClrEol; read (fileName); if fileName= '' then Goto FIN; GotoXY(1,11); ClrEol; Assign (f, fileName); {$I-} Reset (f) {$I+}; ok:= (IOresult= 0); if not ok then begin GotoXY(1,11); write ('Sorry, I can''t find "',fileName,'", try again...'); end; until ok; GotoXY(1,12); ClrEol; write ('Set up printer & press RETURN when ready'); read (Kbd, anyKey); writeln (Lst); ClrScr; GotoXY(1,1); while not Eof (f) do begin readln (f, line); writeln (line); writeln (Lst, line); end; Close (f); writeln (Lst); FIN:end. program RENERA; label Q; var fileName, newName: string[14]; choice: char; f: File; ok: boolean; begin ClrScr; repeat GotoXY(1,10); write ('(R)ename or (E)rase: '); read (Kbd, choice); if choice= ^M then Goto Q; choice:= UpCase(choice); write (choice); if choice= 'R' then write ('ENAME'); if choice= 'E' then write ('RASE'); until (choice= 'R') or (choice= 'E'); GotoXY(1,12); write ('Enter file name:'); repeat GotoXY(18,12); ClrEol; read (fileName); if fileName= '' then Goto Q; GotoXY(1,11); ClrEol; Assign (f, fileName); {$I-} Reset (f) {$I+}; ok:= (IOresult= 0); if not ok then begin GotoXY(1,11); write ('Sorry, I can''t find "',fileName,'", try again...'); end; until ok; Close (f); writeln; writeln; if (choice= 'R') then begin write ('Enter new name: '); readln (newName); Rename (f, newName); end else if (choice= 'E') then Erase (f); write ('Done.'); Q:end. program DIR; {$A-} const MaxFiles= 64; schf= 17; schn= 18; setdma= 26; fcbl= $5C; fcb= $80; type Directory= array[1..MaxFiles] of string[12]; var dmabuf: array[1..130] of byte; dir: Directory; drive: char; h,i,j,k: integer; procedure QuickSort (var dir: Directory; i: integer); procedure Sort (left,right: byte); var middle,tDir: string[12]; l,r: byte; begin l:= left; r:= right; middle:= dir[(left+right) div 2]; repeat while dir[l] < middle do l:= l+1; while middle < dir[r] do r:= r-1; if l <= r then begin tDir:= dir[l]; dir[l]:= dir[r]; dir[r]:= tDir; l:= l+1; r:= r-1; end; until l > r;  if left < r then Sort (left,r); if l < right then Sort (l,right); end; begin (*Quicksort*) Sort (1,i); end; begin ClrScr; write ('Drive: '); read (Kbd, drive); drive:= UpCase(drive); writeln (drive,' Directory'); write ('Standby...'); GotoXY(1,2); Mem[fcbl]:= Ord(drive)-64; for i:= 1 to 11 do Mem[fcbl+i]:= ord('?'); for i:= 12 to 36 do Mem[fcbl+i]:= 0; FillChar(dir,SizeOf(dir),'o'); i:= 1; Bdos(setdma,Addr(dmabuf[1])); j:= Bdos(schf, fcbl); if j < 255 then begin dmabuf[j*32+1]:= 11; Move(dmabuf[j*32+1], dir[i], 12); j:= Bdos(schn, fcbl); while j < 255 do begin i:= i+1; dmabuf[j*32+1]:= 11; Move(dmabuf[j*32+1], dir[i], 12); j:= Bdos(schn, fcbl); end; bdos(setdma, fcb); for j:= 1 to i do Insert('.', dir[j], 9); QuickSort (dir,i); k:= 1; for j:= 1 to (i div 3) do begin writeln (dir[j]); k:= k+1; end; h:= 1; for j:= k to ((i*2) div 3) do begin GotoXY(21,h); write (dir[j]); k:= k+1; h:= h+1; end; h:= 1; for j:= k to i do begin GotoXY(41,h); write (dir[j]); k:= k+1; h:= h+1; end; writeln; writeln; end; end. program ERABAK; const schf= 17; schn= 18; setdma= 26; fcbl= $5C; fcb= $80; var ch: char; h,i,j,k: integer; dmabuf: array[1..130] of byte; dir: array[1..64] of string[12]; temp: string[12]; OK: boolean; fv: Text; begin Mem[fcbl]:= 0; for i:= 1 to 8 do Mem[fcbl+i]:= ord('?'); Mem[fcbl+9]:= ord('B'); Mem[fcbl+10]:= ord('A'); Mem[fcbl+11]:= ord('K'); for i:= 12 to 36 do Mem[fcbl+i]:= 0; FillChar(dir,SizeOf(dir),' '); i:= 1; Bdos(setdma,Addr(dmabuf[1])); j:= Bdos(schf, fcbl); if j < 255 then begin dmabuf[j*32+1]:= 11; Move(dmabuf[j*32+1], dir[i], 12); j:= Bdos(schn, fcbl); while j < 255 do begin i:= i+1; dmabuf[j*32+1]:= 11; Move(dmabuf[j*32+1], dir[i], 12); j:= Bdos(schn, fcbl); end; Bdos(setd ma, fcb); for j:= 1 to i do Insert('.', dir[j], 9); for j:= 1 to i do begin while Pos (' ', dir[j]) <> 0 do begin Delete (dir[j], Pos (' ',dir[j]), 1); end; Assign (fv, dir[j]); Close (fv); Erase (fv); end; write ('All .BAK files have now been erased.') end else write ('I didn''t find any .BAK files.'); end.*###w* N#FB ͟r+s> !T]>)j)0 0= UR!#U*^#V#N#F#^#V>">!2DM"~x(L* :O(o:" C}=( ?*-N#Fp+qq#p! * F+N+++V+^Bq#p>>> SRѷR* s#r$ s#r"S"! N#FB(^x * 6#[<(H*! Kq#p##K[! *! 4 #4! x *$ *>w""{_!"*nf}(HR0nf" ^VMDnfutqpThis file contains 5 Turbo Pascal utility programs: Copy, Print, Renera, Dir, & Erabak. They are only of use while in Turbo Pascal. Separate them into 5 separate programs (using ^KW). Renera combines Rename and Erase functions. Erabak erases all *.Bak files. Otherwise, they should be self-explanatory. Send remarks to Doug Cox 488 University Ave #611 Palo Alto, Ca. 94301yn - July 1, 1984 This program will salvage text in memory after a Turbo Pascal crash. It will create a file named SALVAGED.PAS on drive A or B. $ Select drive for output (A or B), or to exit: $ Put a disk with plenty of room in drive $ and press any key. $There is already a file named SALVAGED.PAS on this disk. OK to overwrite? $Permanent write error $Cannot open for write $... All done. You may need to clean up the file SALVAGED.PAS. $ $Copyright 1983, 1984 by Clau1:2͑W͑M N2\͑:͂͑mk:͑:2!] ~# y_ɯ22:\5 2|!"h"j\͑mNµ͂5Yž͂͑\\5!"*~># y:>"\!j5:D\͑!6>2m 2@bk:͂ɯp__ ͑mNµ͂5Yž͂͑\\SALVAGEDPASTURBOSAV by Claude Ostyn - July 1, 1984 This program will salvage text in memory after a Turbo Pascal crash. It will create a file named SALVAGED.PAS on drive A or B. $ Select drive for output (A or B), or to exit: $ Put a disk with plenty of room in drive $ and press any key. $There is already a file named SALVAGED.PAS on this disk. OK to overwrite? $Permanent write error $Cannot open for write $... All done. You may need to clean up the file SALVAGED.PAS. $ $Copyright 1983, 1984 by Clau TURBOSAV.DOC by Claude Ostyn for Turbo Pascal version 3.0 on CP/M machines TURBOSAV.COM is a short assembly language program which attempts to salvage a Turbo Pascal program which is still in the computer memory after a crash. It may have happened to you: you write a wonderful program, you compile it in memory, you run it... and it goes off into yonder. The only way out is to reset. Only you forgot to save it before trying to run it... Fortunately, on most CP/M machine a reset does not clear the memory, so your source program is still sitting in there. To use TURBOSAV, you must: 1. reboot CP/M, preferably with a "plain vanilla" CP/M disk (no Autostart program) 2. put the disk with TURBOSAV in drive A 3. type TURBOSAV You will then be asked to select drive A or drive B for the salvaged file. You can also press RETURN to exit and abandon. Put a disk, any disk as long as it is formatted and there is room on it in the drive of your choice and press A or B. TURBOSAV will now dump the Turbo text buffer area to a file called SALVAGED.PAS. (The dump will end when an EOF character is found or collision with the operating system is detected). After a few seconds, you will see a message suggesting that you clean up the file SALVAGED.PAS (there may be garbage at the end of your program). That's it! Notes: This program is for Turbo Pascal version 3.0 only. You can execute any of the "standard" CP/M commands (ERA, REN, DIR, etc) without affecting the memory area used by Turbo Pascal for the text buffer. If the SALVAGED.PAS file contains only garbage, it means that either your program when it was running, or you ran another CP/M program, or the way you rebooted the system clobbered the buffer area. Nothing can help you there. (c) Claude Ostyn 1984  ͫCopyright (C) 1984 BORLAND IncA Osborne 1al selectedP)(= ERT()~7#~=% o&ͦoͦܐԩͣ}!!"8~#(}:$= +*!Z!*B!!:(=2!Z: <2!!!:O::O:!*B! !45(!.+/ 0y0( d!kZ!{Z͈͈o&  :(y ͠|( *"x2y( >28!?"9!!>2 :D]SXN]D [ (!e}̈́A8Q0G: x@!\w# (   yV. V!h6# (*(.(!8}(*(̈́w#>?> w#a{ |͒}͛Ɛ'@'7||}>"C"6# ""͐ͩ*B"[R5*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#E͊w}8uRB0 >R@RR!+ͨ z R!+ͨ z <!+ͨ z <!+ͨ z <!#ͨ z <!+ͨ z T]KB!z> S>))0 = |JJDMgo>jB0 7?= H\<z5+)+<z {0Gɯgo||H}||/g}/o#}o&K[xAJSJDM!b"!6J"DM'ͬͬdͬ ͬ} wͦWͧ _}8(8J`9{T]=o`9y w >uJ u` }>(; xQ }} ˸T}ٕ(0D=C ,= ( [ 0%D , 7 ͏ ?(8u x O - ; 8˸x X ,-xG}; }م 9; .>#n0[ D = - nx P ,-(-˸G,-; }ٕ? 9.>͏ 8u ?= u+-(>O 0u O 8͏ ?x P , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨ xx(ͼ ?}ٽÏ }ց; <(; 7D = |٤g{٣_z٢Wy١Ox٠GD u J }x>uu}ƀ/ƀo; -J }0W-J W,}l˸ͨ 8 ; ` x( -ͨ 8J -ͨ 8,J }l8;*!` ! >u` ` u--- J ,,,-xGg?+2n*8t z~,->uxua}.; OJ , ; !U >,k- o&0%,` }g; }؉}颋.:}8c~I$I~L*kٷx˸; }0G,͙<},-(-J ! >0 a` o8 Oþ >um.`1pF,t6|!wS<.z}[|%FXc~ur1}Oٯx(<˸ͨ 8; !~Jͨ 0O!><ͨ 8 =  7 <` O ; 7 0 W-J OT0 j oD,:j !I}袋.}8c~I$I~L!>u` ` 77 ` = O nf^VNF!DLT\I!!53!r1!\!> x #-= o˸xO(- }(x>8(C ,C `iM!>u|; |J>| )=|(DMbo˸ͦ88ͦx(0 8> Mx(>-Ͳ{(ay(Ͱͦ \z(>.Ͳ (Ͱ ~ͦ{>EͲ>+|(|Dg>-Ͳ|/ 0:p# ~# +>0w#,-  60#J˸}րogM| .(C = ~> x0w#xG%P %P ZJDM%P = _~65i+~hìx-Sx9?+{Η@}|C C gZJDM0D ,7}o˸  #yO!@9i&   # w# /w# w#!9! E9!!9~(+F͊!"9!(#>2*Ͳ"|>" :( ͆ *6#w*6#6 !\$![ (̈́( #:~CONTRMKBDLSTAUXUSR>2$*#~ Ͷ$*:> >w###6  #6++p>2S-$Ͷ:*6###ww#w$w#w: ##N#F*B> w#w#[s#r>2S$Ͷ$*6 #-Nw#Fwq#p#6#w#w#w* :( ͒ : *^ F* < >26"~͟*-w#ww#͟"~ <@*Ͳ!\  <ʮ!\$> >2*|>! * \$\<(!: [1Á\!(f"> 2:!<"F( #~#6e>!["N>!~8>O6*"w (=(&("( :(N 8y(~#x+% (6*#~[*#~ *~(h#"b=  8 J= B== ͯ}8= ͵}/ͭ !*###~-_~(4Q6*>2>*##w:>*##~*#~(E[ ( ( ( !][ ( ( ((w#(6!]~-#8~>7  [>OkͼMs #rkͼpX á[ [ (( #w(q*#~[ (  *##~6͜O$*#~(08ʦ=ʦ==ʩ=ʬò+###~-_q46͡> *:4^q}Ò*|(M|( M6-#͐ͦ[R8 (G> ͒C~͒#*ͦC!h !lTRUEFALSEͦ!9^#(~#(G~͒#> ͒> Ò "F![(#RR0*4#4> RR *4 #4(>>2$*V(/˖:(#~+ x y2!͵( =( X:(R*:(###~-_-͌X> :("͟"*^˞*V˖0 SRѷR8A* N#F#s#r$ 0})jS\*###w* N#FB ͟r+s> !T]>)j)0 0= UR!#U*^#V#N#F#^#V>">!2DM"~x(L* :O(o:" C}=( ?*-N#Fp+qq#p! * F+N+++V+^Bq#p>>> SRѷR* s#r$ s#r"S"! N#FB(^x * 6#[<(H*! Kq#p##K[! *! 4 #4! x *$ *>w""{_!"*nf}(HR0nf" ^VMDnfutqp*s#r*s#r"* 5KB!>u~#fo{_"*R0RnfR0KqputsrNF( ^VNF^V*SutKqp R*R(~w~wnf ut"6# * *!""*NFy(* "*B0Cnf* [R*"*RS[s#r^#VS>O"w2x2!"" @*>2"!"""!\Ͳ*: !~6go(\R*s#r_2x( s x(T]DMR0 -a%}̈́o*!~6o&͠|ͣ}%^C User break1:% I/O% Run-time% error ͒%, PC=[R"͍% Program aborted*1!͍!VyͲëu4F:FFFFFFFF.FFFA:.PAS"߸!Ͳ!"ٸ*ٸ! m͇!*ٸn&! N}oE *ٸ#"ٸñ ! m"׸*׸!͛!*׸n&! N}oE)!*׸+"׸ *߸*׸R*ٸ!R!!"ո*ٸ*ոͯEʂ!! e.!!*ٸ#"ٸU!*ٸ*ո͛Eʪ!!!!ͽ*ٸ+"ٸÂ!! m*߸ͯE!! ! e.!Ͳê!! m*߸͛E"!! m!ͽ!! !Ͳ! ! !!A}2и*и&}2˸!*˸&! !R"!Ͳ*n&EA%!!n&!:NE"*"}2*&!!n&aE"!!n&B"!!!ͽ"!0}2!*e.! |"!.e.! |"*!͛E.#*!"\#*Q!!kEV#*!"\#! "*!͛**ͯ}oEʴ#!?e.!**#"*! NE|#!*!ͽ*!͛E$!.e.! |"*! ͯE$! e.!**#"#!*!ͽ!*e.! |"*!͛Em$!?e.!**#"*! ͛E5$!*!ͽ!\!s!! m5zʳ$"!\*!*n&s*#È$! m!! 5z$"!\*! s*#$! !$5z%"!\*!s*#$!!!+!!\o&"S%!!\o&"*!ͯE%!*! !+! s  ! Ͳ!*! !+! ! !.e.! !  &!! ! Ͳ*&!0a*&*"a}oE&*&B"! !Ͳ!*s! ! R!qb! R!qb! R!qb! R!qb! R!qb"!*5z&"! R!qb*#ë&"!*5z'"! R!qb*#&"!*5z?'"ݷ! R!qb*ݷ#'"۷!*۷5zw'"շ! R!qb*շ#S'!ԶͲ!!Զ =!z5!N}2Է*Է&(}2*&Q!0!9kE'*&!0R"'*&! ! "*!Ͳ!"*! m͇Eʱ(!*n&ͯ'"!"*! mͯEʆ(*!!*!n&ͯ'"*#"!**ͽ*e.!**#"(! !Ͳ! "!Ͳ!"*! m͇!*n&! \a}oE)*#"(*! m͇Ea*!*!ͽ*"*! m͇!*n&!\a}oE|)*#"C)*! m͇Eʠ)!*!ͽ**R*!!"**ͯE)! e.!**#"*#")! m*ͯE#*! e.!*)*!͛! m*͛}oEa**+"!*!ͽ#*! !Ͳ! "!"{*{*͇*!*{+)^#V͛}oEʾ**{#"{È**{*͇E*![!q*{+)]T) !qb![! b"t}2v!pͲ!p m*tͯEL+!p *v&e.!pͲ+!p !wͲ!w !pͲ!pͲ!pͲ!p !p |"j*j!͛E+!p*j!p mͽ!p !p*j!p !p |"jÓ+!p !pͲ!p !jͲ!jͲ!"d*d!j m͇E,*d!j m͇!j*dn&e.!j |!N}oEm,*d#"d',*d"b*b!j m͇!j*bn&e.!j |!͛}oEʹ,*b#"bs,*d!j m͇E,!j*d*b*dRͽ,!j !jͲ!j ~-!Ͳ!͚}oEJ-!8!b! *e.!Ͳ-!͝}oEe-!8_b! !Ͳ!  a:System.Dat!Ͳ!! <b!b-!Ͳ-!Ͳ-!Ͳ-!Ͳ-!Ͳ-!Ͳ-!Ͳ-!Ͳ-!Ͳ-!Ͳ-!Ͳ!8!_b!*5zʆ."!8!*+)b!q*+)]T)-*#E.*!!5z."!*+)!s#r!q*+)]T)*#×.!b}2*&E.!Y}2/!N}2*&!Ͳ! m!͛E/!}2|! m"}*}!t*|&}oEʟ/!*}n&! N!*}n&!N}oEʕ/*}+"}Ü/!}2|?/*}!NEʾ/!Ͳ/! !*}5!Ͳ/!Ͳ! ŔPress any key to continue...͐b͠}oE(002(!8!sb*s&"j}2b*b&XR31AR31!R31FR31-R=1! }2cÖ1#Ro19Ro1ZRo1*Ro1$Ry1!0}2cÖ1+R1!+}2cÖ1*b&}2c*c&}2[}2\!}2]*[&XR1!R1!}2]2AR1*\&!l0 -E1!}2]2FR)2*\&!0 -E&2!}2]2#R[29R[2*R[2$R[2ZR|2*\&!,0 -Ey2!}2]2+Rʐ2-R±2*\&!L0 -Eʮ2!}2]2*\&*[&NE2!}2]*]&!xͲ!xͲ!x m"l!x !tͲ!}2i!}2h!"p0*j! aE9*j!0-E:6*j!N*j! N}o*s&! l \}oEʦ3*p*lͯEʠ3!&*p!"p!}2hã39&76*j!NEʏ4*p"n!x*pn&}2r*n*lͯ!x*n!n&*r&N}oEB4!t*n!n&}2s!t*n*s&s*s&Rb*n!"n3*r&0}2s!t*n*s&s*s&Rb*n*pR!͘&!}2h76*j!N*j!N}o*s&! l \}oE4*p!͛E4!͘&*p!R"p!}2h49&76*j! NE#5*i&}o}2i!}2h76*j!NEʔ5*p*l͇!x*p!n&!0 -}oE}5*p!"p!&35!}2i*h&}o}2h76*j!NE46!tͲ!*l5z5"n!x*nn&}2r!t *r&0e.!tͲ*n#û5*p!R͘&!t R!qb*l͘&!"p!}2h769& 9*p"n*n*l͇*s&!x*nn&͜1}o}oE~6*n!"n@6*n*l͇E 9*n*pR&*n"p!x*pn&}2r*r&!!N*r&!FN}oE6*s&(}2s&7*r&!+N*r&!-N}o*s&*r&a}oE&7! }2s*s&!.NE?7!}2h*h&E7*p"n*n!͛!x*n!Rn&!x*nn&N}oEʣ7*n!R"n!͘&O7*n*pͯE7!t*n!t*n!n&s!t*nn&Rb*n!"nã7÷8*i&Eʷ8*p"n*n*lͯ!x*n!n&!x*nn&N}oEW8*n!"n!& 8*n*p͛Eʷ8!t*n!t*n!Rn&s!t*nn&Rb!͘&*n!R"nW8!t*p*s&s*s&Rb*h&*p*lN}oE8!͘&9*p!"p 99&03*l*pR&!t !xͲ!x kA!W*Gn&}2O*O&!?9 -E9!}2:9*O&!+N*O&!-N}oE9*O&}2M*?!NE):!SͲ*C!"?8:!.e.!SͲ!.e.!W |"=*=!NEg:*A!"=!+}2M*=!R"G*?!R!Ez;"I!W*In&}2Q*Q&+R:-R:! !S l !SͲþ;$R;*R;ZR;9R;#R¤;!}2:*:&}o*G!͛}oEI;͟9*G!R"G;*:&Eʉ;*O&! NEl;!0}2O*O&!S l !SͲá;!0!S l !SͲþ;*Q&!S l !SͲ*I+Ñ:*G!͛E;͟9*G!R"G;*=!"G*?!*C5z<="I!W*In&}2Q*Q&+R:<-RU!W*In&}2Q*Q&+R=-R=Ä>#R=9R=!}29Ä>,R>!S*I*P&sÄ>ZR!>$R!>*R„>*Q&!ZNE=>! }2PF>*Q&}2P!S*In&}2R*R&!0NE}>!S*I*P&sÄ>!}29*I!"IÁ=*Q&*R>$R>ZR>9R>#R>!S !0e.!SͲB?XR ?AR ?FR ?!R(?!S ! e.!SͲB?!S *Q&e.!SͲ!SͲ!"G!*A5z8A"I!W*In&}2R!}2<*G"E*<&}o*G*C͇}oEʺ@!W*Gn&}2Q*G!"G*Q&XR?!R?!}2<æ@*R@$R@ZR@9R@#R5@*R&!?9 -E2@!}2<æ@AR`@*R&!_9 -E]@!}2<æ@FR‹@*R&!9 -Eʈ@!}2<æ@*R&*Q&NEʦ@!}2<*<&}oEʷ@͔>Æ?*<&EA*Q&!!N*Q&!FN}oE@*R&(}2R!S *R&e.!SͲ/A*E"G!S !*G5!SͲ*I#`?*G*C͇EjA!W*Gn&}2Q*G!"G͔>8A!WͲ!WͲ!"I!}2;!"?!"K! }2N!W m"C!W m"A*;&*I*C͇}oEB!W*In&}2Q*Q&!.N*?!N}oE B*I"?B*Q&!,N*?!N}oE1BB*Q&Q!+a!-a*I!N*I*CN}o}o*N&! N}oEʒB*I"K*Q&}2NB*Q&Q!$a!*a!Za!#a!9aEBB!}2;*I!"I÷A*;&EB9BC?!S !WͲ!W !*ͽ! oEAC9&R! *͛ !qbcŔ&SLIST Turbo Pascal Source Lister ! !q͐bC!!!**R!b*"!Ͳ*!͛EC͒C**!RͯEC*!"D!!~͒CŔ ! !qb*&!"!*ͽ!E*&+) R!qb!*Ŕ - !*&+)))) !qb!*Ŕ = b!-*&+n&BRDR!q*&+n&.͐bAEIRE!*&+)^#VR!͐bAESRAE!*&+))))))) R!q͐b! SLISTCTL.DAT<b!b!}2!͝}oEF*&#}2!8!E*&+)._b!8!*&+))))._b!8!-*&+_b!8!*&+)_b!-*&+n&BRiF!8!_b*&!YNESF!q*&+!sfF!q*&+!sFIR²F!8!*&+)_b!*&+)))))))FSRF!*&+)!s#r!8!*&+)))))))._blE!b*&}2Ŕ1*************************************************͐bŔ1* SLIST Version 2.00A - CP/M-80, Z80 *͐bŔ1* *͐bŔ1* (C) Copyright 1985, Herb Bowie. *͐bŔ1* All commercial rights reserved. This *͐bŔ1* program is licensed for non-commercial use. *͐bŔ1* *͐bŔ1* Have you paid for this program yet? If not, *͐bŔ1* and you find it useful, then may I suggest *͐bŔ1* that you make a small donation to its author? *͐bŔ1* Something like $10 would be wonderful. You *͐bŔ1* may send it to: *͐bŔ1* Herb Bowie *͐bŔ1* 4336 E. Dover St. *͐bŔ1* Mesa, AZ 85205 *͐bŔ1*************************************************͐brL! !Ͳ*&Q!!k*&}oEʶK! !*&!R5!Ͳ!:e.! |!NE}KA:! !Ͳ!.e.! |!NEʳK! .PAS!ͲSLBCR͐bR͐bG!'Ŕ#Enter File Name or RETURN to Exit: b! ! <9!Ͳ! R!qb!͘&! ! )0! e.+!Ͳ!}2! ! \}o}2J*&EL! x'}2*&EʥLP! ͲL*** FILE DOES NOT EXIST ***P! Ͳ*&}o*&}oErLBC!*&5z M}2#D*&#LR͐bC!*&!ͽ!*&!ͽ!*&!Ŕ'Enter Code to modify, or blank to end: b !!)0!ͲR͐bP! Ͳ!  oEP!}2*&*&͇!E*&+) ! o}oEN*&#}2M*&*&͛EKN*** INVALID SELECTION ***P! ͲP!*&+)^#V"L!-*&+n&BRN!q*&+!q*&+n&}osPIRQO!*&+)^#V!!Pt!9*L+P!NͲ! !N <9P!ͲŔEnter new value: ! !qb*L͘&! !N )0P!Ͳ! !*&+)!J͞PSRP*L!͛EʁO!X*L+P!NͲÔO!!*L+P!NͲ!*&+))))))) !N <9P!ͲŔEnter new value: ! !qb*L͘&!*&+)))))))! !N )0#D!  \EM!! +)^#V!!+)^#VR"!! +)^#V!NExP!"!! +)^#V!!+)^#VR"!q!+n&EP*!R"!q!+n&EP*!R"!q! +n&EQ*!R"!! +)^#V*R"!!+))))))) m!ͯENQ!N}2oQ!!+)))))))!n&}2!!+))))))) m!ͯEʠQ!A}2Q!!+)))))))!n&}2*& :SXREF.DATl !Ͳ"D*D!͛ER![͐b*D+"DQ*#"!"!!+)^#V!R!!+)^#VRQ!!+))))))) !@e.! e+!Ͳ*!!Lt! !#e.!L e+!Ͳ!  /!Ͳ! *(!Ͳ![! !!+)^#V+!qb!q!+n&ES![́C b!q!+n&E=S![́BE b!q! +n&EbS![́ SEQ b![! !q͐b!!+)^#VQ!!+)^#V"!}2*&EJU!! +)^#V*R!!+)^#VR!!+)^#VQ!!+))))))) !@e.! e+!Ͳ! !#e.!L e+!Ͳ! *(!Ͳ![! !!+)^#V+!qb!q!+n&EʝT![́ b!q!+n&EʿT![́ b!q! +n&ET![́ b![! !q͐b*#"!q!+n&E'U![! bCU!! +)^#V*RQ!}2*!͛**t}oEqUͧSR*#"![! !q͐b*&*&}o!q! +n&*&}o}o}oEhX! !!+)^#V+!Ͳ!q!+n&EHV*!͛EV!*e.!)Ͳ'V! e.!)Ͳ! !) ! e.!Ͳ!q!+n&EʋV*!!)t! !) ! e.!Ͳ!q! +n&EW*!!)t! !) !Ͳ*&EV! !+e.!ͲW! ! e.!Ͳ! ! !Ͳ*!"*! m͇!*n&! N}oE]W*#"$W*! m͛EW*!"*#"! m!! +)^#V͛EWX!! +)^#V"**͛!*n&! a}oEW*+"úW**NEX!! +)^#V"! !*5!ͲKU!!*ͽ! *+! !ͲÆW! !ͲKU!}2͑U!}2*&EX!͝EʫX!}2!b! ͳCX!8!._b!}2*&}oE Y!a͝EX!e.!Ͳ Y!a8!._b!}2*#"**! ͛E,Y͒C! m"!"*&}2*&}2*"*"*"*&EwYpX!}2*"**͛EʺY*&!NEʩY!}2ðY! }2!}2Y!*n&(}2*#"*&! NEY?YYY!Ͳ*!͛EʎZ*&!}NE(Z!"ËZ*&!*N*&!)N}oEXZ!"?YËZ! m!ͯEʈZ! *&e.!Ͳ?YY?Y*&!IN*&Q!+a!-a}o}o*!! +)^#Vt}oE[?YY! ! e.+!Ͳ!:e.! |!NE3[A:! !Ͳ!.e.! |!NEi[! .PAS!Ͳ! ͳC! x'Eʦ[͑U!}2!! <b!b[Ŕ *** FILE NOT FOUND ***b! ͳC[Y!"*! m͇!*n&Q!0!9k}o}oE%\*#"[*" * ! m͇!* n&Q!0!9k}oEm\* #" +\* *NEʆ\!"é\! ** *R5!! ͞!}2?Y!Ͳ*&Q!A!ZkE3]*&e.!Ͳ?Y*&Q!A!Zk!+a!-aE3]! *&e.!Ͳ?YY! PA\EY]*!"z_! CP\Eʕ][***tEʒ]*!"z_! L-\Eʳ]!}2z_! L+\E]!}2z_!}2*&*&͇!E*&+) ! o}oE^*&#}2]*&*&͇Ez_!-*&+n&BR(_! m!NEʂ^!q*&+!q*&+n&}os%_!!n&Q!Ta!Ya!+aE^!q*&+!s%_!!n&Q!Fa!Na!-aE_!q*&+!s%_!q*&+!q*&+n&}osz_IRN_[!*&+)*s#rz_SRz_!*&+)))))))! /P!"*&!*NEʟ_*"å_*"?Y*&$R¼_͏Z_.R_ͪ\_Y?Y?Y*&!'N*&!'N}oE`?Y?Y*&!'NE_?Y*&e.!Ͳ?Y!!n&![  -E`*&!{  -E`! *&e.!Ͳ?YH`Y*&!(NEʘ`?Y*&!(N*&!*N}o*&!{N}oE`~_æb*&!'NE`_æb*&!aEʦb`*&!!n&![  -}oECb*&!AN!!n&!_N}o! m! ͛}oEʕa![*!!,! !q͐bCb!=!!n&!@R+)^#V"*!͇! !*+))) ͪ}oEa*#"ùa! !*+))) oECb![*!!,! !q͐b! BEGIN\! CASE\}oEzb*#"æb! END\Eʦb*!͛Eʦb*+")tÍojq q"%"'*!NEc!m*%*.!m*'*.g5!aEc! ""!"#*#*+"!}2!J*&)^#V*aEVc*&!}2'c!4*&)^#V*#*+**!s#rPd" "*!NEc!m* *.!m**.k5!aEc! "" * *+"!}2!*-&!R5zAd"*!J*)^#VNE8d!}2*# d*&}2 * &"""*c}oEde**+"!}2**+"**+"!J*&)^#V*N!J*&)^#V*N}oEd*&!}2ád!`*&n&E%e!4*&)^#V!J*&)^#Vͳb!4*&)^#V*͇c!J*&)*s#r!`*&!s)j"*!͸Eʩe*!ͳ !͡öe*!͡!he!ٛ͡!ٛ!ߛ͡!ߛ#g"՛"כ*כ*+"ӛ!}2Λ!J*Λ&)^#V*ӛaE2f*Λ&!}2Λf*՛*+"ӛ!}2͛!J*͛&)^#V*ӛaEvf*͛&!}2͛Gf*כ*+"ћ*՛*+"ϛ!4*Λ&)^#V*ћ*"˛!4*͛&)^#V*ϛ*"ɛ*˛** *ɛ*˛* **ɛ* !`*Λ&!s!`*͛&!s*)!͛Emg!!+)!s#r!y!+)*)!Rs#r!"wsg!"w*w!͛E(j!*w+)^#V"s!y*w+)^#V"q*w!R"w*s"o*q"m*o*m!"u*u*o*m̈́c*!aEg(j*u!gc*g** *o*m*ǘc*!aE3h(j*o!kc*k*ͰbEʊh*o!"o*o*m*ǘc*o!kc*!aEʇh(j>h*m*o*ǘc*!aEʬh(j*m!ic**iͰbEi*m!R"m*m*o*ǘc*m!ic*!aEi(j÷h*o*m͇ELi*o*maE1i*o*me*o!"o*m!R"m*o*m͛Eh*m*sR*q*oRͯEi*o*qͯEi*w!"w!*w+)*os#r!y*w+)*qs#r*m"qj*s*mͯEj*w!"w!*w+)*ss#r!y*w+)*ms#r*o"s*s*qtEʶgsg"*!͛E'm*"ͽe*ͼ *ͼ !͡!!! !ͳ ͧ}2-*-&!ͯEj!}2-!! ͧ*-&".*.!͛Ek!*.!".*.!"*!N*.!͛}oEZk!!͡hk*he!͡!* ͧ"+*+!͛Em!*ͥ!*ͥ!*-&!R5zk"!4*)*ͥ*#þk!"!"!}2!")!"2!"0!*-&!R5zAl"!J*)*s#r*#lͪb*!NEʸl!*-&!R5zʌl"!`*!s*#jl*!NEʟle!"k*!NEʸlͭb*&El!mS!m\*-&!R!Ezm"!4*)*:*+l!*:!*:$m!"-m!"*"*"e*!NE o*)!NEem! "*2!N*0*-&t}oEwn*0*-&NEn!m SOWRK.$$$=!my5!aEm! "m!}2!*-&!R5zn"c!*cͳb*c#m!4*-&!R)^#V!J*-&!R)^#Vͳb!J*-&!R)!J*-&!R)^#V!s#r*0*-&tEʝn*-&!R"aãn*0"a!4*a)^#V*2*"_*e*_* *)!")*2!"2*2*+NE o!"2*0!"0"]*!NEgo*k*)!R*+}/o|/g#̈́c*k![c*[*]* *k!"k*k*)t*!a}o}2Z*Z&!b!"!"!!Ŕ Records released to Sortb!͝}oEʻp!8!R._b!R !!5! e.+!!͞*!͛E1p!"!R m!R"*!@͛E\p!@"!R !*5@!Ͳ!7m*#"**! ͛Eʸp!!*R!b*"o!!*R!b!b!! ŔSorting file now...͐b"Q"S*S *Q ͽ*S *Q \*S^#V*Q^#Vͯ}o}o}2U*U&ïq! m!͛Eʮq! !!+)^#V+! !ͲKUͧS!q!+n&}2H!q!+n&}2G!q! +n&}2F!q!+!s!q!+!s!q! +!s/P!c"@!Ͳ!Ͳ!"!"!! Ŕ Records returned from Sortbho}oEs! o! ! oEsmq! !Ͳ! m! ͯ! m! R!!͛}oE s! !.e.!Ͳñr! @!Ͳ! m!NE@s! ! +!Ͳ*!!t! ! !Ͳ! m!*͛Eʒsmq!Ͳ*#"**! ͛Es!! *R!b*"yr!! *R!bmq!q!+*H&s!q!+*G&s!q! +*F&sBCŔ+Insert a sort work disk in the SLIST drive,͐bŔ#if extra sort work space is needed.͐bR͐b/R͐b!"!C"*ee"R͐bR͐b*!NEt!\b,uŔ*** Unsuccessful Sort: *!́ ***͐b/R͐bŔ2Remove sort work disk now, and replace SLIST disk,͐bŔ#if sort work disk inserted earlier.͐bR͐b/!"-BE!}2J*&EyL/P!LST:<b!b!! <b!}2!c"!"!"!"!"!"!}2!}2!}2BCŔMake Sure Printer Is Ready.͐b/!'ͽR͐bͽ!!Ŕ Printing...͐b![!!+))))))) ͬ'!qb!! +)^#Vz**&!RaEʦx!a! <b*&Q!Aa!UaENx!b!}2*&!UN*&}o}oENx!QA:SLISTRSV.DAT<b!Qb!!5z>x"!Q8!*+))) ._b*!N!*+)))!n&!*!R+)))!n&a}oE5x!=!*+)))!n&!@R+)*s#r*#ww!Qb!}2!ab!}2!"! ͳC! }2! }2!}2?Y?Y*&!aEʠx̀`Èx͑U͒C*&Ex!b!}2*&Q!Aa!Ra!UaExͧbͧS![!!+))))))) ͬ'!qb*&}oEʸucŔ#Thanks for using Singular Software!͐bUaEͧbͧS![!!+)))))))ontai serie o characters withou an enclosin quotatio marks SLIST 2.00A Reference Manual Page 26 CATMENU PRG v*CATDELE PRG \ TEMPFILEDBF :eFCAT-NEW PRG fAll commercial rights reserved. This program is licensed for non-commercial use. Hav yo pai fo you cop o SLIS yet I not an yo fin i useful the ma sugges tha yo mak smal donatio t it author Somethin砠 lik堠 $1 woul䠠 b wonderful Yo ma sen i to: Herb Bowie 4336 E.  S L I S T Version 2.00A - CP/M, Z80 R E F E R E N C E M A N U A L Turbo Pascal Source Lister and Cross-Reference Utility (C) Copyright 1985, Herb Bowie All commercial rights reserved. This program is licensed for non-commercial use. Hav yo pai fo you cop o SLIS yet I not an yo fin i useful the ma sugges tha yo mak smal donatio t it author Somethin砠 lik堠 $1 woul䠠 b wonderful Yo ma sen i to: Herb Bowie 4336 E. Dover St. Mesa, AZ 85205 T R A D E M A R K S CP/M is a registered trademark of Digital Research, Inc. Osborn堠 i registere trademar o Osborn堠 Compute Corporation. Turb Pasca an Turb Toolbo ar registere trademark o Borlan International. WordSta i registere trademar o MicroPr Internationa Corporation. D I S C L A I M E R ɠ wil hav n liabilit o responsibilit t th use o an othe perso o entit wit respec t an liability los o damag caused o allege t b cause directl o indirectl b thi program including bu no limite to an interruptio o service los o business anticipator profit o consequentia damage resultin fro th us o thi program.  ɠ mak n warrantie a t th content o thi manua an specificall disclai an implie warrantie o merchantabilit o fitnes fo an particula purpose. Furthermore althoug thi progra ha bee place int th publi domain ɠ retai al copyright t thi program an pursuan t this thi progra MA NO B SOL B٠ AN٠ PART unles specificall authorize b th author Her Bowie i writing previou t th firs cop bein sold A well thi progra MA NO B INCLUDE I AN OTHE PACKAG FO SALE eve i thi progra i indicate a bein 'i th publi domain' Al o th abov applie t bot th origina a wel a derived o modifie copie o th original An modifie copie o thi progra MUS NO hav th copyrigh notic violated changed o altered SLIST 2.00A Reference Manual Page 2 Table of Contents 1. INSTALLATION . . . . . . . . . . . . . . . . . . . . . . 4 1.1 Before You Do Anything Else . . . . . . . . . . . . . 4 1.2 Files On The Distribution Disk . . . . . . . . . . . . 4 1.3 Installation Step 1 . . . . . . . . . . . . . . . . . 5 1.3.1 Using SLISTINS . . . . . . . . . . . . . . . . . . . 6 1.3.2 Compiling SLIST . . . . . . . . . . . . . . . . . . 6 1.4 Installation Step 2 - Editing SYSTEM.DAT . . . . . . . 7 1.5 Installation Step 3 . . . . . . . . . . . . . . . . . 10 2. OPERATION . . . . . . . . . . . . . . . . . . . . . . . 11 2.1 Executing SLIST . . . . . . . . . . . . . . . . . . . 11 2.2 Specifying The Input File Name . . . . . . . . . . . . 11 2.3 SLIST Control Codes . . . . . . . . . . . . . . . . . 13  2.3.1 Means Of Specifying . . . . . . . . . . . . . . . . 13 2.3.2 Definition Of Codes . . . . . . . . . . . . . . . . 13 BE - Print Begin/End Count? . . . . . . . . . . . 14 BM - Bottom Margin . . . . . . . . . . . . . . . . 14 CC - Print Control Codes? . . . . . . . . . . . . 14 CM - Print Comment Flag? . . . . . . . . . . . . . 15 CP - Conditional Page Break . . . . . . . . . . . 15 FF - Form Feeds? . . . . . . . . . . . . . . . . 15 FM - Footing Margin . . . . . . . . . . . . . . . 15 FO - Footing . . . . . . . . . . . . . . . . . . . 16 HE - Heading . . . . . . . . . . . . . . . . . . . 16 HM - Heading Margin . . . . . . . . . . . . . . . 16 IC - Include Print Column . . . . . . . . . . . . 17 L- - Line Printing Off . . . . . . . . . . . . . . 17 L+ - Line Printing On . . . . . . . . . . . . . . 17 LL - Line Length . . . . . . . . . . . . . . . . . 18 PA - Page Break . . . . . . . . . . . . . . . . . 18 PI - Printer Initialization . . . . . . . . . . . 18 PL - Page Length . . . . . . . . . . . . . . . . . 19 PO - Page Offset . . . . . . . . . . . . . . . . . 19 PT - Printer Termination . . . . . . . . . . . . . 19 SQ - Print Sequence Numbers? . . . . . . . . . . . 19 SX - Sorted Cross-Reference . . . . . . . . . . . 20 TM - Top Margin . . . . . . . . . . . . . . . . . 21 2.4 Initial Control Code Values . . . . . . . . . . . . . 22 2.5 Printing The Source Listing . . . . . . . . . . . . . 23 2.6 Printing The Cross-Reference . . . . . . . . . . . . . 23 3. CUSTOMIZING SLIST . . . . . . . . . . . . . . . . . . . 26 SLIST 2.00A Reference Manual Page 3 1 - Installation 1.1 - Before You Do Anything Else --------------------------------- Befor doin anythin else YO SHOUL MAK COP٠ OƠ YOU DISTRIBUTIO DISK AN US ONL TH COP FRO THA POIN ON. 1.2 - Files On The Distribution Disk ------------------------------------ You distributio dis shoul contai th followin group o files. Th followin file ar neede t instal SLISԠ fo you computer Onc th installatio proces ha bee completed the nee no b presen o th dis fro whic yo wil b runnin SLIST. SLISTINS.COM SLISTINS.DTA SLISTINS.MSG Th followin file ar th run-tim file tha nee t b presen o th driv whe yo ar goin t ru SLIST. SLIST .COM SLISTCTL.DAT SLISTRSV.DAT SYSTEM .DAT Th followin file ar th sourc file fo SLIST Th .PA fil an th .IN file ar sourc module tha ar usefu onl fo SLIST Al thes nee t b o th driv i yo ar goin t compil SLIST SORT.BO shoul als b o driv   i yo inten t compil SLIST Thi routin i no supplie wit th distributio disk an䠠 mus b堠 obtaine䠠 fro Borlan Internationa a par o th Turb Toolbo package. Th remainin file ar sourc module o mor genera natur tha yo ma fin usefu whe writin othe Turb Pasca programs Eac o thes file contain comment explainin it function Thes module ar no individuall documente i thi manual Thes file nee t b o th driv i an whe yo compil SLIST SLIST .PAS SLIST1 .INC SLIST2 .INC SLIST3 .INC SYSCONST.CON SLIST 2.00A Reference Manual Page 4 1 - Installation CENTER .FNC DISKFILE.FNC GETPIC .FNC HEXTOCHR.FNC LCRJUST .FNC MANYCHAR.FNC REPLACE .FNC SAYBOOL .FNC SAYPIC .FNC SQUEEZE .FNC TRIM .FNC CPM .PRC CRT .PRC LST .PRC SYSINIT .PRC WAIT .PRC SYSTYPE .TYP SYSVAR .VAR 1.3 - Installation Step 1 ------------------------- SLISԠ i distribute i for alread suitabl fo us o a Osborn computer I thi i th compute o whic yo wis t ru SLIST the yo ma ski sectio 1. altogethe an procee directl t sectio 1.4 Th firs ste i you installatio procedur (afte makin cop o th distributio disk o course ca b accomplishe i on o tw ways Yo ca eithe us th supplie CO͠ fil SLISTIN t modif SLIST.CO t wor wit you computer o yo ma compil SLIS t wor o you system assumin tha you cop o Turb Pasca ha alread bee installe fo th syste o whic yo wil b runnin SLIST Again yo nee onl perfor th procedure define i sectio 1.3.1 o sectio 1.3.2 bu no both Th firs choic i th simplest s yo ma ski 1.3. unles yo wan t compil SLIS fo som reason Additionally yo mus ski ste 1.3. i yo hav no purchase th Turb Toolbo packag fro Borlan International SLIST 2.00A  Reference Manual Page 5 1 - Installation 1.3.1 - Using SLISTINS ---------------------- Thi installatio progra wa create usin GINSԠ (Genera Installatio Program) whic i par o th Turb Toolbo package Yo nee no hav cop o Turb Toolbo t ru SLISTINS however T ru SLISTINS yo wil nee SLISTINS.COM SLISTINS.DTA an SLISTINS.MSǠ o you driv alon wit SLIST.COM T execut th program simpl typ i SLISTIN a th CP/ prompt an the respon t th prompt tha follow I yo hav an question o problems refe t th sectio o you Turb Pasca Referenc Manua tha describe th us o TINS t instal Turb Pascal SLISTINӠ work similarl t TINST bu onl perform Scree Installation wit n installatio o editin commands. Yo shoul b sur yo hav back-u cop o SLIST.CO͠ befor usin SLISTINS sinc thi wil modif SLIST.COM I yo encounte an problem durin th installation i ma b convenien t b abl t star ove wit fres copy. Afte usin SLISTIN successfully yo shoul b abl t mov th thre SLISTINӠ file t back-u disk sinc the ar neede onl fo installation. 1.3.2 - Compiling SLIST ----------------------- I yo compil SLISԠ wit cop o Turb Pasca alread installe fo you computer the yo nee no us SLISTINӠ a describe i sectio 1.3.1 Yo wil nee t hav cop o Turb Toolbox however Thi packag i availabl fro Borlan International. I orde t compil SLIST yo wil nee t hav TURBO.COM an it relate files o th drive alon wit al th file fro th SLIS distributio dis havin extension CON FNC PRC TYP an VAR. O th drive yo shoul hav th file fro th distributio dis havin extension .PA an .INC plu th SORT.BO fil fro th Turb Toolbo package. I orde t compil SLIST yo wil nee t execut TURBO an the tak th followin steps. Ente a L an the B t lo i you drive. Ente a M an the SLIST t ente th nam o th Mai progra t b compiled. SLIST 2.00A Reference Manual Page 6 1 - Installation Ente a O an the C t caus SLIS t b compile t disk instea o t memor (th progra i to larg t b compile t memory). Ente à command t caus SLISԠ t b compiled Th compilatio wil tak som time. Ente command t qui Turb Pascal Thi i important sinc th SLIST.CO fil ma no b close properly an ma b unusable i yo exi fro Turb Pasca i som othe way. Yo shoul no hav o you driv cop o SLIST.CO tha wil wor렠 o you computer afte performin砠 th堠 remainin installatio procedures 1.4 - Installation Step 2 - Editing SYSTEM.DAT ---------------------------------------------- On堠 o th file containe o you distributio dis i SYSTEM.DAT Thi fil contain dat tha inform SLIS abou th particula characteristic o you termina an printer Thi fil come containin value suitabl fo us wit a Osborn computer wit WordSta arro key installed an fo Sta Micronic Gemin 1 printer I you compute installatio differ fro this the yo shoul procee wit th res o thi  sectio t mak thi fil suitabl fo us wit you hardware. Befor proceedin an farther yo ma wis t mak temporar cop o th SYSTEM.DA file s tha yo ma easil restor i t it origina conditio i yo encounte an problem whil modifyin it. Thi fil ma b edite usin Turb Pascal o an wor processin packag capabl o editin non-documen fil tha i no t contai an specia formattin characters. Eac lin i thi fil represent strin o ASCIɠ character tha wil perfor certai functio whe sen t you terminal o you printer. Eac lin i thi fil mus contai zer o mor occurrence o 1- t 3-digi decima numbers eac numbe i th rang fro t 255 Eac numbe represent th decima equivalen o singl ASCI character Eac numbe shoul b separate fro other o  th sam lin b singl space. Not that i certai optio i no availabl o you system yo ma disabl i b removin al number fro th line Followin i descriptio o al line i th file Th lin number liste belo ar relativ t th beginnin o th file and do not actually appear in the file itself. SLIST 2.00A Reference Manual Page 7 1 - Installation Line: 1 Original Value: 07 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t beep. Line: 2 Original Value: 27 041 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t begi displayin dim o low-intensit characters. Line: 3 Original Value: 27 040 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t begi displayin bright o high-intensit characters. Line: 4 Original Value: 27 103 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t begi displayin graphic characters. Line: 5 Original Value: 27 109 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t sto underlinin characters. Line: 6 Original Value: 27 071 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t sto displayin graphic characters. Line: 7 Original Value: 27 108 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t star underlinin characters. Line: 8 Original Value: 08 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t mov th curso lef on position. Line: 9 Original Value: 12 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t mov th curso righ on position. SLIST 2.00A Reference Manual Page 8 1 - Installation Line: 10 Original Value: 11 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t mov th curso u on line. Line: 11 Original Value: 10 Maximum Number of Characters: 2 Function Thi valu shoul caus you termina t mov th curso dow one line. Line: 12 Original Value: 4 Maximum Number of Characters: 2 Function Thi valu doe no represen a ASCI character bu shoul indicat th numbe o line remainin i th file.  Line: 13 Original Value: 040 27 87 1 Maximum Number of Numbers: 6 Function Thi line an th remainin one o th file tel SLISԠ ho t chang th numbe o character tha ma b printe o singl lin o you printer The shoul b arrange i ascendin orde b lin length. Th firs numbe o eac o thes line doe no represen a ASCIɠ character bu instea indicate th numbe o character tha ca b printe o on lin o you printer afte sendin t i th strin o character represente b th remainin number o th line. Line: 14 Original Value: 080 27 66 1 Maximum Number of Numbers: 6 Function Same as Line 13. Line: 15 Original Value: 096 27 66 2 Maximum Number of Numbers: 6 Function Same as Line 13. Line: 16 Original Value: 136 27 66 3 Maximum Number of Numbers: 6 Function Same as Line 13. Th edite versio o SYSTEM.DA shoul b locate o th sam dis fro whic yo wil b executin SLIST. SLIST 2.00A Reference Manual Page 9 1 - Installation 1.5 - Installation Step 3 ------------------------- Th dis fro whic yo wis t execut SLIS shoul no contai th followin files. SLIS .CO (Modified or created in step 1) SLISTCTL.DAT SLISTRSV.DAT SYSTEM .DAT (Modified in step 2) Thi dis shoul als contai cop o you operatin system o th disk' syste tracks. Not tha thes file ma b place o th sam dis a th on fro whic yo execut TURB Pascal fo maximu convenience SLIS ma the b execute fro withi TURB b usin th eXecut comman fro th mai menu.  SLIST 2.00A Reference Manual Page 10 2 - Operation 2.1 - Executing SLIST --------------------- Th dis containin SLIST.COM an th othe file neede a execution-time shoul b place i th drive SLIS ca the b execute b keyin SLIS a th operatin syste prompt an the pressin ENTER. I desired th comman SLIS ca b followe b space an the fil name an thi fil nam wil b use a th first o only fil t b printe b SLIST I fil nam i specifie i thi way the th initia scree describe i th nex sectio wil b bypasse unti afte th firs fil i printed. 2.2 - Specifying The Input File Name ------------------------------------ Followin i th firs scree yo wil se whe executin SLIST providin yo di no specif fil nam whe enterin th SLIS command a describe i th previou section. SLIST Turbo Pascal Source Lister A:CENTER.FNC Enter File Name or RETURN to Exit: A:CENTER .FNC ************************************************* * SLIST Version 2.00A - CP/M-80, Z80 * * * * (C) Copyright 1985, Herb Bowie. * * All commercial rights reserved. This * * program is licensed for non-commercial use. *  * * * Have you paid for this program yet? If not, * * and you find it useful, then may I suggest * * that you make a small donation to its author? * * Something like $10 would be wonderful. You * * may send it to: * * Herb Bowie * * P.O. Box 4724 * * Culver City, CA 90231-4724 * *************************************************  Th curso wil b positione a th thir lin o thi screen a th beginnin o th fil nam field Yo ma ente th dis drive th fil name an th extension o th nex fil yo wis t print Yo ma us th lef an righ curso contro key t correc an error mad i specifyin th fil name Afte enterin th fil name an pressin RETURN SLISԠ wil searc fo th fil yo specified I i ca no b found the SLISԠ wil retur yo t th sam screen wit messag a th SLIST 2.00A Reference Manual Page 11 2 - Operation followin messag centere a th botto o th screen. *** FILE DOES NOT EXIST *** At this point, you can enter a new file name. I yo pres RETUR withou makin an change t th fil nam alread displaye o th screen (eithe befor o afte enterin a incorrec fil name) the SLIS wil retur yo t th operatin system Afte printin file SLIS wil continu t retur yo t thi screen unti yo ceas enterin ne fil names. Not tha ther i n wa t prin th sam fil twic i row Yo mus eithe exi SLIST o prin anothe file i between. Th fil t b printe ma b Turb Pasca program o progra fragment o an typ o tex file fo tha matte (althoug yo ma wel hav bette way o printin ou othe type o tex files) SLIST 2.00A Reference Manual Page 12 2 - Operation 2.3 - SLIST Control Codes ------------------------- Th executio o SLIS ma b controlle b variet o two- characte contro codes 2.3.1 - Means Of Specifying --------------------------- Man o thes contro code ma b specifie i an o th followin ways. 1) Th initia default ma b varie b modifyin th content o SLISTCTL.DAT Se sectio fo mor informatio o ho t alte thi file. 2) Th curren contro cod setting ma b modifie o th nex screen befor beginnin t prin an file. 3) Th contro code ma b embedde i th fil t b printed I thi case eac contro cod mus b precede b perio ('.') optionall follwe b spac an value wher appropriate an enclose b vali commen delimiter ('{ an '}' o '(* an '*)') Th perio mus immediatel follo th firs commen delimiter withou an intervenin spaces a i th followin example. (*.PA *) Th value i any shoul b separate fro th cod itsel b on o mor spaces an shoul no b enclose i an quotatio marks 2.3.2 - Definition Of Codes --------------------------- Followin i lis o al th vali contro code recognize b SLIST Thes ar i ascendin orde b Contro Code Th followin informatio i give fo eac Contro Code. Control Code: The two-character control code. Name Th nam o th contro code o whic th cod itsel i usuall a abbreviation Value Type: String, Boolean (Y/N), or Integer. Max Length Th maximu lengt o th value i characters. Default: The initial default, as distributed. Screen A indicatio o whethe valu fo th Cod ma b specifie o th nex scree described befor beginnin t prin file Embedded A indicatio o whethe th Cod SLIST 2.00A Reference Manual Page 13 2 - Operation ma b embedde i file withi comment. Description complet descriptio o栠 th functioning of the control code. Control Code: BE Name: Print Begin/End Count? Value Type: Boolean (Y/N) Max. Length: 1 Default: Y Screen? Yes Embedded? No Description: 'Y request SLIS t prin runnin coun o th numbe o END currentl neede t clos outstandin BEGI o CASŠ statements I requested  coun i printe a th beginnin o eac lin o th sourc listing afte th commen indicator i requested an befor th sequenc number i requested Th coun indicate th conditio a o th en o th followin lin o code I a 'N i specified the n coun wil b printed an mor spac wil b availabl o eac lin fo printin th sourc cod itself. Control Code: BM Name: Bottom Margin Value Type: Integer Max. Length: 2 Default: 6 Screen? Yes Embedded? Yes Description: Thi i th numbe o line t b printe a th botto o eac pag afte th detai listin (eithe sourc code o th sorte cross-reference) Thi valu include on lin fo th footing an th Footin Margin Assumin tha footin i t b printed the thi number les one les th valu o th Footin Margin wil b th actua numbe o blan line t b printe a th botto o eac page. Control Code: CC Name: Print Control Codes? Value Type: Boolean (Y/N) Max. Length: 1 Default: Y Screen? Yes Embedded? Yes Description: 'Y request SLIS t prin Contro Code tha ar embedde i th fil bein printed A 'N request tha th line containin thes Contro Code no appea i th sourc listing. SLIST 2.00A Reference Manual Page 14 2 - Operation Control Code: CM Name: Print Comment Flag? Value Type: Boolean (Y/N) Max. Length: 1 Default: Y Screen? Yes Embedded? No Description: 'Y request SLIS t prin a asteris a th  beginnin o eac lin tha i par o runnin comment begu o on lin an ende o another Whe requested thi colum wil prin a th beginnin o eac line jus afte th Pag Offset I a 'N i specified the n asterisk wil b printed an mor spac wil b availabl fo printin th actua sourc code Control Code: CP Name: Conditional Page Break Value Type: Integer Max. Length: 2 Default: None. Screen? No Embedded? Yes Description: Thi Contro Cod wil caus pag brea i ther ar no a leas a man line lef o th curren page a th numbe specifie a th valu fo th Contro Code Thi Cod ca b use t kee numbe o line togethe o on page s tha the wil no b spli betwee tw pages. Control Code: FF Name:  Form Feeds? Value Type: Boolean (Y/N) Max. Length: 1 Default: Y Screen? Yes Embedded? No Description: 'Y request SLIS t us ASCI for feed t ski t th to o ne page A 'N request tha SLIS simpl writ blan line unti reachin th to o ne page. Control Code: FM Name: Footing Margin Value Type: Integer Max. Length: 2 Default: 2 Screen? Yes Embedded? Yes Description: Thi i th numbe o blan line t b lef betwee th las possibl detai lin o pag (eithe sourc code o th sorte cross-reference) an th footin line. SLIST 2.00A Reference Manual Page 15 2 - Operation Control Code: FO Name: Footing Value Type: String Max. Length: 80 Default: None. Screen? Yes Embedded? Yes Description: Thi i strin o character tha wil b printe a th botto o eac pag o th outpu listing Certai character foun withi thi strin hav specia meaning backslas ('\' divide on par o th lin fro another wit th firs par bein left-justified th nex par bein centered an th las par bein right-justified An par o th lin ma b omitted Centerin an righ justificatio take plac withi th lengt define b th lates L Contro Code les th Pag Offse establishe b th lates P Contro Code. A "at sig ('@' wil b replace befor printin b th nam o th fil bein printed poun sig ('#' wil b replace b th curren pag number Control Code: HE Name: Heading Value Type: String Max. Length: 80 Default: \@\Page # Screen? Yes Embedded? Yes Description: Thi i strin o character tha wil b printe a th to o eac pag o th outpu listing Certai character foun withi thi strin hav specia meaning backslas ('\' divide on par o th lin fro another wit th firs par bein left-justified th nex par bein centered an th las par bein right-justified An par o th lin ma b omitted Centerin an righ justificatio take plac withi th lengt define b th lates L Contro Code les th Pag Offse establishe b th las P Contro Code. A "at sig ('@' wil b replace befor printin b th nam o th fil bein printed poun sig ('#' wil b replace b th curren pag number  Control Code: HM Name: Heading Margin Value Type: Integer Max. Length: 2 Default: 2 Screen? Yes Embedded? Yes Description: Thi i th numbe o blan line t b lef betwee th heading an th firs detai lin (eithe sourc code o th sorte cross-reference). SLIST 2.00A Reference Manual Page 16 2 - Operation Control Code: IC Name: Include Print Column Value Type: Integer Max. Length: 2 Default: 0 Screen? Yes Embedded? Yes Description: Thi i one- o two-digi numbe tha define unde wha condition include file ar t b printed An includ directiv ($I whos leftmos commen indicato (eithe th lef parenthesis '(' o th lef bracket '{' begin i  th colum numbe indicated o i colum t th righ o that wil b printed whil an other wil hav th directiv itsel printed bu no th include file A I valu o o 1 then wil caus al include file t b printed whil valu o 9 wil caus non t b printed B choosin valu somewher withi thi range an indentin hi includ directive s tha one beginnin farthe t th righ ar likel t b o mor interest th use ma caus th include file t b printe selectively. Kee i min tha a include fil wil b include i th sorte cross-referenc i an onl i i i printe i th sourc listing s th I Contro Cod effectivel control inclusio i th cross-referenc a well. Control Code: L- Name: Line Printing Off Value Type: None. Max. Length: n/a  Default: None. Screen? No Embedded? Yes Description: Thi Contro Cod ca b use t suppres th printin o followin line o sourc code N line wil b printe unti th occurrenc o a L Contro Code Th line no printe wil stil b processe fo th purpos o creatin th sorte cross-reference i one was requested. Control Code: L+ Name: Line Printing On Value Type: None. Max. Length: n/a Default: None. Screen? No Embedded? Yes Description: Thi Contro Cod ca b use t reques th printin o followin line o sourc code afte requestin tha printin b suppresse wit th L- Code. SLIST 2.00A Reference Manual Page 17 2 - Operation Control Code: LL Name: Line Length Value Type: Integer Max. Length: 3 Default: 80 Screen? Yes Embedded? No Description: Thi i th maximu numbe o character tha ma b printe o eac line includin th lef margi (Pag Offset) I yo hav printe capabl o changin thi number the SLIS wil sen th appropriat contro code t you printe t caus i t prin lin a leas a lon a th Lin Lengt yo requested assumin tha yo correctl specifie thes contro code durin installatio o SLIST. I lin t b printe i longe tha th Lin Lengt requested the SLIS wil wra th en o th lin aroun t th nex line SLISԠ wil attemp t brea th lin wher spac appear anyway an wil the inden th beginnin o th lin remainde tw column beyon th firs non-blan t appea o th lin above al t mak th resul mor readable Thes lin remainders whe the appear wil no b precede o th sam lin b eithe Commen Indicator begin/en count o sequenc number sinc th one o th lin abov pertai equall t th lin remainder. Control Code: PA Name: Page Break Value Type: None. Max. Length: N/A Default: None. Screen? No Embedded? Yes Description: Thi Contro Cod wil caus th nex detai lin t b printe o ne page. Control Code: PI Name: Printer Initialization Value Type: String Max. Length: 80 Default: None. Screen? Yes Embedded? No Description: Thi i strin o character tha wil b sen t th printe befor beginnin t prin eac requeste file Th strin t b sen t th printe shoul b specifie i he paire notation wher eac characte i th strin i he digi fro t F an eac pai o character i th specifie strin represent on byt t b sen t th printer. SLIST 2.00A Reference Manual Page 18 2 - Operation Control Code: PL Name: Page Length Value Type: Integer Max. Length: 3 Default: 66 Screen? Yes Embedded? Yes Description: Thi i th tota numbe o line t b printe o eac page includin to an botto margins Thi shoul b equa t th lengt o eac pag o paper divide b th heigh o eac line Th Pag Lengt shoul indicat th lengt o th for bein use i th printer irrespectiv o th numbe o line yo wis t hav printe o eac form. Control Code: PO Name: Page Offset Value Type: Integer Max. Length: 2 Default: 8 Screen? Yes Embedded? Yes Description: Thi numbe specifie th siz o th lef margin Thi numbe o blank wil b lef a th beginnin o eac lin printed befor an commen indicators begin/en counts sequenc numbers o th sourc cod itself. Control Code: PT Name: Printer Termination Value Type: String Max. Length: 80 Default: None. Screen? Yes Embedded? Yes Description: Thi i strin o character tha wil b sen t th printe afte printin eac requeste file Th strin t b sen t th printe shoul b specifie i he paire notation wher eac characte i th strin i he digi fro t F an eac pai o character i th specifie strin represent on byt t b sen t th printer. Control Code: SQ Name: Print Sequence Numbers? Value Type: Boolean (Y/N) Max. Length: 1 Default: Y Screen? Yes Embedded? Yes Description: 'Y request SLIS t assig uniqu sequenc numbe t eac lin o sourc cod t b printed an t prin thos sequenc number afte th begin/en count i requested an jus befor th sourc cod itself Th firs sequenc numbe assigne wil b 1 an the wil b incremente b fo eac succeedin line includin thos i include files A 'N SLIST 2.00A Reference Manual Page 19 2 - Operation request tha thes sequenc number no b printed leavin mor roo o eac lin t prin sourc code. Control Code: SX Name: Sorted Cross-Reference Value Type: String Max. Length: 2 Default: NA Screen? Yes Embedded? No Description: Thi fiel i reall pai o one-characte indicators Th characte i th firs positio indicate th typ o cross-referenc desired valu o 'N her indicate tha n cross-referenc i desire (thi i th default i thi valu shoul b omitted) valu o 'U indicate tha user- define identifier onl ar t b include i th cross- reference A 'A' o th othe hand indicate tha al identifiers bot蠠 user-define an standar Turb Pasca identifiers ar t b included A 'R request restar o th sorte cross-reference withou producin anothe listin o th program o progra fragment itself Thi ca b usefu whe th cross-referenc sor fail t complete usuall du t lac o sor wor space Whe restarting th cross-referenc fil SXREF.DAԠ mus b presen o th driv specifie wit th secon positio o thi value. Th secon positio o thi valu shoul contai th identifie o th driv tha i t contai th cross-referenc extrac file I omitted th defaul i th 'A drive driv shoul b selecte tha wil hav enoug spac t hol th extrac file Roughl 1. wil b neede fo ever 10 line o sourc cod printed whe usin th 'U option. Spac wil als b neede fo sor wor space SLIS wil giv yo chanc t replac you dis containin SLIS wit sor wor disk whe i i needed. Whe requested th sorte cross-referenc wil b printe afte you sourc listing startin o ne page. File include b mean o th $ directiv wil als b include i th cross-reference i the ar printe (se th Ià Contro Code) SLIST 2.00A Reference Manual Page 20 2 - Operation Control Code: TM Name: Top Margin Value Type: Integer Max. Length: 2 Default: 5 Screen? Yes Embedded? Yes Description: Thi i th numbe o line t b printe a th to o eac pag befor beginnin th detai listin (eithe sourc code o th sorte cross-reference) Thi valu include on lin fo th heading an th Headin Margin Assumin tha headin i t b printed the thi number les one les th valu o th Headin Margin wil b th actua numbe o blan line t b printe a th to o eac page. SLIST 2.00A Reference Manual Page 21 2 - Operation 2.4 - Initial Control Code Values --------------------------------- Afte specifyin th nam o th inpu fil t b processed th use wil se th followin screen. SLIST Turbo Pascal Source Lister A:CENTER.FNC PI - Printer Initialization = PT - Printer Termination = 1B40 HE - Heading = \@\Page # FO - Footing = SX - Sorted Cross-reference = UA  FF - Form Feeds? = Y BE - Print Begin/End count? = Y CM - Print Comment count? = Y CC - Print Control Codes? = Y SQ - Print Sequence Numbers? = Y IC - Include Print Column = 0 PL - Page Length = 66 LL - Line Length = 96 PO - Page Offset = 8 MT - Top Margin = 5 HM - Heading Margin = 2 MB - Bottom Margin = 6 FM - Footing Margin = 2 Enter Code to modify, or blank to end: Thi scree list al th SLIS Contro Code whos initia value ma b altere befor beginnin t prin ne file Eac cod i followe b it name an it curren value Thi valu wil b th defaul foun i SLISTCTL.DA fo th first o only fil printed Fo subsequen files i wil b th curren valu a modifie las o thi screen o a las se b contro cod embedde i th fil printed I orde t chang an o thes values th use mus firs typ  i th two-lette cod an pres RETURN SLIS wil the displa th curren valu a th botto o th screen an allo th use t typ ove i wit anothe value Afte pressin RETUR again th use wil agai se th scree a i appear abov bu wit hi ne valu appearin o th appropriat line A thi point h ma ente anothe cod whos valu h wishe t change o h ma simpl pres RETUR t leav thi scree an continu wit th next SLIST 2.00A Reference Manual Page 22 2 - Operation 2.5 - Printing The Source Listing --------------------------------- Afte changin an initia Contro Cod value yo wis to yo wil se th followin screen. SLIST Turbo Pascal Source Lister A:CENTER.FNC  Make Sure Printer Is Ready. Press any key to continue... Afte makin sur you printe i ready yo ma pres an ke t caus SLISԠ t begi printin you sourc listing Th for shoul initiall b a th to o th page sinc SLIS wil no issu a initia For Feed. Afte pressin an key yo wil se scree lik th following. SLIST Turbo Pascal Source Lister A:CENTER.FNC Printing... 44 A:CENTER.FNC Th numbe las displaye indicate th numbe o line printe s far Th fil nam t th righ indicate th curren fil bein printed eithe th specifie fil o fil include b th specifie file 2.6 - Printing The Cross-Reference ---------------------------------- I yo requeste sorte cross-reference the yo wil se th followin scree afte th sourc listin ha bee completel printed. SLIST 2.00A Reference Manual Page 23 2 - Operation SLIST Turbo Pascal Source Lister A:CENTER.FNC  Insert a sort work disk in the SLIST drive, if extra sort work space is needed. Press any key to continue... 48 Records released to Sort Sorting file now... 48 Records returned from Sort  Remove sort work disk now, and replace SLIST disk, if sort work disk inserted earlier. Press any key to continue... Befor beginnin th sort th firs fou line wil appea o th scree b themselves A thi poin yo may i yo wish replac th dis containin SLIS (a lon a thi i no th sam dis yo specifie t contai th cross-referenc extrac file) wit anothe dis containin mor fre space t b use a sor wor area. Afte placin sor wor dis i th drive i desired an the pressin an key th sor wil begin  Th nex lin wil displa runnin coun o th numbe o extrac record release t th sort unti th inpu phas ha bee completed Th nex lin wil the b displayed. Afte al record hav bee sorted th nex lin wil appear displayin runnin coun o th numbe o record returne fro th sort unti al record hav bee returned Durin thi phas o th sort th sorte cross-referenc wil b printed. Finally afte th sorte cross-referenc ha bee completed th las thre line displaye o th scree abov wil appear A thi point i yo replace th SLIS dis wit sor wor dis earlier yo ma remov th sor wor dis an replac i wit th SLIS disk. I an error wer encountere durin th sort the messag lik th followin wil b displayed. *** Unsuccessful Sort: 10 ***  Th numeri portio o th messag indicate th reaso fo th error Th followin number ar possible. 03 - Not enough memory for sorting. 0 - Mor tha 32,76 record sorted. SLIST 2.00A Reference Manual Page 24 2 - Operation 1 - No enoug spac fo sorting o ba disk. 11 - Bad disk. 12 - Disk directory error. I a erro occur du t ba sor wor disk the th sorte cross-referenc ma b restarte b usin th 'R optio i th firs positio o th S contro code an usin differen sor wor disk. Th sorte cross-referenc listin itsel wil contai a entr fo ever selecte identifie include i th sourc cod input Thes entrie wil b sorte i ascendin alpha-numeri sequence Th identifie nam wil appea first i th fa lef colum o th page Th nam wil b followe b enoug period t exten t th firs sequenc numbe entry Followin th nam an th period wil appea on sequenc numbe fo th definitio o th identifier an on fo eac referenc t th identifier i ascendin numerica sequence I necessary th sequenc number wil b extende t additiona lines. SLIST 2.00A Reference Manual Page 25 3 - Customizing SLIST SLISԠ ca b customize t som exten b modifyin th fil SLISTCTL.DAT Thi fil contain th initia defaul value fo al Contro Code tha ca b modifie befor beginnin t prin eac file. Thi fil i norma ASCI tex file I ma b modifie b usin tex edito suc a WordSta i th non-documen mode o b usin th Turb Pasca editor Fiv line appea i th fil fo eac Contro Code Th content o eac lin shoul b left-justified wit n trailin spaces Lin contain th two-characte Contro Code Thi shoul no b modified. Lin contain th Contro Cod name Thi ma b modifie b th user i desired bu i no recommended. Lin contain th Contro Cod type 'S fo string 'I fo integer o 'B fo boolean Thi lin shoul no b modified. Lin contain th maximu length i characters o th contro cod value Thi lin shoul no b modified. Lin contain th initia defaul valu fo th Contro Code Thi lin ma b freel modifie b th user t se th default t th value mos commonl use b him boolea cod shoul contai 'Y' fo 'Yes o 'True' o a 'N' fo 'No o 'False' A intege valu shoul contai serie o digits an strin valu shoul contai serie o characters withou an enclosin quotatio marks SLIST 2.00A Reference Manual Page 26 Margin I 2 6 FM Footing Margin I 2 2 URBOSAVDOC HEKLISTCRC PI Printer Initialization S 80 PT Printer Termination S 80 HE Heading S 80 \@\Page # FO Footing S 80 SX Sorted Cross-reference S 2 NA FF Form Feeds? B 1 Y BE Print Begin/End count? B 1 Y CM Print Comment flag? B 1 Y CC Print Control Codes? B 1 Y SQ Print Sequence Numbers? B 1 Y IC Include Print Column I 2 0 PL Page Length I 3 66 LL Line Length I 3 80 PO Page Offset I 2 8 MT Top Margin I 2 5 HM Heading Margin I 2 2 MB Bottom Margin I 2 6 FM Footing Margin I 2 2 URBOSAVDOC HEKLISTCRC ͫCopyright (C) 1984 BORLAND IncA Visual 200912/920/92PInitExitY,000) vHomeLnsMelxOL3igh4ow~7#~=% o&ͦoͦܐԩͣ}!!"8~#(}:$= +*!Z!*B!!:(=2!Z: <2!!!:O::O:!*B! !45(!.+/ 0y0( d!kZ!{Z͈͈o&  :(y ͠|( *"x2y( >28!?"9!!>2 :D]SXN]D [ (!e}̈́A8Q0G: x@!\w# (   yV. V!h6# (*(.(!8}(*(̈́w#>?> w#a{ |͒}͛Ɛ'@'7||}>"C"6# ""͐ͩ*B"[R5*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#E͊w}8uRB0 >R@RR!+ͨ z R!+ͨ z <!+ͨ z <!+ͨ z <!#ͨ z <!+ͨ z T]KB!z> S>))0 = |JJDMgo>jB0 7?= H\<z5+)+<z {0Gɯgo||H}||/g}/o#}o&K[xAJSJDM!b"!6J"DM'ͬͬdͬ ͬ} wͦWͧ _}8(8J`9{T]=o`9y w >uJ u` }>(; xQ }} ˸T}ٕ(0D=C ,= ( [ 0%D , 7 ͏ ?(8u x O - ; 8˸x X ,-xG}; }م 9; .>#n0[ D = - nx P ,-(-˸G,-; }ٕ? 9.>͏ 8u ?= u+-(>O 0u O 8͏ ?x P , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨ xx(ͼ ?}ٽÏ }ց; <(; 7D = |٤g{٣_z٢Wy١Ox٠GD u J }x>uu}ƀ/ƀo; -J }0W-J W,}l˸ͨ 8 ; ` x( -ͨ 8J -ͨ 8,J }l8;*!` ! >u` ` u--- J ,,,-xGg?+2n*8t z~,->uxua}.; OJ , ; !U >,k- o&0%,` }g; }؉}颋.:}8c~I$I~L*kٷx˸; }0G,͙<},-(-J ! >0 a` o8 Oþ >um.`1pF,t6|!wS<.z}[|%FXc~ur1}Oٯx(<˸ͨ 8; !~Jͨ 0O!><ͨ 8 =  7 <` O ; 7 0 W-J OT0 j oD,:j !I}袋.}8c~I$I~L!>u` ` 77 ` = O nf^VNF!DLT\I!!53!r1!\!> x #-= o˸xO(- }(x>8(C ,C `iM!>u|; |J>| )=|(DMbo˸ͦ88ͦx(0 8> Mx(>-Ͳ{(ay(Ͱͦ \z(>.Ͳ (Ͱ ~ͦ{>EͲ>+|(|Dg>-Ͳ|/ 0:p# ~# +>0w#,-  60#J˸}րogM| .(C = ~> x0w#xG%P %P ZJDM%P = _~65i+~hìx-Sx9?+{Η@}|C C gZJDM0D ,7}o˸  #yO!@9i&   # w# /w# w#!9! E9!!9~(+F͊!"9!(#>2*Ͳ"|>" :( ͆ *6#w*6#6 !\$![ (̈́( #:~CONTRMKBDLSTAUXUSR>2$*#~ Ͷ$*:> >w###6  #6++p>2S-$Ͷ:*6###ww#w$w#w: ##N#F*B> w#w#[s#r>2S$Ͷ$*6 #-Nw#Fwq#p#6#w#w#w* :( ͒: *^ F* < >26"~͟*-w#ww#͟"~ <@*Ͳ!\  <ʮ!\$> >2*|>! * \$\<(!: [1Á\!(f"> 2:!<"F( #~#6e>!["N>!~8>O6*"w (=(&("( :(N 8y(~#x+% (6*#~[*#~ *~(h#"b=  8 J= B== ͯ}8= ͵}/ͭ !*###~-_~(4Q6*>2>*##w:>*##~*#~(E[ ( ( ( !][ ( ( ((w#(6!]~-#8~>7  [>OkͼMs #rkͼpX á[ [ (( #w(q*#~[ (  *##~6͜O$*#~(08ʦ=ʦ==ʩ=ʬò+###~-_q46͡> *:4^q}Ò*|(M|( M6-#͐ͦ[R8 (G> ͒C~͒#*ͦC!h !lTRUEFALSEͦ!9^#(~#(G~͒#> ͒> Ò "F![(#RR0*4#4> RR *4 #4(>>2$*V(/˖:(#~+ x y2!͵( =( X:(R*:(###~-_-͌X> :("͟"*^˞*V˖0 SRѷR8A* N#F#s#r$ 0})jS\*###w* N#FB ͟r+s> !T]>)j)0 0= UR!#U*^#V#N#F#^#V>">!2DM"~x(L* :O(o:" C}=( ?*-N#Fp+qq#p! * F+N+++V+^Bq#p>>> SRѷR* s#r$ s#r"S"! N#FB(^x * 6#[<(H*! Kq#p##K[! *! 4 #4! x *$ *>w""{_!"*nf}(HR0nf" ^VMDnfutqp*s#r*s#r"* 5KB!>u~#fo{_"*R0RnfR0KqputsrNF( ^VNF^V*SutKqp R*R(~w~wnf ut"6# * *!""*NFy(* "*B0Cnf* [R*"*RS[s#r^#VS>O"w2x2!"" @*>2"!"""!\Ͳ*: !~6go(\R*s#r_2x( s x(T]DMR0 -a%}̈́o*!~6o&͠|ͣ}%^C User break1:% I/O% Run-time% error ͒%, PC=[R"͍% Program aborted*1!͍!0[ͲZ SLISTINS.MSG SLISTINS.DTA SLIST.COMCOM"|*|"z*z!" !  !t͡!t"r*r"p!*p m5zʲ "n*p*n*p*nn&(s*n#Ä P!Ͳ5!NE R͐Ŕ*** FATAL ERROR: ! !q͐""**ͯE%!*"+!*"*""**͛ET!*"Z!*"*" ", * ͥEʖ!** ͥ!}2Ý!!}2*&" * m!͛* !n&! N}oE!* !!ͽë!* * mn&! NE'"* !* !n&+s!D*"6"8!;*6*b!;*8*gb"2"4!;*2*b!;*4*kb"/*/*"-*-!ԟ!)^#VN*-!ԟ!)^#VN}o*-!ԟ!)^#VN}o}21*1&")"+*+*"'!}2&!ԟ*&&)^#V*'aEM#*&&!}2&#!ڟ*&&)^#V*+***)s#r" """$*$͑"}oEʏ$*$*"!}2*"*"* *"!ԟ*&)^#V*N!ԟ*&)^#V*N}oE$*&!}2#!џ*&n&EP$!ڟ*&)^#V!ԟ*&)^#V+"!ڟ*&)^#V*^"!ԟ*&)*s#r!џ*&!s""**"!}2!ԟ*&)^#V*aE$*&!}2ñ$**"!}2 !ԟ* &)^#V*aE$%* &!}2 $**"**"!ڟ*&)^#V**" !ڟ* &)^#V**" * *s* * * * *s* * !џ*&!s!џ* &!s""*** *** *\ * &}2*&*!͛EY&!!+)!s#r!!+)*!Rs#r!"_&!"*!͛Eʵ(!*+)^#V"}!*+)^#V"{*!R"*}"y*{"w*y*w!"**y*w{#*!m"*m*u* *y*w*{#*y!q"*q*u%E='*y!"y*y*w*{#*y!q"'*w*y*{#*w!o"*u*o%Eʓ'*w!R"w*w*y*{#*w!o"W'*y*w͇E'*y*waEʾ'*y*w͐$*y!"y*w!R"w*y*w͛E&*w*}R*{*yRͯEX(*y*{ͯEO(*!"!*+)*ys#r!*+)*{s#r*w"{â(*}*wͯEʜ(*!"!*+)*}s#r!*+)*ws#r*y"}*}*{tEʢ&_&*!N*!t}oEh)*!NE#)!; $$$SOWRK.$$$=!;yb!}2:!!+"!!+"!ڟ!)^#V!ԟ!)^#V+"!ԟ!)!ԟ!)^#V!s#r*!͛Eʁ)!"Ç)*"!ڟ*)^#V**"*** *!"*!"**NE)!"*!"*k*!R*}/o|/g#{#*k!"*** *k!"k*k*t}2""""""!͡!("!)"!4*"!"!*ͼ *ͼ !͡!! !! ͥE +!@! !͡!! ͧ!"*!͛EW+!*!"*!"**"*!͇Eʌ+!",!ڟ!)*^!Eʩ+!"!ڟ!)*^!E+*!"!ڟ!)*^!E+*!"!s*^!E ,*!"!u*^!E',*!"*!aE@,!",!"!}2:!"!"!"!ԟ!)!s#r!ԟ!)!s#r!ԟ!)!s#r*\ !џ!!s!џ!!s!џ!!s&!"k*\ *:&E,!;\b*!tE-!u*:*!R"*!tED-!s*:*!R"*!tEt-!ڟ!)*:*!R"*!tEʤ-!ڟ!)*:*!R"*!tE-!ڟ!)*:*!R"**\ *\ *\ *&}2*&"*"*0!s#r*2!s}2""*"**0^#VaEL/*2n&Eʡ.**0^#Vb**3!gb*2!s**U!R͛E/*&E.Seek read errorͳ /**U͛E /Seek write errorͳ **b!Ͳ85 R4!Ͳ85R4!Ͳ85 R 5!Ͳ85R'5!Ͳ85*4&e.!Ͳ*4&!͛Ee5! (+128)!Ͳ! !5Ͳ!5 8* m*tEʭ5!}2R!bô5!}2*&6! !!͞*!N*!t}o*!͇}o}2*&*&e.!Ͳ*&Rb!8!b! *&e.!Ͳ*&Q! a! a! m!N}oͽ5}o}oE6*&Q! a! aE6!!!!n&+sͽ5E7* *e.*Ͳ*&! aE7*&R! b!8!bn7R!b! m!Ez_7"R!! !b*+57!8!b́5*&Q!$a!0!9k}o}oE6*&! aE8R*&4!q! b* *&e.*Ͳ́5E7! }28!8!bÜ7""*Ͳ!}2!8!b*&(Q!-a!A!ZkEi8*&(}2ß8*&(Q!0!9k!$aEʓ8ͺ5Ö8͜7R͐b*&ü9*+"*!NE8!"R!*b!$k !k !$ ! ͽ}2 * b* A}oEf9* M! !NE59R!<b* 8!$ͳb* M!R*aEc9-8* b-}oEʻ9* M! !NEʦ9R!>b-* [!$bs9"P!Ͳ" ! R!q! b!", !ͼ !!8!8!g9!$!("!aEʄ:R͐bŔ9*** WARNING: Unable to sort Terminal names - Press RETURN͐b+_bR͐bÀQ"*!!s!8!b*&! aE;*&Q! !~kE+;*&Rb*!*!n&#s**!n&*&s;*&!N*&!N}o* m!͛}oEʚ;R!! !b*!*!n&+s;*&!N*ߗ&}oE;!}2ޗ;!8!bø:R͐b""! R!q*!!-*!!E !qb"""**t**͇}o}2*&""""* \Eʇ*Ӑ^#VR!! ! !q! b*x&}oEc?!z͑:*ޗ&Eʎ>c?!z*Ӑ!y!xV<*y&*"&}oEʿ>!}2x`?*y&E?*͐*Ӑs#r*Ӑ^#V*ѐ*ϐ!!}2x?*ѐ*ϐ;`?*x&}oE2?! R!q!E !qb`?*Ӑ^#V*ѐ*ϐ!<}oE`?*ѐ*ϐ;!}2xl>"p"r"t"v*vn&"l!l*t*r*p>*l*vs"j!*j5z?"fR!_b*f#ð?!*j5z?"fR!b*f#?"b"d*"&E@!*d m5zS@" R*d* n&4!q! b* #@*d m!͛E@Ŕ (b!*d m5zʸ@" R*d* n&!! b* #Ç@R!́) bR! ! !q! b!*b~5}2 ! \*"&}o}oE(A! *dͲ[A* &!-NE[A*dͲ!_ R!q͐b""" *"&EʚA* n&!NEʓA!}2ÚA!}2!=*&}oEA!* s*Ͳ<ÄC*"&EA* n&!NEA!}2A!}2!=!}2*"&E^B*&* n&!a}oE6B!}2^B*&}o* n&!N}oE^B!}2*&EsB!* s{B!* s* n&!NEB*&EʤB*Ͳ! R!q! b**?ÄC*&EB*Ͳ! R!q! b*"&* o}oE>C* R!q! ! !q! b*+͝?!`͑:R͐b!` o*"&}o}oEʄC!` *Ͳ"^*^"\*\ \EʽC*\6D*\Fn&EC!e.!XͲC000!*\^#V5!XͲ*\6*\ !X *\ !X *\ *\ m!X m"V*V*\ m!X m"T*\n&EʮD*\G*Vs*\H*TsD*\G*Ts*\H*Vs"R*R!!*R"P*P}!s*P~!s*PF!s!ڕ! <b!ڕ5!aEuE6File Containing messages for this program is not foundͳ !ڕ!e!_H1!RͰI*K!s#rLLL*KY!s#rXM*Kg!s#r<*M&!!5zʄM"GR͐b*G#iM! R!q͐bR͐bNM"*6*"6*6*4͛EM!"6M*6!ͯEM*4"6^M!}2!}2*4!͛EʺNR͐b!R R!qb!8!b*&Q!a!a!a! aE)N*&RyN!ͩMúNRN!ͩMúNR§N*ߗ&}o}2FúN RºNR͐b*&!}2F!*~!/!"<*~!*<R!͛EO*<#"*@"8O*B+">*B*6+*@R"8*8+*:#"8!*8+5znQ"2!*:+5z\Q"0*6+*@*0*8*2"%*%*>͇ESQR*%#!́) b*6*4a*>*%R!t}oEP!**%b!*8!ͳb! !Ͳ Q*>*%RRP!ߎ !Ͳ QR Q!! !Ͳ! R!qb*0*:+ͯESQR!! mR!qb*0#$PR͐b*2#PͦM}oEʬO*F&"!P!ͲP!;Ͳ!}2!*!; =!*5!aEQ!*bE!}2ߗ!}2ޗ!*U!N}2ܗ!"ڗ*ܗ&ER<R!Ͱ<^MͣM}oE3R!}2ÆV!}2"*ܗ&ETR!"%!<SR͐b*ޗ&EʐR!}2ÆV*%+"%*%!*UN}2ܗ*%!*U#NES*ޗ&ER!}2ÆV*%+"ڗ!}2ݗ!}2!}TS 101 Nothing ^Q: Quit, ^R: Last page, ^C: Next page, : Select terminal: Wait Sorting Definitions Change to: (Y/N)? y n Text file name: Command: Numeric entry expected Legal range is , please re-enter: Choose one of the following terminals: None of the above ( Max. 20 Characters ) Delete a definition ( Max. 20 Characters ) Which terminal? (Enter no. or ^Q to exit): Delete terminal? (Enter no. or ^Q to exit): Do you want to modify this definition before installation? Terminal type: Send an initialization string to the terminal? Initializaion defined as a command string? (No = a file) Send a reset string to the terminal Reset defined as a command? (No = a file) CURSOR LEAD-IN command: CURSOR POSITIONING COMMAND to send between line and column: CURSOR POSITIONING COMMAND to send after both line and column: Column first OFFSET to add to LINE: OFFSET to add to COLUMN: Binary address Number of ASCII digits (2 or 3): CLEAR SCREEN command: Does CLEAR SCREEN also HOME cursor HOME command: DELETE LINE command: INSERT LINE command: ERASE TO END OF LINE command: START HIGHLIGHTING command: END HIGHLIGHTING command: Number of rows (lines) on your screen: Number of columns on your screen: Delay after CURSOR ADDRESS (0-255 ms): Delay after CLEAR, DELETE and INSERT (0-255 ms): Delay after ERASE TO END OF LINE and HIGHLIGHT (0-255 ms): Is this definition correct? Hardware dependent information Operating frequency of your microprocessor in MHz (for delays): 101 Nothing 200 Choose one of the following displays: 201 Which display? (Enter no. or Q to exit): 202 Default display mode 203 Monochrome display# 204 Color display 80x25 205 Color display 40x25 206 b/w display 80x25 207 b/w display 40x25 URBOSAVDOC HEKLISTCRC T INTEGER IORESULT KBD KEYPRESSED LABEL LENGTH LN LO LOWVIDEO LST LSTOUTPTR MARK MAXAVAIL MAXINT MEM MEMAVAIL MOD MOVE NEW NIL NORMVIDEO NOT ODD OF OR ORD OUTPUT OVERLAY PACKED PI PORT POS PRED PROCEDURE PROGRAM PTR RANDOM RANDOMIZE READ READLN REAL RECORD RELEASE RENAME REPEAT RESET REWRITE ROUND SEEK SET SHL SHR SIN SIZEOF SQR SQRT STR STRING SUCC SWAP TEXT THEN TO TRM TRUE TRUNC TYPE UNTIL UPCASE USR USRINPTR USROUTPTR VAL VAR WHIABSOLUTE AND ARCTAN ARRAY ASSIGN AUX AUXINPTR AUXOUTPTR BEGIN BLOCKREAD BLOCKWRITE BOOLEAN BUFLEN BYTE CASE CHAIN CHAR CHR CLOSE CLREOL CLRSCR CON CONCAT CONINPTR CONOUTPTR CONST CONSTPTR COPY COS CRTEXIT CRTINIT DELLINE DELAY DELETE DISPOSE DIV DO DOWNTO ELSE END EOF EOLN ERASE EXECUTE EXP EXTERNAL FALSE FILE FILEPOS FILESIZE FILLCHAR FLUSH FOR FORWARD FRAC FREEMEM FUNCTION GETMEM GOTO GOTOXY HEAPPTR HI IF IN INLINE INPUT INSERT INSLINE INT INTEGER IORESULT KBD KEYPRESSED LABEL LENGTH LN LO LOWVIDEO LST LSTOUTPTR MARK MAXAVAIL MAXINT MEM MEMAVAIL MOD MOVE NEW NIL NORMVIDEO NOT ODD OF OR ORD OUTPUT OVERLAY PACKED PI PORT POS PRED PROCEDURE PROGRAM PTR RANDOM RANDOMIZE READ READLN REAL RECORD RELEASE RENAME REPEAT RESET REWRITE ROUND SEEK SET SHL SHR SIN SIZEOF SQR SQRT STR STRING SUCC SWAP TEXT THEN TO TRM TRUE TRUNC TYPE UNTIL UPCASE USR USRINPTR USROUTPTR VAL VAR WHILE WITH WRITE WRITELN XOR URBOSAVDOC HEKLISTCRC on most CP/M machine a reset does not clear the memory, so your source program is still sitting in there. To use TURBOSAV, you must: 1. reboot CP/M, preferably with a "plain vanilla" CP/M disk (no Autostart program) 2. put the disk with TURBOSAV in drive A 3. type TURBOSAV You will then be asked to select drive A or drive B for the salvaged file. You can also press RETURN to exit and abandon. Put a disk, any disk as long as it is formatted and there is room on it in the drive of your07 27 041 27 040 27 103 27 109 27 071 27 108 08 12 11 10 4 040 27 87 1 080 27 66 1 096 27 66 2 136 27 66 3 URBOSAVDOC HEKLISTCRC (ERA, REN, DIR, etc) without affecting the memory area used by Turbo Pascal for the text buffer. If the SALVAGED.PAS file contains only garbage, it means that either your program when it was running, or you ran another CP/M program, or the way you rebooted the system clobbered the buffer area. Nothing can help you there. (c) Claude Ostyn 1984  This is the release date of the disk. LISTINSCOM SLISTINSDTA SLISTINSMSG SLISTRSVDAT SYSTEM DAT SLISTCTL.DAT DD 75 640 5 SLISTINS.COM 9F 46 23168 181 SLISTINS.DTA 76 F6 4736 37 SLISTINS.MSG B1 1B 2176 17 SLISTRSV.DAT 1B 0B 1152 9 SYSTEM .DAT 74 09 128 1 $ Fog Library Disk FOG-CPM.027 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Disk 1 of 2. Turbo Pascal programs. Filename Description -02-00 .86 This is the release date of the disk.  -CPM027 .DOC This is the description of the disk contents. GPIB .COM 08F3 12K [GPIB 1 of 3] This set contains the program, documentation, and Pascal source code for GPIB. This makes the Osborne 1 an IEEE 488 Controller. It is menu-driven to select the talker or listener end. GPIB .DOC 3481 4K [GPIB 2 of 3] GPIB .PAS 629F 10K [GPIB 3 of 3] TURBO .PAS A1F4 7K [Turbo Routines 1 of 2] This set is the source code and documentation for five handy utility routines in Turbo Pascal. (Copy, Print, Renera, Dir, and Erabak). TURBO .DOC 7DB4 1K [Turbo Routines 2 of 2] TURBOSAV.COM FCB0 1K [Turbo Save 1 of 2] This program attempts to save text in memory after a crash from the turbo editor. TURBOSAV.DOC 9E75 2K [Turbo Save 2 of 2] SLIST .COM 883B 31K ver. 1.00A [SLIST 1 of 31] Turbo Pascal Source code lister & cross reference utility. This set includes documentation, terminal installation, and source code. SLIST .DOC 8F88 58K ver. 1.00A [SLIST 2 of 29] SLISTCTL.DAT DD75 1K ver. 1.00A [SLIST 3 of 29] SLISTINS.COM 9F46 23K ver. 1.00A [SLIST 4 of 29] SLISTINS.DTA 76F6 5K ver. 1.00A [SLIST 5 of 29] SLISTINS.MSG B11B 3K ver. 1.00A [SLIST 6 of 29] SLISTRSV.DAT 1B0B 2K ver. 1.00A [SLIST 7 of 29] SYSTEM .DAT 7409 1K ver. 1.00A [SLIST 8 of 29]  terminal installation, and source code. SLIST .DOC 8F88 58K ver. 1.00A [SLIST 2 of 29] SLISTCTL.DAT DD75 1K ver. 1.00A [SLIST 3 of 29] SLISTINS.COM 9F46 23K ver. 1.00A [SLIST 4 of 29] SLISTINS.DTA 76F6 5K ver. 1.00A [SLIST 5 of 29] SLISTINS.MSG B11B 3K ver. 1.00A [SLIST 6 of 29]