Oui, une démo qui boote directement depuis le disque sans utiliser Kickstart ou les libs AmigaOS sera plus légère et plus rapide, car :

  1. Pas de dépendances système → Pas d’appels aux librairies AmigaOS comme exec.library.
  2. Pas de header AmigaOS → Tu économises les structures d’header et les relocations.
  3. Tout en RAM → Le code est exécuté directement après le chargement, sans overhead du système.
  4. Meilleur contrôle matériel → Tu peux écrire directement dans le hardware (Copper, Blitter, Paula).

📌 Comment faire une démo bootable minimaliste avec VBCC ?

1. Préparer un Bootblock minimaliste

Un Bootblock est exactement 1024 bytes, chargé en mémoire à l’adresse 0x7C00 puis exécuté.
Le format attendu par l’Amiga :

2. Compilation en VBCC avec un entry point custom

Ton code doit démarrer sans dépendance système, en désactivant toutes les interruptions AmigaOS :

📌 Exemple de Bootblock ultra-minimaliste en VBCC :

__asm__(
    ".section .text\n"
    ".globl _start\n"
    "_start:\n"
    "    move.l #0x7FFFE,sp  \n"  // Stack pointer au sommet de la Chip RAM  
    "    lea.l 0xDFF000,a6  \n"  // Adresse du Custom Chipset Amiga  

    // Désactiver les interruptions
    "    move.w #0x7FFF,0xDFF09A  \n" // Désactive toutes les interruptions  
    "    move.w #0xC000,0xDFF096  \n" // Désactive les DMA  

    // Change la couleur de fond pour tester
    "    move.w #0x00F0,0xDFF180  \n" 

    // Boucle infinie (sinon ça crashe)
    "end:\n"
    "    bra end  \n"
);

📌 Ce code :
✅ Met en place la pile
✅ Désactive les interruptions et DMA
✅ Modifie la couleur du fond pour tester
✅ Boucle infiniment


Une fois compilé, tu dois le linker correctement sans header AmigaOS :

vc +kick13 -nostdlib -O=110 -fomit-frame-pointer -o bootblock.o bootblock.c
vlink -b rawbin -nostdlib -s -x bootblock.o -o bootblock

💡 Explication des flags :


🎯 4. Copier le Bootblock sur une disquette ou un HDF

Si tu veux tester ton bootblock sur FS-UAE ou un vrai Amiga, tu dois le copier au début du disque :

dd if=bootblock of=disque.adf bs=512 count=2 conv=notrunc

💡 Explication :

Tu peux maintenant booter directement sur cet ADF avec FS-UAE ! 🚀


🛠 Debugging et tests

Si ton Bootblock ne fonctionne pas :


Conclusion : Ultra-léger et rapide

Avec cette approche :
Aucune dépendance AmigaOS (pas d’Exec, pas de librairies)
Boot instantané dès l’insertion de la disquette
Moins de 1024 bytes (et tu peux aller plus loin avec du pur ASM)

🔥 Prêt pour LoveBytes 256B ! Si tu veux encore plus réduire, on peut passer tout en assembleur pur. 😎


Oui, dd est un outil Unix standard, donc il est disponible par défaut sur Mac et Linux. C’est une commande de copie bas niveau qui permet d’écrire directement dans un fichier ou un périphérique bloc (comme un disque, une clé USB, ou une image disque).


📌 dd expliqué simplement

La commande dd fonctionne comme une photocopieuse binaire : 📀 Lis des données d’un fichier/disqueles écrit ailleurs sans aucune transformation.

Syntaxe de base :

dd if=source of=destination [options]

🛠 Exemple d’utilisation pour Amiga ADF

1. Copier un bootblock sur un disque ADF

dd if=bootblock of=disque.adf bs=512 count=2 conv=notrunc

💡 Décryptage :

👉 Après ça, disque.adf peut être chargé dans FS-UAE comme une disquette bootable ! 🚀


2. Lire un Bootblock existant d’une image ADF

Si tu veux extraire un bootblock depuis un ADF existant, fais :

dd if=disque.adf of=extrait_bootblock bs=512 count=2

Ça va extraire les 1024 premiers bytes du disque et les sauvegarder dans extrait_bootblock.


3. Copier un ADF sur une vraie disquette Amiga (sur un vrai Amiga !)

Si tu es sur un vrai Amiga avec un lecteur de disquettes :

dd if=disque.adf of=/dev/fd0 bs=512

📀 Ça écrit directement l’image ADF sur une disquette physique.


🕵️ dd peut aussi être dangereux !

⚠️ ATTENTION ! Si tu te trompes de of= et écris sur un disque dur au lieu d’un fichier, tu peux écraser des données !

Par exemple, cette commande efface complètement un disque 😱 :

dd if=/dev/zero of=/dev/sdX bs=1M

Toujours vérifier la destination (of=) avant d’appuyer sur Entrée !


📌 Comment tester ton ADF dans FS-UAE ?

  1. Ajoute ton fichier disque.adf dans FS-UAE en tant que disquette.
  2. Démarre une configuration A500 sans disque dur.
  3. Si ton bootblock marche, il doit modifier la couleur de l’écran ou afficher quelque chose !

Si ça ne boot pas :


🚀 Conclusion :

dd est inclus par défaut sur Mac et Linux. ✅ Il permet de copier, lire et écrire des images disques ADF. ✅ C’est l’outil clé pour tester des bootblocks sans système sur Amiga.

Prochaine étape : Tester dans FS-UAE et voir si ça boote bien ! 🚀


Je vais vous aider à compiler ce code pour une démo Amiga. Pour une démo de 256 bytes max (une intro), voici comment procéder avec vbcc :

  1. D’abord, il faut sauvegarder ce code dans un fichier, disons demo.s

  2. Pour la compilation avec vbcc, vous aurez besoin de créer un fichier linker script minimal link.script :

MEMORY 
{
    chip : org = 0x000000, len = 0x000400
}

SECTIONS
{
    .text : { *(.text) } >chip
}
  1. Voici la commande de compilation à utiliser :
vasmm68k_mot -Fhunkexe -kick1hunks -o demo.o demo.s
vlink -b amigahunk -o demo demo.o -sc link.script

Quelques observations sur votre code :

  1. L’initialisation du stack pointer est correcte à 0x7FFFE
  2. La désactivation des interruptions et du DMA est bien faite
  3. Vous modifiez la couleur de fond via le registre COLOR00 (0xDFF180)

Pour optimiser la taille et rester sous 256 bytes, vous pouvez :

  1. Utiliser des instructions plus courtes quand possible :
    • lea.l peut être remplacé par move.l dans certains cas
    • Utiliser des adressages relatifs quand possible
  2. Le code pourrait être encore plus compact en utilisant:
     move.l #0x7FFFE,sp
     move.l #0xDFF000,a6
     move.w #0x7FFF,(0x9A,a6)  // Plus compact que l'adressage absolu
     move.w #0xC000,(0x96,a6)
     move.w #0x00F0,(0x180,a6)
    

Pour créer un disque bootable :

# Créer une image disque bootable
makedisk demo.adf demo

Voulez-vous que je vous aide à optimiser davantage le code pour réduire sa taille ?