Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @ECHO OFF
- CLS
- setlocal enabledelayedexpansion
- set C_FILES=main testnonbanking
- set ASM_FILES=cstartup
- SET ADD_LINK_FILES=..\mylibb\mylibb
- set ADD_TO_SCL_FILES=!ADD_TO_SCL_FILES! bin\boot.$B
- set Z80_IDE_PATH=..\z80\
- set ICCZ80=%Z80_IDE_PATH%bin\iccz80
- set AZ80=%Z80_IDE_PATH%bin\az80
- set C_OPTIONS=-v0 -uua -q -e -K -gA -s9 -t4 -T -Llist\ -Olist\ -Alist\ -I"%Z80_IDE_PATH%inc/"
- set LINK_OPTIONS=-cZ80 -Ilist -f Lnk.xcl -FMOTOROLA -C ..\z80\lib\clz80b -o list\aout.a01 -l list/cout.html -xehinms -R -w47
- echo ---------------Compiling C_FILES---------------
- FOR %%a IN (!C_FILES!) do (
- SET ADD_LINK_FILES=!ADD_LINK_FILES! %%a.r01
- set OPT_FIX=
- FINDSTR /RMBC:"#define.*FIX_THIS_NON_BANKING" %%a.c >nul
- if errorlevel 1 (SET OPT_FIX=-mb) ELSE (SET OPT_FIX=-DMEMORY_ATTRIBUTE=banked -ml)
- ECHO %%a.c !OPT_FIX!
- %ICCZ80% %C_OPTIONS% !OPT_FIX! %%a > err.log & if errorlevel 1 goto errexit
- FINDSTR "Warning[" err.log >nul & if NOT errorlevel 1 TYPE err.log
- )
- echo --------------Compiling ASM_FILES--------------
- FOR %%a IN (!ASM_FILES!) do (
- SET ADD_LINK_FILES=!ADD_LINK_FILES! %%a.r01
- set OPT_FIX=
- IF /I %%a==cstartup SET OPT_FIX=-Dbanking
- ECHO %%a.s01 !OPT_FIX!
- %AZ80% -Olist\ -uu !OPT_FIX! %%a > err.log & if errorlevel 1 goto errexit
- FINDSTR "Warning[" err.log >nul & if NOT errorlevel 1 TYPE err.log
- )
- echo --------Fixing NO_INIT segments to CODE--------
- FOR %%a IN (!C_FILES!) do (
- FINDSTR /RMBC:"#define.*FIX_NO_INIT_2_CODE" %%a.c >nul & if NOT errorlevel 1 (
- ECHO %%a.s01
- %Z80_IDE_PATH%bin\xlib -c "RENAME-SEGMENT list\%%a.r01 NO_INIT CODE" > err.log
- if errorlevel 1 goto errexit
- )
- )
- echo ------------------Linking files----------------
- echo !ADD_LINK_FILES!
- %Z80_IDE_PATH%bin\xlink !ADD_LINK_FILES! %LINK_OPTIONS% > err.log & if errorlevel 1 goto errexit
- FINDSTR "Warning[" err.log >nul & if NOT errorlevel 1 TYPE err.log
- echo ----------------Crop binary file---------------
- del /Q bin\*.*
- %Z80_IDE_PATH%\srecord\srec_cat list\aout.a01 -offset -0x6000 -crop 0 0x6000 -o bin\code.c -Binary
- FOR %%i IN (0,1,3,4,6,7) do (
- %Z80_IDE_PATH%\srecord\srec_cat list\aout.a01 -offset -0x1%%~iC000 -crop 0 0x4000 -o bin\%%~i.c -Binary > err.log
- if errorlevel 1 goto errexit
- )
- for /R bin\ %%i in (*.c) do if %%~zi==0 (del /Q %%i) ELSE (echo %%~nxi size %%~zi & SET BIN_FILES=!BIN_FILES! %%i)
- echo -------------Generate Basic loader-------------
- call :genbasasm
- %AZ80% list\basic_loader -Olist\ > err.log & if errorlevel 1 goto errexit
- %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
- %Z80_IDE_PATH%bin\trdtool bin\boot.B > err.log & if errorlevel 1 goto errexit
- del /Q bin\boot.B & echo BOOT.$B
- echo ---------------Generate test.SCL---------------
- %Z80_IDE_PATH%bin\trdtool # test.scl > err.log & if errorlevel 1 goto errexit
- for %%i in (!ADD_TO_SCL_FILES! !BIN_FILES!) do (
- %Z80_IDE_PATH%bin\trdtool + test.scl %%i > err.log & if errorlevel 1 goto errexit
- echo %%~nxi
- )
- exit /b
- :errexit
- TYPE err.log
- pause
- exit /b
- :genbasasm
- echo NAME basic_loader >list\basic_loader.s01
- echo RSEG BASIC >>list\basic_loader.s01
- echo basic_loader >>list\basic_loader.s01
- echo str10: defb 0x00,10,LOW^(str10len^),HIGH^(str10len^),0xea >>list\basic_loader.s01
- echo di >>list\basic_loader.s01
- echo ld sp,0x6000 >>list\basic_loader.s01
- echo ld hl,filestruct >>list\basic_loader.s01
- echo mloop: ld a,(hl) >>list\basic_loader.s01
- echo or a >>list\basic_loader.s01
- echo jp m,0x6000 >>list\basic_loader.s01
- echo inc hl >>list\basic_loader.s01
- echo ld bc,0x7ffd >>list\basic_loader.s01
- echo out ^(c^),a >>list\basic_loader.s01
- echo push hl >>list\basic_loader.s01
- echo ld c,0x13 >>list\basic_loader.s01
- echo call 0x3d13 >>list\basic_loader.s01
- echo pop hl >>list\basic_loader.s01
- echo ld bc,9 >>list\basic_loader.s01
- echo add hl,bc >>list\basic_loader.s01
- echo ld e,(hl) >>list\basic_loader.s01
- echo inc hl >>list\basic_loader.s01
- echo ld d,(hl) >>list\basic_loader.s01
- echo inc hl >>list\basic_loader.s01
- echo push hl >>list\basic_loader.s01
- echo ex de,hl >>list\basic_loader.s01
- echo ld a,0xff >>list\basic_loader.s01
- echo ld c,0x0e >>list\basic_loader.s01
- echo call 0x3d13 >>list\basic_loader.s01
- echo pop hl >>list\basic_loader.s01
- echo jr mloop >>list\basic_loader.s01
- echo defs 32 >>list\basic_loader.s01
- echo filestruct: >>list\basic_loader.s01
- for %%i in (!BIN_FILES!) do (
- if %%~ni==code (echo defb 0x10,'code C',0x00,0x60>>list\basic_loader.s01) else (
- echo defb 0x1%%~ni,'%%~ni C',0x00,0xc0>>list\basic_loader.s01)
- )
- echo defb 0xff,'\r' >>list\basic_loader.s01
- echo str10len=$-str10-4 >>list\basic_loader.s01
- echo str1 defb 0x00,20,LOW^(str1len^),HIGH^(str1len^),0xfd,0xb0,'\"24575\"\r'>>list\basic_loader.s01
- echo str1len=$-str1-4>>list\basic_loader.s01
- echo str30 defb 0x00,30,LOW^(str30len^),HIGH^(str30len^),0xf9,0xc0,0xb0,'\"23872\"\r'>>list\basic_loader.s01
- echo str30len=$-str30-4>>list\basic_loader.s01
- echo defb 0x80>>list\basic_loader.s01
- echo END>>list\basic_loader.s01
- exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement