/* $VER: Cataloger 1.96 (14.11.95) Felix C. Coronado
*/
OPTIONS RESULTS
NL='0a'x
LUP='1b'x||'M'
IF OPEN(ReadFile,'ENVARC:Cataloger.config','R') THEN DO
 ADProArgs=READLN(ReadFile)
 DefPrefsFile=READLN(ReadFile)
 OutWinX=READLN(ReadFile)
 OutWinY=READLN(ReadFile)
 ShowErrors=READLN(ReadFile)
 ListMode=READLN(ReadFile)
 UseDCTV=READLN(ReadFile)
 CALL CLOSE(ReadFile)
END
ELSE DO
 IF EXISTS('ADPro:MorphPlus') THEN ADProArgs='MAXMEM=3147776 NOSAVEDEFAULTS DEFAULTFILE=ADPro:ADProDefaults'
 IF EXISTS('ADPro:ADPro') THEN ADProArgs='MAXMEM=3147776 NOSAVEDEFAULTS DEFAULTFILE=ADPro:ADPro.prefs'
 DefPrefsFile=''
 OutWinX=''
 OutWinY=''
 ShowErrors=''
 ListMode=''
 UseDCTV=''
END
IF DefPrefsFile='' THEN DefPrefsFile='CatPrefs:Cataloger.prefs'
IF DATATYPE(OutWinX)~='NUM' THEN OutWinX=640
IF DATATYPE(OutWinY)~='NUM' THEN OutWinY=85
IF ShowErrors~='Yes' & ShowErrors~='No' THEN ShowErrors='Yes'
IF ListMode~='All' & ListMode~='Both' & ListMode~='Cataloged' & ListMode~='Failed' & ListMode~='None' THEN ListMode='None'
IF UseDCTV~='Yes' & UseDCTV~='No' THEN UseDCTV='Yes'
IF ~SHOW('L',"rexxsupport.library") THEN CALL ADDLIB("rexxsupport.library",0,-30)
SIGNAL ON SYNTAX
SyntaxID='AddRexxSupport'
CALL NULL()
SIGNAL OFF SYNTAX
IF POS('ADPro',SHOW('Ports'))=0 THEN DO
 IF EXISTS('ADPro:ADPro') THEN ADDRESS COMMAND 'C:Run >NIL: ADPRO:ADPro '||ADProArgs
 ELSE DO
  IF EXISTS('ADPro:MorphPlus') THEN ADDRESS COMMAND 'C:Run >NIL: ADPRO:MorphPlus '||ADProArgs
  ELSE DO
   SAY "Could not locate ADPro/MorphPlus"
   EXIT
  END
 END
END
CALL TIME('R')
DO WHILE TIME('E')<60 & POS('ADPro',SHOW('Ports'))=0
 CALL Delay(50)
END
IF POS('ADPro',SHOW('Ports'))=0 THEN DO
 SAY "Could not start ADPro/MorphPlus"
 EXIT
END
ADDRESS "ADPro"
VERSION
IF (WORD(adpro_result,1)='ADPro' & LEFT(WORD(adpro_result,2),3)>=2.5) | (WORD(adpro_result,1)='MorphPlus' & LEFT(WORD(adpro_result,2),3)>=1.3) THEN Vrsn='NEW'
                                                                                                                                               ELSE Vrsn='OLD'
IF Vrsn='NEW' THEN DO
 OBTAIN_ADPRO
 SAVE_DEFAULTS 'T:TempADProDefaults'
 if rc=10 then do
  ADPRO_TO_FRONT
  okay1 'Error saving file'||NL||,
        '"T:TempADProDefaults"'
  exit 10
 end
END
IF Vrsn='OLD' THEN DO
 LFORMAT
 OldLoader=adpro_result
 SFORMAT
 OldSaver=adpro_result
 OFORMAT
 OldOperator=adpro_result
 SCREEN_TYPE
 SType=adpro_result
END
RENDER_TYPE
RType=adpro_result
PTOTAL
TotCol=adpro_result
SIGNAL ON BREAK_C
Settings=DefPrefsFile
FindPrefs='False'
IF OPEN(Prefs,Settings,"R") THEN DO
 CatVersion=READLN(Prefs)
 IF WORD(CatVersion,1)='Cataloger' & WORD(CatVersion,2)<=1.96 THEN DO
  DirMode=READLN(Prefs)
  SkipType=READLN(Prefs)
  PreImgAsp=READLN(Prefs)
  PWI=READLN(Prefs)
  PHE=READLN(Prefs)
  ColMode=READLN(Prefs)
  TWI=READLN(Prefs)
  THI=READLN(Prefs)
  UseTex=READLN(Prefs)
  FName=READLN(Prefs)
  FType=READLN(Prefs)
  FSize=READLN(Prefs)
  SizeTex=READLN(Prefs)
  CatForm=READLN(Prefs)
  CatMode=READLN(Prefs)
  UseOps=READLN(Prefs)
  SavOps=READLN(Prefs)
  BackCol=READLN(Prefs)
  TexCol=READLN(Prefs)
  TexBacCol=READLN(Prefs)
  CatSuff=READLN(Prefs)
  ThumbType=READLN(Prefs)
  TBMPct=READLN(Prefs)
  TileBord=READLN(Prefs)
  ThumBord=READLN(Prefs)
  BordCol=READLN(Prefs)
  TWID=READLN(Prefs)
  THEI=READLN(Prefs)
  TxtYPos=READLN(Prefs)
  TxtXPos=READLN(Prefs)
  ThumbProcess=READLN(Prefs)
  SortList=READLN(Prefs)
  DepthTex=READLN(Prefs)
  BordThick=READLN(Prefs)
  TileBordMode=READLN(Prefs)
  FindPrefs='True'
 END
 CALL CLOSE(Prefs)
END
IF FindPrefs='False' THEN DO
 OKAY1 'Could not load settings file:'||NL||,
       '"'||Settings||'"'||NL||,
       'Using defaults.'
 DirMode='partial'
 SkipType='none'
 SortList='unsorted'
 PreImgAsp='Yes'
 ColMode='Color'
 PWI=640
 PHE=400
 BackCol='0 0 0'
 TWI=3
 THI=2
 TWID=200
 THEI=180
 UseTex='Yes'
 TxtYPos='Bottom'
 TxtXPos='center'
 SizeTex='Yes'
 DepthTex='Yes'
 FName='topaz'
 FType='BITMAPPED'
 FSize=8
 TexCol='0 0 0'
 TBMPct=100
 TexBacCol='255 255 255'
 ThumbType='Small'
 ThumbProcess='No'
 TileBord='Yes'
 TileBordMode='All'
 ThumBord='Yes'
 BordThick=1
 BordCol='255 255 255'
 CatForm='IFF'
 CatMode='Raw'
 UseOps='No'
 SavOps=''
 CatSuff='.iff'
END
CheckBuf='NO'
ImgDir='"'
CatDir=''
SeqDir='ADP_FRED:Sequences'
SeqFile=''
ListDir=''
ListFile=''
DO FOREVER
 BackToStart='Yes'
 DO WHILE BackToStart='Yes'
  BackToStart='No'
  ChoiceNum=0
  DO WHILE ChoiceNum~=1
   zz=LASTPOS('/',Settings)
   IF zz=0 THEN zz=INDEX(Settings,':')
   PrefsDir=LEFT(Settings,zz)
   PrefsFile=RIGHT(Settings,LENGTH(Settings)-zz)
   IF PrefsDir~='/' & RIGHT(PrefsDir,2)~='//' & RIGHT(PrefsDir,1)='/' THEN PrefsDir=LEFT(PrefsDir,LENGTH(PrefsDir)-1)
   CatVersion='Cataloger 1.96'
   IF SortList='' THEN SortList='unsorted'
   IF ColMode='Grayscale' THEN ColMode='Gray'
   IF BackCol='' THEN BackCol='0 0 0'
   IF TWID='' THEN TWID=TRUNC((PWI-TWI-1)/TWI)
   IF THEI='' THEN THEI=TRUNC((PHE-THI-1)/THI)
   IF TRUNC((PWI-TWI-1)/TWI)<5 | TRUNC((PHE-THI-1)/THI)<9 | (ThumbType='Small' & TRUNC((PHE-THI-1)/THI)<11) THEN UseTex='No'
   IF TxtYPos='' THEN TxtYPos='Bottom'
   IF TxtXPos='' THEN TxtXPos='left'
   IF DepthTex='' THEN DepthTex='No'
   IF TexCol='' THEN TexCol='255 255 255'
   IF TBMPct='' THEN TBMPct=50
   IF TexBacCol='' THEN TexBacCol='0 0 0'
   IF UseTex='No' | ThumbType='' THEN ThumbType='Large'
   IF ThumbProcess='' THEN ThumbProcess='No'
   IF TileBord='' THEN TileBord='Yes'
   IF TileBordMode='' THEN TileBordMode='All'
   IF (TWID=1 & THEI=1 & TileBord='Yes') | ThumBord='' THEN ThumBord='No'
   IF BordThick='' THEN BordThick=1
   IF BordCol='' THEN BordCol=TexCol
   IF CatMode='Rendered' THEN CatMode='Image'
   IF ColMode='Color' THEN DO
    Col1=' (R G B): '||BackCol
    Col2=' (R G B): '||TexCol
    Col3=' (R G B): '||TexBacCol
    Col4=' (R G B): '||BordCol
   END
   ELSE DO
    Col1=' (G): '||WORD(BackCol,2)
    Col2=' (G): '||WORD(TexCol,1)
    Col3=' (G): '||WORD(TexBacCol,1)
    Col4=' (G): '||WORD(BordCol,1)
   END
   IF (DirMode='entire' | DirMode='partial') & VRSN='NEW' THEN DirDis='Catalog '||DirMode||' directory, ignoring '||SkipType
   IF (DirMode='entire' | DirMode='partial') & VRSN='OLD' THEN DirDis='Catalog '||DirMode||' directory'
   IF DirMode='List' THEN DirDis='Catalog from '||SortList||' file list'
   IF DirMode='Seq' THEN DirDis='Catalog from '||SortList||' Sequence file'
   IF UseTex='Yes' THEN TextDis='On'
                   ELSE TextDis='Off'
   IF SizeTex='Yes' THEN SizeDis='On'
                    ELSE SizeDis='Off'
   IF DepthTex='Yes' THEN DepthDis='On'
                     ELSE DepthDis='Off'
   IF ThumbProcess='Yes' THEN ThPrDis='On'
                         ELSE ThPrDis='Off'
   IF TileBord='Yes' THEN TileDis='On'
                     ELSE TileDis='Off'
   IF TileBordMode='Images' THEN TileBordDis='Only images'
                            ELSE TileBordDis=TileBordMode
   IF ThumBord='Yes' THEN ThumbDis='On'
                     ELSE ThumbDis='Off'
   IF CatMode='Image' THEN CatDis='Rendered'
                      ELSE CatDis=CatMode
   IF UseOps='Yes' THEN OpsDis='On'
                   ELSE OpsDis='Off'
   IF Vrsn='NEW' THEN DO
    IF TextDis='On' THEN DO
     SetLine09=' Position: '||TxtYPos||' '||TxtXPos||NL
     SetLine10=' Image size: '||SizeDis||NL
     SetLine11=' Image colors: '||DepthDis||NL
     SetLine12=' Font: '||FName||' '||FSize||NL
     SetLine13=' Text color'||Col2||NL
     SetLine14=' Mix highlight: '||TBMPct||'%'||NL
     IF TBMPct>0 THEN SetLine15='  Highlight color'||Col3||NL
                 ELSE SetLine15=''
    END
    ELSE DO
     SetLine09=''
     SetLine10=''
     SetLine11=''
     SetLine12=''
     SetLine13=''
     SetLine14=''
     SetLine15=''
    END
    IF TileDis='On' THEN SetLine19=' Tile border mode: '||TileBordDis||NL
                    ELSE SetLine19=''
    IF TileDis='On' | ThumbDis='On' THEN DO
     SetLine21=' Border thickness: '||BordThick||NL
     SetLine22=' Border color'||Col4||NL
    END
    ELSE DO
     SetLine21=''
     SetLine22=''
    END
    IF OpsDis='On' THEN SetLine26=' Opts: '||SavOps||NL
                   ELSE SetLine26=''
    ADPRO_TO_FRONT
    OKAYN '"Cataloger 1.96"',
          '"'DirDis||NL||,
           'Preserve image aspect: '||PreImgAsp||NL||,
           'Catalog type: '||ColMode||NL||,
           'Catalog size: '||PWI||'x'||PHE||NL||,
           'Background color'||Col1||NL||,
           '# of tiles: '||TWI||'x'||THI||NL||,
           'Tile size: '||TWID||'x'||THEI||NL||,
           'Text: '||TextDis||NL||,
            SetLine09||,
            SetLine10||,
            SetLine11||,
            SetLine12||,
            SetLine13||,
            SetLine14||,
            SetLine15||,
           'Thumbnail type: '||ThumbType||NL||,
           'Thumbnail processing: '||ThPrDis||NL||,
           'Tile borders: '||TileDis||NL||,
            SetLine19||,
           'Thumbnail borders: '||ThumbDis||NL||,
            SetLine21||,
            SetLine22||,
           'Save format: '||CatForm||NL||,
           'Save image type: '||CatDis||NL||,
           'Saver opts: '||OpsDis||NL||,
            SetLine26||,
           'File extension: '||CatSuff'"',
           '"Use|Load|Edit|Save As|Quit"'
    ChoiceNum=rc
    IF ChoiceNum=0 THEN ChoiceNum=5
   END
   IF Vrsn='OLD' THEN DO
    zz=0
    ChoiceNum=0
    DO WHILE ChoiceNum=0
     zz=zz+1
     IF zz=6 THEN zz=1
     IF zz=1 THEN Option='Use    '
     IF zz=2 THEN Option='Load   '
     IF zz=3 THEN Option='Edit   '
     IF zz=4 THEN Option='Save As'
     IF zz=5 THEN Option='Quit   '
     IF TextDis='On' THEN DO
      SetLine06='Text: '||TextDis||'  Position: '||TxtYPos||' '||TxtXPos||NL
      SetLine07=' Image size: '||SizeDis||'  Image colors: '||DepthDis||NL
      SetLine08=' Font: '||FName||' '||Fsize||NL
      SetLine09=' Text color'||Col2||NL
      SetLine10=' Mix highlight: '||TBMPct||'%%'||NL
      IF TBMPct>0 THEN SetLine11='  Highlight color'||Col3||NL
                  ELSE SetLine11=''
     END
     ELSE DO
      SetLine06='Text: '||TextDis||NL
      SetLine07=''
      SetLine08=''
      SetLine09=''
      SetLine10=''
      SetLine11=''
     END
     IF TileDis='On' THEN SetLine13=' Tile border mode: '||TileBordDis||NL
                     ELSE SetLine13=''
     IF TileDis='On' | ThumbDis='On' THEN DO
      SetLine14=' Border thickness: '||BordThick||NL
      SetLine15=' Border color'||Col4||NL
     END
     ELSE DO
      SetLine14=''
      SetLine15=''
     END
     IF OpsDis='On' THEN SetLine18=' Opts: '||SavOps||NL
                    ELSE SetLine18=''
     ADPRO_TO_FRONT
     OKAY2 DirDis||NL||,
           'Preserve image aspect: '||PreImgAsp||NL||,
           'Catalog type & size: '||ColMode||' '||PWI||'x'||PHE||NL||,
           'Background color'||Col1||NL||,
           '# & size of tiles: '||TWI||'x'||THI||' '||TWID||'x'||THEI||NL||,
            SetLine06||,
            SetLine07||,
            SetLine08||,
            SetLine09||,
            SetLine10||,
            SetLine11||,
           'Thumbnail type: '||ThumbType||'  Processing: '||ThPrDis||NL||,
           'Borders:  Tile: '||TileDis||'  Thumbnail: '||ThumbDis||NL||,
            SetLine13||,
            SetLine14||,
            SetLine15||,
           'Save format & type: '||CatForm||' '||CatDis||NL||,
           'Saver opts: '||OpsDis||NL||,
            SetLine18||,
           'File extension: '||CatSuff||NL||,
           'OK='||Option||'          Cancel=Next Option'
     IF rc=1 THEN ChoiceNum=zz
    END
   END
   IF ChoiceNum=5 THEN CALL RestoreExit 0
   IF ChoiceNum=2 THEN DO
    ADPRO_TO_FRONT
    GETFILE '"Select settings file"' '"'||PrefsDir||'"' '"'||PrefsFile||'"'
    IF rc=0 THEN DO
     Settings=ADPro_Result
     FindPrefs='False'
     IF OPEN(Prefs,Settings,"R") THEN DO
      CatVersion=READLN(Prefs)
      IF WORD(CatVersion,1)='Cataloger' & WORD(CatVersion,2)<=1.96 THEN DO
       DirMode=READLN(Prefs)
       SkipType=READLN(Prefs)
       PreImgAsp=READLN(Prefs)
       PWI=READLN(Prefs)
       PHE=READLN(Prefs)
       ColMode=READLN(Prefs)
       TWI=READLN(Prefs)
       THI=READLN(Prefs)
       UseTex=READLN(Prefs)
       FName=READLN(Prefs)
       FType=READLN(Prefs)
       FSize=READLN(Prefs)
       SizeTex=READLN(Prefs)
       CatForm=READLN(Prefs)
       CatMode=READLN(Prefs)
       UseOps=READLN(Prefs)
       SavOps=READLN(Prefs)
       BackCol=READLN(Prefs)
       TexCol=READLN(Prefs)
       TexBacCol=READLN(Prefs)
       CatSuff=READLN(Prefs)
       ThumbType=READLN(Prefs)
       TBMPct=READLN(Prefs)
       TileBord=READLN(Prefs)
       ThumBord=READLN(Prefs)
       BordCol=READLN(Prefs)
       TWID=READLN(Prefs)
       THEI=READLN(Prefs)
       TxtYPos=READLN(Prefs)
       TxtXPos=READLN(Prefs)
       ThumbProcess=READLN(Prefs)
       SortList=READLN(Prefs)
       DepthTex=READLN(Prefs)
       BordThick=READLN(Prefs)
       TileBordMode=READLN(Prefs)
       CheckBuf='NO'
       FindPrefs='True'
      END
      CALL CLOSE(Prefs)
     END
     IF FindPrefs='False' THEN DO
      ADPRO_TO_FRONT
      OKAY1 'Could not load settings file:'||NL||,
            '"'||Settings||'"'
     END
    END
   END
   IF ChoiceNum=3 THEN DO
    KeepOrg='No'
    DirMode2=DirMode
    SkipType2=SkipType
    SortList2=SortList
    PreImgAsp2=PreImgAsp
    ColMode2=ColMode
    PWI2=PWI
    PHE2=PHE
    BackCol2=BackCol
    TWI2=TWI
    THI2=THI
    TWID2=TWID
    THEI2=THEI
    UseTex2=UseTex
    TxtYPos2=TxtYPos
    TxtXPos2=TxtXPos
    SizeTex2=SizeTex
    DepthTex2=DepthTex
    FName2=FName
    FType2=FType
    FSize2=FSize
    TexCol2=TexCol
    TBMPct2=TBMPct
    TexBacCol2=TexBacCol
    ThumbType2=ThumbType
    ThumbProcess2=ThumbProcess
    TileBord2=TileBord
    TileBordMode2=TileBordMode
    ThumBord2=ThumBord
    BordThick2=BordThick
    BordCol2=BordCol
    CatForm2=CatForm
    CatMode2=CatMode
    UseOps2=UseOps
    SavOps2=SavOps
    CatSuff2=CatSuff
    IF Vrsn='NEW' THEN DO
     ADPRO_TO_FRONT
     OKAYN '"Cataloger 1.96"',
           '"Do you want to catalog:'||NL||NL||,
            '  An entire directory'||NL||,
            '  A partial directory'||NL||,
            '  From a file list'||NL||,
            '  From a FRED Sequence file"',
            "Entire|Partial|List|Sequence"
     Choice=rc
     if Choice=0 then Choice=4
    END
    IF Vrsn='OLD' THEN DO
     zz=0
     Choice=0
     DO WHILE Choice=0
      zz=zz+1
      IF zz=5 THEN zz=1
      IF zz=1 THEN Option='an entire directory'
      IF zz=2 THEN Option='a partial directory'
      IF zz=3 THEN Option='from a file list'
      IF zz=4 THEN Option='from a FRED Sequence file'
      ADPRO_TO_FRONT
      OKAY2 'Do you want to catalog'||NL||,
            Option||'?'
      IF rc=1 THEN Choice=zz
     END
    END
    if Choice=1 then DirMode='entire'
    if Choice=2 then DirMode='partial'
    if Choice=3 then DirMode='List'
    if Choice=4 then DirMode='Seq'
    IF Vrsn='NEW' & (DirMode='partial' | DirMode='entire') THEN DO
     ADPRO_TO_FRONT
     OKAYN '"Cataloger 1.96"',
           '"What type of files do'||NL||,
            'you want to ignore?"',
            "Icons|Non-icons|None"
     if rc=0 then SkipType='none'
     if rc=1 then SkipType='icons'
     if rc=2 then SkipType='non-icons'
    END
    IF DirMode='List' | DirMode='Seq' THEN DO
     IF Vrsn='NEW' THEN DO
      ADPRO_TO_FRONT
      OKAYN '"Cataloger 1.96"',
            '"Do you want the files to be'||NL||,
             'alphabetically sorted?"',
             "Yes|No"
     END
     IF Vrsn='OLD' THEN DO
      ADPRO_TO_FRONT
      OKAY2 'Do you want the files to be'||NL||,
            'alphabetically sorted?'
     END
     if rc=0 then SortList='unsorted'
             else SortList='sorted'
    END
    IF Vrsn='NEW' THEN DO
     ADPRO_TO_FRONT
     OKAYN '"Cataloger 1.96"',
           '"Do you want to preserve the'||NL||,
            'original image aspect?"',
            "Yes|No"
    END
    IF Vrsn='OLD' THEN DO
     ADPRO_TO_FRONT
     OKAY2 'Do you want to preserve the'||NL||,
           'original image aspect?'
    END
    if rc=0 then PreImgAsp='No'
            else PreImgAsp='Yes'
    Continue='False'
    DO WHILE Continue='False'
     IF Vrsn='NEW' THEN DO
      ADPRO_TO_FRONT
      OKAYN '"Cataloger 1.96"',
            '"What type of catalog'||NL||,
             'do you want to make?"',
             "Color|Gray"
     END
     IF Vrsn='OLD' THEN DO
      ADPRO_TO_FRONT
      OKAY2 'What type of catalog'||NL||,
            'do you want to make?'||NL||,
            'OK=Color Cancel=Gray'
     END
     if rc=0 then ColMode='Gray'
             else ColMode='Color'
     ADPRO_TO_FRONT
     GETNUMBER '"Catalog width"' PWI2 3 16383
     if rc=10 then do
      KeepOrg='Yes'
      Continue='True'
     end
     else PWI=ADPro_Result
     IF KeepOrg='No' THEN DO
      ADPRO_TO_FRONT
      GETNUMBER '"Catalog height"' PHE2 3 16383
      if rc=10 then do
       KeepOrg='Yes'
       Continue='True'
      end
      else PHE=ADPro_Result
     END
     IF KeepOrg='No' THEN DO
      LFORMAT 'BACKDROP'
      IF rc=10 THEN DO
       ADPRO_TO_FRONT
       OKAY1 'Error: Loader not found'||NL||,
             '"Loaders2/BACKDROP"'
       CALL RestoreExit 10
      END
      LOAD "X" PWI PHE ColMode
      IF rc=0 THEN DO
       Continue='True'
       CheckBuf='YES'
      END
      ELSE DO
       ADPRO_TO_FRONT
       OKAY1 'Error: ADPro''s image buffer'||NL||,
             'is too small for a catalog'||NL||,
             'of that type/size'
      END
     END
    END
    IF KeepOrg='No' THEN DO
     IF ColMode='Color' THEN DO
      ADPRO_TO_FRONT
      GETNUMBER "'Background color (Red)'" WORD(BackCol2,1) 0 255
      if rc=10 then KeepOrg='Yes'
               else BackCol=adpro_result||' '
      IF KeepOrg='No' THEN DO
       ADPRO_TO_FRONT
       GETNUMBER "'Background color (Green)'" WORD(BackCol2,2) 0 255
       if rc=10 then KeepOrg='Yes'
                else BackCol=BackCol||adpro_result||' '
      END
      IF KeepOrg='No' THEN DO
       ADPRO_TO_FRONT
       GETNUMBER "'Background color (Blue)'" WORD(BackCol2,3) 0 255
       if rc=10 then KeepOrg='Yes'
                else BackCol=BackCol||adpro_result
      END
     END
     ELSE DO
      ADPRO_TO_FRONT
      GETNUMBER "'Background color (Gray)'" WORD(BackCol2,2) 0 255
      if rc=10 then KeepOrg='Yes'
               else BackCol=adpro_result||' '||adpro_result||' '||adpro_result
     END
    END
    IF KeepOrg='No' THEN DO
     ADPRO_TO_FRONT
     GETNUMBER "'# of tiles in width'" TWI2 1 TRUNC((PWI-1)/2)
     if rc=10 then KeepOrg='Yes'
              else TWI=ADPro_Result
    END
    IF KeepOrg='No' THEN DO
     ADPRO_TO_FRONT
     GETNUMBER "'# of tiles in height'" THI2 1 TRUNC((PHE-1)/2)
     if rc=10 then KeepOrg='Yes'
              else THI=ADPro_Result
    END
    IF KeepOrg='No' THEN DO
     ADPRO_TO_FRONT
     GETNUMBER "'Tile width'" TWID2 1 TRUNC((PWI-TWI-1)/TWI)
     if rc=10 then KeepOrg='Yes'
              else TWID=ADPro_Result
    END
    IF KeepOrg='No' THEN DO
     ADPRO_TO_FRONT
     GETNUMBER "'Tile height'" THEI2 1 TRUNC((PHE-THI-1)/THI)
     if rc=10 then KeepOrg='Yes'
              else THEI=ADPro_Result
    END
    IF KeepOrg='No' THEN DO
     IF TWID>=5 & (THEI>=11 | (ThumbType='Large' & THEI>=9)) THEN DO
      IF Vrsn='NEW' THEN DO
       ADPRO_TO_FRONT
       OKAYN '"Cataloger 1.96"',
             '"Do you want text'||NL||,
              'to be enabled?"',
              "Yes|No"
      END
      IF Vrsn='OLD' THEN DO
       ADPRO_TO_FRONT
       OKAY2 'Do you want text'||NL||,
             'to be enabled?'
      END
      if rc=0 then UseTex='No'
              else UseTex='Yes'
     END
     ELSE UseTex='No'
     IF UseTex='Yes' THEN DO
      IF Vrsn='NEW' THEN DO
       ADPRO_TO_FRONT
       OKAYN '"Cataloger 1.96"',
             '"Where do you want the text'||NL||,
              'to appear on each tile?"',
              "Top|Bottom"
      END
      IF Vrsn='OLD' THEN DO
       ADPRO_TO_FRONT
       OKAY2 'Where do you want the text'||NL||,
             'to appear on each tile?'||NL||,
             'OK=Top       Cancel=Bottom'
      END
      if rc=0 then TxtYPos='Bottom'
              else TxtYPos='Top'
      IF Vrsn='NEW' THEN DO
       ADPRO_TO_FRONT
       OKAYN '"Cataloger 1.96"',
             '"Where do you want the text to'||NL||,
              'be aligned on each tile?"',
              "Left|Center|Right"
       ChoiceNum=rc+1
      END
      IF Vrsn='OLD' THEN DO
       zz=1
       ChoiceNum=0
       DO WHILE ChoiceNum=0
        zz=zz+1
        IF zz=4 THEN zz=1
        IF zz=1 THEN Option='Right '
        IF zz=2 THEN Option='Left  '
        IF zz=3 THEN Option='Center'
        ADPRO_TO_FRONT
        OKAY2 'Where do you want the text to'||NL||,
              'be aligned on each tile?'||NL||,
              'OK='||Option||' Cancel=Next Option'
        IF rc=1 THEN ChoiceNum=zz
       END
      END
      IF ChoiceNum=1 THEN TxtXPos='right'
      IF ChoiceNum=2 THEN TxtXPos='left'
      IF ChoiceNum=3 THEN TxtXPos='center'
      ChoiceNum=3
      IF Vrsn='NEW' THEN DO
       ADPRO_TO_FRONT
       OKAYN '"Cataloger 1.96"',
             '"Do you want the text to'||NL||,
              'include the image size?"',
              "Yes|No"
      END
      IF Vrsn='OLD' THEN DO
       ADPRO_TO_FRONT
       OKAY2 'Do you want the text to'||NL||,
             'include the image size?'
      END
      if rc=0 then SizeTex='No'
              else SizeTex='Yes'
      IF Vrsn='NEW' THEN DO
       ADPRO_TO_FRONT
       OKAYN '"Cataloger 1.96"',
             '"Do you want the text to include the'||NL||,
              'number of colors in the image?"',
              "Yes|No"
      END
      IF Vrsn='OLD' THEN DO
       ADPRO_TO_FRONT
       OKAY2 'Do you want the text to include the'||NL||,
             'number of colors in the image?'
      END
      if rc=0 then DepthTex='No'
              else DepthTex='Yes'
      ValidFont='No'
      DO WHILE ValidFont='No'
       ValidFont='Yes'
       MaxSize=THEI-8
       IF ThumbType='Small' THEN MaxSize=MaxSize-2
       IF MaxSize>127 THEN MaxSize=127
       Continue='False'
       DO WHILE Continue='False'
        FName=''
        DO WHILE FName=''
         ADPRO_TO_FRONT
         GETSTRING '"Font"' FName2
         if rc=10 then do
          KeepOrg='Yes'
          FName=FName2
          Continue='True'
         end
         else FName=ADPro_Result
        END
        IF KeepOrg='No' THEN DO
         IF EXISTS('FONTS:'||FName||'.font') THEN Continue='True'
         ELSE DO
          ADPRO_TO_FRONT
          OKAY1 'Error: File not found'||NL||,
                '"FONTS:'||FName||'.font"'
         END
        END
       END
       IF KeepOrg='No' THEN DO
        ADPRO_TO_FRONT
        GETNUMBER "'Font size'" FSize2 1 MaxSize
        if rc=10 then KeepOrg='Yes'
                 else FSize=adpro_result
       END
       IF KeepOrg='No' THEN DO
        IF EXISTS('FONTS:'||FName||'/'||FSize'') THEN FType='BITMAPPED'
        ELSE DO
         IF EXISTS('FONTS:'||FName||'.otag') THEN FType='SCALED'
         ELSE DO
          IF EXISTS('FONTS:'||FName'') THEN FType='BITMAPPED'
          ELSE DO
           ADPRO_TO_FRONT
           OKAY1 'Error: Could not load font'||NL||,
                  FName
           ValidFont='No'
          END
         END
        END
       END
      END
      IF KeepOrg='No' THEN DO
       IF ColMode='Color' THEN DO
        ADPRO_TO_FRONT
        GETNUMBER "'Text color (Red)'" WORD(TexCol2,1) 0 255
        if rc=10 then KeepOrg='Yes'
                 else TexCol=adpro_result||' '
        IF KeepOrg='No' THEN DO
         ADPRO_TO_FRONT
         GETNUMBER "'Text color (Green)'" WORD(TexCol2,2) 0 255
         if rc=10 then KeepOrg='Yes'
                  else TexCol=TexCol||adpro_result||' '
        END
        IF KeepOrg='No' THEN DO
         ADPRO_TO_FRONT
         GETNUMBER "'Text color (Blue)'" WORD(TexCol2,3) 0 255
         if rc=10 then KeepOrg='Yes'
                  else TexCol=TexCol||adpro_result
        END
       END
       ELSE DO
        ADPRO_TO_FRONT
        GETNUMBER "'Text color (Gray)'" WORD(TexCol2,1) 0 255
        if rc=10 then KeepOrg='Yes'
                 else TexCol=adpro_result||' '||adpro_result||' '||adpro_result
       END
      END
      IF KeepOrg='No' THEN DO
       ADPRO_TO_FRONT
       GETNUMBER "'Text highlight mix %'" TBMPct2 0 100
       if rc=10 then KeepOrg='Yes'
                else TBMPct=adpro_result
      END
      IF KeepOrg='No' THEN DO
       IF TBMPct>0 THEN DO
        IF ColMode='Color' THEN DO
         ADPRO_TO_FRONT
         GETNUMBER "'Highlight color (Red)'" WORD(TexBacCol2,1) 0 255
         if rc=10 then KeepOrg='Yes'
                  else TexBacCol=adpro_result||' '
         IF KeepOrg='No' THEN DO
          ADPRO_TO_FRONT
          GETNUMBER "'Highlight color (Green)'" WORD(TexBacCol2,2) 0 255
          if rc=10 then KeepOrg='Yes'
                   else TexBacCol=TexBacCol||adpro_result||' '
         END
         IF KeepOrg='No' THEN DO
          ADPRO_TO_FRONT
          GETNUMBER "'Highlight color (Blue)'" WORD(TexBacCol2,3) 0 255
          if rc=10 then KeepOrg='Yes'
                   else TexBacCol=TexBacCol||adpro_result
         END
        END
        ELSE DO
         ADPRO_TO_FRONT
         GETNUMBER "'Highlight color (Gray)'" WORD(TexBacCol2,1) 0 255
         if rc=10 then KeepOrg='Yes'
                  else TexBacCol=adpro_result||' '||adpro_result||' '||adpro_result
        END
       END
      END
     END
    END
    IF KeepOrg='No' THEN DO
     IF UseTex='Yes' THEN DO
      IF Vrsn='NEW' THEN DO
       ADPRO_TO_FRONT
       OKAYN '"Cataloger 1.96"',
             '"What type of thumbnail'||NL||,
              'do you want to use?"',
              "Large|Small"
      END
      IF Vrsn='OLD' THEN DO
       ADPRO_TO_FRONT
       OKAY2 'What type of thumbnail'||NL||,
             'do you want to use?'||NL||,
             'OK=Large  Cancel=Small'
      END
      if rc=0 then ThumbType='Small'
              else ThumbType='Large'
     END
     ELSE ThumbType='Large'
     IF Vrsn='NEW' THEN DO
      ADPRO_TO_FRONT
      OKAYN '"Cataloger 1.96"',
            '"Do you want custom thumbnail'||NL||,
             'processing to be enabled?"',
             "Yes|No"
     END
     IF Vrsn='OLD' THEN DO
      ADPRO_TO_FRONT
      OKAY2 'Do you want custom thumbnail'||NL||,
            'processing to be enabled?'
     END
     if rc=0 then ThumbProcess='No'
             else ThumbProcess='Yes'
     IF Vrsn='NEW' THEN DO
      ADPRO_TO_FRONT
      OKAYN '"Cataloger 1.96"',
            '"Do you want to have a border'||NL||,
             'around each tile?"',
             "Yes|No"
     END
     IF Vrsn='OLD' THEN DO
      ADPRO_TO_FRONT
      OKAY2 'Do you want to have a border'||NL||,
            'around each tile?'
     END
     if rc=0 then TileBord='No'
             else TileBord='Yes'
     IF TileBord='Yes' THEN DO
      IF Vrsn='NEW' THEN DO
       ADPRO_TO_FRONT
       OKAYN '"Cataloger 1.96"',
             '"Do you want to have tile borders'||NL||,
              'around all tiles or only those'||NL||,
              'that contain an image?"',
              "'All|Only Images'"
      END
      IF Vrsn='OLD' THEN DO
       ADPRO_TO_FRONT
       OKAY2 'Do you want to have tile borders'||NL||,
             'around all tiles or only those'||NL||,
             'that contain an image?'||NL||,
             'OK=All        Cancel=Only Images'
      END
      if rc=0 then TileBordMode='Images'
              else TileBordMode='All'
     END
     IF (PreImgAsp='Yes' & ThumbType='Large' & UseTex='Yes') | (((PreImgAsp='No' & ThumbType='Large') | (TWID=1 & THEI=1)) & TileBord='Yes') THEN ThumBord='No'
     ELSE DO
      IF Vrsn='NEW' THEN DO
       ADPRO_TO_FRONT
       OKAYN '"Cataloger 1.96"',
             '"Do you want to have a border'||NL||,
              'around each thumbnail?"',
              "Yes|No"
      END
      IF Vrsn='OLD' THEN DO
       ADPRO_TO_FRONT
       OKAY2 'Do you want to have a border'||NL||,
             'around each thumbnail?'
      END
      if rc=0 then ThumBord='No'
              else ThumBord='Yes'
     END
     IF TileBord='Yes' | ThumBord='Yes' THEN DO
      IF ThumbType='Small' & ThumBord='Yes' THEN MaxBordThick=1
      ELSE DO
       IF TRUNC((PWI-TWI-1)/TWI)-TWID>TRUNC((PHE-THI-1)/THI)-THEI THEN MaxBordThick=TRUNC(((PHE-THI-1)/THI+2-THEI)/2)
                                                                  ELSE MaxBordThick=TRUNC(((PWI-TWI-1)/TWI+2-TWID)/2)

      END
      ADPRO_TO_FRONT
      GETNUMBER "'Border thickness'" BordThick2 1 MaxBordThick
      if rc=10 then KeepOrg='Yes'
               else BordThick=adpro_result
      IF ColMode='Color' THEN DO
       IF KeepOrg='No' THEN DO
        ADPRO_TO_FRONT
        GETNUMBER "'Border color (Red)'" WORD(BordCol2,1) 0 255
        if rc=10 then KeepOrg='Yes'
                 else BordCol=adpro_result||' '
       END
       IF KeepOrg='No' THEN DO
        ADPRO_TO_FRONT
        GETNUMBER "'Border color (Green)'" WORD(BordCol2,2) 0 255
        if rc=10 then KeepOrg='Yes'
                 else BordCol=BordCol||adpro_result||' '
       END
       IF KeepOrg='No' THEN DO
        ADPRO_TO_FRONT
        GETNUMBER "'Border color (Blue)'" WORD(BordCol2,3) 0 255
        if rc=10 then KeepOrg='Yes'
                 else BordCol=BordCol||adpro_result
       END
      END
      ELSE DO
       IF KeepOrg='No' THEN DO
        ADPRO_TO_FRONT
        GETNUMBER "'Border color (Gray)'" WORD(BordCol2,1) 0 255
        if rc=10 then KeepOrg='Yes'
                 else BordCol=adpro_result||' '||adpro_result||' '||adpro_result
       END
      END
     END
    END
    IF KeepOrg='No' THEN DO
     IF Vrsn='NEW' THEN DO
      SFORMAT CatForm2
      GETLIST SAVERS
      if rc=10 then do
       ADPRO_TO_FRONT
       okay1 'Error listing savers'
       CALL RestoreExit 10
      end
      LISTVIEW '"Save format"' WORDS(ADPro_Result) ITEMS ADPro_Result
      if rc>1 then KeepOrg='Yes'
              else CatForm=SUBSTR(WORD(ADPro_Result,1),2,LENGTH(WORD(ADPro_Result,1))-2)
     END
     IF Vrsn='OLD' THEN DO
      Continue='False'
      DO WHILE Continue='False'
       CatForm=''
       DO WHILE CatForm=''
        ADPRO_TO_FRONT
        GETSTRING '"Save format"' CatForm2
        if rc=10 then do
         KeepOrg='Yes'
         CatForm=CatForm2
         Continue='True'
        end
        else CatForm=adpro_result
       END
       IF KeepOrg='No' THEN DO
        IF EXISTS('ADPro:Savers2/'||CatForm) THEN Continue='True'
        ELSE DO
         ADPRO_TO_FRONT
         OKAY1 'Error: Saver not found'||NL||,
               '"ADPro:Savers2/'||adpro_result||'"'
        END
       END
      END
     END
    END
    IF KeepOrg='No' THEN DO
     IF Vrsn='NEW' THEN DO
      ADPRO_TO_FRONT
      OKAYN '"Cataloger 1.96"',
            '"What type of image data'||NL||,
             'do you want to save?"',
             "Raw|Rendered"
     END
     IF Vrsn='OLD' THEN DO
      ADPRO_TO_FRONT
      OKAY2 'What type of image data'||NL||,
            'do you want to save?'||NL||,
            'OK=Raw  Cancel=Rendered'
     END
     if rc=0 then CatMode='Image'
             else CatMode='Raw'
     IF Vrsn='NEW' THEN DO
      ADPRO_TO_FRONT
      OKAYN '"Cataloger 1.96"',
            '"Do you want saver opts'||NL||,
             'to be enabled?"',
             "Yes|No"
     END
     IF Vrsn='OLD' THEN DO
      ADPRO_TO_FRONT
      OKAY2 'Do you want saver opts'||NL||,
            'to be enabled?'
     END
     if rc=0 then UseOps='No'
             else UseOps='Yes'
     IF UseOps='Yes' THEN DO
      ADPRO_TO_FRONT
      GETSTRING '"Saver opts"' SavOps2
      if rc=10 then KeepOrg='Yes'
               else SavOps=adpro_result
     END
    END
    IF KeepOrg='No' THEN DO
     ADPRO_TO_FRONT
     GETSTRING '"Catalog file extension"' CatSuff2
     if rc=10 then KeepOrg='Yes'
              else CatSuff=adpro_result
    END
    IF KeepOrg='Yes' THEN DO
     OKAY1 'Restoring previous settings'
     DirMode=DirMode2
     SkipType=SkipType2
     SortList=SortList2
     PreImgAsp=PreImgAsp2
     ColMode=ColMode2
     PWI=PWI2
     PHE=PHE2
     BackCol=BackCol2
     TWI=TWI2
     THI=THI2
     TWID=TWID2
     THEI=THEI2
     UseTex=UseTex2
     TxtYPos=TxtYPos2
     TxtXPos=TxtXPos2
     SizeTex=SizeTex2
     DepthTex=DepthTex2
     FName=FName2
     FType=FType2
     FSize=FSize2
     TexCol=TexCol2
     TBMPct=TBMPct2
     TexBacCol=TexBacCol2
     ThumbType=ThumbType2
     ThumbProcess=ThumbProcess2
     TileBord=TileBord2
     TileBordMode=TileBordMode2
     ThumBord=ThumBord2
     BordThick=BordThick2
     BordCol=BordCol2
     CatForm=CatForm2
     CatMode=CatMode2
     UseOps=UseOps2
     SavOps=SavOps2
     CatSuff=CatSuff2
    END
   END
   IF ChoiceNum=4 THEN DO
    Act=2
    DO WHILE Act=2
     ADPRO_TO_FRONT
     GETFILE '"Select settings file"' '"'||PrefsDir||'"' '"'||PrefsFile||'"'
     IF rc=0 THEN DO
      Settings=ADPro_Result
      IF EXISTS(Settings) THEN DO
       IF Vrsn='NEW' THEN DO
        ADPRO_TO_FRONT
        OKAYN '"Cataloger 1.96"',
              "'"""||Settings||""" exists."||NL||,
               "Replace it?'",
              '"Replace|Specify New Name...|Cancel"'
       END
       IF Vrsn='OLD' THEN DO
        ADPRO_TO_FRONT
        OKAY2 'The file:'||NL||,
              '"'||Settings||'"'||NL||,
              ' exists.'||NL||NL||,
              'Overwrite it?'
       END
       Act=rc
      END
      ELSE Act=1
      IF Act=1 THEN DO
       IF OPEN(Prefs2,Settings,"W") THEN DO
        CALL WriteLn(Prefs2,CatVersion)
        CALL WriteLn(Prefs2,DirMode)
        CALL WriteLn(Prefs2,SkipType)
        CALL WriteLn(Prefs2,PreImgAsp)
        CALL WriteLn(Prefs2,PWI)
        CALL WriteLn(Prefs2,PHE)
        CALL WriteLn(Prefs2,ColMode)
        CALL WriteLn(Prefs2,TWI)
        CALL WriteLn(Prefs2,THI)
        CALL WriteLn(Prefs2,UseTex)
        CALL WriteLn(Prefs2,FName)
        CALL WriteLn(Prefs2,FType)
        CALL WriteLn(Prefs2,FSize)
        CALL WriteLn(Prefs2,SizeTex)
        CALL WriteLn(Prefs2,CatForm)
        CALL WriteLn(Prefs2,CatMode)
        CALL WriteLn(Prefs2,UseOps)
        CALL WriteLn(Prefs2,SavOps)
        CALL WriteLn(Prefs2,BackCol)
        CALL WriteLn(Prefs2,TexCol)
        CALL WriteLn(Prefs2,TexBacCol)
        CALL WriteLn(Prefs2,CatSuff)
        CALL WriteLn(Prefs2,ThumbType)
        CALL WriteLn(Prefs2,TBMPct)
        CALL WriteLn(Prefs2,TileBord)
        CALL WriteLn(Prefs2,ThumBord)
        CALL WriteLn(Prefs2,BordCol)
        CALL WriteLn(Prefs2,TWID)
        CALL WriteLn(Prefs2,THEI)
        CALL WriteLn(Prefs2,TxtYPos)
        CALL WriteLn(Prefs2,TxtXPos)
        CALL WriteLn(Prefs2,ThumbProcess)
        CALL WriteLn(Prefs2,SortList)
        CALL WriteLn(Prefs2,DepthTex)
        CALL WriteLn(Prefs2,BordThick)
        CALL WriteLn(Prefs2,TileBordMode)
        CALL CLOSE(Prefs2)
       END
       ELSE DO
        ADPRO_TO_FRONT
        OKAY1 'Could not save settings file:'||NL||,
              '"'||Settings||'"'
       END
      END
     END
     ELSE Act=0
    END
   END
  END
  IF CheckBuf='NO' THEN DO
   LFORMAT 'BACKDROP'
   IF rc=10 THEN DO
    ADPRO_TO_FRONT
    OKAY1 'Error: Loader not found'||NL||,
          '"Loaders2/BACKDROP"'
    CALL RestoreExit 10
   END
   LOAD "X" PWI PHE ColMode
   IF rc~=0 THEN DO
    ADPRO_TO_FRONT
    OKAY1 'Error: ADPro''s image buffer'||NL||,
          'is too small for a catalog'||NL||,
          'of that type/size'
    BackToStart='Yes'
   END
  END
  IF BackToStart='No' THEN DO
   if DirMode='entire' then do
    ADPRO_TO_FRONT
    GETDIR "'Directory to catalog'" ImgDir||'"'
    if rc=10 then BackToStart='Yes'
    IF BackToStart='No' THEN DO
     TheDir='"'||adpro_result
     if TheDir~='"' & RIGHT(TheDir,1)~=':' & RIGHT(TheDir,1)~='/' then TheDir=TheDir||'/'
     IF TheDir~='"/' & RIGHT(TheDir,2)~='//' & RIGHT(TheDir,1)='/' THEN ImgDir=LEFT(TheDir,LENGTH(TheDir)-1)
                                                    ELSE ImgDir=TheDir
     fl=SHOWDIR(RIGHT(TheDir,LENGTH(TheDir)-1),'File','/')
     IF fl='' THEN DO
      OKAY1 'Error: Directory empty'||NL||,
             TheDir||'"'
      BackToStart='Yes'
     END
     IF BackToStart='No' THEN DO
      zz=INDEX(fl,'/')
      DO WHILE zz~=0
       fl=INSERT('"',fl,zz-1)
       zz=INDEX(fl,'/',zz+2)
      END
      fl=fl||'"'
     END
    END
   end
   if DirMode='partial' then do
    ADPRO_TO_FRONT
    GETFILES '"Select files to catalog"' ImgDir||'"' '"'||'"'
    if rc=10 then BackToStart='Yes'
    IF BackToStart='No' THEN DO
     fl=' '||adpro_result
     zz=INDEX(fl,'/')
     IF zz~=0 THEN DO
      Continue='False'
      DO WHILE Continue='False'
       yy=zz
       zz=INDEX(fl,'/',zz+1)
       IF zz=0 THEN Continue='True'
       ELSE DO
        IF ~EXISTS(SUBSTR(fl,3,zz-2)) THEN Continue='True'
       END
      END
      zz=yy
     END
     ELSE DO
      zz=POS(':',fl)
      IF zz=0 THEN zz=2
     END
     TheDir=LEFT(fl,zz)
     zz=1
     DO WHILE zz~=0
      fl=DELSTR(fl,zz,LENGTH(TheDir))
      fl=INSERT('/',fl,zz-1)
      zz=INDEX(fl,TheDir)
     END
     fl=SUBSTR(fl,2,LENGTH(fl)-2)
     TheDir=RIGHT(TheDir,LENGTH(TheDir)-1)
     IF TheDir~='"/' & RIGHT(TheDir,2)~='//' & RIGHT(TheDir,1)='/' THEN ImgDir=LEFT(TheDir,LENGTH(TheDir)-1)
                                                    ELSE ImgDir=TheDir
    END
   end
   IF (DirMode='partial' | DirMode='entire') & BackToStart='No' THEN DO
    fl=translate(fl,'09'x,' ')
    fl=translate(fl,' ','/')
    IF Vrsn='OLD' THEN IgnoreType='icons'
                  ELSE IgnoreType=SkipType
    zz=1
    DO WHILE zz<=WORDS(fl)
     IF IgnoreType='icons' THEN DO
      IF RIGHT(WORD(fl,zz),6)='.info"' THEN DO
       fl=DELWORD(fl,zz,1)
       zz=zz-1
      END
     END
     IF IgnoreType='non-icons' THEN DO
      IF RIGHT(WORD(fl,zz),6)~='.info"' THEN DO
       fl=DELWORD(fl,zz,1)
       zz=zz-1
      END
     END
     zz=zz+1
    END
    IF fl='' THEN DO
     ADPRO_TO_FRONT
     OKAY1 'Error: All of the selected files'||NL||,
           'were '||IgnoreType||'.'
     BackToStart='Yes'
    END
   END
   if DirMode='List' then do
    ADPRO_TO_FRONT
    GETFILE '"Select list file"' '"'||ListDir||'"' '"'||ListFile||'"'
    if rc=10 then BackToStart='Yes'
    IF BackToStart='No' THEN DO
     ListFileName=ADPro_Result
     zz=LASTPOS('/',ListFileName)
     IF zz=0 THEN zz=INDEX(ListFileName,':')
     ListDir=LEFT(ListFileName,zz)
     ListFile=RIGHT(ListFileName,LENGTH(ListFileName)-zz)
     IF ListDir~='/' & RIGHT(ListDir,2)~='//' & RIGHT(ListDir,1)='/' THEN ListDir=LEFT(ListDir,LENGTH(ListDir)-1)
     IF OPEN(List,ListFileName,"R") THEN DO
      fl=''
      x=READLN(List)
      DO WHILE x~=''
       x='"'||x||'"'
       fl=fl||TRANSLATE(x,'09'x,' ')||' '
       x=READLN(List)
      END
      CALL CLOSE(List)
      IF fl='' THEN DO
       ADPRO_TO_FRONT
       OKAY1 'Error: There were no files in'||NL||,
              '"'||ListFileName||'"'
       BackToStart='Yes'
      END
     END
     ELSE DO
      ADPRO_TO_FRONT
      OKAY1 ListFileName||NL||,
           'could not be read.'
      BackToStart='Yes'
     END
    END
   end
   if DirMode='Seq' then do
    SeqFileName=''
    DO WHILE Right(SeqFileName,4)~='.seq'
     ADPRO_TO_FRONT
     GETFILE '"Select Sequence file"' '"'||SeqDir||'"' '"'||SeqFile||'"'
     if rc=10 then do
      BackToStart='Yes'
      SeqFileName='.seq'
     end
     IF BackToStart='No' THEN DO
      SeqFileName=ADPro_Result
      zz=LASTPOS('/',SeqFileName)
      IF zz=0 THEN zz=INDEX(SeqFileName,':')
      SeqDir=LEFT(SeqFileName,zz)
      SeqFile=RIGHT(SeqFileName,LENGTH(SeqFileName)-zz)
      IF SeqDir~='/' & RIGHT(SeqDir,2)~='//' & RIGHT(SeqDir,1)='/' THEN SeqDir=LEFT(SeqDir,LENGTH(SeqDir)-1)
      IF Right(SeqFileName,4)~='.seq' THEN OKAY1 SeqFileName||NL||,
                                            'does not end in the required'||NL||,
                                            'extension of ".seq".'
     END
    END
    IF BackToStart='No' THEN DO
     IF OPEN(SEQ,SeqFileName,"R") THEN DO
      fl=''
      x=READLN(SEQ)
      t=INDEX(x,'09'x)
      IF t=0 THEN t=1
      x=LEFT(x,t-1)
      DO WHILE x~=''
       IF INDEX(x,' ')=0 THEN x='"'||x||'"'
       fl=fl||TRANSLATE(x,'09'x,' ')||' '
       x=READLN(SEQ)
       t=INDEX(x,'09'x)
       IF t=0 THEN t=1
       x=LEFT(x,t-1)
      END
      CALL CLOSE(SEQ)
      IF fl='' THEN DO
        ADPRO_TO_FRONT
       OKAY1 'Error: There were no files in'||NL||,
              '"'||SeqFileName||'"'
       BackToStart='Yes'
      END
     END
     ELSE DO
      ADPRO_TO_FRONT
      OKAY1 SeqFileName||NL||,
           'could not be read.'
      BackToStart='Yes'
     END
    END
   end
   IF BackToStart='No' THEN DO
    ADPRO_TO_FRONT
    GETFILE "'Catalog base filename'" '"'||CatDir||'"' '"'||'"'
    if rc=10 then BackToStart='Yes'
    IF BackToStart='No' THEN DO
     CatFile='"'||ADPro_Result
     zz=LASTPOS('/',CatFile)
     IF zz=0 THEN zz=INDEX(CatFile,':')
     IF zz=0 THEN zz=1
     CatDir=SUBSTR(CatFile,2,zz-1)
     IF CatDir~='/' & RIGHT(CatDir,2)~='//' & RIGHT(CatDir,1)='/' THEN CatDir=LEFT(CatDir,LENGTH(CatDir)-1)
    END
   END
  END
 END
 IF Vrsn='NEW' THEN DO
  SET_ADPRO_PUBLIC
  ADProScrn=adpro_result
  SET_ADPRO_MODE
  ScreenWidth=WORD(ADPRO_RESULT,2)
  ScreenHeight=WORD(ADPRO_RESULT,3)
  ADPRO_TO_FRONT
  if ~open(CON,'con:'||TRUNC((ScreenWidth-OutWinX)/2)||'/'||TRUNC((ScreenHeight-OutWinY)/2)||'/'||OutWinX||'/'||OutWinY||'/Cataloger 1.96    Ctrl-C to abort/SCREEN '||ADProScrn,'W') then do
   ADPRO_TO_FRONT
   OKAY1 'Could not open output window'
   CALL RestoreExit 10
  end
 END
 IF Vrsn='OLD' THEN DO
  ADPRO_TO_BACK
  if ~open(CON,'con:0/1/'||OutWinX||'/'||OutWinY||'/Cataloger 1.96    Ctrl-C to abort','W') then do
   ADPRO_TO_FRONT
   OKAY1 'Could not open output window'
   CALL RestoreExit 10
  end
 END
 Line1=0
 IF DirMode='partial' | DirMode='entire' | ((DirMode='List' | DirMode='Seq') & SortList='sorted') THEN DO
  fl2=''
  IF WORDS(fl)>1 THEN DO
   CALL WriteLn(CON,'Sorting '||WORDS(fl)||' files...')
   Line1=LENGTH('Sorting '||WORDS(fl)||' files...')
  END
  DO i=1 TO WORDS(fl)
   Buff=WORD(fl,1)
   Delli=1
   DO j=1 TO WORDS(fl)
    IF DirMode='entire' | DirMode='partial' THEN DO
     File1=Buff
     File2=WORD(fl,j)
    END
    IF DirMode='List' | DirMode='Seq' THEN DO
     zz=LASTPOS('/',Buff)
     IF zz=0 THEN zz=INDEX(Buff,':')
     File1=RIGHT(Buff,LENGTH(Buff)-zz)
     zz=LASTPOS('/',WORD(fl,j))
     IF zz=0 THEN zz=INDEX(WORD(fl,j),':')
     File2=RIGHT(WORD(fl,j),LENGTH(WORD(fl,j))-zz)
    END
    File1=UPPER(TRANSLATE(File1,' ','09'x))
    File2=UPPER(TRANSLATE(File2,' ','09'x))
    IF File2<File1 THEN DO
     Buff=WORD(fl,j)
     Delli=j
    END
   END
   fl=DELWORD(fl,Delli,1)
   Buff=Buff||' '
   fl2=fl2||Buff
  END
  fl=fl2
 END
 CatNum=1
 k=0
 i=0
 cat.CatNum.0=0
 do i=1 to words(fl)
  k=k+1
  line=word(fl,i)
  cat.CatNum.k=TRANSLATE(line,' ','09'x)
  cat.CatNum.0=k
  if k=TWI*THI then do
   k=0
   CatNum=CatNum+1
   cat.CatNum.0=0
  end
 end
 if cat.CatNum.0=0 then CatNum=CatNum-1
 cat.0.0=12
 IF DirMode='List' | DirMode='Seq' THEN TheDir=''
 TextXPosit=TxtXPos
 IF TextXPosit='center' & (SizeTex='Yes' | DepthTex='Yes') THEN DO
  TextXPosit='left'
  SepSize='Yes'
 END
 ELSE SepSize='No'
 CatDataType=CatMode
 IF UseOps='No' THEN Ops=''
                ELSE Ops=SavOps
 i=1
 do WHILE i<=CatNum
  j=1
  do WHILE j<=cat.i.0
   NoLoad='True'
   DO WHILE NoLoad='True'
    if CatNum=1 then catalogstring=''
                else catalogstring='s'
    if (CatNum-1)*TWI*THI+cat.CatNum.0=1 then tilestring=''
                                         else tilestring='s'
    if cat.i.0=1 then catextstring=''
                 else catextstring='s'
    CALL WriteLn(CON,LUP||COPIES(' ',Line1))
    CALL WriteLn(CON,LUP||'Creating '||CatNum||' catalog'||catalogstring||' from '||(CatNum-1)*TWI*THI+cat.CatNum.0||' image file'||tilestring||':')
    Line1=LENGTH('Creating '||CatNum||' catalog'||catalogstring||' from '||(CatNum-1)*TWI*THI+cat.CatNum.0||' file'||tilestring||':')
    IF i<=CatNum THEN DO
     CALL WriteLn(CON,' Creating catalog #'||i||' using '||cat.i.0||' image'||catextstring||':')
     Line2=LENGTH(' Creating catalog #'||i||' using '||cat.i.0||' image'||catextstring||':')
     IF j<=cat.i.0 THEN DO
      IF DirMode='partial' | DirMode='entire' THEN TXString='"'||cat.i.j
      IF DirMode='List' | DirMode='Seq' THEN DO
       zz=LASTPOS('/',cat.i.j)
       IF zz=0 THEN zz=INDEX(cat.i.j,':')
       TXString='"'||RIGHT(cat.i.j,LENGTH(cat.i.j)-zz)
      END
      CALL WriteLn(CON,'  Processing image #'||j||': '||TXString)
      Line3=LENGTH('  Processing image #'||j||': '||TXString)
      PosDCTV='No'
      IF UseDCTV='No' THEN NonIFF='Yes'
                      ELSE NonIFF='No'
      CALL WriteLn(CON,'   Loading...')
      Line4=13
      IF NonIFF='No' THEN DO
       LFORMAT 'IFF'
       IF rc=10 THEN DO
        ADPRO_TO_FRONT
        OKAY1 'Error: Loader not found'||NL||,
              '"Loaders2/IFF"'
        CALL RestoreExit 10
       END
       LOAD TheDir||cat.i.j
       if rc=10 then NonIFF='Yes'
       else do
        NoLoad='False'
        RENDER_TYPE
        IF ADPRO_RESULT=8 | ADPRO_RESULT=16 THEN PosDCTV='Yes'
       end
      END
      IF NonIFF='Yes' THEN DO
       LFORMAT 'UNIVERSAL'
       IF rc=10 THEN DO
        ADPRO_TO_FRONT
        OKAY1 'Error: Loader not found'||NL||,
              '"Loaders2/UNIVERSAL"'
        CALL RestoreExit 10
       END
       LOAD TheDir||cat.i.j
       if rc=0 then NoLoad='False'
      END
      IF ListMode='All' THEN DO
       CatListFileName=RIGHT(CatFile,LENGTH(CatFile)-1)||'.list.all'
       IF ~EXISTS(CatListFileName) THEN DO
        IF OPEN(ListAllFile,CatListFileName,'W') THEN CALL CLOSE(ListAllFile)
       END
       IF EXISTS(CatListFileName) & ~SHOW('FILES',ListAllFile) THEN CALL OPEN(ListAllFile,CatListFileName,'A')
       IF SHOW('FILES',ListAllFile) THEN DO
        CALL WRITELN(ListAllFile,SUBSTR(TheDir||cat.i.j,2,LENGTH(TheDir||cat.i.j)-2))
        IF i=CatNum & j=cat.i.0 THEN CALL CLOSE(ListAllFile)
       END
      END
      IF NoLoad='False' THEN DO
       IMAGE_TYPE
       ImgType=adpro_result
       IF ImgType='BITPLANE' THEN NoLoad='True'
       ELSE DO
        IF ListMode='Cataloged' | ListMode='Both' THEN DO
         CatListFileName=RIGHT(CatFile,LENGTH(CatFile)-1)||'.list.cataloged'
         IF ~EXISTS(CatListFileName) THEN DO
          IF OPEN(ListCatFile,CatListFileName,'W') THEN CALL CLOSE(ListCatFile)
         END
         IF EXISTS(CatListFileName) & ~SHOW('FILES',ListCatFile) THEN CALL OPEN(ListCatFile,CatListFileName,'A')
         IF SHOW('FILES',ListCatFile) THEN DO
          CALL WRITELN(ListCatFile,SUBSTR(TheDir||cat.i.j,2,LENGTH(TheDir||cat.i.j)-2))
          IF i=CatNum & j=cat.i.0 THEN CALL CLOSE(ListCatFile)
         END
        END
       END
      END
      IF NoLoad='True' THEN DO
       IF ListMode='Failed' | ListMode='Both' THEN DO
        CatListFileName=RIGHT(CatFile,LENGTH(CatFile)-1)||'.list.failed'
        IF ~EXISTS(CatListFileName) THEN DO
         IF OPEN(ListFailFile,CatListFileName,'W') THEN CALL CLOSE(ListFailFile)
        END
        IF EXISTS(CatListFileName) & ~SHOW('FILES',ListFailFile) THEN CALL OPEN(ListFailFile,CatListFileName,'A')
        IF SHOW('FILES',ListFailFile) THEN DO
         CALL WRITELN(ListFailFile,SUBSTR(TheDir||cat.i.j,2,LENGTH(TheDir||cat.i.j)-2))
         IF i=CatNum & j=cat.i.0 THEN CALL CLOSE(ListFailFile)
        END
       END
       IF ShowErrors='Yes' THEN DO
        ADPRO_TO_FRONT
        okay1 'Error loading file'||NL||,
               TheDir||cat.i.j
       END
       DO ii=1 TO CatNum
        kk=ii+1
        DO jj=1 TO cat.ii.0
         ll=jj+1
         IF ll<= cat.ii.0 THEN cat.ii.jj=cat.ii.ll
                          ELSE cat.ii.jj=cat.kk.1
        END
       END
       cat.CatNum.0=(Cat.CatNum.0)-1
       IF cat.CatNum.0=0 THEN CatNum=CatNum-1
       CALL WriteLn(CON,LUP||COPIES(' ',Line4))
       CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
       CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line2)||LUP)
      END
     END
     ELSE DO
      NoLoad='False'
      CALL WriteLn(CON,'')
      CALL WriteLn(CON,'')
     END
    END
    ELSE NoLoad='False'
   END
   IF j<=cat.i.0 THEN DO
    RENDER_TYPE
    RendType=ADPro_Result
    IF PosDCTV='Yes' & INDEX(ImgType,'BITPLANE')~=0 THEN DO
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Converting to raw image data...')
     Line4=34
     OPERATOR "RENDERED_TO_RAW"
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error converting'||NL||,
            'rendered to raw'
      CALL RestoreExit 10
     end
    END
    IF ColMode='Gray' & WORD(ImgType,1)='COLOR' THEN DO
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Converting to grayscale...')
     Line4=29
     OPERATOR "COLOR_TO_GRAY"
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error converting'||NL||,
            'color to gray'
      CALL RestoreExit 10
     end
    END
    XSIZE
    IWID=adpro_result
    YSIZE
    IHEI=adpro_result
    IF ThumbType='Small' THEN EfTHei=THEI-FSize-9
                         ELSE EfTHei=THEI
    IF PreImgAsp='Yes' THEN DO
     TIWID=TWID
     TIHEI=TWID/IWID*IHEI
     IF TIHEI>EfTHei THEN DO
      TIWID=EfTHei/IHEI*IWID
      TIHEI=EfTHei
     END
     TIWID=TRUNC(TIWID+.5)
     TIHEI=TRUNC(TIHEI+.5)
     IF TIWID=0 THEN TIWID=1
     IF TIHEI=0 THEN TIHEI=1
    END
    IF PreImgAsp='No' THEN DO
     TIWID=TWID
     TIHEI=EfTHei
    END
    IF IWID~=TIWID | IHEI~=TIHEI THEN DO
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Scaling to '||TIWID||'x'||TIHEI||'...')
     Line4=LENGTH('   Scaling to '||TIWID||'x'||TIHEI||'...')
     ABS_SCALE TIWID TIHEI
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error scaling image'
      CALL RestoreExit 10
     end
    END
    IF ThumbProcess='Yes' THEN DO
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Processing thumbnail...')
     Line4=26
/***********ADD ANY OPERATIONS TO PERFORM ON EACH THUMBNAIL HERE************/

/***************************************************************************/
    END
    SFORMAT 'IFF'
    IF rc=10 THEN DO
     ADPRO_TO_FRONT
     OKAY1 'Error: Saver not found'||NL||,
           '"Savers2/IFF"'
     CALL RestoreExit 10
    END
    ThumbYOff=TRUNC((EfTHei-TIHEI)/2)
    IF ThumbType='Small' & TxtYPos='Top' THEN ThumbYOff=ThumbYOff+FSize+9
    IF TIWID<TWID | TIHEI<THEI THEN DO
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Saving temporary thumbnail...')
     Line4=32
     SAVE 'T:CAT.'||j RAW
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error saving file'||NL||,
            '"T:CAT.'||j||'"'
      CALL RestoreExit 10
     end
     LFORMAT 'BACKDROP'
     IF rc=10 THEN DO
      ADPRO_TO_FRONT
      OKAY1 'Error: Loader not found'||NL||,
            '"Loaders2/BACKDROP"'
      CALL RestoreExit 10
     END
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Creating blank tile...')
     Line4=25
     LOAD "X" TWID THEI ColMode BackCol
     if rc~=0 then do
      ADPRO_TO_FRONT
      okay1 'Error creating blank tile'
      CALL RestoreExit 10
     end
     LFORMAT 'IFF'
     IF rc=10 THEN DO
      ADPRO_TO_FRONT
      OKAY1 'Error: Loader not found'||NL||,
            '"Loaders2/IFF"'
      CALL RestoreExit 10
     END
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Adding thumbnail...')
     Line4=22
     LOAD 'T:CAT.'||j TRUNC((TWID-TIWID)/2) ThumbYOff 100
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error loading file'||NL||,
            '"T:CAT.'||j||'"'
      CALL RestoreExit 10
     end
    END
    IF UseTex='Yes' THEN DO
     IF TBMPct>0 THEN DO
      IF TxtYPos='Top' THEN TxtHighYOff=2
      IF TxtYPos='Bottom' THEN TxtHighYOff=THEI-FSize-6
      CALL WriteLn(CON,LUP||COPIES(' ',Line4))
      CALL WriteLn(CON,LUP||'   Adding text highlight...')
      Line4=27
      operator "RECTANGLE" 2 TxtHighYOff TWID-4 FSize+4 "-1" TexBacCol TBMPct
      IF rc=10 then do
       ADPRO_TO_FRONT
       okay1 'Error drawing'||NL||,
             'text highlight'
       CALL RestoreExit 10
      END
     END
     IF TextXPosit='left' THEN TxtXOff=4
     IF TextXPosit='center' THEN TxtXOff=TRUNC(TWID/2)
     IF TextXPosit='right' THEN TxtXOff=TWID-4
     IF TxtYPos='Top' THEN TxtYOff=4
     IF TxtYPos='Bottom' THEN TxtYOff=THEI-FSize-4
     IF ImgType='COLOR' THEN ImgDepth='24-bit'
     IF ImgType='GRAY' THEN ImgDepth='8-bit'
     IF INDEX(ImgType,'BITPLANE')~=0 THEN ImgDepth=RendType
     IF SizeTex='Yes' & DepthTex='No' THEN OtherText='  '||IWID||'x'||IHEI
     IF SizeTex='No' & DepthTex='Yes' THEN  OtherText='  '||ImgDepth
     IF SizeTex='Yes' & DepthTex='Yes' THEN OtherText='  '||IWID||'x'||IHEI||'x'||ImgDepth
     IF SizeTex='No' & DepthTex='No' THEN OtherText=''
     IF SepSize='No' THEN TXString=LEFT(TXString,LENGTH(TXString)-1)||OtherText||'"'
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Adding text...')
     Line4=17
     operator "TEXT_VISUAL" FONT_TYPE FType FONT_DIR "FONTS:" FONT_NAME FName,
                            SET_FONT_SIZE FSize SET_TEXT_STYLE 0 SET_TRACKING 0,
                            STRING TXString TEXT_HANDLE TextXPosit,
                            SET_XOFFSET TxtXOff SET_YOFFSET TxtYOff,
                            SET_BLUR "-1" EMBOSS_DIRECTION OFF RENDER_TYPE MIX,
                            SET_RENDER 100 SET_COLORS TexCol SET_TINT 0,
                            SET_SATURATION 0 DRAW
     IF rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error drawing text'
      CALL RestoreExit 10
     END
     IF SepSize='Yes' THEN DO
      operator "TEXT_VISUAL" FONT_TYPE FType FONT_DIR "FONTS:" FONT_NAME FName,
                             SET_FONT_SIZE FSize SET_TEXT_STYLE 0 SET_TRACKING 0,
                             STRING '"'||RIGHT(OtherText,LENGTH(OtherText)-2)||'"' TEXT_HANDLE RIGHT,
                             SET_XOFFSET TWID-4 SET_YOFFSET TxtYOff,
                             SET_BLUR "-1" EMBOSS_DIRECTION OFF RENDER_TYPE MIX,
                             SET_RENDER 100 SET_COLORS TexCol SET_TINT 0,
                             SET_SATURATION 0 DRAW
      IF rc=10 then do
       ADPRO_TO_FRONT
       okay1 'Error drawing text'
       CALL RestoreExit 10
      END
     END
    END
    CALL WriteLn(CON,LUP||COPIES(' ',Line4))
    CALL WriteLn(CON,LUP||'   Saving temporary tile...')
    Line4=27
    SAVE 'T:CAT.'||j RAW
    if rc=10 then do
     ADPRO_TO_FRONT
     okay1 'Error saving file'||NL||,
           '"T:CAT.'||j||'"'
     CALL RestoreExit 10
    end
    IF TWID<TRUNC((PWI-TWI-1)/TWI) | THEI<TRUNC((PHE-THI-1)/THI) THEN DO
     LFORMAT 'BACKDROP'
     IF rc=10 THEN DO
      ADPRO_TO_FRONT
      OKAY1 'Error: Loader not found'||NL||,
            '"Loaders2/BACKDROP"'
      CALL RestoreExit 10
     END
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Creating tile region...')
     Line4=26
     LOAD "X" TRUNC((PWI-TWI-1)/TWI) TRUNC((PHE-THI-1)/THI) ColMode BackCol
     if rc~=0 then do
      ADPRO_TO_FRONT
      okay1 'Error creating tile region'
      CALL RestoreExit 10
     end
     LFORMAT 'IFF'
     IF rc=10 THEN DO
      ADPRO_TO_FRONT
      OKAY1 'Error: Loader not found'||NL||,
            '"Loaders2/IFF"'
      CALL RestoreExit 10
     END
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Adding tile...')
     Line4=17
     LOAD 'T:CAT.'||j TRUNC(((PWI-TWI-1)/TWI-TWID)/2) TRUNC(((PHE-THI-1)/THI-THEI)/2) 100
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error loading file'||NL||,
            '"T:CAT.'||j||'"'
      CALL RestoreExit 10
     end
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||'   Saving temporary tile...')
     Line4=27
     SAVE 'T:CAT.'||j RAW
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error saving file'||NL||,
            '"T:CAT.'||j||'"'
      CALL RestoreExit 10
     end
    END
    IF ThumBord='Yes' THEN DO
     ThBrdXoff.j=TRUNC((TWID-TIWID)/2)-(BordThick-1)
     ThBrdYoff.j=ThumbYOff-(BordThick-1)
     ThBrdDim.j=TIWID+2+2*(BordThick-1)||' '||TIHEI+2+2*(BordThick-1)
    END
    if j<cat.i.0 then do
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
     CALL WriteLn(CON,LUP||LUP||LUP)
    end
    j=j+1
   END
  end
  IF i<=CatNum THEN DO
   CALL WriteLn(CON,LUP||COPIES(' ',Line4))
   CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
   CALL WriteLn(CON,LUP||'  Creating blank catalog...')
   Line3=27
   LFORMAT 'BACKDROP'
   IF rc=10 THEN DO
    ADPRO_TO_FRONT
    OKAY1 'Error: Loader not found'||NL||,
          '"Loaders2/BACKDROP"'
    CALL RestoreExit 10
   END
   LOAD "X" PWI PHE ColMode BackCol
   if rc~=0 then do
    ADPRO_TO_FRONT
    okay1 'Error creating blank catalog'
    CALL RestoreExit 10
   end
   LST=' '
   CatXOff=TRUNC((PWI-(TRUNC((PWI-1)/TWI)*TWI+1))/2)
   CatYOff=TRUNC((PHE-(TRUNC((PHE-1)/THI)*THI+1))/2)
   DO j=1 to THI-1
    LST=LST||TWI*j+1||' '
   END
   cx=1
   cy=1
   CALL WriteLn(CON,LUP||COPIES(' ',Line3))
   CALL WriteLn(CON,LUP||'  Adding '||cat.i.0||' tile'||catextstring||':')
   Line3=LENGTH('  Adding '||cat.i.0||' tile'||catextstring||':')
   do j=1 to cat.i.0
    if INDEX(LST,' '||j||' ')~=0 then do
     cy=cy+TRUNC((PHE-THI-1)/THI)+1
     cx=1
    end
    filename='T:CAT.'||j
    LFORMAT 'IFF'
    IF rc=10 THEN DO
     ADPRO_TO_FRONT
     OKAY1 'Error: Loader not found'||NL||,
           '"Loaders2/IFF"'
     CALL RestoreExit 10
    END
    CALL WriteLn(CON,'   Adding tile #'||j||'...')
    Line4=LENGTH('   Adding tile #'||j||'...')
    LOAD filename cx+CatXOff cy+CatYOff 100
    if rc=10 then do
     ADPRO_TO_FRONT
     okay1 'Error loading file'||NL||,
           '"'||filename||'"'
     CALL RestoreExit 10
    end
    CALL WriteLn(CON,LUP||COPIES(' ',Line4))
    CALL WriteLn(CON,LUP||'   Deleting temporary tile #'||j||'...')
    Line4=LENGTH('   Deleting temporary tile #'||j||'...')
    ADDRESS COMMAND 'C:Delete >NIL: '||filename
    cx=cx+TRUNC((PWI-TWI-1)/TWI)+1
    if j<cat.i.0 then do
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||LUP)
    end
   end
   IF TileBord='Yes' THEN DO
    IF TileBordMode='All' THEN DO
     TotBrds=TWI*THI
     IF TotBrds=1 THEN BordString=''
     ELSE BordString='s'
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
     CALL WriteLn(CON,LUP||'  Adding '||TotBrds||' tile border'||BordString||':'||NL)
     Line3=LENGTH('  Adding '||TotBrds||' tile border'||BordString||':')
     DO y=1 to THI
      DO x=1 to TWI
       CALL WriteLn(CON,LUP||COPIES(' ',Line4))
       CALL WriteLn(CON,LUP||'   Drawing border #'||x+(y-1)*TWI||'...')
       Line4=LENGTH('   Drawing border #'||x+(y-1)*TWI||'...')
       OPERATOR "RECTANGLE" TRUNC(((PWI-TWI-1)/TWI-TWID)/2)+(x-1)*(TRUNC((PWI-TWI-1)/TWI)+1)+CatXOff-(BordThick-1) TRUNC(((PHE-THI-1)/THI-THEI)/2)+(y-1)*(TRUNC((PHE-THI-1)/THI)+1)+CatYOff-(BordThick-1),
                            TWID+2+2*(BordThick-1) THEI+2+2*(BordThick-1) BordThick BordCol
       IF rc=10 then do
        ADPRO_TO_FRONT
        okay1 'Error drawing border'
        CALL RestoreExit 10
       END
      END
     END
    END
    IF TileBordMode='Images' THEN DO
     TotBrds=cat.i.0
     IF TotBrds=1 THEN BordString=''
     ELSE BordString='s'
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
     CALL WriteLn(CON,LUP||'  Adding '||TotBrds||' tile border'||BordString||':'||NL)
     Line3=LENGTH('  Adding '||TotBrds||' tile border'||BordString||':')
     DO y=1 to THI
      DO x=1 to TWI
       BordNum=x+(y-1)*TWI
       IF BordNum<=cat.i.0 THEN DO
        CALL WriteLn(CON,LUP||COPIES(' ',Line4))
        CALL WriteLn(CON,LUP||'   Drawing border #'||BordNum||'...')
        Line4=LENGTH('   Drawing border #'||BordNum||'...')
        OPERATOR "RECTANGLE" TRUNC(((PWI-TWI-1)/TWI-TWID)/2)+(x-1)*(TRUNC((PWI-TWI-1)/TWI)+1)+CatXOff-(BordThick-1) TRUNC(((PHE-THI-1)/THI-THEI)/2)+(y-1)*(TRUNC((PHE-THI-1)/THI)+1)+CatYOff-(BordThick-1),
                             TWID+2+2*(BordThick-1) THEI+2+2*(BordThick-1) BordThick BordCol
        IF rc=10 then do
         ADPRO_TO_FRONT
         okay1 'Error drawing border'
         CALL RestoreExit 10
        END
       END
      END
     END
    END
   END
   IF ThumBord='Yes' THEN DO
    TotBrds=cat.i.0
    IF TotBrds=1 THEN BordString=''
    ELSE BordString='s'
    CALL WriteLn(CON,LUP||COPIES(' ',Line4))
    CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
    CALL WriteLn(CON,LUP||'  Adding '||TotBrds||' thumbnail border'||BordString||':'||NL)
    Line3=LENGTH('  Adding '||TotBrds||' thumbnail border'||BordString||':')
    DO y=1 to THI
     DO x=1 to TWI
      BordNum=x+(y-1)*TWI
      IF BordNum<=cat.i.0 THEN DO
       CALL WriteLn(CON,LUP||COPIES(' ',Line4))
       CALL WriteLn(CON,LUP||'   Drawing border #'||BordNum||'...')
       Line4=LENGTH('   Drawing border #'||BordNum||'...')
       OPERATOR "RECTANGLE" TRUNC(((PWI-TWI-1)/TWI-TWID)/2)+(x-1)*(TRUNC((PWI-TWI-1)/TWI)+1)+CatXOff+ThBrdXoff.BordNum TRUNC(((PHE-THI-1)/THI-THEI)/2)+(y-1)*(TRUNC((PHE-THI-1)/THI)+1)+CatYOff+ThBrdYoff.BordNum,
                            ThBrdDim.BordNum BordThick BordCol
       IF rc=10 then do
        ADPRO_TO_FRONT
        okay1 'Error drawing border'
        CALL RestoreExit 10
       END
      END
     END
    END
   END
   if CatDataType='Image' then do
    IF ColMode='Gray' & (RType='EHB' | RType='HAM' | RType='HAM8' | (RType='CUST' & (TotCol='EHB' | TotCol='HAM' | TotCol='HAM8'))) THEN DO
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
     CALL WriteLn(CON,LUP||'  Converting to color...'||NL)
     Line3=24
     OPERATOR "GRAY_TO_COLOR"
     if rc=10 then do
      ADPRO_TO_FRONT
      OKAY1 'Error converting'||NL||,
            'gray to color'
      CALL RestoreExit 10
     end
    END
    IF Vrsn='NEW' THEN DO
     LOAD_DEFAULTS 'T:TempADProDefaults'
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error loading file'||NL||,
            '"T:TempADProDefaults"'
      CALL RestoreExit 10
     end
    END
    IF Vrsn='OLD' THEN DO
     RENDER_TYPE RType
     SCREEN_TYPE SType
    END
    CALL WriteLn(CON,LUP||COPIES(' ',Line4))
    CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
    CALL WriteLn(CON,LUP||'  Rendering catalog...'||NL)
    Line3=22
    EXECUTE
   end
   IF UPPER(CatForm)='IFF' & UPPER(WORD(Ops,1))='DCTV' THEN DO
    IF CatDataType='Image' THEN DO
     CALL WriteLn(CON,LUP||COPIES(' ',Line4))
     CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
     CALL WriteLn(CON,LUP||'  Converting to raw image data...'||NL)
     Line3=33
     OPERATOR "RENDERED_TO_RAW"
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error converting'||NL||,
            'rendered to raw'
      CALL RestoreExit 10
     end
    END
    ELSE CatDataType='Image'
    IF WORD(Ops,2)=3 THEN DO
     RENDER_TYPE 8
     DCTVPlane=3
    END
    ELSE DCTVPlane=4
    CALL WriteLn(CON,LUP||COPIES(' ',Line4))
    CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
    CALL WriteLn(CON,LUP||'  Converting to '||DCTVPlane||' bit-plane DCTV data...'||NL)
    Line3=LENGTH('  Converting to '||DCTVPlane||' bit-plane DCTV data...')
    OPERATOR "DCTV"
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error converting'||NL||,
            'raw to DCTV'
      CALL RestoreExit 10
     end
    Ops=''
   END
   SFORMAT CatForm
   IF rc=10 THEN DO
    ADPRO_TO_FRONT
    OKAY1 'Error: Saver not found'||NL||,
          '"Savers2/'||CatForm||'"'
    CALL RestoreExit 10
   END
   CALL WriteLn(CON,LUP||COPIES(' ',Line4))
   CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line3))
   IF CatNum=1 THEN CatalogName=CatFile||CatSuff||'"'
               ELSE CatalogName=CatFile||RIGHT(i,LENGTH(CatNum),'0')||CatSuff||'"'
   Act=2
   DO WHILE Act=2
    IF EXISTS(SUBSTR(CatalogName,2,LENGTH(CatalogName)-2)) THEN DO
     IF Vrsn='NEW' THEN DO
      ADPRO_TO_FRONT
      OKAYN '"Cataloger 1.96"',
           "'"CatalogName||" exists."||NL||,
             "Replace it?'",
            '"Replace|Specify New Name...|Cancel"'
     END
     IF Vrsn='OLD' THEN DO
      ADPRO_TO_FRONT
      OKAY2 'The file:'||NL||,
             CatalogName||NL||,
            ' exists.'||NL||NL||,
            'Overwrite it?'
     END
     Act=rc
     IF Vrsn='OLD' THEN ADPRO_TO_BACK
    END
    ELSE Act=1
    zz=LASTPOS('/',CatalogName)
    if zz=0 THEN zz=POS(':',CatalogName)
    if zz=0 THEN zz=1
    IF Act=2 THEN DO
     ADPRO_TO_FRONT
     GETFILE '"Select Save File"' '"'||CatDir||'"' '"'||SUBSTR(CatalogName,zz+1,LENGTH(CatalogName)-zz-1)||'"'
     IF rc=0 THEN DO
      CatalogName='"'||ADPro_Result||'"'
      zz=LASTPOS('/',CatalogName)
      IF zz=0 THEN zz=INDEX(CatalogName,':')
      IF zz=0 THEN zz=1
      CatDir=SUBSTR(CatalogName,2,zz-1)
      IF CatDir~='/' & RIGHT(CatDir,2)~='//' & RIGHT(CatDir,1)='/' THEN CatDir=LEFT(CatDir,LENGTH(CatDir)-1)
      Act=2
     END
     ELSE Act=0
    END
    IF Act=1 THEN DO
     CALL WriteLn(CON,LUP||'  Saving catalog in '||CatForm||' format as "'||SUBSTR(CatalogName,zz+1,LENGTH(CatalogName)-zz-1)||'"...')
     Line3=LENGTH('  Saving catalog in '||CatForm||' format as "'||SUBSTR(CatalogName,zz+1,LENGTH(CatalogName)-zz-1)||'"...')
     SAVE CatalogName CatDataType Ops
     if rc=10 then do
      ADPRO_TO_FRONT
      okay1 'Error saving file'||NL||,
             CatalogName
      CALL RestoreExit 10
     end
    END
   END
   i=i+1
   CALL WriteLn(CON,LUP||COPIES(' ',Line3))
   CALL WriteLn(CON,LUP||LUP||COPIES(' ',Line2))
   CALL WriteLn(CON,LUP||LUP)
  END
 end
 CALL WriteLn(CON,' Finished!')
 IF Vrsn='NEW' THEN ADPRO_TO_FRONT
 PAUSE 50
 IF Vrsn='OLD' THEN ADPRO_TO_FRONT
 CALL CLOSE(CON)
END
BREAK_C:
CALL RestoreExit 0
RestoreExit:
PARSE ARG ExitCode
IF Vrsn='NEW' THEN DO
 CLEAR_RENDERED
 CLEAR_RAW
 LOAD_DEFAULTS 'T:TempADProDefaults'
 RELEASE_ADPRO
 ADDRESS COMMAND 'C:Delete >NIL: T:TempADProDefaults'
END
IF Vrsn='OLD' THEN DO
 LFORMAT OldLoader
 SFORMAT OldSaver
 OFORMAT OldOperator
 SCREEN_TYPE SType
 IMAGE_TYPE
 IF WORD(ADPro_Result,1)='COLOR' | WORD(ADPro_Result,1)='NONE' | (WORD(ADPro_Result,1)='GRAY' & (RType~='EHB' & RType~='HAM' & RType~='HAM8' & RType~='CUST') | (RType='CUST' & TotCol~='EHB' & TotCol~='HAM' & TotCol~='HAM8')) THEN RENDER_TYPE Rtype
END
ADDRESS COMMAND 'C:Delete >NIL: T:CAT.#?'
EXIT ExitCode
SYNTAX:
IF SyntaxID='AddRexxSupport' THEN DO
 IF POS('ADPro',SHOW('Ports'))=0 THEN SAY "rexxsupport.library not available"
 ELSE DO
  ADDRESS "ADPro"
  ADPRO_TO_FRONT
  OKAY1 'Error: rexxsupport.library'||NL||,
        'not available'
 END
 EXIT 10
END
