Advertisement
DimkaM

сборка IAR'ом

Jul 28th, 2018
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @ECHO OFF
  2. CLS
  3. setlocal enabledelayedexpansion
  4.  
  5. set C_FILES=main testnonbanking
  6. set ASM_FILES=cstartup
  7. SET ADD_LINK_FILES=..\mylibb\mylibb
  8. set ADD_TO_SCL_FILES=!ADD_TO_SCL_FILES! bin\boot.$B
  9.  
  10. set Z80_IDE_PATH=..\z80\
  11.  
  12. set ICCZ80=%Z80_IDE_PATH%bin\iccz80
  13. set AZ80=%Z80_IDE_PATH%bin\az80
  14. set C_OPTIONS=-v0 -uua -q -e -K -gA -s9 -t4 -T -Llist\ -Olist\ -Alist\ -I"%Z80_IDE_PATH%inc/"
  15. set LINK_OPTIONS=-cZ80 -Ilist -f Lnk.xcl -FMOTOROLA -C ..\z80\lib\clz80b -o list\aout.a01 -l list/cout.html -xehinms -R -w47
  16.  
  17. echo ---------------Compiling C_FILES---------------
  18. FOR %%a IN (!C_FILES!) do (
  19.     SET ADD_LINK_FILES=!ADD_LINK_FILES! %%a.r01
  20.     set OPT_FIX=
  21.     FINDSTR /RMBC:"#define.*FIX_THIS_NON_BANKING" %%a.c >nul
  22.     if errorlevel 1 (SET OPT_FIX=-mb) ELSE (SET OPT_FIX=-DMEMORY_ATTRIBUTE=banked -ml)
  23.     ECHO %%a.c !OPT_FIX!
  24.     %ICCZ80% %C_OPTIONS% !OPT_FIX! %%a > err.log & if errorlevel 1 goto errexit
  25.     FINDSTR "Warning[" err.log >nul & if NOT errorlevel 1 TYPE err.log
  26. )
  27.  
  28. echo --------------Compiling ASM_FILES--------------
  29. FOR %%a IN (!ASM_FILES!) do (
  30.     SET ADD_LINK_FILES=!ADD_LINK_FILES! %%a.r01
  31.     set OPT_FIX=
  32.     IF /I %%a==cstartup SET OPT_FIX=-Dbanking
  33.     ECHO %%a.s01 !OPT_FIX!
  34.     %AZ80% -Olist\ -uu !OPT_FIX! %%a > err.log & if errorlevel 1 goto errexit
  35.     FINDSTR "Warning[" err.log >nul & if NOT errorlevel 1 TYPE err.log
  36. )
  37.  
  38. echo --------Fixing NO_INIT segments to CODE--------
  39. FOR %%a IN (!C_FILES!) do (
  40.     FINDSTR /RMBC:"#define.*FIX_NO_INIT_2_CODE" %%a.c >nul & if NOT errorlevel 1 (
  41.         ECHO %%a.s01
  42.         %Z80_IDE_PATH%bin\xlib -c "RENAME-SEGMENT list\%%a.r01 NO_INIT CODE" > err.log
  43.         if errorlevel 1 goto errexit
  44.     )
  45. )
  46.  
  47. echo ------------------Linking files----------------
  48. echo !ADD_LINK_FILES!
  49. %Z80_IDE_PATH%bin\xlink !ADD_LINK_FILES! %LINK_OPTIONS% > err.log & if errorlevel 1 goto errexit
  50. FINDSTR "Warning[" err.log >nul & if NOT errorlevel 1 TYPE err.log
  51.  
  52. echo ----------------Crop binary file---------------
  53. del /Q bin\*.*
  54. %Z80_IDE_PATH%\srecord\srec_cat list\aout.a01 -offset -0x6000 -crop 0 0x6000 -o bin\code.c -Binary
  55. FOR %%i IN (0,1,3,4,6,7) do (
  56.     %Z80_IDE_PATH%\srecord\srec_cat list\aout.a01 -offset -0x1%%~iC000 -crop 0 0x4000 -o bin\%%~i.c -Binary > err.log
  57.     if errorlevel 1 goto errexit
  58. )
  59. for /R bin\ %%i in (*.c) do if %%~zi==0 (del /Q %%i) ELSE (echo %%~nxi size %%~zi & SET BIN_FILES=!BIN_FILES! %%i)
  60.  
  61. echo -------------Generate Basic loader-------------
  62. call :genbasasm
  63. %AZ80% list\basic_loader -Olist\ > err.log & if errorlevel 1 goto errexit
  64. %Z80_IDE_PATH%bin\xlink -A list\basic_loader -cZ80 -Z(CODE)BASIC=5D3B -Fraw-binary -o bin\boot.B > err.log & if errorlevel 1 goto errexit
  65. %Z80_IDE_PATH%bin\trdtool bin\boot.B > err.log & if errorlevel 1 goto errexit
  66. del /Q bin\boot.B & echo BOOT.$B
  67.  
  68. echo ---------------Generate test.SCL---------------
  69. %Z80_IDE_PATH%bin\trdtool # test.scl > err.log & if errorlevel 1 goto errexit
  70. for %%i in (!ADD_TO_SCL_FILES! !BIN_FILES!) do (
  71.     %Z80_IDE_PATH%bin\trdtool + test.scl %%i > err.log & if errorlevel 1 goto errexit
  72.     echo %%~nxi
  73. )
  74.  
  75. exit /b
  76.  
  77. :errexit
  78. TYPE err.log
  79. pause
  80. exit /b
  81.  
  82. :genbasasm
  83. echo    NAME    basic_loader >list\basic_loader.s01
  84. echo    RSEG    BASIC >>list\basic_loader.s01
  85. echo basic_loader >>list\basic_loader.s01
  86. echo str10: defb    0x00,10,LOW^(str10len^),HIGH^(str10len^),0xea >>list\basic_loader.s01
  87. echo    di >>list\basic_loader.s01
  88. echo    ld sp,0x6000 >>list\basic_loader.s01
  89. echo    ld hl,filestruct >>list\basic_loader.s01
  90. echo mloop: ld a,(hl) >>list\basic_loader.s01
  91. echo    or a >>list\basic_loader.s01
  92. echo    jp m,0x6000 >>list\basic_loader.s01
  93. echo    inc hl >>list\basic_loader.s01
  94. echo    ld bc,0x7ffd >>list\basic_loader.s01
  95. echo    out ^(c^),a >>list\basic_loader.s01
  96. echo    push hl >>list\basic_loader.s01
  97. echo    ld c,0x13 >>list\basic_loader.s01
  98. echo    call 0x3d13 >>list\basic_loader.s01
  99. echo    pop hl >>list\basic_loader.s01
  100. echo    ld bc,9 >>list\basic_loader.s01
  101. echo    add hl,bc >>list\basic_loader.s01
  102. echo    ld e,(hl) >>list\basic_loader.s01
  103. echo    inc hl >>list\basic_loader.s01
  104. echo    ld d,(hl) >>list\basic_loader.s01
  105. echo    inc hl >>list\basic_loader.s01
  106. echo    push hl >>list\basic_loader.s01
  107. echo    ex de,hl >>list\basic_loader.s01
  108. echo    ld a,0xff >>list\basic_loader.s01
  109. echo    ld c,0x0e >>list\basic_loader.s01
  110. echo    call 0x3d13 >>list\basic_loader.s01
  111. echo    pop hl >>list\basic_loader.s01
  112. echo    jr mloop >>list\basic_loader.s01
  113. echo    defs 32 >>list\basic_loader.s01
  114. echo filestruct: >>list\basic_loader.s01
  115. for %%i in (!BIN_FILES!) do (
  116.     if %%~ni==code (echo    defb 0x10,'code    C',0x00,0x60>>list\basic_loader.s01) else (
  117.     echo    defb 0x1%%~ni,'%%~ni       C',0x00,0xc0>>list\basic_loader.s01)
  118. )
  119. echo    defb    0xff,'\r' >>list\basic_loader.s01
  120. echo str10len=$-str10-4 >>list\basic_loader.s01
  121. echo str1   defb 0x00,20,LOW^(str1len^),HIGH^(str1len^),0xfd,0xb0,'\"24575\"\r'>>list\basic_loader.s01
  122. echo str1len=$-str1-4>>list\basic_loader.s01
  123. echo str30  defb    0x00,30,LOW^(str30len^),HIGH^(str30len^),0xf9,0xc0,0xb0,'\"23872\"\r'>>list\basic_loader.s01
  124. echo str30len=$-str30-4>>list\basic_loader.s01
  125. echo    defb    0x80>>list\basic_loader.s01
  126. echo    END>>list\basic_loader.s01
  127. exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement