LnSOS BOOT 1.1 SOS.KERNEL SOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUND%INVALID KERNEL FILE: xةw,@  ȱlmi8#)!)DIFPRINT BY BLOOM I PD DISK )PRINT.ALL d!$Du g-DIFPRINT.TEXT/3d,7*MENU.MAKER }g!>%SEG.T jg"Ÿ/ *SOS.DRIVER 4g"Z*SOS.INTERP 4keg"! *SOS.KERNEL ,Vg"!aIII.BLM.19TUFFu' DISKNAME.DATg!g(FLASHNAME.DATGg!w HELLO g!/ *HELLO.TEXTLg!O-READ.ME.FIRST dO/DIFPRINT.MANUAL7 >dLԡm#i㰼m#iЕOLԡȱfg hi !dLԡ憦  Ljmkm l y`2 Lԡ8(Je稽)ʈ@LTHE WAP OFFICE LIBRARY HAS A NUMBER OF APPLE /// BOOKS AND MAGAZINES. ž#2390 ^1000c: h#2;a$ma$rY=1150:Y0wB=B+1: Count the number of lines printed xB=15B=30355yB=60#3;12)zB=60B=1 {#3;a$|360B<=20#3;13)::410#3;12):Z=11000:ZI I=3d: PRINTER V. 1.0 ::=2::"PRINT.ALL v. 1.0":3=4:"Directory Name(s) or return to quit: ";n$N$)=0::"MENU.MAKER"430 X>0260I=11000:I:200: ,I=1X 14000 6#2,F$(I)@#3,".PRINTER" Jins fixed titles and as many data rows as can fit. SIDE ONE DIFPRINT.MANUAL : The complete manual on how to use DIFPRINT SIDE TWO DIFPRINT Program line has a left margin, a number corresponding to the spread sheet's row, and a data artles. DIFPRINT works with any spread sheet program that can create a standard DIF (Data Interchange Format) file, including "VisiCalc" and "Lotus 1-2-3." DIFPRINT handles up to 52 data columns ("A" through "AZ") in up to five print groups. Each page conta ES - Both Sides DIFPRINT Listing Utility for Spreadsheet Files for the Apple /// DIFPRINT prints the entire breadth of a spread sheet on a single page, including column ti WAP /// SIG PUBLIC DOMAIN LIBRARY 12022 Parklawn Drive Rockville, MD. 20852 (301)-984-0300 PDS NAME : DIFPRINT BY BLOOM DISK ID# : 3BLM-19 BOOTABLE? Y0 WELCOME! WAP /// SIG Public Domain Library Disk Category/Number : Bloom Disks/3BLM-19 Disk Format: Self-booting DIFPRINT prints the enti /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// SIG, Washington Apple Pi 12022 Parklawn Drive Rockville, MD. 20852 (301)-984-030HER SUBROUTINEnSLOW=110xFLASH/2=FLASH/2):۴ =11:=07 FLASH$ SLOW FLASH:".d1/Menu.Maker"5 WAP /// SIG HELLO PROGRAM. UPDATED 4/12/89 DGO :#1,".D1/hello.text" ž#170 (#1;ERIN$ 2ERIN$<40F#1/P=23:=25:"PRESS ANY KEY TO CONTINUE.":G$U-Z#2,".D1/FLASHNAME.DAT":#2;FLASH$:#2%dFLASH=110: FLASI>X200300S=1:D=1:B=1570D$=""500 Y=X:S=ED$(D)=D$:640 X=Y440D=D+1:S=E:440D=D-1:X=0F$(X):X=0 J=1D D$=D$(J)790&J0 :œ6303DE=S+1:N$,S,1)=" "N$,S,1)=","S=S+1:580%Nfile only notes whether a datum is a number or a label. DIFPRINT left justifies labels and right justifies numbers. If your spread sheets stores numbers in "scientific" form (x.xxxEyy), DIFPRINT prints them in "algebraic" form. Page 2 would contain data rows for "March" through "May," Page 3 would have "June" through "August," etc. Note that the decimal points on the DIFPRINT listing don't always line up. Numbers in a DIF file are stored as compactly as possible, and a DIF printing the column identifiers and any optional title lines, DIFPRINT will list as many complete spread sheet data rows as it can (004 through 006 in the example) to fill up a page. In the example listing, each page lists three data lines, so the other two print groups. C: After the column identifiers, DIFPRINT allows you to specify up to five of the spread sheet's title rows to print on each page of the listing. This example uses only three titles (lines 001 through 003). D: AfterT always gives you two title lines per print group (B1: through B3:). These show the spread sheet's column letter identifiers. In this example, Group 1 contains columns "A" through "G," with columns "H" through "N" and "O" through "T" making up17, 1984, from the file .D1/YEARSMRY.DIF. The second line contains the report page number. The rest of the page is for titles and data. Each line has a left margin, a number corresponding to the spread sheet's row, and a data area. B: DIFPRINto put a year's summary of income and expenses on a single page. Let's look at the features of a DIFPRINT listing. A: A DIFPRINT page begins with a two-line page header. The first line identifies the report. This was produced by DIFPRINT on November November 20, 1984 Page 1 Bloom DIF File Printer title rows) DIFPRINT would actually produce fifteen data lines per page. That is more than enough roups. Each page contains fixed titles and as many data rows as can fit. The example listing is truncated, showing only three data rows (004 through 006). With five title lines (two column titles and three spreadsheet DIFPRINT 2010C$="N"C$="n"200;:=23:=0::"79C";"PRESS ANY KEY TO HALT LISTING": 20002,280,21 DF$(I)=D$+"/DISKNAME.DAT"F$(I)=D$+"/FLASHNAME.DAT"410:ۺ310 PRINTER v 1.0 p$ 900A$="PRINTING"+F$(I):$=01:=0::"80C";A$;::12)F=23:=0::"79C";"PRESS ANY KEY TO HALT PRINTING"::2,280,21 2000*:=23:=0::"79C";"CONTINUE...?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"#1,D$::"Processing directory ";34);D$;34);", please wait."; ž#1880*#1;A$:A$)<48104A$,3,4)<>"TEXT"810>X=X+1:".";HE=15:F$=A$,16,15)RF$,E,1)=" "E=E-1:850\F$(X)=D$+"/"+F$,E)f810p:  Pausež#1740#1;A$:A$)<4710A$,3,4)="TEXT"X=X+1710 :X>YN=P::7);"There are no text files in the ";34);D$;34);" directory." ::I=P::7);"Unable to locate and open ";34);D$;34);" directory." ::IT$=N$,E,1):T$=" "T$=","610XE=E+1:E>N$)610:590bD$=N$,S,E-S)l:v:E>S+1600:D$="": œ770P=3:"Looking for ";34);D$;34);" directory." #1,D$=P3:"Reading from ";34);D$;34);" directory." _H_o_w___M_u_c_h___W_i_l_l___F_i_t_? How much can fit on a DIFPRINT page is up to you. You control the width of the printed columns and -- to the extent of physical device capacity -- the length of the printed lines. DIFPRINT computes the number of columns that will fit on a line and then decides how many print groups are required to put all the columns on a single page. After you select the number of title rows for each print group, DIFPRINT computes the number of data rows prinnd 25. Values in brackets ([]) may be edited with "standard" Apple /// editing keys. They are as follows, where "@" is the "Open Apple" key: ____________________________________________________________________________ | ngth of a print line. The initial default is 100 (.PRINTER) or 79. In subsequent passes, the default is the previous value. E: Specify how many print spaces are needed by each column. The initial default is 9. The column width must be between 1 a(.PRINTER or .CONSOLE) or a file on a disk. In subsequent passes, DIFPRINT offers the previous pathname as a default. B/C:Information message reminding you to use standard Apple /// editing keys to change the pathnames as needed. D: Enter the le YEARSMRY.DIF in the second drive, type ".D2/YEARSMRY.DIF" and press RETURN. In subsequent passes DIFPRINT offers the previous pathname as a default. C: Enter the full pathname of the destination of the DIFPRINT listing. This may be a device to 25, default = 9) [9 ] | |________________________________________________________________________| A: The program identifies itself by name, title, author, and revision date. B: Enter the full pathname of the DIF file. If it is file | D: | Enter the printed line length [100 ] | | | E: | Enter the printed column width (1 |________________________________________________________________________| | | B/C:| Use standard editing keys to change pathname as needed. | | ] | | | C: | Enter pathname of the output DIFPRINT file: [.PRINTER ] | | | AMB: v.11/84 | |________________________________________________________________________| | | B: | Enter pathname of the input DIF file: [ m_a_n_d___S_c_r_e_e_n_,___P_a_r_t___1 ________________________________________________________________________ | | A: | DIFPRINT: Formatted DIF File Listing DIFPRINT November 20, 1984 Page 2 Bloom DIF File Printer _T_h_e___D_I_F_P_R_I_N_T___C_o_m_at 7 columns per row). DIFPRINT prints 60 title and data rows per page, so each group has 20 rows (60 / 3). With two lines for the column identifiers and three lines of spreadsheet titles, DIFPRINT will print 15 (20 - 2 - 3) data lines on each page. btracts four spaces from the line length for the row number, then divides the result (75 - 4 = 71) by the column width (9) to get 7 columns per row. The remaining 8 spaces on the line are the left margin. You need three print groups (20 columns ted. For example, assume that you want to print YEARSMRY.DIF on an 80-column printer. For a half-inch right margin, you would select a line length of 75. Your spread sheet was constructed with VisiCalc's default 9-space column width. DIFPRINT su | | | ESC: Default reappears | RET: Accept the contents | | <- or ->: Move cursor left or right | @ I: Toggle insert mode | | @ <-: Delete left character | @ ->: Delete right character | |_________________________________________|__________________________________| After Part 1's basic information is entered, DIFPRINT takes a few seconds to digest it. Then it begins the search for "title rows." Proceed to Part 2. ress the key, DIFPRINT formats and print the DIF file. G: Reading and setting up a page worth of data takes a bit of time. DIFPRINT gives you this message (and the dots) to let you know that it is actually doing something. This does not occur if title lines as you like, but only five may be printed. Once you state that a line is not a title, DIFPRINT assumes that all subsequent lines are data. At "Press any key," make sure your printer or other output device is ready. After you p (Y | N) --> {} | |________________________________________________________________________| F: DIFPRINT goes through the first rows of the spread sheet looking for common column titles to print on each page. You may identify as many_______________________________________________|| |________________________________________________________________________| | | H: | End of task. Start again? __________________________________________________________________ | | | || | | Data begins with row _. Press any key. || | |______________________ || | |_____________________________________________________________________|| | | | Else | | ____________________________ | | | || | | Use it? (Y | N) --> {} || | | Sorry, only five title rows can be used. (Y | N) --> {} | | | | If "Y" | | ____________________________________________ Page __ .............. | |________________________________________________________________________| | | F: | Is this a title row? xxx | | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | | G: | Loading | F: | Row number _ contains the following: | | | | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxListing AMB: v.11/84 | |________________________________________________________________________| | | | o_m_m_a_n_d___S_c_r_e_e_n_,___P_a_r_t___2 ________________________________________________________________________ | | A: | DIFPRINT: Formatted DIF File DIFPRINT November 20, 1984 Page 3 Bloom DIF File Printer _T_h_e___D_I_F_P_R_I_N_T___C_you select ".CONSOLE" output. H: After listing a DIF file, DIFPRINT lets you start all over again (by pressing "Y"). You may choose a different file, a different listing destination, a different column width, different titles. If you press the "N" key, you're invited to reboot or to press RETURN to exit to Pascal. DIFPRINT November 20, 1984 Page 4 Bloom DIF File Printer .012345LMYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~O^zB[. Provision for single-sheet printer operation. DIFPRINT November 20, 1984 Page 5 _P_o_s_s_i_b_l_e___F_u_t_u_r_e___E_n_h_a_n_c_e_m_e_n_t_s 1. Automatic recognition and conversion of  _S_u_p_e_r_C_a_l_c  SDI files. 2. Inclusion of a "printer setup string," as in  _V_i_s_i_C_a_l_c . 3_y_s_t , create a sub-directory with any "dirname" you wish. Then copy SYSTEM.STARTUP as "dirname/DIFPRINT.CODE" and SYSTEM.STAR.LIB as "dirname/DIFPRINT.LIB." Then follow Quark's directions for installing simple Pascal programs. other parameters may be different for your system. Use "System Utilities" to delete the boot disk's SOS.DRIVER file and to replace it with one from a boot disk that works with your system. To install this program under Quark's  _C_a_t_a_lfore doing anything else. Put the master disk in a safe place, and only use it to make another work copy. Always execute from your work copy. You must install your own SOS.DRIVER. The ".PRINTER" driver in the SOS.DRIVER file is non-standard, ande front is the "boot disk." The rear contains the program's Pascal source code and a copy of this documentation as an  _A_p_p_l_e___W_r_i_t_e_r  file. BACK IT UP! Copy each side -- preferably onto separate single-sided disks -- bes for VECTORS and TUPLES (the number of columns and rows). DIFPRINT aborts if it cannot find those key entries. _I_n_s_t_a_l_l_a_t_i_o_n DIFPRINT is supplied on two sides of the accompanying diskette. Thumn" order, or DIFPRINT will print it sideways.  _S_u_p_e_r_C_a_l_c  is a problem. It can read a DIF file, but its "SDI" (or "SDF" depending on the version) files are not standard. The SDI header section is missing the required entriea "WKS" work sheet file on disk. From the master menu, select the file transfer option and insert the "Lotus Utilities" disk. Use the arrows to select the "WKS -> DIF" option. Lotus will automatically add ".DIF" to the file name. Store the DIF file in "Col. Add ".DIF" to the filename so you don't write over the VisiCalc file on the disk. Store the DIF file in C)olumn format, or DIFPRINT will print it sideways.  _L_o_t_u_s___1_-_2_-_3  uses a utility program to create a DIF file from _C_r_e_a_t_i_n_g___a___D_I_F___F_i_l_e Almost all spread sheet programs can create DIF files. Use the "/S#" command in  _V_i_s_i_C_a_l_c  to store the current work sheet in DIF format689:;<=>?@ABCDEFGHIJKNOPQRSTUVWX BBB BBB AAA AAA BBBBBBBBBBBB For the Apple /// AAAAAAAAAAAAA BBB BBB AAA AAA BBB BBB Allan M. Bloom, PhD CDP AAAAA AAAAA BBB AAAAAAAAA BBBBBBBBBBBBB DIFPRINT AAA AAA BBB BBB Listing Utility for Spreadsheet Files AAA AAA ptr := 0; end else begin len := i * 512; if eof (fl) then len := scan (len, =chr(00), buf [1]); 3ptr := 1; end; {block read} {endif} st := ''; *line_end := false; *with F do begin *repeat if ((ptr < 1) or (ptr > len)) then begin i := blockread (fl, buf, 2); 0if i = 0 then begin ef := true; 3line_end := true; string; *pr_date: string; *page_num: integer; {} procedure READ_ASC (var fl: filetp; var f: fileblock; var st: str255); var i,j,k: integer; line_end: boolean; st_pos: 0..255; begin er; *data_field: boolean; *answer: char; *data_start: integer; *row_value: array [1..52] of string [25]; *pr_row: array [1..30] of integer; *pr_value: array [1..30] of array [1..52] of string [25]; *wk_str: _page: integer; *lin_per_page: integer; *row_per_gp: integer; *pr_max: integer; *row_number: integer; *max_titles: integer; *col_title: array [1..7] of array [1..52] of string [25]; *title_row: array [1..7] of integ*alpha: string [26]; *line_width: integer; *column_width: integer; *col_per_line: integer; *margin: integer; *scr_columns: integer; *vectors: integer; *tuples: integer; *fatal_error: boolean; *gps_per fileblock; *inpath: string; *outfile: text; *outpath: string; *i,j,k: integer; *first_time: boolean; *igroup: integer; *jstart: integer; *jend: integer; tring [255]; buftype = packed array [1..1025] of char; fileblock = record :BUF: buftype; :LEN: integer; :PTR: integer; :EF: boolean; :end; *filetp = file; {}  var infile: filetp; *inblock: } 4{ 30 rows max of data printed } 4{ } 4{Maint 01-12-85 AMB: Handle a null DIF file. } {$list-} uses applestuff, plutil;  {$list+} type str255 = s{$list+}  program DIFPRINT; {Print a DIF file, full row per page AMB 11/26/84} 4{Limits: 52 columns (A through AZ) } 4{ 25 character maximum column width } 4{ 5 rows max of titles printed BBBBBBBBBB 2303 San Marcos St, Blacksburg, VA 24060 DIFPRINT prints the entire breadth of a spread sheet on a single page, including column titles. DIFPRINT works with identifies the report. This was produced by DIFPRINT on November 17, 1984, from the file .D1/YEARSMRY.DIF. The second line contains the report page number. The rest of the page is for titles and data. Each line has a left margin, a number coually produce fifteen data lines per page. That is more than enough to put a year's summary of income and expenses on a single page. Let's look at the features of a DIFPRINT listing. A: A DIFPRINT page begins with a two-line page header. The first line s. Each page contains fixed titles and as many data rows as can fit. The example listing is truncated, showing only three data rows (004 through 006). With five title lines (two column titles and three spreadsheet title rows) DIFPRINT would act | All 20 columns of the above spread sheet ("A" through "T") are printed on a single page, in three groups (Gp1 through Gp3) of seven columns each. DIFPRINT handles up to 52 data columns ("A" through "AZ") in up to five print group4.25 774.42 877.78 329.73 | | | 005 4822.61 4156.4 57.6 360 29.07 4.95 | | | 006 5691.52 5093.45 241.3 0 118.93 55.2 | | | |---------------- Expenses -------------------------- | | C3:| 002 || Total | Misc Supply Equip Auto Books | | | 003 ------------------------------------------------------ | | D3:| 004 43996.58 35297.7 179 0 | | | | | Gp3:| ROW | | B3:| NUM | O | P | Q | R | S | T | | | 001 |---------------------------- | | D2:| 004 11936.88 1116.67 459.5 379.2 115.2 8607.16 524 | | | 005 0 0 30 75 11.67 5001 0 | | | 006 1238.83 0 0 0 18.1 0 I | J | K | L | M | N | | | 001 --------------------------- Income -------------------------- | | C2:| 002 L-Sal A-Reimb L-Reimb Other Int-Chk Misc Tax-Ref | | | 003 ----------------------------------- | 006 1984 ----- February 38.38 3115.41 1858.48 | | | | | Gp2:| ROW | | B2:| NUM | H | Total | A-Sal | | | 003 --------------------------------------------------------------- | | D1:| 004 1984 ----- Year to Date 179.16 40491.42 17352.81 | | | 005 1984 ----- January 2429.54 5117.67 0 | | | | B1:| NUM | A | B | C | D | E | F | G | | | 001 ------------------------------------|| ||---------------- | | C1:| 002 Date Check-No Description ||Balance|| | | A: | DIFPRINT: 11/17/84 .D1/YEARSMRY.DIF | | | Page 1 | | Gp1:| ROW any spread sheet program that can create a standard DIF (Data Interchange Format) file, including "VisiCalc" and "Lotus 1-2-3." A DIFPRINT listing looks like this: | | rresponding to the spread sheet's row, and a data area. DIFPRINT November 20, 1984 Page 1 Bloom DIF File Printer B: DIFPRINT always gives you two title lines per print group (B1: through B3:). These show the spread sheet's column letter identifiers. In this example, Group 1 contains columns "A" through "G," with columns "H" through "N" and "O" through "T" making up the other two print | | | B/C:| Use standard editing keys to change pathname as needed. | | | D: | C: | Enter pathname of the output DIFPRINT file: [.PRINTER ] | | | | | | | B: | Enter pathname of the input DIF file: [ ] | | | | A: | DIFPRINT: Formatted DIF File Listing AMB: v.11/84 | | November 20, 1984 Page 2 Bloom DIF File Printer The DIFPRINT Command Screen, Part 1 rows per page, so each group has 20 rows (60 / 3). With two lines for the column identifiers and three lines of spreadsheet titles, DIFPRINT will print 15 (20 - 2 - 3) data lines on each page. DIFPRINT ber, then divides the result (75 - 4 = 71) by the column width (9) to get 7 columns per row. The remaining 8 spaces on the line are the left margin. You need three print groups (20 columns at 7 columns per row). DIFPRINT prints 60 title and datant YEARSMRY.DIF on an 80-column printer. For a half-inch right margin, you would select a line length of 75. Your spread sheet was constructed with VisiCalc's default 9-space column width. DIFPRINT subtracts four spaces from the line length for the row num then decides how many print groups are required to put all the columns on a single page. After you select the number of title rows for each print group, DIFPRINT computes the number of data rows printed. For example, assume that you want to pri? How much can fit on a DIFPRINT page is up to you. You control the width of the printed columns and -- to the extent of physical device capacity -- the length of the printed lines. DIFPRINT computes the number of columns that will fit on a line andher a datum is a number or a label. DIFPRINT left justifies labels and right justifies numbers. If your spread sheets stores numbers in "scientific" form (x.xxxEyy), DIFPRINT prints them in "algebraic" form. How Much Will Fitn data rows for "March" through "May," Page 3 would have "June" through "August," etc. Note that the decimal points on the DIFPRINT listing don't always line up. Numbers in a DIF file are stored as compactly as possible, and a DIF file only notes whet identifiers and any optional title lines, DIFPRINT will list as many complete spread sheet data rows as it can (004 through 006 in the example) to fill up a page. In the example listing, each page lists three data lines, so Page 2 would contai groups. C: After the column identifiers, DIFPRINT allows you to specify up to five of the spread sheet's title rows to print on each page of the listing. This example uses only three titles (lines 001 through 003). D: After printing the column | Enter the printed line length [100 ] | | | E: | Enter the printed column width (1 to 25, default = 9) [9 ] | | | A: The program identifies itself by name, title, author, and revision date. B: Enter the full pathname of the DIF file. If it is file YEARSMRY.DIF in the second drive, type " | | | | | F: | Row number contains the following: | | | A: | DIFPRINT: Formatted DIF File Listing AMB: v.11/84 | | November 20, 1984 Page 4 Bloom DIF File Printer The DIFPRINT Command Screen, Part 2 ring; var c: char); var success: boolean; begin *repeat -unitclear (1); -success := false; -gotoxy (0,23); -write (chr(30), s); -gotoxy (66,23); -write ('(Y | N) --> '); -read (keyboard, c); -unitclear (1); -upperchr (c); -if ((procedure ERR_23 (s:string); var wk_char: char; begin *unitclear (1); *gotoxy (0,23); *write (chr(30), chr(7), s, ' Press any key.'); *read (keyboard, wk_char); *write (chr (30)); *unitclear (1); end; {ERR_23} {} procedure YN_23 (s:st+ 1], j); 0st [0] := chr (length (st) + j); 0{$rangecheck+} 0ptr := ptr + j; 0if ptr <= len then line_end := true; 0ptr := ptr + 1; -until ((line_end) or (ptr > len)); until (line_end); *end; {with F} end; {READ_ASC} {} end; {check for actual read} {endif} -if ptr > 0 then repeat 0j := scan (len + 1 - ptr, =chr(13), buf [ptr]); 0if (j + length (st)) > 255 3then j := 255 - length (st); 0{endif} 0{$rangecheck-} 0moveleft (buf [ptr], st [length (st) is entered, DIFPRINT takes a few seconds to digest it. Then it begins the search for "title rows." Proceed to Part 2. DIFPRINT DIF File Printer | | @ <-: Delete left character | @ ->: Delete right character | | | | After Part 1's basic information ESC: Default reappears | RET: Accept the contents | | <- or ->: Move cursor left or right | @ I: Toggle insert mode DIFPRINT November 20, 1984 Page 3 Bloom with "standard" Apple /// editing keys. They are as follows, where "@" is the "Open Apple" key: | | | | 100 (.PRINTER) or 79. In subsequent passes, the default is the previous value. E: Specify how many print spaces are needed by each column. The initial default is 9. The column width must be between 1 and 25. Values in brackets ([]) may be editedn subsequent passes, DIFPRINT offers the previous pathname as a default. B/C:Information message reminding you to use standard Apple /// editing keys to change the pathnames as needed. D: Enter the length of a print line. The initial default is .D2/YEARSMRY.DIF" and press RETURN. In subsequent passes DIFPRINT offers the previous pathname as a default. C: Enter the full pathname of the destination of the DIFPRINT listing. This may be a device (.PRINTER or .CONSOLE) or a file on a disk. I | | | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | | G: | Loading Page .............. | | he DIF file in C)olumn format, or DIFPRINT will print it sideways.  Lotus 1-2-3  uses a utility program to create a DIF file from a "WKS" work sheet file on disk. From the master menu, select the file transfer option and insert the "Lotus Utilreating a DIF File Almost all spread sheet programs can create DIF files. Use the "/S#" command in  VisiCalc  to store the current work sheet in DIF format. Add ".DIF" to the filename so you don't write over the VisiCalc file on the disk. Store t DIFPRINT November 20, 1984 Page 6 Bloom DIF File Printer C again (by pressing "Y"). You may choose a different file, a different listing destination, a different column width, different titles. If you press the "N" key, you're invited to reboot or to press RETURN to exit to Pascal. th of data takes a bit of time. DIFPRINT gives you this message (and the dots) to let you know that it is actually doing something. This does not occur if you select ".CONSOLE" output. H: After listing a DIF file, DIFPRINT lets you start all over a title, DIFPRINT assumes that all subsequent lines are data. At "Press any key," make sure your printer or other output device is ready. After you press the key, DIFPRINT formats and print the DIF file. G: Reading and setting up a page wor | F: DIFPRINT goes through the first rows of the spread sheet looking for common column titles to print on each page. You may identify as many title lines as you like, but only five may be printed. Once you state that a line is not Page 5 Bloom DIF File Printer H: | End of task. Start again? (Y | N) --> {} | | || | | | | DIFPRINT November 20, 1984 | || || || Data begins with row . Press any key. || || || | | | Else | | || || Use it? (Y | N) --> {} || || Sorry, only five title rows can be used. || || | | If "Y" | | | || | | | F: | Is this a title row? (Y | N) --> {} | | ities" disk. Use the arrows to select the "WKS -> DIF" option. Lotus will automatically add ".DIF" to the file name. Store the DIF file in "Column" order, or DIFPRINT will print it sideways.  SuperCalc  is a problem. It can read a DIF file, but its "SDI" (or "SDF" depending on the version) files are not standard. The SDI header section is missing the required entries for VECTORS and TUPLES (the number of columns and rows). DIFPRINT aborts if it cannot find those key entries. ', strg, ']': max_lgth + 1 - lgth); -if (line_strt + max_lgth) > 77 then write (up); -uw_2 [1] := ord (wk_now + line_strt); -unitwrite (1, uw_2, 3,,12); *end; {display} *procedure init; *begin -strg := default; -lgth := length (strg); -wk_now := n_l: char; *open_r: char; *lgth: integer; *beep: char; *left: char; *right: char; *up: char; * *procedure display; *begin -uw_1 [2] := ord (line_strt); -unitwrite (1, uw_1, 3,,12); -write ('[*i_mode: boolean; *wk_char: char; *uw_1: packed array [0..3] of 0..255; *uw_2: packed array [0..3] of 0..255; *esc: char; *l_arrow: char; *r_arrow: char; *open_i: char; *open_ii: char; *ope} *{ on the screen line, 0 through 77. } *{ } * *var *i: integer; *wk_now: integer; *default: string; } *{max_lgth: Maximum length of the string to be gotten, 1-78 } *{ } *{line_strt: Where the left-bracket of the input area starts rsor in "insert" mode.} *{ } *{strg: Enters with a default value or null string } *{ Exits containing the string gotten from keyboard } *{ *{ OA- I Toggle insert mode. } *{ OA- left Delete char to left of cursor. } *{ OA- right Delete char under cursor, to } *{ right of cu ESCAPE Return original default. } *{ left-arrow Cursor one space left. } *{ right-arrow Cursor one space right. } } *{Standard Apple /// string getter Al Bloom 02-20-84} *{ } *{Editing commands: RETURN Accept the contents of the field.} *{ oncat (' ', wk_str); -for i := 1 to k do wk_str := concat (wk_str, ' '); -end; *{endif} *j_str := wk_str; end; {JUSTIFY} {} procedure GET_STRG *(var strg: string; max_lgth: integer; line_strt: integer); *{ *else if direction in ['r', 'R'] then begin -while length (wk_str) < lgth do wk_str := concat (' ', wk_str); -end *else if direction in ['c', 'C'] then begin -i := lgth - length (wk_str); -j := i div 2; -k := i - j; -for i := 1 to j do wk_str := cg; *i,j,k: integer; begin *wk_str := j_str; *if lgth <= length (j_str) then begin -wk_str := copy (wk_str, 1, lgth); -end *else if direction in ['l', 'L'] then begin -while length (wk_str) < lgth do wk_str := concat (wk_str, ' '); -end c = 'Y') or (c = 'N')) 0then success := true 0else err_23 ('Please press "Y" or "N." '); -{endif} *until success; *write (chr (30)); end; {YN_23} {} procedure JUSTIFY (var j_str: string; direction: char; lgth: integer); var wk_str: strin Installation DIFPRINT is supplied on two sides of the accompanying diskette. The front is the "boot disk." The rear contains the program's Pascal source code and a copy of this documentation as an  Apple Writer  file. BA1; -i_mode := false; *end; {init} * *begin *if max_lgth > 78 then max_lgth := 78; *if max_lgth < 1 then max_lgth := 1; *while length (strg) > max_lgth do delete (strg, length (strg), 1); *if line_strt < 0 then line_strt := 0; *if line_strt + max_lgth + 2 > 80 -then line_strt := 80 - max_lgth - 2; *uw_1 [0] := 6; uw_1 [1] := 24; uw_1 [2] := 0; *uw_2 [0] := 24; uw_2 [1] := 0; uw_2 [2] := 5; *esc := chr ( 27); l_arrow := chr ( 8); r_arroc_str, 1, 1); -neg_bas := true; -end; *{endif} *i := length (dec_str) + 1; sig := -1; while sig = -1 do begin i := i - 1; -if i < 1 then begin 0dec_str := '0'; 0exit (realstr); 0end -else if dec_str [i] > '0' 0thi, 1); *dec1 := i; *i := pos ('E', exp_str); *if i = 0 then exit (realstr); *dec_str := copy (exp_str, 1, i-1); delete (exp_str, 1, i); *if dec_str [1] = '+' -then delete (dec_str, 1, 1) *else if dec_str [1] = '-' then begin -delete (de*dec_str := '0'; *neg_bas := false; *neg_exp := false; *i := pos (' ', exp_str); *while (i > 0) do begin -delete (exp_str, i, 1); -i := pos (' ', exp_str); end; *i := pos ('.', exp_str); *if i = 0 then exit (realstr); *delete (exp_str, = '1234567890'; var i: integer; *sig: integer; exp: integer; dig: integer; dec: integer; *dec1: integer; *neg_bas: boolean; *neg_exp: boolean; begin until (eoln (keyboard)); *if i_mode then begin -delete (strg, wk_now, 1); -lgth := lgth - 1; -display; -end; *{endif} end;{GET_STRG} {} procedure REALSTR (exp_str: string; var dec_str: string);{Real to decimal str} `{AMB 11-26-84} const digit 6display; 6end 3else if wk_now > max_lgth-2 6then write (beep) 3else begin 6i_mode := true; 6insert ('|', strg, wk_now); 6lgth := lgth + 1; 6display; 6end 0else write (beep); 0read (keyboard, wk_char); -end; {do while not eoln and not esc} *6delete (strg, i, 1); 6lgth := lgth - 1; 6wk_now := wk_now - 1; 6write (left); 6display; 6end; 3end 0else if ((wk_char=open_i) or (wk_char=open_ii)) then 3if i_mode then begin 6delete (strg, wk_now, 1); 6lgth := lgth - 1; 6i_mode := false;  := wk_now; 3if i_mode then i := i + 1; 3if i > lgth then write (beep) 3else begin 6delete (strg, i, 1); 6lgth := lgth - 1; 6display; 6end; 3end 0else if wk_char = open_l then begin 3i := wk_now - 1; 3if i < 1 then write (beep) 3else begin ar = l_arrow then 3if wk_now = 1 then write (beep) 3else begin 6wk_now := wk_now - 1; 6if i_mode then begin 9strg [wk_now+1] := strg [wk_now]; 9strg [wk_now] := '|'; 9display; 9end; 6write (left); 6end 0else if wk_char = open_r then begin 3ilse begin 6wk_now := wk_now + 1; 6if i_mode then if wk_now > lgth then begin 9write (beep); 9wk_now := wk_now - 1; 9end 6else begin 9strg [wk_now-1] := strg [wk_now]; 9strg [wk_now] := '|'; 9display; 9end; 6write (right); 6end 0else if wk_ch9strg := concat (strg,' '); 9end; 6strg [wk_now] := wk_char; 6display; 6if wk_now < max_lgth then begin 9write (right); 9wk_now := wk_now + 1; 9end 6else write (beep); 6end 0else if wk_char = r_arrow then 3if wk_now > lgth then write (beep) 3e= max_lgth 9then write (beep) 6else begin 9insert (' ', strg, wk_now); 9lgth := lgth + 1; 9strg [wk_now] := wk_char; 9wk_now := wk_now + 1; 9display; 9end 3else begin 6if wk_now > lgth then begin 9lgth := lgth + 1; ; -read (keyboard, wk_char); -if not eoln (keyboard) then if wk_char in [' '..'~'] then begin 0strg := ''; 0lgth := 0; 0end; -while ((not eoln (keyboard)) and (wk_char <> esc)) do begin - if wk_char in [' '..'~'] then 3if i_mode then 6if lgth w := chr ( 21); *open_i := chr (233); open_l := chr (136); open_r := chr (149); *up := chr ( 11); left := chr ( 8); right := chr ( 9); *beep := chr ( 7); open_ii := chr (201); *default := strg; *repeat -init; -displayen sig := i; {endif} end; *dec_str := copy (dec_str, 1, sig); *if exp_str [1] = '+' -then delete (exp_str, 1, 1) *else if exp_str [1] = '-' then begin -delete (exp_str, 1, 1); -neg_exp := true; -end; *{endif} *exp := 0; *for i := 1 to length (exp_str) do begin .dig := pos (copy (exp_str, i, 1), digit); .if dig = 0 then begin 0dec_str := '0'; 0exit (realstr); 0end; .{endif} .if dig = 10 then dig := 0; .exp := exp + dig * trunc (pwroften (length (exp_str) - i)); *6title_row [max_titles] := row_number; 6for i := 1 to vectors do :col_title [max_titles, i] := row_value [i]; 6{end for i} 6end; 3end 0else begin 3err_23 ('Sorry, only five title rows can be used.'); 3end; 0end -else begin 0str (row_number, mslse gotoxy (0, 20); 4end; 1write (row_value [i]); -end;{for} -yn_23 ('Is this a title row?', answer); -if answer = 'Y' then begin 0if max_titles < 7 then begin 3yn_23 ('Use it?', answer); 3if answer = 'Y' then begin 6max_titles := max_titles + 1; -gotoxy (0, 10); -write ('Row number ', row_number, ' contains the following:'); -gotoxy (0, 11); -j := 0; -k := 11; -for i := 1 to vectors do begin 1j := j + 1; 1if j > scr_columns then begin 4j := 1; 4k := k + 1; 4if k < 20 7then writeln 7e; *scr_columns := 79 div column_width; *repeat -if row_number < tuples then begin - get_row; 0end -else begin 0err_23 ('End of file encountered. File has only titles'); 0fatal_error := true; 0exit (get_titles); 0end; -{endif} R: Expected BOT or EOD at row ', 4msg, '. Got "', wk_str, '"'); -abort (msg); -end; end; {get_row}  {} procedure get_titles; var i,j,k: integer; *msg: string; begin *max_titles := 2; *data_field := false; *row_number := 0c (infile, inblock, wk_str); *read_asc (infile, inblock, wk_str); *if ((wk_str = 'BOT') or (wk_str = 'EOD')) then begin -end *else begin -if ((wk_str = '') and (inblock.ef)) then wk_str := 'EOF INFILE'; -str (row_number, msg); -msg := concat ('ERRO1read_asc (infile, inblock, wk_str); 1end .else begin 1str (row_number, msg); 1msg := concat ('ERROR: Unidentified data type "', 8wk_str, '" in row ', msg, '.'); 1err_23 (msg); 1read_asc (infile, inblock, wk_str); 1end; .{endif} *end; *read_asthen begin 1delete (wk_str, 1, 2); 1if pos ('E', wk_str) > 0 then begin 4str1 := wk_str; 4realstr (str1, str2); 4wk_str := str2; 4end; 1{endif} 1justify (wk_str, 'r', column_width); 1row_value [i] := wk_str; ip lead/trail "} 1if wk_str [1] = '"' then delete (wk_str, 1, 1); 1if wk_str [length (wk_str)] = '"' 4then delete (wk_str, length (wk_str), 1); 1justify (wk_str, 'l', column_width); 1row_value [i] := wk_str; 1end .else if copy (wk_str, 1, 1) = '0' string; *msg: string; begin *row_number := row_number + 1; *for i := 1 to vectors do begin .read_asc (infile, inblock, wk_str); .row_value [i] := ''; .if copy (wk_str, 1, 1) = '1' then begin 1read_asc (infile, inblock, wk_str); 1{str5copy (pr_date, 7, 2), '/', copy (pr_date, 3, 2)); *alpha := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; *lin_per_page := 60; end; {defaults} {}  procedure get_row; var i: integer; *wk_str: str255; *str1: string; *str2: *exit(program); end; {abort} {} procedure defaults; begin *inpath := ''; *outpath := '.PRINTER'; *line_width := 0; *column_width := 9; *date (pr_date); *pr_date := concat (copy (pr_date, 5, 2), '/', c_str, '0'); -end *else insert ('.', dec_str, dec); *{endif} if neg_bas then dec_str := concat ('-', dec_str); end; {REALSTR} {} procedure abort (s: string); begin *err_23 (s); *close (infile); *close (outfile, lock); *write (chr (28)); end; *if neg_exp then begin -for i := 1 to exp do dec_str := concat ('0', dec_str); -exp := 0; -end; *{endif} *dec := dec1 + exp; *if dec > length (dec_str) then begin -dec := dec - length (dec_str) - 1; -for i := 1 to dec do dec_str := concat (deg); 0msg := concat ('Data begins with row ', msg); 0err_23 (msg); 0data_field := true; 0data_start := row_number; 0end; -for i := 10 to 20 do begin 1gotoxy (0, i); 1write (chr (30)); -end; *until (data_field = true); end; {get_titles} {}  procedure header_info; var wk_str: str255; *msg: string; begin *vectors := 0; *repeat -read_asc (infile, inblock, wk_str); -if inblock.ef then begin 0fatal_error := true; 0err_23 ('ERROR: EOF while searching for VECTORS');r i := 1 to vectors do begin .col_title [1, i] := ''; .for j := 1 to column_width do 2col_title [1, i] := concat (col_title [1,i], '_'); .{end} .k := i; .if i > 26 then k := i - 26; .wk_str := copy (alpha, k, 1); .if i > 26 then wk_str := concat ( invalid. Try again.'); 0err_23 (msg); 0end; -{endif} *until (valid); *gotoxy(0,23); *write(chr(30)); end;{init} {} procedure init_col; var i,j,k: integer; +wk_str: string; begin *title_row [1] := 0; *title_row [2] := 0; *fo0'Enter the printed column width (1 - 25, default = ', 1wk_str, ').'); -get_strg (wk_str, 3, 74); -i := intstr (wk_str); -if ((i > 0) and (i < 26)) then begin 0valid := true; 0column_width := i; 0end -else begin 0msg := concat ('"', wk_str, '" isid := true; 0line_width := i; 0end -else begin 0msg := concat ('"', wk_str, '" is invalid. Try again.'); 0err_23 (msg); 0end; -{endif} *until (valid); *repeat -valid := false; -str (column_width, wk_str); -gotoxy (0,23); -write (chr (30), idth := 79; *{endif} *repeat -valid := false; -str (line_width, wk_str); -gotoxy (0,23); -write (chr (30), 0'Enter the printed line width (default = ', 1wk_str, ').'); -get_strg (wk_str, 4, 73); -i := intstr (wk_str); -if i > 0 then begin 0valewrite', outpath); *if outpath = '' then abort ('No output file. Program halts'); *if outpath = '.CONSOLE' -then line_width := 79 *else if ((line_width = 0) or (wk_str <> outpath)) then -if outpath = '.PRINTER' 0then line_width := 100 0else line_w*inblock.ptr := 0; *inblock.ef := false; *gotoxy (0, 3); *open (infile, 'input DIF file', 'reset', inpath); *if inpath = '' then abort ('No input file. Program halts'); *gotoxy (0, 6); *wk_str := outpath; *open (outfile, 'output DIFPRINT file', 'rnd;{header_info} {} procedure init; var i,j,k: integer; *wk_str: string; *msg: string; *valid: boolean; begin *gotoxy (0, 23); *write ('Use standard editing keys to change pathname as needed.'); rr_23 (msg); 0end; -{endif} -end; *{endif} *repeat -read_asc (infile, inblock, wk_str); -if inblock.ef then begin 0fatal_error := true; 0err_23 ('ERROR: EOF while searching for BOT'); 0wk_str := 'BOT'; 0end; -{endif} *until (wk_str = 'BOT'); eS'); *if not fatal_error then begin -read_asc (infile, inblock, wk_str); -delete (wk_str, 1, 2); -tuples := intstr (wk_str); -if tuples = 0 then begin 0fatal_error := true; 0msg := concat ('ERROR: TUPLE value "', 7wk_str, '" not numeric.'); 0e0err_23 ('ERROR: EOF while searching for TUPLES'); 0wk_str := 'TUPLES'; 0end -else if wk_str = 'DATA' then begin 0fatal_error := true; 0err_23 ('ERROR: DATA while searching for TUPLES'); 0wk_str := 'TUPLES'; 0end; -{endif} *until (wk_str = 'TUPLEbegin 0vectors := 52; 0msg := concat ('Columns (', wk_str,') reduced to 52.'); 0err_23 (msg); 0end; -end; *repeat -read_asc (infile, inblock, wk_str); -read_asc (infile, inblock, wk_str); -if inblock.ef then begin 0fatal_error := true; (infile, inblock, wk_str); -delete (wk_str, 1, 2); -vectors := intstr (wk_str); -if vectors = 0 then begin 0fatal_error := true; 0msg := concat ('ERROR: VECTOR value "', 7wk_str, '" not numeric.'); 0err_23 (msg); 0end -else if vectors > 52 then 0wk_str := 'VECTORS'; 0end -else if wk_str = 'DATA' then begin 0fatal_error := true; 0err_23 ('ERROR: DATA while searching for VECTORS'); 0wk_str := 'VECTORS'; 0end; -{endif} *until (wk_str = 'VECTORS'); *if not fatal_error then begin -read_asc'A', wk_str); .justify (wk_str, 'c', column_width-1); .wk_str := concat ('|', wk_str); .col_title [2, i] := wk_str; *end;{for i} end; {init_col} {} procedure print_parm; var msg: string; begin *col_per_line := line_width div column_width; *margin := line_width - (col_per_line * column_width); *if margin < 4 then begin -margin := margin + column_width; -col_per_line := col_per_line - 1; -end; *if col_per_line = 0 then begin -abort ('ERRORnd;{for i} -end; {for igroup} -page (outfile); -if row_number < tuples then begin 0page_num := page_num + 1; 0if outpath = '.CONSOLE' then write (chr (28)); 0writeln (outfile, '': margin-4, 'DIFPRINT: ', pr_date, 3inpath: line_width - margin - 14); ) > 3 do delete (wk_str, 1, 1); 8while length (wk_str) < 3 do wk_str:=concat('0',wk_str); 8wk_str:=concat(wk_str, ' '); 8write (outfile, wk_str:margin); 8end; 5{endif} 5for j:=jstart to jend do write (outfile,pr_value [i,j]); 5writeln (outfile); 1e5for j:=jstart to jend do write (outfile,col_title [i,j]); 5writeln (outfile); 1end;{for i} 1for i := 1 to pr_max do begin 5if pr_row [i] = 0 then begin 8write (outfile, '':margin) 8end 5else begin 8str (pr_row [i], wk_str); 8while length (wk_str (title_row [i], wk_str); 8while length (wk_str) > 3 do delete (wk_str, 1, 1); 8while length (wk_str) < 3 do wk_str:=concat('0',wk_str); 8wk_str:=concat(wk_str, ' '); 8write (outfile, wk_str:margin); 8end; 5{endif} jend := jend + col_per_line; 1if jend > vectors then jend := vectors; 1for i := 1 to max_titles do begin 5if i = 1 then begin 8write (outfile, 'ROW ':margin) 8end 5else if i = 2 then begin 8write (outfile, 'NUM ':margin) 8end 5else begin 8strow_value [j] := ''; 4pr_row [i] := 0; 4end; 1{endif} 1for j := 1 to vectors do pr_value [i, j] := row_value [j]; -end;{for i} -jstart := 1 - col_per_line; -jend := 0; -for igroup := 1 to gps_per_page do begin 1jstart := jstart + col_per_line; 11if outpath <> '.CONSOLE' then write ('.'); 1if first_time then begin 4first_time := false; 4pr_row [1] := row_number; 4end 1else if row_number < tuples then begin 4get_row; 4pr_row [i] := row_number; 4end 1else begin 4for j := 1 to vectors do rriteln (outfile, 'Page': line_width-3, page_num: 3); *repeat -if outpath <> '.CONSOLE' then begin 0gotoxy (0,11); 0write (chr (30), 'Loading Page ', page_num); 0end; -{endif} -for i := 1 to pr_max do begin -abort ('Fatal error detected in GET_TITLES.'); -end; *print_parm; *first_time := true; *page_num := 1; *if outpath = '.CONSOLE' then write (chr (28)); *writeln (outfile, '': margin-4, 'DIFPRINT: ', pr_date, 3inpath: line_width - margin - 14); *wte(chr(30)); end; {screen1} {}  BEGIN defaults; *REPEAT *screen1; *fatal_error:=false; *init; *header_info; *if fatal_error then begin -abort ('Fatal error detected in HEADER_INFO.'); -end; *init_col; *get_titles; *if fatal_error then begin*gotoxy (0,1); *write ('__________________________________________________', 2'______________________________'); *gotoxy (0,21); *write ('__________________________________________________', 2'______________________________'); *gotoxy(0,23); *wril print 0 data lines per gp'); -end; *if pr_max > 30 then pr_max := 30; end; {print_parm} {} procedure screen1; begin *gotoxy(0,0); *write(chr(29)); *write('DIFPRINT: Formatted DIF File Listing ', 0' AMB:v.01/85'); sg); -msg := concat ('Gps per page of ', msg, ' reduced to 5.'); -err_23 (msg); -gps_per_page := 5; -end; *row_per_gp := lin_per_page div gps_per_page; *pr_max := row_per_gp - max_titles; *if pr_max = 0 then begin -abort ('ERROR: These criteria wil: These criteria will print 0 columns per line.'); -end; *gps_per_page := vectors div col_per_line; *if vectors > (gps_per_page * col_per_line) then begin -gps_per_page := gps_per_page + 1; -end; *if gps_per_page > 5 then begin -str (gps_per_page, m0writeln (outfile, 'Page': line_width-3, page_num: 3); 0end; -{endif} *until (row_number >= tuples); *close (infile); *close (outfile, lock); *screen1; *yn_23 ('End of task. Start again?', answer); *UNTIL (answer = 'N'); *write (chr (28)); *wk_str := 'INSERT SYSTEM DISKETTE AND REBOOT'; *justify (wk_str, 'c', 80); *gotoxy (0, 12); *write (wk_str); *wk_str := 'Press RETURN for the PASCAL system'; *justify (wk_str, 'c', 80); *gotoxy (0, 14); *write (wk_str); *read (keyboard, answer)0 WAP /// SIG MENU.MAKER PROGRAM (v. 6.2) =".D1"210: Coldstart (320: Warmstart &*X=11000: TEXT SLOW-DOWN LOOP ,X.1 CHANGE DISK SUBROUTINE23œ202:2200<RFa$=" YOU MAY SELECT YOUR DISK BY enjoy it and encourage your submission of programs to our PD library. re breadth of a spread sheet on a single page, including column titles. DIFPRINT works with any spread sheet program that can create a standard DIF (Data Interchange Format) file, including "VisiCalc" and "Lotus 1-2-3." We hope you printer operation. DIFPRINT November 20, 1984 Page 7 for installing simple Pascal programs. Possible Future Enhancements 1. Automatic recognition and conversion of  SuperCalc  SDI files. 2. Inclusion of a "printer setup string," as in  VisiCalc . 3. Provision for single-sheet ur system. To install this program under Quark's  Catalyst , create a sub-directory with any "dirname" you wish. Then copy SYSTEM.STARTUP as "dirname/DIFPRINT.CODE" and SYSTEM.STAR.LIB as "dirname/DIFPRINT.LIB." Then follow Quark's directions SOS.DRIVER. The ".PRINTER" driver in the SOS.DRIVER file is non-standard, and other parameters may be different for your system. Use "System Utilities" to delete the boot disk's SOS.DRIVER file and to replace it with one from a boot disk that works with yoCK IT UP! Copy each side -- preferably onto separate single-sided disks -- before doing anything else. Put the master disk in a safe place, and only use it to make another work copy. Always execute from your work copy. You must install your own ; *write (chr (28)); end. {DIFPRINT} VOLUME NAME (/DISKNAME) OR DEVICE NAME (.Dx)"P12);::"80C";a$;:Zb$="CHANGING DISKS"$d=23:=0::"80C";b$;::12).n=12:=20:"MAKE A NEW MENU FOR DISK: ";N$xN$)<2110=N$ :210 I=1L(A$(I),A$))200B$78C";"ANY KEY RETURNS TO THE MENU.">G$:::320H: Error Routine 202:U=11:"79C";"BAD PATH ERROR (NO DISK IN DISK DRIVE OR DESIRED FILE NOT FOUND.)"X=11000:X:::210Z a$="{,|,~,}; selects; back 1 lev 1600 &:WW=1:0 :SEG=1;".D1/S EG.F" SEG=1".D1/SEG.G"diskname$=3802  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T READ PASCAL TEXT FILES."04=10:"M$="NOVEMBER":1750M$="DECEMBER":1750826);"-";M$;" ";Ѡ,2));", ";"19";Р,2);" ";/П,2))=>13П,2))-12;џ,6);:1780$П,2))=0"12";џ,6);:ٟ;$П,2))=>12" PM-":" AM-" 1830WW=1530 =26:=211660,1670,1680,1690,1700,1710,1720,1730,1740^M$="JANUARY":1750hM$="FEBRUARY":1750rM$="MARCH":1750|M$="APRIL":1750M$="MAY":1750M$="JUNE":1750M$="JULY":1750M$="AUGUST":1750M$="SEPTEMBER":1750M$="OCTOBER":1750T 0")2070H540R\A$="RUNNING "+B$(I),16,B)f"79C";A$;:=0pB$(I),16,B) z::SEG=1".D1/SEG.T"t=+B$(I),16,B) yCT=CT+1~240:=24:=0:"@ ..... "DATE.TIME.LINE" ....JM=Ҡ,4,2))BTM1630,1640,1650,0=+IBOTM/2-.5):I=IBOTM:I/2=I/2)I=I-1 œ2120B=B$(I),16)," ")-1 B$(I),"BASIC 0")850B$(I),"TEXT 0")890 B$(I),"CAT 0")1140*B$(I),"FONT 0")18504B$(I),"FOTO 0")1930>B$(I),"PASTXB$(I);v:520: 500THPOS=4:I/2=I/2)I=I-1I=IBOTM THPOS=44:I/2<>I/2)I=I+1I2=-1:I=I-2:IBOTM<30THPOS=44I=IBOTM/2)*2:=+IBOTM/2)-1:CA)"PRINT.ALL": OA+P 3HA=(81+UCA)A=(81+LCA):::: OA+Q Quits 3IA=(83+LCA)A=(83+UCA)"PRINT.SHOW": OA+S 2JA=(68+LCA)A=(68+UCA)/Screen.Savers/HELLON=THPOS:B$(I);XA<8A>11540bA-7640,660,690,720l:=THPOS:ٺ1600 =Q:WW=0A=:A=21A=9&oldprefix$=40A=31410: Control C "aborts" program to Basic(:A=13770: Return Selects a file *DA=27:50: Escape to change disks/FA=324000: back out one directory level 3GA=(80+UCA)A=(80+L"BASIC 0":150A$="TEXT 0":150A$="CAT 0":150A$="FONT 0":150A$="FOTO 0":150A$(L),"BLOCKS")510*=27:=19:"FREE MEMORY AVAILABLE: ";=7:=20:"80C";A$(L);$:=5:THPOS=4:I=1:IBOTM=J-1:620Q=:=26:=21:sic; +Q Quits."r12);::"80C";a$;:+w#9,"DISKNAME.DAT":#9;DISKNAME$:#9|d$=DISKNAME$$=23:=0::"80C";d$;::12)201M=3:=14:"This /// SIG Disk is \^ 19";Р,2)", Washington Apple `, Ltd."=4:B$(1)="":B$(2)=""A$=16,B) THEN 240 #1, d$="":=10:"80C";d$ ž#1300I=0"I=I+1:#1;A$(I):290,#1 6L=I-1@j=1:same=0 J:SEG=0 Tœ2030^CT<1CT=1cCT>13000Zha$="{,|,~,}; selects; to new disk; J/2)=4:=+1:ۙ=44B$(J);:J=J+1I:1,180,22:2,280,21:2,2380,23:8A$(1000),B$(1000),C%(511),C$(20),name$(20):=10:=0UCA=128:LCA=UCA+32CT=15 IF PREFIX$= PREFIX$+MID$(B$(I),el; > ""*:<"">""""""""""""">>><2"<""">""" ""  ">"6**"""""&*2""""""""""""*,"" "" ">""""""""""""""**6"""""""> >>>xrGA7  3  5  >>< (&20 *, **>> "2*&" " >>  ">> "8""> """"""< SOS DRVR"CUSTOM.3 )((8*,;((*,((+)((9/(p((>3  =9 :9 .(~|L|LNqooGoDDDcc0ccpc]]c"QM"|@@pAATT**|EAD PASCAL TEXT FILES."04=10:"78C";"ANY KEY RETURNS TO THE MENU."!>G$:::".D1/MENU.MAKER",320R",220(204::"79A";""; 2D=1:F=1 <#4;a$ FD=D+1 P#5;a$ZD=60#5;12)dD=60D=1nF=F+1::d$;::Y=1100:Y x13402  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T R".D1/MENU.MAKER",220 d$="" A$="PRINTING "+B$(I),16,B)=01:=0::"80C";A$;:#3,B$(I),16,B)Z=1#3;b$:"78A";b$Z=Z+1:Z=18:1290 1260 #4,B$(I),16,B)#5,".PRINTER"+ž#4#5;12):::".D1/MENU.MAKE30C$="N"C$="n"1160;:=23:=0::"79C";"PRESS ANY KEY TO HALT LISTING": $1020.202 8::Z=1B::=23:=0::"79C";"WOULD YOU LIKE A PRINTED COPY?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"1170*C$="N"C$="n"79C";"PRESS ANY KEY TO HALT LISTING"::202 1020#2,B$(I),16,B)ž#242:::1160Z=1#2;A$:"78A";A$Z=Z+1:Z>1842:::Z=1980*:=23:=0::"79C";"CONTINUE...?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"10 MENU.MAKER TEXT MODULESEG=0"MENU.MAKER"890&*X=11000: TEXT SLOW-DOWN LOOP ,X.1,180,22:2,280,21:2,2380,23:z:A$="LISTING "+B$(I),16,B)$=01:=0::"80C";A$;::12)>=23:=0::"r|>00000>0# #0~$ <"<"""<< <"""<"><$""< """"  "" 6***""""""""""<""< :< $"""2,"""""**6"""""< >>>>88  >!SHOLES 1!1!2@23#3#4$4$5%5%6^67&7&8*8*9(9(0)0)-_-=+=+\|QWERTYUI OP[{]}`~`~ASDFGHJ K L ;:;:'"'"ZXCVBNM ,<,<.>.>/?/?d0hp<=m@=>@?AL8 >m<>@m=@<=L8 <m>?=m@AL8 C9L8 ; ;k`;);k`,@`<,m p<L<`<p<`,ms<L=q=L: ,lXґȥӑ,10 h0  `,g0L  ҅ӥĥŰ+,0p 4 Ls  Ls i )"|tȌs|st HH` MjH,: <J h̰ <rh,oL`%CYgu9 Ln90$0%,7 ҥ L$0T,8OK50P;ҥ,8 L%\   8҅¥Ӆé҅L,5,6  & @jIH,5 p  He҅Ґhe…å逅h,23Lhʩd8,h)ec efeede`,5 H  h 4  `5!    4(P 4 4  `,g0L,10kH0 ԥ f0)ĭ9)9҅xh(ĥŐL i,1HȊ©L,52,9-P" a{) b) )ab)a a,h0& &+%a0 +hcefd(c,@cfabdf`cnx  (,4h`dd,9P"<:J H) +̰ H) +ʭcP h̰BTVSPLH   5"ʘ HH` (# (=  0`)aIٮ@8pذ `$0"8,:Jک@ׅפ؈۩MjL,:08*Ȅ B ,:J}΅н(I I $0;P̑бʑΈ,:JՐrx 0, )ߍ:) J)*PR,T,V( : `,k<,: JI`I`<,:J̰`=m@>,:J}ʅ̽(I I `<Mj,:0pJՐ̑ʈ`pJհ0`ՑʭrpȐ`=m@< B h A$g " x) (,`% (gL,}0, `gé ĩ `:) j:;jN;~j;O,:0'???>>8?>p<<AAA@@8A@q==C)CB)B C }LO}~~Șݻ~`}}~L< L }ީ~` ɠɀ)ӮԮmwӥmxԐ mi` HHGH`  &`LL) @L) L8``Lթ`~L8L)  =H 'HH N M))Mhh0    ) . 6 = J P S X [    $ 3 : = F d  > B H M s `e|&+.QVYcjuy~':{%(-47=FMUX\_jmz  .169DWfy   % * > A H K Z v z }      % , 1 5 : = B K R Z _ b g n s x ~ /47=G\x{~'+.149?CGIKMOQSUWY[]_acegikmoqsuwy{}J) ܭL FܪJJJJ)`'+9;=?ACEGINR\aejns~  #&).369<ADGJMP^g $*-06=HLORWcfloruzp Q%Q̑`pPIE1pΦ#$01ʐ1`JJJJ)`%υߥ`1(ȦJJJ`&&*`JJ` **&*&ߥ`J` ***`` ` Jjjߊ` ߊ`JfJfFߪ߆` `JfJfJfF`ߩ`$011̰JJJ LP \LD$7߭$PH8 nߩ nh ߍϭ - k, ϥ- kϱϮEϑʩ`P z  HH` k(h`$0#$E$0p Q%Qʑ`pPIE1p$E$0(L%τ`ϩE҅0Ȅ(fL% ('Άѽн`8Hٰ hIiHمh8Iif٤Φݰ>Jj8ۅe݅eޅ $  m`!J8݅ eۅ$  m` , V $צ!ϤҐ мφi`Jf`<,&ʰ,i8i#Hiihifʦʆi) v`i,ʐi,iPIIʥ)ifʦʆ̐pLj/Fϐ&Ȅ`'@τ`Fϐ@ E҅F8ئȢΆѽϽ`/epɀjff&ݥeepɀjffݠ %)  %)`%  0.)      0  ` ` @ ``8٨JJJ ) u˘ vͽʅ̆`8Hi #i,$0F y բӅLx  mӥmԐL] h `  )`%)8`)    H   ʥ)Ģ    H Ģ L E% %) L 8`ۅ&ۥe륅eٍeڍ808٥8٥ 8مڅ H , V Εm٭mڭ))njnjnjfjfjfj+mӥmԐ8L( Ӣ й` m j`Hآ Hӭԭ h h`8٭028ٍڍ0Z$eٍeڍm٥m8٥08ٍڍ`8٥058ٍڍ0ԭ V 8fxL@ ] I)!) g 80 J8}L y L 0yʽz0 y L7  Lh `*f*&*)` ϭPh0 йPL)`)L` L``  `L` H , 8 V ТΕLϦI ] +)J* g ISOS NTRPRHeLZĠР쁭堠堠ՠP򠭠έ魭fHhH_HcH uhch_hhhfhi0hhhB B A` ֥'( )&񦕤LNKM$Lb ě $m wl "m6X6+5 56ɀ56H $mhɀ(Z)& mL k~ wlL ͝dL Nsd# wl^_ ꂅ__hg^`8 悕`gHhHhH5?6@6@*5g5666gҦhhhhhhhhg:e:;e; ;m;`@c@c?be^@e@ _m__^ \Lx] i6g55``BY BSAMHH H] LPL(\)&P ěj9ȑ9ȑ99i=:i: >i>`Ɂ7XWWXjnXWi` ]?@@bgchch )^ ]b ]b^b^L\b8g+H__^8_ABB 9::)ѭ [ I[ aυ婶ZeLLL^$%Lae LGidFddddddd.ddddddddd ɕdˏd`Ls  Apple Business BASIC v1.23 - Copyright Apple Computer, 1980-83 CTERESOURCE UNAVAILABLDIRECTORY FULDUPLICATE VOLUM ERROR Please Press SPACE BAR IN PROGRAM INTERRUPTED%&'(%+.@C$DE FG!H"I'MN#PQRTW(X潭`: 808`:dd@՚H Z#IJJCSTRING TOO LONFORMULA TOO COMPLECAN'T CONTINUUNDEF'D FUNCTIOVARIABLSOS CALFILES BUSNOT SOI/FILE TOO LARGWRITE PROTECDISK SWITCHEBAD PATFILE NOT FOUNPATH NOT FOUNVOLUME NOT FOUNDUPLICATE FILDISK FULFILE LOCKEFILE NOT OPEDEVICE DISCONNECONV&CONV$CONV%LEFT$RIGHT$MID$INSTR>=<^/*-+NEXT WITHOUT FOSYNTARETURN WITHOUT GOSUOUT OF DATILLEGAL QUANTITOVERFLOOUT OF MEMORUNDEF'D STATEMENBAD SUBSCRIPRANGINVOKSTACK OVERFLOREDIM'D ARRADIVISION BY ZERILLEGAL DIRECTYPE MISMATNDEELSCONLISCLEAGENETABTSPCUSINTHEAMOSTEANOEXTENSIODIAFNOAAAAAAAAAAAAAASGNINTABSATYPRECAAAAAAAAAAPDLBUTTONSQRRNDLOGEXPCOSSINTANATNAAAAAAAAAAAASTR$HEX$CHR$LENVALASCTENAACONVOERRLIERKBEOTIMEDATEPREFIXEXFNEXFN%OUTREINDENAAAAAAAPOHOMA SUB$OFTRACNOTRACNORMAINVERSSCALERESUMALEGOTIRESTORSWAGOSURETURRESTOOALOASAVDELETRURENAMLOCUNLOCCREATEXECHAIAAACATALOAADATIMAGCADEAPRIssssssssss\3!z~IssssssssssssIG%ӓ,ssևwn7}|tttUUZ{fzxxˆU膅[L<^ENFONEXINPUOUTPUDIREAWRITOPECLOSATEXABYAAAAAWINDOINVOKPERFORAAFRHPOVP̠Ώ h:gpOn[n٧s]ds3issssssss0b>&dsjs|T}|s[ŭ᭭򭭪𭭠򠭠頭퀠Šӳ頠𠠀𠠠堠젭ӠΠdHddhd) _ ƢLh _L>h jhP _S @a-Qggeg5hih 6i6 "]S" ]$%SSSg a aL^ S S`La8 SiUjjS):,$f 0$ p $ 0~!L`!sm?iٰcL`S )!a{)Qi ڐ߽S) -ai) -aɢ ɣɍж$HS -ahʥ0SSȩ5%"/װ&hԐɈf0ɔĐ 8,f 8f L_ʅSS=ȄL`ȱi8eii LL<^~p l nhhLgOPP` Add# 6d s S SS@Ln A " r ,; s lLn#f  ;П ⭩,SLn "mʆ,S _S% nLh "mL_T ST#L(, U VV ׫$ 0  QpU= d hkddhe##5ddˏdd?Ll ,?#$04dHHd = d hkddˡddhhd`LsL#&F  ; s b 0` L+l$ Nsd#Lzm566ȱ5Ll H# wl m#͉LchL$m QRKLLsh$0LU$^`=8WW>X> 悅XXXL:^ g`L<^ l Jj bx bp,_;Ll  ~q$0P oՅ5R66R l ~ L%l $m0 =k $m#`$L#i)8#Ll  s s( L7bʊ# L-l m hxd5d$0H h`L^bLb$%/%5$ &5 &5e$$5e%%$&%$e$% Lk ׫ sHH ~qLPkHHh$0'ph | ZlWȥmW`L$|hXWXL-hm lmmLkl VYZZ{|| w ᐥlmmYZZ LxWXX ox ExYW# kXX 4=^W^0A, 9:: Ga.ghh 悅` A` \\ɾ,L<^hhZkKhLhhhe9e:: mLg jei `Ls j:,"hhhhLgɜEɝDɞLb Hɾɺдmhɾ Qp aj pi `p j` jLi j,d wlOZL^L^-L(dPL<^OPMNKLhhLg` Ls ҥ?ieCiLa,  aFL s a iLg ]hhh5h689H: H:HLHKHH6H5HHH` ui` pi` Qp j pi `p i` j jK$L%8eȢЅ iLOPP$pX0S&ȱhȱKȱLe潥ɂ逅$L# $mKL x~ m khLgLsLc h5逢)&a TH THLgL6k8:9: STT`)ɀLK$Lb8gLOPPKLMNhhm Vf0 mLf) mWA 0 -a mL8fW;8<< 悕` 6kLU*i kXX 4XLy \\'_ch_chbi^g \ihh ] Qp aj ih `p b iq bqn %jjg56Ly { b bq | XHWHHHֺh$PLh wlȱȱ%$LWH mh x~  m#W", mȱ28eLeji`Lwl mȱ"Ɂɂ ȱ :, iTjj ȱiVjj8逪XW0 Vf0WHW$ 0X: h ,@dd )e dʙdH &eh(dL ddک,ddLd:e``eLeHELLO ue 5eLse6e:7ee8ee:e`EAd j @a(% -, bLs j {ghhL<^gHhHhH , - b j$% @ag5h6h6hhhhh8g5h6h 悅`6 "]La ud `L  d.CONSOLE[[ TdSdddddd0 ddddd`dd A 6 s e 9c()' 9cKHLI jLdj89弅:彬: 悅`H hɝɞɜ)`dd  6芅 e ()'` e'()HKIL 9cL>hL<^) i!Ls j @aLK$L% :: 悅 lc!)` +b` +b` sL :b#`L,H s h ऊL(,L8f` A KL jLdjOPPKLL h AKL` Ѽ   (`H shLs Aji!S)Lt`SSS`L` z :0.`9::hhgg.%g& $gegަhH逪hhʰ` ҥ [ aLT ҥIJJABB=>>;<<?@@T ě hhhHH  `89VVE$ P% eT{||Hd ̐h p IkLo00$0 L>o "m nV dj$D$ P 膼Lo$0",i [ kLoHSHhp< {}$ p0H 07h ]k ,LmUVV `p F sLn 2 ukLoF вLm jȪL<^ȱQȱȅR dj sLHoUVV$ LhU Lp$ LL<^opL^```?EXTRA IGNORED?REENTER $0pL,`LgXW ׫ k*iXX 4X \\L<^Xii7 { n k$ |WlX &{f o0`LB ` H$ge &{h 80 '~L}H |h |zEn{iLxf d$h0Ly ef q80fL}COt#t$JZ mLKjk8 | ~Lm ^|-$nșRnȩ0iL f~ azea~ } \~ } &{e B{e yx %}ei0nihoi8傐IL|`7 z!L|iD8$n yiLyn)FjjjLyiɠ %}nnI*imLyjklm` s e-o+ smo..IE)2s S -+fh r$h8fL}fg s$gPf8ef B{f65m5l5k5n j5i`d,]WXX566 |m5 ^|l5k5n %j5i5` |m l)m |m`znth` |ht`i  y my`i n*` |jkjI*mlinLyFn`nEz0ʢiH xv5ui`uei0,iiL0y{n`nI0hhL,yLy |i{ xi` |={{ {LZ{ zL{ |8ii zivjwk xlym* 蕁24(y&x&w&v0⨥ymyxlxwkwvjvL{@jjj)(L{L<^~jklmL y56y^Vy dv88; 54541r |LiHi z xz U{y xy рz xh '~z zLz z~ zm zl zk zj zL{LyJ eyexew~ev~f~ffffJ`5665y5x5w5zEn{z lkj |yjJkjlkmlmi in`emeymlexlkewkjevjLkyi&m&l&k&j8iIiii9fjfkflfmf`nIngjIjgIm lkj`L<^}i0vvvvvj`L656 wh H5Gh`lmm566 Lx5Hȱ5ȱ5 F665 w56h(` x("LH)&h`( '&'`lmm566LxĠLx znInEz{iLx y? zL||uu`8i$iznIii0ĨV y${Wiuu8Iem_B_B`)&N> ȱI8gJJ hhge ghh f feLH>H= x\L|F )XHABB8 __^hHI8e^ @1 @+?%GHHHIJJih BABGHh`$  ě u Дs IJJ^__Lveȱeȱe `LćHƽ Ƽh`$ lȱlLL{ɝɍLɎСL s HI s shmHmHlHHɦ# shmHmHlHH , hHLt  ,, shTTLui ui,L3$0 |Lu xijk6kxyy xxy6i L[ s r$PLsi,L3-hLs L*tɘcɭ_ TTLdd`jk8L|L3L3TL3,L3i LL r$PLLBLsș Ȅ ( qƚƚ` s s),;,=,#,(,,ѼLL<^L<^ llmm$P$?TUJ)TU  ' Lsi imLqLsh E0`H ty ))ELyq  8 $0!PizEn{dUeUi hLqLs `wLr !L2 {}$ 0`QɀX zLs.+"2mXm tL qXXW zzEn{i x }H$ ]kh8 )KLe9e:: }Lgi , p s$8$0p`PL<^Յ H s r ɀ ȱX Hih0 & ?<I?iE W Lq s ) i8fe.șR0șRmymlylkykjyj00ڊIi i/ȄȪ)Re.șRI)ЪR0.ȩ+f.8f-RER/8 i:RRRRRR`y`'d |Ģ {ZuL.y +|z% T}uH }h{ ~|H !z az ~hJ inIn`L~8;)q4X>Vt~w/z*|cYX ~uƀ1rP aziP | |iɈ { T}i8Huiiu x BU 瀩{h z` |] az 뀩]Laz |gȑgʆ5a g5ȑgȥg <^^^__ɂ逅____<;إy6 hlhm^Ȋ^LL:^ȥ5^H^h ͎el5emȆ6п  ͎e^e__ iLZe *& eegggegȱgehh Ľ ,L<^  8` ^LQ ŠhhL6 $P 訽5 ͎56ۥ 8ee L:^?be^@ce@c __^_ \__^;<<6  $Phihi^Ȋ^6h656H |mHlHkHjHiHl5 8eeghh^__` HHH H bqh hhhn0iɐ1 }L yxL%}\i FHHHHH 6hhhHHlm ,҄ shh)>=>hgh<<;[a{p ;<<ccb? @c@ube.a{bb,\(eb cc`ebcA[8饰 a{8`8\e@@He? ]@@?hbbb0 ea ȑbc8L@ @@h5H ?5^6_6_hhXhXhWLk ? % ?Џ`5566` xe5566ɂ66` s p `  zLseff z.!'$ iߪ$ 0 H8eAi\h$ P8 (Lt$ 0}5}} ,kk} , kklm Lٓ[ 80@ 6 2`  dkH) ojhJJJJ ojL 0:i`L<^ jHHHHHH s jhLyqhhh6h6h555_ȱ5VHHHH %L/5H6H6Ht $mlmkljkij8ihn`L,$0DpA q enHi80 @Lyu \ % @u ćh `&m&l&k&j`2L0 և yxLT}$0pLI oբRLi `u LLi u Lui0 ܆ چ,,% п 擩lm0u 1eL5665`iɀ*iH i  @8 ei $ tutt tj ȡhn` t` 0RN0R 0R$n-RRR`i` p`5665i`$0BP?iH i hLbe55f5f6e}Lme6u5u }`6ʈ`v`jip` ? #  ue }~ %u $ چ 0 u}` L uu  ) }Li <i@L{i$i0 p $ 1`ui` LL Lbb `}i~ei^~0] e e^`}`566i5`_cf_cfi^eub` ?^qbep`L<^ ?8b^e` rp`I` ? ㄩp^|be #^b ebbu|beiee^^iL56^f" ऩ थ (! ( ऩ थ (" ( द!LGb8Lऩ@iu +-ELj) e | ^ .' "5 1 p) iIii i)Lm` ?i $0 ׄ $0 $0 ^`Hhth`^Qb ^^ 8` `H Jh(L悈`H逨h` Hh8 Hɀjhji` HihJi(`  ~q$L ɺ b$P i pi$ȱLdjɻƟ dj 柰ީ Lihh sLg  s ! b   s "!!!+|] {n LU{HLʁIڢIڢ-(h#5ᆥ](IڢʥnH BiHɁy U{y рhɁ xhLB` vy{| g|S}dpL}Qz}c0~~D:~L̑56gh6hegehh `iɇoȘ戅 aziȅ xdo`Abi$nFn) i  j g g ^ ܇.Laz͠Lć ^ ׄ& ć ׄ ć ͠L- x |z K{ | T}{ x xnH yxn0 I B xh B Lр |  e` ě u8A?pB@B@ )onL܇jkL| Nsdȩ8 NsdL2Lа,L<^ A s ׫ g iq s= sXHXHWHHHH ajL? b rLiq HHH s iqhhh5ȱ6ȱLI65 g5H6 2|HHHȱȱ6H6H5H s =к bqhhh Lshhhh` ~R/mZlmYZ PujHkki^^`H"h{||kjkȱ{ "ie{||  V{|56|6 w&5L<^i8pJ LUL-LG -$p0`pog $mkڥrok8o,koLdjAaCcoJ mko 5 $mkk mLw L L HG56H6LExh  (`|||}z,A[ :808Ш`,ޞ@`y Gy`LHq,;' L Pu  pLLwl`|H}HzH{HHH ɶ# xhH s  ~q s,; Ls  ~q$ hxrL iLpnH ~hɀ8(*iR.-:/ RRhhh{hzh}h| Pu p 0|8cJcm J_mm嚍J_AgBhBh \^A_B_B` ^"( zM jF566 x}z{6{LҜ #z{{"} GLsL<^ jHHH i dj ٥z{{ j}hhh ;в| |膆  RRRRH uhA?B@7B@87F8f7877878L:^7 8*JA5gB6B68 悅h圍h?H@H@HI?J@J@ "]h@h@h?gAhBhBJJ8 悅J圍J7ߚ8BܚLs`䚌B L:^`Ib^J sL͙ɚʚ `pAƚЙϚŚњ˚ ̚8 悅DDF͚ Κ8 DiFEC CD)ӚDmӚDԚCBКLěŚAݚ⚠IȌ 8 ꂍ  8 ꂅJJ` !7Ri88 pi UŦLUUU HHHHL 2hh LW iL 2hlhkhn jhimhHɗ8 Ls`LIŚ1CUDVDVU Lŧ 0 7U L`L:^֩ ŚEĚ L| Qp QeeRee8 1 V` 痠U` hh R LsL  z (L[ Rީ  @Y%(&:$LU s և ^|iHn %jHkHlHK s n ZlHmH5 s iH jHH楩e ) ,LsLR eՅ7V8U #   785U6VLΔU7e778ҥU^V_bcF_hcCgDhebbc \^__`U8傅UV` |UȱU` L<^ |UUƜ0ƛ ӗWqeWȱWqei W` |8UUWȥVUX`UeUUVUO / +'L U)łiV VL LI 8U 7ȱ7 UU ЯUVULU7V8 p L LZ U qUU qUH85h688V77U U 5qUWȥ6qUX7qWWȥ8qWW ٥IiV) V LVU?e8V je?e>e8U>e5V?e665e=e@eee8 hx57 xLCx8I77JJ8 88` H dhjL YYHH dYZZ oxhhe5566ɂ逅66 wZZY L YIL=m ) s  ʊHYImm shhhhYhZhZHHE` 3YZZ xLCxl5Ym6Z78ߠȘH yxy hL3 j kqHHHH s H , ,H s s ~qhh 1 lhhXhXhWWȱW7ȱW8 eLNLXZWX ` GGH HlHmHmH khmhmhlh hk8j7k8Lޒ e7788IjJkJk )lmm'&`UR{R||L̐: / cRRȹRRȥ Rл s `Lsh sh5lh6mh6mhxhyhy x x Qȱx7ȱx88 Ƃ 7e7888ł75 1$u tAvʘtDթ q(~th`pvquts~y fp$pp8j/;XAx=|8ez{{ ghh "o `L x  wwghhoؠKkqvj L`$uZuukvN kGv@  vvyLj L ʟ,-uukv kv@vvyL5Lj ʟA80멀uukeqqtt$uA)*t L; $uЫkЦuuj ysLq,kl$uhuuj XkkNuuj k 4%v. #  kddʪdd LLsLcdS L_H hRSO s ɋ 0 GeDe ˰GeEeHeFeIeLLsGeHeIeD=ee>e?eJeKeLje֩ u>e?eՍ "] a a$% iLg֢   sLj$%`8f  a e ; ` s ɩ` YLILcopL7 z0xH ׫$0_ ;h8fH`aai shH2 h zJJJJf Ik ɩ` ̬ t os YLA ևLLק jWXX` ׫$`pd8isŠt`dyoopd8ip`J uv`&&&8孪孪宐橈`! @ uA?B@B 悅@=g>h>h ]=i>j>k a=g8i>hj>h 悅ki=5j>6k6k;el)@7Me0u(> ƬƫHH ,hohp` ɩCe0R`ȹR`ee?e@e ue 5e T L=e;e`Lso`n}pm aa`dyo ɃɄ b`" lJJJJYe s ˰L8Ls LԫN l@u=ekPe tMe )llNesOet NeOetMeCOeNeȌ=e>e;ee :RRRiRȐȰRe9Re: J 2IHJh*=>> 95:6:6R L1 1Lԫ`L:^  aFL^R, ue 5eLڭR7>e?e5e5ehe?eLje LjeR=89R>:>:iR:RiRRiRL`8(RR(`EeFe  s bq Vml0L%#%"$w"$#%"`荚ٍ荺 荚`荺``` D ( )  * ) 4* * h* ))` L% q ȥ q Hi hi  i" i# #% $ȱ %ȱ &ȱ '`<!((g %(r(z(q( %y(i(0z %"#$ %&' $"#$%&'   `%$%ɠ%* " ~#C #p $ %*0"#)#)i $"% * %*  L! {" j% %ƌ(X#"$% "$ #%%& '   ` {" & ɠ% %)  !( (" %(r(z(q( %y(a(0: %   "$%&e$'e% R % < %e,ȥ,*,- y,,,-,,,ȱ,,- yL+,ȑ,` 2"p-,-L(Ġ %>,i-i8, ȱ,%,W,pp ڠ %p`l  " ) i SOS KRNLb.D1/SOS.INTERPŠ̠Š.D1/SOS.DRIVERР頞 0 ) (lH'&3&'&#e'#%e'%'&"$"$#%'#%h`$eh`L)i   HH `TH..TH..TH..THATS ALL, FOLKS!R`RT RT`#RT RRRRR`0R`RR 㵩:RRL㵆  ~ RR`BLOCKS FREE: BLOCKS USED: TOTAL BLOCKS: sj]"]\AjiGa@aI[5x<^sě xCxEx5eҥV{}g}gkj̐kIk~^hT}27uejewsHH st\hh H PASCODPASTXTTEXT PASDTABINARYFONT FOTO BASIC DATA WPTEXTSYSTEMRESERVRESERVCAT RPSDATRPSIDXAFDISCASMOD AFRPT SCNLIBk;eo $'>ed?eehi?e ueL5e qrL,op ɩ`et?ek;e`hZ L<^hZL<^L=ee>e ?e`opqrst !` T֩xxMH]@ Kۅ5H ɐE$ eİ Ȱ h`h`8`W h8`hR`hLҿ i x +ۅ5ۅ6 ǰ `E8<W`­ `0XLۅ5 ɩE` eĐL Ȑ 15WL QL5WW{5 ې'`,55 ې'` ݠ B1 ȩȑ Lɦ8`5  @ R㥶i ` İG8`FХ+jѲ84ƳJJ 2ΐ3泑ƳLTΩ潑ƽ`ƱƳ ΰ( {Π۵*+)e`8`)` J J + ΰ" 0 ΰ 🱼ѼL8`ǩ Ϡ` ϰ ƑȥǑ` Ѻе*`)ȥ+8ۍې  ,ѺLTΠ"LΠ5 խ ɐ /ݐE`C8`)@ ϰa)ۥ,8ېu+J,\ ȱLJΠ) ϰ'#,J(] { ΰ ƑȥǑ.8` { ΰ,JѲ ƳL΅ƱƳ ΰҥ,J0`#$"0#`!qȱi 5H5Ƶ ǽ jh5`L2̩ƍv̥Ǎw̩ÎL%ϠƄǥLj̩۬L~̠HHh` ̐`*ѺG0?M`)J"u-- M8`۬` # ː`  = O̰)= I`JJJJѶQi Lˢ  0 ̐ `"L˦ `H8`8$$"$= O̰=`$0`#$"0`$` H hQ)fʅ F jF jF jF &!  eװ*  ̰F湥 ƹ`Z8`@  ʰ泭ۑƳ ʐ` ʐ` ˰ ƹ Wː`ۘ . . .۪8*JۦȱѶ"` ɰ Ȑ`E`Ɔ X̐8`>>5Ѷ Qܩ<`>`\ʊJJJJ ۍ۩  ˰Fȱ X̰6 0 Lɠ 0ۑۑ8ȱ`H8` ɹ $  8JJJJ8 ` ۠ǽi `< Ȱ+<#5 ې'` ɐ /ݐE`W8`R` 5&i ` Ȱ 0i `<8> ȐT eİF cȰB)Hh5 ˭)*ȑƑȥǑ'(ȑ`L)ɭ)Ѷ*e`M) `ۅH)Ѱ%}ʈh Qܐ'``hi ` p6۽ʹZ5 HȐ/i i `гW8`0( ɐ Ȱ ʮ6E`5 խ ɐ ޢ ȰLȍ۱Ǎ X̰% & !J8` *LĢ `8 iۥƍۥǍ`ۅ %  6 )Ѱ Ѱ` 𝭧e ǐ bǰL*ۈ5ȱ۠ƍȱǍ X̐ H h1  /ݐE`ۈۅ ۅ 8ƭ X̐`LLŠǠ  ݭv̅w̅ ðzv̍ŭw̍ŭƭ ­ōō T̰]ŅƮņ X̠8iȱiiȱi ṰŅǭŅ XLōۭ۩ۅ ȱ8D`F`8eYƍťǍŠ)͠ Wٍۭۅ5ۅƭۅ X̰ ìۈۑ T̰ۅƭۅ X̰ۙ%ۍ" T`K8`)` İ ۱ۈ` ưW/ۈęۈЍ۩@` 8 MƐ  5 Q8`LŅ ۅ ۩ۍۅ Lɰ ʰۅۄÍÍۙ'Ù ۍ*ۨ  Ѝ۹ۙ8v- ðJ ¥ ð, ðLO ʰƥLT`'  mې浰``8 8 nʰ0 ̰+泱Ƴ m° x̰ ̐8` m° x̰8 ۢ8 ˰y ` ¥ nʰ泱Ƴ T̰#泪 Ѳ *Ƴ ` L:Ϡ`泑Ƴ` LaĥH8`JȘ I8`  S`ۈۥۥ۩Íۭۍۭۍ հL¢H8`Jj Ȅ ۍۆeۅiۅ Lɰ ʰWۅۄ ¦J>  *ǵ յý5Ņ4gȩυɩč5 iψ }.8` iϙLIѠ ˢ L΢ ΰ LϠ ˢ ΰ1` Đ@ АP8`B8`ۑJJJJ -ѥ N8`) ))УJ8` ۑȭۑǠۑۑȭۑ($S8`O8` "` / 򑺠+* ͐H h8` ΰi `()=`Insert volume: Τ in device: 蠠ɠ then press the ALPHA LOCK key twicex)_ @,P,R,T,V) )) `)8( ߠ',@ ߠ0  '葺 ݰL`5`i 祻(8`2ޝ51©ޅéąŅƍ >ϩ 1ޠ== f ɰ`ޭ`5=(5= i Х(`=H hDC5 L3ܵ ɐ /ݐ 8`5 ˥JJJJ8 H h ` ܠ825H h5 ɐ /ݐ 8`Hh ܥ5 `ɥܥܥܥܥ5`܅܅܅܅܅5`( ݰ)Ѻ ݰL ݰ泱Ƴ ʰȭۮ ʰͩΪΩۦ eװqȭqLJ  ˰Aۅƭۅ X̰2%&N  ʰƭ X̐`Ӏ堁ӠҠՈ՘̠ƠŠӠ̠ɤӮȪŅ͠Ϊ ܆5 HȰۈ)ۅƭۅ X̰ 3ڰLÍLT̥L㼠  ʰ` İK ХP8` LɐH80)N  հ)@LO ˰)0 ̐` M ­۠泭ۑƳѲƱƳ X̰ RڰäJۑĥ` İo!)N8`WپX0 ĥLä X0 ĥLà !"#$ Đ2@H AڰCŰrP` 3ڰ(` AڰѶ? İG8`Fە1 ռ İ ЩP߭)@N8`1@8` Aڰ񈱴 ˦,+* ʈJj =ؠ yiȩ`y4泱ƳHhz ʠiȱizLA`L;ؠ"  `1` Đ7@8V۩ Lɠ۪8ۊ۠X)JJJƄ X Ġȱ۠ ȍ۱۠ ۭ) ۍ ð*)#  O̰``)(`N8` ) xհۈ ̰آ*գ  Ͱ ݢգ LvL{ؠ;i ڥ(8` ְ( ȱ5 HȦ)`Lxץ: ש ְ⥺i ꥻ(8`Lx Lxש u )۠0)p խ.8`)@ ϰ) ϰۈۅƭۅǭۅ5 X̰ *ƭ۬͵̶L  ΐ` Wհ> H۪ȱHۑhƳh sϰq ` ʰiȱi `)5©éՅĩ5 }JJ+`.`8`ɂ )`@ ש ְO ֤FHۑۑh8`P) հ Wհҥ,J+j泭۪ƳۑȊ ) ~ fPL ͊.>.ʱ+,EP!.E.Lw+,,ӄ*- P*e (` հB հ5 Wհ0,J۪泭ۑƳ sϰ(` L Ͱ2 ~ P kҐ#L8 T 2ΠHHȑhhȑ`Ld )N8` xհ*eȱ+eȱ,i۠Ѻ۹ۑ񥤅- ť.Lcԥ.La Ͱ$)rJ Lɰ )# Ԑ) ͰU..++,,IJ/ ӥ-.?Цե,J+jѲ4Ƴǥ4聠 H hH kh8`8-ȥ.L 8*Ʊ )8 0*-`.G.ʱ*+,EP'.E.LұE0+,,ӄ*p-e  )LBѠٳ )8`i (` )N8`*eȱ+eȱ,i۠Ѻ*ȱ+L - ť.Lkҥ. ՅL ͐Ld ~ pа.J/)@߅4ڠ) w߭)Ů􅮈 ߠ'x)) J,QJ,SJ,U,P,W(`)(()  8)j`J j߅`0X ٠͠堘ӠȠŠ堠󠠩à٠΀ƉŠŠӠҠȠHHH *ح)0 D) HHHH,, ߘ)@ *)X  xI)}h)L, L ) SYSTEM FAILURE = $hh8`hhhxآY_Z@tPRVT,p S JJJJ ) ʍL@ i0i6`îӉ͠堧ǥӥ``HhHy)(h`H` 0L?i `h` `` `x)( 8 `jjJJԥ)եӬɂ )Ӆ҅`  `H0Xh`Π'à̠ȈL` 8`څ  Lk%  Lk8Lu텚8嚅 L L Ld V ``  h` ک V `ۅץ  VLFx) ( :` H ) L  .P'pб0 &L:L5'8+8`0Fܢ` ř,Ř 0 8f)J ӭƅХDžѥL1LUȑ  i ߩLL )  札)  ҩLL` **éL0;` H ) 4 )ߍ) hjjjjۥ0CF = -$(L !LLL&L L-LJ٥eƦ ,L  # ` (L.L…ҥÅ,] Xx,f (I0јIFjFjFji```x@gŽPy+wLwԠ͠ŠԹ.D1 .D2 .D3 .D`HJJJJh)y` (2%H H @`)h8`  HШБˆeЅАѤ  БĈ` H`)à`֩ нѽ>`]PU]]UPPX0 0 PPXPP  0h8蘠fȊf` ab 1abo)abaݰb L9c`` a N0Ioa0H ha`pLopna n`  3ɠ/8 L %iLɠ8逨J Hh $`b >_-%^%p_^^_ab"08^c_L8^c_L8^c_L8^c_ȑcc\] ab^_ ``aV R0M bba dda `Q8STRQ ST`c\ȱc]a  b 5DU e\^e]_ ^_ ^_LH8\^]_?Je\^e]_,78\^]_ ^ݰ_ ^_LH^_ $bL@A^_aoQ*@A RQL@A `T8`RLSJTKQHIQiHiIKNJ)M8逅OPOPHMIN'a MHNILHOIPaOHPI8JHFKIGFGaHMINNMʆSTL8HSITQQSTde0f`   cCȱcD C Ea  UV 1 ELUFVG FUUCVDեYCWZDXWXCUDV[ v`b0WXYZiUcȥVcWX eeYZ ggE` @SATRDžŠƠŚ̮ÎȠ Ӡ̠Ӡ` LL#L/LL'Lgab `abBcd cdBrcadbho:ab.cݰdDcݰd8abҊ v+abcabRcdTefVghXijSdfhj RR`^0U ` 0 ʠ0 8 `ůàՠԠàࠝӢӠ ȠDž̖͌͊頀ϐωŠŠӠҠȠγ`%!^0 ^)@`a R =` *^)ـooL]^)?i |TU QTU]qUoqTITsUsprRprqs]ToUXa` RL=Xa` R` *R`X`U T  *\AX[ @F\B9ɏ5\o*Ɂo)[[ @^`U V  *C?^0: ݳ ٢ ^)?i` *)@o `p^ XiH 1h `)X0 8~X 1`C X`)X0`C РǠ𠠐ŠŠӠҠȠƠŮƠҢâӠUAQY @?ZY 9ZYY^TU QZoȥɭ }`` ? }``  }`X0i 8~XX0H }h襯` ©Wéĭ }0W`F X0A */5BL. zF`LLz Lz`Y `Ơ堧 B k L( LO  %   }` ` ?!©UéĩU󥣍V }`` ?)) $p10LYeieLVȱ d0L`Hȱ hh` WɸSI I.ȩ8A 8ɸ4ɠ(H)h h8   `    i Ȣ d` $,)?P^ GL㢮 5L}P.)(Ơ L`ޠ LR  稱 I)0JJJJ騩  )* i LiHh`PQPQ>P Q,PQ"PɀQ@PAQ`8`nɀ<)nopoLpp`