@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}} HE |||DDOS DOSDOS SYS }}}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED* MENU 018 COPYING---D1:MENU4}# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 1.?}D1:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 128ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uEiͩkΩ͙kCop j`j {j`Hi͝Νh`V}L"UNEM:D"NURͩkΩ͙kCop j`j {j`Hi͝Νh`Y? O XLAPNB0D +26-?:C: X}hhhԩ`,<A6,DAdAUuA@'A @9A@K@@]@ Y}@7c(}uAR@++(#++(#| Antic Monthly Disk, Apr. 1987 | Z}++(#( | Side 'B' |++(# @  [}-@A $ GG;@@,;@ ,;@@,;A,;@,;@@, "D1:MENU" &&@ \}@D:*.* 6,6." 6 @0i6-%@(6.7@<@,A67@ ]}<@ ,..i67@<@,.7@<@,3 6.|67B:,%@,.367B:,%@,.G67@< ^}@,.(--@B:,:7<,4 G67<,..] 6.=:, @D67@<@,.7@<@,]6 _}7@<@,.0$@(''7@<@,4FREE@- @ 2() <@ `}F''7@<@,4FREE@K @ P(7@<@,)|U @0W'!-@6+'@,% a}@' |Z++(#| |[ ( |  |\++(# b}d**(" Select HELP.BAS for information.xAR[@@9'-@@#C( FI c}LE NUMBERM A0Q[ BP:,A00"@&6.7@<@,0 AELB6.7+&@,$ d}@%@<+&@,$@%@,L B37@<@,4 36.7@<@,!7@<@ e},4DOS!.0 6.-@B:,07<,4 AH67B:,%@,.7<,   6.! 6.D1:!67B:,% f}@,.?AR@'-@@"?  LOADING ? A@@91@@5% g}? B[-@@"-  CANNOT RUN 7 @LF:A,"@![% D:HELP.BAS B A0 h}D1:MENU.XLAPNB0D +26-?:C:   "EXLINEAFxxy &&;A ,;@,;@,W (} ( (1) HELP file#(@(j}(2) How to 'port' filesW( to an ST disk (( SELECTION(+41)42,@ ,6. D:DOC.TXTk}42,6. D:PORT.TXT1 (}@1@@ A(@2vB:,!@-l}7@<@,4XXX0(3(E-@@"Y(ӠΠf@l(}v @@<( @@dj@m} B*-@@"R("ΠҠՠҠˠҠ_@j%D:MENU D1:HELP.BASile#(@(r` *O.|r*m - ЭЭм// ??<JNA NJ/<NA"/0<NBNuNVaaJygaHNo}^NuNVNZ./</</<N $ 3>.j/<>/< N&P. ?<NTByByN^NuNV. <p}?<NT3 yfa< yfa. ?<NT3 yf3N^NuNV. r?<NTBy<`Ryq}< y>Naa>>NN^Nur}NV. ?<NTah09,|3f09,|@3:. ?<NTD:*B9./</<s}NPJyg">>N>a&a>>NN^NuNVBy`By<`Ry< y?<?<N vt}X>f?<?<N vX>:?<?<N vXByd`*0yd"|00H>?<?<N vXRyd09dy,m>?<?<Nu} vXN^NuNV32>N 3h09h|A:*.*B9B9./</<NPJyv}gv>>N>/<?<=N \32 y2o$.0/9 n?92?<?N P3,>2?<>N T>>NNw}^NuNV>>NBW/<?<2?<>N T>>NN^NuNVx}>>N>aa>>NN^NuNV>?<N vT3& y&f>?<N vT3f>?<N vT3:09:y}@yf3.Byd`* |02yd/?<?<N vX _Ryd09dy.m3d,N^NuNV>?<?<N vX nf>z}S?<?<N vX nf>L?<?<N vXBy`> |2y \g$0y"|0H>?<?<N vXRy |2y{}J(nBy`*0y"|0H>?<?<N vXRy |2y n> ?<?<N vXN^NuNV. :?<N|}T>>NNN^NuNV3eBByDByH3NNN^NuNV3{BByDByH3NNN^NuNV#z#}} .мZ#3dBByD3 H n 3NN n 0N#z###~N^NuNV3 3~}zBByD3H3NNN^Nu#Bv"<vpsNBNuNV30.|Hм -@=|` nH2n2}RRn nm.4N>B@09 N^NuNV#### #Z##4> aF3} @pN^NuNV>a*pN^NuNV3# Z>4NN^NuNV#Z# ^>ZN n0"B@09 N^NuNV>}MN n0" n 0$ n0& n0(B@09 N^Nu#NN/9Nu#NM/9Nu#NA/9Nu} }}[1][ Welcome to LinkLin}e/ST | v.041286 ][ Perform ][3][ Load: 8Bit->ST Save: ST->8Bit ][ Load | Save ][3][ Enter the 8Bit file to load. ][ Selec}t ][3][ Select the ST file to transfer. ][ Select ][3][ Select the new device:filename.ext ][ Select ][3][ Want to tran}sfer another file? ][ Yes | No ][3][Thanks for using|LinkLine/ST|v.041286][ Exit ]}_crystal>_ctrl_cn _workin} _hialert _typeale <_loadler r_saveler _devaler _moreale _tksaler :_max_len n_main}J_initiald_communi_termina_load_fi8_save_fi_load_8B_write_tL_read_thX_send_}co_send_fi_get_fil_v_clsvw_v_hide__v_opnvw&_v_show__gsx1_gsx2_iiof}fz_iooff_pioff~_pooff_vdi_crys_if_appl_inZ_appl_ex_form_al_fse}l_in_graf_ha $_gemdos _bios v_xbios f_intin_intout_org_pal_c_mx}_my_finishe_new_pal_i_j_k_l_hi_word_w}rite_b_ptsin_path_ptsout_write_h_global_inchar&_lo_word(_pressed*_}bytes_r,_bytes_t._text_bu0_control_int_in_int_out _read_ha._dum0_file_ha2}_ad_c4_resolut8_lenhi:_delay<_gem_han>_gl_apid@_contrlB_addr_inZ_charact}b_file_ind_lenlof_driveh_workoutj_button_filenam_for_rea_action__addr_ou}_color.$            }            }$    .|r*m - ЭЭм// ??<JNA NJ/<NA"/0<NBNuNVaaJygaHN WELCOME TO THE ANTIC MONTHLY DISKMost of the pr}ograms on this side of the disk are for the ATARI 520 ST.We recommend you refer to thecorresponding issue of ANTIC forco}mprehensive documentation. If youwish to order a back issue, or needsubscription information, contact usat (415) 957-0886 }or, for credit cardorders, dial (800) 227-1617, Ex. 133.In California,(800) 722-3545, Ex. 133XXX *** BONUS FILES * BONUS} FILES ***Whenever there is sufficient room,we will be including TYPO-ST andLINKLINE on the monthly disks.Please see t}he HELP files on thisside of the disk for LINKLINEinstructions.XXXThe menu that appeared on the screenwhen you b}ooted the disk will onlyRUN programs with a .BAS extender.(NOTE: The menu WILL NOT RUN ST BASIC programs!)If you} try to run a program and theresponse is 'cannot run Filename',then check the file extender withthe following list:XXX}.SYS Reserved for DOS system files..DAT Data file. Usually accessed by another program..TXT Text file. Usually} accessed by another program..PI2 A Med.-resolution DEGAS picture file.XXX*** Files for the 520 ST ***}.C C Language source code. Must be ported to an ST disk. See the corresponding article for complete} details..BAS An ST BASIC program. WILL NOT RUN on 8-bit computers!!! Must be ported to an ST disk.} See the corresponding article for complete details.XXX.PRG A compiled ST program which uses GEM. } Must be ported to an ST disk. See the corresponding article for complete details..TOS A compiled ST p}rogram which does not use GEM. Must be ported to an ST disk. See the corresponding article for co}mplete details..S 68000 Assembly language source code. Must be ported to an ST disk. See the corr}esponding article for complete details.XXX Whenever possible, we will try toadapt our programs to work with as}many configurations of C as possible.But we think ANTIC's published Clistings should come as close aspossible to the indus}try standard. At this time, only the Lattice,Alcyon, GST and Megamax C packagesdo this.XXXAll programs from ANTIC i}ssues datedprior to August 1984 were reproducedfrom ANTIC's Archive. We've updatedthem from our HELP columns andmost are} compatible with the XL andXE machines. We have worked to insurethat our programs operate aspublished, but we consider all} oursoftware listings to be works inprogress which we encourage you topersonalize and enhance.Good luck, and ENJOY!-AN}TIC ED WELCOME TO THE ANTIC MONTHLY DISKMost of the pr /* * Charlie's Line Limiter Utility * File: ALIMIT.C * version 122586 * (c) 1986 Antic Publishing * Writ$}ten by Patrick Bass * *---- Alcyon Include File -----------------*/ #include "osbind.h" #define TRUE $} (1) #define FALSE (0) #define CANCEL (0) #define NO (2) #define ERROR ($}ST LISTINGSON MONTHLY DISK...and how to get themby CHARLES JACKSONAntic Technical EditorFor those ST owners who do no}t yetown a C compiler, but are eager totry out Antic's C language listings,we are now including the executableobject code} on the Antic MonthlyDisk.XXXAll disk files with extendersof .PRG, .TOS, .TPP and .ACC arecompiled ST programs, ready }to betransferred to an ST disk andexecuted. Given enough disk space,we will also include the sourcecode. 'C' source cod}e files willhave a .C extender, assemblylanguage source code will havean .S extender.XXXPORTING FILESBefore using an }ST program, you musttransfer it to an ST disk. Thisprocess of transferring filesbetween computers is called"porting."X}XX To port a file from the AnticMonthly disk to an ST disk, you'llneed the Linkline programs fromthe August 1985 issue}.(LINKLINE.PRG and LINKLINE.EXE are both included on this disk).XXXIf you don't have Linkline, youmay also use: }- A telecommunications programfor the ST which supports XMODEMfile transfers.FLASH or PC/InterComm will work).XXX - }A similar program for your8-bit Atari which supports XMODEMfile transfers. Chameleon orBackTalk will work. Unfortunately},HomeTerm won't do the job because ittranslates all carriage returns intoATASCII value 155. Also, don'texpect to succeed} at ST porting withany version of AMODEM.XXXA - 8-bit Atari computerB - An Atari 850 Interface Module with a modem }cable (RS-232 to D-9.)C - Null modem connectorD - Gender changer (if required)E - Your ST   } | A |=>| B |=>| C |=>| D |=>| E |     Sample porting configurationXXX IMPORT}ANT: If you're not usingLinkline, both modem programsmust be configured similarly. Ifyour 8-bit software is set for 1200}baud, your ST software also must beconfigured for 1200 baud. Additionally, BOTH programs mustbe set for 8-bit (binary) }filetransfers.XXX Once both computers are linkedtogether you may begin the filetransfer. You can also reverse this}procedure to transfer files from STdisks to your 8-bit machine.XXXWALK-THROUGH DEMO1) LINKLINE:Once both LINKLINE pro}grams arerunning, place the monthly diskinto the 5-1/4" drive, and sitdown at the ST. Choose theLOAD A FILE option and t}ype inthe name of the file you want totransfer. LINKLINE will pullthe file off of the monthly disk,and save it to an ST }disk.That's it. You're done.XXXWALK-THROUGH DEMO2) MODEM PROGRAMSLet's walk-through a sample filetransfer. We'll }use BackTalk on an8-bit machine, and FLASH on the ST. Configure BackTalk for 1200 baud,with Full Duplex and ASCIItrans}lation. Press [SELECT],choose the XSEND option, selectXMODEM protocol and enter the nameof the file you wish to port.X}XX From the ST desktop, double clickon FLASH.PRG. Make sure FLASH isrunning at 1200 baud. Type -Bto change baud} rates, if necessary. Now type -R (for RECEIVE).When the file selector box appears,press [ESCAPE] and type the name }ofthe file to receive. Press [RETURN]or click on OK. To begin the transfer, press the[START] button on the 8-bit Atar}i.XXX Occasionally some versions ofXMODEM will append extra "garbage"characters to your files. Textfiles, such as C} listings, areparticularly susceptible to thisproblem. If your implementation ofXMODEM appends garbage characters toyour} source code, you must removethose characters with a text editorbefore compiling the program.or those ST owners who do noa 1000 ' TYPO/ST 1010 ' (c) 1986 Antic Publishing 1020 ' Written by Patrick Bass and Bill Marquardt 1030 ' Version 050 }286 1040 '----------------------------------------------------------------- 1050 ' 1060 DISK=1: OUTPUT=2: TRUE=(-1): F }ALSE=0: CHECKSUMMING=TRUE 1070 TV=FALSE: PRINTER=FALSE 1080 ' 1090 print "File to Check:": input FILENAME$ 1100 pr }int "Output on:" 1110 print "(S)creen or ": print "(P)rinter ": input DEVICE$ 1120 if( DEVICE$="p" )or( DEVICE$="P" )th }en PRINTER=TRUE else TV=TRUE 1130 ' 1140 if TV then print "Checksum for file: ": print FILENAME$: print 1150 if PRINT }ER then lprint "Checksum for file: ";FILENAME$: lprint 1160 ' 1170 '----------------------------------------------------- }------------ 1180 open "I", #DISK, FILENAME$ 1190 ' 1200 while CHECKSUMMING 1210 LINENUMBER=0: CHECKSUM=0 1220 } ' 1230 gosub GETALINE 1240 ' 1250 DECIMAL=CHECKSUM: gosub DECTOHEX 1260 OUTPUT$=str$( LINENUMBER )+" :" }+HI$+LO$ 1270 if PRINTER then lprint OUTPUT$ else print OUTPUT$ 1280 wend 1290 ' 1300 close DISK 1310 end 13 }20 ' 1330 '----------------------------------------------------------------- 1340 GETALINE: 1350 BLINE$="": on error }goto 1300 1360 GOTALINE=FALSE 1370 ' 1380 while not GOTALINE 1390 line input#DISK, BLINE$ 1400 if len( BL }INE$ )>1 then GOTALINE=TRUE 1410 wend 1420 ' 1430 LINENUMBER=val( BLINE$ ) 1440 for CHAR=1 to len( BLINE$ ) 1450 } OK=TRUE 1460 CHARACTER$=mid$( BLINE$, CHAR, 1 ) 1470 if CHARACTER$=" " then OK=FALSE 1480 if OK then C }HECKSUM=CHECKSUM+asc( CHARACTER$+chr$( 0 )) 1490 next CHAR 1500 return 1510 ' 1520 '-------------------------------- }--------------------------------- 1530 DECTOHEX: 1540 DECIMAL=abs( DECIMAL ) 1550 HI=int( DECIMAL/256 ): LO=( DECIMAL }-( HI*256 )) 1560 HH=int( HI/16 ): HL=( HI-( HH*16 )) 1570 LH=int( LO/16 ): LL=( LO-( LH*16 )) 1580 HI$=chr$( 48+HH- }( 7*( HH>9 )))+chr$( 48+HL-( 7*( HL>9 ))) 1590 LO$=chr$( 48+LH-( 7*( LH>9 )))+chr$( 48+LL-( 7*( LL>9 ))) 1600 return 50 {-1) #define LESS 1 #define MORE 2 #define SELECT 3 #define begin { #define $} end } #define wend } #define repeat } #define next } #define endif $} } #define not ! #define equals == #define does_not_equal != #define then #define AND $} && #define OR || #define ANDed_with & #define ORed_with | #define DELAY fo$}r( delay=0; delay<32767; delay++ ); #define ESC 27 #define ESCAPE 27 #define SPACE 32 #$}define WHITE 0 #define BLACK 1 #define RS232 1 #define CONSOL 2 #define LOAD$} 1 #define SAVE 2 #define STX 2 #define ETX 3 #define CR 13$} #define LF 10 #define ATARIEOL 155 #define YES 1 #define NO 2 /*----$}------------ Alcyon Declarations/Equates --------*/ int contrl[ 12 ], intin[ 256 ], ptsin[ 256 ], intout[ 256 $}], ptsout[ 256 ], workin[]={ 1,1,1,1,1,1,1,1,1,1,2 }, workout[ 57 ], i, j, k, l, character, type, convertable, $} resolution, inchar, lenlo, lenhi, mx, my, color, delay, drive, dum, lo_word, hi_word, gem_handle, file_handle$}, read_handle, for_reading, action_desired, file_index, bytes_to_read, button, pressed, finished, new_palet$}te[ 16 ], org_palette[ 16 ], linelength; char text_buffer[ 100000 ], temp_buffer[ 100000 ], path[ 50 ], $} filename[ 50 ], workname[ 50 ]; long max_len=100000, write_handle, write_bytes, bytes_read; /*--------$}-----------------------------------------------------------*/ main() begin initialize(); do begin $} chop_dem_lines(); repeat while( not finished ); terminate(); end /*-------------------------------$}-*/ initialize() begin appl_init(); gem_handle=graf_handle( &i, &i, &i, &i ); v_opnvwk( workin, &gem_hand$}le, workout ); form_alert( 1, "[0][|Charlies' Line Limiter| Utility V.122586|][Perform]" ), finishe$}d=FALSE; for_reading=0; end /*---------------------------*/ chop_dem_lines() begin get_line_length(); $} read_the_file(); limit_the_lines(); write_the_file(); button=form_alert( 2, "[0][|Want$} to limit another file?|][Yes|No]"); if( button equals NO )then finished=TRUE; end /*--------------------------*/ $}get_line_length() begin char temp[ 50 ], fstring[ 50 ]; int xl; linelength=40; button=FALSE; $} while( button does_not_equal SELECT )begin fstring[ 0 ]=0; strcat( fstring, "[0][|Desired Line $}Length: " ); long2ascii( (long)linelength, temp ); strcat( fstring, temp ); strcat( fstring,$} " |][<|>|Select]" ); fstring[ strlen( fstring )+1 ]=0; button=form_alert( 3, fstring ); $}if( button equals LESS )then linelength--; if( button equals MORE )then linelength++; if( linelength<$}1 )then linelength=1; wend end /*---------------------------*/ limit_the_lines() begin long i, j, line$}count, linemax; int character, advancing; linecount=0; for( i=0, j=0; i<( bytes_read+1 ); i++$}, j++ )begin temp_buffer[ j ]=text_buffer[ i ]; if( text_buffer[ i ] equals CR $} AND text_buffer[ i+1 ] equals LF )then begin linecount=0; endif linecount++; $} if( linecount > linelength )then begin for( ;text_buffer[ i ]>SPACE; )begin temp$}_buffer[ ++j ]=text_buffer[ ++i ]; next temp_buffer[ j++ ]=CR; temp_buffer[ j$} ]=LF; linecount=0; endif next bytes_read=( j ); end /*-----------------------$}----*/ read_the_file() begin file_handle=ERROR; drive=Dgetdrv(); path[ 0 ]=( drive+'A' ); path[ 1 ]$}=':'; Dgetpath( &path[ 2 ], 0 ); strcat( path, "\\*.*" ); filename[ 0 ]=0; fsel_input( path, filena%}me, &button ); if( button does_not_equal CANCEL )then begin strcopy( path, workname ); truncate( %}workname ); strcat( workname, filename ); v_hide_c( gem_handle ); file_handle=Fopen( workn%}ame, for_reading ); if( file_handle > ERROR )then begin bytes_read=(long)Fread(file_handle,max_l%}en,text_buffer); endif Fclose( file_handle ); v_show_c( gem_handle ); if( bytes%}_read equals max_len )then begin form_alert( 1, "[0][|Warning! Buffer Overflow.|][Exit]" ); endif %} endif end /*---------------------------------*/ write_the_file() begin v_show_c( gem_handle ); dr%}ive=Dgetdrv(); path[ 0 ]=( drive+'A' ); path[ 1 ]=':'; Dgetpath( &path[ 2 ], 0 ); strcat( path, "\\*.%}*" ); filename[ 0 ]=0; fsel_input( path, filename, &button ); strcopy( path, workname ); truncate( %}workname ); strcat( workname, filename ); v_hide_c( gem_handle ); file_handle=Fcreate( workname, 0 ); % } if( file_handle > ERROR )then begin Fwrite( file_handle, bytes_read, temp_buffer ); endif Fclos% }e( file_handle ); v_show_c( gem_handle ); end /*-------------------------------------------*/ strcopy( from, to ) % } char *from, *to; begin while ( *to++ = *from++ ); end /*-------------------------------------------*/ strcat(to,% } from) char *to,*from; begin while ( *to) ++to; while ( *to++ = *from++ ); end /*--------------------------% }-----------------*/ truncate( string ) char *string; begin int x; for( x=strlen( string ); x>=0; --x )begin %} if( string[ x ] equals 92) break; end string[ x+1 ]=0; end /*-------------------------------------%}------*/ strlen( string ) char *string; begin int x; for( x=0; *string++; ++x ); return x; end /*%}--------------------------------*/ long2ascii( value, string ) long value; char *astring; begin long divisor; %} char *bstring, digit; bstring=astring; for( divisor=1000000L; divisor>0; ++bstring, divisor/=10L )begin %} digit=( value/divisor ); value=( value-( digit*divisor )); *bstring=( digit+'0' ); next e%}nd /*--------------------------------*/ terminate() begin v_clsvwk( gem_handle ); appl_exit(); end rit$z` :8$*O.|r*m - ЭЭм// ??<JNA NJ/<NA"/0<NBNuNVaaJyga N)}^NuNVN./</</<N 3'.'H/<'/< NP. ?<N rTByBy'N^NuNVa:a)}aa8. ?<N rT3' y'f3N^NuNV3(By'`B.. /aX.0y/aX.)}/aX. //aX.a:HЎ @B(.?<N rT3' y'fSy y'fRy y)}l3 y'fN *3'F09'F|A:BW/<?<GN *\. @/<a4XB9'.'/<'/<N PJy')}g.&/<aX.&a.'/<&aX>'N>'/<&?<=N *\3' y'o$./9 ?9'?<?)}N *P#>'?<>N *T>'NX 9 f. E?<N rTN^NuNV>'NX>N *3'F09'F|A)}:BW/<?<GN *\. l/<aXB9'.'/<'/<N P.&/<aX.&a.'/<&a)}X>'NBW/<&?<'?<>N *T>'NXN^NuNV nH)}"n RR J@fN^NuNV`R nJf n H"nR RJ@fN^NuNV.a2=@` n2n \g SnJnl n2nB() }N^NuNVBn`Rn nHRJf0.N^NuNV-n -|B@``/./.NP@/..HH/NP/ .-@.H)!}|0"nR/< /.NP-@JnN^NuNV>'NN `N^NuNV3e' By'"By'&3',NN^NuNV3{' )"}By'"By'&3',NN^NuNV#z# .мZ#3d' By'"3 '& n 3',N n 0',#z#)#}##~N^NuNV3 3z' By'"3'&3',NN^Nu#' v"<vpsNBNuNVBBJlDRB)$}J lD RB0. -@0.2. An=@ .gDN^NuNVH?BCB..,. f# <`hlDRCJlDR)%}Cn8fzB`0l :HGH`xe`Jge`|fD# D`# JLN^NuNV3&0.|H)&}м :-@=|` nH2n&2RRn nm.'N>B@09&N^NuNV#&##&#&#)'}'8#'#'> aF3&'pN^NuNV>a*pN^NuNV3&# '8>4NN^NuNV#'8# '<)(}>ZN n0'B@09&N^NuNV>MN n0' n 0' n0' n0'B@09&N^Nu#NN/9Nu#NM/9))}Nu#NA/9Nu)*} )+}),}[0][|Charlies' Line Limiter| Utility V.122586|][Perform][0][|Want to limit another file?|][Yes|No][0][|)-}Desired Line Length: |][<|>|Select]\*.*[0][|Warning! Buffer Overflow.|][Exit]\*.*_crystal>_ctrl_cn :_workin).} _max_len _mainJ_initiald_chop_de_terminaj_get_lin_read_th_limit_t_write_)/}t_strcatZ_long2as_strlen_strcopy8_truncat_v_clsvw_v_hide__v_opnvw_v_sho)0}w_X_gsx1_gsx2_iioffz_iooff_pioff~_pooff_vdilmulldiv)1}_crys_if_appl_in_appl_ex `_form_al r_fsel_in _graf_ha _gemdos *_bios _xbi)2}os _intin_intout_org_pal_c_mx_my_finishe_new_pal_li)3}nelen_i_j_k_l_hi_word_temp_bu_write_b_ptsin_p)4}ath_ptsout_write_h_global_inchar_lo_word_pressed_bytes_r_bytes_t_)5}text_bu_worknam&_type&_convert&_control&_int_in&_int_out&_read_ha' _dum')6}_file_ha'_ad_c'_resolut'_lenhi'_delay'_gem_han'_gl_apid'_contrl' _addr_in')7}8_charact'@_file_in'B_lenlo'D_drive'F_workout'H_button'_filenam'_for_rea'_action_)8}'_addr_ou'_color'.$    $6 "             )9}         2   zf  $     N(y?b'DOS SYSb*+DUP SYSbUAUTORUN SYSbWMENU biHELP BASb'nLINKLINEPRGbDOC TXTbPORT TXTbTYPOST BASb:LIMIT C b&LIMIT PRG