10 REM > EOL 0.01
   20 REM Convert end of line sequences
   30 :
   40 ON ERROR REPORT:PROCClose_All:PRINT LEFT$(" at line "+STR$ERL,ERR<128 AND ERR<>17):PROCexit(ERR):END
   50 A$=FNOS_GetEnv:in%=0:out%=0:IF os%>31:PROCWin_TextIO
   60 IF FNcl("-?",0):PRINT "Syntax: eol <infile> [-cr|-lf|-crlf|-lfcr] [<outfile>]":PROCexit(0)
   70 eol%=(FNcl("-crlf",0) AND 1) OR (FNcl("-lfcr",0) AND 2) OR (FNcl("-cr",0) AND 3) OR (FNcl("-lf",0) AND 4)
   80 in$=FNcl("",0):out$=FNcl("",0)
   90 IF in$="":INPUT "Input file: "in$:INPUT" output file: "out$:IF eol%=0:INPUT "Output EOL type: "eol%
  100 IF eol%=0:eol%=10-3*(os%<6):IF os%>31:eol%=1:REM Default for this platform
  110 :
  120 same%=out$="" OR out$=in$:IF same%:out$="!!tmp!!"
  130 in%=OPENIN(in$):IF in%=0:PRINT"File '"in$"' not found":PROCexit(214)
  140 out%=OPENOUT(out$):IF out%=0:PRINT"Can't save '"out$"'":CLOSE#in%:in%=0:PROCexit(192)
  150 REPEAT
  160   PROCwr(out%,FNrd(in%))
  170   IF eol%=1:BPUT#out%,13:BPUT#out%,10
  180   IF eol%=2:BPUT#out%,10:BPUT#out%,13
  190   IF eol%=3:BPUT#out%,13
  200   IF eol%=4:BPUT#out%,10
  210 UNTIL EOF#in%
  220 CLOSE#out%:out%=0
  230 CLOSE#in%:in%=0
  240 IF same%:OSCLI "Delete "+in$:OSCLI "Rename "+out$+" "+in$
  250 PROCexit(0)
  260 :
  270 :
  280 DEFPROCWin_TextIO
  290 SYS "GetStdHandle",-10 TO @hfile%(1):*INPUT 13
  300 SYS "GetStdHandle",-11 TO @hfile%(2):*OUTPUT 14
  310 SYS "SetConsoleMode",@hfile%(1),0:ENDPROC
  320 :
  330 DEFPROCClose_All
  340 in%=in%:IFin%:A%=in%:in%=0:CLOSE#A%
  350 out%=out%:IFout%:A%=out%:out%=0:CLOSE#A%
  360 ENDPROC
  370 :
  380 DEFFNrd(i%):LOCALA%,B%,A$:REPEAT:A%=BGET#i%:IFA%<>10ANDA%<>13:A$=A$+CHR$A%
  390 UNTILA%=10ORA%=13OREOF#i%:IFNOTEOF#i%:B%=BGET#i%:IFA%=B%OR(B%<>13ANDB%<>10):PTR#i%=PTR#i%-1
  400 =A$
  410 DEFPROCwr(o%,A$):IFA$="":ENDPROC
  420 FORA%=1TOLENA$:BPUT#o%,ASCMID$(A$,A%,1):NEXT:ENDPROC
  430 :
  440 DEFFNcl(l$,n%):IFl$="":A$=FNs(A$):IFASCA$=34:A%=INSTR(A$+" "" ",""" ",2):l$=MID$(A$,2,A%-2):A$=FNs(MID$(A$,A%+1)):=l$
  450 IFl$="":A%=INSTR(A$+" "," "):l$=LEFT$(A$,A%-1):A$=FNs(MID$(A$,A%+1)):=l$
  460 IFn%=0:IFl$<>"":A%=INSTR(A$,l$):IFA%:A$=FNs(LEFT$(A$,A%-1)+MID$(A$,INSTR(A$," ",A%)+1))+" ":=TRUE
  470 IFn%=0:IFl$<>"":=FALSE
  480 A%=INSTR(LEFT$(" ",ASCl$=32)+A$,l$):IFA%=0:=""
  490 A$=LEFT$(A$,A%-1)+FNs(MID$(A$,INSTR(A$," ",A%)+1))
  500 IFASCl$=32:l$=MID$(A$,A%):A$=LEFT$(A$,A%-1):=MID$(l$,1-(ASCl$=34),LENl$+2*(ASCl$=34))
  510 IFASCMID$(A$,A%,1)<>34:l$=MID$(A$,A%,INSTR(A$+" "," ",A%)-A%):A$=LEFT$(A$,A%-1)+MID$(A$,A%+LENl$+1):=l$
  520 l$=MID$(A$,A%+1,INSTR(A$+""" ",""" ",A%+1)-A%-1):A$=LEFT$(A$,A%-1)+MID$(A$,A%+LENl$+3):=l$
  530 DEFFNs(A$):IFLEFT$(A$,1)=" ":REPEATA$=MID$(A$,2):UNTILLEFT$(A$,1)<>" "
  540 IFRIGHT$(A$,1)=" ":REPEATA$=LEFT$(A$,LENA$-1):UNTILRIGHT$(A$,1)<>" "
  550 =A$
  560 :
  570 DEFFNOS_GetEnv:LOCALA$,A%,X%,Y%:X%=1:os%=((USR&FFF4)AND&FF00)DIV256
  580 IF!PAGE=&D7C1C7C5:run$=ARGV$(0):IFARGC:FORA%=1TOARGC:A$=A$+ARGV$(A%)+" ":NEXT:=LEFT$(A$,LENA$-1)ELSEIF!PAGE=&D7C1C7C5:=""
  590 IFos%>31:IFPAGE>&FFFFF:DIMX%LOCAL256:SYS"GetModuleFileName",0,X%,255:run$=$$X%:=@cmd$
  600 A%=(HIMEM>&FFFF)AND&900:IF?(TOP-3):A%=((PAGE>&9FFF)ANDA%)OR((&1400-PAGE)AND(A%=0))ELSEA%=((A%-&500)OR&200)AND&FFF
  610 A$=$(PAGE-&E00+A%):IFA%=0:run$=A$:SYS16TOA$,,A%:SYS72,"",A%:A$=MID$(A$,1+INSTR(A$+" "," ",1+INSTR(A$," "))):IFLENA$=0:A$=run$
  620 FORY%=-1TO0:A$=" "+A$:REPEATA$=MID$(A$,2):UNTILASCA$<>32
  630   IFY%:IFASCA$=34:A%=INSTR(A$,"""",2)+1 ELSEIFY%:A%=INSTR(A$+" "," ")
  640   IFY%:run$=MID$(A$,1-(ASCA$=34),A%-1+2*(ASCA$=34)):IFrun$<>"":A$=MID$(A$,A%+1)
  650 NEXT:=A$
  660 DEFPROCos(A$):IFASCA$=42:OSCLIA$ ELSE IFA$<>"":CHAINA$
  670 ENDPROC
  680 DEFPROCexit(A%):OSCLI"FX1,"+STR$(A%AND255):quit$=quit$:A$=quit$:quit$="":PROCos(A$)
  690 IFPAGE>&FFFFF:QUIT A%
  700 IFos%<6:END ELSE *Quit
  710 ENDPROC
  720 :