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

  1. /* este script descompone un fichero .TAP en sus correspondientes .header */
  2. /* y .bytes colocandolos en el directorio que le digamos */
  3.  
  4.     /* comprobamos si el emulador está presente */
  5.     address command
  6.     
  7.     if ~show(ports,ZXAM_REXX) then do
  8.         requestchoice '>nil: title "ZXAM Script error..." body "No encuentro el puerto del emulador!!" gadgets "AARGH!"'
  9.         exit
  10.         end
  11.     
  12.     /* antiguos parametros de la ventana */
  13.     oldname=zxamactname()
  14.     oldformat=zxamactformat()
  15.     oldsaveformat=zxamactsaveformat()
  16.     
  17.     /* pedimos los ficheros a convertir */
  18.     'requestfile >t:zxamexplodetap.tmp "'zxamactloadpath()'" title "Elige fichero .TAP a descomponer..." pattern "#?.TAP"'
  19.     name=zxampploadfile('t:zxamexplodetap.tmp')
  20.     name=left(name,length(name)-1) /* eliminamos el LF */
  21.     /* ahora name contiene nombre+path */
  22.     
  23.     /* pedimos el directorio destino */
  24.     'requestfile >t:zxamexplodetap.tmp "'zxamactsavepath()'" drawersonly savemode'
  25.     destdrawer=zxampploadfile('t:zxamexplodetap.tmp')
  26.     destdrawer=strip(left(destdrawer,length(destdrawer)-1),'B','"') /* eliminamos el LF y las comillas */
  27.     
  28.     if name='' then exit
  29.         
  30.     ZXAMEnableAbort()        /* activa gadget Abort ARexx */
  31.     
  32.     name=strip(left(name,pos('"',name,2)),'B','"') /* eliminamos comillas */
  33.     
  34.     /* ahora le quitamos la extensión al nombre */
  35.     namenoext=zxamfilepart(name)
  36.     if lastpos('.',namenoext)~=0 then namenoext=left(namenoext,lastpos('.',namenoext)-1)
  37.     
  38.     /* abrimos el fichero */
  39.     if ~open('fichero',name,'R') then signal cleanup
  40.     
  41.     
  42.     counter=0
  43.     
  44.     zxamnameformat('Procesando "'zxamfilepart(name)'"','Espera...')
  45.     
  46.     /* descomponemos el fichero */
  47.     do forever
  48.     
  49.     if ZXAMReadAbort() then signal cleanup2
  50.     
  51.     /* procesamos el fichero */
  52.     
  53.     dummy=readch('fichero',2)    /* leemos dos bytes */
  54.     if dummy='' then signal cleanup2
  55.     
  56.     longblock=c2d(reverse(dummy)) /* fomato invertido Z80 */
  57.     
  58.     block=readch('fichero',longblock)  /* leemos el bloque de datos */
  59.     
  60.     defext='.bytes'
  61.     
  62.     if ((longblock=19)&(left(block,1)='00'x)) then defext='.header'
  63.     
  64.     /* pues tenemos que hacer el save */
  65.     
  66.     newname=namenoext''counter''defext
  67.     
  68.     if ~open('fichero2',zxamjoinpathname(destdrawer,newname),'W') then signal cleanup2
  69.     
  70.     dummy=writech('fichero2',block)
  71.     
  72.     dummy=close('fichero2')
  73.  
  74.     if ~((longblock=19)&(left(block,1)='00'x)) then counter=counter+1
  75.  
  76.     end
  77.     
  78.     
  79. cleanup2:    
  80.     dummy=close('fichero')
  81.     
  82. cleanup:
  83.     if oldname='' then
  84.         zxamclearnameformat()
  85.     else
  86.         zxamnameformat(oldname,oldformat)
  87.  
  88.     zxamsaveformat(oldsaveformat)
  89.     
  90.     exit
  91.