A drop-in replacement for the AmigaDOS Copy command. Same arguments, same behaviour, fewer DOS packets per file — and it finishes sooner.
Un reemplazo directo del comando Copy de AmigaDOS. Los mismos parámetros, el mismo comportamiento, menos paquetes DOS por archivo — y termina antes.
AmigaOS 2.04+ · plain 68000 and up · runs on chip-RAM-only machines
Built for a bare A500 with a 2.04 ROM as much as for an 060.
AmigaOS 2.04+ · 68000 pelado en adelante · anda en máquinas de sólo chip RAM
Pensado tanto para un A500 con ROM 2.04 como para un 060.
EARLY BETA — USE AT YOUR OWN RISK. NO WARRANTY.
This is new code. It has been reviewed hard and tested, but it has not been through years of daily use the way C:Copy has, and its time on real hardware is thin. It is a tool that writes files: a bug in it can destroy data.
The author is not responsible for lost files, corrupted volumes or broken installations. Have a backup before you point this at anything. If you are not willing to accept that, do not use it — a perfectly reasonable decision.
Safest way to try it: do not install it over C:Copy at all. Drop the binary in C: and call it by its own name. Nothing is replaced, nothing is renamed, there is nothing to undo.
BETA TEMPRANA — LO USÁS BAJO TU RESPONSABILIDAD. SIN GARANTÍA.
Esto es código nuevo. Está revisado a fondo y probado, pero no tiene los años de uso diario que tiene C:Copy, y su tiempo sobre fierro real es poco. Es una herramienta que escribe archivos: un bug puede destruir datos.
El autor no se hace responsable por archivos perdidos, volúmenes corruptos ni instalaciones rotas. Tené un backup antes de apuntarlo a nada. Si no estás dispuesto a aceptar eso, no lo uses — es una decisión perfectamente razonable.
La forma más segura de probarlo: no lo instales sobre C:Copy. Poné el binario en C: y llamalo por su nombre. No se reemplaza nada, no se renombra nada, no hay nada que deshacer.
Latest: v1.3. Unpack and run — no installation required. 1.3 fixes a critical bug: 1.2 would not start at all. If you have 1.2, replace it. Also new: built-in help (MegaCopy HELP). Includes MegaCopy, the installer, the benchmark tools and the full README.
Ultima: v1.3. Descomprimir y usar — no hace falta instalar nada. La 1.3 arregla un bug critico: la 1.2 no arrancaba. Si tenes la 1.2, reemplazala. Ademas: ayuda incorporada (MegaCopy HELP). Incluye MegaCopy, el instalador, las herramientas de medición y el README completo.
MegaCopy copies files and directory trees, preserving protection bits, comments and datestamps. It takes exactly the same arguments as the AmigaDOS Copy command, so anything you already know how to type works unchanged.
The difference is that it finishes sooner — and the reason is boring and countable.
MegaCopy copia archivos y árboles de directorios, preservando bits de protección, comentarios y fechas. Toma exactamente los mismos parámetros que el comando Copy de AmigaDOS, así que todo lo que ya sabés escribir funciona igual.
La diferencia es que termina antes — y el motivo es aburrido y contable.
Fewer DOS packets per file
Every operation on an AmigaDOS file is a message to a filesystem handler process: a round trip with a task switch at each end. On a tree of small files — a WHDLoad collection is the perfect example — that traffic, not the data, is what takes the time.
Per file, with CLONE, MegaCopy gets down to four packets: open the destination, write, close, stamp the date. It gets there by skipping the metadata calls it can prove would change nothing.
MegaCopy skips both when it can prove they cannot change anything: a file created with MODE_NEWFILE is born with protection 0 and no comment, so if the source has the same, those two packets write what is already there. Both skips only apply when the destination is genuinely new.
Six packets down to four. If packets were the only cost that predicts 33% faster; measured is 19–23%, and the difference is the data itself, which neither program can avoid. That the prediction and the measurement agree is the point — it is not a number that came out of a benchmark and got rationalised afterwards.
Directory scanning
Scanning uses ExAll with ED_COMMENT, which returns dozens of entries per packet complete with type, size, protection, date and comment. In a 500-file directory that is roughly 10 packets instead of about 1000.
Menos paquetes DOS por archivo
Cada operación sobre un archivo en AmigaDOS es un mensaje a un proceso handler del filesystem: una ida y vuelta con un cambio de tarea en cada punta. En un árbol de archivos chicos — una colección WHDLoad es el ejemplo perfecto — lo que lleva el tiempo es ese tráfico, no los datos.
Por archivo, con CLONE, MegaCopy baja a cuatro paquetes: abrir el destino, escribir, cerrar y estampar la fecha. Llega ahí salteando las llamadas de metadata que puede demostrar que no cambian nada.
MegaCopy saltea los dos cuando puede demostrar que no cambian nada: un archivo creado con MODE_NEWFILE nace con protección 0 y sin comentario, así que si el origen tiene lo mismo, esos dos paquetes escriben lo que ya estaba. El salteo sólo aplica cuando el destino es realmente nuevo.
De seis paquetes a cuatro. Si los paquetes fueran el único costo eso predice 33% más rápido; lo medido es 19–23%, y la diferencia son los datos, que ninguno de los dos puede evitar. Que la predicción y la medición coincidan es el punto — no es un número que salió de un banco de pruebas y se racionalizó después.
Escaneo de directorios
Se escanea con ExAll y ED_COMMENT, que devuelve decenas de entradas por paquete ya con tipo, tamaño, protección, fecha y comentario. En un cajón de 500 archivos son unos 10 paquetes en vez de unos 1000.
| Tree / Árbol | Time / Tiempo | Throughput |
|---|---|---|
| 334.649 files · 17.577 dirs · 8,5 GB | 1948 s | 4162 KB/s |
| 5758 files · 414 dirs · 229 MB | 33 s | 6852 KB/s |
| 807 files · 77 dirs · 51 MB | 4,88 s | 10700 KB/s |
| re-sync 229 MB sin cambios (NOREP) | 9 s | — |
Under emulation, with the destination on a separate volume; the second row timed at 1/50 s resolution (spread 4.86–4.90). Emulator numbers are good for comparing one build against another, not as absolutes: the host's own disk cache is in charge and no program inside the Amiga can flush it.
Bajo emulación, con el destino en otro volumen; la segunda fila cronometrada con resolución de 1/50 s (dispersión 4,86–4,90). Los números de emulador sirven para comparar una compilación contra otra, no como absolutos: el que manda es el caché de disco del anfitrión y ningún programa de adentro del Amiga lo puede vaciar.
Everything above is measured. This is theory, written down so nobody mistakes it for a result.
de_Mask and de_MaxTransfer; otherwise it quietly bounce-copies and you pay for every byte twice. Not read yet, and untestable under a directory-mount emulator.Todo lo de arriba está medido. Esto es teoría, escrita así para que nadie la confunda con un resultado.
de_Mask y el de_MaxTransfer del dispositivo; si no, hace una copia intermedia en silencio y pagás cada byte dos veces. Todavía no se leen, y no se puede probar en un emulador con mount de directorio.Used by hand, it speeds up whatever you type. Installed as C:Copy, it speeds up everything on the machine that shells out to Copy without knowing:
C:Copy rather than with its own internal routine — a lot of DOpus 4 button and menu setups are exactly that. File management is precisely the load this is built for: many small files, directory traffic dominating.Install / InstallerLG family, which copy hundreds of small files one at a time — exactly the load this is built for.S:User-Startup that moves files around.If a program does its own copying internally instead of calling C:Copy — and many do — installing changes nothing for it. Nothing breaks; you simply do not get the speed-up there.
Usado a mano acelera lo que vos escribas. Instalado como C:Copy, acelera todo lo que en la máquina llama a Copy sin enterarse:
C:Copy en vez de con su rutina interna — muchísimas configuraciones de botones y menús de DOpus 4 son exactamente eso. El manejo de archivos es justo la carga para la que está hecho: muchos archivos chicos, con el tráfico de directorios dominando.Install / InstallerLG, que copian cientos de archivos chicos de a uno — justo la carga para la que está hecho.S:User-Startup que mueva archivos.Si un programa copia internamente en vez de llamar a C:Copy — y muchos lo hacen — instalarlo no le cambia nada. No se rompe nada; simplemente ahí no hay mejora.
InstallMegaCopy has an icon: double-click it, or run it from a shell. It shows what is installed, whether a backup exists, and offers 1 install, 2 restore, 3 quit.
It is fully reversible. Installing saves your real Copy to C:Copy_original first; option 2 puts it back byte for byte, with its protection bits, date and comment intact. An existing backup is never overwritten, so installing twice cannot bury the genuine Copy under a copy of MegaCopy.
Nothing is written over C:Copy until the replacement has been written to a temp file, closed with the close checked, and verified by size. The swap is rename–rename–delete, never delete–then–rename: there is no instant when C:Copy does not exist, and if anything fails the original goes straight back.
Write this down before installing. If you ever boot the same disk under Kickstart 1.3, neither MegaCopy nor the installer will run — both need 2.04 — and C:Copy will be dead. One command gets you out:
Rename C:Copy_original C:Copy
The installer prints that on screen before asking you anything. There is exactly one file moved and one file added; you can undo both by hand.
InstallMegaCopy tiene icono: doble clic, o desde el shell. Muestra qué está instalado, si hay backup, y ofrece 1 instalar, 2 restaurar, 3 salir.
Es totalmente reversible. Instalar guarda primero tu Copy real en C:Copy_original; la opción 2 lo devuelve byte a byte, con sus bits de protección, su fecha y su comentario intactos. Un backup existente nunca se pisa, así que instalar dos veces no puede enterrar el Copy de verdad debajo de una copia de MegaCopy.
No se escribe nada sobre C:Copy hasta que el reemplazo se escribió en un temporal, se cerró con el cierre chequeado, y se verificó por tamaño. El intercambio es renombrar–renombrar–borrar, nunca borrar–y–después–renombrar: no hay ningún instante en que C:Copy no exista, y si algo falla el original vuelve a su lugar.
Anotate esto antes de instalar. Si alguna vez booteás ese mismo disco bajo Kickstart 1.3, ni MegaCopy ni el instalador van a arrancar — los dos necesitan 2.04 — y C:Copy queda muerto. Un comando te saca:
Rename C:Copy_original C:Copy
El instalador lo imprime en pantalla antes de preguntarte nada. Hay exactamente un archivo movido y uno agregado; los dos se deshacen a mano.
The speed claims should be something you can verify, not something you have to believe. The archive includes the tools used to produce them.
MegaBench
A program, not a script — deliberately. A shell script can only time with Date, which has one-second resolution; on a six-second run that is ±17% error, so the measurement would be pure noise. MegaBench uses DateStamp, so 1/50 s.
ACTION_FLUSH to both volumes between runs, so the second program does not find the first one's metadata still in the filesystem buffers and win for the wrong reason.C:Copy_original if it exists — otherwise, once installed, a benchmark calling plain Copy compares MegaCopy against itself and reports a dead heat forever.What it cannot do, stated plainly: under an emulator the host's own disk cache is in charge and no program inside the Amiga can flush it. Emulator numbers are good for comparing A against B, not as absolutes.
Also included
Las afirmaciones de velocidad tienen que ser algo que puedas verificar, no algo que tengas que creer. El archivo incluye las herramientas con las que se produjeron.
MegaBench
Es un programa y no un script, a propósito. Un script de shell sólo puede medir con Date, que tiene resolución de un segundo; en una corrida de seis segundos eso es ±17% de error, o sea que la medición sería ruido puro. MegaBench usa DateStamp: 1/50 de segundo.
ACTION_FLUSH a los dos volúmenes entre corridas, así el segundo programa no encuentra la metadata del primero todavía en los buffers del filesystem y gana por el motivo equivocado.C:Copy_original si existe — si no, una vez instalado, un banco que llame a Copy a secas compara MegaCopy contra sí mismo y da empate para siempre.Lo que no puede hacer, dicho claro: bajo un emulador el que manda es el caché de disco del anfitrión y ningún programa de adentro del Amiga lo puede vaciar. Los números de emulador sirven para comparar A contra B, no como absolutos.
También incluidos
MegaCopy understands the standard AmigaDOS copy keywords, so anything you already know how to type works unchanged. Wildcards work in FROM in any path component, not just the last one, and with no FROM at all it copies the current directory.
Plus NOREP, NEWER, INTER, FORCE, ARC, COPYLINKS, STATS, PROGRESS, TURBO and CACHE. Type MegaCopy HELP for the full list with examples; full details in the README.
Built for a plain 68000 with the small-puddle OS heap, so it runs on machines with chip RAM only. Requires Kickstart 2.04 (V37).
MegaCopy entiende los keywords estándar de copia de AmigaDOS, así que todo lo que ya sabés escribir funciona igual. Los comodines andan en FROM en cualquier componente del path, no sólo en el último, y sin FROM copia el directorio actual.
Más NOREP, NEWER, INTER, FORCE, ARC, COPYLINKS, STATS, PROGRESS, TURBO y CACHE. Escribí MegaCopy HELP para la lista completa con ejemplos; el detalle está en el README.
Compilado para 68000 pelado con el heap del sistema de puddle chico, así que anda en máquinas de sólo chip RAM. Requiere Kickstart 2.04 (V37).
Built with MacumbaEditor. MegaCopy is written in the same environment as PocketLauncher and the rest of the PAL-N Studios tools. This page is an example of what a Macumba project release page looks like — the generator does not produce it automatically yet.
Hecho con MacumbaEditor. MegaCopy está escrito en el mismo entorno que PocketLauncher y el resto de las herramientas de PAL-N Studios. Esta página es un ejemplo de cómo se ve la página de release de un proyecto Macumba — el generador todavía no la produce sola.
Pancho Manera · PAL-N Studios · MacumbaEditor