home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Emulation / ZXAMSpectrum / ZXAM_Rexx / Español / BatchConvert.zxam next >
Text File  |  1995-07-31  |  4KB  |  131 lines

  1. /* este script hace conversión en bloque a un formato dado, o sea, coje una */
  2. /* serie de ficheros que nosotros seleccionamos desde un requester de */
  3. /* ficheros y los convierte al formato que le hemos pedido */
  4.  
  5.     /* comprobamos si el emulador está presente */
  6.     address command
  7.     
  8.     if ~show(ports,ZXAM_REXX) then do
  9.         requestchoice '>nil: title "ZXAM Script error..." body "No encuentro el puerto del emulador!!" gadgets "AARGH!"'
  10.         exit
  11.         end
  12.  
  13.     /* Almacenar el estado inicial del emulador */
  14.     running=zxamactrun()    /* 1=en marcha */
  15.     zxamstop()              /* lo paramos */
  16.     
  17.     /* antiguos parametros de la ventana */
  18.     oldname=zxamactname()
  19.     oldformat=zxamactformat()
  20.     oldsaveformat=zxamactsaveformat()
  21.     
  22.     /* pedimos los ficheros a convertir */
  23.     'requestfile >t:zxamconvert.tmp "'zxamactloadpath()'" title "Elige ficheros a convertir..." pattern "'zxamactpattern()'" multiselect'
  24.     names=zxampploadfile('t:zxamconvert.tmp')
  25.     names=left(names,length(names)-1) /* eliminamos el LF */
  26.     
  27.     /* pedimos el directorio destino */
  28.     'requestfile >t:zxamconvert.tmp "'zxamactsavepath()'" drawersonly savemode'
  29.     destdrawer=zxampploadfile('t:zxamconvert.tmp')
  30.     destdrawer=strip(left(destdrawer,length(destdrawer)-1),'B','"') /* eliminamos el LF y las comillas */
  31.     
  32.     /* pedimos el formato destino */
  33.     requestchoice '>t:zxamconvert.tmp "ZXAM convert..."' '"¿Que formato quieres?"' GADGETS "PC|PC_PP|MIRAGE|MIRAGE_PP|CANCEL"
  34.     destformat=zxampploadfile('t:zxamconvert.tmp')
  35.     destformat=left(destformat,length(destformat)-1) /* eliminamos el LF */
  36.     
  37.     if names='' then exit
  38.     
  39.     if destformat=0 then exit /* pulsado CANCEL */
  40.     
  41.     if destformat=1 then do
  42.         destextension='.SP'
  43.         destformname='pc'
  44.         crunched=0
  45.         end
  46.  
  47.     if destformat=2 then do
  48.         destextension='.SP'
  49.         destformname='pc'
  50.         crunched=1
  51.         end
  52.         
  53.     if destformat=3 then do
  54.         destextension='.mirage'
  55.         destformname='mirage'
  56.         crunched=0
  57.         end
  58.         
  59.     if destformat=4 then do
  60.         destextension='.mirage'
  61.         destformname='mirage'
  62.         crunched=1
  63.         end
  64.     
  65.     ZXAMSaveFormat(destformname)    /* formato destino */
  66.     
  67.     ZXAMEnableAbort()        /* activa gadget Abort ARexx */
  68.     
  69.     /* damos por supuesto que requestfile SIEMPRE entrega los names */
  70.     /* en una cadena, entre comillas y con UN espacio entre ellos */
  71.     
  72.     /* en este bucle nos encargamos de sacar los names de los */
  73.     /* ficheros y convertirlos */
  74.     /* debemos quitarles la extensión y ponerles la corrrespondiente */
  75.     /* al formato destino */
  76.     
  77.     do forever
  78.     name=strip(left(names,pos('"',names,2)),'B','"') /* sacamos el primer nombre */
  79.     nameonly=zxamfilepart(name)
  80.     
  81.     if ZXAMReadAbort() then signal cleanup
  82.     
  83.     /* procesamos el fichero */
  84.     
  85.     zxamnameformat('Cargando "'nameonly'"','Espera...')
  86.     
  87.     block=zxampploadfile(name)
  88.     origformat=zxamparseloaded(block)
  89.     
  90.     namenoext=nameonly
  91.     if lastpos('.',namenoext)~=0 then namenoext=left(namenoext,lastpos('.',namenoext)-1)
  92.     
  93.     if origformat~='' then do
  94.             block=zxamparsetosave()
  95.             if crunched then
  96.                 do
  97.                 zxamnameformat('Comprimiendo "'nameonly'"','Espera...')
  98.                 zxamppsavefile(zxamjoinpathname(destdrawer,namenoext)destextension,block)
  99.                 end
  100.             else 
  101.                 do
  102.                 zxamnameformat('Salvando "'nameonly'"','Espera...')
  103.                 /* abrimos el fichero */
  104.                 if ~open('fichero',zxamjoinpathname(destdrawer,namenoext)destextension,'W') then signal cleanup
  105.     
  106.                 /* escribimos el snapshot al fichero */
  107.                 dummy=writech('fichero',block)
  108.     
  109.                 dummy=close('fichero')
  110.                 end
  111.         end
  112.     
  113.     if pos('"',names,2)=length(names) then signal cleanup /* fin de lista de nombres */
  114.     names=right(names,length(names)-(length(name)+3))
  115.     
  116.     end
  117.     
  118.     
  119. cleanup:
  120.     if oldname='' then
  121.         zxamclearnameformat()
  122.     else
  123.         zxamnameformat(oldname,oldformat)
  124.  
  125.     zxamsaveformat(oldsaveformat)
  126.  
  127.     /* dejar el emulador como estaba */
  128.     if running=1 then zxamrun()
  129.  
  130.     exit
  131.