MacumbaEditor / MegaCopy

MegaCopy

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.

MegaCopy icon

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.

Download MegaCopy.lha AmigaOS 2.04+ · 68000 and up · chip-RAM-only OK

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.

What it does

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.

Why it is faster

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.

Measured

Lo medido

Tree / ÁrbolTime / TiempoThroughput
334.649 files · 17.577 dirs · 8,5 GB1948 s4162 KB/s
5758 files · 414 dirs · 229 MB33 s6852 KB/s
807 files · 77 dirs · 51 MB4,88 s10700 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.

What could be faster, but is not proven

Lo que podría ser más rápido, pero no está demostrado

Everything above is measured. This is theory, written down so nobody mistakes it for a result.

Todo lo de arriba está medido. Esto es teoría, escrita así para que nadie la confunda con un resultado.

Who benefits

A quién le sirve

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:

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:

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.

The installer — and undoing it

El instalador — y cómo revertirlo

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.

Check the numbers yourself

Comprobá los números vos mismo

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.

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.

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

Compatibility

Compatibilidad

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