|
|
|
|
|
Le site de Steph : Le CPC |
|
|
|
|
|
Fichier .BAT pour compiler avec SDCC
Comme vue dans la première partie "SDCC débuter" pour compiler c'est de la ligne de commande et il faut bien l'avouer c'est bien chiant de toujours ressaisir les lignes de commande.
Pour résoudre cela on peut les mettre dans un fichier .bat ce qui vas déjà nous facilité la vie :
sdcc -mz80 --code-loc 0x1A8 --data-loc 0 --no-std-crt0 crt0_0x170.rel Hello.c
hex2bin Hello.ihx
CPCDiskXP -File Hello.bin -AddAmsdosHeader 170 -AddToNewDsk Hello.dsk
On sauve tout cela dans un fichier comp.bat par exemple. Son utilisation est simple, mais il n'est pas très pratique quand ont a des erreurs...
C'est cool, mais vous allez vite vous apercevoir que c'est quand même pas pratique, il faut changer à chaque fois le nom du fichier Hello quand vous faite un autre code.
On va donc améliorer ce fichier .bat, je cous propose celui que je me suis fait, il fait la compil en lui passant le nom du fichier à compiler (par exemple comp.bat Hello) ce qui est plus pratique quand même.
De plus j'efface les fichier généré par SDCC, hex2bin et CPCDiskXP, comme cela s'il y a une erreur quelque par le script s’arrête et donnant l'info.
Il n'est pas encore complet, il faut de temps à autre le modifier, car comme vous pouvez le voire on ne met pas des .rel autre que crt0_0x170.rel, donc si vous en avez besoin d'autre il faut les mettre à la main avant !
cls
@echo off
IF "%1"=="" GOTO AIDE
if not exist %1.c goto NOC
echo ---------------------------------------------------------
echo -- Effacement des fichiers
del %1.asm
del %1.ihx
del %1.lk
del %1.lst
del %1.map
del %1.noi
del %1.rel
del %1.sym
del %1.bin
del %1.dsk
echo ---------------------------------------------------------
echo adresse de base : 0x170
echo il faut le crt0_0x170 !
echo ---------------------------------------------------------
echo --Compilation de %1.c
sdcc -mz80 --code-loc 0x1A8 --data-loc 0 --no-std-crt0 crt0_0x170.rel %1.c
rem -mz80 -> Generate code for the Zilog Z80 family of processo. (Processor Selection Options)
rem --code-loc 0x6038 -> The start location of the code segment. (Linker Options)
rem --data-loc 0 -> The start location of the internal ram data segment.(Linker Options)
rem --no-std-crt0 -> When linking, skip the standard crt0.rel object file.(Z80 Options)
rem --opt-code-speed -> The compiler will optimize code generation towards fast code
rem --opt-code-size -> The compiler will optimize code generation towards compact code
if not exist %1.ihx goto NOIHX
echo ---------------------------------------------------------
echo --Creation de %1.bin
hex2bin %1.ihx
if not exist %1.bin goto NOBIN
echo ---------------------------------------------------------
echo --Creation de %1.dsk
CPCDiskXP -File %1.bin -AddAmsdosHeader 170 -AddToNewDsk %1.dsk
goto FIN
exit
:AIDE
echo ---------------------------------------------------------
echo Utilisation : comp.bat "non fichier" sans extension !
goto Fin
:NOC
echo ---------------------------------------------------------
echo Le fichier %1.c n'existe pas !
goto Fin
:NOIHX
echo ---------------------------------------------------------
echo Erreur de compilation du C !
goto Fin
:NOBIN
echo ---------------------------------------------------------
echo Erreur de compilation ASM !
goto Fin
:OK
echo ---------------------------------------------------------
echo Compilation de %1.c : OK
echo Creation de %1.bin : OK
echo Creation de %1.dsk : OK
:FIN
echo ---------------------------------------------------------
echo fin...
Voila, avec ce fichier la compilation est un peut plus "simple", il se trouve dans se ZIP.
|
|
|
|
|