Advertisement
DimkaM

Untitled

Jul 24th, 2018
254
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 (
  60.     echo %%~nxi size %%~zi & SET BIN_FILES=!BIN_FILES! %%i
  61. )
  62.  
  63. echo -------------Generate Basic loader-------------
  64. call :genbasasm
  65. %AZ80% list\basic_loader -Olist\ > err.log & if errorlevel 1 goto errexit
  66. %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
  67. %Z80_IDE_PATH%bin\trdtool bin\boot.B > err.log & if errorlevel 1 goto errexit
  68. del /Q bin\boot.B & echo BOOT.$B
  69.  
  70. echo ---------------Generate test.SCL---------------
  71. %Z80_IDE_PATH%bin\trdtool # test.scl > err.log & if errorlevel 1 goto errexit
  72. for %%i in (!ADD_TO_SCL_FILES! !BIN_FILES!) do (
  73.     %Z80_IDE_PATH%bin\trdtool + test.scl %%i > err.log & if errorlevel 1 goto errexit
  74.     echo %%~nxi
  75. )
  76.  
  77. exit /b
  78.  
  79. :errexit
  80. TYPE err.log
  81. pause
  82. exit /b
  83.  
  84. :genbasasm
  85.  
  86. echo    NAME    basic_loader >list\basic_loader.s01
  87. echo    RSEG    BASIC >>list\basic_loader.s01
  88. echo basic_loader: >>list\basic_loader.s01
  89. echo str0 defb  0x00,0x01,LOW(str0len),HIGH(str0len),0xfd,0xb0,'\"24575\"\r' >>list\basic_loader.s01
  90. echo str0len=$-str0-4 >>list\basic_loader.s01
  91. set /A nstr=1
  92. for %%i in (!BIN_FILES!) do (
  93.     if not %%~ni==code (set laddr=49152
  94.         set /A out=16+%%~ni & set /A nstr=!nstr!+1
  95.         echo str!nstr! defb 0x00,!nstr!,LOW^(str!nstr!len^),HIGH^(str!nstr!len^),0xdf,0xb0,'\"32765\",'>>list\basic_loader.s01
  96.         echo    defb 0xb0,'\"!out!\"\r'>>list\basic_loader.s01
  97.         echo str!nstr!len=$-str!nstr!-4>>list\basic_loader.s01
  98.     )else set laddr=24576
  99.     set /A nstr=!nstr!+1
  100.     echo str!nstr! defb 0x00,!nstr!,LOW^(str!nstr!len^),HIGH^(str!nstr!len^),0xf9,0xc0,0xb0,'\"15619\":'>>list\basic_loader.s01
  101.     echo    defb 0xea,':',0xef,'\"%%~ni\"',0xaf,'!laddr!\r'>>list\basic_loader.s01
  102.     echo str!nstr!len=$-str!nstr!-4>>list\basic_loader.s01>>list\basic_loader.s01
  103. )
  104. set /A nstr=!nstr!+1
  105. echo str!nstr!  defb    0x00,!nstr!,LOW^(str!nstr!len^),HIGH^(str!nstr!len^),0xf9,0xc0,0xb0,'\"24576\"\r'>>list\basic_loader.s01
  106. echo str!nstr!len=$-str!nstr!-4>>list\basic_loader.s01
  107. echo    defb    0x80>>list\basic_loader.s01
  108. echo    END>>list\basic_loader.s01
  109. exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement