diff --git a/Shared_Includes b/Shared_Includes index 2fec620..591d321 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 2fec6202f716cfa3ed48fb9bfd79d1081cc2721b +Subproject commit 591d3212c9341f17d6dd034bf2b8da91bd2f6107 diff --git a/src/ZX_ROMS/new/SP_128.bin b/ZX_ROMS/new/SP_128.bin similarity index 100% rename from src/ZX_ROMS/new/SP_128.bin rename to ZX_ROMS/new/SP_128.bin diff --git a/src/ZX_ROMS/new/SP_TRDOS.bin b/ZX_ROMS/new/SP_TRDOS.bin similarity index 100% rename from src/ZX_ROMS/new/SP_TRDOS.bin rename to ZX_ROMS/new/SP_TRDOS.bin diff --git a/src/ZX_ROMS/new/SP__48.bin b/ZX_ROMS/new/SP__48.bin similarity index 100% rename from src/ZX_ROMS/new/SP__48.bin rename to ZX_ROMS/new/SP__48.bin diff --git a/src/ZX_ROMS/new/ZX_EXP.bin b/ZX_ROMS/new/ZX_EXP.bin similarity index 100% rename from src/ZX_ROMS/new/ZX_EXP.bin rename to ZX_ROMS/new/ZX_EXP.bin diff --git a/src/ZX_ROMS/new/ZX_EXP2.bin b/ZX_ROMS/new/ZX_EXP2.bin similarity index 100% rename from src/ZX_ROMS/new/ZX_EXP2.bin rename to ZX_ROMS/new/ZX_EXP2.bin diff --git a/src/bin/bmp_extract.dpr b/bin/bmp_extract.dpr similarity index 95% rename from src/bin/bmp_extract.dpr rename to bin/bmp_extract.dpr index 9b69101..896189e 100644 --- a/src/bin/bmp_extract.dpr +++ b/bin/bmp_extract.dpr @@ -1,233 +1,233 @@ -program bmp_extract; - -{$APPTYPE CONSOLE} - -uses - SysUtils; - - -const - RGB3 = 3; - RGB4 = 4; - -type - - BITMAPFILEHEADER = packed record - bfType: word; - bfSize: longint; - bfReserved1: word; - bfReserved2: word; - bfOffBits: longint; - end; - - BITMAPINFOHEADER = packed record - biSize: longint; - biWidth: longint; - biHeight: longint; - biPlanes: word; - biBitCount: word; - biCompression: longint; - biSizeImage: longint; - biXPelsPerMeter: longint; - biYPelsPerMeter: longint; - biClrUsed: longint; - biClrImportant: longint; - end; - - RGBQUAD = record - rgbBlue: byte; - rgbGreen: byte; - rgbRed: byte; - rgbReserved: byte; - end; - -procedure MsgHelp; -begin - writeln('Usage:'); - writeln(' bmp_extract.exe ...'); - writeln(':'); - writeln(' /pn - output palette file-name'); - writeln(' /dn - output data file-name'); - writeln(' /pt <3 or 4> - palette type'); - writeln; -end; -procedure MsgWrong; -begin - writeln('Unsupported BMP format'); - writeln('Accept only 128x72 px, 8-bit colors, no compression'); - writeln; -end; -procedure SavePalette(var buf: array of byte; fn: string; pal_type: longint); -var - f: file of byte; - i: longint; - buf4: array [0..3] of byte; -begin -{$I-} - AssignFile(f, fn); - rewrite(f); - - case pal_type of - - RGB3: - for i:= 0 to 255 do - begin - move(buf[i*4], buf4[0], 4); - BlockWrite(f, buf4[0], 3); - end; - - RGB4: - BlockWrite(f, buf[0], length(buf)); - - end; - - CloseFile(f); -{$I+} - IOResult; -end; -procedure SaveBuf(var buf: array of byte; fn: string); -var - f: file of byte; -begin -{$I-} - AssignFile(f, fn); - rewrite(f); - BlockWrite(f, buf[0], length(buf)); - CloseFile(f); -{$I+} - IOResult; -end; -function PalTypeToStr(t: longint): string; -begin - case t of - RGB3: result:= 'RGB3'; - RGB4: result:= 'RGB4'; - else result:= 'RGB unknown'; - end; -end; - -var - TFileHeader: BITMAPFILEHEADER; - TInfoHeader: BITMAPINFOHEADER; - f: file of byte; - bmp_file_name, pal_file_name, dat_file_name: string; - i: longint; - pal_type: byte; - buf: array of byte; -begin - ExitCode:= 0; - - writeln('Extractor BMP-files for Sprinter BIOS logo'); - writeln('Copyright (c) 2022 Sprinter Team'); - - // default params - bmp_file_name:= 'logo.bmp'; - pal_file_name:= 'logo_pal.bin'; - dat_file_name:= 'logo_dat.bin'; - pal_type:= RGB4; - - if ParamStr(1) = '/?' then - begin - MsgHelp; - exit; - end; - - // override params - if ParamStr(1) <> '' then - bmp_file_name:= ParamStr(1); - - for i:= 2 to ParamCount do - begin - // palette file name - if LowerCase(ParamStr(i)) = '/pn' then - pal_file_name:= trim(ParamStr(i+1)); - - // data file name - if LowerCase(ParamStr(i)) = '/dn' then - dat_file_name:= trim(ParamStr(i+1)); - - if (LowerCase(ParamStr(i)) = '/pt') and (ParamStr(i+1) = '3') then - pal_type:= RGB3; - end; - - // --------------------------------------------------------------------------- - - AssignFile(f, bmp_file_name); - -{$I-} - Reset(f); -{$I+} - i:= IOResult; - if i <> 0 then - begin - writeln('IO error ', i, ' during open ['+bmp_file_name+'] file'); - MsgHelp; - ExitCode:= 1; - exit; - end; - -{$I-} - BlockRead(f, TFileHeader, SizeOf(TFileHeader)); - BlockRead(f, TInfoHeader, SizeOf(TInfoHeader)); -{$I+} - i:= IOResult; - if i <> 0 then - begin - writeln('IO error ', i, ' during open ['+bmp_file_name+'] file'); - ExitCode:= 1; - exit; - end; - -// writeln('FILE, ', SizeOf(TFileHeader)); -// writeln('bfType: ', TFileHeader.bfType); -// writeln('bfSize: ', TFileHeader.bfSize); -// writeln('bfReserved1: ', TFileHeader.bfReserved1); -// writeln('bfReserved2: ', TFileHeader.bfReserved2); -// writeln('bfOffBits: ', TFileHeader.bfOffBits); -// -// writeln('INFO, ', SizeOf(TInfoHeader)); -// writeln('biSize: ', TInfoHeader.biSize); -// writeln('biWidth: ', TInfoHeader.biWidth); -// writeln('biHeight: ', TInfoHeader.biHeight); -// writeln('biPlanes: ', TInfoHeader.biPlanes); -// writeln('biBitCount: ', TInfoHeader.biBitCount); -// writeln('biCompression: ', TInfoHeader.biCompression); -// writeln('biSizeImage: ', TInfoHeader.biSizeImage); -// writeln('biXPelsPerMeter: ', TInfoHeader.biXPelsPerMeter); -// writeln('biYPelsPerMeter: ', TInfoHeader.biYPelsPerMeter); -// writeln('biClrUsed: ', TInfoHeader.biClrUsed); -// writeln('biClrImportant: ', TInfoHeader.biClrImportant); - - // check acceptable bmp format - if (TFileHeader.bfType <> $4D42) - or (TInfoHeader.biWidth <> 128) - or (TInfoHeader.biHeight <> 72) - or (TInfoHeader.biBitCount <> 8) - or (TInfoHeader.biCompression <> 0) - then - begin - MsgWrong; - ExitCode:= 1; - exit; - end; - - with TInfoHeader do - writeln('File ['+bmp_file_name+'], found ',biBitCount,' bit BMP ',biWidth,'x',biHeight,', output '+PalTypeToStr(pal_type)+' ['+pal_file_name+'] and ['+dat_file_name+']'); - - // make palette - SetLength(buf, 1024); - FillChar(buf[0], length(buf), 0); - BlockRead(f, buf[0], (TFileHeader.bfOffBits - SizeOf(TFileHeader) - SizeOf(TInfoHeader)) ); - SavePalette(buf, pal_file_name, pal_type); - - // make data - SetLength(buf, TInfoHeader.biWidth * TInfoHeader.biHeight); - FillChar(buf[0], length(buf), 0); - BlockRead(f, buf[0], length(buf)); - SaveBuf(buf, dat_file_name); - - CloseFile(f); - - writeln('Done.'); - -end. +program bmp_extract; + +{$APPTYPE CONSOLE} + +uses + SysUtils; + + +const + RGB3 = 3; + RGB4 = 4; + +type + + BITMAPFILEHEADER = packed record + bfType: word; + bfSize: longint; + bfReserved1: word; + bfReserved2: word; + bfOffBits: longint; + end; + + BITMAPINFOHEADER = packed record + biSize: longint; + biWidth: longint; + biHeight: longint; + biPlanes: word; + biBitCount: word; + biCompression: longint; + biSizeImage: longint; + biXPelsPerMeter: longint; + biYPelsPerMeter: longint; + biClrUsed: longint; + biClrImportant: longint; + end; + + RGBQUAD = record + rgbBlue: byte; + rgbGreen: byte; + rgbRed: byte; + rgbReserved: byte; + end; + +procedure MsgHelp; +begin + writeln('Usage:'); + writeln(' bmp_extract.exe ...'); + writeln(':'); + writeln(' /pn - output palette file-name'); + writeln(' /dn - output data file-name'); + writeln(' /pt <3 or 4> - palette type'); + writeln; +end; +procedure MsgWrong; +begin + writeln('Unsupported BMP format'); + writeln('Accept only 128x72 px, 8-bit colors, no compression'); + writeln; +end; +procedure SavePalette(var buf: array of byte; fn: string; pal_type: longint); +var + f: file of byte; + i: longint; + buf4: array [0..3] of byte; +begin +{$I-} + AssignFile(f, fn); + rewrite(f); + + case pal_type of + + RGB3: + for i:= 0 to 255 do + begin + move(buf[i*4], buf4[0], 4); + BlockWrite(f, buf4[0], 3); + end; + + RGB4: + BlockWrite(f, buf[0], length(buf)); + + end; + + CloseFile(f); +{$I+} + IOResult; +end; +procedure SaveBuf(var buf: array of byte; fn: string); +var + f: file of byte; +begin +{$I-} + AssignFile(f, fn); + rewrite(f); + BlockWrite(f, buf[0], length(buf)); + CloseFile(f); +{$I+} + IOResult; +end; +function PalTypeToStr(t: longint): string; +begin + case t of + RGB3: result:= 'RGB3'; + RGB4: result:= 'RGB4'; + else result:= 'RGB unknown'; + end; +end; + +var + TFileHeader: BITMAPFILEHEADER; + TInfoHeader: BITMAPINFOHEADER; + f: file of byte; + bmp_file_name, pal_file_name, dat_file_name: string; + i: longint; + pal_type: byte; + buf: array of byte; +begin + ExitCode:= 0; + + writeln('Extractor BMP-files for Sprinter BIOS logo'); + writeln('Copyright (c) 2022 Sprinter Team'); + + // default params + bmp_file_name:= 'logo.bmp'; + pal_file_name:= 'logo_pal.bin'; + dat_file_name:= 'logo_dat.bin'; + pal_type:= RGB4; + + if ParamStr(1) = '/?' then + begin + MsgHelp; + exit; + end; + + // override params + if ParamStr(1) <> '' then + bmp_file_name:= ParamStr(1); + + for i:= 2 to ParamCount do + begin + // palette file name + if LowerCase(ParamStr(i)) = '/pn' then + pal_file_name:= trim(ParamStr(i+1)); + + // data file name + if LowerCase(ParamStr(i)) = '/dn' then + dat_file_name:= trim(ParamStr(i+1)); + + if (LowerCase(ParamStr(i)) = '/pt') and (ParamStr(i+1) = '3') then + pal_type:= RGB3; + end; + + // --------------------------------------------------------------------------- + + AssignFile(f, bmp_file_name); + +{$I-} + Reset(f); +{$I+} + i:= IOResult; + if i <> 0 then + begin + writeln('IO error ', i, ' during open ['+bmp_file_name+'] file'); + MsgHelp; + ExitCode:= 1; + exit; + end; + +{$I-} + BlockRead(f, TFileHeader, SizeOf(TFileHeader)); + BlockRead(f, TInfoHeader, SizeOf(TInfoHeader)); +{$I+} + i:= IOResult; + if i <> 0 then + begin + writeln('IO error ', i, ' during open ['+bmp_file_name+'] file'); + ExitCode:= 1; + exit; + end; + +// writeln('FILE, ', SizeOf(TFileHeader)); +// writeln('bfType: ', TFileHeader.bfType); +// writeln('bfSize: ', TFileHeader.bfSize); +// writeln('bfReserved1: ', TFileHeader.bfReserved1); +// writeln('bfReserved2: ', TFileHeader.bfReserved2); +// writeln('bfOffBits: ', TFileHeader.bfOffBits); +// +// writeln('INFO, ', SizeOf(TInfoHeader)); +// writeln('biSize: ', TInfoHeader.biSize); +// writeln('biWidth: ', TInfoHeader.biWidth); +// writeln('biHeight: ', TInfoHeader.biHeight); +// writeln('biPlanes: ', TInfoHeader.biPlanes); +// writeln('biBitCount: ', TInfoHeader.biBitCount); +// writeln('biCompression: ', TInfoHeader.biCompression); +// writeln('biSizeImage: ', TInfoHeader.biSizeImage); +// writeln('biXPelsPerMeter: ', TInfoHeader.biXPelsPerMeter); +// writeln('biYPelsPerMeter: ', TInfoHeader.biYPelsPerMeter); +// writeln('biClrUsed: ', TInfoHeader.biClrUsed); +// writeln('biClrImportant: ', TInfoHeader.biClrImportant); + + // check acceptable bmp format + if (TFileHeader.bfType <> $4D42) + or (TInfoHeader.biWidth <> 128) + or (TInfoHeader.biHeight <> 72) + or (TInfoHeader.biBitCount <> 8) + or (TInfoHeader.biCompression <> 0) + then + begin + MsgWrong; + ExitCode:= 1; + exit; + end; + + with TInfoHeader do + writeln('File ['+bmp_file_name+'], found ',biBitCount,' bit BMP ',biWidth,'x',biHeight,', output '+PalTypeToStr(pal_type)+' ['+pal_file_name+'] and ['+dat_file_name+']'); + + // make palette + SetLength(buf, 1024); + FillChar(buf[0], length(buf), 0); + BlockRead(f, buf[0], (TFileHeader.bfOffBits - SizeOf(TFileHeader) - SizeOf(TInfoHeader)) ); + SavePalette(buf, pal_file_name, pal_type); + + // make data + SetLength(buf, TInfoHeader.biWidth * TInfoHeader.biHeight); + FillChar(buf[0], length(buf), 0); + BlockRead(f, buf[0], length(buf)); + SaveBuf(buf, dat_file_name); + + CloseFile(f); + + writeln('Done.'); + +end. diff --git a/src/bin/bmp_extract.exe b/bin/bmp_extract.exe similarity index 100% rename from src/bin/bmp_extract.exe rename to bin/bmp_extract.exe diff --git a/src/bin/hrust.exe b/bin/hrust.exe similarity index 100% rename from src/bin/hrust.exe rename to bin/hrust.exe diff --git a/src/bin/mhmt b/bin/mhmt similarity index 100% rename from src/bin/mhmt rename to bin/mhmt diff --git a/src/bios/BIOS.asm b/bios/BIOS.asm similarity index 87% rename from src/bios/BIOS.asm rename to bios/BIOS.asm index f2b268f..f72fa8b 100644 --- a/src/bios/BIOS.asm +++ b/bios/BIOS.asm @@ -16,7 +16,7 @@ ;---------------------------------------; ;-----------[Shared Includes]----------- - INCLUDE 'src/bios/shared/includes.inc' ; Includes + INCLUDE 'bios/shared/includes.inc' ; Includes ;--------------------------------------- @@ -41,16 +41,14 @@ print () if detected_os == "Windows" then - pack_prog = "src\\bin\\hrust.exe Build\\Bin\\temp\\MAIN.PAK Build\\Bin\\temp\\MAIN.BIN" - elseif detected_os == "MacOS" then - pack_prog = "src/bin/mhmt -hst -zxh Build/Bin/temp/MAIN.BIN Build/Bin/temp/MAIN.PAK" - elseif detected_os == "Linux" then - pack_prog = "src/bin/mhmt -hst -zxh Build/Bin/temp/MAIN.BIN Build/Bin/temp/MAIN.PAK" + pack_prog = "bin\\hrust.exe Build\\Bin\\temp\\MAIN.PAK Build\\Bin\\temp\\MAIN.BIN" + else + pack_prog = "bin/mhmt -hst -zxh Build/Bin/temp/MAIN.BIN Build/Bin/temp/MAIN.PAK" end -- компиляция для получения сжатого файла MAIN и холостой проход Set_Pictures.asm - if (os.execute("sjasmplus -DPREBUILD=1 -Wall --msg=war --nologo --syntax=w --fullpath --lst=Build/Prebuilds.LST SRC/BIOS/ROM/SETUP/MAIN.ASM")) then + if (os.execute("sjasmplus -DPREBUILD=1 -Wall --msg=war --nologo --syntax=w --fullpath --lst=Build/Prebuilds.LST BIOS/ROM/SETUP/MAIN.ASM")) then print("--[ MAIN.ASM Prebuild DONE ]--") if (os.execute(pack_prog)) then print("--[ Hrusting MAIN.BIN DONE ]--") @@ -71,7 +69,7 @@ ;----------[MAIN's referenses]----------; Компиляция для получения адресов меток и процедур MMU 2 e, 18 ; страница 18 в банку 2 и проверка на границы. ORG COMPILE_ADDR.MAIN - INCLUDE 'src/bios/ROM/SETUP/MAIN.asm' + INCLUDE 'bios/ROM/SETUP/MAIN.asm' ;--------------------------------------- ENDIF @@ -83,7 +81,7 @@ DEFINE+ IsInBIOS 1 OUTPUT 'Build/Bin/EXP.BIN' ShowInfo 'EXP block Start', 0 ; !!!!! test - INCLUDE 'src/bios/EXP/EXP.asm' + INCLUDE 'bios/EXP/EXP.asm' ShowInfo 'EXP block End', 0 ; !!!!! test OUTEND ;--------------------------------------- @@ -97,7 +95,7 @@ DEFINE+ IsInBIOS 0 OUTPUT 'Build/Bin/ROM.BIN' ShowInfo 'ROM block Start', 0 ; !!!!! test - INCLUDE 'src/bios/ROM/ROM.asm' + INCLUDE 'bios/ROM/ROM.asm' ShowInfo 'ROM block End', 0 ; !!!!! test OUTEND UNDEFINE IsInBIOS @@ -135,7 +133,7 @@ MMU 1 e, 1 ; страница 1 в банку 1 и проверка на границы. ORG ROM_MAP.LOGO OUTPUT 'Build/Bin/LOGO.BIN' - INCLUDE 'src/bios/logo/Set_Pictures.asm' + INCLUDE 'bios/logo/Set_Pictures.asm' OUTEND ;--------------------------------------- ; diff --git a/src/bios/BUILD.a80 b/bios/BUILD.a80 similarity index 88% rename from src/bios/BUILD.a80 rename to bios/BUILD.a80 index 14c423a..14a7a6e 100644 --- a/src/bios/BUILD.a80 +++ b/bios/BUILD.a80 @@ -2,7 +2,7 @@ ;------------[LUA functions]------------; includelua 'Shared_Includes/LUA/Functions.lua' ;---------------------------------------; - DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' + DEFINE PICTURE_FILE './bios/logo/psfathers.bmp' LUA PASS1 @@ -20,8 +20,8 @@ */ INCLUDE 'shared/defines.inc' - DEFINE IMG_RECOVERY 'src/bios/shared/recovery.img' - ;DEFINE IMG_RECOVERY 'src/bios/shared/recovery_tst.img' + DEFINE IMG_RECOVERY 'bios/shared/recovery.img' + ;DEFINE IMG_RECOVERY 'bios/shared/recovery_tst.img' ; ;[--------------------------------------------------------------------------] @@ -32,9 +32,9 @@ ENDM ;[--------------------------------------------------------------------------] - DEFINE SP_128_BIN INCBIN 'src/ZX_ROMS/NEW/SP_128.BIN' - DEFINE SP__48_BIN INCBIN 'src/ZX_ROMS/NEW/SP__48.BIN' - DEFINE SP_TRDOS_BIN INCBIN 'src/ZX_ROMS/NEW/SP_TRDOS.BIN' + DEFINE SP_128_BIN INCBIN 'ZX_ROMS/NEW/SP_128.BIN' + DEFINE SP__48_BIN INCBIN 'ZX_ROMS/NEW/SP__48.BIN' + DEFINE SP_TRDOS_BIN INCBIN 'ZX_ROMS/NEW/SP_TRDOS.BIN' ;[--------------------------------------------------------------------------] MACRO ROM_BUILD bitstream diff --git a/src/bios/exp/BIOS_FUNC.asm b/bios/exp/BIOS_FUNC.asm similarity index 97% rename from src/bios/exp/BIOS_FUNC.asm rename to bios/exp/BIOS_FUNC.asm index dfcd642..e694e74 100644 --- a/src/bios/exp/BIOS_FUNC.asm +++ b/bios/exp/BIOS_FUNC.asm @@ -1,774 +1,774 @@ -; - MACRO _mNoDrive_5xTable numberOFdrives, byteOFword - IF byteOFword - DUP numberOFdrives - DB high FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика - - DB high FN_ABSENT_5x ;#51 - DB high FN_ABSENT_5x ;#52 - DB high FN_ABSENT_5x ;#53 - DB high FN_ABSENT_5x ;#54 - DB high FN_ABSENT_5x ;#55 - DB high FN_ABSENT_5x ;#56 - DB high FN_ABSENT_5x ;#57 - DB high FN_ABSENT_5x ;#58 - DB high FN_ABSENT_5x ;#59 - - DB high DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_ABSENT_5x ;#5E - DB high DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика - EDUP - ELSE - DUP numberOFdrives - DB low FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика - - DB low FN_ABSENT_5x ;#51 - DB low FN_ABSENT_5x ;#52 - DB low FN_ABSENT_5x ;#53 - DB low FN_ABSENT_5x ;#54 - DB low FN_ABSENT_5x ;#55 - DB low FN_ABSENT_5x ;#56 - DB low FN_ABSENT_5x ;#57 - DB low FN_ABSENT_5x ;#58 - DB low FN_ABSENT_5x ;#59 - - DB low DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5E - Дубль. На эту функцию прыгает из основного обработчика - DB low DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика - EDUP - ENDIF - ENDM -; - - _mInfoALIGN 256,0 -;=========================================================[ MAIN TABLE ] -; !FIXIT поправить в доке названия функций, часть не совпадает -TAB_FNS: - -; 00 - #3F - DUP #40 - DB low FN_RESERVED - EDUP -; - -; #4x -;-------------- - DB low FN_HDD_INIT ; #40 Инициализация винчестера - DB low FN_HDD_RECAL ; #41 Рекалибровка винчестера - DB low FN_HDD_TEST_IDE ; #42 Тест наличия интерфейса IDE - DB low FN_HDD_PREPARE ; #43 Подготовка винчестера к операции чтения/записи - DB low FN_HDD_READ_BPB ; #44 Читать BPB первого раздела - DB low FN_HDD_READ ; #45 Читать сектора с винчестера - DB low FN_HDD_WRITE ; #46 Писать сектора на винчестер - DB low FN_HDD_PART ; #47 set IDE number (Настройка партиций и master/slave)??? - DB low FN_HDD_READ_NEXT ; #48 Читать следующий сектор (ONLY FOR LBA!) - DB low FN_RESERVED ; #49 - DB low FN_RESERVED ; #4A - DB low FN_RESERVED ; #4B - DB low FN_RESERVED ; #4C - DB low FN_RESERVED ; #4D - DB low FN_RESERVED ; #4E - DB low FN_RESERVED ; #4F -;-------------- -; - -; 5x -;-------------- - DB low FN_RESERVED_5x ;#50 - - DB low FN_5x_Parser_1 ;#51 - Reset drive - DB low FN_5x_Parser_2 ;#52 - Long read - DB low FN_5x_Parser_3 ;#53 - Long write - DB low FN_5x_Parser_4 ;#54 - Verify sectors - DB low FN_5x_Parser_5 ;#55 - Read sectors - DB low FN_5x_Parser_6 ;#56 - Write sectors - DB low FN_5x_Parser_7 ;#57 - Detect - DB low FN_5x_Parser_8 ;#58 - Get Media parameters - DB low FN_5x_Parser_9 ;#59 - Set Media parameters - - DB low DRV_VERSION ;#5A - Version number - DB low FN_RESERVED_5x ;#5B - DB low FN_RESERVED_5x ;#5C - DB low FN_RESERVED_5x ;#5D - DB low FN_5x_Parser_E ;#5E - DB low DRV_LIST ;#5F -;-------------- - -; 60 - #7F - DUP #20 - DB low FN_RESERVED - EDUP - - -; 8x - DB low LP_OPEN_S ; #80 открытие окна - DB low LP_PRINT_ALL ; #81 печать символа в окно - DB low LP_PRINT_SYM ; #82 печать символа без атр - DB low LP_PRINT_ATR ; #83 печать только атрибута - DB low LP_SET_PLACE ; #84 установка позиции печати - DB low LP_PRINT_LINE ; #85 печать строки длиной B - DB low LP_PRINT_LINE2 ; #86 печать строки -//- без атрибутов - DB low LP_PRINT_LINE3 ; #87 печать строки длиной B до D - DB low LP_PRINT_LINE4 ; #88 печать строки -//- без атрибутов - DB low LP_CLS_WIN ; #89 - DB low LP_SCROLL_UD ; #8A - DB low LP_PRINT_LINE5 ; #8B - DB low LP_PRINT_LINE6 ; #8C - DB low LP_CLS_WIN2 ; #8D - DB low LP_GET_PLACE ; #8E - DB low FN_TURBO ; #8F -; 9x - DB low EMM.GetMemSize ; #90 неразрушающее определение объема ОЗУ. - DB low EMM.InitMem ; #91 инициализация распределения памяти - DB low EMM.GetMemRMD ; #92 получить блок памяти для рамдиска - DB low EMM.FreeMemRMD ; #93 освободить блок памяти рамдиска - DB low EMM.GetMemPageRMD ; #94 получить номерa страниц RAM-Disk - DB low EMM.GetMemPageNext ; #95 получить следующую страницу - DB low EMM.GetBanksPorts ; #96 получить адреса портов - DB low EMM.CheckColdInit ; #97 проверка на холодный старт и инициализации если он ;????? нужна ли как API? - DB low RAMD_CALC_PAGE ; #98 Вычисление страницы и адреса в RAM-Disk по абсолютному номеру сектора - DB low SET_DISK_REDIR ; #99 Установить на текущий драйв переназначение (старая функция для TR-DOS!) ;????? - DB low GET_DISK_REDIR ; #9A Получить тип назначения на текущий драйв (старая функция для TR-DOS!) - DB low GET_RAMD_NUM ; #9B получить номер ram disk по его block id - DB low SWAP_RAM_DRIVES ; #9C сменить набор рамдисков ZX <-> Sp2000 - DB low EMM.DivMemBlocks ; #9D разделения блока на два. - DB low EMM.MergeMemBlocks ; #9E слияние двух блоков - DB low EMM.FullInit ; #9F инициализация всей памяти, системных переменных -; Ax - DB low PIC_FN0_OpenWin ; #A0 ОТКРЫТИЕ ОКНА - DB low PIC_FN1 ; #A1 ВЫВЕСТИ ТОЧКУ - DB low PIC_FN2 ; #A2 ВЫВОД ЛИНИИ COPY - DB low PIC_FN3 ; #A3 ВЫВОД ЛИНИИ FILL - DB low PIC_SET_PAL ; #A4 ВЫВОД ПАЛИТРЫ - DB low PIC_FN5 ; #A5 УСТАНОВКА RGMOD - DB low SET_PAL_INIT ; #A6 A - page_pal, E - номер палитры, B - тип палитры - DB low PIC_FN7 ; #A7 Рисование линии одного цвета - DB low PIC_FN8 ; #A8 Рисование разноцветной линии - DB low PIC_FN9 ; #A9 нет - DB low PIC_FN10 ; #AA нет - DB low PIC_FN11 ; #AB нет - DB low PIC_FN12 ; #AC нет - DB low PIC_FN14 ; #AD нет - DB low PIC_FN14 ; #AE нет - DB low PIC_FN15 ; #AF нет -; Bx - DB low WIN_OPEN ; #B0 открытие окна по описателю - DB low WIN_CLOSE ; #B1 закрытие окна - DB low WIN_COPY ; #B2 сохранение текстового окна в памяти - DB low WIN_RESTORE ; #B3 восстановление текстового окна из памяти - DB low WIN_GET_SYM ; #B4 взять символ - DB low WIN_PUT_SYM ; #B5 положить символ - DB low WIN_SET_ZG ; #B6 загрузка знакогенератора - DB low WIN_MOVE ; #B7 переместить окно - DB low WIN_GET_ZG ; #B8 получить знакогенератор - DB low FN_RESERVED ; #B9 - DB low FN_RESERVED ; #BA - DB low FN_RESERVED ; #BB - DB low FN_RESERVED ; #BC - DB low FN_RESERVED ; #BD - DB low FN_RESERVED ; #BE - DB low FN_RESERVED ; #BF -; Cx - DB low EMM.GetMemSize ; #C0 получить данные об объеме памяти и кол-во своб. стр. - DB low EMM.InitMem ; #C1 инициализация распределения памяти - DB low EMM.GetMem ; #C2 получить блок памяти - DB low EMM.FreeMem ; #C3 освободить блок памяти - DB low EMM.GetMemPage ; #C4 получить номер страницы в блоке памяти - DB low EMM.GetMemBlkPages ; #C5 получить список страниц блока памяти - DB low EMM.GetBanksPorts ; #C6 получить адреса портов окон - DB low EMM.GetMemPageNext ; #C7 получить следующую страницу блока - DB low BLK_RD_WR ; #C8 функция чтения/записи в блок памяти - DB low BLK_TO_RAMD ; #C9 назначить блок RAM-Disk-у - DB low RAMD_CLEAR ; #CA освободить RAM-Disk - DB low RAMD_TO_DRV ; #CB назначить RAM-Disk на дисковод - DB low FDD_TO_DRV ; #CC назначить REAL_DRIVE на дисковод - DB low HDD_TO_DRV ; #CD назначить HDD на дисковод - DB low GET_RAMD_ST ; #CE получить тип назначения на RAM-Disk - DB low GET_DRV_ST ; #CF получить тип назначения на дисковод -; Dx - DB low FN_LIB ; #D0 - DB low FN_LIB ; #D1 - DB low FN_LIB ; #D2 - DB low FN_LIB ; #D3 - DB low FN_LIB ; #D4 - DB low FN_LIB ; #D5 - DB low FN_LIB ; #D6 - DB low FN_LIB ; #D7 - DB low FN_LIB ; #D8 - DB low FN_LIB ; #D9 - DB low FN_LIB ; #DA - DB low FN_LIB ; #DB - DB low FN_LIB ; #DC - DB low FN_LIB ; #DD - DB low FN_LIB ; #DE - DB low FN_LIB ; #DF -; Ex - DB low LP_PR_LINE_DIR.START ; #E0 - DB low FN_RESERVED ; #E1 - DB low FN_RESERVED ; #E2 - DB low FN_RESERVED ; #E3 - DB low FN_RESERVED ; #E4 - DB low FN_RESERVED ; #E5 - DB low FN_RESERVED ; #E6 - DB low FN_RESERVED ; #E7 - DB low FN_SEND_BYTE ; #E8 послать байт через PC_link - DB low FN_RESEIVE_B ; #E9 принять байт через PC_link - DB low FN_KBD_OUT ; #EA послать байт в клавиатуру - DB low FN_RESERVED ; #EB - DB low FN_RESERVED ; #EC - DB low FN_CRIPT ; #ED - DB low RST_CONF.AY8910 ; #EE для совместимости с софтом Sp97 - DB low FN_VERSION ; #EF -; Fx - DB low RST_CONF.SP97_1 ; #F0 для совместимости с софтом Sp97 - DB low RST_CONF.SP97_2 ; #F1 для совместимости с софтом Sp97 - DB low FN_SYNC ; #F2 установка синхронизации - DB low RST_CONF.CUSTOM ; #F3 для совместимости с софтом Sp97 - DB low DCP_CONFIG ; #F4 функция распределения портов ; [x] - DB low CMOS_TEST ; #F5 - DB low CMOS_RD ; #F6 - DB low CMOS_WR ; #F7 - DB low SET_PORTS ; #F8 - DB low READ_PORTS ; #F9 [x] 26/01/2024 - DB low FN_RESERVED ; #FA [x] 26/01/2024 не работала и не нужна, дублирует SET_PORTS - DB low GOTO_SPEC ; #FB Goto Spectrum! - DB low ZX_MEMORY_MANAGER ; #FC API для динамического выделения страниц Спектрума - DB low REINIT ; #FD - DB low FN_RESERVED ; #FE SAVE_AUTOSTART. Есть в ZX_EXP.ASM - DB low FN_VERSION ; #FF - -;****************----------------------------************************----------------- - - -; 00 - #3F - DUP #40 - DB high FN_RESERVED - EDUP -; - -;-------------- - DB high FN_HDD_INIT - DB high FN_HDD_RECAL - DB high FN_HDD_TEST_IDE - DB high FN_HDD_PREPARE - DB high FN_HDD_READ_BPB - DB high FN_HDD_READ - DB high FN_HDD_WRITE - DB high FN_HDD_PART - DB high FN_HDD_READ_NEXT - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED -;-------------- - -;-------------- - DB high FN_RESERVED_5x - - DB high FN_5x_Parser_1 - DB high FN_5x_Parser_2 - DB high FN_5x_Parser_3 - DB high FN_5x_Parser_4 - DB high FN_5x_Parser_5 - DB high FN_5x_Parser_6 - DB high FN_5x_Parser_7 - DB high FN_5x_Parser_8 - DB high FN_5x_Parser_9 - - DB high DRV_VERSION - DB high FN_RESERVED_5x - DB high FN_RESERVED_5x - DB high FN_RESERVED_5x - DB high FN_5x_Parser_E - DB high DRV_LIST -;-------------- - -; 60 - #7F - DUP #20 - DB high FN_RESERVED - EDUP - - -; 8x - DB high LP_OPEN_S - DB high LP_PRINT_ALL - DB high LP_PRINT_SYM - DB high LP_PRINT_ATR - DB high LP_SET_PLACE - DB high LP_PRINT_LINE - DB high LP_PRINT_LINE2 - DB high LP_PRINT_LINE3 - DB high LP_PRINT_LINE4 - DB high LP_CLS_WIN - DB high LP_SCROLL_UD - DB high LP_PRINT_LINE5 - DB high LP_PRINT_LINE6 - DB high LP_CLS_WIN2 - DB high LP_GET_PLACE - DB high FN_TURBO -; 9x - DB high EMM.GetMemSize - DB high EMM.InitMem - DB high EMM.GetMemRMD - DB high EMM.FreeMemRMD - DB high EMM.GetMemPageRMD - DB high EMM.GetMemPageNext - DB high EMM.GetBanksPorts - DB high EMM.CheckColdInit - DB high RAMD_CALC_PAGE - DB high SET_DISK_REDIR - DB high GET_DISK_REDIR - DB high GET_RAMD_NUM - DB high SWAP_RAM_DRIVES - DB high EMM.DivMemBlocks - DB high EMM.MergeMemBlocks - DB high EMM.FullInit -; Ax - DB high PIC_FN0_OpenWin - DB high PIC_FN1 - DB high PIC_FN2 - DB high PIC_FN3 - DB high PIC_SET_PAL - DB high PIC_FN5 - DB high SET_PAL_INIT - DB high PIC_FN7 - DB high PIC_FN8 - DB high PIC_FN9 - DB high PIC_FN10 - DB high PIC_FN11 - DB high PIC_FN12 - DB high PIC_FN14 - DB high PIC_FN14 - DB high PIC_FN15 -; Bx - DB high WIN_OPEN - DB high WIN_CLOSE - DB high WIN_COPY - DB high WIN_RESTORE - DB high WIN_GET_SYM - DB high WIN_PUT_SYM - DB high WIN_SET_ZG - DB high WIN_MOVE - DB high WIN_GET_ZG - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED -; Cx - DB high EMM.GetMemSize - DB high EMM.InitMem - DB high EMM.GetMem - DB high EMM.FreeMem - DB high EMM.GetMemPage - DB high EMM.GetMemBlkPages - DB high EMM.GetBanksPorts - DB high EMM.GetMemPageNext - DB high BLK_RD_WR - DB high BLK_TO_RAMD - DB high RAMD_CLEAR - DB high RAMD_TO_DRV - DB high FDD_TO_DRV - DB high HDD_TO_DRV - DB high GET_RAMD_ST - DB high GET_DRV_ST -; Dx - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB - DB high FN_LIB -; Ex - DB high LP_PR_LINE_DIR.START - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_SEND_BYTE - DB high FN_RESEIVE_B - DB high FN_KBD_OUT - DB high FN_RESERVED - DB high FN_RESERVED - DB high FN_CRIPT - DB high RST_CONF.AY8910 - DB high FN_VERSION -; Fx - DB high RST_CONF.SP97_1 - DB high RST_CONF.SP97_2 - DB high FN_SYNC - DB high RST_CONF.CUSTOM - DB high DCP_CONFIG - DB high CMOS_TEST - DB high CMOS_RD - DB high CMOS_WR - DB high SET_PORTS - DB high READ_PORTS - DB high FN_RESERVED - DB high GOTO_SPEC - DB high ZX_MEMORY_MANAGER - DB high REINIT - DB high FN_RESERVED - DB high FN_VERSION -//////////////////////////////////////////////////////////////////////////////////////// - - -//////////////////////////////////////////////////////////////////////////////////////// -; -; ,----, ,----,. -; ,/ .`| ,' ,' | -; ,` .' : ,--, ,' .' | -; ; ; / ,---, ,--.'| ,----.' .' -; .'___,/ ,' ,---.'| | | : | | .' -; | : | | | : : : ' : : |--, ,--, ,--, -; ; |.'; ; ,--.--. : : : | ' | ,---. : | ;.' \|'. \/ .`| -; `----' | | / \ : |,-.' | | / \ | | |' \/ / ; -; ' : ;.--. .-. || : ' || | : / / | `----'.'\ ; \ \.' / -; | | ' \__\/: . .| | / :' : |__ . ' / | __ \ . | \ ; ; -; ' : | ," .--.; |' : |: || | '.'|' ; /| / /\/ / : / \ \ \ -; ; |.' / / ,. || | '/ :; : ;' | / | / ,,/ ',- ./__; ; \ -; '---' ; : .' \ : || , / | : | \ ''\ ;| :/\ \ ; -; | , .-./ \ / ---`-' \ \ / \ \ .' `---' `--` -; `--`---' `-'----' `----' `--`-,-' -//////////////////////////////////////////////////////////////////////////////////////// - - - _mInfoALIGN 256,0 -;===========================================================[ 5x TABLE ] -; Drives Numbers: -; 0 FDD -; 1..5 reserved -; 6 RAM-DRV -; 7 reserved -; 8 HDD -; 9..B reserved -; C CDROM -; D..F reserved -TAB_5xFNS: -; --< LOW PART >-- -;-------------------------------------------------------------[ FDD #0 ] -; - DB low FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика - DB low FDD_5x_RESET ;#51 - DB low FDD_5x_LONG_READ ;#52 - DB low FDD_5x_LONG_WRITE ;#53 - DB low FN_ABSENT_5x ;#54 - DB low FDD_5x_READ ;#55 - DB low FDD_5x_WRITE ;#56 - DB low FDD_5x_DETECT ;#57 - DB low FDD_5x_GET_PAR ;#58 - DB low FDD_5x_SET_PAR ;#59 - - DB low DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_ABSENT_5x ;#5E - Дубль. На эту функцию прыгает из основного обработчика - DB low DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика -; -;---------------------------------------------------------------------[] - -;-----------------------------[ #1..#5 ] - _mNoDrive_5xTable 5, 0 -;-------------------------------------[] - -;-------------------------------------------------------[ RAM DRIVE #6 ] -; - DB low FN_RESERVED_5x - DB low FN_ABSENT_5x - DB low RMD_5x_LONG_READ - DB low RMD_5x_LONG_WRITE - DB low FN_ABSENT_5x - DB low RMD_5x_READ - DB low RMD_5x_WRITE - DB low FN_ABSENT_5x - DB low RMD_5x_GET_PAR - DB low RMD_5x_SET_PAR - - DB low DRV_VERSION - DB low FN_RESERVED_5x - DB low FN_RESERVED_5x - DB low FN_RESERVED_5x - DB low FN_ABSENT_5x - DB low DRV_LIST -;---------------------------------------------------------------------[] - -;---------------------------------[ #7 ] - _mNoDrive_5xTable 1, 0 -;-------------------------------------[] - -;-------------------------------------------------------------[ ATA #8 ] -; - DB low FN_RESERVED_5x - DB low ATA_5x_RESET - DB low ATA_5x_LONG_READ - DB low ATA_5x_LONG_WRITE - DB low ATA_5x_VERIFY - DB low ATA_5x_READ - DB low ATA_5x_WRITE - DB low ATA_5x_DETECT - DB low ATA_5x_GET_PAR - DB low ATA_5x_SET_PAR - - DB low DRV_VERSION - DB low FN_RESERVED_5x - DB low FN_RESERVED_5x - DB low FN_RESERVED_5x - DB low FN_ABSENT_5x - DB low DRV_LIST -;---------------------------------------------------------------------[] - -;-----------------------------[ #9..#B ] - _mNoDrive_5xTable 3, 0 -;-------------------------------------[] - -;-----------------------------------------------------------[ ATAPI #C ] -; - DB low FN_RESERVED_5x - DB low ATAPI_5x_RESET - DB low ATAPI_5x_LONG_READ - DB low ATAPI_5x_LONG_WRITE ; [ ] new - DB low FN_ABSENT_5x ; VERIFY - DB low ATAPI_5x_READ - DB low ATAPI_5x_WRITE ; [ ] new - DB low ATAPI_5x_DETECT - DB low ATAPI_5x_GET_PAR ; [ ] new - DB low ATAPI_5x_SET_PAR ; SETMED - - DB low DRV_VERSION - DB low FN_RESERVED_5x - DB low FN_RESERVED_5x - DB low FN_RESERVED_5x - DB low ATAPI_5x_Extended ;[ ] media changed? ;!TODO - DB low DRV_LIST -;---------------------------------------------------------------------[] - -;-----------------------------[ #D..#F ] - _mNoDrive_5xTable 3, 0 -;-------------------------------------[] - -; -; --< HIGH PART >-- -;-------------------------------------------------------------[ FDD #0 ] -; - DB high FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика - DB high FDD_5x_RESET ;#51 - DB high FDD_5x_LONG_READ ;#52 - DB high FDD_5x_LONG_WRITE ;#53 - DB high FN_ABSENT_5x ;#54 - DB high FDD_5x_READ ;#55 - DB high FDD_5x_WRITE ;#56 - DB high FDD_5x_DETECT ;#57 - DB high FDD_5x_GET_PAR ;#58 - DB high FDD_5x_SET_PAR ;#59 - - DB high DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_ABSENT_5x ;#5E - Extended functions - DB high DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика -; -;---------------------------------------------------------------------[] - -;-----------------------------[ #1..#5 ] - _mNoDrive_5xTable 5, 1 -;-------------------------------------[] - -;-------------------------------------------------------[ RAM DRIVE #6 ] -; - DB high FN_RESERVED_5x - DB high FN_ABSENT_5x - DB high RMD_5x_LONG_READ - DB high RMD_5x_LONG_WRITE - DB high FN_ABSENT_5x - DB high RMD_5x_READ - DB high RMD_5x_WRITE - DB high FN_ABSENT_5x - DB high RMD_5x_GET_PAR - DB high RMD_5x_SET_PAR - - DB high DRV_VERSION - DB high FN_RESERVED_5x - DB high FN_RESERVED_5x - DB high FN_RESERVED_5x - DB high FN_ABSENT_5x - DB high DRV_LIST -;---------------------------------------------------------------------[] - -;---------------------------------[ #7 ] - _mNoDrive_5xTable 1, 1 -;-------------------------------------[] - -;-------------------------------------------------------------[ ATA #8 ] -; - DB high FN_RESERVED_5x - DB high ATA_5x_RESET - DB high ATA_5x_LONG_READ - DB high ATA_5x_LONG_WRITE - DB high ATA_5x_VERIFY - DB high ATA_5x_READ - DB high ATA_5x_WRITE - DB high ATA_5x_DETECT - DB high ATA_5x_GET_PAR - DB high ATA_5x_SET_PAR - - DB high DRV_VERSION - DB high FN_RESERVED_5x - DB high FN_RESERVED_5x - DB high FN_RESERVED_5x - DB high FN_ABSENT_5x - DB high DRV_LIST -;---------------------------------------------------------------------[] - -;-----------------------------[ #9..#B ] - _mNoDrive_5xTable 3, 1 -;-------------------------------------[] - -;-----------------------------------------------------------[ ATAPI #C ] -; - DB high FN_RESERVED_5x - DB high ATAPI_5x_RESET - DB high ATAPI_5x_LONG_READ - DB high ATAPI_5x_LONG_WRITE ; LONG_WRITE ; [ ] new - DB high FN_ABSENT_5x - DB high ATAPI_5x_READ - DB high ATAPI_5x_WRITE ; WRITE ; [ ] new - DB high ATAPI_5x_DETECT - DB high ATAPI_5x_GET_PAR - DB high ATAPI_5x_SET_PAR ; SETMED - - DB high DRV_VERSION - DB high FN_RESERVED_5x - DB high FN_RESERVED_5x - DB high FN_RESERVED_5x - DB high ATAPI_5x_Extended - DB high DRV_LIST -;---------------------------------------------------------------------[] - -;-----------------------------[ #D..#F ] - _mNoDrive_5xTable 3, 1 -;-------------------------------------[] -;======================================================================; - -;************************************ -; Вход в функцию по RST18 и RST8 -EXP_FNS_RST18: PUSH HL - LD L,C - LD H,high TAB_FNS - LD C,(HL) - INC H - LD H,(HL) - LD L,C - EX (SP),HL - RET - - ; ATA_5x_RESET - ; ATA_5x_LONG_READ - ; ATA_5x_LONG_WRITE - ; ATA_5x_VERIFY - ; ATA_5x_READ - ; ATA_5x_WRITE - ; ATA_5x_DETECT - ; ATA_5x_GET_PAR - ; ATA_5x_SET_PAR - ; DRV_VERSION - ; FN_RESERVED_5x - ; FN_RESERVED_5x - ; FN_RESERVED_5x - ; FN_RESERVED_5x - ; DRV_LIST - -FN_5x_Parser_1: LD C,#01 ; ATA_5x_RESET - JR FN_5x_Parser -FN_5x_Parser_2: LD C,#02 ; ATA_5x_LONG_READ - JR FN_5x_Parser -FN_5x_Parser_3: LD C,#03 ; ATA_5x_LONG_WRITE - JR FN_5x_Parser -FN_5x_Parser_4: LD C,#04 ; ATA_5x_VERIFY - JR FN_5x_Parser -FN_5x_Parser_6: LD C,#06 ; ATA_5x_WRITE - JR FN_5x_Parser -FN_5x_Parser_7: LD C,#07 ; ATA_5x_DETECT - JR FN_5x_Parser -FN_5x_Parser_8: LD C,#08 ; ATA_5x_GET_PAR - JR FN_5x_Parser -FN_5x_Parser_9: LD C,#09 ; ATA_5x_SET_PAR - JR FN_5x_Parser -FN_5x_Parser_E: LD C,#0E ; DRV_EXTENDED - JR FN_5x_Parser -FN_5x_Parser_5: LD C,5 ; ATA_5x_READ -FN_5x_Parser: PUSH HL - LD H,A - AND #F0 - OR C - ; тут в A номер УСТРОЙСТВА + НОМЕР ФУНКЦИИ - LD L,A - LD A,H - LD H,high TAB_5xFNS - LD C,(HL) - INC H - LD H,(HL) - LD L,C - EX (SP),HL - RET - -; Вход в функции БИОС из TR-DOS -EXP_FNS:; отключаем запись в экран спектрума - ;EX (SP),HL - ;IN A,(RGADR) - ;LD L,A - ;LD A,#C0 - ;OUT (PORT_Y),A - ;LD A,H - ;EX (SP),HL ; (SP) = port_y - POP AF - ; - CALL EXP_FNS_RST18 - CALL DOS_ON - ; возвращаем запись в экран спектрума - ;EX (SP),HL - ;PUSH AF - ;LD A,L - ;OUT (RGADR),A - ;POP AF - ;POP HL - ; возврат - JP EXP_FNS_RET - -;! ! ! ! ! ! ! ! -FN_RESERVED_5x: - LD A,BIOS.Error.InvalidSubFunction -FN_RESERVED: - SCF - RET -FN_ABSENT_5x: - LD A,BIOS.Error.NotSupported - SCF - RET -;! ! ! ! ! ! ! ! +; + MACRO _mNoDrive_5xTable numberOFdrives, byteOFword + IF byteOFword + DUP numberOFdrives + DB high FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика + + DB high FN_ABSENT_5x ;#51 + DB high FN_ABSENT_5x ;#52 + DB high FN_ABSENT_5x ;#53 + DB high FN_ABSENT_5x ;#54 + DB high FN_ABSENT_5x ;#55 + DB high FN_ABSENT_5x ;#56 + DB high FN_ABSENT_5x ;#57 + DB high FN_ABSENT_5x ;#58 + DB high FN_ABSENT_5x ;#59 + + DB high DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_ABSENT_5x ;#5E + DB high DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика + EDUP + ELSE + DUP numberOFdrives + DB low FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика + + DB low FN_ABSENT_5x ;#51 + DB low FN_ABSENT_5x ;#52 + DB low FN_ABSENT_5x ;#53 + DB low FN_ABSENT_5x ;#54 + DB low FN_ABSENT_5x ;#55 + DB low FN_ABSENT_5x ;#56 + DB low FN_ABSENT_5x ;#57 + DB low FN_ABSENT_5x ;#58 + DB low FN_ABSENT_5x ;#59 + + DB low DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5E - Дубль. На эту функцию прыгает из основного обработчика + DB low DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика + EDUP + ENDIF + ENDM +; + + _mInfoALIGN 256,0 +;=========================================================[ MAIN TABLE ] +; !FIXIT поправить в доке названия функций, часть не совпадает +TAB_FNS: + +; 00 - #3F + DUP #40 + DB low FN_RESERVED + EDUP +; + +; #4x +;-------------- + DB low FN_HDD_INIT ; #40 Инициализация винчестера + DB low FN_HDD_RECAL ; #41 Рекалибровка винчестера + DB low FN_HDD_TEST_IDE ; #42 Тест наличия интерфейса IDE + DB low FN_HDD_PREPARE ; #43 Подготовка винчестера к операции чтения/записи + DB low FN_HDD_READ_BPB ; #44 Читать BPB первого раздела + DB low FN_HDD_READ ; #45 Читать сектора с винчестера + DB low FN_HDD_WRITE ; #46 Писать сектора на винчестер + DB low FN_HDD_PART ; #47 set IDE number (Настройка партиций и master/slave)??? + DB low FN_HDD_READ_NEXT ; #48 Читать следующий сектор (ONLY FOR LBA!) + DB low FN_RESERVED ; #49 + DB low FN_RESERVED ; #4A + DB low FN_RESERVED ; #4B + DB low FN_RESERVED ; #4C + DB low FN_RESERVED ; #4D + DB low FN_RESERVED ; #4E + DB low FN_RESERVED ; #4F +;-------------- +; + +; 5x +;-------------- + DB low FN_RESERVED_5x ;#50 + + DB low FN_5x_Parser_1 ;#51 - Reset drive + DB low FN_5x_Parser_2 ;#52 - Long read + DB low FN_5x_Parser_3 ;#53 - Long write + DB low FN_5x_Parser_4 ;#54 - Verify sectors + DB low FN_5x_Parser_5 ;#55 - Read sectors + DB low FN_5x_Parser_6 ;#56 - Write sectors + DB low FN_5x_Parser_7 ;#57 - Detect + DB low FN_5x_Parser_8 ;#58 - Get Media parameters + DB low FN_5x_Parser_9 ;#59 - Set Media parameters + + DB low DRV_VERSION ;#5A - Version number + DB low FN_RESERVED_5x ;#5B + DB low FN_RESERVED_5x ;#5C + DB low FN_RESERVED_5x ;#5D + DB low FN_5x_Parser_E ;#5E + DB low DRV_LIST ;#5F +;-------------- + +; 60 - #7F + DUP #20 + DB low FN_RESERVED + EDUP + + +; 8x + DB low LP_OPEN_S ; #80 открытие окна + DB low LP_PRINT_ALL ; #81 печать символа в окно + DB low LP_PRINT_SYM ; #82 печать символа без атр + DB low LP_PRINT_ATR ; #83 печать только атрибута + DB low LP_SET_PLACE ; #84 установка позиции печати + DB low LP_PRINT_LINE ; #85 печать строки длиной B + DB low LP_PRINT_LINE2 ; #86 печать строки -//- без атрибутов + DB low LP_PRINT_LINE3 ; #87 печать строки длиной B до D + DB low LP_PRINT_LINE4 ; #88 печать строки -//- без атрибутов + DB low LP_CLS_WIN ; #89 + DB low LP_SCROLL_UD ; #8A + DB low LP_PRINT_LINE5 ; #8B + DB low LP_PRINT_LINE6 ; #8C + DB low LP_CLS_WIN2 ; #8D + DB low LP_GET_PLACE ; #8E + DB low FN_TURBO ; #8F +; 9x + DB low EMM.GetMemSize ; #90 неразрушающее определение объема ОЗУ. + DB low EMM.InitMem ; #91 инициализация распределения памяти + DB low EMM.GetMemRMD ; #92 получить блок памяти для рамдиска + DB low EMM.FreeMemRMD ; #93 освободить блок памяти рамдиска + DB low EMM.GetMemPageRMD ; #94 получить номерa страниц RAM-Disk + DB low EMM.GetMemPageNext ; #95 получить следующую страницу + DB low EMM.GetBanksPorts ; #96 получить адреса портов + DB low EMM.CheckColdInit ; #97 проверка на холодный старт и инициализации если он ;????? нужна ли как API? + DB low RAMD_CALC_PAGE ; #98 Вычисление страницы и адреса в RAM-Disk по абсолютному номеру сектора + DB low SET_DISK_REDIR ; #99 Установить на текущий драйв переназначение (старая функция для TR-DOS!) ;????? + DB low GET_DISK_REDIR ; #9A Получить тип назначения на текущий драйв (старая функция для TR-DOS!) + DB low GET_RAMD_NUM ; #9B получить номер ram disk по его block id + DB low SWAP_RAM_DRIVES ; #9C сменить набор рамдисков ZX <-> Sp2000 + DB low EMM.DivMemBlocks ; #9D разделения блока на два. + DB low EMM.MergeMemBlocks ; #9E слияние двух блоков + DB low EMM.FullInit ; #9F инициализация всей памяти, системных переменных +; Ax + DB low PIC_FN0_OpenWin ; #A0 ОТКРЫТИЕ ОКНА + DB low PIC_FN1 ; #A1 ВЫВЕСТИ ТОЧКУ + DB low PIC_FN2 ; #A2 ВЫВОД ЛИНИИ COPY + DB low PIC_FN3 ; #A3 ВЫВОД ЛИНИИ FILL + DB low PIC_SET_PAL ; #A4 ВЫВОД ПАЛИТРЫ + DB low PIC_FN5 ; #A5 УСТАНОВКА RGMOD + DB low SET_PAL_INIT ; #A6 A - page_pal, E - номер палитры, B - тип палитры + DB low PIC_FN7 ; #A7 Рисование линии одного цвета + DB low PIC_FN8 ; #A8 Рисование разноцветной линии + DB low PIC_FN9 ; #A9 нет + DB low PIC_FN10 ; #AA нет + DB low PIC_FN11 ; #AB нет + DB low PIC_FN12 ; #AC нет + DB low PIC_FN14 ; #AD нет + DB low PIC_FN14 ; #AE нет + DB low PIC_FN15 ; #AF нет +; Bx + DB low WIN_OPEN ; #B0 открытие окна по описателю + DB low WIN_CLOSE ; #B1 закрытие окна + DB low WIN_COPY ; #B2 сохранение текстового окна в памяти + DB low WIN_RESTORE ; #B3 восстановление текстового окна из памяти + DB low WIN_GET_SYM ; #B4 взять символ + DB low WIN_PUT_SYM ; #B5 положить символ + DB low WIN_SET_ZG ; #B6 загрузка знакогенератора + DB low WIN_MOVE ; #B7 переместить окно + DB low WIN_GET_ZG ; #B8 получить знакогенератор + DB low FN_RESERVED ; #B9 + DB low FN_RESERVED ; #BA + DB low FN_RESERVED ; #BB + DB low FN_RESERVED ; #BC + DB low FN_RESERVED ; #BD + DB low FN_RESERVED ; #BE + DB low FN_RESERVED ; #BF +; Cx + DB low EMM.GetMemSize ; #C0 получить данные об объеме памяти и кол-во своб. стр. + DB low EMM.InitMem ; #C1 инициализация распределения памяти + DB low EMM.GetMem ; #C2 получить блок памяти + DB low EMM.FreeMem ; #C3 освободить блок памяти + DB low EMM.GetMemPage ; #C4 получить номер страницы в блоке памяти + DB low EMM.GetMemBlkPages ; #C5 получить список страниц блока памяти + DB low EMM.GetBanksPorts ; #C6 получить адреса портов окон + DB low EMM.GetMemPageNext ; #C7 получить следующую страницу блока + DB low BLK_RD_WR ; #C8 функция чтения/записи в блок памяти + DB low BLK_TO_RAMD ; #C9 назначить блок RAM-Disk-у + DB low RAMD_CLEAR ; #CA освободить RAM-Disk + DB low RAMD_TO_DRV ; #CB назначить RAM-Disk на дисковод + DB low FDD_TO_DRV ; #CC назначить REAL_DRIVE на дисковод + DB low HDD_TO_DRV ; #CD назначить HDD на дисковод + DB low GET_RAMD_ST ; #CE получить тип назначения на RAM-Disk + DB low GET_DRV_ST ; #CF получить тип назначения на дисковод +; Dx + DB low FN_LIB ; #D0 + DB low FN_LIB ; #D1 + DB low FN_LIB ; #D2 + DB low FN_LIB ; #D3 + DB low FN_LIB ; #D4 + DB low FN_LIB ; #D5 + DB low FN_LIB ; #D6 + DB low FN_LIB ; #D7 + DB low FN_LIB ; #D8 + DB low FN_LIB ; #D9 + DB low FN_LIB ; #DA + DB low FN_LIB ; #DB + DB low FN_LIB ; #DC + DB low FN_LIB ; #DD + DB low FN_LIB ; #DE + DB low FN_LIB ; #DF +; Ex + DB low LP_PR_LINE_DIR.START ; #E0 + DB low FN_RESERVED ; #E1 + DB low FN_RESERVED ; #E2 + DB low FN_RESERVED ; #E3 + DB low FN_RESERVED ; #E4 + DB low FN_RESERVED ; #E5 + DB low FN_RESERVED ; #E6 + DB low FN_RESERVED ; #E7 + DB low FN_SEND_BYTE ; #E8 послать байт через PC_link + DB low FN_RESEIVE_B ; #E9 принять байт через PC_link + DB low FN_KBD_OUT ; #EA послать байт в клавиатуру + DB low FN_RESERVED ; #EB + DB low FN_RESERVED ; #EC + DB low FN_CRIPT ; #ED + DB low RST_CONF.AY8910 ; #EE для совместимости с софтом Sp97 + DB low FN_VERSION ; #EF +; Fx + DB low RST_CONF.SP97_1 ; #F0 для совместимости с софтом Sp97 + DB low RST_CONF.SP97_2 ; #F1 для совместимости с софтом Sp97 + DB low FN_SYNC ; #F2 установка синхронизации + DB low RST_CONF.CUSTOM ; #F3 для совместимости с софтом Sp97 + DB low DCP_CONFIG ; #F4 функция распределения портов ; [x] + DB low CMOS_TEST ; #F5 + DB low CMOS_RD ; #F6 + DB low CMOS_WR ; #F7 + DB low SET_PORTS ; #F8 + DB low READ_PORTS ; #F9 [x] 26/01/2024 + DB low FN_RESERVED ; #FA [x] 26/01/2024 не работала и не нужна, дублирует SET_PORTS + DB low GOTO_SPEC ; #FB Goto Spectrum! + DB low ZX_MEMORY_MANAGER ; #FC API для динамического выделения страниц Спектрума + DB low REINIT ; #FD + DB low FN_RESERVED ; #FE SAVE_AUTOSTART. Есть в ZX_EXP.ASM + DB low FN_VERSION ; #FF + +;****************----------------------------************************----------------- + + +; 00 - #3F + DUP #40 + DB high FN_RESERVED + EDUP +; + +;-------------- + DB high FN_HDD_INIT + DB high FN_HDD_RECAL + DB high FN_HDD_TEST_IDE + DB high FN_HDD_PREPARE + DB high FN_HDD_READ_BPB + DB high FN_HDD_READ + DB high FN_HDD_WRITE + DB high FN_HDD_PART + DB high FN_HDD_READ_NEXT + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED +;-------------- + +;-------------- + DB high FN_RESERVED_5x + + DB high FN_5x_Parser_1 + DB high FN_5x_Parser_2 + DB high FN_5x_Parser_3 + DB high FN_5x_Parser_4 + DB high FN_5x_Parser_5 + DB high FN_5x_Parser_6 + DB high FN_5x_Parser_7 + DB high FN_5x_Parser_8 + DB high FN_5x_Parser_9 + + DB high DRV_VERSION + DB high FN_RESERVED_5x + DB high FN_RESERVED_5x + DB high FN_RESERVED_5x + DB high FN_5x_Parser_E + DB high DRV_LIST +;-------------- + +; 60 - #7F + DUP #20 + DB high FN_RESERVED + EDUP + + +; 8x + DB high LP_OPEN_S + DB high LP_PRINT_ALL + DB high LP_PRINT_SYM + DB high LP_PRINT_ATR + DB high LP_SET_PLACE + DB high LP_PRINT_LINE + DB high LP_PRINT_LINE2 + DB high LP_PRINT_LINE3 + DB high LP_PRINT_LINE4 + DB high LP_CLS_WIN + DB high LP_SCROLL_UD + DB high LP_PRINT_LINE5 + DB high LP_PRINT_LINE6 + DB high LP_CLS_WIN2 + DB high LP_GET_PLACE + DB high FN_TURBO +; 9x + DB high EMM.GetMemSize + DB high EMM.InitMem + DB high EMM.GetMemRMD + DB high EMM.FreeMemRMD + DB high EMM.GetMemPageRMD + DB high EMM.GetMemPageNext + DB high EMM.GetBanksPorts + DB high EMM.CheckColdInit + DB high RAMD_CALC_PAGE + DB high SET_DISK_REDIR + DB high GET_DISK_REDIR + DB high GET_RAMD_NUM + DB high SWAP_RAM_DRIVES + DB high EMM.DivMemBlocks + DB high EMM.MergeMemBlocks + DB high EMM.FullInit +; Ax + DB high PIC_FN0_OpenWin + DB high PIC_FN1 + DB high PIC_FN2 + DB high PIC_FN3 + DB high PIC_SET_PAL + DB high PIC_FN5 + DB high SET_PAL_INIT + DB high PIC_FN7 + DB high PIC_FN8 + DB high PIC_FN9 + DB high PIC_FN10 + DB high PIC_FN11 + DB high PIC_FN12 + DB high PIC_FN14 + DB high PIC_FN14 + DB high PIC_FN15 +; Bx + DB high WIN_OPEN + DB high WIN_CLOSE + DB high WIN_COPY + DB high WIN_RESTORE + DB high WIN_GET_SYM + DB high WIN_PUT_SYM + DB high WIN_SET_ZG + DB high WIN_MOVE + DB high WIN_GET_ZG + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED +; Cx + DB high EMM.GetMemSize + DB high EMM.InitMem + DB high EMM.GetMem + DB high EMM.FreeMem + DB high EMM.GetMemPage + DB high EMM.GetMemBlkPages + DB high EMM.GetBanksPorts + DB high EMM.GetMemPageNext + DB high BLK_RD_WR + DB high BLK_TO_RAMD + DB high RAMD_CLEAR + DB high RAMD_TO_DRV + DB high FDD_TO_DRV + DB high HDD_TO_DRV + DB high GET_RAMD_ST + DB high GET_DRV_ST +; Dx + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB + DB high FN_LIB +; Ex + DB high LP_PR_LINE_DIR.START + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_SEND_BYTE + DB high FN_RESEIVE_B + DB high FN_KBD_OUT + DB high FN_RESERVED + DB high FN_RESERVED + DB high FN_CRIPT + DB high RST_CONF.AY8910 + DB high FN_VERSION +; Fx + DB high RST_CONF.SP97_1 + DB high RST_CONF.SP97_2 + DB high FN_SYNC + DB high RST_CONF.CUSTOM + DB high DCP_CONFIG + DB high CMOS_TEST + DB high CMOS_RD + DB high CMOS_WR + DB high SET_PORTS + DB high READ_PORTS + DB high FN_RESERVED + DB high GOTO_SPEC + DB high ZX_MEMORY_MANAGER + DB high REINIT + DB high FN_RESERVED + DB high FN_VERSION +//////////////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////////// +; +; ,----, ,----,. +; ,/ .`| ,' ,' | +; ,` .' : ,--, ,' .' | +; ; ; / ,---, ,--.'| ,----.' .' +; .'___,/ ,' ,---.'| | | : | | .' +; | : | | | : : : ' : : |--, ,--, ,--, +; ; |.'; ; ,--.--. : : : | ' | ,---. : | ;.' \|'. \/ .`| +; `----' | | / \ : |,-.' | | / \ | | |' \/ / ; +; ' : ;.--. .-. || : ' || | : / / | `----'.'\ ; \ \.' / +; | | ' \__\/: . .| | / :' : |__ . ' / | __ \ . | \ ; ; +; ' : | ," .--.; |' : |: || | '.'|' ; /| / /\/ / : / \ \ \ +; ; |.' / / ,. || | '/ :; : ;' | / | / ,,/ ',- ./__; ; \ +; '---' ; : .' \ : || , / | : | \ ''\ ;| :/\ \ ; +; | , .-./ \ / ---`-' \ \ / \ \ .' `---' `--` +; `--`---' `-'----' `----' `--`-,-' +//////////////////////////////////////////////////////////////////////////////////////// + + + _mInfoALIGN 256,0 +;===========================================================[ 5x TABLE ] +; Drives Numbers: +; 0 FDD +; 1..5 reserved +; 6 RAM-DRV +; 7 reserved +; 8 HDD +; 9..B reserved +; C CDROM +; D..F reserved +TAB_5xFNS: +; --< LOW PART >-- +;-------------------------------------------------------------[ FDD #0 ] +; + DB low FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика + DB low FDD_5x_RESET ;#51 + DB low FDD_5x_LONG_READ ;#52 + DB low FDD_5x_LONG_WRITE ;#53 + DB low FN_ABSENT_5x ;#54 + DB low FDD_5x_READ ;#55 + DB low FDD_5x_WRITE ;#56 + DB low FDD_5x_DETECT ;#57 + DB low FDD_5x_GET_PAR ;#58 + DB low FDD_5x_SET_PAR ;#59 + + DB low DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_ABSENT_5x ;#5E - Дубль. На эту функцию прыгает из основного обработчика + DB low DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика +; +;---------------------------------------------------------------------[] + +;-----------------------------[ #1..#5 ] + _mNoDrive_5xTable 5, 0 +;-------------------------------------[] + +;-------------------------------------------------------[ RAM DRIVE #6 ] +; + DB low FN_RESERVED_5x + DB low FN_ABSENT_5x + DB low RMD_5x_LONG_READ + DB low RMD_5x_LONG_WRITE + DB low FN_ABSENT_5x + DB low RMD_5x_READ + DB low RMD_5x_WRITE + DB low FN_ABSENT_5x + DB low RMD_5x_GET_PAR + DB low RMD_5x_SET_PAR + + DB low DRV_VERSION + DB low FN_RESERVED_5x + DB low FN_RESERVED_5x + DB low FN_RESERVED_5x + DB low FN_ABSENT_5x + DB low DRV_LIST +;---------------------------------------------------------------------[] + +;---------------------------------[ #7 ] + _mNoDrive_5xTable 1, 0 +;-------------------------------------[] + +;-------------------------------------------------------------[ ATA #8 ] +; + DB low FN_RESERVED_5x + DB low ATA_5x_RESET + DB low ATA_5x_LONG_READ + DB low ATA_5x_LONG_WRITE + DB low ATA_5x_VERIFY + DB low ATA_5x_READ + DB low ATA_5x_WRITE + DB low ATA_5x_DETECT + DB low ATA_5x_GET_PAR + DB low ATA_5x_SET_PAR + + DB low DRV_VERSION + DB low FN_RESERVED_5x + DB low FN_RESERVED_5x + DB low FN_RESERVED_5x + DB low FN_ABSENT_5x + DB low DRV_LIST +;---------------------------------------------------------------------[] + +;-----------------------------[ #9..#B ] + _mNoDrive_5xTable 3, 0 +;-------------------------------------[] + +;-----------------------------------------------------------[ ATAPI #C ] +; + DB low FN_RESERVED_5x + DB low ATAPI_5x_RESET + DB low ATAPI_5x_LONG_READ + DB low ATAPI_5x_LONG_WRITE ; [ ] new + DB low FN_ABSENT_5x ; VERIFY + DB low ATAPI_5x_READ + DB low ATAPI_5x_WRITE ; [ ] new + DB low ATAPI_5x_DETECT + DB low ATAPI_5x_GET_PAR ; [ ] new + DB low ATAPI_5x_SET_PAR ; SETMED + + DB low DRV_VERSION + DB low FN_RESERVED_5x + DB low FN_RESERVED_5x + DB low FN_RESERVED_5x + DB low ATAPI_5x_Extended ;[ ] media changed? ;!TODO + DB low DRV_LIST +;---------------------------------------------------------------------[] + +;-----------------------------[ #D..#F ] + _mNoDrive_5xTable 3, 0 +;-------------------------------------[] + +; +; --< HIGH PART >-- +;-------------------------------------------------------------[ FDD #0 ] +; + DB high FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика + DB high FDD_5x_RESET ;#51 + DB high FDD_5x_LONG_READ ;#52 + DB high FDD_5x_LONG_WRITE ;#53 + DB high FN_ABSENT_5x ;#54 + DB high FDD_5x_READ ;#55 + DB high FDD_5x_WRITE ;#56 + DB high FDD_5x_DETECT ;#57 + DB high FDD_5x_GET_PAR ;#58 + DB high FDD_5x_SET_PAR ;#59 + + DB high DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_ABSENT_5x ;#5E - Extended functions + DB high DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика +; +;---------------------------------------------------------------------[] + +;-----------------------------[ #1..#5 ] + _mNoDrive_5xTable 5, 1 +;-------------------------------------[] + +;-------------------------------------------------------[ RAM DRIVE #6 ] +; + DB high FN_RESERVED_5x + DB high FN_ABSENT_5x + DB high RMD_5x_LONG_READ + DB high RMD_5x_LONG_WRITE + DB high FN_ABSENT_5x + DB high RMD_5x_READ + DB high RMD_5x_WRITE + DB high FN_ABSENT_5x + DB high RMD_5x_GET_PAR + DB high RMD_5x_SET_PAR + + DB high DRV_VERSION + DB high FN_RESERVED_5x + DB high FN_RESERVED_5x + DB high FN_RESERVED_5x + DB high FN_ABSENT_5x + DB high DRV_LIST +;---------------------------------------------------------------------[] + +;---------------------------------[ #7 ] + _mNoDrive_5xTable 1, 1 +;-------------------------------------[] + +;-------------------------------------------------------------[ ATA #8 ] +; + DB high FN_RESERVED_5x + DB high ATA_5x_RESET + DB high ATA_5x_LONG_READ + DB high ATA_5x_LONG_WRITE + DB high ATA_5x_VERIFY + DB high ATA_5x_READ + DB high ATA_5x_WRITE + DB high ATA_5x_DETECT + DB high ATA_5x_GET_PAR + DB high ATA_5x_SET_PAR + + DB high DRV_VERSION + DB high FN_RESERVED_5x + DB high FN_RESERVED_5x + DB high FN_RESERVED_5x + DB high FN_ABSENT_5x + DB high DRV_LIST +;---------------------------------------------------------------------[] + +;-----------------------------[ #9..#B ] + _mNoDrive_5xTable 3, 1 +;-------------------------------------[] + +;-----------------------------------------------------------[ ATAPI #C ] +; + DB high FN_RESERVED_5x + DB high ATAPI_5x_RESET + DB high ATAPI_5x_LONG_READ + DB high ATAPI_5x_LONG_WRITE ; LONG_WRITE ; [ ] new + DB high FN_ABSENT_5x + DB high ATAPI_5x_READ + DB high ATAPI_5x_WRITE ; WRITE ; [ ] new + DB high ATAPI_5x_DETECT + DB high ATAPI_5x_GET_PAR + DB high ATAPI_5x_SET_PAR ; SETMED + + DB high DRV_VERSION + DB high FN_RESERVED_5x + DB high FN_RESERVED_5x + DB high FN_RESERVED_5x + DB high ATAPI_5x_Extended + DB high DRV_LIST +;---------------------------------------------------------------------[] + +;-----------------------------[ #D..#F ] + _mNoDrive_5xTable 3, 1 +;-------------------------------------[] +;======================================================================; + +;************************************ +; Вход в функцию по RST18 и RST8 +EXP_FNS_RST18: PUSH HL + LD L,C + LD H,high TAB_FNS + LD C,(HL) + INC H + LD H,(HL) + LD L,C + EX (SP),HL + RET + + ; ATA_5x_RESET + ; ATA_5x_LONG_READ + ; ATA_5x_LONG_WRITE + ; ATA_5x_VERIFY + ; ATA_5x_READ + ; ATA_5x_WRITE + ; ATA_5x_DETECT + ; ATA_5x_GET_PAR + ; ATA_5x_SET_PAR + ; DRV_VERSION + ; FN_RESERVED_5x + ; FN_RESERVED_5x + ; FN_RESERVED_5x + ; FN_RESERVED_5x + ; DRV_LIST + +FN_5x_Parser_1: LD C,#01 ; ATA_5x_RESET + JR FN_5x_Parser +FN_5x_Parser_2: LD C,#02 ; ATA_5x_LONG_READ + JR FN_5x_Parser +FN_5x_Parser_3: LD C,#03 ; ATA_5x_LONG_WRITE + JR FN_5x_Parser +FN_5x_Parser_4: LD C,#04 ; ATA_5x_VERIFY + JR FN_5x_Parser +FN_5x_Parser_6: LD C,#06 ; ATA_5x_WRITE + JR FN_5x_Parser +FN_5x_Parser_7: LD C,#07 ; ATA_5x_DETECT + JR FN_5x_Parser +FN_5x_Parser_8: LD C,#08 ; ATA_5x_GET_PAR + JR FN_5x_Parser +FN_5x_Parser_9: LD C,#09 ; ATA_5x_SET_PAR + JR FN_5x_Parser +FN_5x_Parser_E: LD C,#0E ; DRV_EXTENDED + JR FN_5x_Parser +FN_5x_Parser_5: LD C,5 ; ATA_5x_READ +FN_5x_Parser: PUSH HL + LD H,A + AND #F0 + OR C + ; тут в A номер УСТРОЙСТВА + НОМЕР ФУНКЦИИ + LD L,A + LD A,H + LD H,high TAB_5xFNS + LD C,(HL) + INC H + LD H,(HL) + LD L,C + EX (SP),HL + RET + +; Вход в функции БИОС из TR-DOS +EXP_FNS:; отключаем запись в экран спектрума + ;EX (SP),HL + ;IN A,(RGADR) + ;LD L,A + ;LD A,#C0 + ;OUT (PORT_Y),A + ;LD A,H + ;EX (SP),HL ; (SP) = port_y + POP AF + ; + CALL EXP_FNS_RST18 + CALL DOS_ON + ; возвращаем запись в экран спектрума + ;EX (SP),HL + ;PUSH AF + ;LD A,L + ;OUT (RGADR),A + ;POP AF + ;POP HL + ; возврат + JP EXP_FNS_RET + +;! ! ! ! ! ! ! ! +FN_RESERVED_5x: + LD A,BIOS.Error.InvalidSubFunction +FN_RESERVED: + SCF + RET +FN_ABSENT_5x: + LD A,BIOS.Error.NotSupported + SCF + RET +;! ! ! ! ! ! ! ! ; \ No newline at end of file diff --git a/src/bios/exp/DCP.ASM b/bios/exp/DCP.ASM similarity index 100% rename from src/bios/exp/DCP.ASM rename to bios/exp/DCP.ASM diff --git a/src/bios/exp/EXP.asm b/bios/exp/EXP.asm similarity index 95% rename from src/bios/exp/EXP.asm rename to bios/exp/EXP.asm index 8888510..ae20183 100644 --- a/src/bios/exp/EXP.asm +++ b/bios/exp/EXP.asm @@ -1,1640 +1,1640 @@ - -; -;************************************************************* -; -; EXPANSION VER 3.00 (C) Peters Plus Ltd. -; EXPANSION VER 3.1 (C) Sprinter Team -; -;************************************************************* - - DISPLAY "\r\n/=====================[EXP part]=====================\\" - -;*************************************** -;*********** BEGIN EXPANSION *********** -;*************************************** -; Вход по RESET -EXP_START: - JP GLOBAL_RESET - -;--------------------------------------- -;ROM_NUMBER: -;.part1: DW MotherBoardID -;.part2: DB 0 -BOARD_INFO: -.number: DW MotherBoardID -.type: DB MotherBoardType -;--------------------------------------- - -;--------------------------------------- -; BoardID: -; .start: WORD BoardID_start ; BoardID_start -; .end: WORD BoardID_end ; BoardID_end -;--------------------------------------- - -;======================================= - BLOCK 8-$,0 ; first on/off EXPANSION -;программа для вызова BIOS через RST8 из RAM0 -EXP_FNS_2_RET: - PUSH AF - LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A - POP AF - JR RST_18_1 -;======================================= - -;======================================= - BLOCK #10-$,0 -RST_10: -; JR RST10 -;======================================= - -;======================================= - BLOCK #18-$,0 -; RST18h - MAIN BIOS functions - JP EXP_FNS_RST18 -RST_18_1: - CALL EXP_FNS_RST18 -.exit: JR EXP_FNS_2_RET - -;======================================= - -;======================================= - BLOCK #20-$,0 -RST_20: -;======================================= - -;======================================= - BLOCK #28-$,0 -RST_28: -;======================================= - -;======================================= - BLOCK #30-$,0 -RST_30: -;======================================= - -;======================================= - BLOCK #38-$,0 -; INTERUPT Point -RST38: IF TEST_INT - ;INT: - PUSH BC - PUSH AF - - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - - LD A,(SYS_PAGE.INT_ID) - CP #AA - JR Z,YESINT - OUT (C),B - JP NOINT -YESINT: PUSH HL - LD HL,(SYS_PAGE.INT_ADRESS) - LD A,H - OR L - LD A,(SYS_PAGE.INT_PAGE) - OUT (C),B - PUSH DE - CALL NZ,EXTINT - POP DE - POP HL -NOINT: POP AF - POP BC - EI - RETI - ELSE - -; PUSH AF -; 1: DEC A -; JR NZ,1B -; POP AF - EI - RETI - ENDIF -;RST10: -; CALL_48 10h -; RET -;======================================= - - -;======================================= - IFN TEST_INT - _mInfoALIGN #10,0 -; any adress < #C0 with mask %xxxx0000 -; таблица для Sprinter POST-Tester-a -TABLE_X: -.v0: DB %00101000 ; "0" a -.v1: DB %10111101 ; "1" ___ -.v2: DB %00110010 ; "2" f | g | b -.v3: DB %00110100 ; "3" |___| -.v4: DB %10100101 ; "4" e | | c -.v5: DB %01100100 ; "5" |___|. -.v6: DB %01100000 ; "6" d -.v7: DB %00111101 ; "7" -.v8: DB %00100000 ; "8" a - 7 -.v9: DB %00100100 ; "9" b - 6 -.vA: DB %00100001 ; "A" . - 5 -.vB: DB %11100000 ; "B" f - 4 -.vC: DB %01101010 ; "C" g - 3 -.vD: DB %10110000 ; "D" e - 2 -.vE: DB %01100010 ; "E" c - 1 -.vF: DB %01100011 ; "F" d - 0 - ENDIF -;======================================= -; - -; -;======================================= - IFN TEST_INT -RESTARTS EQU #FFE0 -GLOBAL_RESET: - DI - IM 1 - LD HL,RESTARTS - LD DE,RESTARTS_PROG - LD B,RESTARTS_PROG.Size -.compare: - LD A,(DE) - CP (HL) - JR NZ,NO_RESTART - INC HL - INC DE - DJNZ .compare - JP RESTARTS - ENDIF -;======================================= - _mInfoBLOCK #66-$,0 -NMI_Point: - ; резерв 3 байта для команды JP - ;NOP - ;NOP - ;NOP - RETN -;======================================= - -;SET_BIOS_TO_RAM: ; программа работает на адресе 0C000h -; -; LD SP,#C0C0 -; LD A,#E0 -; LD C,PAGE3 -; IN B,(C) -; CALL SET_ROM_PAGES+#C000 -; JP NO_SUMX_EQ - -;********************************** - -;BEEP: -; PUSH HL -; PUSH DE -; PUSH BC -; PUSH AF -; PUSH IX -; -; LD HL,BEEP_RET -; PUSH HL -; LD HL,SW_ROM -; PUSH HL -; LD HL,03B5h -; PUSH HL -; LD HL,200 -; LD D,H -; LD E,5 -; JP SW_ROM -;BEEP_RET: -; -; POP IX -; POP AF -; POP BC -; POP DE -; POP HL -; RET -;======================================= -; BLOCK MEM_MAP.ID_Version-$,0 ;#C0-$,0 - -ID_Version: DW BIOS_ver_hex -ID_SPRINTER: DB 'Firmware v' -.BIOS_ver: DB BIOS_ver_string - IF BETA_BUILD > 0 - DB " ", BETA_str_ver - ELSE - IF RELEASEhotFIX > 0 - DB ReleaseHotFix - ENDIF - ENDIF - DB 0 -.Record1_Size EQU $-ID_SPRINTER - ; запись 2 - DB 'Sprinter',0 - ; запись 3 ; [x] 24/02/2024 -.bitstream_ver: DB bitstream_ver_string,0 - DB 0 - ; -.Size EQU $-ID_SPRINTER -.Records_Num EQU 3 - -; Check for max length of string - ASSERT ID_SPRINTER.Record1_Size < SYS_PAGE.ID_FLAG.Size, 'ERROR! ID String is to long!' -;======================================= - - -; BLOCK #FC-$,0 -BoardID: -.start: WORD BoardID_start ; BoardID_start -.end: WORD BoardID_end ; BoardID_end -;#######################################################################; - - -;#######################################################################; -;-----------------------------------------------------------------------; -; ROM-Disk pages ; [x] активирован ROM-DISK -ROM_DISK.Pages.Number: - BYTE ROM_DISK.Pages.Size ; число страниц -; у страниц выставлен bit4 для корректной подстановки -;(подробнее в sp2000.inc - Порт управления страницами ПЗУ) -ROM_DISK.Pages: ; страницы ROM-Disk - ABYTE #10 #05,#06,#07,#09,#0A,#0B ; 98304 bytes -.Size EQU $-ROM_DISK.Pages -;-----------------------------------------------------------------------; -;#######################################################################; - - - -;======================================= - IF TEST_INT - _mInfoALIGN #10,0 -; any adress < #C0 with mask %xxxx0000 -; таблица для Sprinter POST-Tester-a -TABLE_X: -.v0: DB %00101000 ; "0" a -.v1: DB %10111101 ; "1" ___ -.v2: DB %00110010 ; "2" f | g | b -.v3: DB %00110100 ; "3" |___| -.v4: DB %10100101 ; "4" e | | c -.v5: DB %01100100 ; "5" |___|. -.v6: DB %01100000 ; "6" d -.v7: DB %00111101 ; "7" -.v8: DB %00100000 ; "8" a - 7 -.v9: DB %00100100 ; "9" b - 6 -.vA: DB %00100001 ; "A" . - 5 -.vB: DB %11100000 ; "B" f - 4 -.vC: DB %01101010 ; "C" g - 3 -.vD: DB %10110000 ; "D" e - 2 -.vE: DB %01100010 ; "E" c - 1 -.vF: DB %01100011 ; "F" d - 0 - ENDIF -;======================================= -; - -; -;======================================= - IF TEST_INT -RESTARTS EQU #FFE0 -; полный перехват ресета сразу после проливки конфы и CAD. -; закидывается в карту портов, поэтому использовать надо хитро. -GLOBAL_RESET: - DI - IM 1 - LD HL,RESTARTS - LD DE,RESTARTS_PROG - LD B,RESTARTS_PROG.Size -.compare: - LD A,(DE) - CP (HL) - JR NZ,NO_RESTART - INC HL - INC DE - DJNZ .compare - JP RESTARTS - ENDIF -;======================================= -; - -; -;-----[перехват RESET не состоялся]----- -NO_RESTART: -; стек ещё не используем!!! - LD SP,IX ; сохранить значение переданное загрузчиком конфы (если старт после ресета) - ; инициализация внутренних портов Z84C15 для POST-Tester-а - LD A,5 ; COM port for Printer OUT - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,#62 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; - LD A,#CF ; BITS I/O - OUT (Z84.PIO.Port_A.Command),A - XOR A - OUT (Z84.PIO.Port_A.Command),A - ;LD A,%11101010 ; зажечь L - OUT (Z84.PIO.Port_A.Data),A ; PRINTER - PORT - all zeros - ; -инициализация системных портов Z84C15- - LD BC,#FF*256 + Z84.SYS.Control - XOR A ; Z84.REG.WaitState_Ctrl - OUT (C),A ; Z84.SYS.Control - INC C ; Z84.REG.WaitState_MemBound - OUT (C),A ; Z84.SYS.Data ; set 0 Waits - ; - DEC C - LD A,3 ; Z84.REG.Misc_Ctrl - OUT (C),A ; Z84.SYS.Control - INC C - ; no boundary set! - ;XOR A ; disable CS0, disable CS1 - LD A,1 ; enable CS0, disable CS1 - OUT (C),A ; Z84.SYS.Data - JP POST_TEST.START -;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--== - IF TEST_INT -;----------------[int]------------------ -EXTINT: OR A - RET Z - - BIT 7,H - JR Z,.L2 - LD C,SLOT2 - BIT 6,H - JR Z,.L1 - LD C,SLOT3 - -.L1: IN B,(C) - PUSH BC - OUT (C),A - CALL .JPHL - POP BC - OUT (C),B - RET - ; проверка на нулевой слот -.L2: BIT 6,H - LD C,SLOT1 - JR NZ,.L1 ; продолжаем если ненулевой слот - - PUSH HL - - LD HL,-.stackDepth - .switchProcedure.size + .patch-2 - ADD HL,SP - PUSH HL - - LD HL,-.stackDepth - .switchProcedure.size ; memory stack use! - ADD HL,SP ; stack - PUSH HL ; адрес программы .readProcedure - - LD DE,.switchProcedure ; перенести программу на стек - EX DE,HL - LD BC,.switchProcedure.size - LDIR - RET - -; процедура, переносимая на стек для вызова прерывания пользователя из SLOT0 -; осторожнее с PUSH, если надо много, то увеличивай .stackDepth -.switchProcedure: - DEC DE - POP HL - LD (HL),E - INC HL - LD (HL),D - - LD C,SLOT0 - IN B,(C) - POP HL - PUSH BC - OUT (C),A - - XOR A - OUT (SYS_PORT.RAM),A - -.patch EQU $+1-.switchProcedure - CALL .JPHL - - DI - - XOR A - OUT (SYS_PORT.ROM),A - - POP BC - OUT (C),B - - RET -.JPHL: JP (HL) -.stackDepth EQU 64 ; расстояние от конца процедуры до вершины стека. -.switchProcedure.size EQU $-.switchProcedure - ENDIF -;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--== - - -; ==== POST PROCs ================= -; LPT 0 - start -; post 1. TEST RAM BUS -; IF ERROR -> ERROR RAM BUS - CODE 'X'X'X'X... - высветить номер ошибочного бита -; LPT 1 - post 1 OK -; post 2 TEST ADRESS BUS -; IF ERROR -> ошибка адреса CODE 'XXXX - вывести старший байт с запятой, пауза, вывести младший без запятой -; LPT 2 - post 2 OK -; post 3 init DCP -; no errors -; LPT 3 - post 3 OK -; post 4 TEST RAM PAGES запись в порт страницы, чтение записанного -; IF ERROR -> ошибка переключения Port-а CODE 'XX - вывод байта записанного в порт -; LPT 4 - post 4 OK -; post 5 проверка чистоты шины данных Z84C15 -; IF ERROR -> ERROR CODE '_'XX - в биосе на ошибке не зависает, хз почему, может на случай конфы с грязной шиной спектрума -; LPT 5 - post 5 OK -; LPT 4 - post 5 error - старый биос -; LPT F - post 5 error - биос 05/04/2025))) -; - MODULE POST_TEST -START: -; ********************************* -; ===== Point 0 ======= -; ********************************* - - LD A,(TABLE_X.v0) ; высветить "0" ;rdlow-ok - OUT (Z84.PIO.Port_A.Data),A - -; ==== TEST RAM BUS ======== - -POST_1_RAM_BUS: - LD BC,0 - LD HL,#C000 - LD DE,#0055 -.loop: LD (HL),E - INC L - LD (HL),D - DEC L - LD A,(HL) - XOR E - OR C - LD C,A - INC L - LD A,(HL) - XOR D - OR B - LD B,A - DEC L - - DEC E - INC D - JR NZ,.loop - LD A,E - CPL - LD E,A - INC L - INC L - BIT 4,L - JR Z,.loop - - LD A,B - OR C - JR Z,POST_1_OK ; no errors - -; ERROR RAM BUS - CODE 'X'X'X'X... -.error: - LD HL,TABLE_X -.ERB_2: - BIT 0,C - JR Z,.ERB_1 - - ; высветить номер ошибочного бита - LD A,(HL) - AND %1101'1111 ; с запятыми - OUT (Z84.PIO.Port_A.Data),A - - ; пауза - LD DE,0 -.pause: - DEC DE - LD A,D - OR E - JR NZ,.pause - -; RRC BC -.ERB_1: - LD A,C - RRA - RR B - RR C - - ; бесконечный цикл - INC L - LD A,L - AND +(TABLE_X or #0F) ;%1010'1111 - LD L,A - JR .ERB_2 - -; ************************************************ -; ===== Point 1 ============== -; ************************************************ -POST_1_OK: - - LD A,(TABLE_X.v1) ; высветить "1" ;rdlow-ok - OUT (Z84.PIO.Port_A.Data),A - -; ===== TEST ADRESS BUS ====== -POST_2_ADRESS_BUS: - LD HL,#C000 - LD DE,#0000 -.fill_mem: ; заполнить память адресами - LD (HL),E - INC L - LD (HL),D - INC HL - INC DE - INC DE - BIT 7,H - JR NZ,.fill_mem - - DEC HL - DEC DE - DEC DE -.check_mem: ; проверить совпадение - LD A,(HL) - CP D - JR NZ,.error - DEC HL - LD A,(HL) - CP E - JR NZ,.error - DEC HL - DEC DE - DEC DE - LD A,H - CP #BF - JR NZ,.check_mem - JR POST_2_OK - -; ошибка адреса CODE: 'XXXX -.error: -.TSAB_4: - LD C,D - LD B,%1101'1111 - LD IX,.TSAB_3 - JR OUT_C_BYTE ; вывести старший байт с запятой -.TSAB_3: - LD C,E - LD B,%1111'1111 - LD IX,.TSAB_4 - JR OUT_C_BYTE ; вывести младший без запятой - -; ===== OUT BYTE PROGRAM ======= - -OUT_C_BYTE: - LD A,C - - RRCA - RRCA - RRCA - RRCA - - AND #0F - OR TABLE_X - LD L,A - LD H,0 - LD A,(HL) - AND B - OUT (Z84.PIO.Port_A.Data),A - - EXX - LD DE,0 -.LOOP_WTT2: - DEC DE - LD A,D - OR E - JR NZ,.LOOP_WTT2 - LD A,#FF - OUT (Z84.PIO.Port_A.Data),A -.LOOP_WTT21: - DEC DE - LD A,D - OR E - JR NZ,.LOOP_WTT21 - EXX - - LD A,C - AND #0F - OR TABLE_X - LD L,A - LD A,(HL) - OUT (Z84.PIO.Port_A.Data),A - - EXX - LD DE,0 -.LOOP_WTT3: - DEC DE - LD A,D - OR E - JR NZ,.LOOP_WTT3 - LD A,#FF - OUT (Z84.PIO.Port_A.Data),A -.LOOP_WTT31: - DEC DE - LD A,D - OR E - JR NZ,.LOOP_WTT31 - EXX - - JP (IX) - -; ************************************************ -; ===== Point 2 ========= -; ************************************************ - -POST_2_OK: - LD A,(TABLE_X.v2) ;rdlow-ok - OUT (Z84.PIO.Port_A.Data),A ; вывести "2" - -; ===== INIT DCP ======== -POST_3_INIT_DCP: - ;LD HL,POST_3_OK ; INIT PORTS - JP DCP_INIT ; процедура инициализации с возвратом на POST_3_OK -; ошибок нет - -; *********************************** -; ===== Point 3 ========= -; *********************************** - -POST_3_OK: - LD A,(TABLE_X.v3) ; вывести "3" ;rdlow-ok - OUT (Z84.PIO.Port_A.Data),A - -; ===== TEST RAM PAGES == - IN A,(SLOT3) - EX AF,AF' ; запомнить -POST_4_PAGES: - LD B,0 -.loop: LD A,#FF - LD I,A - LD A,B - OUT (SLOT3),A - XOR A - LD I,A - IN A,(SLOT3) - CP B - JR NZ,.error ; если ошибка переключения Port-а - DJNZ .loop - - EX AF,AF' - OUT (SLOT3),A ; восстановить - JR POST_4_OK - -; *********************************** -; ERROR Port CODE 'XX -.error: LD C,B - LD IX,.error_out_ret -.error_out_ret: - LD B,%1101'1111 - JP OUT_C_BYTE - -; *********************************** -; ===== Point 4 ========= -; *********************************** - -POST_4_OK: - LD A,(TABLE_X.v4) ;rdlow-ok - OUT (Z84.PIO.Port_A.Data),A ; высветить "4" - -;= проверка чистоты шины данных Z84C15 = -POST_5_DATA_BUS: - LD B,0 -.loop: IN A,(0) - CP #FF - IF ERROR_POST_5 - JR NZ,.error ;!!!!! посмотреть - ELSE - JR NZ,POST_5_ERROR - ENDIF - DJNZ .loop - LD A,(TABLE_X.v5) ;rdlow-ok - JR POST_5_OK - ; - ; - IF ERROR_POST_5 -; ERROR CODE '_'XX -.error: - LD C,A -.erb1: - LD IX,.erbr1 - LD B,%1101'1111 - JP OUT_C_BYTE -.erbr1: - LD A,%1101'1111 - OUT (Z84.PIO.Port_A.Data),A - - LD DE,0 -.LOOP_WTT4: - DEC DE - LD A,D - OR E - JR NZ,.LOOP_WTT4 - JR .erb1 - ENDIF - -; ********************************** -; ===== Point 5 ========= -; ********************************** - IFN ERROR_POST_5 -POST_5_ERROR: - LD A,(TABLE_X.vF) ;rdlow-ok - ENDIF - -POST_5_OK: - OUT (Z84.PIO.Port_A.Data),A ; вывести результат теста -; ********************************** -; POST завершен - ENDMODULE -; ********************************** - -;-----------------------------------------------------------------------; -; первая инициализация страниц: - XOR A - OUT (RGADR),A - OUT (RGMOD),A - OUT (SLOT0),A - ;free zx pages! - ;LD A,ZX_PAGE.SLOT1 - ;OUT (SLOT1),A - ;LD A,ZX_PAGE.SLOT2 - ;OUT (SLOT2),A - OUT (SLOT2),A ; ZERO_PAGE - DEC A ; SHARED_PAGE - OUT (SLOT1),A - ; - LD A,SYS_PAGE - OUT (SLOT3),A -;-----------------------------------------------------------------------; - MODULE SET_CONFIG_ID -;-------------[Save IX:IY]-------------- -; Don't use IY before this point if it`s normal booting!!! - LD IX,0 - XOR A - ADD IX,SP ; восстановить значение переданное загрузчиком конфы (если старт после ресета) -; В этом месте у нас IX:IY из Loader.asm -; Дотащили до сюда метку от лоадера - ;[x] 31/12/2023 подстраховка от недоутечки памяти - ; IY - number from loader - LD D,YH - LD E,YL - EX DE,HL - LD DE,SP2000_Loader_Flag - SBC HL,DE - JR NZ,.no_conf_reload - ; IX - number from loader - LD D,XH - LD E,XL - EX DE,HL - LD DE,ACEX.Config_ID.Sp2000 - SBC HL,DE - ; A = 0 - JR NZ,.no_conf_reload - LD A,#80 -.no_conf_reload: - LD R,A ; reg R bit7 - признак запуска с отработкой лоадера конфы - ; - ; на всякий случай - LD HL,ACEX.Config_ID.Sp2000 - LD (SYS_PAGE.CONFIG_BYTE),HL ; сохранить номер прошивки - ; - LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - LD (SYS_PAGE.CONFIG_DE),A - ; - ENDMODULE -;-----------------------------------------------------------------------; -; Don't use stack (SP) before this point if it`s normal booting!!! - LD SP,ROM_MAP.EXP.STACK ; Начало использования стека!!! - PUSH HL ; сохранить номер прошивки - - CALL PORTS_INIT ; инициализировать порты - XOR A - OUT (BorderColor),A - CALL EMM.CheckColdInit ; инициализация памяти - POP HL ; конфигурация -; JR Reset_Handler.start -;-----------------------------------------------------------------------; - MODULE Reset_Handler -start: DI -;----[перехват soft reset #EE port]----- -Check_EE_Port: LD A,ACEX.RET_PORT - LD B,0 - ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 - ;LD C,BIOS.SET_PORTS - ;CALL @ToBIOS_3D13 ; переустановить внутр. порт #EE - CALL SET_PORTS - ; - ; [x] 20/10/2024 игнор перехватчика по клавише 0 - LD A,high ZXKeys.Line_4 - IN A,(ZXKeys) - RRCA - JR NC,No_Reset_handlers - ; - LD A,B - AND A - JR Z,Check_Spec_Page - ; - OUT (SLOT3),A ; Set restart page -.After_Hard_Rst: - LD HL,(Spec_Page.RET_addr) ; prog address - LD A,(Spec_Page.page_0) ; PAGE0 - OUT (SLOT0),A - LD A,(Spec_Page.page_1) ; PAGE1 - OUT (SLOT1),A - LD A,(Spec_Page.page_2) ; PAGE2 - OUT (SLOT2),A - LD A,(Spec_Page.Reload_Version) - CP #FF - JR Z,.JPHL ; olg logic - ; new logic -.ver_2: LD SP,(Spec_Page.Stack_Point) - AND A - LD A,#FF - LD (Spec_Page.Reload_Version),A - LD A,(Spec_Page.page_3) ; PAGE3 - OUT (SLOT3),A - JR Z,.JPHL - PUSH HL - JP EXP_FNS_2_RET -.JPHL: JP (HL) -; -;--[перехват soft/hard reset #41 page]-- -Check_Spec_Page: - LD A,Spec_Page - OUT (SLOT3),A - ; Check for hardreset flag - LD A,(Spec_Page.flag_R) - CP 'R' - JR NZ,No_Reset_handlers - LD A,(Spec_Page.flag_S) - CP 'S' - JR NZ,No_Reset_handlers - LD A,(Spec_Page.flag_T) - CP 'T' - JR NZ,No_Reset_handlers - ; - XOR A - LD (Spec_Page.flag_R),A - JR Check_EE_Port.After_Hard_Rst - ; -;--------------------------------------- -No_Reset_handlers: - XOR A ;!HARDCODE zx page number - OUT (SLOT3),A - ENDMODULE -;-----------------------------------------------------------------------; - - MODULE Prepare_For_Setup -Set_ALL_Mode: LD A,Port_All_Mode.DEFAULT - LD BC,Port_All_Mode - OUT (C),A - -Set_Default_Screen: - CALL FN_SYNC.INT_DEF ; set default int - LD A,128+4 ; !HARDCODE - CALL FN_SYNC ; set default vsync -Setup_to_RAM: LD HL,Setup_Starter.Start - LD DE,COMPILE_ADDR.SETUP_STARTER - LD BC,Setup_Starter.Size - LDIR - ; на стек кладётся адрес возврата и дальше тащится всякими костылями, чтоб вернуться назад - CALL Setup_Starter.Exec ; #C000 - ;JP PrepareToZX - ENDMODULE - -;PrepareToZX: ; Setup HDD drives for ZX Spectrum mode -; DI -; LD D,CMOS_CELL.TRDOSmount -; CALL CMOS_RD -; AND %1010'1010 ; маска для 4-х HDD -; JR Z,.start_zx -; ; find first good partition -; ; - -; ; чистка переменных ZX HDD -; IN A,(SLOT3) -; EX AF,AF -; LD A,SYS_PAGE -; OUT (SLOT3),A -; ; -; XOR A -; LD H,A -; LD L,A -; LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL -; LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL -; DEC A -; LD (SYS_PAGE.CURRENT_HDD),A -; LD (SYS_PAGE.CURRENT_DIR_DRIVE),A -; LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A -; ; -; EX AF,AF -; OUT (SLOT3),A -; EX AF,AF -; ; -; XOR A -; .loop: PUSH AF -; CALL FN_HDD_PART -; POP BC -; JR NC,.start_zx -; LD A,B -; INC A -; CP #10 -; JR C,.loop - ; выход в режим zx spectrum -.start_zx: - ; IF FREE_ZX_PAGES - ; не должно сюда попасть - LD B,high BIOS.REINIT.HARD_RESET - JP REINIT - ; ELSE ; [x] free zx pages! - ; XOR A - ; OUT (SLOT2),A ; ZERO_PAGE - ; DEC A - ; OUT (SLOT1),A ; SHARED_PAGE - ; ;LD A,5 - ; ;OUT (SLOT1),A - ; ;LD A,2 - ; ;OUT (SLOT2),A - ; ; - ; JP GOTO_SPEC.ZX_MODE - ; ENDIF -;*********************************** -; Инициализация портов -PORTS_INIT: - ; включить TURBO - LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - OUT (SYS_PORT.ROM),A - ; ; RESET to ISA - ; LD BC,PORT_ISA - ; LD A,#FF - ; OUT (C),A - ; .isa_reset: - ; DEC A ;!FIXIT может убрать цикл ожидания и запулить 0 в ису после инита клавы? - ; JR NZ,.isa_reset - ; OUT (C),A - ; - ; Инициализация последовательного порта клавиатуры - ; reg 0 - XOR A ;LD A,0 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; reg 4 - LD A,4 - OUT (Z84.SIO.Ch_A.Ctrl),A - ;INC A ;LD A,5 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; reg 3 - LD A,3 - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,#C1 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; reg 5 - LD A,5 - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,#62 ;60, 61 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; reg 1 - LD A,1 - OUT (Z84.SIO.Ch_A.Ctrl),A - DEC A ;LD A,0 ; #18 включение прерываний - OUT (Z84.SIO.Ch_A.Ctrl),A -.mouse: ; Инициализация мыши - ; Инициализация таймера мыши - LD A,#55 - OUT (Z84.CTC.Ch_0),A - LD A,#2D ; скорость порта - второй множитель - OUT (Z84.CTC.Ch_0),A - ; reg 0 - XOR A ;LD A,0 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; reg 4 - LD A,4 - OUT (Z84.SIO.Ch_B.Ctrl),A - ;!TODO вспомнить - ;LD A,#45 - ;LD A,#44 - ; - LD A,#40 ; скорость порта - первый множитель = 16 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; reg 3 - LD A,3 - OUT (Z84.SIO.Ch_B.Ctrl),A - LD A,#41 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; reg 5 - LD A,5 - OUT (Z84.SIO.Ch_B.Ctrl),A - LD A,#E0 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; reg 1 - LD A,1 - OUT (Z84.SIO.Ch_B.Ctrl),A - DEC A ;LD A,0 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; Инициализация параллельного порта 1 (принтер) - ; !FIXIT почитать про эту хрень - ; для POST-Tester-а - ; LD A,#CF ; BITS I/O - ; OUT (Z84.PIO.Port_A.Command),A - ; XOR A - ; OUT (Z84.PIO.Port_A.Command),A ; ALL - out - ; OUT (Z84.PIO.Port_A.Data),A ; DATA - all zeros - ; для принтера - LD A,#0F ; Init printer port for Out - OUT (Z84.PIO.Port_A.Command),A - OUT (Z84.PIO.Port_A.Command),A - ; Инициализация параллельного порта 2 (INT/DMA ISA) - LD BC,Z84.PIO.Port_B.Command ;только через регистр BC, иначе Альтера перехватит - LD A,#CF ; BITS I/O - OUT (C),A - LD A,#3F - OUT (C),A - LD A,#C0 ; Bit 7 - Select (1), Bit 6 - Auto_Line_Feed (1) - OUT (Z84.PIO.Port_B.Data),A - ; "Заглушение" ковокса и ресет ISA - ; ресет ISA часть 1 - LD BC,PORT_ISA - LD A,#FF - OUT (C),A - ; глушим ковокс - XOR A - OUT (SP_SND.CBL.SYS_PORT),A - LD BC,SP_SND.CBL.OUT - LD A,#80 -.CBL_MUTE: OUT (C),A - DJNZ .CBL_MUTE - ; ресет ISA часть 2 после небольшой паузы - LD BC,PORT_ISA - XOR A - OUT (C),A - ; Сброс контроллера дисковода - ; Включить доступ к контроллеру диска (третья конфа) - LD A,CNF_PORT.CNF_3+ROM.BIOS - OUT (SYS_PORT.ROM),A - OUT (FDC_93.DrvCTRL),A : ASSERT CNF_PORT.CNF_3+ROM.BIOS = #1C, "ERROR: A != #1C" - PUSH HL ; для задержки - POP HL ; для задержки - LD A,#3C ;!HARDCODE - OUT (FDC_93.DrvCTRL),A - PUSH HL ; для задержки - POP HL ; для задержки - XOR A ;!HARDCODE CMD КР1818ВГ93 - OUT (FDC_93.Command),A - ; Выключить доступ к контроллеру диска - LD A,CNF_PORT.CNF_0+ROM.BIOS - OUT (SYS_PORT.ROM),A - ; set HDD1/not-HDD2 - LD A,IDE.Chanel.Primary - OUT (IDE.Chanel.Set),A - LD BC,#7FFD - LD A,#10 - OUT (C),A ; BASIC_48 mode - LD B,#1F - LD A,1 - OUT (C),A ; RAM-0 mode !!! - ; очистка буферов клавиатуры и мыши в SIO - CALL .clean_kbd_buf - JR .clean_mouse_buf -.clean_kbd_buf: ; Clearing the keyboard buffer - IN A,(Z84.SIO.Ch_A.Ctrl) - RRCA - RET NC - IN A,(Z84.SIO.Ch_A.Data) - JR .clean_kbd_buf -.clean_mouse_buf:; Clearing the mouse buffer - IN A,(Z84.SIO.Ch_B.Ctrl) - RRCA - RET NC - IN A,(Z84.SIO.Ch_B.Data) - JR .clean_mouse_buf -;--------------------------------------- - -;-----------------------------------------------------------------------; - - -;-----------------------------------------------------------------------; -; paths from project DIR - - INCLUDE 'BIOS_FUNC.ASM' - INCLUDE 'FUNC_4x.ASM' - INCLUDE 'FUNC_CMOS.ASM' - INCLUDE 'FUNC_SERVICE.asm' - ; INCLUDE 'EXP_SCR.ASZ' LP_SCR_MNU - INCLUDE 'FUNC_SCREEN.ASM' - INCLUDE 'FUNC_RAM_ROM_DRV.ASM' - INCLUDE 'FUNC_SYS.ASM' - INCLUDE 'FUNC_FOR_TRDOS.ASM' - INCLUDE 'FUNC_5x.asm' - INCLUDE 'FUNC_LOW_PRINT.ASM' -;-----------------------------------------------------------------------; - - -;-----------------------------------------------------------------------; -; #################################### -; #::::::::::::::::::::::::::::::::::#\ -; #::::: Место данных для DCP :::::::#\ -; #::::::::::::::::::::::::::::::::::#\ -; ####################################\ -; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -DCP_DATA: INCLUDE 'DCP.ASM' -;-----------------------------------------------------------------------; - -;-----------------------------------------------------------------------; -; -; #-2kb-############################## -; #::::::::::::::::::::::::::::::::::#\ -; #:::: Здесь место для IBM-ZG ::::::#\ -; #::::::::::::::::::::::::::::::::::#\ -; ####################################\ -; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -ZG_ADDRESS: INCLUDE 'FONT.ASM' -ZG_SIZE EQU $-ZG_ADDRESS - ASSERT (ZG_SIZE <= #800), "The font size is too big!" -;-----------------------------------------------------------------------; - - -; -; !FIXIT сделать эти фиксированные адреса отдельным файлом и с IF/ELSE и подключать их потом куда надо. -; -;????? посмотреть -;----------------------------------------------------------------------; -; BLOCK #3CC0-$,255 - ; no-magics! -;MAGIC_1: ; ЗАГЛУШКА ДЛЯ MAGIC -; PUSH AF -; LD A,ROM.EXT -; OUT (SYS_PORT.OFF),A -; POP AF -; JP MAGIC_1 -;MAGIC_3: -; PUSH AF -; LD A,ROM.EXT -; OUT (SYS_PORT.OFF),A -; POP AF -; RETN -;MAGIC_2: -;; CALL MG_BEGIN -; JR MAGIC_3 - -;************************* - _mInfoBLOCK #3CE0-$,0 -SW_ROM_1: - LD HL,#259F ;!HARDCODE BASIC_FN.x128.show_main_menu - PUSH HL - LD HL,#5B00 ;!HARDCODE BASIC_FN.x128.ROM_SWAP - LD A,(HL) - CP #F5 ; #F5 - опкод 'PUSH AF'. Проверяется то ли в #5B00 - JR Z,JP_HL_48 ; ВОЗВРАТ К МЕНЮ BASIC128 - POP HL - JR SW_ROM ; ПРОСТОЙ ВОЗВРАТ -;************************* - -; BLOCK #3CF0-$,0 -;JMP_48: -; LD HL,00h -; JR JP_HL_48 -; -; NOP -; NOP -; NOP - -;*************************************** - _mInfoBLOCK #3CF8-$,0 - ; no basic-48! -JP_HL_48: ;!FIXIT assert with ROM - PUSH HL -SW_ROM: ;!FIXIT assert with ROM - PUSH AF - LD A,ROM.BIOS ;!FIXIT неправильное название константы - OUT (SYS_PORT.RAM),A - POP AF - RET -;*************************************** -;----------------------------------------------------------------------; -; - -;!TODO спектрумовские утилиты -;----------------------------------------------------------------------; - ; _mInfoBLOCK #3CFA-$,#FF - ; LD A,0 ;!HARDCODE - ; OUT (SYS_PORT.OFF),A - ; POP AF -;----------------------------------------------------------------------; -; - - -; -;----------------------------------------------------------------------; - _mInfoBLOCK #3D00-$,#FF -DOS_ON: NOP ;!TODO работает при #7FFD[4] = 1. Как-то узнавать значение 7FFD и менять? - RET -;*************************************** - -;*************************************** -; BLOCK #3D02-$,FF -; !TODO можно оприходовать тут 17 байтов -;*************************************** - -;*************************************** - _mInfoBLOCK #3D13-$,#FF - NOP - JP ToBIOS_18 -;*************************************** - -;*************************************** -; BLOCK #3D17-$,FF -;*************************************** -; - - - - - ; IF FREE_ZX_PAGES -;-----------------------------------------------------------------------; -GOTO_SPEC: PUSH HL - LD HL,RET_TO_BIOS - EX (SP),HL - PUSH HL - PUSH AF - CALL FN_TURBO.SET_FDD_720 - POP AF - LD HL,GOTO_SPECTRUM - EX (SP),HL - JP EXTENSION_FNs - -ZX_MEMORY_MANAGER: - PUSH HL - LD HL,RET_TO_BIOS - EX (SP),HL - PUSH HL - LD HL,MANAGE_ZX_PAGES.FN_ENTRANCE - EX (SP),HL - JP EXTENSION_FNs -;-----------------------------------------------------------------------; - - -;>$< >$< >$< >$< >$< >$< [ ПЕРЕМЕЩАЕМЫЕ В ОЗУ ] >$< >$< >$< >$< >$< >$< ; -; -;---------------------[ ЗАГЛУШКИ ДЛЯ #41 СТРАНИЦЫ]----------------------; -;-------------[RST 08] -RAM_BIOS_PROG: ; for CALL BIOS in #41 page - DISP Spec_Page.to_bios - PUSH AF - LD A,ROM.BIOS - OUT (SYS_PORT.ROM),A - POP AF - RET - ENT -.Length EQU $-RAM_BIOS_PROG -;-------------------[] -; -;-------------[RST 38] -PROG_NO_ROM: - DISP Spec_Page.no_zx_rom - DI - ; - LD A,CNF_PORT.CNF_0 - OUT (SYS_PORT.RAM),A - ; - LD A,SHARED_PAGE - OUT (SLOT3),A - OUT (SLOT2),A - OUT (SLOT1),A - LD SP,#BF00 - ; - LD BC,BIOS.SET_PAL_INIT.CGA - RST ToBIOS - ; - LD E,0 - LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default - RST ToBIOS - ; - LD DE,0 - LD B,E - LD HL,#2050 - LD C,BIOS.LP_CLS_WIN - RST ToBIOS - ; - LD HL,MESSAGE_NR - LD DE,#A000 - PUSH DE - LD BC,MESSAGE_NR.size - LDIR - ; BC=0 - POP HL - SCF - EX AF,AF' - SCF - LD A,COLORS.CGA.FLASH + COLORS.CGA.INK.RED - PUSH BC - POP IY - LD DE,#0F00 - ; B=0 delimiter - LD C,BIOS.LP_PR_LINE_DIR - RST ToBIOS - ; - ; set scr-2 - LD A,1 - OUT (SCREEN_SWITCH),A -.loop: DI - HALT - JR .loop - ;Spectrum ROM configuration error - ; 10 20 30 40 50 60 70 80 - ; "123456789|123456789|123456789|123456789|123456789|123456789|123456789|123456789|" -MESSAGE_NR: DZ "\t\t\tSpectrum ROM configuration error\r\n\t\t\t Press Ctrl+Alt+Del or RESET." -.size EQU $-MESSAGE_NR - ENT -PROG_NO_ROM.size EQU $-PROG_NO_ROM -;-------------------[] -;-----------------------------------------------------------------------; -;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<; - -;-------------------------------[ #FFE0 ]-------------------------------; -; программа, которая будучи размещенной в #40 странице, -; с адреса RESTARTS, перехватывает RESET -RESTARTS_PROG: ; !TODO LDConf перехват ресета на любой конфе после hardreset - LD HL,RESTARTS - LD B,16 -.loop: LD (HL),0 - INC HL - DJNZ .loop - NOP - NOP -.Size EQU $-RESTARTS_PROG - ; LD A,1 - ; OUT (SLOT3),A -;-----------------------------------------------------------------------; - -;----------------------------[Setup Starter]----------------------------; - MODULE Setup_Starter -; программа, размещаемая по адресу #C000 для запуска Setup -Start: DISP COMPILE_ADDR.SETUP_STARTER -Exec: LD A,CNF_PORT.CNF_0 + ROM.EXTENSION - OUT (SYS_PORT.ROM),A - ; - LD HL,ROM_MAP.SETUP - LD DE,MEM_MAP.SETUP - LD BC,BLOCK_Setup.Length - LDIR - ; - LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (SYS_PORT.ROM),A -;-----------[Check SPACE] - ; в CF передаётся нажата ли клавиша SPACE. CF=0: клавиша нажата - ; потом проверяется в main.asm [space_check] и если нажата, - ; то происходит игнор параметра "Быстрый старт ПЗУ" - ; во время перезагрузки в [Check Quick Start ROM] - LD BC,Port_All_Mode - IN H,(C) ; или LD H,#FF - LD A,Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF - OUT (C),A ; keyboard int & acc off - LD A,high ZXKeys.Line_7 - IN A,(ZXKeys) - RRA ; CF=0 клавиша нажата -;----------------------[] - OUT (C),H - DI - POP HL ; адрес возврата в EXP из SETUP - JP SETUP_MAIN - ENT -Size EQU $-Setup_Starter.Start - ENDMODULE -;-----------------------------------------------------------------------; -;-----------------------------------------------------------------------; -;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<; -; - - - - - -;*************************************** - _mInfoBLOCK #3E00-$,#FF -DOS_OFF: - PUSH AF - LD A,R - DI - PUSH AF - PUSH BC - ; - LD BC,(#5BFF) ; !HARDCODE - LD A,#C9 ; Opcode RET - LD (#5BFF),A ; !HARDCODE - CALL #5BFF ; !HARDCODE - LD (#5BFF),BC ; !HARDCODE - ; - POP BC - POP AF - JP PO,.no_EI - EI -.no_EI: POP AF - RET -;*************************************** - - -;*************************************** -; BLOCK #3E16-$,FF -; !TODO можно оприходовать тут 10 байтов -; -;*************************************** - - -//////////////////////////////////////////////////////////////////////// -;------[ ; !TODO что- то связанное с переменными LIB_TABLE ; ]------ -; _mInfoBLOCK #3E20-$,#FF -; [x] -FN_LIB: - SCF - RET -// -// IN A,(SLOT3) -// LD B,A -// LD A,SYS_PAGE -// OUT (SLOT3),A -// PUSH HL -// LD L,C ; дешефратор API изменился и теперь в C не то, что тут ожидается. Ожидается #A0..AF -// LD H,#C1 -// LD A,(HL) -// POP HL -// AND A -// SCF -// JR Z,FN_LIB_RET -// -// OUT (SLOT3),A -// LD (#C0FE),SP -// LD SP,#C0F0 -// PUSH BC -// CALL #C100 ; !HARDCODE -// POP BC -// LD SP,(#C0FE) -// ; LD A,B -// ; OUT (SLOT3),A -// ; RET -// -//FN_LIB_RET: -// LD A,B -// OUT (SLOT3),A -// ;SCF -// RET -//////////////////////////////////////////////////////////////////////// -;----------------------------------------------------------------------; -; - - - -;!TODO скомпоновать и допаять -;----------------------------------------------------------------------; -; вход A - byte -; B - speed_parameter -FN_KBD_OUT: - AND A - LD E,A - LD D,#FF - JP PE,kbd_parity ; установка паритета PE/PO ??? - LD D,#FE -kbd_parity: - AND A ; первый бит - start-bit - 0 - RL E - RL D ; в DE - 11 бит для передачи - LD C,11 - -kbd_loop: - LD A,5 - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,#60 - BIT 0,E - JR NZ,no_inv - XOR 2 ; данные -no_inv: - LD L,A - OUT (Z84.SIO.Ch_A.Ctrl),A ; выставить данные - - LD A,5 - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,L - OR #80 ; синхроимпульс - OUT (Z84.SIO.Ch_A.Ctrl),A ; импульс синхро - LD A,B ; speed_par -kbd_loop1: - PUSH HL - POP HL - DEC A - JR NZ,kbd_loop1 - LD A,5 - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,L - OUT (Z84.SIO.Ch_A.Ctrl),A ; снять импульс синхро - - LD A,B ; speed_par -kbd_loop2: - PUSH HL - POP HL - DEC A - JR NZ,kbd_loop2 - RR D - RR E - DEC C - JR NZ,kbd_loop - - LD A,5 - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,#60 - OUT (Z84.SIO.Ch_A.Ctrl),A ; закончить передачу - AND A - RET -;----------------------------------------------------------------------; - - - -;----------------------------------------------------------------------; -; DE - частота -; HL - продолжительность -BEEP: LD A,#10 - CALL .beep_loop - ; - ;XOR A - CALL .beep_loop - ; - DEC HL - LD A,H - OR L - JR NZ,BEEP - RET - ; -.beep_loop: OUT (SP_SND.Beeper),A - LD B,D - LD C,E - ; -.loop: DEC BC - LD A,B - OR C - JR NZ,.loop - RET -;----------------------------------------------------------------------; - - -;#######################################################################; - - - -;---------[Return to EXTENSION]--------- - _mInfoBLOCK #3FD0-$,#FF ; ToBIOS_FromEXT -; #3FD0 -; Для вызова функций биоса из страницы 0 ПЗУ (Extension) -RET_TO_EXTENSION: - PUSH AF - LD A,ROM.EXTENSION - OUT (SYS_PORT.ROM),A - POP AF - RST ToBIOS_18 - JP RET_TO_EXTENSION - -; !TODO Free 6 bytes -;--------------------------------------- -; - - -;---------------[ Free ]---------------- -; - _mInfoBLOCK #3FE0-$,#FF -; !TODO Free 8 bytes and entry point -;SOUND_TEST: -; LD A,ROM.EXPANSION -; OUT (SYS_PORT.ON),A -; JP SND_TEST_RET -;--------------------------------------- -; - -; [x] new portal -;------------[Portal to EXT]------------ -; точка входа/выхода для функций в ROM.EXTENSION - _mInfoBLOCK #3FE8-$,#FF -EXTENSION_FNs: ;EXP_HDD: - PUSH AF - LD A,ROM.EXTENSION - OUT (SYS_PORT.ROM),A - POP AF - RET -;--------------------------------------- -; - - -; -;---------------[ Free ]---------------- - _mInfoBLOCK #3FF0-$,#FF -; !TODO Free 8 bytes and entry point -;--------------------------------------- -; - - -; -;----[ From TR-DOS to API #80..#FF ]----- - _mInfoBLOCK #3FF8-$,#FF -; Точка входа/выхода для TR-DOS -EXP_FNS_RET: - PUSH AF - LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A ; Точка входа/выхода из/в TR-DOS при вызове функций BIOS #80..#FF - JP EXP_FNS -;--------------------------------------- -; - -; - _mInfoBLOCK #4000-$,#FF + +; +;************************************************************* +; +; EXPANSION VER 3.00 (C) Peters Plus Ltd. +; EXPANSION VER 3.1 (C) Sprinter Team +; +;************************************************************* + + DISPLAY "\r\n/=====================[EXP part]=====================\\" + +;*************************************** +;*********** BEGIN EXPANSION *********** +;*************************************** +; Вход по RESET +EXP_START: + JP GLOBAL_RESET + +;--------------------------------------- +;ROM_NUMBER: +;.part1: DW MotherBoardID +;.part2: DB 0 +BOARD_INFO: +.number: DW MotherBoardID +.type: DB MotherBoardType +;--------------------------------------- + +;--------------------------------------- +; BoardID: +; .start: WORD BoardID_start ; BoardID_start +; .end: WORD BoardID_end ; BoardID_end +;--------------------------------------- + +;======================================= + BLOCK 8-$,0 ; first on/off EXPANSION +;программа для вызова BIOS через RST8 из RAM0 +EXP_FNS_2_RET: + PUSH AF + LD A,ROM.BIOS + OUT (SYS_PORT.RAM),A + POP AF + JR RST_18_1 +;======================================= + +;======================================= + BLOCK #10-$,0 +RST_10: +; JR RST10 +;======================================= + +;======================================= + BLOCK #18-$,0 +; RST18h - MAIN BIOS functions + JP EXP_FNS_RST18 +RST_18_1: + CALL EXP_FNS_RST18 +.exit: JR EXP_FNS_2_RET + +;======================================= + +;======================================= + BLOCK #20-$,0 +RST_20: +;======================================= + +;======================================= + BLOCK #28-$,0 +RST_28: +;======================================= + +;======================================= + BLOCK #30-$,0 +RST_30: +;======================================= + +;======================================= + BLOCK #38-$,0 +; INTERUPT Point +RST38: IF TEST_INT + ;INT: + PUSH BC + PUSH AF + + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + + LD A,(SYS_PAGE.INT_ID) + CP #AA + JR Z,YESINT + OUT (C),B + JP NOINT +YESINT: PUSH HL + LD HL,(SYS_PAGE.INT_ADRESS) + LD A,H + OR L + LD A,(SYS_PAGE.INT_PAGE) + OUT (C),B + PUSH DE + CALL NZ,EXTINT + POP DE + POP HL +NOINT: POP AF + POP BC + EI + RETI + ELSE + +; PUSH AF +; 1: DEC A +; JR NZ,1B +; POP AF + EI + RETI + ENDIF +;RST10: +; CALL_48 10h +; RET +;======================================= + + +;======================================= + IFN TEST_INT + _mInfoALIGN #10,0 +; any adress < #C0 with mask %xxxx0000 +; таблица для Sprinter POST-Tester-a +TABLE_X: +.v0: DB %00101000 ; "0" a +.v1: DB %10111101 ; "1" ___ +.v2: DB %00110010 ; "2" f | g | b +.v3: DB %00110100 ; "3" |___| +.v4: DB %10100101 ; "4" e | | c +.v5: DB %01100100 ; "5" |___|. +.v6: DB %01100000 ; "6" d +.v7: DB %00111101 ; "7" +.v8: DB %00100000 ; "8" a - 7 +.v9: DB %00100100 ; "9" b - 6 +.vA: DB %00100001 ; "A" . - 5 +.vB: DB %11100000 ; "B" f - 4 +.vC: DB %01101010 ; "C" g - 3 +.vD: DB %10110000 ; "D" e - 2 +.vE: DB %01100010 ; "E" c - 1 +.vF: DB %01100011 ; "F" d - 0 + ENDIF +;======================================= +; + +; +;======================================= + IFN TEST_INT +RESTARTS EQU #FFE0 +GLOBAL_RESET: + DI + IM 1 + LD HL,RESTARTS + LD DE,RESTARTS_PROG + LD B,RESTARTS_PROG.Size +.compare: + LD A,(DE) + CP (HL) + JR NZ,NO_RESTART + INC HL + INC DE + DJNZ .compare + JP RESTARTS + ENDIF +;======================================= + _mInfoBLOCK #66-$,0 +NMI_Point: + ; резерв 3 байта для команды JP + ;NOP + ;NOP + ;NOP + RETN +;======================================= + +;SET_BIOS_TO_RAM: ; программа работает на адресе 0C000h +; +; LD SP,#C0C0 +; LD A,#E0 +; LD C,PAGE3 +; IN B,(C) +; CALL SET_ROM_PAGES+#C000 +; JP NO_SUMX_EQ + +;********************************** + +;BEEP: +; PUSH HL +; PUSH DE +; PUSH BC +; PUSH AF +; PUSH IX +; +; LD HL,BEEP_RET +; PUSH HL +; LD HL,SW_ROM +; PUSH HL +; LD HL,03B5h +; PUSH HL +; LD HL,200 +; LD D,H +; LD E,5 +; JP SW_ROM +;BEEP_RET: +; +; POP IX +; POP AF +; POP BC +; POP DE +; POP HL +; RET +;======================================= +; BLOCK MEM_MAP.ID_Version-$,0 ;#C0-$,0 + +ID_Version: DW BIOS_ver_hex +ID_SPRINTER: DB 'Firmware v' +.BIOS_ver: DB BIOS_ver_string + IF BETA_BUILD > 0 + DB " ", BETA_str_ver + ELSE + IF RELEASEhotFIX > 0 + DB ReleaseHotFix + ENDIF + ENDIF + DB 0 +.Record1_Size EQU $-ID_SPRINTER + ; запись 2 + DB 'Sprinter',0 + ; запись 3 ; [x] 24/02/2024 +.bitstream_ver: DB bitstream_ver_string,0 + DB 0 + ; +.Size EQU $-ID_SPRINTER +.Records_Num EQU 3 + +; Check for max length of string + ASSERT ID_SPRINTER.Record1_Size < SYS_PAGE.ID_FLAG.Size, 'ERROR! ID String is to long!' +;======================================= + + +; BLOCK #FC-$,0 +BoardID: +.start: WORD BoardID_start ; BoardID_start +.end: WORD BoardID_end ; BoardID_end +;#######################################################################; + + +;#######################################################################; +;-----------------------------------------------------------------------; +; ROM-Disk pages ; [x] активирован ROM-DISK +ROM_DISK.Pages.Number: + BYTE ROM_DISK.Pages.Size ; число страниц +; у страниц выставлен bit4 для корректной подстановки +;(подробнее в sp2000.inc - Порт управления страницами ПЗУ) +ROM_DISK.Pages: ; страницы ROM-Disk + ABYTE #10 #05,#06,#07,#09,#0A,#0B ; 98304 bytes +.Size EQU $-ROM_DISK.Pages +;-----------------------------------------------------------------------; +;#######################################################################; + + + +;======================================= + IF TEST_INT + _mInfoALIGN #10,0 +; any adress < #C0 with mask %xxxx0000 +; таблица для Sprinter POST-Tester-a +TABLE_X: +.v0: DB %00101000 ; "0" a +.v1: DB %10111101 ; "1" ___ +.v2: DB %00110010 ; "2" f | g | b +.v3: DB %00110100 ; "3" |___| +.v4: DB %10100101 ; "4" e | | c +.v5: DB %01100100 ; "5" |___|. +.v6: DB %01100000 ; "6" d +.v7: DB %00111101 ; "7" +.v8: DB %00100000 ; "8" a - 7 +.v9: DB %00100100 ; "9" b - 6 +.vA: DB %00100001 ; "A" . - 5 +.vB: DB %11100000 ; "B" f - 4 +.vC: DB %01101010 ; "C" g - 3 +.vD: DB %10110000 ; "D" e - 2 +.vE: DB %01100010 ; "E" c - 1 +.vF: DB %01100011 ; "F" d - 0 + ENDIF +;======================================= +; + +; +;======================================= + IF TEST_INT +RESTARTS EQU #FFE0 +; полный перехват ресета сразу после проливки конфы и CAD. +; закидывается в карту портов, поэтому использовать надо хитро. +GLOBAL_RESET: + DI + IM 1 + LD HL,RESTARTS + LD DE,RESTARTS_PROG + LD B,RESTARTS_PROG.Size +.compare: + LD A,(DE) + CP (HL) + JR NZ,NO_RESTART + INC HL + INC DE + DJNZ .compare + JP RESTARTS + ENDIF +;======================================= +; + +; +;-----[перехват RESET не состоялся]----- +NO_RESTART: +; стек ещё не используем!!! + LD SP,IX ; сохранить значение переданное загрузчиком конфы (если старт после ресета) + ; инициализация внутренних портов Z84C15 для POST-Tester-а + LD A,5 ; COM port for Printer OUT + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,#62 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; + LD A,#CF ; BITS I/O + OUT (Z84.PIO.Port_A.Command),A + XOR A + OUT (Z84.PIO.Port_A.Command),A + ;LD A,%11101010 ; зажечь L + OUT (Z84.PIO.Port_A.Data),A ; PRINTER - PORT - all zeros + ; -инициализация системных портов Z84C15- + LD BC,#FF*256 + Z84.SYS.Control + XOR A ; Z84.REG.WaitState_Ctrl + OUT (C),A ; Z84.SYS.Control + INC C ; Z84.REG.WaitState_MemBound + OUT (C),A ; Z84.SYS.Data ; set 0 Waits + ; + DEC C + LD A,3 ; Z84.REG.Misc_Ctrl + OUT (C),A ; Z84.SYS.Control + INC C + ; no boundary set! + ;XOR A ; disable CS0, disable CS1 + LD A,1 ; enable CS0, disable CS1 + OUT (C),A ; Z84.SYS.Data + JP POST_TEST.START +;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--== + IF TEST_INT +;----------------[int]------------------ +EXTINT: OR A + RET Z + + BIT 7,H + JR Z,.L2 + LD C,SLOT2 + BIT 6,H + JR Z,.L1 + LD C,SLOT3 + +.L1: IN B,(C) + PUSH BC + OUT (C),A + CALL .JPHL + POP BC + OUT (C),B + RET + ; проверка на нулевой слот +.L2: BIT 6,H + LD C,SLOT1 + JR NZ,.L1 ; продолжаем если ненулевой слот + + PUSH HL + + LD HL,-.stackDepth - .switchProcedure.size + .patch-2 + ADD HL,SP + PUSH HL + + LD HL,-.stackDepth - .switchProcedure.size ; memory stack use! + ADD HL,SP ; stack + PUSH HL ; адрес программы .readProcedure + + LD DE,.switchProcedure ; перенести программу на стек + EX DE,HL + LD BC,.switchProcedure.size + LDIR + RET + +; процедура, переносимая на стек для вызова прерывания пользователя из SLOT0 +; осторожнее с PUSH, если надо много, то увеличивай .stackDepth +.switchProcedure: + DEC DE + POP HL + LD (HL),E + INC HL + LD (HL),D + + LD C,SLOT0 + IN B,(C) + POP HL + PUSH BC + OUT (C),A + + XOR A + OUT (SYS_PORT.RAM),A + +.patch EQU $+1-.switchProcedure + CALL .JPHL + + DI + + XOR A + OUT (SYS_PORT.ROM),A + + POP BC + OUT (C),B + + RET +.JPHL: JP (HL) +.stackDepth EQU 64 ; расстояние от конца процедуры до вершины стека. +.switchProcedure.size EQU $-.switchProcedure + ENDIF +;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--== + + +; ==== POST PROCs ================= +; LPT 0 - start +; post 1. TEST RAM BUS +; IF ERROR -> ERROR RAM BUS - CODE 'X'X'X'X... - высветить номер ошибочного бита +; LPT 1 - post 1 OK +; post 2 TEST ADRESS BUS +; IF ERROR -> ошибка адреса CODE 'XXXX - вывести старший байт с запятой, пауза, вывести младший без запятой +; LPT 2 - post 2 OK +; post 3 init DCP +; no errors +; LPT 3 - post 3 OK +; post 4 TEST RAM PAGES запись в порт страницы, чтение записанного +; IF ERROR -> ошибка переключения Port-а CODE 'XX - вывод байта записанного в порт +; LPT 4 - post 4 OK +; post 5 проверка чистоты шины данных Z84C15 +; IF ERROR -> ERROR CODE '_'XX - в биосе на ошибке не зависает, хз почему, может на случай конфы с грязной шиной спектрума +; LPT 5 - post 5 OK +; LPT 4 - post 5 error - старый биос +; LPT F - post 5 error - биос 05/04/2025))) +; + MODULE POST_TEST +START: +; ********************************* +; ===== Point 0 ======= +; ********************************* + + LD A,(TABLE_X.v0) ; высветить "0" ;rdlow-ok + OUT (Z84.PIO.Port_A.Data),A + +; ==== TEST RAM BUS ======== + +POST_1_RAM_BUS: + LD BC,0 + LD HL,#C000 + LD DE,#0055 +.loop: LD (HL),E + INC L + LD (HL),D + DEC L + LD A,(HL) + XOR E + OR C + LD C,A + INC L + LD A,(HL) + XOR D + OR B + LD B,A + DEC L + + DEC E + INC D + JR NZ,.loop + LD A,E + CPL + LD E,A + INC L + INC L + BIT 4,L + JR Z,.loop + + LD A,B + OR C + JR Z,POST_1_OK ; no errors + +; ERROR RAM BUS - CODE 'X'X'X'X... +.error: + LD HL,TABLE_X +.ERB_2: + BIT 0,C + JR Z,.ERB_1 + + ; высветить номер ошибочного бита + LD A,(HL) + AND %1101'1111 ; с запятыми + OUT (Z84.PIO.Port_A.Data),A + + ; пауза + LD DE,0 +.pause: + DEC DE + LD A,D + OR E + JR NZ,.pause + +; RRC BC +.ERB_1: + LD A,C + RRA + RR B + RR C + + ; бесконечный цикл + INC L + LD A,L + AND +(TABLE_X or #0F) ;%1010'1111 + LD L,A + JR .ERB_2 + +; ************************************************ +; ===== Point 1 ============== +; ************************************************ +POST_1_OK: + + LD A,(TABLE_X.v1) ; высветить "1" ;rdlow-ok + OUT (Z84.PIO.Port_A.Data),A + +; ===== TEST ADRESS BUS ====== +POST_2_ADRESS_BUS: + LD HL,#C000 + LD DE,#0000 +.fill_mem: ; заполнить память адресами + LD (HL),E + INC L + LD (HL),D + INC HL + INC DE + INC DE + BIT 7,H + JR NZ,.fill_mem + + DEC HL + DEC DE + DEC DE +.check_mem: ; проверить совпадение + LD A,(HL) + CP D + JR NZ,.error + DEC HL + LD A,(HL) + CP E + JR NZ,.error + DEC HL + DEC DE + DEC DE + LD A,H + CP #BF + JR NZ,.check_mem + JR POST_2_OK + +; ошибка адреса CODE: 'XXXX +.error: +.TSAB_4: + LD C,D + LD B,%1101'1111 + LD IX,.TSAB_3 + JR OUT_C_BYTE ; вывести старший байт с запятой +.TSAB_3: + LD C,E + LD B,%1111'1111 + LD IX,.TSAB_4 + JR OUT_C_BYTE ; вывести младший без запятой + +; ===== OUT BYTE PROGRAM ======= + +OUT_C_BYTE: + LD A,C + + RRCA + RRCA + RRCA + RRCA + + AND #0F + OR TABLE_X + LD L,A + LD H,0 + LD A,(HL) + AND B + OUT (Z84.PIO.Port_A.Data),A + + EXX + LD DE,0 +.LOOP_WTT2: + DEC DE + LD A,D + OR E + JR NZ,.LOOP_WTT2 + LD A,#FF + OUT (Z84.PIO.Port_A.Data),A +.LOOP_WTT21: + DEC DE + LD A,D + OR E + JR NZ,.LOOP_WTT21 + EXX + + LD A,C + AND #0F + OR TABLE_X + LD L,A + LD A,(HL) + OUT (Z84.PIO.Port_A.Data),A + + EXX + LD DE,0 +.LOOP_WTT3: + DEC DE + LD A,D + OR E + JR NZ,.LOOP_WTT3 + LD A,#FF + OUT (Z84.PIO.Port_A.Data),A +.LOOP_WTT31: + DEC DE + LD A,D + OR E + JR NZ,.LOOP_WTT31 + EXX + + JP (IX) + +; ************************************************ +; ===== Point 2 ========= +; ************************************************ + +POST_2_OK: + LD A,(TABLE_X.v2) ;rdlow-ok + OUT (Z84.PIO.Port_A.Data),A ; вывести "2" + +; ===== INIT DCP ======== +POST_3_INIT_DCP: + ;LD HL,POST_3_OK ; INIT PORTS + JP DCP_INIT ; процедура инициализации с возвратом на POST_3_OK +; ошибок нет + +; *********************************** +; ===== Point 3 ========= +; *********************************** + +POST_3_OK: + LD A,(TABLE_X.v3) ; вывести "3" ;rdlow-ok + OUT (Z84.PIO.Port_A.Data),A + +; ===== TEST RAM PAGES == + IN A,(SLOT3) + EX AF,AF' ; запомнить +POST_4_PAGES: + LD B,0 +.loop: LD A,#FF + LD I,A + LD A,B + OUT (SLOT3),A + XOR A + LD I,A + IN A,(SLOT3) + CP B + JR NZ,.error ; если ошибка переключения Port-а + DJNZ .loop + + EX AF,AF' + OUT (SLOT3),A ; восстановить + JR POST_4_OK + +; *********************************** +; ERROR Port CODE 'XX +.error: LD C,B + LD IX,.error_out_ret +.error_out_ret: + LD B,%1101'1111 + JP OUT_C_BYTE + +; *********************************** +; ===== Point 4 ========= +; *********************************** + +POST_4_OK: + LD A,(TABLE_X.v4) ;rdlow-ok + OUT (Z84.PIO.Port_A.Data),A ; высветить "4" + +;= проверка чистоты шины данных Z84C15 = +POST_5_DATA_BUS: + LD B,0 +.loop: IN A,(0) + CP #FF + IF ERROR_POST_5 + JR NZ,.error ;!!!!! посмотреть + ELSE + JR NZ,POST_5_ERROR + ENDIF + DJNZ .loop + LD A,(TABLE_X.v5) ;rdlow-ok + JR POST_5_OK + ; + ; + IF ERROR_POST_5 +; ERROR CODE '_'XX +.error: + LD C,A +.erb1: + LD IX,.erbr1 + LD B,%1101'1111 + JP OUT_C_BYTE +.erbr1: + LD A,%1101'1111 + OUT (Z84.PIO.Port_A.Data),A + + LD DE,0 +.LOOP_WTT4: + DEC DE + LD A,D + OR E + JR NZ,.LOOP_WTT4 + JR .erb1 + ENDIF + +; ********************************** +; ===== Point 5 ========= +; ********************************** + IFN ERROR_POST_5 +POST_5_ERROR: + LD A,(TABLE_X.vF) ;rdlow-ok + ENDIF + +POST_5_OK: + OUT (Z84.PIO.Port_A.Data),A ; вывести результат теста +; ********************************** +; POST завершен + ENDMODULE +; ********************************** + +;-----------------------------------------------------------------------; +; первая инициализация страниц: + XOR A + OUT (RGADR),A + OUT (RGMOD),A + OUT (SLOT0),A + ;free zx pages! + ;LD A,ZX_PAGE.SLOT1 + ;OUT (SLOT1),A + ;LD A,ZX_PAGE.SLOT2 + ;OUT (SLOT2),A + OUT (SLOT2),A ; ZERO_PAGE + DEC A ; SHARED_PAGE + OUT (SLOT1),A + ; + LD A,SYS_PAGE + OUT (SLOT3),A +;-----------------------------------------------------------------------; + MODULE SET_CONFIG_ID +;-------------[Save IX:IY]-------------- +; Don't use IY before this point if it`s normal booting!!! + LD IX,0 + XOR A + ADD IX,SP ; восстановить значение переданное загрузчиком конфы (если старт после ресета) +; В этом месте у нас IX:IY из Loader.asm +; Дотащили до сюда метку от лоадера + ;[x] 31/12/2023 подстраховка от недоутечки памяти + ; IY - number from loader + LD D,YH + LD E,YL + EX DE,HL + LD DE,SP2000_Loader_Flag + SBC HL,DE + JR NZ,.no_conf_reload + ; IX - number from loader + LD D,XH + LD E,XL + EX DE,HL + LD DE,ACEX.Config_ID.Sp2000 + SBC HL,DE + ; A = 0 + JR NZ,.no_conf_reload + LD A,#80 +.no_conf_reload: + LD R,A ; reg R bit7 - признак запуска с отработкой лоадера конфы + ; + ; на всякий случай + LD HL,ACEX.Config_ID.Sp2000 + LD (SYS_PAGE.CONFIG_BYTE),HL ; сохранить номер прошивки + ; + LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON + LD (SYS_PAGE.CONFIG_DE),A + ; + ENDMODULE +;-----------------------------------------------------------------------; +; Don't use stack (SP) before this point if it`s normal booting!!! + LD SP,ROM_MAP.EXP.STACK ; Начало использования стека!!! + PUSH HL ; сохранить номер прошивки + + CALL PORTS_INIT ; инициализировать порты + XOR A + OUT (BorderColor),A + CALL EMM.CheckColdInit ; инициализация памяти + POP HL ; конфигурация +; JR Reset_Handler.start +;-----------------------------------------------------------------------; + MODULE Reset_Handler +start: DI +;----[перехват soft reset #EE port]----- +Check_EE_Port: LD A,ACEX.RET_PORT + LD B,0 + ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 + ;LD C,BIOS.SET_PORTS + ;CALL @ToBIOS_3D13 ; переустановить внутр. порт #EE + CALL SET_PORTS + ; + ; [x] 20/10/2024 игнор перехватчика по клавише 0 + LD A,high ZXKeys.Line_4 + IN A,(ZXKeys) + RRCA + JR NC,No_Reset_handlers + ; + LD A,B + AND A + JR Z,Check_Spec_Page + ; + OUT (SLOT3),A ; Set restart page +.After_Hard_Rst: + LD HL,(Spec_Page.RET_addr) ; prog address + LD A,(Spec_Page.page_0) ; PAGE0 + OUT (SLOT0),A + LD A,(Spec_Page.page_1) ; PAGE1 + OUT (SLOT1),A + LD A,(Spec_Page.page_2) ; PAGE2 + OUT (SLOT2),A + LD A,(Spec_Page.Reload_Version) + CP #FF + JR Z,.JPHL ; olg logic + ; new logic +.ver_2: LD SP,(Spec_Page.Stack_Point) + AND A + LD A,#FF + LD (Spec_Page.Reload_Version),A + LD A,(Spec_Page.page_3) ; PAGE3 + OUT (SLOT3),A + JR Z,.JPHL + PUSH HL + JP EXP_FNS_2_RET +.JPHL: JP (HL) +; +;--[перехват soft/hard reset #41 page]-- +Check_Spec_Page: + LD A,Spec_Page + OUT (SLOT3),A + ; Check for hardreset flag + LD A,(Spec_Page.flag_R) + CP 'R' + JR NZ,No_Reset_handlers + LD A,(Spec_Page.flag_S) + CP 'S' + JR NZ,No_Reset_handlers + LD A,(Spec_Page.flag_T) + CP 'T' + JR NZ,No_Reset_handlers + ; + XOR A + LD (Spec_Page.flag_R),A + JR Check_EE_Port.After_Hard_Rst + ; +;--------------------------------------- +No_Reset_handlers: + XOR A ;!HARDCODE zx page number + OUT (SLOT3),A + ENDMODULE +;-----------------------------------------------------------------------; + + MODULE Prepare_For_Setup +Set_ALL_Mode: LD A,Port_All_Mode.DEFAULT + LD BC,Port_All_Mode + OUT (C),A + +Set_Default_Screen: + CALL FN_SYNC.INT_DEF ; set default int + LD A,128+4 ; !HARDCODE + CALL FN_SYNC ; set default vsync +Setup_to_RAM: LD HL,Setup_Starter.Start + LD DE,COMPILE_ADDR.SETUP_STARTER + LD BC,Setup_Starter.Size + LDIR + ; на стек кладётся адрес возврата и дальше тащится всякими костылями, чтоб вернуться назад + CALL Setup_Starter.Exec ; #C000 + ;JP PrepareToZX + ENDMODULE + +;PrepareToZX: ; Setup HDD drives for ZX Spectrum mode +; DI +; LD D,CMOS_CELL.TRDOSmount +; CALL CMOS_RD +; AND %1010'1010 ; маска для 4-х HDD +; JR Z,.start_zx +; ; find first good partition +; ; + +; ; чистка переменных ZX HDD +; IN A,(SLOT3) +; EX AF,AF +; LD A,SYS_PAGE +; OUT (SLOT3),A +; ; +; XOR A +; LD H,A +; LD L,A +; LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL +; LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL +; DEC A +; LD (SYS_PAGE.CURRENT_HDD),A +; LD (SYS_PAGE.CURRENT_DIR_DRIVE),A +; LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A +; ; +; EX AF,AF +; OUT (SLOT3),A +; EX AF,AF +; ; +; XOR A +; .loop: PUSH AF +; CALL FN_HDD_PART +; POP BC +; JR NC,.start_zx +; LD A,B +; INC A +; CP #10 +; JR C,.loop + ; выход в режим zx spectrum +.start_zx: + ; IF FREE_ZX_PAGES + ; не должно сюда попасть + LD B,high BIOS.REINIT.HARD_RESET + JP REINIT + ; ELSE ; [x] free zx pages! + ; XOR A + ; OUT (SLOT2),A ; ZERO_PAGE + ; DEC A + ; OUT (SLOT1),A ; SHARED_PAGE + ; ;LD A,5 + ; ;OUT (SLOT1),A + ; ;LD A,2 + ; ;OUT (SLOT2),A + ; ; + ; JP GOTO_SPEC.ZX_MODE + ; ENDIF +;*********************************** +; Инициализация портов +PORTS_INIT: + ; включить TURBO + LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON + OUT (SYS_PORT.ROM),A + ; ; RESET to ISA + ; LD BC,PORT_ISA + ; LD A,#FF + ; OUT (C),A + ; .isa_reset: + ; DEC A ;!FIXIT может убрать цикл ожидания и запулить 0 в ису после инита клавы? + ; JR NZ,.isa_reset + ; OUT (C),A + ; + ; Инициализация последовательного порта клавиатуры + ; reg 0 + XOR A ;LD A,0 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; reg 4 + LD A,4 + OUT (Z84.SIO.Ch_A.Ctrl),A + ;INC A ;LD A,5 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; reg 3 + LD A,3 + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,#C1 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; reg 5 + LD A,5 + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,#62 ;60, 61 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; reg 1 + LD A,1 + OUT (Z84.SIO.Ch_A.Ctrl),A + DEC A ;LD A,0 ; #18 включение прерываний + OUT (Z84.SIO.Ch_A.Ctrl),A +.mouse: ; Инициализация мыши + ; Инициализация таймера мыши + LD A,#55 + OUT (Z84.CTC.Ch_0),A + LD A,#2D ; скорость порта - второй множитель + OUT (Z84.CTC.Ch_0),A + ; reg 0 + XOR A ;LD A,0 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; reg 4 + LD A,4 + OUT (Z84.SIO.Ch_B.Ctrl),A + ;!TODO вспомнить + ;LD A,#45 + ;LD A,#44 + ; + LD A,#40 ; скорость порта - первый множитель = 16 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; reg 3 + LD A,3 + OUT (Z84.SIO.Ch_B.Ctrl),A + LD A,#41 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; reg 5 + LD A,5 + OUT (Z84.SIO.Ch_B.Ctrl),A + LD A,#E0 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; reg 1 + LD A,1 + OUT (Z84.SIO.Ch_B.Ctrl),A + DEC A ;LD A,0 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; Инициализация параллельного порта 1 (принтер) + ; !FIXIT почитать про эту хрень + ; для POST-Tester-а + ; LD A,#CF ; BITS I/O + ; OUT (Z84.PIO.Port_A.Command),A + ; XOR A + ; OUT (Z84.PIO.Port_A.Command),A ; ALL - out + ; OUT (Z84.PIO.Port_A.Data),A ; DATA - all zeros + ; для принтера + LD A,#0F ; Init printer port for Out + OUT (Z84.PIO.Port_A.Command),A + OUT (Z84.PIO.Port_A.Command),A + ; Инициализация параллельного порта 2 (INT/DMA ISA) + LD BC,Z84.PIO.Port_B.Command ;только через регистр BC, иначе Альтера перехватит + LD A,#CF ; BITS I/O + OUT (C),A + LD A,#3F + OUT (C),A + LD A,#C0 ; Bit 7 - Select (1), Bit 6 - Auto_Line_Feed (1) + OUT (Z84.PIO.Port_B.Data),A + ; "Заглушение" ковокса и ресет ISA + ; ресет ISA часть 1 + LD BC,PORT_ISA + LD A,#FF + OUT (C),A + ; глушим ковокс + XOR A + OUT (SP_SND.CBL.SYS_PORT),A + LD BC,SP_SND.CBL.OUT + LD A,#80 +.CBL_MUTE: OUT (C),A + DJNZ .CBL_MUTE + ; ресет ISA часть 2 после небольшой паузы + LD BC,PORT_ISA + XOR A + OUT (C),A + ; Сброс контроллера дисковода + ; Включить доступ к контроллеру диска (третья конфа) + LD A,CNF_PORT.CNF_3+ROM.BIOS + OUT (SYS_PORT.ROM),A + OUT (FDC_93.DrvCTRL),A : ASSERT CNF_PORT.CNF_3+ROM.BIOS = #1C, "ERROR: A != #1C" + PUSH HL ; для задержки + POP HL ; для задержки + LD A,#3C ;!HARDCODE + OUT (FDC_93.DrvCTRL),A + PUSH HL ; для задержки + POP HL ; для задержки + XOR A ;!HARDCODE CMD КР1818ВГ93 + OUT (FDC_93.Command),A + ; Выключить доступ к контроллеру диска + LD A,CNF_PORT.CNF_0+ROM.BIOS + OUT (SYS_PORT.ROM),A + ; set HDD1/not-HDD2 + LD A,IDE.Chanel.Primary + OUT (IDE.Chanel.Set),A + LD BC,#7FFD + LD A,#10 + OUT (C),A ; BASIC_48 mode + LD B,#1F + LD A,1 + OUT (C),A ; RAM-0 mode !!! + ; очистка буферов клавиатуры и мыши в SIO + CALL .clean_kbd_buf + JR .clean_mouse_buf +.clean_kbd_buf: ; Clearing the keyboard buffer + IN A,(Z84.SIO.Ch_A.Ctrl) + RRCA + RET NC + IN A,(Z84.SIO.Ch_A.Data) + JR .clean_kbd_buf +.clean_mouse_buf:; Clearing the mouse buffer + IN A,(Z84.SIO.Ch_B.Ctrl) + RRCA + RET NC + IN A,(Z84.SIO.Ch_B.Data) + JR .clean_mouse_buf +;--------------------------------------- + +;-----------------------------------------------------------------------; + + +;-----------------------------------------------------------------------; +; paths from project DIR + + INCLUDE 'BIOS_FUNC.ASM' + INCLUDE 'FUNC_4x.ASM' + INCLUDE 'FUNC_CMOS.ASM' + INCLUDE 'FUNC_SERVICE.asm' + ; INCLUDE 'EXP_SCR.ASZ' LP_SCR_MNU + INCLUDE 'FUNC_SCREEN.ASM' + INCLUDE 'FUNC_RAM_ROM_DRV.ASM' + INCLUDE 'FUNC_SYS.ASM' + INCLUDE 'FUNC_FOR_TRDOS.ASM' + INCLUDE 'FUNC_5x.asm' + INCLUDE 'FUNC_LOW_PRINT.ASM' +;-----------------------------------------------------------------------; + + +;-----------------------------------------------------------------------; +; #################################### +; #::::::::::::::::::::::::::::::::::#\ +; #::::: Место данных для DCP :::::::#\ +; #::::::::::::::::::::::::::::::::::#\ +; ####################################\ +; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +DCP_DATA: INCLUDE 'DCP.ASM' +;-----------------------------------------------------------------------; + +;-----------------------------------------------------------------------; +; +; #-2kb-############################## +; #::::::::::::::::::::::::::::::::::#\ +; #:::: Здесь место для IBM-ZG ::::::#\ +; #::::::::::::::::::::::::::::::::::#\ +; ####################################\ +; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +ZG_ADDRESS: INCLUDE 'FONT.ASM' +ZG_SIZE EQU $-ZG_ADDRESS + ASSERT (ZG_SIZE <= #800), "The font size is too big!" +;-----------------------------------------------------------------------; + + +; +; !FIXIT сделать эти фиксированные адреса отдельным файлом и с IF/ELSE и подключать их потом куда надо. +; +;????? посмотреть +;----------------------------------------------------------------------; +; BLOCK #3CC0-$,255 + ; no-magics! +;MAGIC_1: ; ЗАГЛУШКА ДЛЯ MAGIC +; PUSH AF +; LD A,ROM.EXT +; OUT (SYS_PORT.OFF),A +; POP AF +; JP MAGIC_1 +;MAGIC_3: +; PUSH AF +; LD A,ROM.EXT +; OUT (SYS_PORT.OFF),A +; POP AF +; RETN +;MAGIC_2: +;; CALL MG_BEGIN +; JR MAGIC_3 + +;************************* + _mInfoBLOCK #3CE0-$,0 +SW_ROM_1: + LD HL,#259F ;!HARDCODE BASIC_FN.x128.show_main_menu + PUSH HL + LD HL,#5B00 ;!HARDCODE BASIC_FN.x128.ROM_SWAP + LD A,(HL) + CP #F5 ; #F5 - опкод 'PUSH AF'. Проверяется то ли в #5B00 + JR Z,JP_HL_48 ; ВОЗВРАТ К МЕНЮ BASIC128 + POP HL + JR SW_ROM ; ПРОСТОЙ ВОЗВРАТ +;************************* + +; BLOCK #3CF0-$,0 +;JMP_48: +; LD HL,00h +; JR JP_HL_48 +; +; NOP +; NOP +; NOP + +;*************************************** + _mInfoBLOCK #3CF8-$,0 + ; no basic-48! +JP_HL_48: ;!FIXIT assert with ROM + PUSH HL +SW_ROM: ;!FIXIT assert with ROM + PUSH AF + LD A,ROM.BIOS ;!FIXIT неправильное название константы + OUT (SYS_PORT.RAM),A + POP AF + RET +;*************************************** +;----------------------------------------------------------------------; +; + +;!TODO спектрумовские утилиты +;----------------------------------------------------------------------; + ; _mInfoBLOCK #3CFA-$,#FF + ; LD A,0 ;!HARDCODE + ; OUT (SYS_PORT.OFF),A + ; POP AF +;----------------------------------------------------------------------; +; + + +; +;----------------------------------------------------------------------; + _mInfoBLOCK #3D00-$,#FF +DOS_ON: NOP ;!TODO работает при #7FFD[4] = 1. Как-то узнавать значение 7FFD и менять? + RET +;*************************************** + +;*************************************** +; BLOCK #3D02-$,FF +; !TODO можно оприходовать тут 17 байтов +;*************************************** + +;*************************************** + _mInfoBLOCK #3D13-$,#FF + NOP + JP ToBIOS_18 +;*************************************** + +;*************************************** +; BLOCK #3D17-$,FF +;*************************************** +; + + + + + ; IF FREE_ZX_PAGES +;-----------------------------------------------------------------------; +GOTO_SPEC: PUSH HL + LD HL,RET_TO_BIOS + EX (SP),HL + PUSH HL + PUSH AF + CALL FN_TURBO.SET_FDD_720 + POP AF + LD HL,GOTO_SPECTRUM + EX (SP),HL + JP EXTENSION_FNs + +ZX_MEMORY_MANAGER: + PUSH HL + LD HL,RET_TO_BIOS + EX (SP),HL + PUSH HL + LD HL,MANAGE_ZX_PAGES.FN_ENTRANCE + EX (SP),HL + JP EXTENSION_FNs +;-----------------------------------------------------------------------; + + +;>$< >$< >$< >$< >$< >$< [ ПЕРЕМЕЩАЕМЫЕ В ОЗУ ] >$< >$< >$< >$< >$< >$< ; +; +;---------------------[ ЗАГЛУШКИ ДЛЯ #41 СТРАНИЦЫ]----------------------; +;-------------[RST 08] +RAM_BIOS_PROG: ; for CALL BIOS in #41 page + DISP Spec_Page.to_bios + PUSH AF + LD A,ROM.BIOS + OUT (SYS_PORT.ROM),A + POP AF + RET + ENT +.Length EQU $-RAM_BIOS_PROG +;-------------------[] +; +;-------------[RST 38] +PROG_NO_ROM: + DISP Spec_Page.no_zx_rom + DI + ; + LD A,CNF_PORT.CNF_0 + OUT (SYS_PORT.RAM),A + ; + LD A,SHARED_PAGE + OUT (SLOT3),A + OUT (SLOT2),A + OUT (SLOT1),A + LD SP,#BF00 + ; + LD BC,BIOS.SET_PAL_INIT.CGA + RST ToBIOS + ; + LD E,0 + LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default + RST ToBIOS + ; + LD DE,0 + LD B,E + LD HL,#2050 + LD C,BIOS.LP_CLS_WIN + RST ToBIOS + ; + LD HL,MESSAGE_NR + LD DE,#A000 + PUSH DE + LD BC,MESSAGE_NR.size + LDIR + ; BC=0 + POP HL + SCF + EX AF,AF' + SCF + LD A,COLORS.CGA.FLASH + COLORS.CGA.INK.RED + PUSH BC + POP IY + LD DE,#0F00 + ; B=0 delimiter + LD C,BIOS.LP_PR_LINE_DIR + RST ToBIOS + ; + ; set scr-2 + LD A,1 + OUT (SCREEN_SWITCH),A +.loop: DI + HALT + JR .loop + ;Spectrum ROM configuration error + ; 10 20 30 40 50 60 70 80 + ; "123456789|123456789|123456789|123456789|123456789|123456789|123456789|123456789|" +MESSAGE_NR: DZ "\t\t\tSpectrum ROM configuration error\r\n\t\t\t Press Ctrl+Alt+Del or RESET." +.size EQU $-MESSAGE_NR + ENT +PROG_NO_ROM.size EQU $-PROG_NO_ROM +;-------------------[] +;-----------------------------------------------------------------------; +;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<; + +;-------------------------------[ #FFE0 ]-------------------------------; +; программа, которая будучи размещенной в #40 странице, +; с адреса RESTARTS, перехватывает RESET +RESTARTS_PROG: ; !TODO LDConf перехват ресета на любой конфе после hardreset + LD HL,RESTARTS + LD B,16 +.loop: LD (HL),0 + INC HL + DJNZ .loop + NOP + NOP +.Size EQU $-RESTARTS_PROG + ; LD A,1 + ; OUT (SLOT3),A +;-----------------------------------------------------------------------; + +;----------------------------[Setup Starter]----------------------------; + MODULE Setup_Starter +; программа, размещаемая по адресу #C000 для запуска Setup +Start: DISP COMPILE_ADDR.SETUP_STARTER +Exec: LD A,CNF_PORT.CNF_0 + ROM.EXTENSION + OUT (SYS_PORT.ROM),A + ; + LD HL,ROM_MAP.SETUP + LD DE,MEM_MAP.SETUP + LD BC,BLOCK_Setup.Length + LDIR + ; + LD A,CNF_PORT.CNF_0 + ROM.BIOS + OUT (SYS_PORT.ROM),A +;-----------[Check SPACE] + ; в CF передаётся нажата ли клавиша SPACE. CF=0: клавиша нажата + ; потом проверяется в main.asm [space_check] и если нажата, + ; то происходит игнор параметра "Быстрый старт ПЗУ" + ; во время перезагрузки в [Check Quick Start ROM] + LD BC,Port_All_Mode + IN H,(C) ; или LD H,#FF + LD A,Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF + OUT (C),A ; keyboard int & acc off + LD A,high ZXKeys.Line_7 + IN A,(ZXKeys) + RRA ; CF=0 клавиша нажата +;----------------------[] + OUT (C),H + DI + POP HL ; адрес возврата в EXP из SETUP + JP SETUP_MAIN + ENT +Size EQU $-Setup_Starter.Start + ENDMODULE +;-----------------------------------------------------------------------; +;-----------------------------------------------------------------------; +;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<; +; + + + + + +;*************************************** + _mInfoBLOCK #3E00-$,#FF +DOS_OFF: + PUSH AF + LD A,R + DI + PUSH AF + PUSH BC + ; + LD BC,(#5BFF) ; !HARDCODE + LD A,#C9 ; Opcode RET + LD (#5BFF),A ; !HARDCODE + CALL #5BFF ; !HARDCODE + LD (#5BFF),BC ; !HARDCODE + ; + POP BC + POP AF + JP PO,.no_EI + EI +.no_EI: POP AF + RET +;*************************************** + + +;*************************************** +; BLOCK #3E16-$,FF +; !TODO можно оприходовать тут 10 байтов +; +;*************************************** + + +//////////////////////////////////////////////////////////////////////// +;------[ ; !TODO что- то связанное с переменными LIB_TABLE ; ]------ +; _mInfoBLOCK #3E20-$,#FF +; [x] +FN_LIB: + SCF + RET +// +// IN A,(SLOT3) +// LD B,A +// LD A,SYS_PAGE +// OUT (SLOT3),A +// PUSH HL +// LD L,C ; дешефратор API изменился и теперь в C не то, что тут ожидается. Ожидается #A0..AF +// LD H,#C1 +// LD A,(HL) +// POP HL +// AND A +// SCF +// JR Z,FN_LIB_RET +// +// OUT (SLOT3),A +// LD (#C0FE),SP +// LD SP,#C0F0 +// PUSH BC +// CALL #C100 ; !HARDCODE +// POP BC +// LD SP,(#C0FE) +// ; LD A,B +// ; OUT (SLOT3),A +// ; RET +// +//FN_LIB_RET: +// LD A,B +// OUT (SLOT3),A +// ;SCF +// RET +//////////////////////////////////////////////////////////////////////// +;----------------------------------------------------------------------; +; + + + +;!TODO скомпоновать и допаять +;----------------------------------------------------------------------; +; вход A - byte +; B - speed_parameter +FN_KBD_OUT: + AND A + LD E,A + LD D,#FF + JP PE,kbd_parity ; установка паритета PE/PO ??? + LD D,#FE +kbd_parity: + AND A ; первый бит - start-bit - 0 + RL E + RL D ; в DE - 11 бит для передачи + LD C,11 + +kbd_loop: + LD A,5 + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,#60 + BIT 0,E + JR NZ,no_inv + XOR 2 ; данные +no_inv: + LD L,A + OUT (Z84.SIO.Ch_A.Ctrl),A ; выставить данные + + LD A,5 + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,L + OR #80 ; синхроимпульс + OUT (Z84.SIO.Ch_A.Ctrl),A ; импульс синхро + LD A,B ; speed_par +kbd_loop1: + PUSH HL + POP HL + DEC A + JR NZ,kbd_loop1 + LD A,5 + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,L + OUT (Z84.SIO.Ch_A.Ctrl),A ; снять импульс синхро + + LD A,B ; speed_par +kbd_loop2: + PUSH HL + POP HL + DEC A + JR NZ,kbd_loop2 + RR D + RR E + DEC C + JR NZ,kbd_loop + + LD A,5 + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,#60 + OUT (Z84.SIO.Ch_A.Ctrl),A ; закончить передачу + AND A + RET +;----------------------------------------------------------------------; + + + +;----------------------------------------------------------------------; +; DE - частота +; HL - продолжительность +BEEP: LD A,#10 + CALL .beep_loop + ; + ;XOR A + CALL .beep_loop + ; + DEC HL + LD A,H + OR L + JR NZ,BEEP + RET + ; +.beep_loop: OUT (SP_SND.Beeper),A + LD B,D + LD C,E + ; +.loop: DEC BC + LD A,B + OR C + JR NZ,.loop + RET +;----------------------------------------------------------------------; + + +;#######################################################################; + + + +;---------[Return to EXTENSION]--------- + _mInfoBLOCK #3FD0-$,#FF ; ToBIOS_FromEXT +; #3FD0 +; Для вызова функций биоса из страницы 0 ПЗУ (Extension) +RET_TO_EXTENSION: + PUSH AF + LD A,ROM.EXTENSION + OUT (SYS_PORT.ROM),A + POP AF + RST ToBIOS_18 + JP RET_TO_EXTENSION + +; !TODO Free 6 bytes +;--------------------------------------- +; + + +;---------------[ Free ]---------------- +; + _mInfoBLOCK #3FE0-$,#FF +; !TODO Free 8 bytes and entry point +;SOUND_TEST: +; LD A,ROM.EXPANSION +; OUT (SYS_PORT.ON),A +; JP SND_TEST_RET +;--------------------------------------- +; + +; [x] new portal +;------------[Portal to EXT]------------ +; точка входа/выхода для функций в ROM.EXTENSION + _mInfoBLOCK #3FE8-$,#FF +EXTENSION_FNs: ;EXP_HDD: + PUSH AF + LD A,ROM.EXTENSION + OUT (SYS_PORT.ROM),A + POP AF + RET +;--------------------------------------- +; + + +; +;---------------[ Free ]---------------- + _mInfoBLOCK #3FF0-$,#FF +; !TODO Free 8 bytes and entry point +;--------------------------------------- +; + + +; +;----[ From TR-DOS to API #80..#FF ]----- + _mInfoBLOCK #3FF8-$,#FF +; Точка входа/выхода для TR-DOS +EXP_FNS_RET: + PUSH AF + LD A,ROM.BIOS + OUT (SYS_PORT.RAM),A ; Точка входа/выхода из/в TR-DOS при вызове функций BIOS #80..#FF + JP EXP_FNS +;--------------------------------------- +; + +; + _mInfoBLOCK #4000-$,#FF ;======================================================================= \ No newline at end of file diff --git a/src/bios/exp/EXTENDED/FDD_DRIVER.asm b/bios/exp/EXTENDED/FDD_DRIVER.asm similarity index 94% rename from src/bios/exp/EXTENDED/FDD_DRIVER.asm rename to bios/exp/EXTENDED/FDD_DRIVER.asm index bf74c2f..9589720 100644 --- a/src/bios/exp/EXTENDED/FDD_DRIVER.asm +++ b/bios/exp/EXTENDED/FDD_DRIVER.asm @@ -1,781 +1,781 @@ -; !FIXIT ALL -; -;[]===========================================================[] - - -;!TODO -; объеденить процедуры FDD_5x_LONG_READ и FDD_5x_LONG_WRITE -; объеденить процедуры READ_SECTOR и WR_SEC - - -; FDD.CHANGE: -; LD A,#01 -; AND A -; RET - - - -;[]===========================================================[] -;Function: Get Current Media Parameters -; A - Disk -;Return: -; H - Heads -; L - Sectors -; DE - Cylinders -; IX - Capacity sector in bytes -; B - Flags -; D7 - "1" - High Density, "0" - Double Density -; D0 - FDD drv number -; A - D0 - "1" - Removable media -;[]===========================================================[] -;!FIXIT всегда идет работа с данными для диска А -FDD_5x_GET_PAR: IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD HL,(SYS_PAGE.FDD_TABLE.SECTORS) - LD DE,(SYS_PAGE.FDD_TABLE.CYLINDL) - LD IX,(SYS_PAGE.FDD_TABLE.BytesPerSector) - LD A,(SYS_PAGE.FDD_TABLE.DISK) - LD B,A - EX AF,AF' - OUT (SLOT3),A - XOR A - INC A ; removable media. CF=0, LD A,1 - RET - -;[]===========================================================[] -;Function: Set Current Media Parameters -; A - Disk -; H - Heads -; L - Sectors -; DE - Cylinders -; IX - Capacity sector in bytes -; B - Flags -; D7 - "1" - High Density, "0" - Double Density -;Return: None -;[]===========================================================[] -FDD_5x_SET_PAR: ;!TEST FDD 720/1440 - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD A,B - LD (SYS_PAGE.FDD_TABLE.SECTORS),HL - LD (SYS_PAGE.FDD_TABLE.CYLINDL),DE - LD (SYS_PAGE.FDD_TABLE.BytesPerSector),IX - LD (SYS_PAGE.FDD_TABLE.DISK),A - ; - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - AND A - RET - -;[]===========================================================[] -;Function: Detect Disk Density -; A - Disk -;Return: -; A - Flag D7 - "1" - High Density, "0" - Double Density -; B - bit0=1 removable -;[]===========================================================[] -FDD_5x_DETECT: CALL SAVE_INTERRUPTS.switch_off - CALL SET_DOS_ON - CALL DISK_ID - PUSH AF - CALL SET_DOS_OFF - POP AF - LD B,%0000'0001 ;bit0=1 removable, bit1=1 drive changed, bit7..2 reserved ; [ ] - JP SAVE_INTERRUPTS.restore - ;RET - -;[]===========================================================[] -;Function: Reset Disk -; A - Disk -;Return: None -;[]===========================================================[] -FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off - CALL SET_DOS_ON - CALL S_FDD - CALL DISK_ID - JR C,.int - ; [ ] размера сектора - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD H,B - LD L,0 - LD (SYS_PAGE.FDD_TABLE.BytesPerSector),HL - EX AF,AF' - OUT (SLOT3),A - ; -.int: CALL SAVE_INTERRUPTS.restore - JR C,.MOTOR_OFF - ; - CALL RESWG - XOR A ;!HARDCODE CMD КР1818ВГ93 - OUT (FDC_93.Track),A - IN A,(FDC_93.Command) - ;LD C,A - CALL SET_DOS_OFF - ;LD A,C - AND A - JP SAVE_INTERRUPTS.restore - ;RET -.MOTOR_OFF: ;PUSH AF - LD A,#D0 ;!HARDCODE CMD КР1818ВГ93 - OUT (FDC_93.Command),A ;STOP OPERATION - LD A,#00 - OUT (FDC_93.DrvCTRL),A - LD A,#3C - OUT (FDC_93.DrvCTRL),A - CALL SET_DOS_OFF - ; CF=1 - LD A,BIOS.Error.NotReady - ;POP AF - ;JP SAVE_INTERRUPTS.restore - RET -;[]===========================================================[] -;Function: Read Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;[]===========================================================[] -FDD_5x_READ: EX AF,AF' - IN A,(SLOT3) - EX AF,AF' -;[]===========================================================[] -;Function: Long Read Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -; A'- Memory Page Number -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;[]===========================================================[] -FDD_5x_LONG_READ: - EXX - LD B,#80 ; COMMAND READ ;!HARDCODE CMD КР1818ВГ93 - EXX - ; -.RW_Shared: CALL SAVE_INTERRUPTS.switch_off - CALL .Start - JP SAVE_INTERRUPTS.restore - ; -.Start: PUSH IY - PUSH BC - PUSH HL - PUSH IX - ; - EX AF,AF' - LD C,A ; Memory Page Number - EX AF,AF' - PUSH BC - CALL SET_DOS_ON - CALL S_FDD - CALL SET_SPEED - CALL NTRACK - POP BC - EX DE,HL - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD IY,(SYS_PAGE.FDD_TABLE.BytesPerSector) - LD XH,C ; Memory Page Number - LD A,(SYS_PAGE.FDD_TABLE.SECTORS) - LD C,A - EX AF,AF' - OUT (SLOT3),A -.DSK_LP: LD A,D - EXX - PUSH BC - CALL SEEK - POP BC - EXX - PUSH DE - PUSH BC - PUSH HL - CALL FDD_RW_SECTOR - JR C,.ERRDOS - ; размер сектора - LD D,YH - LD E,YL - ; - POP HL - POP BC - ADD HL,DE - ; - CALL C,CHANGE_MEM_BLK - ; -.THISRD: POP DE - LD A,C - INC E - CP E - JR NZ,.NINC_T - LD E,0 - INC D -.NINC_T: DJNZ .DSK_LP -.RETDOS: CALL SET_DOS_OFF - LD A,XH ; Memory Page Number - EX AF,AF' - EX DE,HL - POP IX - POP HL - POP BC - POP IY - LD A,B - LD C,B - INC B - DEC B - LD B,0 - JR NZ,.ADD8BIT - INC B -.ADD8BIT: ADD IX,BC - ;!TEST - ;LD BC,0 - ;ADC HL,BC - ;LD B,A - ;XOR A - ;RET - ; - LD B,A - RET NC - INC HL - XOR A - RET - ; -.ERRDOS: POP HL - POP BC - POP DE - CALL SET_DOS_OFF - EX DE,HL - EX AF,AF' - EXX - LD C,XH ; Memory Page Number - EXX - LD A,B - POP IX - POP HL - POP BC - POP IY - PUSH AF - LD C,A - LD A,B - SUB C - LD C,A - LD B,0 - ADD IX,BC - LD C,B - ADC HL,BC - POP BC - EXX - LD A,C - EXX - EX AF,AF' - SCF - RET - -;[]===========================================================[] -;Function: Write Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;[]===========================================================[] -FDD_5x_WRITE: EX AF,AF' - IN A,(SLOT3) - EX AF,AF' -;[]===========================================================[] -;Function: Long Write Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -; A'- Memory Page Number -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;?? B - Sector counter -;[]===========================================================[] -FDD_5x_LONG_WRITE: - EXX - LD B,#A0 ;COMMAND WRITE ;!HARDCODE CMD КР1818ВГ93 - EXX - JP FDD_5x_LONG_READ.RW_Shared -; -;------------------------------- -;WRITE SECTOR -;------------------------------- -FDD_RW_SECTOR: LD D,5 ;RETRY COUNT -.RETRY: ;DI - PUSH HL - PUSH DE - LD A,E - INC A - OUT (FDC_93.Sector),A - IN A,(SLOT3) - EX AF,AF' - LD A,XH - OUT (SLOT3),A - ; - LD B,4 - LD C,FDC_93.Data - EXX - LD A,B ; COMMAND read or write - EXX - OUT (FDC_93.Command),A - ; -.wait_loop: IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ - AND %1100'0000 ;b6: DRQ (запрос данных = 1). b7: INTRQ (выполняется команда = 0). - JR NZ,.RW_PROC - INC DE - LD A,E - OR D - JR NZ,.wait_loop - DJNZ .wait_loop - SCF - JR .after_rw ; error - ; -.RW_PROC: EXX - BIT 5,B - EXX - ; [ ] 15/04/25 размер сектора больше, чем установлено в SYS_PAGE.FDD_TABLE.BytesPerSector вызовет ошибку - LD D,YH - LD E,YL - INC DE - ; - JR NZ,.write_loop - ;READ BYTE -.read_loop: DEC DE - LD A,D - OR E - JR Z,.SectorSizeError - ; - INI -.wait_data_r: IN A,(FDC_93.DrvCTRL) - AND %1100'0000 ;b6: DRQ (запрос данных = 1). b7: INTRQ (выполняется команда = 0). - JR Z,.wait_data_r - JP P,.read_loop ; JUMP if "выполняется команда = 0" -.rw_return: ; -.after_rw: EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - ; - POP DE - POP HL - ;EI - LD A,BIOS.Error.NotReady - JR C,.CMD_ERROR - ; - IN A,(FDC_93.Command) - LD C,A - AND #7F - ; NORMAL EXIT - RET Z - ; - BIT 6,C - LD A,BIOS.Error.WriteProtect - JR NZ,.error_exit - ; - BIT 2,C - JR NZ,.data_lost - ; - LD A,BIOS.Error.Seek -.CMD_ERROR: DEC D - JR Z,.error_exit - ; - PUSH DE - PUSH HL - CALL RESWG ; RESET_WG - LD A,XL - CALL SEEK ; !!!!! посмотреть - POP HL - POP DE - JR .RETRY - ; -.data_lost: DEC D ; потеря данных - JR NZ,.RETRY - ; - EXX - BIT 5,B - EXX - LD A,BIOS.Error.Read ; Error Read - JR Z,.error_exit - ; - LD A,BIOS.Error.Write ; Error Write - ; -.error_exit: EX AF,AF' - LD A,#D0 ;!HARDCODE CMD КР1818ВГ93 - OUT (FDC_93.Command),A ;STOP OPERATION - EX AF,AF' - BIT 0,C - SCF - RET Z - LD A,BIOS.Error.SectorNotFound - RET - ; - ;WRITE BYTE -.write_loop: DEC DE - LD A,D - OR E - JR Z,.SectorSizeError - ; - OUTI -.wwait_data: IN A,(FDC_93.DrvCTRL) - AND %1100'0000 ;b6: DRQ (запрос данных = 1). b7: INTRQ (выполняется команда = 0). - JR Z,.wwait_data - JP P,.write_loop - JP .rw_return - ; -.SectorSizeError: - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - POP DE - POP HL - ;EI - ; A = 0 - LD C,A - LD A,BIOS.Error.UnknownDevice - JR .error_exit - - - -; -; Врубает третью карту портов -SET_DOS_ON: EX AF,AF' - LD A,CNF_PORT.CNF_3 + ROM.BIOS - OUT (SYS_PORT.ROM),A ; - OPEN - EX AF,AF' - RET -; Врубает нулевую карту портов -SET_DOS_OFF: EX AF,AF' - LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (SYS_PORT.ROM),A ; - CLOSE - EX AF,AF' - RET - -; -S_FDD: PUSH BC - AND 1 - LD B,A - OR #3C - OUT (FDC_93.DrvCTRL),A - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.FDD_TABLE.DISK) - AND #FE - OR B - LD (SYS_PAGE.FDD_TABLE.DISK),A - EX AF,AF' - OUT (SLOT3),A - POP BC - RET -; - -;----------------------------------------------------------------------; -; CHANGE_SPEED: IN A,(SLOT3) -; EX AF,AF' -; LD A,SYS_PAGE -; OUT (SLOT3),A -; LD A,(SYS_PAGE.FDD_TABLE.DISK) -; XOR #80 -; LD (SYS_PAGE.FDD_TABLE.DISK),A -; RLA -; EX AF,AF' -; OUT (SLOT3),A -; EX AF,AF' -; JR NC,FDD.SET720 -; FDD.SET1440: LD A,FDD_Density.SET_1440 -; OUT (FDD_Density),A -; RET -; ; -; ; -; SET_SPEED: IN A,(SLOT3) -; EX AF,AF' -; LD A,SYS_PAGE -; OUT (SLOT3),A -; LD A,(SYS_PAGE.FDD_TABLE.DISK) -; ;AND #80 -; RLA -; EX AF,AF' -; OUT (SLOT3),A -; EX AF,AF' -; JR C,FDD.SET1440 -; FDD.SET720: LD A,FDD_Density.SET_720 -; OUT (FDD_Density),A -; RET - -CHANGE_SPEED: IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.FDD_TABLE.DISK) - XOR #80 - LD (SYS_PAGE.FDD_TABLE.DISK),A - JR SET_SPEED.set - - ; -; -SET_SPEED: IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.FDD_TABLE.DISK) -.set: AND #80 - RRA - RRA - OR 1 - OUT (FDD_Density),A - EX AF,AF' - OUT (SLOT3),A - RET -;----------------------------------------------------------------------; - - - -//////////////////////////////////////////////////////////////////////// -; Вход: BC - внутренний и внешний счётчики -WAIT_FDD_FOR_SEARCH_TRACK: - LD A,#C0 ;!HARDCODE CMD КР1818ВГ93 - OUT (FDC_93.Command),A - PUSH BC - CALL .LOOP - POP BC - RET NC - CALL CHANGE_SPEED - DEC C - JR NZ,WAIT_FDD_FOR_SEARCH_TRACK - SCF - RET - ; -.LOOP: LD HL,#F000 -.loop_reg_HL: IN A,(FDC_93.DrvCTRL) - AND #C0 - RET NZ - ; -.ID_LP4: DEC HL - LD A,H - OR L - JR NZ,.loop_reg_HL - ; - DJNZ .LOOP - SCF - RET - - -//////////////////////////////////////////////////////////////////////// -; прерывания должны быть отключены -; выход: A - FDD_INIT_TABLE.DISK, B - sector size high byte -DISK_ID: EXX - CALL SET_SPEED - IN A,(FDC_93.Track) - OUT (FDC_93.Data),A - LD A,#18 ;!TODO выписать комманды ВГ ;SEARCH ;!HARDCODE CMD КР1818ВГ93 - CALL EXECOM - ; кусок для быстрых флоппарей - LD BC,#0104 ; 1 - счётчик - CALL WAIT_FDD_FOR_SEARCH_TRACK - JR NC,.Read_Index - ; кусок для тормозных флоппарей - LD BC,#0504 ; 1 - счётчик - CALL WAIT_FDD_FOR_SEARCH_TRACK - JR NC,.Read_Index - EXX - ;SCF - RET - ; -.Read_Index: ; - ; Данные FDC_93.Data: - ; номер цилиндра BYTE - ; номер головки BYTE - ; номер сектора BYTE - ; длина сектора BYTE - ; контрольная сумма WORD - LD H,4 ; !HARDCODE счётчик до байта размера сектора -.ID_LP2: IN A,(FDC_93.Data) - DEC H - JR NZ,.ID_LP3 - LD L,A ; [ ] размера сектора (старший байт) -.ID_LP3: IN A,(FDC_93.DrvCTRL) - AND %1100'0000 - JR Z,.ID_LP3 - JP P,.ID_LP2 - LD A,L - EXX - LD B,A ; [ ] размера сектора (старший байт) - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.FDD_TABLE.DISK) - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - AND #80 - RET -//////////////////////////////////////////////////////////////////////// - -; -SEEK: LD XL,A - LD C,A - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.FDD_TABLE.DISK) - AND 1 - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - SRL C - JR C,.GT001 - ; - OR #3C -.GT001: OR #2C - OUT (FDC_93.DrvCTRL),A - IN A,(FDC_93.Track) - CP C - CALL NZ,P50ms - LD A,C - OUT (FDC_93.Data),A - IN A,(FDC_93.Track) - CP C - EX AF,AF' ;R.TRACK==PHISICAL TRACK - LD A,#18 ;!HARDCODE CMD КР1818ВГ93 - CALL EXECOM - RET C - EX AF,AF' - LD A,C - OUT (FDC_93.Track),A - RET Z -.STOL: CALL P50ms - RET -; -;P750ms LD B,3 -;PMS2 LD A,255 -; CALL P1ms -; DJNZ PMS2 -; RET -P50ms: PUSH BC - LD A,12 -.P1ms: LD C,255 -.PMS: DEC C - JR NZ,.PMS - DEC A - JR NZ,.P1ms - POP BC - RET -; - -; -//////////////////////////////////////////////////////////////////////// -;RESWG: LD A,8 -; ; -;EXECOM: OUT (FDC_93.Command),A -; LD HL,#0000 ; счётчик -;.WREST: DEC HL -; LD A,H -; OR L -; SCF -; RET Z -; ; -; IN A,(FDC_93.DrvCTRL) -; AND #80 -; JR Z,.WREST -; RET -; -RESWG: LD A,8 ;!HARDCODE CMD КР1818ВГ93 - ; -EXECOM: OUT (FDC_93.Command),A - LD HL,#0000 ; счётчик - PUSH BC - LD B,3 ; счётчик - ; -.WREST: DEC HL - LD A,H - OR L - JR NZ,.get_state - ; - DJNZ .WREST - ; - POP BC - SCF - RET - ; -.get_state: IN A,(FDC_93.DrvCTRL) - AND #80 - JR Z,.WREST - POP BC - RET -//////////////////////////////////////////////////////////////////////// - -; -;------------------------------- -; HL:IX - SECTOR -; H - TRACK, L - SECTOR -;HL:IX/SECTOR_PER_TRACK -NTRACK: PUSH HL - EX (SP),IX - POP HL - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.FDD_TABLE.SECTORS) - LD C,A - LD B,0 - EX AF,AF' - OUT (SLOT3),A - XOR A -.NTRK: INC A - SBC HL,BC - JR NC,.NTRK - EX AF,AF' - LD A,XL - OR XH - JR Z,.NTRK3 - EX AF,AF' - DEC IX - JR .NTRK -.NTRK3: EX AF,AF' - ADD HL,BC - DEC A - LD H,A - RET -; -SAVE_INTERRUPTS: -.switch_off: PUSH AF - LD A,R - DI - LD A,#80 - JP PE,.set_R - XOR A -.set_R: LD R,A - POP AF - RET - ; ; -.restore: PUSH AF - LD A,R - DI - RLA - JR NC,.set_di - EI -.set_di: POP AF ; PE - RET +; !FIXIT ALL +; +;[]===========================================================[] + + +;!TODO +; объеденить процедуры FDD_5x_LONG_READ и FDD_5x_LONG_WRITE +; объеденить процедуры READ_SECTOR и WR_SEC + + +; FDD.CHANGE: +; LD A,#01 +; AND A +; RET + + + +;[]===========================================================[] +;Function: Get Current Media Parameters +; A - Disk +;Return: +; H - Heads +; L - Sectors +; DE - Cylinders +; IX - Capacity sector in bytes +; B - Flags +; D7 - "1" - High Density, "0" - Double Density +; D0 - FDD drv number +; A - D0 - "1" - Removable media +;[]===========================================================[] +;!FIXIT всегда идет работа с данными для диска А +FDD_5x_GET_PAR: IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD HL,(SYS_PAGE.FDD_TABLE.SECTORS) + LD DE,(SYS_PAGE.FDD_TABLE.CYLINDL) + LD IX,(SYS_PAGE.FDD_TABLE.BytesPerSector) + LD A,(SYS_PAGE.FDD_TABLE.DISK) + LD B,A + EX AF,AF' + OUT (SLOT3),A + XOR A + INC A ; removable media. CF=0, LD A,1 + RET + +;[]===========================================================[] +;Function: Set Current Media Parameters +; A - Disk +; H - Heads +; L - Sectors +; DE - Cylinders +; IX - Capacity sector in bytes +; B - Flags +; D7 - "1" - High Density, "0" - Double Density +;Return: None +;[]===========================================================[] +FDD_5x_SET_PAR: ;!TEST FDD 720/1440 + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD A,B + LD (SYS_PAGE.FDD_TABLE.SECTORS),HL + LD (SYS_PAGE.FDD_TABLE.CYLINDL),DE + LD (SYS_PAGE.FDD_TABLE.BytesPerSector),IX + LD (SYS_PAGE.FDD_TABLE.DISK),A + ; + EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + AND A + RET + +;[]===========================================================[] +;Function: Detect Disk Density +; A - Disk +;Return: +; A - Flag D7 - "1" - High Density, "0" - Double Density +; B - bit0=1 removable +;[]===========================================================[] +FDD_5x_DETECT: CALL SAVE_INTERRUPTS.switch_off + CALL SET_DOS_ON + CALL DISK_ID + PUSH AF + CALL SET_DOS_OFF + POP AF + LD B,%0000'0001 ;bit0=1 removable, bit1=1 drive changed, bit7..2 reserved ; [ ] + JP SAVE_INTERRUPTS.restore + ;RET + +;[]===========================================================[] +;Function: Reset Disk +; A - Disk +;Return: None +;[]===========================================================[] +FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off + CALL SET_DOS_ON + CALL S_FDD + CALL DISK_ID + JR C,.int + ; [ ] размера сектора + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD H,B + LD L,0 + LD (SYS_PAGE.FDD_TABLE.BytesPerSector),HL + EX AF,AF' + OUT (SLOT3),A + ; +.int: CALL SAVE_INTERRUPTS.restore + JR C,.MOTOR_OFF + ; + CALL RESWG + XOR A ;!HARDCODE CMD КР1818ВГ93 + OUT (FDC_93.Track),A + IN A,(FDC_93.Command) + ;LD C,A + CALL SET_DOS_OFF + ;LD A,C + AND A + JP SAVE_INTERRUPTS.restore + ;RET +.MOTOR_OFF: ;PUSH AF + LD A,#D0 ;!HARDCODE CMD КР1818ВГ93 + OUT (FDC_93.Command),A ;STOP OPERATION + LD A,#00 + OUT (FDC_93.DrvCTRL),A + LD A,#3C + OUT (FDC_93.DrvCTRL),A + CALL SET_DOS_OFF + ; CF=1 + LD A,BIOS.Error.NotReady + ;POP AF + ;JP SAVE_INTERRUPTS.restore + RET +;[]===========================================================[] +;Function: Read Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;[]===========================================================[] +FDD_5x_READ: EX AF,AF' + IN A,(SLOT3) + EX AF,AF' +;[]===========================================================[] +;Function: Long Read Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +; A'- Memory Page Number +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;[]===========================================================[] +FDD_5x_LONG_READ: + EXX + LD B,#80 ; COMMAND READ ;!HARDCODE CMD КР1818ВГ93 + EXX + ; +.RW_Shared: CALL SAVE_INTERRUPTS.switch_off + CALL .Start + JP SAVE_INTERRUPTS.restore + ; +.Start: PUSH IY + PUSH BC + PUSH HL + PUSH IX + ; + EX AF,AF' + LD C,A ; Memory Page Number + EX AF,AF' + PUSH BC + CALL SET_DOS_ON + CALL S_FDD + CALL SET_SPEED + CALL NTRACK + POP BC + EX DE,HL + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD IY,(SYS_PAGE.FDD_TABLE.BytesPerSector) + LD XH,C ; Memory Page Number + LD A,(SYS_PAGE.FDD_TABLE.SECTORS) + LD C,A + EX AF,AF' + OUT (SLOT3),A +.DSK_LP: LD A,D + EXX + PUSH BC + CALL SEEK + POP BC + EXX + PUSH DE + PUSH BC + PUSH HL + CALL FDD_RW_SECTOR + JR C,.ERRDOS + ; размер сектора + LD D,YH + LD E,YL + ; + POP HL + POP BC + ADD HL,DE + ; + CALL C,CHANGE_MEM_BLK + ; +.THISRD: POP DE + LD A,C + INC E + CP E + JR NZ,.NINC_T + LD E,0 + INC D +.NINC_T: DJNZ .DSK_LP +.RETDOS: CALL SET_DOS_OFF + LD A,XH ; Memory Page Number + EX AF,AF' + EX DE,HL + POP IX + POP HL + POP BC + POP IY + LD A,B + LD C,B + INC B + DEC B + LD B,0 + JR NZ,.ADD8BIT + INC B +.ADD8BIT: ADD IX,BC + ;!TEST + ;LD BC,0 + ;ADC HL,BC + ;LD B,A + ;XOR A + ;RET + ; + LD B,A + RET NC + INC HL + XOR A + RET + ; +.ERRDOS: POP HL + POP BC + POP DE + CALL SET_DOS_OFF + EX DE,HL + EX AF,AF' + EXX + LD C,XH ; Memory Page Number + EXX + LD A,B + POP IX + POP HL + POP BC + POP IY + PUSH AF + LD C,A + LD A,B + SUB C + LD C,A + LD B,0 + ADD IX,BC + LD C,B + ADC HL,BC + POP BC + EXX + LD A,C + EXX + EX AF,AF' + SCF + RET + +;[]===========================================================[] +;Function: Write Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;[]===========================================================[] +FDD_5x_WRITE: EX AF,AF' + IN A,(SLOT3) + EX AF,AF' +;[]===========================================================[] +;Function: Long Write Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +; A'- Memory Page Number +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;?? B - Sector counter +;[]===========================================================[] +FDD_5x_LONG_WRITE: + EXX + LD B,#A0 ;COMMAND WRITE ;!HARDCODE CMD КР1818ВГ93 + EXX + JP FDD_5x_LONG_READ.RW_Shared +; +;------------------------------- +;WRITE SECTOR +;------------------------------- +FDD_RW_SECTOR: LD D,5 ;RETRY COUNT +.RETRY: ;DI + PUSH HL + PUSH DE + LD A,E + INC A + OUT (FDC_93.Sector),A + IN A,(SLOT3) + EX AF,AF' + LD A,XH + OUT (SLOT3),A + ; + LD B,4 + LD C,FDC_93.Data + EXX + LD A,B ; COMMAND read or write + EXX + OUT (FDC_93.Command),A + ; +.wait_loop: IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ + AND %1100'0000 ;b6: DRQ (запрос данных = 1). b7: INTRQ (выполняется команда = 0). + JR NZ,.RW_PROC + INC DE + LD A,E + OR D + JR NZ,.wait_loop + DJNZ .wait_loop + SCF + JR .after_rw ; error + ; +.RW_PROC: EXX + BIT 5,B + EXX + ; [ ] 15/04/25 размер сектора больше, чем установлено в SYS_PAGE.FDD_TABLE.BytesPerSector вызовет ошибку + LD D,YH + LD E,YL + INC DE + ; + JR NZ,.write_loop + ;READ BYTE +.read_loop: DEC DE + LD A,D + OR E + JR Z,.SectorSizeError + ; + INI +.wait_data_r: IN A,(FDC_93.DrvCTRL) + AND %1100'0000 ;b6: DRQ (запрос данных = 1). b7: INTRQ (выполняется команда = 0). + JR Z,.wait_data_r + JP P,.read_loop ; JUMP if "выполняется команда = 0" +.rw_return: ; +.after_rw: EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + ; + POP DE + POP HL + ;EI + LD A,BIOS.Error.NotReady + JR C,.CMD_ERROR + ; + IN A,(FDC_93.Command) + LD C,A + AND #7F + ; NORMAL EXIT + RET Z + ; + BIT 6,C + LD A,BIOS.Error.WriteProtect + JR NZ,.error_exit + ; + BIT 2,C + JR NZ,.data_lost + ; + LD A,BIOS.Error.Seek +.CMD_ERROR: DEC D + JR Z,.error_exit + ; + PUSH DE + PUSH HL + CALL RESWG ; RESET_WG + LD A,XL + CALL SEEK ; !!!!! посмотреть + POP HL + POP DE + JR .RETRY + ; +.data_lost: DEC D ; потеря данных + JR NZ,.RETRY + ; + EXX + BIT 5,B + EXX + LD A,BIOS.Error.Read ; Error Read + JR Z,.error_exit + ; + LD A,BIOS.Error.Write ; Error Write + ; +.error_exit: EX AF,AF' + LD A,#D0 ;!HARDCODE CMD КР1818ВГ93 + OUT (FDC_93.Command),A ;STOP OPERATION + EX AF,AF' + BIT 0,C + SCF + RET Z + LD A,BIOS.Error.SectorNotFound + RET + ; + ;WRITE BYTE +.write_loop: DEC DE + LD A,D + OR E + JR Z,.SectorSizeError + ; + OUTI +.wwait_data: IN A,(FDC_93.DrvCTRL) + AND %1100'0000 ;b6: DRQ (запрос данных = 1). b7: INTRQ (выполняется команда = 0). + JR Z,.wwait_data + JP P,.write_loop + JP .rw_return + ; +.SectorSizeError: + EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + POP DE + POP HL + ;EI + ; A = 0 + LD C,A + LD A,BIOS.Error.UnknownDevice + JR .error_exit + + + +; +; Врубает третью карту портов +SET_DOS_ON: EX AF,AF' + LD A,CNF_PORT.CNF_3 + ROM.BIOS + OUT (SYS_PORT.ROM),A ; - OPEN + EX AF,AF' + RET +; Врубает нулевую карту портов +SET_DOS_OFF: EX AF,AF' + LD A,CNF_PORT.CNF_0 + ROM.BIOS + OUT (SYS_PORT.ROM),A ; - CLOSE + EX AF,AF' + RET + +; +S_FDD: PUSH BC + AND 1 + LD B,A + OR #3C + OUT (FDC_93.DrvCTRL),A + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.FDD_TABLE.DISK) + AND #FE + OR B + LD (SYS_PAGE.FDD_TABLE.DISK),A + EX AF,AF' + OUT (SLOT3),A + POP BC + RET +; + +;----------------------------------------------------------------------; +; CHANGE_SPEED: IN A,(SLOT3) +; EX AF,AF' +; LD A,SYS_PAGE +; OUT (SLOT3),A +; LD A,(SYS_PAGE.FDD_TABLE.DISK) +; XOR #80 +; LD (SYS_PAGE.FDD_TABLE.DISK),A +; RLA +; EX AF,AF' +; OUT (SLOT3),A +; EX AF,AF' +; JR NC,FDD.SET720 +; FDD.SET1440: LD A,FDD_Density.SET_1440 +; OUT (FDD_Density),A +; RET +; ; +; ; +; SET_SPEED: IN A,(SLOT3) +; EX AF,AF' +; LD A,SYS_PAGE +; OUT (SLOT3),A +; LD A,(SYS_PAGE.FDD_TABLE.DISK) +; ;AND #80 +; RLA +; EX AF,AF' +; OUT (SLOT3),A +; EX AF,AF' +; JR C,FDD.SET1440 +; FDD.SET720: LD A,FDD_Density.SET_720 +; OUT (FDD_Density),A +; RET + +CHANGE_SPEED: IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.FDD_TABLE.DISK) + XOR #80 + LD (SYS_PAGE.FDD_TABLE.DISK),A + JR SET_SPEED.set + + ; +; +SET_SPEED: IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.FDD_TABLE.DISK) +.set: AND #80 + RRA + RRA + OR 1 + OUT (FDD_Density),A + EX AF,AF' + OUT (SLOT3),A + RET +;----------------------------------------------------------------------; + + + +//////////////////////////////////////////////////////////////////////// +; Вход: BC - внутренний и внешний счётчики +WAIT_FDD_FOR_SEARCH_TRACK: + LD A,#C0 ;!HARDCODE CMD КР1818ВГ93 + OUT (FDC_93.Command),A + PUSH BC + CALL .LOOP + POP BC + RET NC + CALL CHANGE_SPEED + DEC C + JR NZ,WAIT_FDD_FOR_SEARCH_TRACK + SCF + RET + ; +.LOOP: LD HL,#F000 +.loop_reg_HL: IN A,(FDC_93.DrvCTRL) + AND #C0 + RET NZ + ; +.ID_LP4: DEC HL + LD A,H + OR L + JR NZ,.loop_reg_HL + ; + DJNZ .LOOP + SCF + RET + + +//////////////////////////////////////////////////////////////////////// +; прерывания должны быть отключены +; выход: A - FDD_INIT_TABLE.DISK, B - sector size high byte +DISK_ID: EXX + CALL SET_SPEED + IN A,(FDC_93.Track) + OUT (FDC_93.Data),A + LD A,#18 ;!TODO выписать комманды ВГ ;SEARCH ;!HARDCODE CMD КР1818ВГ93 + CALL EXECOM + ; кусок для быстрых флоппарей + LD BC,#0104 ; 1 - счётчик + CALL WAIT_FDD_FOR_SEARCH_TRACK + JR NC,.Read_Index + ; кусок для тормозных флоппарей + LD BC,#0504 ; 1 - счётчик + CALL WAIT_FDD_FOR_SEARCH_TRACK + JR NC,.Read_Index + EXX + ;SCF + RET + ; +.Read_Index: ; + ; Данные FDC_93.Data: + ; номер цилиндра BYTE + ; номер головки BYTE + ; номер сектора BYTE + ; длина сектора BYTE + ; контрольная сумма WORD + LD H,4 ; !HARDCODE счётчик до байта размера сектора +.ID_LP2: IN A,(FDC_93.Data) + DEC H + JR NZ,.ID_LP3 + LD L,A ; [ ] размера сектора (старший байт) +.ID_LP3: IN A,(FDC_93.DrvCTRL) + AND %1100'0000 + JR Z,.ID_LP3 + JP P,.ID_LP2 + LD A,L + EXX + LD B,A ; [ ] размера сектора (старший байт) + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.FDD_TABLE.DISK) + EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + AND #80 + RET +//////////////////////////////////////////////////////////////////////// + +; +SEEK: LD XL,A + LD C,A + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.FDD_TABLE.DISK) + AND 1 + EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + SRL C + JR C,.GT001 + ; + OR #3C +.GT001: OR #2C + OUT (FDC_93.DrvCTRL),A + IN A,(FDC_93.Track) + CP C + CALL NZ,P50ms + LD A,C + OUT (FDC_93.Data),A + IN A,(FDC_93.Track) + CP C + EX AF,AF' ;R.TRACK==PHISICAL TRACK + LD A,#18 ;!HARDCODE CMD КР1818ВГ93 + CALL EXECOM + RET C + EX AF,AF' + LD A,C + OUT (FDC_93.Track),A + RET Z +.STOL: CALL P50ms + RET +; +;P750ms LD B,3 +;PMS2 LD A,255 +; CALL P1ms +; DJNZ PMS2 +; RET +P50ms: PUSH BC + LD A,12 +.P1ms: LD C,255 +.PMS: DEC C + JR NZ,.PMS + DEC A + JR NZ,.P1ms + POP BC + RET +; + +; +//////////////////////////////////////////////////////////////////////// +;RESWG: LD A,8 +; ; +;EXECOM: OUT (FDC_93.Command),A +; LD HL,#0000 ; счётчик +;.WREST: DEC HL +; LD A,H +; OR L +; SCF +; RET Z +; ; +; IN A,(FDC_93.DrvCTRL) +; AND #80 +; JR Z,.WREST +; RET +; +RESWG: LD A,8 ;!HARDCODE CMD КР1818ВГ93 + ; +EXECOM: OUT (FDC_93.Command),A + LD HL,#0000 ; счётчик + PUSH BC + LD B,3 ; счётчик + ; +.WREST: DEC HL + LD A,H + OR L + JR NZ,.get_state + ; + DJNZ .WREST + ; + POP BC + SCF + RET + ; +.get_state: IN A,(FDC_93.DrvCTRL) + AND #80 + JR Z,.WREST + POP BC + RET +//////////////////////////////////////////////////////////////////////// + +; +;------------------------------- +; HL:IX - SECTOR +; H - TRACK, L - SECTOR +;HL:IX/SECTOR_PER_TRACK +NTRACK: PUSH HL + EX (SP),IX + POP HL + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.FDD_TABLE.SECTORS) + LD C,A + LD B,0 + EX AF,AF' + OUT (SLOT3),A + XOR A +.NTRK: INC A + SBC HL,BC + JR NC,.NTRK + EX AF,AF' + LD A,XL + OR XH + JR Z,.NTRK3 + EX AF,AF' + DEC IX + JR .NTRK +.NTRK3: EX AF,AF' + ADD HL,BC + DEC A + LD H,A + RET +; +SAVE_INTERRUPTS: +.switch_off: PUSH AF + LD A,R + DI + LD A,#80 + JP PE,.set_R + XOR A +.set_R: LD R,A + POP AF + RET + ; ; +.restore: PUSH AF + LD A,R + DI + RLA + JR NC,.set_di + EI +.set_di: POP AF ; PE + RET ;[]===========================================================[] \ No newline at end of file diff --git a/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM b/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM similarity index 95% rename from src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM rename to bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM index 92a1aef..fa5cab7 100644 --- a/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM +++ b/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM @@ -1,938 +1,938 @@ -;[x] 18/12/2023. добавление/допиливание API CD-ROM (ATAPI) -;██████████████████████████████████████████████████████████████████████████ -;CD ROM DRIVE DRIVER -;--------------------------------------------------------------- -;Rev Date Name Description -;--------------------------------------------------------------- -; 02-08-2001 DNS Initial this module -;--------------------------------------------------------------- -;======================================================== - -;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO -; -; [ ] установка параметра максимального размера для чтения через DRV_SET_PAR -; -;---------------------------------------------------------------------------------- -MAX_ATAPI_SEC_SIZE EQU 4096/2 -PACKET_SIZE EQU 12 ; !FIXIT брать из IDENTIFY PACKET DEVICE -RAM_ATAPI_PK EQU SYS_PAGE.SHARED_BUFFER_32b -RAM_ATAPI_RW_CMD EQU SYS_PAGE.SHARED_BUFFER_32b+16 -MAX_DATA_PACKET_FOR_REQUEST_SENSE EQU 254 - - -_ZIP_WAITS_ EQU 128 - - ASSERT ((PACKET_SIZE % 4) = 0), "PACKET_SIZE must be an even number" - -;[]================================================================[#51] -;!FIXIT сделать настоящий ресет -ATAPI_5x_RESET: LD C,IDE.Device.ATAPI - CALL SELECT_DRIVE - RET C - LD B,50 -.loop: PUSH BC - CALL EXEC_TEST_CMD - ;!FIXIT ;[ ] sector size. сделать реинит HDD_INIT_TABLE - POP BC - RET NC - LD C,A - ; - ;CALL ATAPI_CHECK_MEDIA_CHANGED.noWait - ;RET C - CP BIOS.Error.ATAPI.UnitAttention - SCF - RET Z - ; - CP BIOS.Error.ATAPI.MediumError - SCF - RET Z - ; не трогать прерывания - ; EI - ; HALT - EXX - XOR A -.pause_loop: LD B,A - DJNZ $ - DEC A - JR NZ,.pause_loop - EXX - DJNZ .loop - LD A,C - AND A - SCF - RET NZ - RET -/* -HL = 1e00 - B = 1 -ATAPI_WAITPRT.LOOP -DE = 00FF -*/ -;[]================================================================[#51] - - -;[]================================================================[#58] -;Function: Get Current Media Parameters -; A - Disk -;Return: -; H - Heads ; [ ] For ATAPI HL:DE - media size in sectors -; L - Sectors per cylinder ; -; DE - Cylinders ; -; IX - Capacity sector in bytes -; B - Flags: MASTER/SLAVE, LBA/CHS -; [ ] A - HDD_INIT_TABLE.MediaParameters -; IF media changed -; [ ] CF' = 1, A' = error number UnitAttention -ATAPI_5x_GET_PAR: - LD C,IDE.Device.ATAPI - CALL SELECT_DRIVE - RET C - ; -.DriveSelected: IN A,(SLOT3) - AND A - PUSH AF - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - ; - ; [ ] sector size. media changed - RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media - CALL ATAPI_CHECK_MEDIA_CHANGED - EX AF,AF' - POP AF - EX AF,AF' - JR NC,.get_data - ; - CP BIOS.Error.ATAPI.UnitAttention - JR Z,.UnitAttention - ; - CP BIOS.Error.ATAPI.MediumError - JR NZ,.unknown_error - ;!FIXIT костыль - LD A,BIOS.Error.ATAPI.UnitAttention ;!FIXIT костыль - RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media - ; -.unknown_error: LD HL,#FFFF - LD D,H - LD E,L - PUSH HL - POP IX - SCF - EX AF,AF' ; тут маскируем ошибку, изначально CF=1 только если устройство отсутствует - OUT (SLOT3),A - RET - ; -.UnitAttention: RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media - EX AF,AF' - SCF - EX AF,AF' -.get_data: LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters) - AND %000'0100 - CALL NZ,.RereadCapacity - ; - LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters) - LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) - ; [ ] sector size - LD E,(IY+IDE.HDD_INIT_TABLE.SectorSize) - LD D,(IY+IDE.HDD_INIT_TABLE.SectorSize + 1) - LD XL,E - LD XH,D - ; [ ] media size - LD L,(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh) - LD H,(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1) - LD E,(IY+IDE.HDD_INIT_TABLE.MediaSizeLow) - LD D,(IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1) - ; - EX AF,AF' - OUT (SLOT3),A - LD A,BIOS.Error.ATAPI.UnitAttention ; если CF, то номер ошибки - EX AF,AF - RET -.RereadCapacity: - EX AF,AF' - PUSH AF - CALL GET_ATAPI_CAPACITY - POP AF - EX AF,AF' - RET -;[]================================================================[#58] - - -;[]================================================================[#59] -; [ ] media changed -ATAPI_5x_SET_PAR: - LD L,B - LD C,IDE.Device.ATAPI - CALL SELECT_DRIVE - RET C - ; - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),B - EX AF,AF - OUT (SLOT3),A - RET -;[]================================================================[#59] - - - -;!TODO -; atapi.pdf стр. 24 запись/чтение могут быть максимальными блоками в несколько заходов -;[]================================================================[#55] -;Function: Read Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;READ SECTOR(S) -ATAPI_5x_READ: ;PUSH IY ; !FIXIT зачем? - LD C,0 ; признак short - EX AF,AF' - IN A,(SLOT3) - EX AF,AF' - JR ATAPI_5x_LONG_READ.main -;[]================================================================[#52] -;Function: Long Read Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -; A'- Memory Page Number -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;LONG READ SECTOR(S) -ATAPI_5x_LONG_READ: - ;AND A - ; - ;PUSH IY ; !FIXIT зачем? - LD C,1 ; признак long -.main: EX AF,AF' - AND A ;read - EX AF,AF' - JR ATAPI_BEGIN_RW - ; - ; SAFE_PORTY_2 - ; PUSH BC - ; PUSH IX - ; PUSH HL - ; ; - ; CALL RW_ATAPI_SECTORs - ; ; [ ] sector size. media changed - ; JP ATA_5x_LONG_READ.shared - ; JP NC,ATA_5x_LONG_READ.shared - ; CP BIOS.Error.UnitAttention - ; JR Z,ATAPI_MEDIA_ERROR - ; SCF -;[]================================================================[#52] -; INPUT: -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -; A'- Memory Page Number -; CF'=1 - write, CF'=0 - read -; -; OUTPUT: -; -RW_ATAPI_SECTORs: - PUSH BC - LD C,IDE.Device.ATAPI - CALL SELECT_DRIVE - POP BC - RET C - ; - EXX - LD C,SLOT3 - IN B,(C) - PUSH BC - LD A,SYS_PAGE - OUT (C),A - ; [ ] media change - LD A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) - AND %0000'0010 - JR NZ,.error_media - ; - LD HL,ATAPI_CMD_PACKET.READ - EX AF,AF' - JR NC,.read_cmd - LD HL,ATAPI_CMD_PACKET.WRITE -.read_cmd: EX AF,AF' - LD DE,RAM_ATAPI_RW_CMD - LD BC,PACKET_SIZE - LDIR - EXX - ; - LD A,H - LD H,L - LD L,A - LD (RAM_ATAPI_RW_CMD + ATAPI_PACKET.SECTOR+0),HL - LD A,XH - LD (RAM_ATAPI_RW_CMD + ATAPI_PACKET.SECTOR+2),A ;R01 - LD A,XL - LD (RAM_ATAPI_RW_CMD + ATAPI_PACKET.SECTOR+3),A ;R01 - LD A,B - LD (RAM_ATAPI_RW_CMD + ATAPI_PACKET.COUNTER+1),A ;R01 - ; - LD YL,C ; признак short/long из C в YL - LD HL,RAM_ATAPI_RW_CMD - CALL EXEC_PACKET_COMMAND.start - ; -.exit: POP BC - OUT (C),B - RET - ; -.error_media: EXX - LD A,BIOS.Error.ATAPI.UnitAttention - SCF - JR .exit - -;[]===========================================================[#52, #55] - -ATAPI_BEGIN_RW: SAFE_PORTY_2 - PUSH BC - PUSH IX - PUSH HL - ; - CALL RW_ATAPI_SECTORs - ; - JP ATA_5x_LONG_READ.shared - -;[]================================================================[#56] -;Function: Write Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;WRITE SECTOR(S) -ATAPI_5x_WRITE: ;PUSH IY ; !FIXIT зачем? - ; проба бага - LD C,0 ; признак short - ;LD C,1 ; признак long - ; - EX AF,AF' - IN A,(SLOT3) - EX AF,AF' - JR ATAPI_5x_LONG_WRITE.main -;[]================================================================[#53] -;Function: Long Write Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -; A'- Memory Page Number -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;WRITE SECTOR(S) -ATAPI_5x_LONG_WRITE: - ;AND A - ; - ;PUSH IY ; !FIXIT зачем? - LD C,1 ; признак long -.main: EX AF,AF' - SCF ;write - EX AF,AF' - JR ATAPI_BEGIN_RW -;[]================================================================[#53] - -;[]================================================================[#57] -;Function: Detect Disk -; A - Disk -;Return: CF=0 - A=Drive type -; B=MediaParameters byte ; [ ] media change -; CF=1 - drive not present, A=#02 -ATAPI_5x_DETECT: - LD C,IDE.Device.ATAPI - JP ATA_5x_DETECT.shared -;[]================================================================[#57] - -;[]================================================================[#5E] -; [ ] -;Function: Extended -; A - Disk -; B - SubFunction -;Return: -; [ ] расписать в доке -ATAPI_5x_Extended: - LD C,IDE.Device.ATAPI - CALL SELECT_DRIVE - RET C - ; - LD A,B - CP 2 - JR C,TRAY_FN ; B = 0 или 1 - ; - JR Z,ATAPI_REQUEST_SENSE ; B = 2 - ; - CP 3 - JR Z,ATAPI_CUSTOM_CMD - ; ... - LD A,BIOS.Error.InvalidSubFunction - SCF - RET -;[]================================================================[#5E] - -;----------------------------------------------------------------------;!TODO сделать доступной через расширенную функцию API -; вход: DE - адрес для данных -ATAPI_REQUEST_SENSE: - IN A,(SLOT3) - EX AF,AF' -.FN: LD HL,ATAPI_CMD_PACKET.REQUEST_SENSE - JR EXEC_PACKET_COMMAND.start -;----------------------------------------------------------------------; - -;[ ] media changed -;----------------------------------------------------------------------; -ATAPI_CHECK_MEDIA_CHANGED: - CALL EXEC_TEST_CMD ;!FIXIT а может и не надо - RET C - ; -.next_check: EXX - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - ; - LD A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) - OUT (C),B - EXX - RRA - RRA - LD A,BIOS.Error.ATAPI.UnitAttention - RET -;----------------------------------------------------------------------; - - - -;----------------------------------------------------------------------; -; HL - указатель на пакетную команду (первый или второй слот) -; DE - указатель на буффер для команды -ATAPI_CUSTOM_CMD: - IN A,(SLOT3) - EX AF,AF' - LD A,1 ; признак, что ошибка смены носителя НЕ обрабатываться в EXEC_PACKET_COMMAND - JP EXEC_PACKET_COMMAND.start_custom -;----------------------------------------------------------------------; - - -;----------------------------------------------------------------------; -TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE - LD DE,0 ; маркер того, что не нужно читать с устройства в ОЗУ - DEC A - JR Z,EXEC_PACKET_COMMAND.start - LD HL,ATAPI_CMD_PACKET.OPEN - JR EXEC_PACKET_COMMAND.start - -; INPUT: HL - AP packet (12bytes) -; DE - address for/with data if needed -; A' - начальная страница для R/W Long -; -; RETURN: CF - ERROR -; !FIXIT номера неправильные -; !TODO CD ERRORS to INCLUDES -; #01 - RECOVERED ERROR -; #02 - NOT READY -; #03 - MEDIUM ERROR -; #04 - HARDWARE ERROR -; #05 - ILLEGAL REQUEST -; #06 - UNIT ATTETION -; #07 - DATA PROTECT -; #0B - ABORTED COMMAND -; #80 - TIME OUT -EXEC_PACKET_COMMAND: -.error_ex: EX DE,HL -.error: CP #FF -.error_fail: SCF - RET NZ - LD A,BIOS.Error.Failure - RET - ; -.error_TimeOut: CP #FF - EX DE,HL - JR Z,.error_fail - LD A,BIOS.Error.ATAPI.TimeOut - SCF - RET - ; - ; -; -.start: XOR A ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND -.start_custom: EXX - LD C,A ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND - CALL ATAPI_WAITPRT - EXX - JR NC,.READY - ; -.reset: LD BC,IDE.Write.Command - LD A,IDE.CMD.ATAPI.Reset - OUT (C),A - ; - LD B,#80 -.pause: DJNZ .pause - ; - EXX - CALL ATAPI_WAITPRT - EXX - JR C,.error_ex - ; -.READY: LD C,SLOT3 - IN B,(C) - PUSH DE - PUSH BC - ; - LD A,SYS_PAGE - OUT (C),A - LD DE,RAM_ATAPI_PK ;!FIXIT может на стеке выделять место? - LD BC,PACKET_SIZE - LDIR - ; - POP BC - POP DE - OUT (C),B - ; - XOR A - EXX - LD H,C ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND - LD BC,IDE.Write.Features - OUT (C),A - LD DE,MAX_ATAPI_SEC_SIZE ;SIZE BLOCK ;!HARDCODE доставать из переменной какой-нибудь - LD BC,IDE.Write.ByteCountLow - OUT (C),E - LD BC,IDE.Write.ByteCountHigh - OUT (C),D - LD BC,IDE.Write.Command - LD A,IDE.CMD.ATAPI.Packet - OUT (C),A - LD C,H ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND - CALL ATAPI_WAITPRT - EXX - JR C,.error_ex - ; - EXX - LD DE,256*(IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest - CALL ATAPI_WAITPRT.Custom - EXX - JR C,.error_TimeOut - ; - ; EXEC ATAPI PACKET COMMAND -.YEP_DRQ: LD C,SLOT3 - IN B,(C) - PUSH BC - LD A,SYS_PAGE - OUT (SLOT3),A - LD HL,RAM_ATAPI_PK - LD BC,IDE.Write.Data - LD A,PACKET_SIZE/4 ; !FIXIT брать из IDENTIFY PACKET DEVICE -.OUTPKT: OUTI - OUTI - OUTI - OUTI - DEC A - JR NZ,.OUTPKT - ; - POP BC - OUT (C),B - ; pause - ; LD B,0 - ; DJNZ $ - ; DJNZ $ - ; - EX AF,AF' - LD XH,A ; страница для R/W_LONG - EX AF,AF' - ;A=0 - LD XL,A - EX DE,HL - ; -.AP_LOOP: ;CALL ATAPI_WAITPRT.wait_NZ - LD B,_ZIP_WAITS_ - DJNZ $ - CALL ATAPI_CHECK_DRV - JP C,.error;_APLOOP - RET Z - ;====== IF DATA REQUEST ===============================================; - IN A,(SLOT3) - EX AF,AF' ;>-----------> \ - ; - LD A,XH - OUT (SLOT3),A - CALL ATAPI_PREPARE_RW - RET NC - JR Z,.WRITE_DATA - ;READ -.read_loop: INI - INI - DEC DE - LD A,D - OR E - JR NZ,.read_loop - ; -.return_rw: EX AF,AF' ;<-----------< / - INC XL ;INC LOADED SECTORS - OUT (SLOT3),A - ; - LD A,H - OR L - JR NZ,.AP_LOOP - ; short/long - ; A = 0 - SUB YL - JR NC,.END_BUFFER - ; next page in mem block - CALL CHANGE_MEM_BLK - JR .AP_LOOP - ;WRITE -.WRITE_DATA: INC B ; LD BC,IDE.Write.Data -.write_loop: OUTI - OUTI - DEC DE - LD A,D - OR E - JR NZ,.write_loop - JR .return_rw - ; ; -.END_BUFFER: ;CALL ATAPI_WAITPRT.wait_NZ - LD B,_ZIP_WAITS_ - DJNZ $ - CALL ATAPI_CHECK_DRV - JP C,.error - JR NZ,ATAPI_IdlePasses.Enter - RET - ; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -ATAPI_IdlePasses: - LD B,_ZIP_WAITS_ - DJNZ $ - CALL ATAPI_CHECK_DRV - JP C,EXEC_PACKET_COMMAND.error - JP Z,EXEC_PACKET_COMMAND.error_fail - ; -.Enter: CALL ATAPI_PREPARE_RW - RET NC - JR Z,.write_data - ; -.read_loop: IN F,(C) ; читаем по 1 разу с чётного адреса, читается WORD - DEC DE - LD A,D - OR E - JR NZ,.read_loop - JR ATAPI_IdlePasses - ; -.write_data: ; A = 0 - OUT (C),A ; кидаем 0 в регистр защёлку IDE - INC B -.write_loop: XOR A - OUT (C),A ; пишем по 1 разу в нечётный адрес, пишется WORD - DEC DE - LD A,D - OR E - JR NZ,.write_loop - JR ATAPI_IdlePasses - ; -; выход: -; CF,ZF ATAPI_WAITPRT Error или Check Condition со внешней обработкой -; ZF No errors, no data request -; NZ,NC DATA REQUEST -; CF Error -ATAPI_CHECK_DRV: - ;EX DE,HL - EXX - ;CALL .zeroWait - CALL ATAPI_WAITPRT - EXX - ; ZF=1 - RET C - ; - ; [ ] media change. а надо ли тут? ;!FIXIT лучше блокировать носитель - LD A,high IDE.Read.Status - IN A,(low IDE.Read.Status) - ; - AND IDE.CtrlByte.DataRequest + IDE.CtrlByte.Error - RET Z ;NO DATA REQUEST. A = 0: BIOS.Error.NoErrors - RRA ; Checking IDE.CtrlByte.CheckCondition - RET NC ; DataRequest CF=0, ZF=0 - ; - CALL ATAPI_GET_ERROR_REG - EXX - DEC C ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND - EXX - SCF - RET Z ; выход, если ошибка обрабатывается не в EXEC_PACKET_COMMAND - ; - ; CP BIOS.Error.ATAPI.NoSence - ; JP Z,ATAPI_MEDIA_ERROR - CP BIOS.Error.ATAPI.NotReady - JP Z,ATAPI_MEDIA_ERROR - CP BIOS.Error.ATAPI.UnitAttention - JP Z,ATAPI_MEDIA_ERROR - ; - ;CP BIOS.Error.ATAPI.IllegalRequest - ;RET Z - ; - SCF - RET - ; - -ATAPI_PREPARE_RW: - LD BC,IDE.Read.ByteCountLow - IN E,(C) - INC C ;LD BC,IDE.Read.ByteCountHigh - IN D,(C) ;TRANSFER BLOCK SIZE - ; - LD A,D - OR E - RET Z ;BLOCK = 0 - ; - ; уменьшаем счётчик загружаемых байтов в 2 раза. Читаем по 2 байта - SRL D - RR E - ; - LD BC,IDE.Read.InterruptReason - IN A,(C) - AND IDE.InterruptReasonByte.IO - LD BC,IDE.Read.Data - SCF - RET -;----------------------------------------------------------------------; - - -;----------------------------------------------------------------------; -; портим только регистр AF -ATAPI_GET_ERROR_REG: - XOR A ;LD BC,IDE.Read.Error - IN A,(IDE.Read.Error) ;IN A,(C) - RRCA - RRCA - RRCA - RRCA - AND #0F - OR BIOS.Error.ATAPI - RET -;----------------------------------------------------------------------; - - - -;----------------------------------------------------------------------; -; D - MASK, E - PATTERN -; !!! некоторые функции надеются, что на выходе всегда ZF -; не должна трогать рег. C -ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0 -.Custom: LD B,9 ; 3 = общая задержка около секунды - LD HL,#0000 - ; 4 128 768 -.LOOP: LD A,high IDE.Read.Status - IN A,(low IDE.Read.Status) - CP #FF - SCF - RET Z - ; - AND D - CP E - RET Z - ; - DEC HL - LD A,H - OR L - JR NZ,.LOOP - DJNZ .LOOP - ; - LD A,BIOS.Error.Busy - SCF - RET -;----------------------------------------------------------------------; - - -;----------------------------------------------------------------------; -; DE - buffer -ATAPI_READ_CAPACITY_DATA: - LD BC,28 ;счётчик - ; -.loop: PUSH BC - PUSH DE - LD A,SYS_PAGE - EX AF,AF' - LD A,1 - LD HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA - CALL EXEC_PACKET_COMMAND.start_custom - POP DE - POP BC - RET NC - ; - CALL ATAPI_GET_ERROR_REG - CP BIOS.Error.ATAPI.NotReady - SCF - RET NZ - ; - PUSH BC - CALL ATAPI_MEDIA_ERROR - CP BIOS.Error.ATAPI.NotReady - SCF - POP BC - RET NZ - ; - CPI - RET PO ;счётчик - ; - LD HL,0 -.pause: DEC HL - LD A,H - OR L - JR NZ,.pause - ; - JP .loop - ;RET -;----------------------------------------------------------------------; - - -;----------------------------------------------------------------------; -ATAPI_MEDIA_ERROR: - PUSH IX - PUSH HL - ; - IN A,(SLOT3) - PUSH AF - LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' ; set page with buffer to SYS_PAGE - LD DE,SYS_PAGE.SHARED_BUFFER_256b - CALL ATAPI_REQUEST_SENSE.FN - ; - LD A,(SYS_PAGE.SHARED_BUFFER_256b + 2) ; SenceKey - CP 2 ; NOT READY - JR Z,.Not_Ready - CP 6 ; UNIT ATTENTION - JR NZ,.unkn_error - ; - LD A,(SYS_PAGE.SHARED_BUFFER_256b + 12) ; AdditionalSenceKey - CP #28 ; NOT READY TO READY TRANSITION - JR Z,.MedCh3 - CP #29 ; POWER ON, RESET OR BUS DEVICE RESET OCCURRED - JR Z,.MedChanged - JR .unkn_error - ; -.MedCh3: LD A,(SYS_PAGE.SHARED_BUFFER_256b + 13) ; AdditionalSenseCodeQualifier. 0 - AND A - JR NZ,.unkn_error - ; -.MedChanged: LD A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) - OR %0000'0011 - LD (IY + IDE.HDD_INIT_TABLE.MediaParameters),A - ; - CALL GET_ATAPI_CAPACITY -.exit: POP AF - POP HL - POP IX - OUT (SLOT3),A - LD A,C - SCF - RET - ; -.Not_Ready: LD A,(SYS_PAGE.SHARED_BUFFER_256b + 12) ; AdditionalSenceKey - LD C,BIOS.Error.ATAPI.MediumError ; нет носителя - ;!TODO - ; 06,00 - NO REFERENCE POSITION FOUND (media may be upside down) - ; 3A - MEDIUM NOT PRESENT - ; - CP 4 - JR NZ,.exit - ; [ ] !(test for ZIP) - LD A,(SYS_PAGE.SHARED_BUFFER_256b + 13) ; AdditionalSenseCodeQualifier - CP 1 ; LOGICAL DRIVE NOT READY - IN PROGRESS OF BECOMING READY - JR NZ,.exit - ; - ; идёт инициализация - LD C,BIOS.Error.ATAPI.NotReady - JR .exit - ; -.unkn_error: LD C,BIOS.Error.ATAPI.MediumError - JR .exit - - -;----------------------------------------------------------------------; -GET_ATAPI_CAPACITY: - ; - LD DE,SYS_PAGE.TMP_BUFFER - CALL ATAPI_READ_CAPACITY_DATA - ; - LD HL,#FFFF - LD C,BIOS.Error.ATAPI.MediumError - JR C,.No_Media - ; - LD HL,(SYS_PAGE.TMP_BUFFER) ; media size high - LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh),H - LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1),L - LD HL,(SYS_PAGE.TMP_BUFFER + 2) ; media size low - LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow),H - LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1),L - LD HL,(SYS_PAGE.TMP_BUFFER + 6) ; sector size - ; - LD C,BIOS.Error.ATAPI.UnitAttention -.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H ;[ ] sector size - LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L - RET NC - SET 2,(IY + IDE.HDD_INIT_TABLE.MediaParameters) - RET -;----------------------------------------------------------------------; - -;----------------------------------------------------------------------; - -; !!! SELECT_DRIVE должен отработать заранее -EXEC_TEST_CMD: LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY - LD DE,0 ; маркер того, что не нужно читать с устройства в ОЗУ - JP EXEC_PACKET_COMMAND.start - -//////////////////////////////////////////////////////////////////////// -ATAPI_CMD_PACKET: -.TEST_UNIT_READY: DUP 12 - DB #00 - EDUP -; -.OPEN: DB #1B - DB #00,#00,#00 - DB #02 - DB #00,#00,#00,#00,#00,#00,#00 -; -.CLOSE: DB #1B - DB #00,#00,#00 - DB #03 - DB #00,#00,#00,#00,#00,#00,#00 -; -.READ: DB #28,#00 - DB #00,#00,#00,#00 ; sector dword - DB #00 - DB #00,#01,#00,#00 ; counter dword - DB #00 -; -.WRITE: DB #2E,#00 ; write and verify - DB #00,#00,#00,#00 ; sector dword - DB #00 - DB #00,#01,#00,#00 ; counter dword - DB #00 -; -.READ_CAPACITY_DATA: DB #25 - BLOCK 11,0 -; -.REQUEST_SENSE: DB #03 - DB #00,#00,#00 - DB MAX_DATA_PACKET_FOR_REQUEST_SENSE - DB #00,#00,#00,#00,#00,#00,#00 -; -ATAPI_PACKET: -.SECTOR EQU 2 -.COUNTER EQU 7 -//////////////////////////////////////////////////////////////////////// - - -; Если ловится ошибка media changed, то биос должен выставлять в HDD_INIT_TABLE.MediaParameters = 3 -; и затирать FF SectorSize. +;[x] 18/12/2023. добавление/допиливание API CD-ROM (ATAPI) +;██████████████████████████████████████████████████████████████████████████ +;CD ROM DRIVE DRIVER +;--------------------------------------------------------------- +;Rev Date Name Description +;--------------------------------------------------------------- +; 02-08-2001 DNS Initial this module +;--------------------------------------------------------------- +;======================================================== + +;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO ;!TODO +; +; [ ] установка параметра максимального размера для чтения через DRV_SET_PAR +; +;---------------------------------------------------------------------------------- +MAX_ATAPI_SEC_SIZE EQU 4096/2 +PACKET_SIZE EQU 12 ; !FIXIT брать из IDENTIFY PACKET DEVICE +RAM_ATAPI_PK EQU SYS_PAGE.SHARED_BUFFER_32b +RAM_ATAPI_RW_CMD EQU SYS_PAGE.SHARED_BUFFER_32b+16 +MAX_DATA_PACKET_FOR_REQUEST_SENSE EQU 254 + + +_ZIP_WAITS_ EQU 128 + + ASSERT ((PACKET_SIZE % 4) = 0), "PACKET_SIZE must be an even number" + +;[]================================================================[#51] +;!FIXIT сделать настоящий ресет +ATAPI_5x_RESET: LD C,IDE.Device.ATAPI + CALL SELECT_DRIVE + RET C + LD B,50 +.loop: PUSH BC + CALL EXEC_TEST_CMD + ;!FIXIT ;[ ] sector size. сделать реинит HDD_INIT_TABLE + POP BC + RET NC + LD C,A + ; + ;CALL ATAPI_CHECK_MEDIA_CHANGED.noWait + ;RET C + CP BIOS.Error.ATAPI.UnitAttention + SCF + RET Z + ; + CP BIOS.Error.ATAPI.MediumError + SCF + RET Z + ; не трогать прерывания + ; EI + ; HALT + EXX + XOR A +.pause_loop: LD B,A + DJNZ $ + DEC A + JR NZ,.pause_loop + EXX + DJNZ .loop + LD A,C + AND A + SCF + RET NZ + RET +/* +HL = 1e00 + B = 1 +ATAPI_WAITPRT.LOOP +DE = 00FF +*/ +;[]================================================================[#51] + + +;[]================================================================[#58] +;Function: Get Current Media Parameters +; A - Disk +;Return: +; H - Heads ; [ ] For ATAPI HL:DE - media size in sectors +; L - Sectors per cylinder ; +; DE - Cylinders ; +; IX - Capacity sector in bytes +; B - Flags: MASTER/SLAVE, LBA/CHS +; [ ] A - HDD_INIT_TABLE.MediaParameters +; IF media changed +; [ ] CF' = 1, A' = error number UnitAttention +ATAPI_5x_GET_PAR: + LD C,IDE.Device.ATAPI + CALL SELECT_DRIVE + RET C + ; +.DriveSelected: IN A,(SLOT3) + AND A + PUSH AF + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + ; + ; [ ] sector size. media changed + RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media + CALL ATAPI_CHECK_MEDIA_CHANGED + EX AF,AF' + POP AF + EX AF,AF' + JR NC,.get_data + ; + CP BIOS.Error.ATAPI.UnitAttention + JR Z,.UnitAttention + ; + CP BIOS.Error.ATAPI.MediumError + JR NZ,.unknown_error + ;!FIXIT костыль + LD A,BIOS.Error.ATAPI.UnitAttention ;!FIXIT костыль + RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media + ; +.unknown_error: LD HL,#FFFF + LD D,H + LD E,L + PUSH HL + POP IX + SCF + EX AF,AF' ; тут маскируем ошибку, изначально CF=1 только если устройство отсутствует + OUT (SLOT3),A + RET + ; +.UnitAttention: RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media + EX AF,AF' + SCF + EX AF,AF' +.get_data: LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters) + AND %000'0100 + CALL NZ,.RereadCapacity + ; + LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters) + LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) + ; [ ] sector size + LD E,(IY+IDE.HDD_INIT_TABLE.SectorSize) + LD D,(IY+IDE.HDD_INIT_TABLE.SectorSize + 1) + LD XL,E + LD XH,D + ; [ ] media size + LD L,(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh) + LD H,(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1) + LD E,(IY+IDE.HDD_INIT_TABLE.MediaSizeLow) + LD D,(IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1) + ; + EX AF,AF' + OUT (SLOT3),A + LD A,BIOS.Error.ATAPI.UnitAttention ; если CF, то номер ошибки + EX AF,AF + RET +.RereadCapacity: + EX AF,AF' + PUSH AF + CALL GET_ATAPI_CAPACITY + POP AF + EX AF,AF' + RET +;[]================================================================[#58] + + +;[]================================================================[#59] +; [ ] media changed +ATAPI_5x_SET_PAR: + LD L,B + LD C,IDE.Device.ATAPI + CALL SELECT_DRIVE + RET C + ; + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),B + EX AF,AF + OUT (SLOT3),A + RET +;[]================================================================[#59] + + + +;!TODO +; atapi.pdf стр. 24 запись/чтение могут быть максимальными блоками в несколько заходов +;[]================================================================[#55] +;Function: Read Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;READ SECTOR(S) +ATAPI_5x_READ: ;PUSH IY ; !FIXIT зачем? + LD C,0 ; признак short + EX AF,AF' + IN A,(SLOT3) + EX AF,AF' + JR ATAPI_5x_LONG_READ.main +;[]================================================================[#52] +;Function: Long Read Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +; A'- Memory Page Number +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;LONG READ SECTOR(S) +ATAPI_5x_LONG_READ: + ;AND A + ; + ;PUSH IY ; !FIXIT зачем? + LD C,1 ; признак long +.main: EX AF,AF' + AND A ;read + EX AF,AF' + JR ATAPI_BEGIN_RW + ; + ; SAFE_PORTY_2 + ; PUSH BC + ; PUSH IX + ; PUSH HL + ; ; + ; CALL RW_ATAPI_SECTORs + ; ; [ ] sector size. media changed + ; JP ATA_5x_LONG_READ.shared + ; JP NC,ATA_5x_LONG_READ.shared + ; CP BIOS.Error.UnitAttention + ; JR Z,ATAPI_MEDIA_ERROR + ; SCF +;[]================================================================[#52] +; INPUT: +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +; A'- Memory Page Number +; CF'=1 - write, CF'=0 - read +; +; OUTPUT: +; +RW_ATAPI_SECTORs: + PUSH BC + LD C,IDE.Device.ATAPI + CALL SELECT_DRIVE + POP BC + RET C + ; + EXX + LD C,SLOT3 + IN B,(C) + PUSH BC + LD A,SYS_PAGE + OUT (C),A + ; [ ] media change + LD A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) + AND %0000'0010 + JR NZ,.error_media + ; + LD HL,ATAPI_CMD_PACKET.READ + EX AF,AF' + JR NC,.read_cmd + LD HL,ATAPI_CMD_PACKET.WRITE +.read_cmd: EX AF,AF' + LD DE,RAM_ATAPI_RW_CMD + LD BC,PACKET_SIZE + LDIR + EXX + ; + LD A,H + LD H,L + LD L,A + LD (RAM_ATAPI_RW_CMD + ATAPI_PACKET.SECTOR+0),HL + LD A,XH + LD (RAM_ATAPI_RW_CMD + ATAPI_PACKET.SECTOR+2),A ;R01 + LD A,XL + LD (RAM_ATAPI_RW_CMD + ATAPI_PACKET.SECTOR+3),A ;R01 + LD A,B + LD (RAM_ATAPI_RW_CMD + ATAPI_PACKET.COUNTER+1),A ;R01 + ; + LD YL,C ; признак short/long из C в YL + LD HL,RAM_ATAPI_RW_CMD + CALL EXEC_PACKET_COMMAND.start + ; +.exit: POP BC + OUT (C),B + RET + ; +.error_media: EXX + LD A,BIOS.Error.ATAPI.UnitAttention + SCF + JR .exit + +;[]===========================================================[#52, #55] + +ATAPI_BEGIN_RW: SAFE_PORTY_2 + PUSH BC + PUSH IX + PUSH HL + ; + CALL RW_ATAPI_SECTORs + ; + JP ATA_5x_LONG_READ.shared + +;[]================================================================[#56] +;Function: Write Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;WRITE SECTOR(S) +ATAPI_5x_WRITE: ;PUSH IY ; !FIXIT зачем? + ; проба бага + LD C,0 ; признак short + ;LD C,1 ; признак long + ; + EX AF,AF' + IN A,(SLOT3) + EX AF,AF' + JR ATAPI_5x_LONG_WRITE.main +;[]================================================================[#53] +;Function: Long Write Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +; A'- Memory Page Number +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;WRITE SECTOR(S) +ATAPI_5x_LONG_WRITE: + ;AND A + ; + ;PUSH IY ; !FIXIT зачем? + LD C,1 ; признак long +.main: EX AF,AF' + SCF ;write + EX AF,AF' + JR ATAPI_BEGIN_RW +;[]================================================================[#53] + +;[]================================================================[#57] +;Function: Detect Disk +; A - Disk +;Return: CF=0 - A=Drive type +; B=MediaParameters byte ; [ ] media change +; CF=1 - drive not present, A=#02 +ATAPI_5x_DETECT: + LD C,IDE.Device.ATAPI + JP ATA_5x_DETECT.shared +;[]================================================================[#57] + +;[]================================================================[#5E] +; [ ] +;Function: Extended +; A - Disk +; B - SubFunction +;Return: +; [ ] расписать в доке +ATAPI_5x_Extended: + LD C,IDE.Device.ATAPI + CALL SELECT_DRIVE + RET C + ; + LD A,B + CP 2 + JR C,TRAY_FN ; B = 0 или 1 + ; + JR Z,ATAPI_REQUEST_SENSE ; B = 2 + ; + CP 3 + JR Z,ATAPI_CUSTOM_CMD + ; ... + LD A,BIOS.Error.InvalidSubFunction + SCF + RET +;[]================================================================[#5E] + +;----------------------------------------------------------------------;!TODO сделать доступной через расширенную функцию API +; вход: DE - адрес для данных +ATAPI_REQUEST_SENSE: + IN A,(SLOT3) + EX AF,AF' +.FN: LD HL,ATAPI_CMD_PACKET.REQUEST_SENSE + JR EXEC_PACKET_COMMAND.start +;----------------------------------------------------------------------; + +;[ ] media changed +;----------------------------------------------------------------------; +ATAPI_CHECK_MEDIA_CHANGED: + CALL EXEC_TEST_CMD ;!FIXIT а может и не надо + RET C + ; +.next_check: EXX + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + ; + LD A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) + OUT (C),B + EXX + RRA + RRA + LD A,BIOS.Error.ATAPI.UnitAttention + RET +;----------------------------------------------------------------------; + + + +;----------------------------------------------------------------------; +; HL - указатель на пакетную команду (первый или второй слот) +; DE - указатель на буффер для команды +ATAPI_CUSTOM_CMD: + IN A,(SLOT3) + EX AF,AF' + LD A,1 ; признак, что ошибка смены носителя НЕ обрабатываться в EXEC_PACKET_COMMAND + JP EXEC_PACKET_COMMAND.start_custom +;----------------------------------------------------------------------; + + +;----------------------------------------------------------------------; +TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE + LD DE,0 ; маркер того, что не нужно читать с устройства в ОЗУ + DEC A + JR Z,EXEC_PACKET_COMMAND.start + LD HL,ATAPI_CMD_PACKET.OPEN + JR EXEC_PACKET_COMMAND.start + +; INPUT: HL - AP packet (12bytes) +; DE - address for/with data if needed +; A' - начальная страница для R/W Long +; +; RETURN: CF - ERROR +; !FIXIT номера неправильные +; !TODO CD ERRORS to INCLUDES +; #01 - RECOVERED ERROR +; #02 - NOT READY +; #03 - MEDIUM ERROR +; #04 - HARDWARE ERROR +; #05 - ILLEGAL REQUEST +; #06 - UNIT ATTETION +; #07 - DATA PROTECT +; #0B - ABORTED COMMAND +; #80 - TIME OUT +EXEC_PACKET_COMMAND: +.error_ex: EX DE,HL +.error: CP #FF +.error_fail: SCF + RET NZ + LD A,BIOS.Error.Failure + RET + ; +.error_TimeOut: CP #FF + EX DE,HL + JR Z,.error_fail + LD A,BIOS.Error.ATAPI.TimeOut + SCF + RET + ; + ; +; +.start: XOR A ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND +.start_custom: EXX + LD C,A ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND + CALL ATAPI_WAITPRT + EXX + JR NC,.READY + ; +.reset: LD BC,IDE.Write.Command + LD A,IDE.CMD.ATAPI.Reset + OUT (C),A + ; + LD B,#80 +.pause: DJNZ .pause + ; + EXX + CALL ATAPI_WAITPRT + EXX + JR C,.error_ex + ; +.READY: LD C,SLOT3 + IN B,(C) + PUSH DE + PUSH BC + ; + LD A,SYS_PAGE + OUT (C),A + LD DE,RAM_ATAPI_PK ;!FIXIT может на стеке выделять место? + LD BC,PACKET_SIZE + LDIR + ; + POP BC + POP DE + OUT (C),B + ; + XOR A + EXX + LD H,C ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND + LD BC,IDE.Write.Features + OUT (C),A + LD DE,MAX_ATAPI_SEC_SIZE ;SIZE BLOCK ;!HARDCODE доставать из переменной какой-нибудь + LD BC,IDE.Write.ByteCountLow + OUT (C),E + LD BC,IDE.Write.ByteCountHigh + OUT (C),D + LD BC,IDE.Write.Command + LD A,IDE.CMD.ATAPI.Packet + OUT (C),A + LD C,H ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND + CALL ATAPI_WAITPRT + EXX + JR C,.error_ex + ; + EXX + LD DE,256*(IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest + CALL ATAPI_WAITPRT.Custom + EXX + JR C,.error_TimeOut + ; + ; EXEC ATAPI PACKET COMMAND +.YEP_DRQ: LD C,SLOT3 + IN B,(C) + PUSH BC + LD A,SYS_PAGE + OUT (SLOT3),A + LD HL,RAM_ATAPI_PK + LD BC,IDE.Write.Data + LD A,PACKET_SIZE/4 ; !FIXIT брать из IDENTIFY PACKET DEVICE +.OUTPKT: OUTI + OUTI + OUTI + OUTI + DEC A + JR NZ,.OUTPKT + ; + POP BC + OUT (C),B + ; pause + ; LD B,0 + ; DJNZ $ + ; DJNZ $ + ; + EX AF,AF' + LD XH,A ; страница для R/W_LONG + EX AF,AF' + ;A=0 + LD XL,A + EX DE,HL + ; +.AP_LOOP: ;CALL ATAPI_WAITPRT.wait_NZ + LD B,_ZIP_WAITS_ + DJNZ $ + CALL ATAPI_CHECK_DRV + JP C,.error;_APLOOP + RET Z + ;====== IF DATA REQUEST ===============================================; + IN A,(SLOT3) + EX AF,AF' ;>-----------> \ + ; + LD A,XH + OUT (SLOT3),A + CALL ATAPI_PREPARE_RW + RET NC + JR Z,.WRITE_DATA + ;READ +.read_loop: INI + INI + DEC DE + LD A,D + OR E + JR NZ,.read_loop + ; +.return_rw: EX AF,AF' ;<-----------< / + INC XL ;INC LOADED SECTORS + OUT (SLOT3),A + ; + LD A,H + OR L + JR NZ,.AP_LOOP + ; short/long + ; A = 0 + SUB YL + JR NC,.END_BUFFER + ; next page in mem block + CALL CHANGE_MEM_BLK + JR .AP_LOOP + ;WRITE +.WRITE_DATA: INC B ; LD BC,IDE.Write.Data +.write_loop: OUTI + OUTI + DEC DE + LD A,D + OR E + JR NZ,.write_loop + JR .return_rw + ; ; +.END_BUFFER: ;CALL ATAPI_WAITPRT.wait_NZ + LD B,_ZIP_WAITS_ + DJNZ $ + CALL ATAPI_CHECK_DRV + JP C,.error + JR NZ,ATAPI_IdlePasses.Enter + RET + ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +ATAPI_IdlePasses: + LD B,_ZIP_WAITS_ + DJNZ $ + CALL ATAPI_CHECK_DRV + JP C,EXEC_PACKET_COMMAND.error + JP Z,EXEC_PACKET_COMMAND.error_fail + ; +.Enter: CALL ATAPI_PREPARE_RW + RET NC + JR Z,.write_data + ; +.read_loop: IN F,(C) ; читаем по 1 разу с чётного адреса, читается WORD + DEC DE + LD A,D + OR E + JR NZ,.read_loop + JR ATAPI_IdlePasses + ; +.write_data: ; A = 0 + OUT (C),A ; кидаем 0 в регистр защёлку IDE + INC B +.write_loop: XOR A + OUT (C),A ; пишем по 1 разу в нечётный адрес, пишется WORD + DEC DE + LD A,D + OR E + JR NZ,.write_loop + JR ATAPI_IdlePasses + ; +; выход: +; CF,ZF ATAPI_WAITPRT Error или Check Condition со внешней обработкой +; ZF No errors, no data request +; NZ,NC DATA REQUEST +; CF Error +ATAPI_CHECK_DRV: + ;EX DE,HL + EXX + ;CALL .zeroWait + CALL ATAPI_WAITPRT + EXX + ; ZF=1 + RET C + ; + ; [ ] media change. а надо ли тут? ;!FIXIT лучше блокировать носитель + LD A,high IDE.Read.Status + IN A,(low IDE.Read.Status) + ; + AND IDE.CtrlByte.DataRequest + IDE.CtrlByte.Error + RET Z ;NO DATA REQUEST. A = 0: BIOS.Error.NoErrors + RRA ; Checking IDE.CtrlByte.CheckCondition + RET NC ; DataRequest CF=0, ZF=0 + ; + CALL ATAPI_GET_ERROR_REG + EXX + DEC C ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND + EXX + SCF + RET Z ; выход, если ошибка обрабатывается не в EXEC_PACKET_COMMAND + ; + ; CP BIOS.Error.ATAPI.NoSence + ; JP Z,ATAPI_MEDIA_ERROR + CP BIOS.Error.ATAPI.NotReady + JP Z,ATAPI_MEDIA_ERROR + CP BIOS.Error.ATAPI.UnitAttention + JP Z,ATAPI_MEDIA_ERROR + ; + ;CP BIOS.Error.ATAPI.IllegalRequest + ;RET Z + ; + SCF + RET + ; + +ATAPI_PREPARE_RW: + LD BC,IDE.Read.ByteCountLow + IN E,(C) + INC C ;LD BC,IDE.Read.ByteCountHigh + IN D,(C) ;TRANSFER BLOCK SIZE + ; + LD A,D + OR E + RET Z ;BLOCK = 0 + ; + ; уменьшаем счётчик загружаемых байтов в 2 раза. Читаем по 2 байта + SRL D + RR E + ; + LD BC,IDE.Read.InterruptReason + IN A,(C) + AND IDE.InterruptReasonByte.IO + LD BC,IDE.Read.Data + SCF + RET +;----------------------------------------------------------------------; + + +;----------------------------------------------------------------------; +; портим только регистр AF +ATAPI_GET_ERROR_REG: + XOR A ;LD BC,IDE.Read.Error + IN A,(IDE.Read.Error) ;IN A,(C) + RRCA + RRCA + RRCA + RRCA + AND #0F + OR BIOS.Error.ATAPI + RET +;----------------------------------------------------------------------; + + + +;----------------------------------------------------------------------; +; D - MASK, E - PATTERN +; !!! некоторые функции надеются, что на выходе всегда ZF +; не должна трогать рег. C +ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0 +.Custom: LD B,9 ; 3 = общая задержка около секунды + LD HL,#0000 + ; 4 128 768 +.LOOP: LD A,high IDE.Read.Status + IN A,(low IDE.Read.Status) + CP #FF + SCF + RET Z + ; + AND D + CP E + RET Z + ; + DEC HL + LD A,H + OR L + JR NZ,.LOOP + DJNZ .LOOP + ; + LD A,BIOS.Error.Busy + SCF + RET +;----------------------------------------------------------------------; + + +;----------------------------------------------------------------------; +; DE - buffer +ATAPI_READ_CAPACITY_DATA: + LD BC,28 ;счётчик + ; +.loop: PUSH BC + PUSH DE + LD A,SYS_PAGE + EX AF,AF' + LD A,1 + LD HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA + CALL EXEC_PACKET_COMMAND.start_custom + POP DE + POP BC + RET NC + ; + CALL ATAPI_GET_ERROR_REG + CP BIOS.Error.ATAPI.NotReady + SCF + RET NZ + ; + PUSH BC + CALL ATAPI_MEDIA_ERROR + CP BIOS.Error.ATAPI.NotReady + SCF + POP BC + RET NZ + ; + CPI + RET PO ;счётчик + ; + LD HL,0 +.pause: DEC HL + LD A,H + OR L + JR NZ,.pause + ; + JP .loop + ;RET +;----------------------------------------------------------------------; + + +;----------------------------------------------------------------------; +ATAPI_MEDIA_ERROR: + PUSH IX + PUSH HL + ; + IN A,(SLOT3) + PUSH AF + LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' ; set page with buffer to SYS_PAGE + LD DE,SYS_PAGE.SHARED_BUFFER_256b + CALL ATAPI_REQUEST_SENSE.FN + ; + LD A,(SYS_PAGE.SHARED_BUFFER_256b + 2) ; SenceKey + CP 2 ; NOT READY + JR Z,.Not_Ready + CP 6 ; UNIT ATTENTION + JR NZ,.unkn_error + ; + LD A,(SYS_PAGE.SHARED_BUFFER_256b + 12) ; AdditionalSenceKey + CP #28 ; NOT READY TO READY TRANSITION + JR Z,.MedCh3 + CP #29 ; POWER ON, RESET OR BUS DEVICE RESET OCCURRED + JR Z,.MedChanged + JR .unkn_error + ; +.MedCh3: LD A,(SYS_PAGE.SHARED_BUFFER_256b + 13) ; AdditionalSenseCodeQualifier. 0 + AND A + JR NZ,.unkn_error + ; +.MedChanged: LD A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) + OR %0000'0011 + LD (IY + IDE.HDD_INIT_TABLE.MediaParameters),A + ; + CALL GET_ATAPI_CAPACITY +.exit: POP AF + POP HL + POP IX + OUT (SLOT3),A + LD A,C + SCF + RET + ; +.Not_Ready: LD A,(SYS_PAGE.SHARED_BUFFER_256b + 12) ; AdditionalSenceKey + LD C,BIOS.Error.ATAPI.MediumError ; нет носителя + ;!TODO + ; 06,00 - NO REFERENCE POSITION FOUND (media may be upside down) + ; 3A - MEDIUM NOT PRESENT + ; + CP 4 + JR NZ,.exit + ; [ ] !(test for ZIP) + LD A,(SYS_PAGE.SHARED_BUFFER_256b + 13) ; AdditionalSenseCodeQualifier + CP 1 ; LOGICAL DRIVE NOT READY - IN PROGRESS OF BECOMING READY + JR NZ,.exit + ; + ; идёт инициализация + LD C,BIOS.Error.ATAPI.NotReady + JR .exit + ; +.unkn_error: LD C,BIOS.Error.ATAPI.MediumError + JR .exit + + +;----------------------------------------------------------------------; +GET_ATAPI_CAPACITY: + ; + LD DE,SYS_PAGE.TMP_BUFFER + CALL ATAPI_READ_CAPACITY_DATA + ; + LD HL,#FFFF + LD C,BIOS.Error.ATAPI.MediumError + JR C,.No_Media + ; + LD HL,(SYS_PAGE.TMP_BUFFER) ; media size high + LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh),H + LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1),L + LD HL,(SYS_PAGE.TMP_BUFFER + 2) ; media size low + LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow),H + LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1),L + LD HL,(SYS_PAGE.TMP_BUFFER + 6) ; sector size + ; + LD C,BIOS.Error.ATAPI.UnitAttention +.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H ;[ ] sector size + LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L + RET NC + SET 2,(IY + IDE.HDD_INIT_TABLE.MediaParameters) + RET +;----------------------------------------------------------------------; + +;----------------------------------------------------------------------; + +; !!! SELECT_DRIVE должен отработать заранее +EXEC_TEST_CMD: LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY + LD DE,0 ; маркер того, что не нужно читать с устройства в ОЗУ + JP EXEC_PACKET_COMMAND.start + +//////////////////////////////////////////////////////////////////////// +ATAPI_CMD_PACKET: +.TEST_UNIT_READY: DUP 12 + DB #00 + EDUP +; +.OPEN: DB #1B + DB #00,#00,#00 + DB #02 + DB #00,#00,#00,#00,#00,#00,#00 +; +.CLOSE: DB #1B + DB #00,#00,#00 + DB #03 + DB #00,#00,#00,#00,#00,#00,#00 +; +.READ: DB #28,#00 + DB #00,#00,#00,#00 ; sector dword + DB #00 + DB #00,#01,#00,#00 ; counter dword + DB #00 +; +.WRITE: DB #2E,#00 ; write and verify + DB #00,#00,#00,#00 ; sector dword + DB #00 + DB #00,#01,#00,#00 ; counter dword + DB #00 +; +.READ_CAPACITY_DATA: DB #25 + BLOCK 11,0 +; +.REQUEST_SENSE: DB #03 + DB #00,#00,#00 + DB MAX_DATA_PACKET_FOR_REQUEST_SENSE + DB #00,#00,#00,#00,#00,#00,#00 +; +ATAPI_PACKET: +.SECTOR EQU 2 +.COUNTER EQU 7 +//////////////////////////////////////////////////////////////////////// + + +; Если ловится ошибка media changed, то биос должен выставлять в HDD_INIT_TABLE.MediaParameters = 3 +; и затирать FF SectorSize. ; Дос после получения такой ошибки должен вызывать BIOS.DRV_DETECT и если всё ОК, то ReScanDRV \ No newline at end of file diff --git a/src/bios/exp/EXTENDED/IDE/ATA_DRV.ASM b/bios/exp/EXTENDED/IDE/ATA_DRV.ASM similarity index 95% rename from src/bios/exp/EXTENDED/IDE/ATA_DRV.ASM rename to bios/exp/EXTENDED/IDE/ATA_DRV.ASM index b1e6dd5..ad76d1f 100644 --- a/src/bios/exp/EXTENDED/IDE/ATA_DRV.ASM +++ b/bios/exp/EXTENDED/IDE/ATA_DRV.ASM @@ -1,735 +1,735 @@ - -;======================================================== -;R03 !25.07.2001! BUG FIX WITH RETURN ERROR CODE -;R02 !24.07.2001! ADD SECONDARY CHANEL -;R01 !16.08.2000! REMOVED "DI" - -/* -;Write -IDE.Write.Command EQU #4153 ; #1F7 Command -IDE.Write.DeviceHead EQU #4152 ; #1F6 Drive Control - -HDW_CLH EQU #0155 ; #1F5 Cylinder High -HDW_CLL EQU #0154 ; #1F4 Cylinder Low -HDW_SEC EQU #0153 ; #1F3 Sector -HDW_CNT EQU #0152 ; #1F2 Counter -HDW_ERR EQU #0151 ; #1F1 Error -HDW_DAT EQU #0150 ; #1F0 Data - -;Read -IDE.Read.Status EQU #4053 ; #1F7 Status (Control) -HDR_DRV EQU #4052 ; #1F6 Drive Control - -HDR_CLH EQU #0055 ; #1F5 Cylinder High -HDR_CLL EQU #0054 ; #1F4 Cylinder Low -HDR_SEC EQU #0053 ; #1F3 Sector -HDR_CNT EQU #0052 ; #1F2 Counter -HDR_ERR EQU #0051 ; #1F1 Error -HDR_DAT EQU #0050 ; #1F0 Data - -;Bits for IDE.Read.Status -;---[] -BSY EQU 7 -RDY EQU 6 -DRQ EQU 3 -ERR EQU 0 -;---[] - -HDD EQU 1 -CDROM EQU 2 - - -;EQU FOR IY+ -IDE.HDD_INIT_TABLE.DRV_Flags EQU 0 -IDE.HDD_INIT_TABLE.SectorsPerTrack EQU 1 -IDE.HDD_INIT_TABLE.HeadsNumber EQU 2 -IDE.HDD_INIT_TABLE.CylinderNumberLow EQU 3 -IDE.HDD_INIT_TABLE.CylinderNumberHigh EQU 4 -IDE.HDD_INIT_TABLE.SectorsPerCylinderLow EQU 5 -IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh EQU 6 -DTYPE_H EQU 7 - -IDE0 EQU #C1C0 -IDE1 EQU #C1C8 -IDE2 EQU #C1D0 -IDE3 EQU #C1D8 -*/ - -;IDE0 DB #FF ;DRIVE/HEAD REGISTER ;00 -; DB #FF ;SECTORS PER TRACK ;01 -; DB #FF ;HEADS ;02 -; DB #FF ;CYLINDERS LOW ;03 -; DB #FF ;CYLINDERS HIGH ;04 -; DB #FF ;SECTOR PER CYLINDER LOW ;05 -; DB #FF ;SECTOR PER CYLINDER HIGH ;06 -; DB #FF ;RESERVED ;07 - -;IDE1 DB #FF ;DRIVE/HEAD REGISTER ;00 -; DB #FF ;SECTORS PER TRACK ;01 -; DB #FF ;HEADS ;02 -; DB #FF ;CYLINDERS LOW ;03 -; DB #FF ;CYLINDERS HIGH ;04 -; DB #FF ;SECTOR PER CYLINDER LOW ;05 -; DB #FF ;SECTOR PER CYLINDER HIGH ;06 -; DB #FF ;RESERVED ;07 - - -WRITE_OUTI_DUPs EQU 32 ; bytes - -;[]================================================================[#51] -;Function: Reset drive -ATA_5x_RESET: ; !FIXIT не ресетится? -;For non-ATAPI drives, the only method a driver has of resetting a drive -; after a major error is to do a "software reset" on the bus. -; Set bit 2 (SRST, value = 4) in the proper Control Register for the -; bus. This will reset both ATA devices on the bus. Then, you have to -; clear that bit again, yourself. The master drive on the bus is -; automatically selected. - XOR A - RET -;[]================================================================[#51] - - -;[]================================================================[#58] -;Function: Get Current Media Parameters -; A - Disk -;Return: -; H - Heads -; L - Sectors per cylinder -; DE - Cylinders -; IX - Capacity sector in bytes -; B - Flags: MASTER/SLAVE, LBA/CHS -ATA_5x_GET_PAR: - LD C,IDE.Device.HDD - CALL SELECT_DRIVE - RET C - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters) - LD L,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) - LD H,(IY+IDE.HDD_INIT_TABLE.HeadsNumber) - LD E,(IY+IDE.HDD_INIT_TABLE.CylinderNumberLow) - LD D,(IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh) - LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) - LD IX,512 ;!HARDCODE ; [ ] sector size - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - AND A - RET -;[]================================================================[#58] - -;[]================================================================[#59] -;Function: Set Current Media Parameters -; A - Disk -; H - Heads -; L - Sectors -; DE - Cylinders -; IX - Capacity sector in bytes -; B - Flags -;Return: None -ATA_5x_SET_PAR: - LD C,IDE.Device.HDD - CALL SELECT_DRIVE - RET C - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD (IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),L - LD (IY+IDE.HDD_INIT_TABLE.HeadsNumber),H - LD (IY+IDE.HDD_INIT_TABLE.CylinderNumberLow),E - LD (IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh),D - LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),B - ;!TODO ; [ ] sector size - ;!TODO ; [ ] UnitAttention - EX AF,AF' - OUT (SLOT3),A - ;EX AF,AF' - ;AND A - RET -;[]================================================================[#59] - -;[]================================================================[#55] -;Function: Read Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;READ SECTOR(S) -ATA_5x_READ: ;PUSH IY ; !FIXIT зачем? - LD C,0 ; признак short - EX AF,AF' - IN A,(SLOT3) - EX AF,AF' - JP ATA_5x_LONG_READ.main -;[]================================================================[#52] -;Function: Long Read Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter, 0 = 256 -; A'- Memory Page Number -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -; A' - Last mem page in RAM Block used for readed data -;LONG READ SECTOR(S) -ATA_5x_LONG_READ: - ;PUSH IY ; !FIXIT зачем? - LD C,1 ; признак long -.main: SAFE_PORTY_2 - PUSH BC - PUSH IX - PUSH HL - ; - EX AF,AF' - AND A ;read - EX AF,AF' - CALL RW_ATA_SECTORs - ; -.shared: EX DE,HL - JR C,.error - LD A,XH ; current page in mem block for SLOT3 - EX AF,AF' - ; - POP HL - POP IX - POP BC - ; HL:IX + B. если B=0, то B=256 - XOR A - CP B - LD C,B - CCF - RLA - LD B,A - ADD IX,BC - JR NC,.exit - INC HL - CCF - ; -.exit: RESTORE_PORTY - ;POP IY - RET - ; -.error: LD B,A ; A - номер ошибки - LD C,XL - LD A,XH ; current page in mem block for SLOT3 - EX AF,AF' - POP HL - POP IX - PUSH BC - LD B,0 - ADD IX,BC - ; - ;LD C,B - ;ADC HL,BC - JR NC,.no_inc_hl - INC HL -.no_inc_hl: ; - POP BC - POP AF - SUB C - LD C,A - LD A,B - LD B,C - SCF ;R03 - JR .exit -;[]===========================================================[#52, #55] - - -;[]================================================================[#56] -;Function: Write Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;WRITE SECTOR(S) -ATA_5x_WRITE: ;PUSH IY ; !FIXIT зачем? - LD C,0 ; признак short - EX AF,AF' - IN A,(SLOT3) - EX AF,AF' - JP ATA_5x_LONG_WRITE.main -;[]================================================================[#53] -;Function: Long Write Sectors -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -; A'- Memory Page Number -;Return: -; HL:IX - Sector + Sector counter -; DE - Address + (Sector counter * Size sector) -;WRITE SECTOR(S) -ATA_5x_LONG_WRITE: - ;PUSH IY ; !FIXIT зачем? - LD C,1 ; признак long -.main: SAFE_PORTY_2 - PUSH BC - PUSH IX - PUSH HL - ; - EX AF,AF' - SCF ;write - EX AF,AF' - CALL RW_ATA_SECTORs - ; - JP ATA_5x_LONG_READ.shared - -;███████████████████████████████████████████████████████████████████████████████████████████████████████; -; !TODO поддержка 8-bit data transfer mode для древних винтов -; A - Disk -; HL:IX - Sector -; DE - Address -; B - Sector counter -; C - short/long -; A'- Memory Page Number -; CF'=1 - write, CF'=0 - read -RW_ATA_SECTORs: PUSH BC ; признак short/long в C - LD C,IDE.Device.HDD - CALL SELECT_DRIVE - POP BC ; признак short/long в C - RET C - ; - EXX - LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready) + IDE.CtrlByte.Ready - CALL WAITPRT.custom - EXX - RET C - ; - EX AF,AF' - PUSH AF ; memory page number - PUSH BC ; признак short/long в C - PUSH DE ; Address - CALL PRESET - ; IY из SELECT_DRIVE больше не нужен - ; - POP HL ; Address - POP IY ; признак short/long в YL - POP AF ; memory page number - LD XL,0 - LD XH,A ; memory page number - LD BC,IDE.Write.Command - LD A,IDE.CMD.ATA.WriteSectorsWithRetry - JR C,.set_command ; CF = r/w - ; - LD A,IDE.CMD.ATA.ReadSectorsWithRetry -.set_command: OUT (C),A - EX AF,AF' - EXX - LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest - CALL WAITPRT.custom - EXX - RET C - ;DI ;R01 REMOVED "DI" -.big_loop: IN A,(SLOT3) - EX AF,AF' ;>-----------> \ - LD A,XH - OUT (SLOT3),A - LD BC,IDE.Read.Data - JR C,.write_sector - ; - ; READ SECTOR 512 bytes ;!HARDCODE sector size -.loop_256_1: DUP 16 - INI - EDUP - JP NZ,.loop_256_1 -.loop_256_2: DUP 16 - INI - EDUP - JP NZ,.loop_256_2 - AND A - ;EX AF,AF' - ; ; ; ; ; - ; CF=0 -.return_rw: EX AF,AF' ;<-----------< / - INC XL ;INC LOADED SECTORS - OUT (SLOT3),A - ; - LD A,H - OR L - JR NZ,.end_pass - ; short/long - ; A = 0 - SUB YL - JR NC,.END_BUFFER - ; next page in mem block - CALL CHANGE_MEM_BLK - ; LD HL,#C000 - ; IN A,(SLOT3) - ; EX AF,AF' ;>-----------> \ - ; LD A,SYS_PAGE - ; OUT (SLOT3),A - ; LD D,high SYS_PAGE.RAM_TABLE - ; LD E,XH - ; LD A,(DE) - ; LD XH,A - ; EX AF,AF' ;<-----------< / - ; OUT (SLOT3),A - ; -.end_pass: ;INC XL ;INC LOADED SECTORS - EXX - CALL WAITPRT - EXX - RET C - ; - ;INC XL ;INC LOADED SECTORS - LD BC,IDE.Read.Status - IN A,(C) - BIT IDE.CtrlBit.DataRequest,A - RET Z - ; - JP .big_loop - ; -.write_sector: ; WRITE SECTOR 512 bytes ;!HARDCODE sector size - INC B ; LD BC,IDE.Write.Data - LD D,512/WRITE_OUTI_DUPs ;!HARDCODE sector size -.loop: DUP WRITE_OUTI_DUPs - OUTI - EDUP - DEC D - JR NZ,.loop - SCF - JP .return_rw - ; ; -.END_BUFFER: CALL ATA_IdlePasses.CHECK_DRV - JR NZ,ATA_IdlePasses.Enter - RET -;;;;;;;;;;;;;;;;; -ATA_IdlePasses: CALL .CHECK_DRV - JR NZ,.Enter - ; - RET C - LD A,BIOS.Error.Failure - SCF - RET - ; -.Enter: XOR A ; счётчик для READ_ZEROS, данные для .WrZeros - EX AF,AF' - LD BC,IDE.Read.Data - JR C,.WrZeros - ; READ > /dev/null - EX AF,AF' -.RdLoop: IN F,(C) ; читаем по 1 разу с чётного адреса, читается WORD - DEC A - JR NZ,.RdLoop - JR ATA_IdlePasses - ; WRITE ZEROS -.WrZeros: EX AF,AF' - ; -.WrLoop: OUT (C),A - DJNZ .WrLoop - ; -.WrLoop2: OUT (C),A - DJNZ .WrLoop2 - JR ATA_IdlePasses - ; -.CHECK_DRV: EXX - CALL WAITPRT - EXX - RET C - ; - LD BC,IDE.Read.Status - IN A,(C) - BIT IDE.CtrlBit.DataRequest,A - RET -;!TODO доделать эту же хурму для других устройств -;███████████████████████████████████████████████████████████████████████████████████████████████████████; -/* - IFN OPTIMIZE_RW_PROCEDURE -WRITE_ATA_SECTORs: - LD C,IDE.Device.HDD - CALL SELECT_DRIVE - RET C - EXX - ;LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0 - CALL WAITPRT - EXX - RET C - EX AF,AF' - PUSH AF - PUSH DE - CALL PRESET - POP HL - POP AF - LD XL,0 - LD XH,A - LD BC,IDE.Write.Command - LD A,IDE.CMD.ATA.WriteSectorsWithRetry - OUT (C),A - ; SAVE HL?! - EXX - LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0 - CALL WAITPRT.custom - EXX - RET C - ; -.big_loop: IN A,(SLOT3) - EX AF,AF' - LD A,XH - OUT (SLOT3),A - ; WRITE SECTOR 512 bytes ;!HARDCODE sector size - LD BC,IDE.Write.Data - LD D,512/WRITE_OUTI_DUPs ;!HARDCODE sector size -.loop: DUP WRITE_OUTI_DUPs - OUTI - EDUP - DEC D - JR NZ,.loop - ; ; ; ; ; - EX AF,AF' - OUT (SLOT3),A - ;EI - ; - LD A,H - OR L - JR NZ,.W33 - ; next page in mem block - LD HL,#C000 - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD D,high SYS_PAGE.RAM_TABLE - LD E,XH - LD A,(DE) - LD XH,A - EX AF,AF' - OUT (SLOT3),A - ; -.W33: INC XL ;INC SAVED SECTORS - EXX - ;LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1 - CALL WAITPRT - EXX - RET C - LD BC,IDE.Read.Status - IN A,(C) - BIT IDE.CtrlBit.DataRequest,A - ; - RET Z - JP .big_loop - ;JP NZ,.big_loop - ;XOR A - ;RET - ; - ENDIF -*/ -;[]===========================================================[#53, #56] - - -;[]================================================================[#54] -;Function: Verify Sectors -; A - Disk -; HL:IX - Sector -; B - Sector counter -;Return: CF - error -;VERIFY SECTOR(S) -ATA_5x_VERIFY: ;PUSH IY ; !FIXIT зачем? - SAFE_PORTY_2 - PUSH IX - PUSH HL - CALL .VERIFY - POP HL - POP IX - RESTORE_PORTY - ;POP IY - RET -;VERIFY SECTOR(S) -.VERIFY: LD C,IDE.Device.HDD - CALL SELECT_DRIVE - RET C - EXX - LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready) + IDE.CtrlByte.Ready - CALL WAITPRT.custom - EXX - RET C - ;PUSH DE - ; IN A,(SLOT3) - ; PUSH AF - CALL PRESET - ; POP AF - ; OUT (SLOT3),A - ;POP HL - LD BC,IDE.Write.Command - LD A,IDE.CMD.ATA.ReadVerifySectorsWithRetry - OUT (C),A - LD BC,IDE.Read.Status - IN A,(C) - RRA ;BIT IDE.CtrlBit.Error,A : SCF : RET NZ - RET C - ; - JP WAITPRT - ;RET C - ;XOR A - ;RET -;[]================================================================[#54] - - -; HL:IX - LBA SECTOR -; B - SECTOR COUNTER -; выход: SLOT3 = SYS_PAGE -PRESET: LD A,B - LD BC,IDE.Write.Counter - OUT (C),A - ; - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) - LD BC,IDE.Write.DeviceHead - OUT (C),A - ;бит CHS/LBA ;!FIXIT сделать метками номера бит - AND %0100'0000 - LD E,XL - LD D,XH - CALL Z,LBA_CHS - LD BC,IDE.Write.Sector - OUT (C),E ;LBA 0..7 - ; - INC C ; LD BC,IDE.Write.CylinderLow - OUT (C),D ;LBA 8..15 - INC C ; LD BC,IDE.Write.CylinderHigh - OUT (C),L ;LBA 16..23 - LD BC,IDE.Read.Control - IN A,(C) - AND #F0 ;!HARDCODE DRIVE/HEAD REGISTER PHISICAL DISK bitmask - OR H ;LBA 24..27 - INC B ; LD BC,IDE.Write.DeviceHead - ; - OUT (C),A - EX AF,AF' - OUT (SLOT3),A - ;AND A - RET -;PRESET ; - - -; HL:DE - SECTOR OFFSET -LBA_CHS: LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow) - LD B,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh) - ; -DIV32X: ;HL:DE / BC => DE:IX HL-OSTATOK - LD XH,D - LD XL,E - EX DE,HL - LD HL,0 - LD A,#20 - ; -.loop: ADD IX,IX - EX DE,HL - ADC HL,HL - EX DE,HL - ADC HL,HL - SBC HL,BC - JR NC,.DIV012 - ; - ADD HL,BC - DEC A - JR NZ,.loop - ; - JR .DIV014 - ; -.DIV012: INC IX - DEC A - JR NZ,.loop - ; -.DIV014: LD E,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) - LD D,0 - XOR A - ; -.loop2: INC A - SBC HL,DE - JR NC,.loop2 - ; - ADD HL,DE - DEC A - LD H,A - LD E,L - INC E - LD D,XL - LD A,XH - LD L,A - RET - -;----------------------------------------------------------------------; -; D - MASK -; E - PATTERN -; !!! некоторые функции надеются, что на выходе всегда ZF -WAITPRT: LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error) + IDE.CtrlByte.Ready -.custom: LD BC,IDE.Read.Status - LD HL,#0000 ; задержка ;!HARDCODE - ; -.loop: PUSH HL -; -.loop2: IN A,(C) - AND D - CP E - JR Z,.ok - DEC HL - LD A,L - OR H - JP NZ,.loop2 - ; - POP HL - DEC L - JR NZ,.loop - ; -.error: LD A,BIOS.Error.NotReady - SCF - RET - ; -.ok: POP HL - RET -;----------------------------------------------------------------------; - - -;[]================================================================[#57] -;[x] 18/12/2023. добавление/допиливание API CD-ROM (ATAPI) -; [ ] media change -;Function: Detect Disk -; A - Disk -;Return: CF=0 - A=Drive type -; CF=1 - error -ATA_5x_DETECT: LD C,IDE.Device.HDD -.shared: CALL SELECT_DRIVE - RET C - ; - LD B,A - AND %0000'0011 ;[ ] media change переделать логику тут и в ДСС? ; !FIXIT - JR NZ,.notZero - LD A,C - RET - ; -.notZero: AND %0000'0010 - JR NZ,.UnitAttention - ; C = DriveType - LD A,C - CP IDE.Device.ATAPI - JR Z,.AtapiCheckMedia - ;!FIXIT AtaCheckMedia - не сделано ; [ ] media change - AND A - RET - ; -.AtapiCheckMedia: - PUSH BC ; B - MediaParameters, C - DriveType - CALL ATAPI_CHECK_MEDIA_CHANGED - POP BC ; B - MediaParameters, C - DriveType - RET C - LD A,C - RET - ; -.UnitAttention: LD A,BIOS.Error.ATAPI.UnitAttention - SCF - RET + +;======================================================== +;R03 !25.07.2001! BUG FIX WITH RETURN ERROR CODE +;R02 !24.07.2001! ADD SECONDARY CHANEL +;R01 !16.08.2000! REMOVED "DI" + +/* +;Write +IDE.Write.Command EQU #4153 ; #1F7 Command +IDE.Write.DeviceHead EQU #4152 ; #1F6 Drive Control + +HDW_CLH EQU #0155 ; #1F5 Cylinder High +HDW_CLL EQU #0154 ; #1F4 Cylinder Low +HDW_SEC EQU #0153 ; #1F3 Sector +HDW_CNT EQU #0152 ; #1F2 Counter +HDW_ERR EQU #0151 ; #1F1 Error +HDW_DAT EQU #0150 ; #1F0 Data + +;Read +IDE.Read.Status EQU #4053 ; #1F7 Status (Control) +HDR_DRV EQU #4052 ; #1F6 Drive Control + +HDR_CLH EQU #0055 ; #1F5 Cylinder High +HDR_CLL EQU #0054 ; #1F4 Cylinder Low +HDR_SEC EQU #0053 ; #1F3 Sector +HDR_CNT EQU #0052 ; #1F2 Counter +HDR_ERR EQU #0051 ; #1F1 Error +HDR_DAT EQU #0050 ; #1F0 Data + +;Bits for IDE.Read.Status +;---[] +BSY EQU 7 +RDY EQU 6 +DRQ EQU 3 +ERR EQU 0 +;---[] + +HDD EQU 1 +CDROM EQU 2 + + +;EQU FOR IY+ +IDE.HDD_INIT_TABLE.DRV_Flags EQU 0 +IDE.HDD_INIT_TABLE.SectorsPerTrack EQU 1 +IDE.HDD_INIT_TABLE.HeadsNumber EQU 2 +IDE.HDD_INIT_TABLE.CylinderNumberLow EQU 3 +IDE.HDD_INIT_TABLE.CylinderNumberHigh EQU 4 +IDE.HDD_INIT_TABLE.SectorsPerCylinderLow EQU 5 +IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh EQU 6 +DTYPE_H EQU 7 + +IDE0 EQU #C1C0 +IDE1 EQU #C1C8 +IDE2 EQU #C1D0 +IDE3 EQU #C1D8 +*/ + +;IDE0 DB #FF ;DRIVE/HEAD REGISTER ;00 +; DB #FF ;SECTORS PER TRACK ;01 +; DB #FF ;HEADS ;02 +; DB #FF ;CYLINDERS LOW ;03 +; DB #FF ;CYLINDERS HIGH ;04 +; DB #FF ;SECTOR PER CYLINDER LOW ;05 +; DB #FF ;SECTOR PER CYLINDER HIGH ;06 +; DB #FF ;RESERVED ;07 + +;IDE1 DB #FF ;DRIVE/HEAD REGISTER ;00 +; DB #FF ;SECTORS PER TRACK ;01 +; DB #FF ;HEADS ;02 +; DB #FF ;CYLINDERS LOW ;03 +; DB #FF ;CYLINDERS HIGH ;04 +; DB #FF ;SECTOR PER CYLINDER LOW ;05 +; DB #FF ;SECTOR PER CYLINDER HIGH ;06 +; DB #FF ;RESERVED ;07 + + +WRITE_OUTI_DUPs EQU 32 ; bytes + +;[]================================================================[#51] +;Function: Reset drive +ATA_5x_RESET: ; !FIXIT не ресетится? +;For non-ATAPI drives, the only method a driver has of resetting a drive +; after a major error is to do a "software reset" on the bus. +; Set bit 2 (SRST, value = 4) in the proper Control Register for the +; bus. This will reset both ATA devices on the bus. Then, you have to +; clear that bit again, yourself. The master drive on the bus is +; automatically selected. + XOR A + RET +;[]================================================================[#51] + + +;[]================================================================[#58] +;Function: Get Current Media Parameters +; A - Disk +;Return: +; H - Heads +; L - Sectors per cylinder +; DE - Cylinders +; IX - Capacity sector in bytes +; B - Flags: MASTER/SLAVE, LBA/CHS +ATA_5x_GET_PAR: + LD C,IDE.Device.HDD + CALL SELECT_DRIVE + RET C + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters) + LD L,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) + LD H,(IY+IDE.HDD_INIT_TABLE.HeadsNumber) + LD E,(IY+IDE.HDD_INIT_TABLE.CylinderNumberLow) + LD D,(IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh) + LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) + LD IX,512 ;!HARDCODE ; [ ] sector size + EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + AND A + RET +;[]================================================================[#58] + +;[]================================================================[#59] +;Function: Set Current Media Parameters +; A - Disk +; H - Heads +; L - Sectors +; DE - Cylinders +; IX - Capacity sector in bytes +; B - Flags +;Return: None +ATA_5x_SET_PAR: + LD C,IDE.Device.HDD + CALL SELECT_DRIVE + RET C + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD (IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),L + LD (IY+IDE.HDD_INIT_TABLE.HeadsNumber),H + LD (IY+IDE.HDD_INIT_TABLE.CylinderNumberLow),E + LD (IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh),D + LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),B + ;!TODO ; [ ] sector size + ;!TODO ; [ ] UnitAttention + EX AF,AF' + OUT (SLOT3),A + ;EX AF,AF' + ;AND A + RET +;[]================================================================[#59] + +;[]================================================================[#55] +;Function: Read Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;READ SECTOR(S) +ATA_5x_READ: ;PUSH IY ; !FIXIT зачем? + LD C,0 ; признак short + EX AF,AF' + IN A,(SLOT3) + EX AF,AF' + JP ATA_5x_LONG_READ.main +;[]================================================================[#52] +;Function: Long Read Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter, 0 = 256 +; A'- Memory Page Number +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +; A' - Last mem page in RAM Block used for readed data +;LONG READ SECTOR(S) +ATA_5x_LONG_READ: + ;PUSH IY ; !FIXIT зачем? + LD C,1 ; признак long +.main: SAFE_PORTY_2 + PUSH BC + PUSH IX + PUSH HL + ; + EX AF,AF' + AND A ;read + EX AF,AF' + CALL RW_ATA_SECTORs + ; +.shared: EX DE,HL + JR C,.error + LD A,XH ; current page in mem block for SLOT3 + EX AF,AF' + ; + POP HL + POP IX + POP BC + ; HL:IX + B. если B=0, то B=256 + XOR A + CP B + LD C,B + CCF + RLA + LD B,A + ADD IX,BC + JR NC,.exit + INC HL + CCF + ; +.exit: RESTORE_PORTY + ;POP IY + RET + ; +.error: LD B,A ; A - номер ошибки + LD C,XL + LD A,XH ; current page in mem block for SLOT3 + EX AF,AF' + POP HL + POP IX + PUSH BC + LD B,0 + ADD IX,BC + ; + ;LD C,B + ;ADC HL,BC + JR NC,.no_inc_hl + INC HL +.no_inc_hl: ; + POP BC + POP AF + SUB C + LD C,A + LD A,B + LD B,C + SCF ;R03 + JR .exit +;[]===========================================================[#52, #55] + + +;[]================================================================[#56] +;Function: Write Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;WRITE SECTOR(S) +ATA_5x_WRITE: ;PUSH IY ; !FIXIT зачем? + LD C,0 ; признак short + EX AF,AF' + IN A,(SLOT3) + EX AF,AF' + JP ATA_5x_LONG_WRITE.main +;[]================================================================[#53] +;Function: Long Write Sectors +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +; A'- Memory Page Number +;Return: +; HL:IX - Sector + Sector counter +; DE - Address + (Sector counter * Size sector) +;WRITE SECTOR(S) +ATA_5x_LONG_WRITE: + ;PUSH IY ; !FIXIT зачем? + LD C,1 ; признак long +.main: SAFE_PORTY_2 + PUSH BC + PUSH IX + PUSH HL + ; + EX AF,AF' + SCF ;write + EX AF,AF' + CALL RW_ATA_SECTORs + ; + JP ATA_5x_LONG_READ.shared + +;███████████████████████████████████████████████████████████████████████████████████████████████████████; +; !TODO поддержка 8-bit data transfer mode для древних винтов +; A - Disk +; HL:IX - Sector +; DE - Address +; B - Sector counter +; C - short/long +; A'- Memory Page Number +; CF'=1 - write, CF'=0 - read +RW_ATA_SECTORs: PUSH BC ; признак short/long в C + LD C,IDE.Device.HDD + CALL SELECT_DRIVE + POP BC ; признак short/long в C + RET C + ; + EXX + LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready) + IDE.CtrlByte.Ready + CALL WAITPRT.custom + EXX + RET C + ; + EX AF,AF' + PUSH AF ; memory page number + PUSH BC ; признак short/long в C + PUSH DE ; Address + CALL PRESET + ; IY из SELECT_DRIVE больше не нужен + ; + POP HL ; Address + POP IY ; признак short/long в YL + POP AF ; memory page number + LD XL,0 + LD XH,A ; memory page number + LD BC,IDE.Write.Command + LD A,IDE.CMD.ATA.WriteSectorsWithRetry + JR C,.set_command ; CF = r/w + ; + LD A,IDE.CMD.ATA.ReadSectorsWithRetry +.set_command: OUT (C),A + EX AF,AF' + EXX + LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest + CALL WAITPRT.custom + EXX + RET C + ;DI ;R01 REMOVED "DI" +.big_loop: IN A,(SLOT3) + EX AF,AF' ;>-----------> \ + LD A,XH + OUT (SLOT3),A + LD BC,IDE.Read.Data + JR C,.write_sector + ; + ; READ SECTOR 512 bytes ;!HARDCODE sector size +.loop_256_1: DUP 16 + INI + EDUP + JP NZ,.loop_256_1 +.loop_256_2: DUP 16 + INI + EDUP + JP NZ,.loop_256_2 + AND A + ;EX AF,AF' + ; ; ; ; ; + ; CF=0 +.return_rw: EX AF,AF' ;<-----------< / + INC XL ;INC LOADED SECTORS + OUT (SLOT3),A + ; + LD A,H + OR L + JR NZ,.end_pass + ; short/long + ; A = 0 + SUB YL + JR NC,.END_BUFFER + ; next page in mem block + CALL CHANGE_MEM_BLK + ; LD HL,#C000 + ; IN A,(SLOT3) + ; EX AF,AF' ;>-----------> \ + ; LD A,SYS_PAGE + ; OUT (SLOT3),A + ; LD D,high SYS_PAGE.RAM_TABLE + ; LD E,XH + ; LD A,(DE) + ; LD XH,A + ; EX AF,AF' ;<-----------< / + ; OUT (SLOT3),A + ; +.end_pass: ;INC XL ;INC LOADED SECTORS + EXX + CALL WAITPRT + EXX + RET C + ; + ;INC XL ;INC LOADED SECTORS + LD BC,IDE.Read.Status + IN A,(C) + BIT IDE.CtrlBit.DataRequest,A + RET Z + ; + JP .big_loop + ; +.write_sector: ; WRITE SECTOR 512 bytes ;!HARDCODE sector size + INC B ; LD BC,IDE.Write.Data + LD D,512/WRITE_OUTI_DUPs ;!HARDCODE sector size +.loop: DUP WRITE_OUTI_DUPs + OUTI + EDUP + DEC D + JR NZ,.loop + SCF + JP .return_rw + ; ; +.END_BUFFER: CALL ATA_IdlePasses.CHECK_DRV + JR NZ,ATA_IdlePasses.Enter + RET +;;;;;;;;;;;;;;;;; +ATA_IdlePasses: CALL .CHECK_DRV + JR NZ,.Enter + ; + RET C + LD A,BIOS.Error.Failure + SCF + RET + ; +.Enter: XOR A ; счётчик для READ_ZEROS, данные для .WrZeros + EX AF,AF' + LD BC,IDE.Read.Data + JR C,.WrZeros + ; READ > /dev/null + EX AF,AF' +.RdLoop: IN F,(C) ; читаем по 1 разу с чётного адреса, читается WORD + DEC A + JR NZ,.RdLoop + JR ATA_IdlePasses + ; WRITE ZEROS +.WrZeros: EX AF,AF' + ; +.WrLoop: OUT (C),A + DJNZ .WrLoop + ; +.WrLoop2: OUT (C),A + DJNZ .WrLoop2 + JR ATA_IdlePasses + ; +.CHECK_DRV: EXX + CALL WAITPRT + EXX + RET C + ; + LD BC,IDE.Read.Status + IN A,(C) + BIT IDE.CtrlBit.DataRequest,A + RET +;!TODO доделать эту же хурму для других устройств +;███████████████████████████████████████████████████████████████████████████████████████████████████████; +/* + IFN OPTIMIZE_RW_PROCEDURE +WRITE_ATA_SECTORs: + LD C,IDE.Device.HDD + CALL SELECT_DRIVE + RET C + EXX + ;LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0 + CALL WAITPRT + EXX + RET C + EX AF,AF' + PUSH AF + PUSH DE + CALL PRESET + POP HL + POP AF + LD XL,0 + LD XH,A + LD BC,IDE.Write.Command + LD A,IDE.CMD.ATA.WriteSectorsWithRetry + OUT (C),A + ; SAVE HL?! + EXX + LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0 + CALL WAITPRT.custom + EXX + RET C + ; +.big_loop: IN A,(SLOT3) + EX AF,AF' + LD A,XH + OUT (SLOT3),A + ; WRITE SECTOR 512 bytes ;!HARDCODE sector size + LD BC,IDE.Write.Data + LD D,512/WRITE_OUTI_DUPs ;!HARDCODE sector size +.loop: DUP WRITE_OUTI_DUPs + OUTI + EDUP + DEC D + JR NZ,.loop + ; ; ; ; ; + EX AF,AF' + OUT (SLOT3),A + ;EI + ; + LD A,H + OR L + JR NZ,.W33 + ; next page in mem block + LD HL,#C000 + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD D,high SYS_PAGE.RAM_TABLE + LD E,XH + LD A,(DE) + LD XH,A + EX AF,AF' + OUT (SLOT3),A + ; +.W33: INC XL ;INC SAVED SECTORS + EXX + ;LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1 + CALL WAITPRT + EXX + RET C + LD BC,IDE.Read.Status + IN A,(C) + BIT IDE.CtrlBit.DataRequest,A + ; + RET Z + JP .big_loop + ;JP NZ,.big_loop + ;XOR A + ;RET + ; + ENDIF +*/ +;[]===========================================================[#53, #56] + + +;[]================================================================[#54] +;Function: Verify Sectors +; A - Disk +; HL:IX - Sector +; B - Sector counter +;Return: CF - error +;VERIFY SECTOR(S) +ATA_5x_VERIFY: ;PUSH IY ; !FIXIT зачем? + SAFE_PORTY_2 + PUSH IX + PUSH HL + CALL .VERIFY + POP HL + POP IX + RESTORE_PORTY + ;POP IY + RET +;VERIFY SECTOR(S) +.VERIFY: LD C,IDE.Device.HDD + CALL SELECT_DRIVE + RET C + EXX + LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready) + IDE.CtrlByte.Ready + CALL WAITPRT.custom + EXX + RET C + ;PUSH DE + ; IN A,(SLOT3) + ; PUSH AF + CALL PRESET + ; POP AF + ; OUT (SLOT3),A + ;POP HL + LD BC,IDE.Write.Command + LD A,IDE.CMD.ATA.ReadVerifySectorsWithRetry + OUT (C),A + LD BC,IDE.Read.Status + IN A,(C) + RRA ;BIT IDE.CtrlBit.Error,A : SCF : RET NZ + RET C + ; + JP WAITPRT + ;RET C + ;XOR A + ;RET +;[]================================================================[#54] + + +; HL:IX - LBA SECTOR +; B - SECTOR COUNTER +; выход: SLOT3 = SYS_PAGE +PRESET: LD A,B + LD BC,IDE.Write.Counter + OUT (C),A + ; + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) + LD BC,IDE.Write.DeviceHead + OUT (C),A + ;бит CHS/LBA ;!FIXIT сделать метками номера бит + AND %0100'0000 + LD E,XL + LD D,XH + CALL Z,LBA_CHS + LD BC,IDE.Write.Sector + OUT (C),E ;LBA 0..7 + ; + INC C ; LD BC,IDE.Write.CylinderLow + OUT (C),D ;LBA 8..15 + INC C ; LD BC,IDE.Write.CylinderHigh + OUT (C),L ;LBA 16..23 + LD BC,IDE.Read.Control + IN A,(C) + AND #F0 ;!HARDCODE DRIVE/HEAD REGISTER PHISICAL DISK bitmask + OR H ;LBA 24..27 + INC B ; LD BC,IDE.Write.DeviceHead + ; + OUT (C),A + EX AF,AF' + OUT (SLOT3),A + ;AND A + RET +;PRESET ; + + +; HL:DE - SECTOR OFFSET +LBA_CHS: LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow) + LD B,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh) + ; +DIV32X: ;HL:DE / BC => DE:IX HL-OSTATOK + LD XH,D + LD XL,E + EX DE,HL + LD HL,0 + LD A,#20 + ; +.loop: ADD IX,IX + EX DE,HL + ADC HL,HL + EX DE,HL + ADC HL,HL + SBC HL,BC + JR NC,.DIV012 + ; + ADD HL,BC + DEC A + JR NZ,.loop + ; + JR .DIV014 + ; +.DIV012: INC IX + DEC A + JR NZ,.loop + ; +.DIV014: LD E,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) + LD D,0 + XOR A + ; +.loop2: INC A + SBC HL,DE + JR NC,.loop2 + ; + ADD HL,DE + DEC A + LD H,A + LD E,L + INC E + LD D,XL + LD A,XH + LD L,A + RET + +;----------------------------------------------------------------------; +; D - MASK +; E - PATTERN +; !!! некоторые функции надеются, что на выходе всегда ZF +WAITPRT: LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error) + IDE.CtrlByte.Ready +.custom: LD BC,IDE.Read.Status + LD HL,#0000 ; задержка ;!HARDCODE + ; +.loop: PUSH HL +; +.loop2: IN A,(C) + AND D + CP E + JR Z,.ok + DEC HL + LD A,L + OR H + JP NZ,.loop2 + ; + POP HL + DEC L + JR NZ,.loop + ; +.error: LD A,BIOS.Error.NotReady + SCF + RET + ; +.ok: POP HL + RET +;----------------------------------------------------------------------; + + +;[]================================================================[#57] +;[x] 18/12/2023. добавление/допиливание API CD-ROM (ATAPI) +; [ ] media change +;Function: Detect Disk +; A - Disk +;Return: CF=0 - A=Drive type +; CF=1 - error +ATA_5x_DETECT: LD C,IDE.Device.HDD +.shared: CALL SELECT_DRIVE + RET C + ; + LD B,A + AND %0000'0011 ;[ ] media change переделать логику тут и в ДСС? ; !FIXIT + JR NZ,.notZero + LD A,C + RET + ; +.notZero: AND %0000'0010 + JR NZ,.UnitAttention + ; C = DriveType + LD A,C + CP IDE.Device.ATAPI + JR Z,.AtapiCheckMedia + ;!FIXIT AtaCheckMedia - не сделано ; [ ] media change + AND A + RET + ; +.AtapiCheckMedia: + PUSH BC ; B - MediaParameters, C - DriveType + CALL ATAPI_CHECK_MEDIA_CHANGED + POP BC ; B - MediaParameters, C - DriveType + RET C + LD A,C + RET + ; +.UnitAttention: LD A,BIOS.Error.ATAPI.UnitAttention + SCF + RET ;[]================================================================[#57] \ No newline at end of file diff --git a/src/bios/exp/EXTENDED/IDE/shared.asm b/bios/exp/EXTENDED/IDE/shared.asm similarity index 100% rename from src/bios/exp/EXTENDED/IDE/shared.asm rename to bios/exp/EXTENDED/IDE/shared.asm diff --git a/src/bios/exp/EXTENDED/RAM_DISK_DRIVER.asm b/bios/exp/EXTENDED/RAM_DISK_DRIVER.asm similarity index 100% rename from src/bios/exp/EXTENDED/RAM_DISK_DRIVER.asm rename to bios/exp/EXTENDED/RAM_DISK_DRIVER.asm diff --git a/src/bios/exp/FONT.ASM b/bios/exp/FONT.ASM similarity index 99% rename from src/bios/exp/FONT.ASM rename to bios/exp/FONT.ASM index 3ea3f24..c485541 100644 --- a/src/bios/exp/FONT.ASM +++ b/bios/exp/FONT.ASM @@ -1,174 +1,174 @@ -; Знакогенератор - LUA PASS1 - fL = {} - for i = 1,16 do - fL[i]={} - end - -- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F - fL[1][1] = " -------- -######- -######- -##-##-- ---#---- --###--- ---#---- -------- ######## -------- ######## ----#### --####-- --###### -####### ---##--- " - fL[2][1] = " -------- #------# ######## #######- --###--- -#####-- ---#---- -------- ######## --####-- ##----## -----### -##--##- --##--## -##---## ##-##-## " - fL[3][1] = " -------- #-#--#-# ##-##-## #######- -#####-- --###--- --###--- ---##--- ###--### -##--##- #--##--# ----#### -##--##- --###### -####### --####-- " - fL[4][1] = " -------- #------# ######## #######- #######- #######- -#####-- --####-- ##----## -#----#- #-####-# -#####-# -##--##- --##---- -##---## ###--### " - fL[5][1] = " -------- #-####-# ##----## -#####-- -#####-- #######- #######- --####-- ##----## -#----#- #-####-# ##--##-- --####-- --##---- -##---## ###--### " - fL[6][1] = " -------- #--##--# ###--### --###--- --###--- ##-#-##- -#####-- ---##--- ###--### -##--##- #--##--# ##--##-- ---##--- -###---- -##--### --####-- " - fL[7][1] = " -------- #------# ######## ---#---- ---#---- ---#---- ---#---- -------- ######## --####-- ##----## ##--##-- -######- ####---- ###--##- ##-##-## " - fL[8][1] = " -------- -######- -######- -------- -------- --###--- --###--- -------- ######## -------- ######## -####--- ---##--- ###----- ##------ ---##--- " - -- 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F - fL[1][2] = " #------- ------#- ---##--- -##--##- -####### --#####- -------- ---##--- ---##--- ---##--- -------- -------- -------- -------- -------- -------- " - fL[2][2] = " ###----- ----###- --####-- -##--##- ##-##-## -##---## -------- --####-- --####-- ---##--- ---##--- --##---- -------- --#--#-- ---##--- ######## " - fL[3][2] = " #####--- --#####- -######- -##--##- ##-##-## --###--- -------- -######- -######- ---##--- ----##-- -##----- ##------ -##--##- --####-- ######## " - fL[4][2] = " #######- #######- ---##--- -##--##- -####-## -##-##-- -------- ---##--- ---##--- ---##--- #######- #######- ##------ ######## -######- -######- " - fL[5][2] = " #####--- --#####- ---##--- -##--##- ---##-## -##-##-- -######- -######- ---##--- -######- ----##-- -##----- ##------ -##--##- ######## --####-- " - fL[6][2] = " ###----- ----###- -######- -------- ---##-## --###--- -######- --####-- ---##--- --####-- ---##--- --##---- #######- --#--#-- ######## ---##--- " - fL[7][2] = " #------- ------#- --####-- -##--##- ---##-## ##--##-- -######- ---##--- ---##--- ---##--- -------- -------- -------- -------- -------- -------- " - fL[8][2] = " -------- -------- ---##--- -------- -------- -####--- -------- ######## -------- -------- -------- -------- -------- -------- -------- -------- " - -- 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F - fL[1][3] = " -------- --##---- -##-##-- -##-##-- --##---- -------- --###--- -##----- ---##--- -##----- -------- -------- -------- -------- -------- -----##- " - fL[2][3] = " -------- -####--- -##-##-- -##-##-- -#####-- ##---##- -##-##-- -##----- --##---- --##---- -##--##- --##---- -------- -------- -------- ----##-- " - fL[3][3] = " -------- -####--- -##-##-- #######- ##------ ##--##-- --###--- ##------ -##----- ---##--- --####-- --##---- -------- -------- -------- ---##--- " - fL[4][3] = " -------- --##---- -------- -##-##-- -####--- ---##--- -###-##- -------- -##----- ---##--- ######## ######-- -------- ######-- -------- --##---- " - fL[5][3] = " -------- --##---- -------- #######- ----##-- --##---- ##-###-- -------- -##----- ---##--- --####-- --##---- -------- -------- -------- -##----- " - fL[6][3] = " -------- -------- -------- -##-##-- #####--- -##--##- ##--##-- -------- --##---- --##---- -##--##- --##---- --##---- -------- --##---- ##------ " - fL[7][3] = " -------- --##---- -------- -##-##-- --##---- ##---##- -###-##- -------- ---##--- -##----- -------- -------- --##---- -------- --##---- #------- " - fL[8][3] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -##----- -------- -------- -------- " - -- 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F - fL[1][4] = " -#####-- --##---- -####--- -####--- ---###-- ######-- --###--- ######-- -####--- -####--- -------- -------- ---##--- -------- -##----- -####--- " - fL[2][4] = " ##---##- -###---- ##--##-- ##--##-- --####-- ##------ -##----- ##--##-- ##--##-- ##--##-- --##---- --##---- --##---- -------- --##---- ##--##-- " - fL[3][4] = " ##--###- --##---- ----##-- ----##-- -##-##-- #####--- ##------ ----##-- ##--##-- ##--##-- --##---- --##---- -##----- ######-- ---##--- ----##-- " - fL[4][4] = " ##-####- --##---- --###--- --###--- ##--##-- ----##-- #####--- ---##--- -####--- -#####-- -------- -------- ##------ -------- ----##-- ---##--- " - fL[5][4] = " ####-##- --##---- -##----- ----##-- #######- ----##-- ##--##-- --##---- ##--##-- ----##-- -------- -------- -##----- -------- ---##--- --##---- " - fL[6][4] = " ###--##- --##---- ##--##-- ##--##-- ----##-- ##--##-- ##--##-- --##---- ##--##-- ---##--- --##---- --##---- --##---- ######-- --##---- -------- " - fL[7][4] = " -#####-- ######-- ######-- -####--- ---####- -####--- -####--- --##---- -####--- -###---- --##---- --##---- ---##--- -------- -##----- --##---- " - fL[8][4] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -##----- -------- -------- -------- -------- " - -- 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F - fL[1][5] = " -#####-- --##---- ######-- --####-- #####--- #######- #######- --####-- ##--##-- -####--- ---####- ###--##- ####---- ##---##- ##---##- --###--- " - fL[2][5] = " ##---##- -####--- -##--##- -##--##- -##-##-- -##---#- -##---#- -##--##- ##--##-- --##---- ----##-- -##--##- -##----- ###-###- ###--##- -##-##-- " - fL[3][5] = " ##-####- ##--##-- -##--##- ##------ -##--##- -##-#--- -##-#--- ##------ ##--##-- --##---- ----##-- -##-##-- -##----- #######- ####-##- ##---##- " - fL[4][5] = " ##-####- ##--##-- -#####-- ##------ -##--##- -####--- -####--- ##------ ######-- --##---- ----##-- -####--- -##----- #######- ##-####- ##---##- " - fL[5][5] = " ##-####- ######-- -##--##- ##------ -##--##- -##-#--- -##-#--- ##--###- ##--##-- --##---- ##--##-- -##-##-- -##---#- ##-#-##- ##--###- ##---##- " - fL[6][5] = " ##------ ##--##-- -##--##- -##--##- -##-##-- -##---#- -##----- -##--##- ##--##-- --##---- ##--##-- -##--##- -##--##- ##---##- ##---##- -##-##-- " - fL[7][5] = " -####--- ##--##-- ######-- --####-- #####--- #######- ####---- --#####- ##--##-- -####--- -####--- ###--##- #######- ##---##- ##---##- --###--- " - fL[8][5] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " - -- 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F - fL[1][6] = " ######-- -####--- ######-- -####--- ######-- ##--##-- ##--##-- ##---##- ##---##- ##--##-- #######- -####--- ##------ -####--- ---#---- -------- " - fL[2][6] = " -##--##- ##--##-- -##--##- ##--##-- #-##-#-- ##--##-- ##--##-- ##---##- ##---##- ##--##-- ##---##- -##----- -##----- ---##--- --###--- -------- " - fL[3][6] = " -##--##- ##--##-- -##--##- -##----- --##---- ##--##-- ##--##-- ##---##- -##-##-- ##--##-- #---##-- -##----- --##---- ---##--- -##-##-- -------- " - fL[4][6] = " -#####-- ##--##-- -#####-- --##---- --##---- ##--##-- ##--##-- ##-#-##- --###--- -####--- ---##--- -##----- ---##--- ---##--- ##---##- -------- " - fL[5][6] = " -##----- ##-###-- -##-##-- ---##--- --##---- ##--##-- ##--##-- #######- --###--- --##---- --##--#- -##----- ----##-- ---##--- -------- -------- " - fL[6][6] = " -##----- -####--- -##--##- ##--##-- --##---- ##--##-- -####--- ###-###- -##-##-- --##---- -##--##- -##----- -----##- ---##--- -------- -------- " - fL[7][6] = " ####---- ---###-- ###--##- -####--- -####--- ######-- --##---- ##---##- ##---##- -####--- #######- -####--- ------#- -####--- -------- -------- " - fL[8][6] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- ######## " - - -- 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F - fL[1][7] = " --##---- -------- ###----- -------- ---###-- -------- --###--- -------- ###----- --##---- ----##-- ###----- -###---- -------- -------- -------- " - fL[2][7] = " --##---- -------- -##----- -------- ----##-- -------- -##-##-- -------- -##----- -------- -------- -##----- --##---- -------- -------- -------- " - fL[3][7] = " ---##--- -####--- -##----- -####--- ----##-- -####--- -##----- -###-##- -##-##-- -###---- ----##-- -##--##- --##---- ##--##-- #####--- -####--- " - fL[4][7] = " -------- ----##-- -#####-- ##--##-- -#####-- ##--##-- ####---- ##--##-- -###-##- --##---- ----##-- -##-##-- --##---- #######- ##--##-- ##--##-- " - fL[5][7] = " -------- -#####-- -##--##- ##------ ##--##-- ######-- -##----- ##--##-- -##--##- --##---- ----##-- -####--- --##---- #######- ##--##-- ##--##-- " - fL[6][7] = " -------- ##--##-- -##--##- ##--##-- ##--##-- ##------ -##----- -#####-- -##--##- --##---- ##--##-- -##-##-- --##---- ##-#-##- ##--##-- ##--##-- " - fL[7][7] = " -------- -###-##- ##-###-- -####--- -###-##- -####--- ####---- ----##-- ###--##- -####--- ##--##-- ###--##- -####--- ##---##- ##--##-- -####--- " - fL[8][7] = " -------- -------- -------- -------- -------- -------- -------- #####--- -------- -------- -####--- -------- -------- -------- -------- -------- " - - -- 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F - fL[1][8] = " -------- -------- -------- -------- ---#---- -------- -------- -------- -------- -------- -------- ---###-- ---##--- ###----- -###-##- -------- " - fL[2][8] = " -------- -------- -------- -------- --##---- -------- -------- -------- -------- -------- -------- --##---- ---##--- --##---- ##-###-- ---#---- " - fL[3][8] = " ##-###-- -###-##- ##-###-- -#####-- -#####-- ##--##-- ##--##-- ##---##- ##---##- ##--##-- ######-- --##---- ---##--- --##---- -------- --###--- " - fL[4][8] = " -##--##- ##--##-- -###-##- ##------ --##---- ##--##-- ##--##-- ##-#-##- -##-##-- ##--##-- #--##--- ###----- -------- ---###-- -------- -##-##-- " - fL[5][8] = " -##--##- ##--##-- -##--##- -####--- --##---- ##--##-- ##--##-- #######- --###--- ##--##-- --##---- --##---- ---##--- --##---- -------- ##---##- " - fL[6][8] = " -#####-- -#####-- -##----- ----##-- --##-#-- ##--##-- -####--- #######- -##-##-- -#####-- -##--#-- --##---- ---##--- --##---- -------- ##---##- " - fL[7][8] = " -##----- ----##-- ####---- #####--- ---##--- -###-##- --##---- -##-##-- ##---##- ----##-- ######-- ---###-- ---##--- ###----- -------- #######- " - fL[8][8] = " ####---- ---####- -------- -------- -------- -------- -------- -------- -------- #####--- -------- -------- -------- -------- -------- -------- " - - -- 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F - fL[1][9] = " ----###- ######-- #####--- ######-- -######- ######-- ##-##-## --####-- ##---##- ##-#-##- ##---##- -----##- ##---##- ##---##- -#####-- #######- " - fL[2][9] = " ---####- ##------ ##--##-- ##------ -##--##- ##------ ##-##-## -##--##- ##---##- ##---##- ##--##-- ----###- ###-###- ##---##- ##---##- ##---##- " - fL[3][9] = " --##-##- ##------ ##--##-- ##------ -##--##- ##------ -######- -----##- ##--###- ##--###- ##-##--- ---####- #######- ##---##- ##---##- ##---##- " - fL[4][9] = " -##--##- ######-- ######-- ##------ -##--##- #####--- ---##--- --####-- ##-####- ##-####- #####--- --##-##- ##-#-##- #######- ##---##- ##---##- " - fL[5][9] = " #######- ##---##- ##---##- ##------ -##--##- ##------ -######- -----##- ####-##- ####-##- ##--##-- -##--##- ##---##- ##---##- ##---##- ##---##- " - fL[6][9] = " ##---##- ##---##- ##---##- ##------ -##--##- ##------ ##-##-## ##---##- ###--##- ###--##- ##---##- ##---##- ##---##- ##---##- ##---##- ##---##- " - fL[7][9] = " ##---##- ######-- ######-- ##------ ######## #######- ##-##-## -#####-- ##---##- ##---##- ##---##- ##---##- ##---##- ##---##- -#####-- ##---##- " - fL[8][9] = " -------- -------- -------- -------- ##----## -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " - - -- 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F - fL[1][10] = " ######-- -#####-- ######-- ##---##- ---##--- ##----## ##--##-- ##---##- ##-#-##- ##-#-##- ####---- ##----#- ##------ -#####-- ##--###- -######- " - fL[2][10] = " ##---##- ##---##- --##---- ##---##- -######- -##--##- ##--##-- ##---##- ##-#-##- ##-#-##- --##---- ##----#- ##------ ##---##- ##-##-## ##---##- " - fL[3][10] = " ##---##- ##------ --##---- ##---##- ##-##-## --####-- ##--##-- ##---##- ##-#-##- ##-#-##- --##---- ##----#- ##------ -----##- ##-##-## ##---##- " - fL[4][10] = " ######-- ##------ --##---- -######- ##-##-## ---##--- ##--##-- -######- ##-#-##- ##-#-##- --#####- ####--#- ######-- ---####- #####-## -######- " - fL[5][10] = " ##------ ##------ --##---- -----##- ##-##-## --####-- ##--##-- -----##- ##-#-##- ##-#-##- --##--## ##-##-#- ##---##- -----##- ##-##-## --##-##- " - fL[6][10] = " ##------ ##---##- --##---- ##---##- -######- -##--##- ##--##-- -----##- ##-#-##- ##-#-##- --##--## ##-##-#- ##---##- ##---##- ##-##-## -##--##- " - fL[7][10] = " ##------ -#####-- --##---- -#####-- ---##--- ##----## #######- -----##- #######- ######## --#####- ####--#- ######-- -#####-- ##--###- ##---##- " - fL[8][10] = " -------- -------- -------- -------- -------- -------- -----##- -------- -------- ------## -------- -------- -------- -------- -------- -------- " - - -- A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF - fL[1][11] = " -------- -----#-- -------- -------- -------- -------- -------- -------- -------- --##---- -------- -------- -------- -------- -------- -------- " - fL[2][11] = " -------- -####--- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " - fL[3][11] = " -####--- ##------ #####--- ######-- -######- -####--- ##-##-## -####--- ##--##-- ##--##-- ##--##-- ----###- ##---##- ##--##-- -####--- ######-- " - fL[4][11] = " ----##-- #####--- ##--##-- ##------ -##--##- ##--##-- -######- ##--##-- ##--##-- ##--##-- ##-##--- ---####- ###-###- ##--##-- ##--##-- ##--##-- " - fL[5][11] = " -#####-- ##--##-- #####--- ##------ -##--##- ######-- ---##--- ---##--- ##-###-- ##-###-- ####---- --##-##- ##-#-##- ######-- ##--##-- ##--##-- " - fL[6][11] = " ##--##-- ##--##-- ##---##- ##------ -##--##- ##------ -######- ##--##-- ###-##-- ###-##-- ##--##-- -##--##- ##---##- ##--##-- ##--##-- ##--##-- " - fL[7][11] = " -######- -####--- ######-- ##------ ######## -#####-- ##-##-## -####--- ##--##-- ##--##-- ##--##-- ##---##- ##---##- ##--##-- -####--- ##--##-- " - fL[8][11] = " -------- -------- -------- -------- ##----## -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " - - -- B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF - fL[1][12] = " --#---#- -#-#-#-# ##-##-## ---#---- ---#---- ---#---- ---#-#-- -------- -------- ---#-#-- ---#-#-- -------- ---#-#-- ---#-#-- ---#---- -------- " - fL[2][12] = " #---#--- #-#-#-#- -###-### ---#---- ---#---- ---#---- ---#-#-- -------- -------- ---#-#-- ---#-#-- -------- ---#-#-- ---#-#-- ---#---- -------- " - fL[3][12] = " --#---#- -#-#-#-# ##-##-## ---#---- ---#---- ####---- ---#-#-- -------- ####---- ####-#-- ---#-#-- ######-- ####-#-- ---#-#-- ####---- -------- " - fL[4][12] = " #---#--- #-#-#-#- ###-###- ---#---- ---#---- ---#---- ---#-#-- -------- ---#---- -----#-- ---#-#-- -----#-- -----#-- ---#-#-- ---#---- -------- " - fL[5][12] = " --#---#- -#-#-#-# ##-##-## ---#---- ####---- ####---- ####-#-- ######-- ####---- ####-#-- ---#-#-- ####-#-- ######-- ######-- ####---- ####---- " - fL[6][12] = " #---#--- #-#-#-#- -###-### ---#---- ---#---- ---#---- ---#-#-- ---#-#-- ---#---- ---#-#-- ---#-#-- ---#-#-- -------- -------- -------- ---#---- " - fL[7][12] = " --#---#- -#-#-#-# ##-##-## ---#---- ---#---- ---#---- ---#-#-- ---#-#-- ---#---- ---#-#-- ---#-#-- ---#-#-- -------- -------- -------- ---#---- " - fL[8][12] = " #---#--- #-#-#-#- ###-###- ---#---- ---#---- ---#---- ---#-#-- ---#-#-- ---#---- ---#-#-- ---#-#-- ---#-#-- -------- -------- -------- ---#---- " - - -- C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF - fL[1][13] = " ---#---- ---#---- -------- ---#---- -------- ---#---- ---#---- ---#-#-- ---#-#-- -------- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#---- " - fL[2][13] = " ---#---- ---#---- -------- ---#---- -------- ---#---- ---#---- ---#-#-- ---#-#-- -------- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#---- " - fL[3][13] = " ---#---- ---#---- -------- ---#---- -------- ---#---- ---##### ---#-#-- ---#-### ---##### ####-### ######## ---#-### ######## ####-### ######## " - fL[4][13] = " ---#---- ---#---- -------- ---#---- -------- ---#---- ---#---- ---#-#-- ---#---- ---#---- -------- -------- ---#---- -------- -------- -------- " - fL[5][13] = " ---##### ######## ######## ---##### ######## ######## ---##### ---#-### ---##### ---#-### ######## ####-### ---#-### ######## ####-### ######## " - fL[6][13] = " -------- -------- ---#---- ---#---- -------- ---#---- ---#---- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#-#-- -------- ---#-#-- -------- " - fL[7][13] = " -------- -------- ---#---- ---#---- -------- ---#---- ---#---- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#-#-- -------- ---#-#-- -------- " - fL[8][13] = " -------- -------- ---#---- ---#---- -------- ---#---- ---#---- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#-#-- -------- ---#-#-- -------- " - - -- D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF - fL[1][14] = " ---#-#-- -------- -------- ---#-#-- ---#---- -------- -------- ---#-#-- ---#---- ---#---- -------- ######## -------- ####---- ----#### ######## " - fL[2][14] = " ---#-#-- -------- -------- ---#-#-- ---#---- -------- -------- ---#-#-- ---#---- ---#---- -------- ######## -------- ####---- ----#### ######## " - fL[3][14] = " ---#-#-- ######## -------- ---#-#-- ---##### ---##### -------- ---#-#-- ######## ---#---- -------- ######## -------- ####---- ----#### ######## " - fL[4][14] = " ---#-#-- -------- -------- ---#-#-- ---#---- ---#---- -------- ---#-#-- ---#---- ---#---- -------- ######## -------- ####---- ----#### ######## " - fL[5][14] = " ######## ######## ######## ---##### ---##### ---##### ---##### ######## ######## ####---- ---##### ######## ######## ####---- ----#### -------- " - fL[6][14] = " -------- ---#---- ---#-#-- -------- -------- ---#---- ---#-#-- ---#-#-- ---#---- -------- ---#---- ######## ######## ####---- ----#### -------- " - fL[7][14] = " -------- ---#---- ---#-#-- -------- -------- ---#---- ---#-#-- ---#-#-- ---#---- -------- ---#---- ######## ######## ####---- ----#### -------- " - fL[8][14] = " -------- ---#---- ---#-#-- -------- -------- ---#---- ---#-#-- ---#-#-- ---#---- -------- ---#---- ######## ######## ####---- ----#### -------- " - - -- F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF - fL[1][15] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " - fL[2][15] = " -------- -------- -------- -------- ---##--- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " - fL[3][15] = " #####--- -####--- ######-- ##--##-- -######- ##---##- ##--##-- ##--##-- ##-#-##- ##-#-##- ####---- ##----#- ##------ -#####-- ##--###- -#####-- " - fL[4][15] = " ##--##-- ##--##-- --##---- ##--##-- ##-##-## -##-##-- ##--##-- ##--##-- ##-#-##- ##-#-##- --##---- ##----#- ##------ ##---##- ##-##-## ##--##-- " - fL[5][15] = " ##--##-- ##------ --##---- -#####-- ##-##-## --###--- ##--##-- -#####-- ##-#-##- ##-#-##- --#####- ####--#- #####--- ---####- #####-## -#####-- " - fL[6][15] = " #####--- ##--##-- --##---- ----##-- -######- -##-##-- ##--##-- ----##-- ##-#-##- ##-#-##- --##--## ##-##-#- ##--##-- ##---##- ##-##-## -##-##-- " - fL[7][15] = " ##------ -####--- --##---- ##--##-- ---##--- ##---##- #######- ----##-- #######- ######## --#####- ####--#- #####--- -#####-- ##--###- ##--##-- " - fL[8][15] = " ##------ -------- -------- -####--- ---##--- -------- -----##- -------- -------- ------## -------- -------- -------- -------- -------- -------- " - - -- E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - fL[1][16] = " -#--#--- -#--#--- -##----- ---##--- ----#--- ---#---- --##---- -------- -##----- -------- -------- ---##### #-#----- -##----- -------- -------- " - fL[2][16] = " ######-- -------- --##---- --##---- ---#-#-- ---#---- --##---- -------- #--#---- -------- -------- ---#---- ##-#---- #--#---- -------- -------- " - fL[3][16] = " ##------ -####--- ---##--- -##----- ---#---- ---#---- -------- -##--#-- #--#---- -------- -------- ---#---- #--#---- --#----- --####-- -------- " - fL[4][16] = " #####--- ##--##-- --##---- --##---- ---#---- ---#---- ######-- #--##--- -##----- --##---- -------- #--#---- #--#---- -#------ --####-- -------- " - fL[5][16] = " ##------ ######-- -##----- ---##--- ---#---- ---#---- -------- -------- -------- --##---- --##---- -#-#---- #--#---- ####---- --####-- -------- " - fL[6][16] = " ##------ ##------ -------- -------- ---#---- -#-#---- --##---- -##--#-- -------- -------- -------- --##---- -------- -------- --####-- -------- " - fL[7][16] = " #######- -#####-- -####--- -####--- ---#---- --#----- --##---- #--##--- -------- -------- -------- ---#---- -------- -------- -------- -------- " - fL[8][16] = " -------- -------- -------- -------- ---#---- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " - - ENDLUA - LUA ALLPASS - for i = 1, 8 do - for j = 1, 16, 1 do - _pc(" DG " .. fL[i][j]) - end - end - ENDLUA -; -/* -Линия 256 байтов в ОЗУ становится столбиком в видеопамяти. -Слева направо переходит сверху вниз. Первая линия - первый столбик. +; Знакогенератор + LUA PASS1 + fL = {} + for i = 1,16 do + fL[i]={} + end + -- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F + fL[1][1] = " -------- -######- -######- -##-##-- ---#---- --###--- ---#---- -------- ######## -------- ######## ----#### --####-- --###### -####### ---##--- " + fL[2][1] = " -------- #------# ######## #######- --###--- -#####-- ---#---- -------- ######## --####-- ##----## -----### -##--##- --##--## -##---## ##-##-## " + fL[3][1] = " -------- #-#--#-# ##-##-## #######- -#####-- --###--- --###--- ---##--- ###--### -##--##- #--##--# ----#### -##--##- --###### -####### --####-- " + fL[4][1] = " -------- #------# ######## #######- #######- #######- -#####-- --####-- ##----## -#----#- #-####-# -#####-# -##--##- --##---- -##---## ###--### " + fL[5][1] = " -------- #-####-# ##----## -#####-- -#####-- #######- #######- --####-- ##----## -#----#- #-####-# ##--##-- --####-- --##---- -##---## ###--### " + fL[6][1] = " -------- #--##--# ###--### --###--- --###--- ##-#-##- -#####-- ---##--- ###--### -##--##- #--##--# ##--##-- ---##--- -###---- -##--### --####-- " + fL[7][1] = " -------- #------# ######## ---#---- ---#---- ---#---- ---#---- -------- ######## --####-- ##----## ##--##-- -######- ####---- ###--##- ##-##-## " + fL[8][1] = " -------- -######- -######- -------- -------- --###--- --###--- -------- ######## -------- ######## -####--- ---##--- ###----- ##------ ---##--- " + -- 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F + fL[1][2] = " #------- ------#- ---##--- -##--##- -####### --#####- -------- ---##--- ---##--- ---##--- -------- -------- -------- -------- -------- -------- " + fL[2][2] = " ###----- ----###- --####-- -##--##- ##-##-## -##---## -------- --####-- --####-- ---##--- ---##--- --##---- -------- --#--#-- ---##--- ######## " + fL[3][2] = " #####--- --#####- -######- -##--##- ##-##-## --###--- -------- -######- -######- ---##--- ----##-- -##----- ##------ -##--##- --####-- ######## " + fL[4][2] = " #######- #######- ---##--- -##--##- -####-## -##-##-- -------- ---##--- ---##--- ---##--- #######- #######- ##------ ######## -######- -######- " + fL[5][2] = " #####--- --#####- ---##--- -##--##- ---##-## -##-##-- -######- -######- ---##--- -######- ----##-- -##----- ##------ -##--##- ######## --####-- " + fL[6][2] = " ###----- ----###- -######- -------- ---##-## --###--- -######- --####-- ---##--- --####-- ---##--- --##---- #######- --#--#-- ######## ---##--- " + fL[7][2] = " #------- ------#- --####-- -##--##- ---##-## ##--##-- -######- ---##--- ---##--- ---##--- -------- -------- -------- -------- -------- -------- " + fL[8][2] = " -------- -------- ---##--- -------- -------- -####--- -------- ######## -------- -------- -------- -------- -------- -------- -------- -------- " + -- 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F + fL[1][3] = " -------- --##---- -##-##-- -##-##-- --##---- -------- --###--- -##----- ---##--- -##----- -------- -------- -------- -------- -------- -----##- " + fL[2][3] = " -------- -####--- -##-##-- -##-##-- -#####-- ##---##- -##-##-- -##----- --##---- --##---- -##--##- --##---- -------- -------- -------- ----##-- " + fL[3][3] = " -------- -####--- -##-##-- #######- ##------ ##--##-- --###--- ##------ -##----- ---##--- --####-- --##---- -------- -------- -------- ---##--- " + fL[4][3] = " -------- --##---- -------- -##-##-- -####--- ---##--- -###-##- -------- -##----- ---##--- ######## ######-- -------- ######-- -------- --##---- " + fL[5][3] = " -------- --##---- -------- #######- ----##-- --##---- ##-###-- -------- -##----- ---##--- --####-- --##---- -------- -------- -------- -##----- " + fL[6][3] = " -------- -------- -------- -##-##-- #####--- -##--##- ##--##-- -------- --##---- --##---- -##--##- --##---- --##---- -------- --##---- ##------ " + fL[7][3] = " -------- --##---- -------- -##-##-- --##---- ##---##- -###-##- -------- ---##--- -##----- -------- -------- --##---- -------- --##---- #------- " + fL[8][3] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -##----- -------- -------- -------- " + -- 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F + fL[1][4] = " -#####-- --##---- -####--- -####--- ---###-- ######-- --###--- ######-- -####--- -####--- -------- -------- ---##--- -------- -##----- -####--- " + fL[2][4] = " ##---##- -###---- ##--##-- ##--##-- --####-- ##------ -##----- ##--##-- ##--##-- ##--##-- --##---- --##---- --##---- -------- --##---- ##--##-- " + fL[3][4] = " ##--###- --##---- ----##-- ----##-- -##-##-- #####--- ##------ ----##-- ##--##-- ##--##-- --##---- --##---- -##----- ######-- ---##--- ----##-- " + fL[4][4] = " ##-####- --##---- --###--- --###--- ##--##-- ----##-- #####--- ---##--- -####--- -#####-- -------- -------- ##------ -------- ----##-- ---##--- " + fL[5][4] = " ####-##- --##---- -##----- ----##-- #######- ----##-- ##--##-- --##---- ##--##-- ----##-- -------- -------- -##----- -------- ---##--- --##---- " + fL[6][4] = " ###--##- --##---- ##--##-- ##--##-- ----##-- ##--##-- ##--##-- --##---- ##--##-- ---##--- --##---- --##---- --##---- ######-- --##---- -------- " + fL[7][4] = " -#####-- ######-- ######-- -####--- ---####- -####--- -####--- --##---- -####--- -###---- --##---- --##---- ---##--- -------- -##----- --##---- " + fL[8][4] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -##----- -------- -------- -------- -------- " + -- 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F + fL[1][5] = " -#####-- --##---- ######-- --####-- #####--- #######- #######- --####-- ##--##-- -####--- ---####- ###--##- ####---- ##---##- ##---##- --###--- " + fL[2][5] = " ##---##- -####--- -##--##- -##--##- -##-##-- -##---#- -##---#- -##--##- ##--##-- --##---- ----##-- -##--##- -##----- ###-###- ###--##- -##-##-- " + fL[3][5] = " ##-####- ##--##-- -##--##- ##------ -##--##- -##-#--- -##-#--- ##------ ##--##-- --##---- ----##-- -##-##-- -##----- #######- ####-##- ##---##- " + fL[4][5] = " ##-####- ##--##-- -#####-- ##------ -##--##- -####--- -####--- ##------ ######-- --##---- ----##-- -####--- -##----- #######- ##-####- ##---##- " + fL[5][5] = " ##-####- ######-- -##--##- ##------ -##--##- -##-#--- -##-#--- ##--###- ##--##-- --##---- ##--##-- -##-##-- -##---#- ##-#-##- ##--###- ##---##- " + fL[6][5] = " ##------ ##--##-- -##--##- -##--##- -##-##-- -##---#- -##----- -##--##- ##--##-- --##---- ##--##-- -##--##- -##--##- ##---##- ##---##- -##-##-- " + fL[7][5] = " -####--- ##--##-- ######-- --####-- #####--- #######- ####---- --#####- ##--##-- -####--- -####--- ###--##- #######- ##---##- ##---##- --###--- " + fL[8][5] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " + -- 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F + fL[1][6] = " ######-- -####--- ######-- -####--- ######-- ##--##-- ##--##-- ##---##- ##---##- ##--##-- #######- -####--- ##------ -####--- ---#---- -------- " + fL[2][6] = " -##--##- ##--##-- -##--##- ##--##-- #-##-#-- ##--##-- ##--##-- ##---##- ##---##- ##--##-- ##---##- -##----- -##----- ---##--- --###--- -------- " + fL[3][6] = " -##--##- ##--##-- -##--##- -##----- --##---- ##--##-- ##--##-- ##---##- -##-##-- ##--##-- #---##-- -##----- --##---- ---##--- -##-##-- -------- " + fL[4][6] = " -#####-- ##--##-- -#####-- --##---- --##---- ##--##-- ##--##-- ##-#-##- --###--- -####--- ---##--- -##----- ---##--- ---##--- ##---##- -------- " + fL[5][6] = " -##----- ##-###-- -##-##-- ---##--- --##---- ##--##-- ##--##-- #######- --###--- --##---- --##--#- -##----- ----##-- ---##--- -------- -------- " + fL[6][6] = " -##----- -####--- -##--##- ##--##-- --##---- ##--##-- -####--- ###-###- -##-##-- --##---- -##--##- -##----- -----##- ---##--- -------- -------- " + fL[7][6] = " ####---- ---###-- ###--##- -####--- -####--- ######-- --##---- ##---##- ##---##- -####--- #######- -####--- ------#- -####--- -------- -------- " + fL[8][6] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- ######## " + + -- 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F + fL[1][7] = " --##---- -------- ###----- -------- ---###-- -------- --###--- -------- ###----- --##---- ----##-- ###----- -###---- -------- -------- -------- " + fL[2][7] = " --##---- -------- -##----- -------- ----##-- -------- -##-##-- -------- -##----- -------- -------- -##----- --##---- -------- -------- -------- " + fL[3][7] = " ---##--- -####--- -##----- -####--- ----##-- -####--- -##----- -###-##- -##-##-- -###---- ----##-- -##--##- --##---- ##--##-- #####--- -####--- " + fL[4][7] = " -------- ----##-- -#####-- ##--##-- -#####-- ##--##-- ####---- ##--##-- -###-##- --##---- ----##-- -##-##-- --##---- #######- ##--##-- ##--##-- " + fL[5][7] = " -------- -#####-- -##--##- ##------ ##--##-- ######-- -##----- ##--##-- -##--##- --##---- ----##-- -####--- --##---- #######- ##--##-- ##--##-- " + fL[6][7] = " -------- ##--##-- -##--##- ##--##-- ##--##-- ##------ -##----- -#####-- -##--##- --##---- ##--##-- -##-##-- --##---- ##-#-##- ##--##-- ##--##-- " + fL[7][7] = " -------- -###-##- ##-###-- -####--- -###-##- -####--- ####---- ----##-- ###--##- -####--- ##--##-- ###--##- -####--- ##---##- ##--##-- -####--- " + fL[8][7] = " -------- -------- -------- -------- -------- -------- -------- #####--- -------- -------- -####--- -------- -------- -------- -------- -------- " + + -- 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F + fL[1][8] = " -------- -------- -------- -------- ---#---- -------- -------- -------- -------- -------- -------- ---###-- ---##--- ###----- -###-##- -------- " + fL[2][8] = " -------- -------- -------- -------- --##---- -------- -------- -------- -------- -------- -------- --##---- ---##--- --##---- ##-###-- ---#---- " + fL[3][8] = " ##-###-- -###-##- ##-###-- -#####-- -#####-- ##--##-- ##--##-- ##---##- ##---##- ##--##-- ######-- --##---- ---##--- --##---- -------- --###--- " + fL[4][8] = " -##--##- ##--##-- -###-##- ##------ --##---- ##--##-- ##--##-- ##-#-##- -##-##-- ##--##-- #--##--- ###----- -------- ---###-- -------- -##-##-- " + fL[5][8] = " -##--##- ##--##-- -##--##- -####--- --##---- ##--##-- ##--##-- #######- --###--- ##--##-- --##---- --##---- ---##--- --##---- -------- ##---##- " + fL[6][8] = " -#####-- -#####-- -##----- ----##-- --##-#-- ##--##-- -####--- #######- -##-##-- -#####-- -##--#-- --##---- ---##--- --##---- -------- ##---##- " + fL[7][8] = " -##----- ----##-- ####---- #####--- ---##--- -###-##- --##---- -##-##-- ##---##- ----##-- ######-- ---###-- ---##--- ###----- -------- #######- " + fL[8][8] = " ####---- ---####- -------- -------- -------- -------- -------- -------- -------- #####--- -------- -------- -------- -------- -------- -------- " + + -- 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F + fL[1][9] = " ----###- ######-- #####--- ######-- -######- ######-- ##-##-## --####-- ##---##- ##-#-##- ##---##- -----##- ##---##- ##---##- -#####-- #######- " + fL[2][9] = " ---####- ##------ ##--##-- ##------ -##--##- ##------ ##-##-## -##--##- ##---##- ##---##- ##--##-- ----###- ###-###- ##---##- ##---##- ##---##- " + fL[3][9] = " --##-##- ##------ ##--##-- ##------ -##--##- ##------ -######- -----##- ##--###- ##--###- ##-##--- ---####- #######- ##---##- ##---##- ##---##- " + fL[4][9] = " -##--##- ######-- ######-- ##------ -##--##- #####--- ---##--- --####-- ##-####- ##-####- #####--- --##-##- ##-#-##- #######- ##---##- ##---##- " + fL[5][9] = " #######- ##---##- ##---##- ##------ -##--##- ##------ -######- -----##- ####-##- ####-##- ##--##-- -##--##- ##---##- ##---##- ##---##- ##---##- " + fL[6][9] = " ##---##- ##---##- ##---##- ##------ -##--##- ##------ ##-##-## ##---##- ###--##- ###--##- ##---##- ##---##- ##---##- ##---##- ##---##- ##---##- " + fL[7][9] = " ##---##- ######-- ######-- ##------ ######## #######- ##-##-## -#####-- ##---##- ##---##- ##---##- ##---##- ##---##- ##---##- -#####-- ##---##- " + fL[8][9] = " -------- -------- -------- -------- ##----## -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " + + -- 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F + fL[1][10] = " ######-- -#####-- ######-- ##---##- ---##--- ##----## ##--##-- ##---##- ##-#-##- ##-#-##- ####---- ##----#- ##------ -#####-- ##--###- -######- " + fL[2][10] = " ##---##- ##---##- --##---- ##---##- -######- -##--##- ##--##-- ##---##- ##-#-##- ##-#-##- --##---- ##----#- ##------ ##---##- ##-##-## ##---##- " + fL[3][10] = " ##---##- ##------ --##---- ##---##- ##-##-## --####-- ##--##-- ##---##- ##-#-##- ##-#-##- --##---- ##----#- ##------ -----##- ##-##-## ##---##- " + fL[4][10] = " ######-- ##------ --##---- -######- ##-##-## ---##--- ##--##-- -######- ##-#-##- ##-#-##- --#####- ####--#- ######-- ---####- #####-## -######- " + fL[5][10] = " ##------ ##------ --##---- -----##- ##-##-## --####-- ##--##-- -----##- ##-#-##- ##-#-##- --##--## ##-##-#- ##---##- -----##- ##-##-## --##-##- " + fL[6][10] = " ##------ ##---##- --##---- ##---##- -######- -##--##- ##--##-- -----##- ##-#-##- ##-#-##- --##--## ##-##-#- ##---##- ##---##- ##-##-## -##--##- " + fL[7][10] = " ##------ -#####-- --##---- -#####-- ---##--- ##----## #######- -----##- #######- ######## --#####- ####--#- ######-- -#####-- ##--###- ##---##- " + fL[8][10] = " -------- -------- -------- -------- -------- -------- -----##- -------- -------- ------## -------- -------- -------- -------- -------- -------- " + + -- A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF + fL[1][11] = " -------- -----#-- -------- -------- -------- -------- -------- -------- -------- --##---- -------- -------- -------- -------- -------- -------- " + fL[2][11] = " -------- -####--- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " + fL[3][11] = " -####--- ##------ #####--- ######-- -######- -####--- ##-##-## -####--- ##--##-- ##--##-- ##--##-- ----###- ##---##- ##--##-- -####--- ######-- " + fL[4][11] = " ----##-- #####--- ##--##-- ##------ -##--##- ##--##-- -######- ##--##-- ##--##-- ##--##-- ##-##--- ---####- ###-###- ##--##-- ##--##-- ##--##-- " + fL[5][11] = " -#####-- ##--##-- #####--- ##------ -##--##- ######-- ---##--- ---##--- ##-###-- ##-###-- ####---- --##-##- ##-#-##- ######-- ##--##-- ##--##-- " + fL[6][11] = " ##--##-- ##--##-- ##---##- ##------ -##--##- ##------ -######- ##--##-- ###-##-- ###-##-- ##--##-- -##--##- ##---##- ##--##-- ##--##-- ##--##-- " + fL[7][11] = " -######- -####--- ######-- ##------ ######## -#####-- ##-##-## -####--- ##--##-- ##--##-- ##--##-- ##---##- ##---##- ##--##-- -####--- ##--##-- " + fL[8][11] = " -------- -------- -------- -------- ##----## -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " + + -- B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF + fL[1][12] = " --#---#- -#-#-#-# ##-##-## ---#---- ---#---- ---#---- ---#-#-- -------- -------- ---#-#-- ---#-#-- -------- ---#-#-- ---#-#-- ---#---- -------- " + fL[2][12] = " #---#--- #-#-#-#- -###-### ---#---- ---#---- ---#---- ---#-#-- -------- -------- ---#-#-- ---#-#-- -------- ---#-#-- ---#-#-- ---#---- -------- " + fL[3][12] = " --#---#- -#-#-#-# ##-##-## ---#---- ---#---- ####---- ---#-#-- -------- ####---- ####-#-- ---#-#-- ######-- ####-#-- ---#-#-- ####---- -------- " + fL[4][12] = " #---#--- #-#-#-#- ###-###- ---#---- ---#---- ---#---- ---#-#-- -------- ---#---- -----#-- ---#-#-- -----#-- -----#-- ---#-#-- ---#---- -------- " + fL[5][12] = " --#---#- -#-#-#-# ##-##-## ---#---- ####---- ####---- ####-#-- ######-- ####---- ####-#-- ---#-#-- ####-#-- ######-- ######-- ####---- ####---- " + fL[6][12] = " #---#--- #-#-#-#- -###-### ---#---- ---#---- ---#---- ---#-#-- ---#-#-- ---#---- ---#-#-- ---#-#-- ---#-#-- -------- -------- -------- ---#---- " + fL[7][12] = " --#---#- -#-#-#-# ##-##-## ---#---- ---#---- ---#---- ---#-#-- ---#-#-- ---#---- ---#-#-- ---#-#-- ---#-#-- -------- -------- -------- ---#---- " + fL[8][12] = " #---#--- #-#-#-#- ###-###- ---#---- ---#---- ---#---- ---#-#-- ---#-#-- ---#---- ---#-#-- ---#-#-- ---#-#-- -------- -------- -------- ---#---- " + + -- C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF + fL[1][13] = " ---#---- ---#---- -------- ---#---- -------- ---#---- ---#---- ---#-#-- ---#-#-- -------- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#---- " + fL[2][13] = " ---#---- ---#---- -------- ---#---- -------- ---#---- ---#---- ---#-#-- ---#-#-- -------- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#---- " + fL[3][13] = " ---#---- ---#---- -------- ---#---- -------- ---#---- ---##### ---#-#-- ---#-### ---##### ####-### ######## ---#-### ######## ####-### ######## " + fL[4][13] = " ---#---- ---#---- -------- ---#---- -------- ---#---- ---#---- ---#-#-- ---#---- ---#---- -------- -------- ---#---- -------- -------- -------- " + fL[5][13] = " ---##### ######## ######## ---##### ######## ######## ---##### ---#-### ---##### ---#-### ######## ####-### ---#-### ######## ####-### ######## " + fL[6][13] = " -------- -------- ---#---- ---#---- -------- ---#---- ---#---- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#-#-- -------- ---#-#-- -------- " + fL[7][13] = " -------- -------- ---#---- ---#---- -------- ---#---- ---#---- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#-#-- -------- ---#-#-- -------- " + fL[8][13] = " -------- -------- ---#---- ---#---- -------- ---#---- ---#---- ---#-#-- -------- ---#-#-- -------- ---#-#-- ---#-#-- -------- ---#-#-- -------- " + + -- D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF + fL[1][14] = " ---#-#-- -------- -------- ---#-#-- ---#---- -------- -------- ---#-#-- ---#---- ---#---- -------- ######## -------- ####---- ----#### ######## " + fL[2][14] = " ---#-#-- -------- -------- ---#-#-- ---#---- -------- -------- ---#-#-- ---#---- ---#---- -------- ######## -------- ####---- ----#### ######## " + fL[3][14] = " ---#-#-- ######## -------- ---#-#-- ---##### ---##### -------- ---#-#-- ######## ---#---- -------- ######## -------- ####---- ----#### ######## " + fL[4][14] = " ---#-#-- -------- -------- ---#-#-- ---#---- ---#---- -------- ---#-#-- ---#---- ---#---- -------- ######## -------- ####---- ----#### ######## " + fL[5][14] = " ######## ######## ######## ---##### ---##### ---##### ---##### ######## ######## ####---- ---##### ######## ######## ####---- ----#### -------- " + fL[6][14] = " -------- ---#---- ---#-#-- -------- -------- ---#---- ---#-#-- ---#-#-- ---#---- -------- ---#---- ######## ######## ####---- ----#### -------- " + fL[7][14] = " -------- ---#---- ---#-#-- -------- -------- ---#---- ---#-#-- ---#-#-- ---#---- -------- ---#---- ######## ######## ####---- ----#### -------- " + fL[8][14] = " -------- ---#---- ---#-#-- -------- -------- ---#---- ---#-#-- ---#-#-- ---#---- -------- ---#---- ######## ######## ####---- ----#### -------- " + + -- F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF + fL[1][15] = " -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " + fL[2][15] = " -------- -------- -------- -------- ---##--- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " + fL[3][15] = " #####--- -####--- ######-- ##--##-- -######- ##---##- ##--##-- ##--##-- ##-#-##- ##-#-##- ####---- ##----#- ##------ -#####-- ##--###- -#####-- " + fL[4][15] = " ##--##-- ##--##-- --##---- ##--##-- ##-##-## -##-##-- ##--##-- ##--##-- ##-#-##- ##-#-##- --##---- ##----#- ##------ ##---##- ##-##-## ##--##-- " + fL[5][15] = " ##--##-- ##------ --##---- -#####-- ##-##-## --###--- ##--##-- -#####-- ##-#-##- ##-#-##- --#####- ####--#- #####--- ---####- #####-## -#####-- " + fL[6][15] = " #####--- ##--##-- --##---- ----##-- -######- -##-##-- ##--##-- ----##-- ##-#-##- ##-#-##- --##--## ##-##-#- ##--##-- ##---##- ##-##-## -##-##-- " + fL[7][15] = " ##------ -####--- --##---- ##--##-- ---##--- ##---##- #######- ----##-- #######- ######## --#####- ####--#- #####--- -#####-- ##--###- ##--##-- " + fL[8][15] = " ##------ -------- -------- -####--- ---##--- -------- -----##- -------- -------- ------## -------- -------- -------- -------- -------- -------- " + + -- E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF + fL[1][16] = " -#--#--- -#--#--- -##----- ---##--- ----#--- ---#---- --##---- -------- -##----- -------- -------- ---##### #-#----- -##----- -------- -------- " + fL[2][16] = " ######-- -------- --##---- --##---- ---#-#-- ---#---- --##---- -------- #--#---- -------- -------- ---#---- ##-#---- #--#---- -------- -------- " + fL[3][16] = " ##------ -####--- ---##--- -##----- ---#---- ---#---- -------- -##--#-- #--#---- -------- -------- ---#---- #--#---- --#----- --####-- -------- " + fL[4][16] = " #####--- ##--##-- --##---- --##---- ---#---- ---#---- ######-- #--##--- -##----- --##---- -------- #--#---- #--#---- -#------ --####-- -------- " + fL[5][16] = " ##------ ######-- -##----- ---##--- ---#---- ---#---- -------- -------- -------- --##---- --##---- -#-#---- #--#---- ####---- --####-- -------- " + fL[6][16] = " ##------ ##------ -------- -------- ---#---- -#-#---- --##---- -##--#-- -------- -------- -------- --##---- -------- -------- --####-- -------- " + fL[7][16] = " #######- -#####-- -####--- -####--- ---#---- --#----- --##---- #--##--- -------- -------- -------- ---#---- -------- -------- -------- -------- " + fL[8][16] = " -------- -------- -------- -------- ---#---- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- " + + ENDLUA + LUA ALLPASS + for i = 1, 8 do + for j = 1, 16, 1 do + _pc(" DG " .. fL[i][j]) + end + end + ENDLUA +; +/* +Линия 256 байтов в ОЗУ становится столбиком в видеопамяти. +Слева направо переходит сверху вниз. Первая линия - первый столбик. */ \ No newline at end of file diff --git a/src/bios/exp/FUNC_4x.ASM b/bios/exp/FUNC_4x.ASM similarity index 94% rename from src/bios/exp/FUNC_4x.ASM rename to bios/exp/FUNC_4x.ASM index 052f141..517d40f 100644 --- a/src/bios/exp/FUNC_4x.ASM +++ b/bios/exp/FUNC_4x.ASM @@ -1,882 +1,882 @@ -; -; MACRO WAIT_HDD -; LD BC,IDE.Read.Status -; .loop: IN A,(C) -; BIT IDE.CtrlBit.Busy,A -; JR NZ,.loop -; ENDM -;______________________________________________________________________: -; -F4x_WAIT_HDD: LD BC,IDE.Read.Status -.loop: IN A,(C) - BIT IDE.CtrlBit.Busy,A - RET Z - JR .loop - - -; GET_BPB_OFFSET: -; ;LD A,SYS_PAGE -; ;LD HL,MS_BPB -; PUSH AF -; PUSH HL -; LD B,1 -; LD IX,#0000 -; LD DE,#0000 -; CALL FN_HDD_READ -; POP IX -; POP AF -; PUSH AF -; PUSH IX -; LD DE,#01BE ;!HARDCODE смещение от начала сектора для таблицы разделов -; ADD IX,DE -; ; -; EX AF,AF' -; IN A,(SLOT3) -; EX AF,AF' -; OUT (SLOT3),A -; ; -; LD E,(IX+8) ; первый сектор (LBA) начала раздела (DWORD) -; LD D,(IX+9) -; LD L,(IX+10) -; LD H,(IX+11) -; ; -; EX AF,AF' -; OUT (SLOT3),A -; EX AF,AF' -; ; -; PUSH HL -; POP IX -; POP HL -; POP AF -; RET -HD_BPB_PREP: - ; [x] 27/01/2024 теперь режим спектрума работает с любым разделом HDD - ;LD D,A - ;IN A,(SLOT3) - ;EX AF,AF' - ; LD A,SYS_PAGE - ; OUT (SLOT3),A - ; LD A,(SYS_PAGE.HD_IDF_ADR.sectors) - ; LD E,A - ;EX AF,AF' - ;OUT (SLOT3),A - ;LD A,D - ;LD D,#00 - ;LD IX,#0000 - ;LD B,#01 - - LD B,A - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.CURRENT_HDD) - INC A - JR NZ,.configured - ; - LD A,(SYS_PAGE.HD_IDF_ADR.sectors) - LD E,A - LD D,#00 - LD IX,#0000 - JR .done - ; -.configured: - LD IX,(SYS_PAGE.HDD_PARTITION_OFFSET+2) - LD DE,(SYS_PAGE.HDD_PARTITION_OFFSET) -.done: EX AF,AF' - OUT (SLOT3),A - LD A,B - LD B,#01 - ; -HD_PREPARE: - PUSH AF - PUSH HL - CALL HD_CALC_SECS - JR C,.error - ; - LD A,B - LD BC,IDE.Write.Counter ; Установить число секторов для записи - OUT (C),A - ; - INC C - OUT (C),L ; СЕКТОР - INC C - OUT (C),E ; дорожка low - INC C - OUT (C),D ; дорожка high - ; - LD BC,IDE.Read.Control - IN A,(C) - AND #F0 ; !!!!! посмотреть - OR H - INC B ; IDE.Write.DeviceHead - OUT (C),A - POP HL ; BUFER & PAGE - POP AF - AND A - RET - ; -.error: POP HL - POP AF - SCF - RET - - -NEXT_ADD_SEC: - PUSH AF - - LD A,B - LD BC,IDE.Write.Counter ; Установить число секторов для записи - OUT (C),A - - DEC B - INC C - IN A,(C) ; IDE.Read.Sector - ADC A,E - INC B - OUT (C),A ; IDE.Write.Sector - - DEC B - INC C - IN A,(C) ; IDE.Read.CylinderLow - ADC A,D - INC B - OUT (C),A ; IDE.Write.CylinderLow - - DEC B - INC C - IN A,(C) ; IDE.Read.CylinderHigh - ADC A,0 - INC B - OUT (C),A ; IDE.Write.CylinderHigh - - LD BC,IDE.Read.Control - IN A,(C) - ; - LD D,A - ADC A,0 - AND #0F - LD E,A - LD A,D - AND #F0 - OR E - INC B - OUT (C),A ; IDE.Write.DeviceHead - - POP AF - RET - -; При исполнении производится вся подготовка к -; операциям чтения/записи вычисление -; цилиндров/головок/секторов и занесение их в регистры винчестера -; далее программа может сама только подать команду читать/писать и -; самостоятельно производить считывание/запись данных в винчестер. -; Команда удобна для работы программ в реальном времени, когда необходимо -; кроме чтения/записи данных производить какие либо иные действия. -FN_HDD_PREPARE: ; ПОДГОТОВКА К ВНЕШНИМ ОПЕРАЦИЯМ R/W - AND A ; чтоб сбросить CF если он стоит и B=0 - INC B - DEC B - RET Z - - CALL HD_WAIT - RET C - - CALL HD_PREPARE - RET C - ; [x] - EX AF,AF' - LD A,#BF ; check buffer address in SLOT3 - SUB H - JR C,.SetCommand - EX AF,AF' - - SAFE_PORTY - - EXX - LD C,SLOT3 - IN B,(C) - EXX - OUT (SLOT3),A - EX AF,AF' - -.SetCommand: - LD BC,IDE.Write.Command - LD A,IDE.CMD.ATA.ReadSectorsWithRetry - ; OUT (C),A - AND A - RET - - - -FN_HDD_READ_BPB: - CALL HD_WAIT - RET C - CALL HD_BPB_PREP - JR NC,FN_HDD_READ.L1 - RET - - -; FOR LBA ONLY - NEXT_READ -; HL - bufer, A - page -; B - numer of sectors -; DE - add_par (next+DE) (d.b. 1 for NEXT) -FN_HDD_READ_NEXT: - AND A - INC B - DEC B - RET Z ; ret if 0 sectors - CALL HD_WAIT - RET C - CALL NEXT_ADD_SEC - JR FN_HDD_READ.L1 - ; -; HL - BUFER, A - PAGE -FN_HDD_READ: - AND A - INC B - DEC B - RET Z - CALL HD_WAIT - CALL NC,HD_PREPARE - RET C -.L1: EXX - LD C,SLOT3 - IN B,(C) - EXX - OUT (SLOT3),A - EX AF,AF' - ; - SAFE_PORTY - ; - LD BC,IDE.Write.Command - LD A,IDE.CMD.ATA.ReadSectorsWithRetry - OUT (C),A -.L2: CALL F4x_WAIT_HDD - ;BIT IDE.CtrlBit.DataRequest,A - AND IDE.CtrlByte.DataRequest - JR Z,.RET_PortY - ; - ;HD_READ_CONT - LD BC,IDE.Read.Data -.loop_read1: - DUP 16 - INI ; всего 16 раз INI - оптимально. - EDUP - JR NZ,.loop_read1 -.loop_read2: - DUP 16 - INI ; всего 16 раз INI - оптимально. - EDUP - JR NZ,.loop_read2 - ; - LD A,H - OR L - JR NZ,.L2 - ; - LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD H,high SYS_PAGE.RAM_TABLE - LD L,A - LD A,(HL) - OUT (SLOT3),A - EX AF,AF' - LD HL,#C000 - JR .L2 - ; -.RET_PortY: - ZERO_PORTY - ; -HD_RET: EXX - OUT (C),B - EXX - LD BC,IDE.Read.Error - IN A,(C) - AND A - SCF - RET NZ - ; - EX AF,AF' - AND A - RET - - -; HL - BUFER, A - PAGE -FN_HDD_WRITE: - AND A - INC B - DEC B - RET Z - - CALL HD_WAIT - RET C - CALL HD_PREPARE - RET C - - EXX - LD C,SLOT3 - IN B,(C) - EXX - OUT (SLOT3),A - EX AF,AF' - - LD BC,IDE.Write.Command - LD A,IDE.CMD.ATA.WriteSectorsWithRetry - OUT (C),A - -HD_WR_L2: - CALL F4x_WAIT_HDD - - BIT IDE.CtrlBit.DataRequest,A - JR Z,HD_RET - - LD BC,IDE.Write.Data - LD D,32 ;!HARDCODE зависит от счётчика DUP в HD_WR_LOOP -HD_WR_LOOP: - DUP 16 - OUTI ; всего 16 раз OUTI - оптимально. - EDUP - - DEC D - JR NZ,HD_WR_LOOP - - LD A,H - OR L - JR NZ,HD_WR_L2 - - LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD H,high SYS_PAGE.RAM_TABLE - LD L,A - LD A,(HL) - OUT (SLOT3),A - EX AF,AF' - LD HL,#C000 ; !HARDCODE - JR HD_WR_L2 - -;-----------------------------------------------------------------------; -FN_HDD_RECAL: - ; !TEST ;[ ] работа с предварительно выбранным HDD - LD BC,IDE.Read.Control - IN A,(C) - PUSH AF - ; - LD A,IDE.Drive.Master - LD BC,IDE.Write.DeviceHead - OUT (C),A - LD A,IDE.CMD.ATA.ExecuteDeviceDiagnostic - CALL HD_CMD_EXE - ; !TEST работа с предварительно выбранным HDD - POP DE - ; - RET C - LD BC,IDE.Read.Error - IN A,(C) - ; !TEST работа с предварительно выбранным HDD - LD BC,IDE.Write.DeviceHead - OUT (C),D - ; - AND #7F - DEC A - RET Z - SCF - RET - -; Diagnostic Codes -; -; Code Description -; #01 Device 0 passed, Device 1 passed or not present -; #00 Device 0 failed, Device 1 passed or not present -; #81 Device 1 failed, Device 0 passed -; #80 Device 1 failed, Device 0 failed -; -; The meaning of values other than #01 and #81 are vendor specific and -; should be considered a diagnostic failed condition. -;-----------------------------------------------------------------------; - - -;????? глянуть -; RET C -; LD A,#1F ; RECALIBRATE -; CALL HD_CMD_EXE -; RET - - - -; [x] 28/01/2024 работает со всеми каналами -FN_HDD_TEST_IDE: - LD E,#00 - ; TEST Secondary Chanel - LD A,IDE.Chanel.Secondary - OUT (IDE.Chanel.Set),A - CALL .TEST_CHANEL - SLA E - SLA E - ; TEST Primary Chanel - LD A,IDE.Chanel.Primary - OUT (IDE.Chanel.Set),A - CALL .TEST_CHANEL -; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; LD BC,IDE.Write.DeviceHead -; LD A,IDE.Drive.Master -; OUT (C),A -; ; -; CALL TEST_HDD_DRV -; ; -; JR NZ,.NO_HDD1 -; SET 0,E -; .NO_HDD1: -; LD BC,IDE.Write.DeviceHead -; LD A,IDE.Drive.Slave -; OUT (C),A -; ; -; CALL TEST_HDD_DRV -; ; -; JR NZ,.NO_HDD2 -; SET 1,E -; .NO_HDD2: -; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD A,(SYS_PAGE.CURRENT_HDD) - OUT (C),B - CP #FF - JR Z,.exit - AND 1 - JR Z,.exit - LD A,IDE.Chanel.Secondary - OUT (IDE.Chanel.Set),A -; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -.exit: LD A,E - AND A - SCF - RET Z ; HDD absent ! - AND A - RET - -.TEST_CHANEL: - LD BC,IDE.Write.DeviceHead - LD A,IDE.Drive.Master - OUT (C),A - ; - CALL TEST_HDD_DRV - ; - JR NZ,.NO_HDD1 - SET 0,E -.NO_HDD1: - LD BC,IDE.Write.DeviceHead - LD A,IDE.Drive.Slave - OUT (C),A - ; - CALL TEST_HDD_DRV - ; - RET NZ - SET 1,E - RET - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;-----------------------------------[DIFFERENT] -; Не должна портить регистр E!!! -TEST_HDD_DRV: - LD HL,#01FE - LD BC,IDE.Write.Counter - OUT (C),L - INC C - OUT (C),H ; IDE.Write.Sector - ; - DEC C - DEC B - IN A,(C) ; IDE.Read.Counter - CP L - RET NZ - INC C - IN A,(C) ; IDE.Read.Sector - CP H - RET - -; TEST_HDD_DRV: -; ; EXTENDED.ASM variant -; LD HL,#00FF -; LD BC,IDE.Write.CylinderLow -; OUT (C),L -; INC C -; OUT (C),H ; IDE.Write.CylinderHigh - -; INC B -; DEC C -; IN A,(C) ; Тут регистр BC = #0254 - .CylinderLow -; CP L -; RET NZ -; INC C - -; IN A,(C) ; Тут регистр BC = #0255 - .CylinderHigh -; CP H -; RET - - -; [x] 07/01/2024 bit0 - master/slave, bit1: Primary/Secondary, bit2..3: использующийся раздел в MBR -; !TODO сделать работу с переменными биоса SYS_PAGE.IDE_0..3 -FN_HDD_PART: - DI - PUSH BC - PUSH HL - ; - EX AF,AF' - IN A,(SLOT3) - EX AF,AF' - ; - LD C,A - AND 2 - LD A,IDE.Chanel.Primary - JR Z,.SET_CH - LD A,IDE.Chanel.Secondary -.SET_CH: - OUT (IDE.Chanel.Set),A - ; - LD A,C - PUSH AF - AND 1 - ; - LD A,IDE.Drive.Slave - JR NZ,.SET_Master_Slave - ; - LD A,IDE.Drive.Master -.SET_Master_Slave: - LD BC,IDE.Write.DeviceHead - OUT (C),A - CALL TEST_HDD_DRV - JR NZ,.Error - ; - CALL FN_HDD_INIT.L3 - JR C,.Error - ; - POP BC - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD A,B - LD (SYS_PAGE.CURRENT_HDD),A - ; - EX AF,AF' - OUT (SLOT3),A - ; - CALL SET_BPB_OFFSET -.exit: POP HL - POP BC - EI - RET - ; -.Error: POP AF - SCF - JR .exit - -; [x] 27/01/2024 адаптирована для корректной работы с FN_HDD_PART -FN_HDD_INIT: - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD A,(SYS_PAGE.CURRENT_HDD) - OUT (C),B - INC A - JR Z,FN_HDD_PART - - ; !FIXIT сделать тут выбор первого попавшегося из SYS.IDE_0-3 - CALL TEST_HDD_DRV - SCF - RET NZ - ; LD BC,IDE.Write.DeviceHead - ; LD A,IDE.Drive.Master - ; OUT (C),A - ; CALL TEST_HDD_DRV - ; JR NZ,.ABSENT - ; -.L3: CALL F4x_WAIT_HDD - LD BC,IDE.Write.Command - LD A,IDE.CMD.ATA.IdentifyDevice ;!FIXIT переделать - OUT (C),A - CALL F4x_WAIT_HDD - AND IDE.CtrlByte.DataRequest - ;JR NZ,.L2 - SCF - RET Z - ;JR NZ,.L2 - ;SCF - ;RET -; .ABSENT: -; LD BC,IDE.Write.DeviceHead -; LD A,IDE.Drive.Slave -; OUT (C),A -; CALL TEST_HDD_DRV -; JR Z,.L3 -; SCF -; RET - ; -;.L2: - LD BC,IDE.Read.Data - LD HL,SYS_PAGE.HD_IDF_ADR - IN A,(SLOT3) - LD D,A - LD A,SYS_PAGE - OUT (SLOT3),A - INIR - INIR - ; B = 0 - LD H,B - LD L,B - LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; число секторов - LD C,A - ;LD HL,0 - ;LD B,H - LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; число головок -.loop: ADD HL,BC - DEC A - JR NZ,.loop - LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL - CALL F4x_WAIT_HDD - LD BC,IDE.Read.Control - IN A,(C) - AND #10 - LD B,A - LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; число головок - DEC A - AND #0F - OR IDE.Drive.Master - OR B - - LD H,A - LD A,(SYS_PAGE.HD_IDF_ADR.LBA_CHS) - ;BIT 1,A - AND %0000'0010 - JR Z,.NO_LBA - SET 6,H -.NO_LBA: - LD BC,IDE.Write.DeviceHead - OUT (C),H - LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; число секторов -.HDD_CONFIGURED: - LD BC,IDE.Write.Counter - OUT (C),A - LD A,D - OUT (SLOT3),A - LD A,IDE.CMD.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS - ;CALL HD_CMD_EXE - ;RET -HD_CMD_EXE: - CALL HD_WAIT - RET C - LD BC,IDE.Write.Command - OUT (C),A -HD_WAIT: - PUSH DE - PUSH BC - PUSH AF - LD DE,0 - LD BC,IDE.Read.Status -.loop: IN A,(C) - AND IDE.CtrlByte.Busy - JR Z,.EXIT - DEC DE - LD A,D - OR E - JR NZ,.loop - POP AF - POP BC - POP DE - SCF - RET - ; -.EXIT: POP AF - POP BC - POP DE - AND A - RET - - -; ;EXTENDED.ASM Version -; HDD_LBA: ;???!!!! -; POP BC -; LD L,E -; LD E,D -; LD D,XL -; XOR A -; LD H,A -; RET -; HD_CALC_SECS: -; LD A,XH -; AND A -; SCF -; RET NZ ; ошибка, слишком большой HDD - -; PUSH BC -; LD BC,IDE.Write.DeviceHead -; DEC B -; IN A,(C) -; BIT 6,A -; JR NZ,HDD_LBA -; ; POP BC - - -;EXP_HDD.ASM Version -HD_CALC_SECS: - PUSH BC - LD BC,IDE.Read.Control - IN A,(C) - AND %0100'0000 - POP BC - JR Z,.CHS - ; LBA - LD L,E - LD E,D - LD D,XL - LD A,XH - AND #0F ; LBA 28 - LD H,A - RET - ; CHS -.CHS: LD A,XH - AND A - SCF - RET NZ ; ошибка, слишком большой HDD - ; IX,DE - абсолютный номер сектора - PUSH IX - POP HL - ; - IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,C - LD (SYS_PAGE.COPY_SLOT3),A - ; HL,DE - номер сектора - ; BC - число секторов на цилиндре - LD BC,(SYS_PAGE.HD_IDF_ADR.sec_cyl) ; число секторов на цилиндре - LD A,16 ; HL,DE разделить на BC - SCF -.DIV_LOOP: - EX DE,HL - ADD HL,HL - EX DE,HL - ADC HL,HL - ; - SBC HL,BC ; сравнить HL и BC - JR NC,.NO_ADD ; переноса не было - +1! - ADD HL,BC - DEC A - JR NZ,.DIV_LOOP - JR .DIV_END -.NO_ADD: - INC DE - DEC A - JR NZ,.DIV_LOOP -.DIV_END: - ; DE - результат, HL - остаток - ; DE - цилиндр - LD A,(SYS_PAGE.HD_IDF_ADR.sectors) - ; A - число секторов на дорожке - ; HL - номер сектора в цилиндре - LD C,A - ;LD BC,(MS_BPB+S_P_T) ; ЧИСЛО СЕКТОРОВ НА ДОРОЖКЕ - XOR A - LD B,A -.LOOP: SBC HL,BC - INC A - JR NC,.LOOP - ; - DEC A ; A - головка - ADD HL,BC ; L - сектор - INC L - LD H,A ; HL - HEAD,SEC - ; - LD A,(SYS_PAGE.COPY_SLOT3) - OUT (SLOT3),A - AND A - RET - -; [x] 27/01/2024 теперь режим спектрума работает с любым разделом HDD -SET_BPB_OFFSET: - LD A,SYS_PAGE - LD HL,SYS_PAGE.MS_BPB - LD IX,#0000 - LD DE,#0000 - LD B,1 - CALL FN_HDD_READ - ; - EX AF,AF' - IN A,(SLOT3) - EX AF,AF' - OUT (SLOT3),A - ; - LD A,(SYS_PAGE.CURRENT_HDD) - RRCA - RRCA - AND 3 - INC A - LD B,A - ; - ; ; смещение от начала сектора для таблицы разделов c первым сектором LBA для первого раздела - LD HL,SYS_PAGE.MS_BPB - _sMBR_PARTITION_RECORD + _sBOOT_SECTOR.PARTITION_TABLE - LD DE,_sMBR_PARTITION_RECORD -.loop: ADD HL,DE - DJNZ .loop - ; - LD A,_sMBR_PARTITION_RECORD.Start_LBA - ADD L - LD L,A - LD DE,SYS_PAGE.HDD_PARTITION_OFFSET - LD C,_sMBR_PARTITION_RECORD.Size_LBA - _sMBR_PARTITION_RECORD.Start_LBA - LDIR - ; [x] 07/07/2024 fix bug with select empty partition record - EX DE,HL - XOR A - LD B,_sMBR_PARTITION_RECORD.Size_LBA - _sMBR_PARTITION_RECORD.Start_LBA -.loop2: DEC HL - OR (HL) - DJNZ .loop2 - SUB 1 - ; - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - RET - -; ENDMODULE -;************************************************ - -; ????? -; DB 'HDD_DRV_END' -; Вход: -; C - команда -; 0 - INIT - входных пар нет => A - число поддерживаемых дисков. -; 1 - RESET - выбор диска A - номер диска от 0 => -; 2 - (STATUS) !!!!! TEST? -; 3 - MEDIA CHECK - A - номер диска => A = 0 - old. #FF - new (всегда #FF) !!!!! PREPARE??? -; 4 - READ BPB - A - диск HL - адрес в текущей странице. -; 5 - READ - A - диск, IX:DE сектор, HL - адрес, B - число секторов -; 6 - WRITE - '' - -; 7 - PART -; 8 - READ_NEXT -; -; ошибки - CF - A - ошибка -; -; 0 - нет ошибки -; 1 - неверная команда -; 2 - неверный номер диска -; 3 - неверный формат (не MS-DOS) -; 4 - нет готовности -; 5 - ошибка позиционирования -; 6 - сектор не найден -; 7 - ошибка CRC -; 8 - защита записи -; 9 - ошибка чтения -; 10 - ошибка записи -; 11 - ГЛЮК +; +; MACRO WAIT_HDD +; LD BC,IDE.Read.Status +; .loop: IN A,(C) +; BIT IDE.CtrlBit.Busy,A +; JR NZ,.loop +; ENDM +;______________________________________________________________________: +; +F4x_WAIT_HDD: LD BC,IDE.Read.Status +.loop: IN A,(C) + BIT IDE.CtrlBit.Busy,A + RET Z + JR .loop + + +; GET_BPB_OFFSET: +; ;LD A,SYS_PAGE +; ;LD HL,MS_BPB +; PUSH AF +; PUSH HL +; LD B,1 +; LD IX,#0000 +; LD DE,#0000 +; CALL FN_HDD_READ +; POP IX +; POP AF +; PUSH AF +; PUSH IX +; LD DE,#01BE ;!HARDCODE смещение от начала сектора для таблицы разделов +; ADD IX,DE +; ; +; EX AF,AF' +; IN A,(SLOT3) +; EX AF,AF' +; OUT (SLOT3),A +; ; +; LD E,(IX+8) ; первый сектор (LBA) начала раздела (DWORD) +; LD D,(IX+9) +; LD L,(IX+10) +; LD H,(IX+11) +; ; +; EX AF,AF' +; OUT (SLOT3),A +; EX AF,AF' +; ; +; PUSH HL +; POP IX +; POP HL +; POP AF +; RET +HD_BPB_PREP: + ; [x] 27/01/2024 теперь режим спектрума работает с любым разделом HDD + ;LD D,A + ;IN A,(SLOT3) + ;EX AF,AF' + ; LD A,SYS_PAGE + ; OUT (SLOT3),A + ; LD A,(SYS_PAGE.HD_IDF_ADR.sectors) + ; LD E,A + ;EX AF,AF' + ;OUT (SLOT3),A + ;LD A,D + ;LD D,#00 + ;LD IX,#0000 + ;LD B,#01 + + LD B,A + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.CURRENT_HDD) + INC A + JR NZ,.configured + ; + LD A,(SYS_PAGE.HD_IDF_ADR.sectors) + LD E,A + LD D,#00 + LD IX,#0000 + JR .done + ; +.configured: + LD IX,(SYS_PAGE.HDD_PARTITION_OFFSET+2) + LD DE,(SYS_PAGE.HDD_PARTITION_OFFSET) +.done: EX AF,AF' + OUT (SLOT3),A + LD A,B + LD B,#01 + ; +HD_PREPARE: + PUSH AF + PUSH HL + CALL HD_CALC_SECS + JR C,.error + ; + LD A,B + LD BC,IDE.Write.Counter ; Установить число секторов для записи + OUT (C),A + ; + INC C + OUT (C),L ; СЕКТОР + INC C + OUT (C),E ; дорожка low + INC C + OUT (C),D ; дорожка high + ; + LD BC,IDE.Read.Control + IN A,(C) + AND #F0 ; !!!!! посмотреть + OR H + INC B ; IDE.Write.DeviceHead + OUT (C),A + POP HL ; BUFER & PAGE + POP AF + AND A + RET + ; +.error: POP HL + POP AF + SCF + RET + + +NEXT_ADD_SEC: + PUSH AF + + LD A,B + LD BC,IDE.Write.Counter ; Установить число секторов для записи + OUT (C),A + + DEC B + INC C + IN A,(C) ; IDE.Read.Sector + ADC A,E + INC B + OUT (C),A ; IDE.Write.Sector + + DEC B + INC C + IN A,(C) ; IDE.Read.CylinderLow + ADC A,D + INC B + OUT (C),A ; IDE.Write.CylinderLow + + DEC B + INC C + IN A,(C) ; IDE.Read.CylinderHigh + ADC A,0 + INC B + OUT (C),A ; IDE.Write.CylinderHigh + + LD BC,IDE.Read.Control + IN A,(C) + ; + LD D,A + ADC A,0 + AND #0F + LD E,A + LD A,D + AND #F0 + OR E + INC B + OUT (C),A ; IDE.Write.DeviceHead + + POP AF + RET + +; При исполнении производится вся подготовка к +; операциям чтения/записи вычисление +; цилиндров/головок/секторов и занесение их в регистры винчестера +; далее программа может сама только подать команду читать/писать и +; самостоятельно производить считывание/запись данных в винчестер. +; Команда удобна для работы программ в реальном времени, когда необходимо +; кроме чтения/записи данных производить какие либо иные действия. +FN_HDD_PREPARE: ; ПОДГОТОВКА К ВНЕШНИМ ОПЕРАЦИЯМ R/W + AND A ; чтоб сбросить CF если он стоит и B=0 + INC B + DEC B + RET Z + + CALL HD_WAIT + RET C + + CALL HD_PREPARE + RET C + ; [x] + EX AF,AF' + LD A,#BF ; check buffer address in SLOT3 + SUB H + JR C,.SetCommand + EX AF,AF' + + SAFE_PORTY + + EXX + LD C,SLOT3 + IN B,(C) + EXX + OUT (SLOT3),A + EX AF,AF' + +.SetCommand: + LD BC,IDE.Write.Command + LD A,IDE.CMD.ATA.ReadSectorsWithRetry + ; OUT (C),A + AND A + RET + + + +FN_HDD_READ_BPB: + CALL HD_WAIT + RET C + CALL HD_BPB_PREP + JR NC,FN_HDD_READ.L1 + RET + + +; FOR LBA ONLY - NEXT_READ +; HL - bufer, A - page +; B - numer of sectors +; DE - add_par (next+DE) (d.b. 1 for NEXT) +FN_HDD_READ_NEXT: + AND A + INC B + DEC B + RET Z ; ret if 0 sectors + CALL HD_WAIT + RET C + CALL NEXT_ADD_SEC + JR FN_HDD_READ.L1 + ; +; HL - BUFER, A - PAGE +FN_HDD_READ: + AND A + INC B + DEC B + RET Z + CALL HD_WAIT + CALL NC,HD_PREPARE + RET C +.L1: EXX + LD C,SLOT3 + IN B,(C) + EXX + OUT (SLOT3),A + EX AF,AF' + ; + SAFE_PORTY + ; + LD BC,IDE.Write.Command + LD A,IDE.CMD.ATA.ReadSectorsWithRetry + OUT (C),A +.L2: CALL F4x_WAIT_HDD + ;BIT IDE.CtrlBit.DataRequest,A + AND IDE.CtrlByte.DataRequest + JR Z,.RET_PortY + ; + ;HD_READ_CONT + LD BC,IDE.Read.Data +.loop_read1: + DUP 16 + INI ; всего 16 раз INI - оптимально. + EDUP + JR NZ,.loop_read1 +.loop_read2: + DUP 16 + INI ; всего 16 раз INI - оптимально. + EDUP + JR NZ,.loop_read2 + ; + LD A,H + OR L + JR NZ,.L2 + ; + LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD H,high SYS_PAGE.RAM_TABLE + LD L,A + LD A,(HL) + OUT (SLOT3),A + EX AF,AF' + LD HL,#C000 + JR .L2 + ; +.RET_PortY: + ZERO_PORTY + ; +HD_RET: EXX + OUT (C),B + EXX + LD BC,IDE.Read.Error + IN A,(C) + AND A + SCF + RET NZ + ; + EX AF,AF' + AND A + RET + + +; HL - BUFER, A - PAGE +FN_HDD_WRITE: + AND A + INC B + DEC B + RET Z + + CALL HD_WAIT + RET C + CALL HD_PREPARE + RET C + + EXX + LD C,SLOT3 + IN B,(C) + EXX + OUT (SLOT3),A + EX AF,AF' + + LD BC,IDE.Write.Command + LD A,IDE.CMD.ATA.WriteSectorsWithRetry + OUT (C),A + +HD_WR_L2: + CALL F4x_WAIT_HDD + + BIT IDE.CtrlBit.DataRequest,A + JR Z,HD_RET + + LD BC,IDE.Write.Data + LD D,32 ;!HARDCODE зависит от счётчика DUP в HD_WR_LOOP +HD_WR_LOOP: + DUP 16 + OUTI ; всего 16 раз OUTI - оптимально. + EDUP + + DEC D + JR NZ,HD_WR_LOOP + + LD A,H + OR L + JR NZ,HD_WR_L2 + + LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD H,high SYS_PAGE.RAM_TABLE + LD L,A + LD A,(HL) + OUT (SLOT3),A + EX AF,AF' + LD HL,#C000 ; !HARDCODE + JR HD_WR_L2 + +;-----------------------------------------------------------------------; +FN_HDD_RECAL: + ; !TEST ;[ ] работа с предварительно выбранным HDD + LD BC,IDE.Read.Control + IN A,(C) + PUSH AF + ; + LD A,IDE.Drive.Master + LD BC,IDE.Write.DeviceHead + OUT (C),A + LD A,IDE.CMD.ATA.ExecuteDeviceDiagnostic + CALL HD_CMD_EXE + ; !TEST работа с предварительно выбранным HDD + POP DE + ; + RET C + LD BC,IDE.Read.Error + IN A,(C) + ; !TEST работа с предварительно выбранным HDD + LD BC,IDE.Write.DeviceHead + OUT (C),D + ; + AND #7F + DEC A + RET Z + SCF + RET + +; Diagnostic Codes +; +; Code Description +; #01 Device 0 passed, Device 1 passed or not present +; #00 Device 0 failed, Device 1 passed or not present +; #81 Device 1 failed, Device 0 passed +; #80 Device 1 failed, Device 0 failed +; +; The meaning of values other than #01 and #81 are vendor specific and +; should be considered a diagnostic failed condition. +;-----------------------------------------------------------------------; + + +;????? глянуть +; RET C +; LD A,#1F ; RECALIBRATE +; CALL HD_CMD_EXE +; RET + + + +; [x] 28/01/2024 работает со всеми каналами +FN_HDD_TEST_IDE: + LD E,#00 + ; TEST Secondary Chanel + LD A,IDE.Chanel.Secondary + OUT (IDE.Chanel.Set),A + CALL .TEST_CHANEL + SLA E + SLA E + ; TEST Primary Chanel + LD A,IDE.Chanel.Primary + OUT (IDE.Chanel.Set),A + CALL .TEST_CHANEL +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; LD BC,IDE.Write.DeviceHead +; LD A,IDE.Drive.Master +; OUT (C),A +; ; +; CALL TEST_HDD_DRV +; ; +; JR NZ,.NO_HDD1 +; SET 0,E +; .NO_HDD1: +; LD BC,IDE.Write.DeviceHead +; LD A,IDE.Drive.Slave +; OUT (C),A +; ; +; CALL TEST_HDD_DRV +; ; +; JR NZ,.NO_HDD2 +; SET 1,E +; .NO_HDD2: +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD A,(SYS_PAGE.CURRENT_HDD) + OUT (C),B + CP #FF + JR Z,.exit + AND 1 + JR Z,.exit + LD A,IDE.Chanel.Secondary + OUT (IDE.Chanel.Set),A +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +.exit: LD A,E + AND A + SCF + RET Z ; HDD absent ! + AND A + RET + +.TEST_CHANEL: + LD BC,IDE.Write.DeviceHead + LD A,IDE.Drive.Master + OUT (C),A + ; + CALL TEST_HDD_DRV + ; + JR NZ,.NO_HDD1 + SET 0,E +.NO_HDD1: + LD BC,IDE.Write.DeviceHead + LD A,IDE.Drive.Slave + OUT (C),A + ; + CALL TEST_HDD_DRV + ; + RET NZ + SET 1,E + RET + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;-----------------------------------[DIFFERENT] +; Не должна портить регистр E!!! +TEST_HDD_DRV: + LD HL,#01FE + LD BC,IDE.Write.Counter + OUT (C),L + INC C + OUT (C),H ; IDE.Write.Sector + ; + DEC C + DEC B + IN A,(C) ; IDE.Read.Counter + CP L + RET NZ + INC C + IN A,(C) ; IDE.Read.Sector + CP H + RET + +; TEST_HDD_DRV: +; ; EXTENDED.ASM variant +; LD HL,#00FF +; LD BC,IDE.Write.CylinderLow +; OUT (C),L +; INC C +; OUT (C),H ; IDE.Write.CylinderHigh + +; INC B +; DEC C +; IN A,(C) ; Тут регистр BC = #0254 - .CylinderLow +; CP L +; RET NZ +; INC C + +; IN A,(C) ; Тут регистр BC = #0255 - .CylinderHigh +; CP H +; RET + + +; [x] 07/01/2024 bit0 - master/slave, bit1: Primary/Secondary, bit2..3: использующийся раздел в MBR +; !TODO сделать работу с переменными биоса SYS_PAGE.IDE_0..3 +FN_HDD_PART: + DI + PUSH BC + PUSH HL + ; + EX AF,AF' + IN A,(SLOT3) + EX AF,AF' + ; + LD C,A + AND 2 + LD A,IDE.Chanel.Primary + JR Z,.SET_CH + LD A,IDE.Chanel.Secondary +.SET_CH: + OUT (IDE.Chanel.Set),A + ; + LD A,C + PUSH AF + AND 1 + ; + LD A,IDE.Drive.Slave + JR NZ,.SET_Master_Slave + ; + LD A,IDE.Drive.Master +.SET_Master_Slave: + LD BC,IDE.Write.DeviceHead + OUT (C),A + CALL TEST_HDD_DRV + JR NZ,.Error + ; + CALL FN_HDD_INIT.L3 + JR C,.Error + ; + POP BC + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD A,B + LD (SYS_PAGE.CURRENT_HDD),A + ; + EX AF,AF' + OUT (SLOT3),A + ; + CALL SET_BPB_OFFSET +.exit: POP HL + POP BC + EI + RET + ; +.Error: POP AF + SCF + JR .exit + +; [x] 27/01/2024 адаптирована для корректной работы с FN_HDD_PART +FN_HDD_INIT: + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD A,(SYS_PAGE.CURRENT_HDD) + OUT (C),B + INC A + JR Z,FN_HDD_PART + + ; !FIXIT сделать тут выбор первого попавшегося из SYS.IDE_0-3 + CALL TEST_HDD_DRV + SCF + RET NZ + ; LD BC,IDE.Write.DeviceHead + ; LD A,IDE.Drive.Master + ; OUT (C),A + ; CALL TEST_HDD_DRV + ; JR NZ,.ABSENT + ; +.L3: CALL F4x_WAIT_HDD + LD BC,IDE.Write.Command + LD A,IDE.CMD.ATA.IdentifyDevice ;!FIXIT переделать + OUT (C),A + CALL F4x_WAIT_HDD + AND IDE.CtrlByte.DataRequest + ;JR NZ,.L2 + SCF + RET Z + ;JR NZ,.L2 + ;SCF + ;RET +; .ABSENT: +; LD BC,IDE.Write.DeviceHead +; LD A,IDE.Drive.Slave +; OUT (C),A +; CALL TEST_HDD_DRV +; JR Z,.L3 +; SCF +; RET + ; +;.L2: + LD BC,IDE.Read.Data + LD HL,SYS_PAGE.HD_IDF_ADR + IN A,(SLOT3) + LD D,A + LD A,SYS_PAGE + OUT (SLOT3),A + INIR + INIR + ; B = 0 + LD H,B + LD L,B + LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; число секторов + LD C,A + ;LD HL,0 + ;LD B,H + LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; число головок +.loop: ADD HL,BC + DEC A + JR NZ,.loop + LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL + CALL F4x_WAIT_HDD + LD BC,IDE.Read.Control + IN A,(C) + AND #10 + LD B,A + LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; число головок + DEC A + AND #0F + OR IDE.Drive.Master + OR B + + LD H,A + LD A,(SYS_PAGE.HD_IDF_ADR.LBA_CHS) + ;BIT 1,A + AND %0000'0010 + JR Z,.NO_LBA + SET 6,H +.NO_LBA: + LD BC,IDE.Write.DeviceHead + OUT (C),H + LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; число секторов +.HDD_CONFIGURED: + LD BC,IDE.Write.Counter + OUT (C),A + LD A,D + OUT (SLOT3),A + LD A,IDE.CMD.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS + ;CALL HD_CMD_EXE + ;RET +HD_CMD_EXE: + CALL HD_WAIT + RET C + LD BC,IDE.Write.Command + OUT (C),A +HD_WAIT: + PUSH DE + PUSH BC + PUSH AF + LD DE,0 + LD BC,IDE.Read.Status +.loop: IN A,(C) + AND IDE.CtrlByte.Busy + JR Z,.EXIT + DEC DE + LD A,D + OR E + JR NZ,.loop + POP AF + POP BC + POP DE + SCF + RET + ; +.EXIT: POP AF + POP BC + POP DE + AND A + RET + + +; ;EXTENDED.ASM Version +; HDD_LBA: ;???!!!! +; POP BC +; LD L,E +; LD E,D +; LD D,XL +; XOR A +; LD H,A +; RET +; HD_CALC_SECS: +; LD A,XH +; AND A +; SCF +; RET NZ ; ошибка, слишком большой HDD + +; PUSH BC +; LD BC,IDE.Write.DeviceHead +; DEC B +; IN A,(C) +; BIT 6,A +; JR NZ,HDD_LBA +; ; POP BC + + +;EXP_HDD.ASM Version +HD_CALC_SECS: + PUSH BC + LD BC,IDE.Read.Control + IN A,(C) + AND %0100'0000 + POP BC + JR Z,.CHS + ; LBA + LD L,E + LD E,D + LD D,XL + LD A,XH + AND #0F ; LBA 28 + LD H,A + RET + ; CHS +.CHS: LD A,XH + AND A + SCF + RET NZ ; ошибка, слишком большой HDD + ; IX,DE - абсолютный номер сектора + PUSH IX + POP HL + ; + IN A,(SLOT3) + LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,C + LD (SYS_PAGE.COPY_SLOT3),A + ; HL,DE - номер сектора + ; BC - число секторов на цилиндре + LD BC,(SYS_PAGE.HD_IDF_ADR.sec_cyl) ; число секторов на цилиндре + LD A,16 ; HL,DE разделить на BC + SCF +.DIV_LOOP: + EX DE,HL + ADD HL,HL + EX DE,HL + ADC HL,HL + ; + SBC HL,BC ; сравнить HL и BC + JR NC,.NO_ADD ; переноса не было - +1! + ADD HL,BC + DEC A + JR NZ,.DIV_LOOP + JR .DIV_END +.NO_ADD: + INC DE + DEC A + JR NZ,.DIV_LOOP +.DIV_END: + ; DE - результат, HL - остаток + ; DE - цилиндр + LD A,(SYS_PAGE.HD_IDF_ADR.sectors) + ; A - число секторов на дорожке + ; HL - номер сектора в цилиндре + LD C,A + ;LD BC,(MS_BPB+S_P_T) ; ЧИСЛО СЕКТОРОВ НА ДОРОЖКЕ + XOR A + LD B,A +.LOOP: SBC HL,BC + INC A + JR NC,.LOOP + ; + DEC A ; A - головка + ADD HL,BC ; L - сектор + INC L + LD H,A ; HL - HEAD,SEC + ; + LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A + AND A + RET + +; [x] 27/01/2024 теперь режим спектрума работает с любым разделом HDD +SET_BPB_OFFSET: + LD A,SYS_PAGE + LD HL,SYS_PAGE.MS_BPB + LD IX,#0000 + LD DE,#0000 + LD B,1 + CALL FN_HDD_READ + ; + EX AF,AF' + IN A,(SLOT3) + EX AF,AF' + OUT (SLOT3),A + ; + LD A,(SYS_PAGE.CURRENT_HDD) + RRCA + RRCA + AND 3 + INC A + LD B,A + ; + ; ; смещение от начала сектора для таблицы разделов c первым сектором LBA для первого раздела + LD HL,SYS_PAGE.MS_BPB - _sMBR_PARTITION_RECORD + _sBOOT_SECTOR.PARTITION_TABLE + LD DE,_sMBR_PARTITION_RECORD +.loop: ADD HL,DE + DJNZ .loop + ; + LD A,_sMBR_PARTITION_RECORD.Start_LBA + ADD L + LD L,A + LD DE,SYS_PAGE.HDD_PARTITION_OFFSET + LD C,_sMBR_PARTITION_RECORD.Size_LBA - _sMBR_PARTITION_RECORD.Start_LBA + LDIR + ; [x] 07/07/2024 fix bug with select empty partition record + EX DE,HL + XOR A + LD B,_sMBR_PARTITION_RECORD.Size_LBA - _sMBR_PARTITION_RECORD.Start_LBA +.loop2: DEC HL + OR (HL) + DJNZ .loop2 + SUB 1 + ; + EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + RET + +; ENDMODULE +;************************************************ + +; ????? +; DB 'HDD_DRV_END' +; Вход: +; C - команда +; 0 - INIT - входных пар нет => A - число поддерживаемых дисков. +; 1 - RESET - выбор диска A - номер диска от 0 => +; 2 - (STATUS) !!!!! TEST? +; 3 - MEDIA CHECK - A - номер диска => A = 0 - old. #FF - new (всегда #FF) !!!!! PREPARE??? +; 4 - READ BPB - A - диск HL - адрес в текущей странице. +; 5 - READ - A - диск, IX:DE сектор, HL - адрес, B - число секторов +; 6 - WRITE - '' - +; 7 - PART +; 8 - READ_NEXT +; +; ошибки - CF - A - ошибка +; +; 0 - нет ошибки +; 1 - неверная команда +; 2 - неверный номер диска +; 3 - неверный формат (не MS-DOS) +; 4 - нет готовности +; 5 - ошибка позиционирования +; 6 - сектор не найден +; 7 - ошибка CRC +; 8 - защита записи +; 9 - ошибка чтения +; 10 - ошибка записи +; 11 - ГЛЮК ; \ No newline at end of file diff --git a/src/bios/exp/FUNC_5x.asm b/bios/exp/FUNC_5x.asm similarity index 95% rename from src/bios/exp/FUNC_5x.asm rename to bios/exp/FUNC_5x.asm index 295748c..88f1558 100644 --- a/src/bios/exp/FUNC_5x.asm +++ b/bios/exp/FUNC_5x.asm @@ -1,96 +1,96 @@ - -; -; It's disk drive BIOS extender for functions 5xh. -;--------------------------------------------------------------- -;Version! Description -;--------------------------------------------------------------- -; 2.32 ! Removed `DI' Disabled Interupt instruction in HDRIVER6 -; ! function load sectors. -; ! Fixed bug waiting slave device in AUTOIDE. - -; -;INT_ADRESS EQU #C124 -;INT_PAGE EQU #C126 -;INT_ID EQU #C127 -;BIOS EQU #3FD0 -; DS #3FD0,#FF - - -DRV_VERSION: - LD HL,0 - LD BC,0 - LD DE,Disk_subsystem_ver_hex - AND A - RET - ; - -; -DRV_LIST: - IN A,(SLOT3) - PUSH AF - PUSH IY - LD A,SYS_PAGE - OUT (SLOT3),A ; !TODO сделать структурой - XOR A - LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE - LD (IX+1),#02 ; DB 0 ;FDD COUNT - LD (IX+2),A ; DB 0 ;HDD COUNT - LD (IX+3),A ; DB 0 ;CDROM COUNT - ; ; BLOCK 13,0 ;RESERVED ;!TODO сделать RAMDRIVE тут? - LD (IX+4),A ; END FLAG - DEC A - -;Calculating FDD devices - ; A=#FF - ; LD HL,SYS_PAGE.FDD_TABLE - ; CALL .CHECK_FDD - ; LD HL,SYS_PAGE.FDD_1_TABLE - ; CALL .CHECK_FDD - ; A=#FF -;Calculating IDE devices IDE TYPE 1-HDD, 2-CD-ROM - LD IY,IDE.INIT_TBL_IDE0 - LD DE,IDE.HDD_INIT_TABLE - LD B,4 ; !HARDCODE кол-во IDE устройств -.CHECK_IDE: - LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM - CP #FF - JR Z,.NEXT_IDE - CP IDE.Device.HDD - JR NZ,.NOT_HDD - INC (IX+2) -.NOT_HDD: - CP IDE.Device.ATAPI - JR NZ,.NEXT_IDE - INC (IX+3) -.NEXT_IDE: - ADD IY,DE - DJNZ .CHECK_IDE - ; -.check_exit: - POP IY - POP AF - OUT (SLOT3),A - XOR A - RET - ; -; A=#FF -; .CHECK_FDD: -; INC (IX+1) -; LD B,8 -; .TFD0: CP (HL) -; INC HL -; RET NZ -; DJNZ .TFD0 -; DEC (IX+1) -; RET -; ; - - INCLUDE 'EXTENDED/FDD_DRIVER.asm' - INCLUDE 'EXTENDED/RAM_DISK_DRIVER.asm' - INCLUDE 'EXTENDED/IDE/ATA_DRV.asm' - INCLUDE 'EXTENDED/IDE/ATAPI_DRV.asm' - INCLUDE 'EXTENDED/IDE/SHARED.asm' - - - ;DISPLAY " EXTENDED end addr: ", /A, $ + +; +; It's disk drive BIOS extender for functions 5xh. +;--------------------------------------------------------------- +;Version! Description +;--------------------------------------------------------------- +; 2.32 ! Removed `DI' Disabled Interupt instruction in HDRIVER6 +; ! function load sectors. +; ! Fixed bug waiting slave device in AUTOIDE. + +; +;INT_ADRESS EQU #C124 +;INT_PAGE EQU #C126 +;INT_ID EQU #C127 +;BIOS EQU #3FD0 +; DS #3FD0,#FF + + +DRV_VERSION: + LD HL,0 + LD BC,0 + LD DE,Disk_subsystem_ver_hex + AND A + RET + ; + +; +DRV_LIST: + IN A,(SLOT3) + PUSH AF + PUSH IY + LD A,SYS_PAGE + OUT (SLOT3),A ; !TODO сделать структурой + XOR A + LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE + LD (IX+1),#02 ; DB 0 ;FDD COUNT + LD (IX+2),A ; DB 0 ;HDD COUNT + LD (IX+3),A ; DB 0 ;CDROM COUNT + ; ; BLOCK 13,0 ;RESERVED ;!TODO сделать RAMDRIVE тут? + LD (IX+4),A ; END FLAG + DEC A + +;Calculating FDD devices + ; A=#FF + ; LD HL,SYS_PAGE.FDD_TABLE + ; CALL .CHECK_FDD + ; LD HL,SYS_PAGE.FDD_1_TABLE + ; CALL .CHECK_FDD + ; A=#FF +;Calculating IDE devices IDE TYPE 1-HDD, 2-CD-ROM + LD IY,IDE.INIT_TBL_IDE0 + LD DE,IDE.HDD_INIT_TABLE + LD B,4 ; !HARDCODE кол-во IDE устройств +.CHECK_IDE: + LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM + CP #FF + JR Z,.NEXT_IDE + CP IDE.Device.HDD + JR NZ,.NOT_HDD + INC (IX+2) +.NOT_HDD: + CP IDE.Device.ATAPI + JR NZ,.NEXT_IDE + INC (IX+3) +.NEXT_IDE: + ADD IY,DE + DJNZ .CHECK_IDE + ; +.check_exit: + POP IY + POP AF + OUT (SLOT3),A + XOR A + RET + ; +; A=#FF +; .CHECK_FDD: +; INC (IX+1) +; LD B,8 +; .TFD0: CP (HL) +; INC HL +; RET NZ +; DJNZ .TFD0 +; DEC (IX+1) +; RET +; ; + + INCLUDE 'EXTENDED/FDD_DRIVER.asm' + INCLUDE 'EXTENDED/RAM_DISK_DRIVER.asm' + INCLUDE 'EXTENDED/IDE/ATA_DRV.asm' + INCLUDE 'EXTENDED/IDE/ATAPI_DRV.asm' + INCLUDE 'EXTENDED/IDE/SHARED.asm' + + + ;DISPLAY " EXTENDED end addr: ", /A, $ ; \ No newline at end of file diff --git a/src/bios/exp/FUNC_CMOS.ASM b/bios/exp/FUNC_CMOS.ASM similarity index 100% rename from src/bios/exp/FUNC_CMOS.ASM rename to bios/exp/FUNC_CMOS.ASM diff --git a/src/bios/exp/FUNC_FOR_TRDOS.ASM b/bios/exp/FUNC_FOR_TRDOS.ASM similarity index 100% rename from src/bios/exp/FUNC_FOR_TRDOS.ASM rename to bios/exp/FUNC_FOR_TRDOS.ASM diff --git a/src/bios/exp/FUNC_LOW_PRINT.ASM b/bios/exp/FUNC_LOW_PRINT.ASM similarity index 94% rename from src/bios/exp/FUNC_LOW_PRINT.ASM rename to bios/exp/FUNC_LOW_PRINT.ASM index 68619b0..9cc2108 100644 --- a/src/bios/exp/FUNC_LOW_PRINT.ASM +++ b/bios/exp/FUNC_LOW_PRINT.ASM @@ -1,2405 +1,2405 @@ -; DISPLAY "Low-print-2." -;============================================================== -; -; Программа LOW PRINT for Sprinter-97. -; -;============================================================== - -;============================================================= -; Функции Bios Sprinter-97. -; Рабочая версия 29.05.97 -;============================================================= -; LP_OPEN_WIN Открытие окна -; point 3D13h C=80h Вход: B - код окна. -; B=0 - Spectrum 32x24 B=1 - Spectrum 64x24 -; B=2 - Spectrum 40x24 B=3 - Spectrum 80x24 -; Выход: DE - размер окна -;============================================================= -; LP_PRINT_ALL Вывод символов на экран с текущего знакоместа -; point 3D13h C=81h Вход: A - символ, -; B - число выводимых символов, -; Е - атрибут символа -;============================================================= -; LP_PRINT_SYM Вывод символов на экран с текущего знакоместа -; без атрибута -; point 3D13h C=82h Вход: A - символ, -; B - число выводимых символов, -;============================================================= -; LP_PRINT_ATR Вывод атрибутов на экран с текущего знакоместа -; point 3D13h C=83h Вход: B - число выводимых символов, -; Е - атрибут символа -;============================================================= -; LP_SET_PLACE Установка текущего знакоместа -; point 3D13h C=84h Вход: E - знакоместо по горизонтали -; D - знакоместо по вертикали -;============================================================= -; LP_PRINT_LN Вывод строки символов на экран с текущего -; знакоместа -; point 3D13h C=85h Вход: HL - адрес строки -; B - число выводимых символов, -; Е - атрибут символов -;============================================================= -; LP_PRINT_LN2 Вывод строки символов на экран с текущего -; знакоместа без атрибутов -; point 3D13h C=86h Вход: HL - адрес строки -; B - число выводимых символов, -;============================================================= -; LP_PRINT_LN3 Вывод строки символов на экран с текущего -; знакоместа -; point 3D13h C=87h Вход: HL - адрес строки -; B - число выводимых символов, -; D - разделитель -; Е - атрибут символов -;============================================================= -; LP_PRINT_LN4 Вывод строки символов на экран с текущего -; знакоместа без атрибутов -; point 3D13h C=88h Вход: HL - адрес строки -; B - число выводимых символов, -; D - разделитель -;============================================================= -; LP_CLS_WIN Очистка окна экрана -; point 3D13h C=89h Вход: DE - положение окна -; B - атрибут очистки -; H - высота, L - ширина -;============================================================= - - MACRO CORRECT_SCR_40_FORWARD ;[x] включил 31/10/23, чисто на Хэллоууууииин - EX AF,AF' - JR C,.LLL - INC D ; режим 40 -.LLL: EX AF,AF' - ENDM ; - - - MACRO CORRECT_SCR_40_BACKWARD - EX AF,AF' - JR C,.LLL - DEC D ; режим 40 -.LLL: EX AF,AF' - ENDM ; - - - MACRO DJNZ_NEXT_HL - DJNZ .LLL - CALL LP_NEXT_HL -.LLL: ; - ENDM - - -;********************************* -;* LOW LEVEL PRINTER * -;* DE' - ZG * -;* HL' - PLACE ON SCR * -;* C' - ATTRIBUTES * -;* B' - COUNT SYMBS * -;* ZF - inverse * -;* AF' - страница и mode * -;********************************* -; MACRO LP_BEG_PM -; EX AF,AF' -; EXX -; IN A,(SLOT3) -; LD C,A -; IN A,(PORT_Y) -; LD B,A -; LD A,SYS_PAGE -; OUT (SLOT3),A -; LD (SYS_SP),SP -; LD SP,SYS_SP -; PUSH BC -; ; -; LD HL,(WIN_ID_0.HL) -; LD DE,(WIN_ID_0.DE) -; LD BC,(WIN_ID_0.BC) -; LD A,E -; AND A -; RRA -; OUT (PORT_Y),A -; EXX -; EX AF,AF' -; ENDM ; - -; MACRO LP_END_PM -; EX AF,AF' -; EXX -; RLA -; LD E,A -; LD (WIN_ID_0.HL),HL ; место печати -; LD (WIN_ID_0.DE),DE -; LD (WIN_ID_0.BC),BC -; ; -; POP BC -; LD A,B -; OUT (PORT_Y),A -; LD A,C -; OUT (SLOT3),A -; LD SP,SYS_SP -; EXX -; EX AF,AF' -; RET -; ENDM ; - -; -;------------------------------------------------------------------[#81] -LP_PRINT_ALL: CALL LP_BEG_P - EXX - LD C,A - EXX - LD A,#50 - OUT (SLOT3),A - ; -.loop: EXX - LD A,D - OUT (PORT_Y),A - INC D -.cont: LD (HL),C - EXX - LD A,E - EXX - INC L - LD (HL),A - DEC L - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - JP LP_END_P -;------------------------------------------------------------------[#81] -; - -; -;------------------------------------------------------------------[#82] -; -LP_PRINT_SYM: CALL LP_BEG_P - EXX - LD C,A - EXX - LD A,#50 - OUT (SLOT3),A - ; -.loop: EXX - LD A,D - OUT (PORT_Y),A -.cont: LD (HL),C - INC D - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - JP LP_END_P -;------------------------------------------------------------------[#82] -; - -; -;------------------------------------------------------------------[#83] -LP_PRINT_ATR: CALL LP_BEG_P - LD A,E - EXX - LD C,A - EXX - LD A,#50 - OUT (SLOT3),A - ; -.loop: EXX - LD A,D - OUT (PORT_Y),A - INC D - INC L - LD (HL),C - DEC L - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - JP LP_END_P -;------------------------------------------------------------------[#83] -; - -; -;------------------------------------------------------------------[#85] -LP_PRINT_LINE: CALL LP_BEG_P - EXX - LD C,PORT_Y - EXX - LD A,#50 - OUT (SLOT3),A - ; -.loop: EXX - OUT (C),D - INC D - EXX - LD A,(HL) - INC HL - EXX - LD (HL),A - EXX - LD A,E - EXX - INC L - LD (HL),A - DEC L - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - JP LP_END_P -;------------------------------------------------------------------[#85] -; - -; -;------------------------------------------------------------------[#86] -LP_PRINT_LINE2: CALL LP_BEG_P - EXX - LD C,PORT_Y - EXX - LD A,#50 - OUT (SLOT3),A - ; -.loop: LD A,(HL) - INC HL - EXX - OUT (C),D - INC D - LD (HL),A - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - ;LD A,SYS_PAGE - ;OUT (SLOT3),A - JP LP_END_P -;------------------------------------------------------------------[#86] -; - -; -;------------------------------------------------------------------[#87] -LP_PRINT_LINE3: CALL LP_BEG_P - LD A,#50 - OUT (SLOT3),A - ; -.loop: EXX - LD A,D - OUT (PORT_Y),A - INC D - EXX - LD A,(HL) - INC HL - CP D - JR NZ,.NoEnd - ; - DEC HL - EXX - LD C,' ' - JP LP_PRINT_ALL.cont - ; -.NoEnd: EXX - LD (HL),A - EXX - LD A,E - EXX - INC L - LD (HL),A - DEC L - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - JP LP_END_P -;------------------------------------------------------------------[#87] -; - -; -;------------------------------------------------------------------[#88] -LP_PRINT_LINE4: CALL LP_BEG_P - LD A,#50 - OUT (SLOT3),A - ; -.loop: EXX - LD A,D - OUT (PORT_Y),A - EXX - LD A,(HL) - INC HL - CP D - JR NZ,.NoEndSymbol - ; - DEC HL - EXX - LD C,' ' - JP LP_PRINT_SYM.cont - ; -.NoEndSymbol: EXX - LD (HL),A - INC D - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - JP LP_END_P -;------------------------------------------------------------------[#88] -; - -; -;------------------------------------------------------------------[#8B] -LP_PRINT_LINE5: CALL LP_BEG_P - LD A,#50 - OUT (SLOT3),A - EXX - LD C,PORT_Y - EXX - ; -.loop: EXX - OUT (C),D - EXX - LD A,(HL) - INC HL - CP D - JR Z,LP_END_P - ; - EXX - LD (HL),A - EXX - LD A,E - EXX - INC L - LD (HL),A - DEC L - INC D - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - ;JP LP_END_P -;----------------- ------------------------------------[#8B] -; ожидается, что портятся только альтернативные регистры и те, что как параметры на входе -LP_END_P: LD A,SYS_PAGE - OUT (SLOT3),A - ; -.SYS_PAGE: EX AF,AF' - EXX - RLA - LD E,A - LD (WIN_ID_0.LineAddr),HL ; место печати - LD (WIN_ID_0.ColumnRGADR_TXTMode),DE - LD (WIN_ID_0.reg_BC),BC - CALL LP_CLOSE_PG - EXX - EX AF,AF' - AND A - RET - ; -.short: EX AF,AF' - EXX - CALL LP_CLOSE_PG - EXX - EX AF,AF' - AND A - RET -;------------------------------------------------------------------[#8C] -LP_PRINT_LINE6: CALL LP_BEG_P - LD A,#50 - OUT (SLOT3),A - EXX - LD C,PORT_Y - EXX - ; -.loop: EXX - OUT (C),D - EXX - LD A,(HL) - INC HL - CP D - JR Z,LP_END_P - ; - EXX - LD (HL),A - INC D - CORRECT_SCR_40_FORWARD - DJNZ_NEXT_HL - EXX - DJNZ .loop - JP LP_END_P -;------------------------------------------------------------------[#8C] -; - - - - -; -;------------------------------------------------------------------[#84] -; портятся только альтернативные регистры и те, что как параметры на входе -LP_SET_PLACE: CALL LP_BEG_P - CALL LP_SET_CUR - JP LP_END_P.SYS_PAGE -;------------------------------------------------------------------[#84] -; - -; -;------------------------------------------------------------------[#8E] -LP_GET_PLACE: CALL LP_BEG_P - LD A,(WIN_ID_0.H_BEG) - NEG - EXX - ADD A,D - EXX - LD E,A - LD A,(WIN_ID_0.V_BEG) - NEG - EXX - ADD A,L - DEC A - EXX - RRCA - RRCA - AND %0011'1111 - LD D,A - ; режим txt 40 - EX AF,AF' - JR C,.no_txt40 - SRL E - AND A -.no_txt40: EX AF,AF' - JP LP_END_P.short -;------------------------------------------------------------------[#8E] -; - -; -;-------------------------------------------------------------[#89, #8D] -;--------------------------------------------------------[#8D] -LP_CLS_WIN2: LD C,A - JR LP_CLS_WIN.START -;--------------------------------------------------------[#8D] -;--------------------------------------------------------[#89] -LP_CLS_WIN: LD C,' ' -;---------------- -----------------------------[#89] -.START: CALL LP_BEG_P - CALL .CLS - JP LP_END_P.SYS_PAGE - ; -.CLS: LD (SYS_PAGE.SYS_WORK1),BC ; сохранить цвет ; !TODO использовать переменные окна - PUSH DE - ; !TODO проверка на превышение размера окна - но сейчас эти процедуры для полного экрана - ; EXX - ; LD A,B - ; EXX - ; CP L - ; JR NC,.loop1 - ; LD L,A - ; -.loop1: CALL LP_SET_CUR - PUSH DE - EXX - LD BC,(SYS_PAGE.SYS_WORK1) ; !TODO использовать переменные окна - EXX - LD B,L - LD A,#50 - OUT (SLOT3),A - ; -.loop2: EXX - LD A,D - OUT (PORT_Y),A - LD (HL),C - INC L - LD (HL),B - DEC L - INC D - CORRECT_SCR_40_FORWARD - EXX - DJNZ .loop2 - ; - LD A,SYS_PAGE - OUT (SLOT3),A - POP DE - INC D - DEC H - JR NZ,.loop1 - ; - POP DE - JP LP_SET_CUR -;-------------------------------------------------------------[#89, #8D] -; - -; -;------------------------------------------------------------------[#B8] -; DE - адрес куда переслать фонт -WIN_GET_ZG: LD HL,ZG_ADDRESS - LD BC,ZG_SIZE - LDIR - AND A - RET -;------------------------------------------------------------------[#B8] -; - -; -;------------------------------------------------------------------[#B6] -WIN_SET_ZG: EX AF,AF' ; LP_SET_ZG: - EXX - CALL LP_OPEN_PG - CALL .SET - CALL LP_CLOSE_PG - EXX - EX AF,AF' - AND A - RET - ; -.SET: IN A,(SLOT1) ;LP_SET_ZG1 - LD (SYS_PAGE.COPY_SLOT1),A - LD A,SHARED_PAGE - OUT (SLOT1),A - EXX - LD BC,Port_All_Mode - IN A,(C) - LD (SYS_PAGE.SYS_WORK1),A - AND #FE ; Spectrum Screen on, accelerator and keyboard interrupt off - OUT (C),A - EX AF,AF' - LD B,A - AND #0F - ADD A,A - OUT (PORT_Y),A - LD A,B ; %xx00'0000 - RRCA ; %0xx0'0000 - RRCA ; %00xx'0000 - RRCA ; %000x'x000 - AND %0001'1000 - OR %0100'0000 - LD H,A - LD L,0 - LD BC,ZG_SIZE - EX DE,HL - ;[ ] 11/02/2024 установка шрифта более гибкая без заплётов - LD A,H - SUB #C0 - JR NC,.change - ; - LDIR -.cont: EX DE,HL - LD A,H - RRCA - RRCA - RRCA - DEC A - AND 3 - ADD A,#58 - LD H,A - ; -.loop: LD (HL),L - INC L - JR NZ,.loop - ; - LD A,(SYS_PAGE.SYS_WORK1) - LD BC,Port_All_Mode - OUT (C),A - EXX - EX AF,AF' - LD A,(SYS_PAGE.COPY_SLOT1) - OUT (SLOT1),A - RET - ; - ;[ ] 11/02/2024 установка шрифта более гибкая без заплётов -.change: LD A,(SYS_PAGE.COPY_SLOT3) - OUT (SLOT3),A - LDIR - LD A,SYS_PAGE - OUT (SLOT3),A - JR .cont -;------------------------------------------------------------------[#B6] -; - -;******************************************************* -; -; WIN_MAP_SC - карта экрана -; 0 - hor size -; 1 - ver size -; 2 - hor place -; 3 - ver place -; определение size -LP_SIZE: CALL LP_OPEN_PG - LD DE,(WIN_ID_0.USER.SIZE_H) - LD A,(WIN_ID_0.USER.MODE) - AND %0010'0000 - CALL LP_CLOSE_PG - RET NZ - ; txt 40 - SLA E - RET -; - -; ожидается, что портятся только альтернативные регистры и те, что как параметры на входе -; установить курсор: -; D - номер символа по вертикали -; E - номер символа по горизонтали -LP_SET_CUR: ; LP_AT_D: - LD A,(WIN_ID_0.USER.SIZE_V) - EXX - LD L,A - EXX - LD A,D - EXX -.loop_x: SUB L - JR NC,.loop_x - ; - ADD A,L - ADD A,A - ADD A,A - LD L,A - ; - LD A,(WIN_ID_0.V_BEG) - ADD A,L - LD L,A - INC L - LD H,#C3 ;!HARDCODE начало описателей в SLOT3 - EXX - ;RET - ; - ;LP_TAB_E: - LD A,(WIN_ID_0.SIZE_REL) - EXX - LD D,A - EXX - LD A,E - EXX -.loop_y: SUB D - JR NC,.loop_y - JR Z,.loop_y - ; - NEG - LD B,A ; сохранить сколько осталось символов в строке - NEG - ADD A,D - LD D,A - ; - EX AF,AF' - JR C,.LLL - SLA D ; режим txt 40. не должно ставить CF -.LLL: EX AF,AF' -.skip_Dx2: LD A,(WIN_ID_0.H_BEG) - ADD A,D - LD D,A - EXX - RET -;************************************************************* - -; вычисление нового места -LP_NEXT_HL: LD A,SYS_PAGE - OUT (SLOT3),A - LD A,4 ;!HARDCODE длина одного описателя квадратика - ADD L - LD L,A - LD A,(WIN_ID_0.V_END) - CP L - JR C,.end_line - ; -.no_end_line: LD A,(WIN_ID_0.H_BEG) - LD D,A - LD A,(WIN_ID_0.SIZE_REL) - LD B,A - LD A,#50 - OUT (SLOT3),A - RET - ; -.end_line: LD HL,(WIN_ID_0.V_BEG) - INC L - LD H,#C3 ;!HARDCODE начало описателей в SLOT3 - JP .no_end_line - -; !ожидается, что портятся только альтернативные регистры и те, что как параметры на входе -LP_BEG_P: EX AF,AF' - EXX - CALL LP_OPEN_PG - LD HL,(WIN_ID_0.LineAddr) - LD DE,(WIN_ID_0.ColumnRGADR_TXTMode) - LD BC,(WIN_ID_0.reg_BC) - LD A,E - AND A - RRA - ;OUT (PORT_Y),A - EXX - EX AF,AF' - RET -; -LP_INI_P: EX AF,AF' - EXX - CALL LP_OPEN_PG - LD A,(WIN_ID_0.USER.MODE) - CP #C0 - JR NC,.NO_ZG ; открытие бордера... - LD A,(WIN_ID_0.USER.MODE_S) - AND %0000'0001 - JR NZ,.NO_ZG ; открытие Spectrum-Screen - ; - LD A,(WIN_ID_0.USER.MODE) - BIT 4,A - JR Z,.NO_ZG ; открытие графического экрана - ;LD DE,(SYS_PAGE.WIN_ZG) ; знакогенератор - LD DE,ZG_ADDRESS ; знакогенератор - EXX - EX AF,AF' - CALL WIN_SET_ZG.SET ;LP_SET_ZG1 ;!TODO стоит ли каждый раз закидывать шрифт? - EX AF,AF' - EXX -.NO_ZG: LD A,(WIN_ID_0.H_BEG) - LD D,A - LD A,(WIN_ID_0.V_BEG) - LD L,A - INC L - LD H,#C3 - AND A - LD A,(WIN_ID_0.USER.MODE) - BIT 5,A - LD A,(WIN_ID_0.USER.SIZE_H) - JR NZ,.TXT_40 - ; TXT_80 - ADD A,A - SCF -.TXT_40: LD B,A - LD (WIN_ID_0.SIZE_REL),A - EX AF,AF' - EXX - JP LP_END_P -;******************************************************** - - -; -;------------------------------------------------------------------[#80] -LP_OPEN_S: LD A,B - ADD A,A - CP LP_SC_TAB.SIZE - CCF - RET C - PUSH HL - LD HL,LP_SC_TAB - ADD A,L - LD L,A - JR NC,.no_inc - INC H -.no_inc: LD A,(HL) - INC HL - LD H,(HL) - LD L,A - EX (SP),HL - RET - ; -LP_SC_TAB: DW LP_SET_32 ; 0 - спектрумовское окно 32x24 - DW LP_SET_64 ; 1 - текстовое окно 64x24 - DW LP_SET_40 ; 2 - текстовое окно 40x32 - DW LP_SET_80 ; 3 - текстовое окно 80x32 - DW LP_SET_32.X ; 4 - спектрумовское окно, HL - положение окна - DW LP_SET_64.X ; 5 - текстовое окно 64x24, HL - положение окна - DW LP_SET_40.X ; 6 - текстовое окно 40x32, HL - положение окна - DW LP_SET_80.X ; 7 - текстовое окно 80x32, HL - положение окна - DW PIC_SET_S1 ; 8 - графическое окно 0, HL - положение окна - DW PIC_SET_S2 ; 9 - графическое окно 1, HL - положение окна - ;DW LP_SET_MNU ; 10 - ;!TODO -.SIZE: EQU $-LP_SC_TAB - -; !TODO -; LP_SET_MNU: -; LD IX,LP_SCR_MNU -; JP PIC_FN0_OpenWin - -LP_SET_32: LD HL,#4104 -.X: LD IX,LP_SCR_32 - JP PIC_FN0_OpenWin - -LP_SET_64: LD HL,#4104 -.X: LD IX,LP_SCR_64 - JP PIC_FN0_OpenWin - -LP_SET_40: LD HL,#4000 -.X: LD IX,LP_SCR_40 - JP PIC_FN0_OpenWin - -LP_SET_80: LD HL,#4000 -.X: LD IX,LP_SCR_80 - JP PIC_FN0_OpenWin - -PIC_SET_S1: LD IX,PIC_320X256_1 - JP PIC_FN0_OpenWin - -PIC_SET_S2: LD IX,PIC_320X256_2 - JP PIC_FN0_OpenWin -;------------------------------------------------------------------[#80] -; - -;------------------------------------------------------------------[#B1] -; !TODO -WIN_CLOSE: SCF - RET -;------------------------------------------------------------------[#B1] -; - -; -;------------------------------------------------------------------[#B0] -; IX - описатель окна -WIN_OPEN.SCR1: LD E,1 -; E - bit0 - номер экрана -WIN_OPEN: CALL .Prepare - LD L,(IX + Window_Variables.USER.PLACE_H) - LD H,(IX + Window_Variables.USER.PLACE_V) - JP WIN_OPEN_W1 - ; -.Prepare: CALL LP_OPEN_PG - PUSH HL - PUSH DE - ;LD (SYS_PAGE.WIN_MAP_SC),IX ; карта окна - ;LD HL,(SYS_PAGE.WIN_MAP_SC) - PUSH IX - POP HL - LD DE,WIN_ID_0 - LD BC,Window_UserVars - LDIR - LD IX,WIN_ID_0 - POP DE - POP HL - LD (IX + Window_Variables.MODE_E),E - RET -;------------------------------------------------------------------[#B0] -; - -; -;------------------------------------------------------------------[#A0] -; HL = X + Y*64 + #4000 + #1000*RGMOD. место на экране по знакоместам -; IX - описатель окна -; E - bit0: номер экрана -;LP_SET_MODE: -PIC_FN0_OpenWin: - ; финт для совместимости со старыми прогами, где передавались другие параметры - LD A,H - AND %00001'0000 ; переместить бит 4 в регистр E - XOR E - LD E,A - ; - LD A,L - AND #3F - ADD HL,HL - ADD HL,HL - LD L,A - ; - LD A,H - AND #3F - LD H,A - CALL WIN_OPEN.Prepare - LD (IX + Window_Variables.USER.PLACE_H),L - LD (IX + Window_Variables.USER.PLACE_V),H - ; -WIN_OPEN_W1: LD A,L - ADD A,A - INC A ; вычисление PORT_Y - BIT 4,E - JR NZ,.NO_OR - OR #80 ; если вывод на второй экран -.NO_OR: LD (IX+Window_Variables.H_BEG),A - LD D,A - LD A,(IX+Window_Variables.USER.SIZE_H) - ADD A,A - ADD A,D - LD (IX+Window_Variables.H_END),A - ;LD (SYS_PAGE.WIN_MODE_SC),DE ; место по горизонтали и страница моды - LD A,H - AND #3F - ADD A,A - ADD A,A - LD L,A - LD H,A - ;LD (SYS_PAGE.WIN_MODE_SH),HL ; место по вертикали с адресом - LD (IX+Window_Variables.V_BEG),A - LD A,(IX+Window_Variables.USER.SIZE_V) - ADD A,A - ADD A,A - ADD A,L - LD (IX+Window_Variables.V_END),A - ; - ;LD L,(IX+Window_Variables.V_BEG) - LD L,H - LD H,#C3 - LD B,(IX+Window_Variables.USER.SIZE_V) ; размер по вертикали - LD (IX+Window_Variables.WORK_1),0 - LD A,(IX+Window_Variables.USER.MODE) ; знакогенератор плюс режим - LD (IX+Window_Variables.WORK_2),A - BIT 4,A - JR NZ,.LOOP ; переход, если текстовый режим - ; - AND #F0 - LD C,A - LD A,(IX+Window_Variables.USER.GR_X) - RRCA - RRCA - RRCA - LD D,A - AND #0F - OR C - LD (IX+Window_Variables.WORK_2),A - ; - LD A,D - AND #E0 - LD C,A - LD A,(IX+Window_Variables.USER.GR_Y) - AND #1F - OR C - RLCA - RLCA - RLCA - LD (IX+Window_Variables.WORK_1),A -.LOOP: LD D,(IX+Window_Variables.H_BEG) ; D - начало строки (PORT_Y) - LD C,(IX+Window_Variables.USER.SIZE_H) ; размер по горизонтали - LD A,(IX+Window_Variables.USER.MODE) ; знакогенератор плюс режим - PUSH BC - CALL LP_MODE_LINE - POP BC - INC L - INC L - INC L - INC L - DJNZ .LOOP - ; - LD A,(IX+Window_Variables.MODE_E) - AND 1 - OUT (SCREEN_SWITCH),A - ;LD A,(IX+Window_Variables.MODE) - ;BIT 4,A - CALL LP_CLOSE_PG - ;RET Z - CALL LP_INI_P - ;LD A,(SYS_PAGE.WIN_MODE_SC) - ;OUT (RGMOD),A - ; нигде не было описано - CALL LP_SIZE - ; DE - размеры окна - ; - XOR A ;!TODO номер окна - RET -; - -; Установка режима на линии -LP_MODE_LINE: BIT 0,(IX+Window_Variables.USER.MODE_S) - JP NZ,.Spectrum ; идти на спектрум - BIT 4,A - JP Z,.Graphic ; идти на графику! - DEC D - ; текстовый режим. - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - LD A,L ; вертикальное положение - CP #80 - JR NC,.Exit_txt - ; - CALL .RECURSE - JR NC,.Exit_txt - ; - CALL .CALC_C - ; -.loop_txt_scr: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),A ; режим - INC D - EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),A ; режим - INC D - DEC C - JR NZ,.loop_txt_scr - ; - EX AF,AF' -.Exit_txt: LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - RET - ; - ; Spectrum mode -.Spectrum: LD A,(IX+Window_Variables.WORK_2) - LD B,(IX+Window_Variables.WORK_1) - DEC D - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - LD A,L ; вертикальное положение - CP #80 - JR NC,.Exit_zx_scr - ; - CALL .RECURSE - JR NC,.Exit_zx_scr - ; - CALL .CALC_C - ; -.loop_zx_scr: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),A ; режим - ; - INC L - LD (HL),B - INC L - LD (HL),B - DEC L - DEC L - ; - INC D - BIT 4,A - JR NZ,.no_inc_B_zx - ; - INC B -.no_inc_B_zx: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - ; - LD (HL),A ; режим - INC L - LD (HL),B - INC L - LD (HL),B - DEC L - DEC L - ; - INC D - INC B - JR NZ,.NO_ADD_40 - ; - ADD A,#40 -.NO_ADD_40: DEC C - JR NZ,.loop_zx_scr - EX AF,AF' - ; -.Exit_zx_scr: LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD (IX+Window_Variables.WORK_1),B - LD (IX+Window_Variables.WORK_2),A - RET - ; - ; Graphic Mode -.Graphic: LD A,(IX+Window_Variables.WORK_1) - LD B,(IX+Window_Variables.WORK_2) - DEC D - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - LD A,L ; вертикальное положение - CP #80 - JR NC,.Exit2_GFX_scr - ; - CALL .RECURSE - JR NC,.Exit2_GFX_scr - ; - CALL .CALC_C - ; - BIT 5,B - JR Z,.GFX_640_Loop - ; - ; GFX 320 -.loop_GFX_scr: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),B ; mode 0 - INC L - LD (HL),A ; mode 1 - INC L - LD (HL),0 ; mode 2 - DEC L - DEC L - INC D - ; - ;EX AF,AF' - ;LD A,D - ;OUT (PORT_Y),A - ;EX AF,AF' - ;LD (HL),B ; режим - ;INC L - ;LD (HL),A ; режим 2 - ;DEC L - ; - INC D - INC A - LD E,A - AND 7 - JR NZ,.NO_INC_B_320 - ; - LD A,E - SUB 8 - LD E,A - INC B -.NO_INC_B_320: LD A,E - DEC C - JR NZ,.loop_GFX_scr - ; -.Exit_GFX_scr: EX AF,AF' -.Exit2_GFX_scr: LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD A,(IX+Window_Variables.WORK_1) - ADD A,8 - LD (IX+Window_Variables.WORK_1),A - RET - ; - ; GFX 640 -.GFX_640_Loop: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),B ; mode 0 - INC L - LD (HL),A ; mode 1 - INC L - LD (HL),0 ; mode 2 - ; - INC D - EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),0 ; mode 2 - DEC L - LD (HL),A ; mode 1 - DEC L - LD (HL),B ; mode 0 - ; - INC D - INC A - LD E,A - AND 7 - JR NZ,.NO_INC_B_640 - ; - LD A,E - SUB 8 - LD E,A - INC B -.NO_INC_B_640: LD A,E - DEC C - JR NZ,.GFX_640_Loop - JP .Exit_GFX_scr -; -.RECURSE: LD A,D ; горизонтальное положение - AND #7F - SUB 80 - RET C - SUB 48 - NEG - LD E,A ; запомнить - ADD A,D - LD D,A ; новое положение - LD A,E ; восстановить - RRA - AND #3F - SUB C - RET NC - NEG - LD C,A ; новое значение C - JR .RECURSE -; -.CALC_C: NEG - RRA - AND #3F - CP C - JR NC,.NoChangeC - LD C,A -.NoChangeC: EX AF,AF' - INC D - RET -;***************************************************************** - - -LP_SCROLL_UD: DEC B - JR Z,LP_SCROLL_UP - DEC B - JR Z,LP_SCROLL_DN - SCF - RET - -; Вход: -; D - верхняя строка ( от 0 ) -; E - число скроллируемых строк -LP_SCROLL_UP: DEC E - RET Z - CALL LP_OPEN_PG - ; - LD B,E - LD E,0 ; всю строку окна скроллим - CALL .RUN - JP LP_CLOSE_PG - ; - ; -.RUN: CALL LP_SET_CUR ; вычислить переменные для строки - PUSH IX - LD IX,(WIN_ID_0.USER.SIZE_H) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO - ; отличие от LP_SCROLL_DN - LD A,(WIN_ID_0.V_END) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - LD C,A - LD A,#50 - OUT (SLOT3),A ; открыть страницу для переноса - ; -.loop2: EXX - PUSH HL - EXX - POP HL - ; - LD E,L - LD D,H - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO - ; отличие от LP_SCROLL_DN - LD A,4 - ADD L - LD L,A - ; - LD A,C ; LD A,(WIN_ID_0.V_END) - CP L - JR C,.exit ; если конец, то выход - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - PUSH BC - LD A,L - EXX - LD L,A - EXX - ;XH - LD A,XL ; WIN_ID_0.USER.SIZE_H - ; LD A,SYS_PAGE - ; OUT (SLOT3),A - ; LD A,(WIN_ID_0.USER.SIZE_H) - ADD A,A ; число байт в строке для переноса - ADD A,A - LD C,A - LD B,0 - ; LD A,#50 - ; OUT (SLOT3),A ; открыть страницу для переноса - ; - EXX - LD A,D ; получить порт начала строки - EXX -.loop1: OUT (PORT_Y),A - INC A ; следующее значение порта - LDI - LDD - ; - OUT (PORT_Y),A - INC A ; следующее значение порта - LDI - LDD - JP PE,.loop1 - ; - POP BC - DJNZ .loop2 -.exit: POP IX - RET - - - -; Вход : -; D - верхняя строка ( от 0 ) -; E - число скроллируемых строк -LP_SCROLL_DN: DEC E - RET Z - CALL LP_OPEN_PG - ; - LD B,E - LD E,0 - LD A,D - ADD A,B - LD D,A - CALL .RUN -.EXIT: JP LP_CLOSE_PG - ; - ; -.RUN: CALL LP_SET_CUR - PUSH IX - LD IX,(WIN_ID_0.USER.SIZE_H) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO - ; отличие от LP_SCROLL_UD - LD A,(WIN_ID_0.V_BEG) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - LD C,A - LD A,#50 - OUT (SLOT3),A ; открыть страницу для переноса - ; -.loop2: EXX - PUSH HL - EXX - POP HL - ; - LD E,L - LD D,H - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO - ; отличие от LP_SCROLL_UD - LD A,L - SUB 4 - LD L,A - ; - LD A,C - CP L ; .CONT: L >= A - JR Z,.CONT - JR NC,.exit ; если конец, то выход - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -.CONT: PUSH BC - LD A,L - EXX - LD L,A - EXX - ; - LD A,XL ; WIN_ID_0.USER.SIZE_H - ; LD A,SYS_PAGE - ; OUT (SLOT3),A - ; LD A,(WIN_ID_0.USER.SIZE_H) - ADD A,A ; число байт в строке для переноса - ADD A,A - LD C,A - LD B,0 - ; LD A,#50 - ; OUT (SLOT3),A ; открыть страницу для переноса - ; - EXX - LD A,D ; получить порт начала строки - EXX -.loop1: OUT (PORT_Y),A - INC A ; следующее значение порта - LDI - LDD - ; - OUT (PORT_Y),A - INC A ; следующее значение порта - LDI - LDD - JP PE,.loop1 - ; - POP BC - DJNZ .loop2 -.exit: POP IX - RET - - -; DE - место символа в окне -; А - номер окна -; выход: HL - символ/атрибут B - знакогенератор -WIN_GET_SYM: AND A - SCF - RET NZ - ; - CALL LP_BEG_P - CALL LP_SET_CUR - LD A,#50 - OUT (SLOT3),A - ; - EXX - LD A,D - OUT (PORT_Y),A - LD A,(HL) - EXX - LD L,A - EXX - INC L - LD A,(HL) - EXX - LD H,A - EXX - DEC L - DEC L - LD A,(HL) - INC L - EXX - LD B,A - JP LP_END_P - ;RET - -; DE - место символа в окне -; А - номер окна -; HL - символ/атрибут -; B - знакогенератор -WIN_PUT_SYM: AND A - SCF - RET NZ - ; - CALL LP_BEG_P - CALL LP_SET_CUR - LD A,#50 - OUT (SLOT3),A - ; - EXX - LD A,D - OUT (PORT_Y),A - EXX - ; [ ] 31/03/2025 если B=0, то кладём только символ - ; если B=1, то кладём символ с атрибутом - ; символ - ; LD A,L - ; EXX - ; LD (HL),A - ; INC L - ; EXX - ; ; атрибут - ; LD A,H - ; EXX - ; LD (HL),A - ; DEC L - ; DEC L - ; EXX - ; ; шрифт - ; LD A,B - ; EXX - ; LD (HL),A - ; INC L - ; EXX - ; JP LP_END_P - ; - ; шрифт - LD A,B - OR A - JR Z,.onlySymbol - DEC B - JR Z,.noChangeZG - ; - EXX - DEC L - LD (HL),A - INC L - EXX - ; атрибут -.noChangeZG: LD A,H - EXX - INC L - LD (HL),A - DEC L - EXX - ; символ -.onlySymbol: LD A,L - EXX - LD (HL),A - EXX - JP LP_END_P - - - -; HL - размер окна -; DE - положение окна -; A - номер окна -; IX - новое положение окна -WIN_MOVE: AND A - SCF - RET NZ - PUSH IX - PUSH HL - LD B,SHARED_PAGE - LD IX,SLOT3.MEM_ADDR - CALL WIN_COPY_WIN1 - POP HL - POP DE - LD B,SHARED_PAGE - LD IX,SLOT3.MEM_ADDR - CALL WIN_RESTORE.Start - AND A - RET - - -; HL - размер сохраняемого окна -; DE - место сохраняемого окна -; IX - адрес сохраняемого окна, в странице 4000h -; А - номер окна, B - страница -WIN_COPY: AND A - SCF - RET NZ -WIN_COPY_WIN1: CALL LP_BEG_P - IN A,(SLOT1) - PUSH AF - ; - CALL LP_SET_CUR - LD (SYS_PAGE.SYS_WORK1),SP - LD A,B - OUT (SLOT3),A - LD A,#50 - OUT (SLOT1),A - ; - EXX - RES 7,H - LD C,D - EXX - ; -.COPY_loop2: LD A,L - EXX - LD B,A - ADD A,A - ADD A,XL - LD XL,A - JR NC,.NO_INC_XH - ; - INC XH -.NO_INC_XH: LD SP,IX - LD A,C - ADD A,B -.COPY_loop: DEC A - OUT (PORT_Y),A - LD E,(HL) - INC L - LD D,(HL) - DEC L - PUSH DE - DJNZ .COPY_loop - ; - INC HL - INC HL - INC HL - INC HL - EXX - DEC H - JR NZ,.COPY_loop2 - ; - LD A,SYS_PAGE - OUT (SLOT3),A - LD SP,(SYS_PAGE.SYS_WORK1) - ; - POP AF - OUT (SLOT1),A - JP LP_END_P.short -; - -; HL - размер сохраняемого окна -; DE - место сохраняемого окна -; IX - адрес данных восстанавливаемого окна -WIN_RESTORE: AND A - SCF - RET NZ -.Start: - CALL LP_BEG_P - ; - IN A,(SLOT1) - PUSH AF - ; - CALL LP_SET_CUR - ; - LD (SYS_PAGE.SYS_WORK1),SP - LD SP,IX - ; - LD A,B - OUT (SLOT3),A - LD A,#50 - OUT (SLOT1),A - ; - EXX - RES 7,H - LD C,D - EXX -.L2: LD A,L - EXX - LD B,A - LD A,C -.L1: OUT (PORT_Y),A - INC A - POP DE - LD (HL),E - INC L - LD (HL),D - DEC L - DJNZ .L1 - ; - INC HL - INC HL - INC HL - INC HL - EXX - DEC H - JR NZ,.L2 - - LD A,SYS_PAGE - OUT (SLOT3),A - - LD SP,(SYS_PAGE.SYS_WORK1) - - POP AF - OUT (SLOT1),A - JP LP_END_P.short -;======================================================================; - - - - -; Печать с управляющими символами в консоль -;------------------------------------------------------------------[#E0] -LP_PR_LINE_DIR: - ;>------------------------------------------------[BELL] -.BELL: EXX - PUSH HL - PUSH BC - ; - LD DE,1200 - LD HL,4 - CALL BEEP - ; - POP BC - POP HL - EXX - JR .loop - ;-------------------------------------------------[BELL] - - ;>------------------------------------------------[Backspace] -.BACK: LD A,(WIN_ID_0.H_BEG) - CP D - JR Z,.loop - INC B - DEC D - CORRECT_SCR_40_BACKWARD - JP .loop - ;>------------------------------------------------[Backspace] - ; -.EXIT_SpecSymbol: - DEC HL - CALL LP_END_P - POP IX - SCF - RET -; -.EXIT: POP IX - JP LP_END_P -;;;;;;;;;;;;;;;;; -; A - атрибуты выводимого символа если CF' -; A' - если !=0 то без скролла -; CF - XY-mode -; DE - место символа в окне, если CF=1 -; HL - адрес с выводимой строкой -; B - цвет консоли (используется при скролле и очистке окна) -; IY - два спец.символа для выхода с CF=1. Должны быть равны B, если не нужны -; CF' - выводить символ с атрибутами -;;;;;;;;;;;;;;;;; -.START: PUSH IX - LD XL,A ; атрибуты выводимого символа - ; - EX AF,AF' - PUSH AF ; attr-mode - EX AF,AF' - ; - IN A,(SLOT3) - LD C,A - CALL LP_BEG_P - CALL C,LP_SET_CUR ; mode for DE - LD A,B - ; далее рег B свободен, можно задействовать - LD (SYS_PAGE.SYS_WORK2),A ; цвет консоли - POP AF ; attr-mode, scroll on/off - LD B,A ; scroll on/off - EXX - RL C ; C' - attr-mode. выводить атрибут -.loop: LD A,D - OUT (PORT_Y),A - EXX - LD A,C - OUT (SLOT3),A - ; - LD A,(HL) - LD XH,A - INC HL - AND A - JR Z,.EXIT - CP YH - JR Z,.EXIT_SpecSymbol - CP YL - JR Z,.EXIT_SpecSymbol - ; - EXX - ; печатаемые символы - CP 14 - JR NC,.print - CP 7 - JR C,.print - ; управляющие символы - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,XH - ; - SUB 7 - JR Z,.BELL ; A = 07 "BELL" - DEC A - JR Z,.BACK ; A = 08 "Backspace" - DEC A - JR Z,.TAB ; A = 09 "TAB" - DEC A - JR Z,.LineFeed ; А = 10 "Line Feed" - DEC A - JR Z,.VertTab ; А = 11 "Vertical Tabulation" - DEC A - JR Z,.CLS ; А = 12 "Form feed" - разрыв страницы, начало нового листа, может работать как VT - ;DEC A - ;JR Z,.CR ; А = 13 "Carriage Return" - ;>------------------------------------------------[CR] -.CR: LD A,(WIN_ID_0.H_BEG) - LD D,A - LD A,(WIN_ID_0.SIZE_REL) - LD B,A - JP .loop - ;-------------------------------------------------[CR] - - ;>------------------------------------------------[PRINT] -.print: LD A,#50 - OUT (SLOT3),A - LD A,XH - LD (HL),A - ; выводить атрибут - RR C ; C' - attr flag - JR NC,.NoPutAttr - ; - INC L - LD A,XL - LD (HL),A - DEC L -.NoPutAttr: RL C ; C' - attr flag - INC D -.next_full: CORRECT_SCR_40_FORWARD -.next: DJNZ .loop - CALL LP_NEXT_HL_DIR - JP .loop - ;-------------------------------------------------[PRINT] - - ;>------------------------------------------------[TAB] -.TAB: LD A,(WIN_ID_0.H_BEG) - SUB D - NEG - AND %0000'0111 - NEG - ADD A,8 - CP B - JR C,.keep_A - ; - LD A,B - DEC A -.keep_A: ;NEG - PUSH BC ; save C' - attr flag - LD C,A - EX AF,AF' - JR C,.LLL - ; - EX AF,AF' - ADD A,A ; режим 40 - EX AF,AF' -.LLL: EX AF,AF' - ; -.tabNxt: ADD A,D - LD D,A - LD A,B - SUB C ; set XL - POP BC ; restore C' - attr flag - LD B,A - JP .loop - ; - ;-------------------------------------------------[TAB] - - ;>------------------------------------------------[Line Feed] -.VertTab: ; -.LineFeed: LD A,4 ;!HARDCODE длина одного описателя квадратика - ADD L - LD L,A - ; - LD A,(WIN_ID_0.V_END) - CP L - CALL C,LP_NEXT_HL_DIR.end_line - JP .loop - ;-------------------------------------------------[Line Feed] - - ;>------------------------------------------------[Form feed] -.CLS: PUSH BC ; C' - attr flag - EXX - PUSH BC - PUSH HL - PUSH DE - ; - LD A,(SYS_PAGE.SYS_WORK2) ; цвет консоли - LD B,A - LD DE,0 - LD HL,(WIN_ID_0.USER.SIZE_H) ; get WIN XY - LD A,(WIN_ID_0.SIZE_REL) - LD L,A - LD C," " - CALL LP_CLS_WIN.CLS - ; - POP DE - POP HL - POP BC - EXX - LD A,B - POP BC ; C' - attr flag - LD B,A - JP .loop - ;-------------------------------------------------[Form feed] -;------------------------------------------------------------------[#E0] -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -LP_NEXT_HL_DIR: LD A,SYS_PAGE - OUT (SLOT3),A - LD A,4 ;!HARDCODE длина одного описателя квадратика - ADD L - LD L,A - LD A,(WIN_ID_0.V_END) - CP L - CALL C,.end_line - ; -.no_end_line: LD A,(WIN_ID_0.H_BEG) - LD D,A - LD A,(WIN_ID_0.SIZE_REL) - LD B,A - RET - ; -.end_line: LD A,L - SUB 4 ;!HARDCODE длина одного описателя квадратика - LD L,A - ; игнорим скрролл или нет? - EXX - LD A,B - EXX - AND A - RET NZ ; ZF=0 игнор скролла - ; - PUSH HL - DEC L - PUSH BC - PUSH DE - EXX - PUSH BC - PUSH HL - PUSH DE - LD A,(WIN_ID_0.V_BEG) - LD D,A - LD A,(WIN_ID_0.USER.SIZE_V) - LD B,A - LD E,0 ; всю строку окна скроллим - CALL LP_SCROLL_UP.RUN - ; - LD A,SYS_PAGE - OUT (SLOT3),A - LD C," " - LD A,(SYS_PAGE.SYS_WORK2) ; цвет консоли - LD B,A - LD A,(WIN_ID_0.USER.SIZE_V) - DEC A - LD D,A - LD E,0 - LD HL,(WIN_ID_0.SIZE_REL) - LD H,1 - LD C," " - CALL LP_CLS_WIN.CLS - ; - POP DE - POP HL - POP BC - EXX - POP DE - POP BC - POP HL - RET -; -; LD HL,(WIN_ID_0.V_END) -; DEC L -; DEC L -; DEC L -; LD H,#C3 -; ; -; LD A,(WIN_ID_0.H_BEG) -; LD D,A -; ; -; LD A,#50 -; OUT (SLOT3),A -; ; -; EXX -; LD A,(WIN_ID_0.SIZE_REL) -; LD B,A -; .loop_cl_line: EXX -; LD A,D -; OUT (PORT_Y),A -; LD (HL),C -; INC D -; CORRECT_SCR_40_FORWARD -; EXX -; DJNZ .loop_cl_line -; LD A,SYS_PAGE -; OUT (SLOT3),A -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - - -LP_OPEN_PG: IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD A,C - LD (SYS_PAGE.COPY_SLOT3),A - IN A,(PORT_Y) - LD (SYS_PAGE.COPY_RGADR),A - RET -; - -; не должна влиять на флаги и трогать регистры кроме A -LP_CLOSE_PG: LD A,(SYS_PAGE.COPY_RGADR) - OUT (PORT_Y),A - LD A,(SYS_PAGE.COPY_SLOT3) - OUT (SLOT3),A - RET - -/* - -;!TODO старая LP_SET_MODE - расковырять старый LP_SCR_MNU - - MODULE EXPERIMENT - -; byte 1 -; 0..4 - VIDEO_PAGE -; 5 - mode 42/84 ; 0 - 42,1 - 84 -; 6 - next line -; 7 - end table -; byte 2 - number of places -; byte 3..4 - adress places/ -; 4000-5FFF - Spectrum modes/ C000-FFFF - Graf mode -; - MACRO LP_S PG,XX,ADR - DB PG,XX - DW ADR - ENDM - - MACRO LP_OPEN_PG - IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD A,C - LD (SYS_PAGE.COPY_SLOT3),A - IN A,(PORT_Y) - LD (SYS_PAGE.COPY_RGADR),A - ENDM ; - - MACRO LP_CLOSE_PG - LD A,(SYS_PAGE.COPY_RGADR) - OUT (PORT_Y),A - LD A,(SYS_PAGE.COPY_SLOT3) - OUT (SLOT3),A - ENDM ; -;--------------------------------------- -GR_BIT_END: EQU 7 - -S_BIT_END: EQU 7 -S_BIT_LIN: EQU 6 -S_BIT_MOD: EQU 5 - -BIT_1440: EQU 1 -BIT_MASK_1440: EQU %00000010 - -MODE_PAGE: EQU #FC -;--------------------------------------- - ;DS (($/4)*4+4-$) - ALIGN 4 - - -LP_SCR_MNU: - LP_S #40,14,#40E7 - LP_S #40,14,#4807 - LP_S #40,14,#4827 - LP_S #40,14,#4847 - LP_S #40,14,#4867 - LP_S #40,14,#4887 - LP_S #40,14,#48A7 - LP_S #40,14,#48C7 - LP_S #40,14,#48E7 - DB #FF,0,0,0 - -; LP_SCR_80: -; DB 40,32,0,0,#1B,0,0,0 -; DB 0,0,0,0,0,0,0,0 - -; LP_S %0110'0010,40,#4000 -; LP_S %0110'0010,40,#4028 -; LP_S %0110'0010,40,#4050 -; LP_S %0110'0010,40,#4078 -; LP_S %0110'0010,40,#40A0 -; LP_S %0110'0010,40,#40C8 -; -; LP_S %0110'0010,40,#4800 -; LP_S %0110'0010,40,#4828 -; LP_S %0110'0010,40,#4850 -; LP_S %0110'0010,40,#4878 -; LP_S %0110'0010,40,#48A0 -; LP_S %0110'0010,40,#48C8 -; -; LP_S %0110'0010,40,#5000 -; LP_S %0110'0010,40,#5028 -; LP_S %0110'0010,40,#5050 -; LP_S %0110'0010,40,#5078 -; LP_S %0110'0010,40,#50A0 -; LP_S %0110'0010,40,#50C8 -; -; LP_S %0110'0100,40,#4000 -; LP_S %0110'0100,40,#4028 -; LP_S %0110'0100,40,#4050 -; LP_S %0110'0100,40,#4078 -; LP_S %0110'0100,40,#40A0 -; LP_S %0110'0100,40,#40C8 -; -; LP_S %0110'0100,40,#4800 -; LP_S %0110'0100,40,#4828 -; LP_S %0110'0100,40,#4850 -; LP_S %0110'0100,40,#4878 -; LP_S %0110'0100,40,#48A0 -; LP_S %0110'0100,40,#48C8 -; -; LP_S %0110'0100,40,#5000 -; LP_S %0110'0100,40,#5028 -; -; DEFB #FF,0,0,0 -; -; LP_SCR_40: -; DB 40,32,0,0,7BH,0,0,0 -; DB 0,0,0,0,0,0,0,0 -; -; LP_S 01000100B,40,5050H -; LP_S 01000100B,40,5078H -; LP_S 01000100B,40,50A0H -; LP_S 01000100B,40,50C8H -; -; LP_S 01000110B,40,4000H -; LP_S 01000110B,40,4028H -; LP_S 01000110B,40,4050H -; LP_S 01000110B,40,4078H -; LP_S 01000110B,40,40A0H -; LP_S 01000110B,40,40C8H -; -; LP_S 01000110B,40,4800H -; LP_S 01000110B,40,4828H -; LP_S 01000110B,40,4850H -; LP_S 01000110B,40,4878H -; LP_S 01000110B,40,48A0H -; LP_S 01000110B,40,48C8H -; -; LP_S 01000110B,40,5000H -; LP_S 01000110B,40,5028H -; LP_S 01000110B,40,5050H -; LP_S 01000110B,40,5078H -; LP_S 01000110B,40,50A0H -; LP_S 01000110B,40,50C8H -; -; LP_S 01001000B,40,4000H -; LP_S 01001000B,40,4028H -; LP_S 01001000B,40,4050H -; LP_S 01001000B,40,4078H -; LP_S 01001000B,40,40A0H -; LP_S 01001000B,40,40C8H -; -; LP_S 01001000B,40,4800H -; LP_S 01001000B,40,4828H -; LP_S 01001000B,40,4850H -; LP_S 01001000B,40,4878H -; -; DEFB 0FFh,0,0,0 -; -; LP_SCR_32: -; DB 32,24,4,4,30H,1,0,0 -; DB 0,0,0,0,0,0,0,0 -; -; LP_S 040h,32,04000H -; LP_S 040h,32,04020H -; LP_S 040h,32,04040H -; LP_S 040h,32,04060H -; LP_S 040h,32,04080H -; LP_S 040h,32,040A0H -; LP_S 040h,32,040C0H -; LP_S 040h,32,040E0H -; -; LP_S 040h,32,04800H -; LP_S 040h,32,04820H -; LP_S 040h,32,04840H -; LP_S 040h,32,04860H -; LP_S 040h,32,04880H -; LP_S 040h,32,048A0H -; LP_S 040h,32,048C0H -; LP_S 040h,32,048E0H -; -; LP_S 040h,32,05000H -; LP_S 040h,32,05020H -; LP_S 040h,32,05040H -; LP_S 040h,32,05060H -; LP_S 040h,32,05080H -; LP_S 040h,32,050A0H -; LP_S 040h,32,050C0H -; LP_S 040h,32,050E0H -; -; LP_S 0FFh,0,0 -; -; LP_SCR_64: -; DB 32,24,4,4,9BH,0,0,0 -; DB 0,0,0,0,0,0,0,0 -; -; LP_S 06Ah,32,04000H -; LP_S 06Ah,32,04020H -; LP_S 06Ah,32,04040H -; LP_S 06Ah,32,04060H -; LP_S 06Ah,32,04080H -; LP_S 06Ah,32,040A0H -; LP_S 06Ah,32,040C0H -; LP_S 06Ah,32,040E0H -; -; LP_S 06Ah,32,04800H -; LP_S 06Ah,32,04820H -; LP_S 06Ah,32,04840H -; LP_S 06Ah,32,04860H -; LP_S 06Ah,32,04880H -; LP_S 06Ah,32,048A0H -; LP_S 06Ah,32,048C0H -; LP_S 06Ah,32,048E0H -; -; LP_S 06Ah,32,05000H -; LP_S 06Ah,32,05020H -; LP_S 06Ah,32,05040H -; LP_S 06Ah,32,05060H -; LP_S 06Ah,32,05080H -; LP_S 06Ah,32,050A0H -; LP_S 06Ah,32,050C0H -; LP_S 06Ah,32,050E0H -; -; LP_S 0FFh,0,0 - - -@LP_SET_MNU: LD IX,LP_SCR_MNU - ;JR LP_SET_MODE -; HL - смещение от начала экрана -; = hor_sh + vert_sh * 64 + 4000H -; IX - экранная таблица -LP_SET_MODE: LP_OPEN_PG - LD (SYS_PAGE.WIN_MAP_SC),IX - LD (SYS_PAGE.WIN_MODE_SH),HL - LD (SYS_PAGE.WIN_MODE_SC),DE - LD HL,(SYS_PAGE.WIN_MAP_SC) - LD DE,SYS_PAGE.WIN_MAP_IX -.LP_SET_COPY: LD BC,4 - LDIR - BIT S_BIT_END,(HL) - JR Z,.LP_SET_COPY - LD BC,4 - LDIR - LD HL,SYS_PAGE.WIN_MAP_IX - LD (SYS_PAGE.WIN_MAP_SC),HL -.LP_SET_MODE_INT: - LD IX,(SYS_PAGE.WIN_MAP_SC) - LD HL,(SYS_PAGE.WIN_MODE_SH) - CALL LP_SET_MODE1 - LD DE,(SYS_PAGE.WIN_MODE_SC) - LP_CLOSE_PG - PUSH DE - CALL LP_INI_P - POP DE - LD A,E - OUT (RGMOD),A - CALL LP_SIZE - RET - -LP_SET_MODE1: AND A - BIT S_BIT_END,(IX) ; проверка конца данных - RET NZ - - PUSH HL - - IN A,(RGADR) - PUSH AF - - LD A,H - CP #48 - CCF - LD A,#16 - ADC A,0 - OUT (RGADR),A - -.LP_SET_LOOP: CALL LP_MODE_LINE - - INC IX - INC IX - INC IX - INC IX - BIT S_BIT_LIN,(IX) - JR Z,.LP_SET_LOOP - - POP AF - OUT (RGADR),A - - POP HL - - LD BC,#40 - ADD HL,BC - JR LP_SET_MODE1 - -;******************************************************** -; Вычисление значения MODE из экранной таблицы. -; IX - текущее положение в таблице. -LP_MODE_LINE: BIT 3,H - RET NZ - - IN A,(SLOT1) - LD (SYS_PAGE.SYS_WORK1),A - - IN A,(RGADR) - AND 1 - OR MODE_PAGE - OUT (SLOT1),A - - LD A,(IX) - LD B,A - RRCA - AND #0F - LD C,A - LD A,B - AND #20 - XOR #30 - OR C - LD C,A - LD A,(IX+3) - RLC A - RLC A - RLC A - AND #C0 - OR C - LD D,A ; Первый байт MODE - LD E,(IX+2) ; Второй байт.. - - LD B,(IX+1) ; число знакомест - - LD A,L - AND #3F - SUB 40 - JR NC,.LP_NO_SET_MD - NEG - CP B - JR NC,.LP_MD_NO_B - LD B,A -.LP_MD_NO_B: - -.LP_MD_LOOP: SET 4,H - LD (HL),E - RES 4,H - LD (HL),D - - INC E - INC L - DJNZ .LP_MD_LOOP - -.LP_MD_END: LD A,(SYS_PAGE.SYS_WORK1) - OUT (SLOT1),A - RET - -.LP_NO_SET_MD: LD A,C - -.LP_MD_LOOP2: INC E - INC L - BIT 5,H - JR Z,.LP_MD_LOOP - DJNZ .LP_MD_LOOP2 - JR .LP_MD_END - - -; вычисление нового места -LP_TAB_HL: LD HL,(SYS_PAGE.WIN_TAB_SC) ; загрузить текущее положение в таблице SCR - LD A,(HL) ; загрузить флаги таблицы - BIT S_BIT_END,A ; флаг конца - JR Z,LP_TAB_H1 ; если 0 - не конец -LP_TAB_H2: LD HL,(SYS_PAGE.WIN_MAP_SC) ; загрузить начальное положение в таблице SCR -LP_TAB_H3: LD A,(HL) ; и новые флаги -LP_TAB_H1: CALL .LP_PG1 ; переключить страницу - INC HL ; (HL) - новое число символов - BIT S_BIT_MOD,A ; бит 42/84 - LD A,(HL) ; загрузить число символов - JR Z,.LP_NO_MUL ; если 84, то не нужно умножение на 2 - ADD A,A ; A=A*2 -.LP_NO_MUL: LD B,A ; число символов в B - INC HL ; загрузка нового HL - LD A,(HL) - INC HL - INC HL - LD (SYS_PAGE.WIN_TAB_SC),HL ; с сохранением следующего положения в таблице SCR - DEC HL - LD H,(HL) ; положение на экране - LD L,A - - LD A,H - RRCA ; вычислить положение - RRCA ; аттрибута - RRCA - AND 3 - OR H - OR #18 - LD C,A - RET - -.LP_PG1: AND #1F ; переключать только страницы ОЗУ Spectrum mode - OUT (RGADR),A - LD E,(HL) ; значение битов и флагов - - BIT S_BIT_MOD,E ; бит 42/84 - JR Z,.LP_N_84 ; если 42 то не устанавливать CF - SCF ; 84 mode -.LP_N_84: EX AF,AF' ; спрятать флаги и значение для вывода в порт - LD A,E ; в A должен быть байт с флагами - RET - -; program init registers -; for low printer & save -LP_INI_P: EXX - LP_OPEN_PG - LD DE,(SYS_PAGE.WIN_ZG) - LD B,0 - CALL LP_TAB_H2 - EXX -; program save registers -; for low printer -LP_END_P: EX AF,AF' - EXX - RLA - LD E,A - LD (SYS_PAGE.WIN_SAV_HL),HL - LD (SYS_PAGE.WIN_SAV_DE),DE - LD (SYS_PAGE.WIN_SAV_BC),BC - LP_CLOSE_PG - EXX - EX AF,AF' - RET - - -; определение size -LP_SIZE: LP_OPEN_PG - EXX - XOR A - LD HL,(SYS_PAGE.WIN_MAP_SC) ; начало карты scr - CALL .LP_LN2 ; сканировать до - EXX ; конца - NEG ; получить число - LD D,A ; строк в D - LD E,0 - EXX - ;LD A,3 ; число символов - LD HL,(SYS_PAGE.WIN_MAP_SC) ; по 3-йе строке - ;CALL LP_LN2 ; настройка -.LOOP: CALL LP_TAB_H3 ; данные - LD A,B - EXX - ADD A,E - LD E,A - EXX - LD HL,(SYS_PAGE.WIN_TAB_SC) ; данные экрана - BIT S_BIT_LIN,(HL) - JR Z,.LOOP - ;BIT S_BIT_MOD,(HL) - EXX - ;XOR A - ;OUT (RGADR),A - LP_CLOSE_PG - RET - ; -.LP_LN0: DEC A - RET Z -.LP_LN1: INC HL - INC HL - INC HL - INC HL -.LP_LN2: BIT S_BIT_LIN,(HL) - JR Z,.LP_LN1 - BIT S_BIT_END,(HL) - JR Z,.LP_LN0 - RET - - ENDMODULE - +; DISPLAY "Low-print-2." +;============================================================== +; +; Программа LOW PRINT for Sprinter-97. +; +;============================================================== + +;============================================================= +; Функции Bios Sprinter-97. +; Рабочая версия 29.05.97 +;============================================================= +; LP_OPEN_WIN Открытие окна +; point 3D13h C=80h Вход: B - код окна. +; B=0 - Spectrum 32x24 B=1 - Spectrum 64x24 +; B=2 - Spectrum 40x24 B=3 - Spectrum 80x24 +; Выход: DE - размер окна +;============================================================= +; LP_PRINT_ALL Вывод символов на экран с текущего знакоместа +; point 3D13h C=81h Вход: A - символ, +; B - число выводимых символов, +; Е - атрибут символа +;============================================================= +; LP_PRINT_SYM Вывод символов на экран с текущего знакоместа +; без атрибута +; point 3D13h C=82h Вход: A - символ, +; B - число выводимых символов, +;============================================================= +; LP_PRINT_ATR Вывод атрибутов на экран с текущего знакоместа +; point 3D13h C=83h Вход: B - число выводимых символов, +; Е - атрибут символа +;============================================================= +; LP_SET_PLACE Установка текущего знакоместа +; point 3D13h C=84h Вход: E - знакоместо по горизонтали +; D - знакоместо по вертикали +;============================================================= +; LP_PRINT_LN Вывод строки символов на экран с текущего +; знакоместа +; point 3D13h C=85h Вход: HL - адрес строки +; B - число выводимых символов, +; Е - атрибут символов +;============================================================= +; LP_PRINT_LN2 Вывод строки символов на экран с текущего +; знакоместа без атрибутов +; point 3D13h C=86h Вход: HL - адрес строки +; B - число выводимых символов, +;============================================================= +; LP_PRINT_LN3 Вывод строки символов на экран с текущего +; знакоместа +; point 3D13h C=87h Вход: HL - адрес строки +; B - число выводимых символов, +; D - разделитель +; Е - атрибут символов +;============================================================= +; LP_PRINT_LN4 Вывод строки символов на экран с текущего +; знакоместа без атрибутов +; point 3D13h C=88h Вход: HL - адрес строки +; B - число выводимых символов, +; D - разделитель +;============================================================= +; LP_CLS_WIN Очистка окна экрана +; point 3D13h C=89h Вход: DE - положение окна +; B - атрибут очистки +; H - высота, L - ширина +;============================================================= + + MACRO CORRECT_SCR_40_FORWARD ;[x] включил 31/10/23, чисто на Хэллоууууииин + EX AF,AF' + JR C,.LLL + INC D ; режим 40 +.LLL: EX AF,AF' + ENDM ; + + + MACRO CORRECT_SCR_40_BACKWARD + EX AF,AF' + JR C,.LLL + DEC D ; режим 40 +.LLL: EX AF,AF' + ENDM ; + + + MACRO DJNZ_NEXT_HL + DJNZ .LLL + CALL LP_NEXT_HL +.LLL: ; + ENDM + + +;********************************* +;* LOW LEVEL PRINTER * +;* DE' - ZG * +;* HL' - PLACE ON SCR * +;* C' - ATTRIBUTES * +;* B' - COUNT SYMBS * +;* ZF - inverse * +;* AF' - страница и mode * +;********************************* +; MACRO LP_BEG_PM +; EX AF,AF' +; EXX +; IN A,(SLOT3) +; LD C,A +; IN A,(PORT_Y) +; LD B,A +; LD A,SYS_PAGE +; OUT (SLOT3),A +; LD (SYS_SP),SP +; LD SP,SYS_SP +; PUSH BC +; ; +; LD HL,(WIN_ID_0.HL) +; LD DE,(WIN_ID_0.DE) +; LD BC,(WIN_ID_0.BC) +; LD A,E +; AND A +; RRA +; OUT (PORT_Y),A +; EXX +; EX AF,AF' +; ENDM ; + +; MACRO LP_END_PM +; EX AF,AF' +; EXX +; RLA +; LD E,A +; LD (WIN_ID_0.HL),HL ; место печати +; LD (WIN_ID_0.DE),DE +; LD (WIN_ID_0.BC),BC +; ; +; POP BC +; LD A,B +; OUT (PORT_Y),A +; LD A,C +; OUT (SLOT3),A +; LD SP,SYS_SP +; EXX +; EX AF,AF' +; RET +; ENDM ; + +; +;------------------------------------------------------------------[#81] +LP_PRINT_ALL: CALL LP_BEG_P + EXX + LD C,A + EXX + LD A,#50 + OUT (SLOT3),A + ; +.loop: EXX + LD A,D + OUT (PORT_Y),A + INC D +.cont: LD (HL),C + EXX + LD A,E + EXX + INC L + LD (HL),A + DEC L + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + JP LP_END_P +;------------------------------------------------------------------[#81] +; + +; +;------------------------------------------------------------------[#82] +; +LP_PRINT_SYM: CALL LP_BEG_P + EXX + LD C,A + EXX + LD A,#50 + OUT (SLOT3),A + ; +.loop: EXX + LD A,D + OUT (PORT_Y),A +.cont: LD (HL),C + INC D + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + JP LP_END_P +;------------------------------------------------------------------[#82] +; + +; +;------------------------------------------------------------------[#83] +LP_PRINT_ATR: CALL LP_BEG_P + LD A,E + EXX + LD C,A + EXX + LD A,#50 + OUT (SLOT3),A + ; +.loop: EXX + LD A,D + OUT (PORT_Y),A + INC D + INC L + LD (HL),C + DEC L + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + JP LP_END_P +;------------------------------------------------------------------[#83] +; + +; +;------------------------------------------------------------------[#85] +LP_PRINT_LINE: CALL LP_BEG_P + EXX + LD C,PORT_Y + EXX + LD A,#50 + OUT (SLOT3),A + ; +.loop: EXX + OUT (C),D + INC D + EXX + LD A,(HL) + INC HL + EXX + LD (HL),A + EXX + LD A,E + EXX + INC L + LD (HL),A + DEC L + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + JP LP_END_P +;------------------------------------------------------------------[#85] +; + +; +;------------------------------------------------------------------[#86] +LP_PRINT_LINE2: CALL LP_BEG_P + EXX + LD C,PORT_Y + EXX + LD A,#50 + OUT (SLOT3),A + ; +.loop: LD A,(HL) + INC HL + EXX + OUT (C),D + INC D + LD (HL),A + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + ;LD A,SYS_PAGE + ;OUT (SLOT3),A + JP LP_END_P +;------------------------------------------------------------------[#86] +; + +; +;------------------------------------------------------------------[#87] +LP_PRINT_LINE3: CALL LP_BEG_P + LD A,#50 + OUT (SLOT3),A + ; +.loop: EXX + LD A,D + OUT (PORT_Y),A + INC D + EXX + LD A,(HL) + INC HL + CP D + JR NZ,.NoEnd + ; + DEC HL + EXX + LD C,' ' + JP LP_PRINT_ALL.cont + ; +.NoEnd: EXX + LD (HL),A + EXX + LD A,E + EXX + INC L + LD (HL),A + DEC L + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + JP LP_END_P +;------------------------------------------------------------------[#87] +; + +; +;------------------------------------------------------------------[#88] +LP_PRINT_LINE4: CALL LP_BEG_P + LD A,#50 + OUT (SLOT3),A + ; +.loop: EXX + LD A,D + OUT (PORT_Y),A + EXX + LD A,(HL) + INC HL + CP D + JR NZ,.NoEndSymbol + ; + DEC HL + EXX + LD C,' ' + JP LP_PRINT_SYM.cont + ; +.NoEndSymbol: EXX + LD (HL),A + INC D + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + JP LP_END_P +;------------------------------------------------------------------[#88] +; + +; +;------------------------------------------------------------------[#8B] +LP_PRINT_LINE5: CALL LP_BEG_P + LD A,#50 + OUT (SLOT3),A + EXX + LD C,PORT_Y + EXX + ; +.loop: EXX + OUT (C),D + EXX + LD A,(HL) + INC HL + CP D + JR Z,LP_END_P + ; + EXX + LD (HL),A + EXX + LD A,E + EXX + INC L + LD (HL),A + DEC L + INC D + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + ;JP LP_END_P +;----------------- ------------------------------------[#8B] +; ожидается, что портятся только альтернативные регистры и те, что как параметры на входе +LP_END_P: LD A,SYS_PAGE + OUT (SLOT3),A + ; +.SYS_PAGE: EX AF,AF' + EXX + RLA + LD E,A + LD (WIN_ID_0.LineAddr),HL ; место печати + LD (WIN_ID_0.ColumnRGADR_TXTMode),DE + LD (WIN_ID_0.reg_BC),BC + CALL LP_CLOSE_PG + EXX + EX AF,AF' + AND A + RET + ; +.short: EX AF,AF' + EXX + CALL LP_CLOSE_PG + EXX + EX AF,AF' + AND A + RET +;------------------------------------------------------------------[#8C] +LP_PRINT_LINE6: CALL LP_BEG_P + LD A,#50 + OUT (SLOT3),A + EXX + LD C,PORT_Y + EXX + ; +.loop: EXX + OUT (C),D + EXX + LD A,(HL) + INC HL + CP D + JR Z,LP_END_P + ; + EXX + LD (HL),A + INC D + CORRECT_SCR_40_FORWARD + DJNZ_NEXT_HL + EXX + DJNZ .loop + JP LP_END_P +;------------------------------------------------------------------[#8C] +; + + + + +; +;------------------------------------------------------------------[#84] +; портятся только альтернативные регистры и те, что как параметры на входе +LP_SET_PLACE: CALL LP_BEG_P + CALL LP_SET_CUR + JP LP_END_P.SYS_PAGE +;------------------------------------------------------------------[#84] +; + +; +;------------------------------------------------------------------[#8E] +LP_GET_PLACE: CALL LP_BEG_P + LD A,(WIN_ID_0.H_BEG) + NEG + EXX + ADD A,D + EXX + LD E,A + LD A,(WIN_ID_0.V_BEG) + NEG + EXX + ADD A,L + DEC A + EXX + RRCA + RRCA + AND %0011'1111 + LD D,A + ; режим txt 40 + EX AF,AF' + JR C,.no_txt40 + SRL E + AND A +.no_txt40: EX AF,AF' + JP LP_END_P.short +;------------------------------------------------------------------[#8E] +; + +; +;-------------------------------------------------------------[#89, #8D] +;--------------------------------------------------------[#8D] +LP_CLS_WIN2: LD C,A + JR LP_CLS_WIN.START +;--------------------------------------------------------[#8D] +;--------------------------------------------------------[#89] +LP_CLS_WIN: LD C,' ' +;---------------- -----------------------------[#89] +.START: CALL LP_BEG_P + CALL .CLS + JP LP_END_P.SYS_PAGE + ; +.CLS: LD (SYS_PAGE.SYS_WORK1),BC ; сохранить цвет ; !TODO использовать переменные окна + PUSH DE + ; !TODO проверка на превышение размера окна - но сейчас эти процедуры для полного экрана + ; EXX + ; LD A,B + ; EXX + ; CP L + ; JR NC,.loop1 + ; LD L,A + ; +.loop1: CALL LP_SET_CUR + PUSH DE + EXX + LD BC,(SYS_PAGE.SYS_WORK1) ; !TODO использовать переменные окна + EXX + LD B,L + LD A,#50 + OUT (SLOT3),A + ; +.loop2: EXX + LD A,D + OUT (PORT_Y),A + LD (HL),C + INC L + LD (HL),B + DEC L + INC D + CORRECT_SCR_40_FORWARD + EXX + DJNZ .loop2 + ; + LD A,SYS_PAGE + OUT (SLOT3),A + POP DE + INC D + DEC H + JR NZ,.loop1 + ; + POP DE + JP LP_SET_CUR +;-------------------------------------------------------------[#89, #8D] +; + +; +;------------------------------------------------------------------[#B8] +; DE - адрес куда переслать фонт +WIN_GET_ZG: LD HL,ZG_ADDRESS + LD BC,ZG_SIZE + LDIR + AND A + RET +;------------------------------------------------------------------[#B8] +; + +; +;------------------------------------------------------------------[#B6] +WIN_SET_ZG: EX AF,AF' ; LP_SET_ZG: + EXX + CALL LP_OPEN_PG + CALL .SET + CALL LP_CLOSE_PG + EXX + EX AF,AF' + AND A + RET + ; +.SET: IN A,(SLOT1) ;LP_SET_ZG1 + LD (SYS_PAGE.COPY_SLOT1),A + LD A,SHARED_PAGE + OUT (SLOT1),A + EXX + LD BC,Port_All_Mode + IN A,(C) + LD (SYS_PAGE.SYS_WORK1),A + AND #FE ; Spectrum Screen on, accelerator and keyboard interrupt off + OUT (C),A + EX AF,AF' + LD B,A + AND #0F + ADD A,A + OUT (PORT_Y),A + LD A,B ; %xx00'0000 + RRCA ; %0xx0'0000 + RRCA ; %00xx'0000 + RRCA ; %000x'x000 + AND %0001'1000 + OR %0100'0000 + LD H,A + LD L,0 + LD BC,ZG_SIZE + EX DE,HL + ;[ ] 11/02/2024 установка шрифта более гибкая без заплётов + LD A,H + SUB #C0 + JR NC,.change + ; + LDIR +.cont: EX DE,HL + LD A,H + RRCA + RRCA + RRCA + DEC A + AND 3 + ADD A,#58 + LD H,A + ; +.loop: LD (HL),L + INC L + JR NZ,.loop + ; + LD A,(SYS_PAGE.SYS_WORK1) + LD BC,Port_All_Mode + OUT (C),A + EXX + EX AF,AF' + LD A,(SYS_PAGE.COPY_SLOT1) + OUT (SLOT1),A + RET + ; + ;[ ] 11/02/2024 установка шрифта более гибкая без заплётов +.change: LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A + LDIR + LD A,SYS_PAGE + OUT (SLOT3),A + JR .cont +;------------------------------------------------------------------[#B6] +; + +;******************************************************* +; +; WIN_MAP_SC - карта экрана +; 0 - hor size +; 1 - ver size +; 2 - hor place +; 3 - ver place +; определение size +LP_SIZE: CALL LP_OPEN_PG + LD DE,(WIN_ID_0.USER.SIZE_H) + LD A,(WIN_ID_0.USER.MODE) + AND %0010'0000 + CALL LP_CLOSE_PG + RET NZ + ; txt 40 + SLA E + RET +; + +; ожидается, что портятся только альтернативные регистры и те, что как параметры на входе +; установить курсор: +; D - номер символа по вертикали +; E - номер символа по горизонтали +LP_SET_CUR: ; LP_AT_D: + LD A,(WIN_ID_0.USER.SIZE_V) + EXX + LD L,A + EXX + LD A,D + EXX +.loop_x: SUB L + JR NC,.loop_x + ; + ADD A,L + ADD A,A + ADD A,A + LD L,A + ; + LD A,(WIN_ID_0.V_BEG) + ADD A,L + LD L,A + INC L + LD H,#C3 ;!HARDCODE начало описателей в SLOT3 + EXX + ;RET + ; + ;LP_TAB_E: + LD A,(WIN_ID_0.SIZE_REL) + EXX + LD D,A + EXX + LD A,E + EXX +.loop_y: SUB D + JR NC,.loop_y + JR Z,.loop_y + ; + NEG + LD B,A ; сохранить сколько осталось символов в строке + NEG + ADD A,D + LD D,A + ; + EX AF,AF' + JR C,.LLL + SLA D ; режим txt 40. не должно ставить CF +.LLL: EX AF,AF' +.skip_Dx2: LD A,(WIN_ID_0.H_BEG) + ADD A,D + LD D,A + EXX + RET +;************************************************************* + +; вычисление нового места +LP_NEXT_HL: LD A,SYS_PAGE + OUT (SLOT3),A + LD A,4 ;!HARDCODE длина одного описателя квадратика + ADD L + LD L,A + LD A,(WIN_ID_0.V_END) + CP L + JR C,.end_line + ; +.no_end_line: LD A,(WIN_ID_0.H_BEG) + LD D,A + LD A,(WIN_ID_0.SIZE_REL) + LD B,A + LD A,#50 + OUT (SLOT3),A + RET + ; +.end_line: LD HL,(WIN_ID_0.V_BEG) + INC L + LD H,#C3 ;!HARDCODE начало описателей в SLOT3 + JP .no_end_line + +; !ожидается, что портятся только альтернативные регистры и те, что как параметры на входе +LP_BEG_P: EX AF,AF' + EXX + CALL LP_OPEN_PG + LD HL,(WIN_ID_0.LineAddr) + LD DE,(WIN_ID_0.ColumnRGADR_TXTMode) + LD BC,(WIN_ID_0.reg_BC) + LD A,E + AND A + RRA + ;OUT (PORT_Y),A + EXX + EX AF,AF' + RET +; +LP_INI_P: EX AF,AF' + EXX + CALL LP_OPEN_PG + LD A,(WIN_ID_0.USER.MODE) + CP #C0 + JR NC,.NO_ZG ; открытие бордера... + LD A,(WIN_ID_0.USER.MODE_S) + AND %0000'0001 + JR NZ,.NO_ZG ; открытие Spectrum-Screen + ; + LD A,(WIN_ID_0.USER.MODE) + BIT 4,A + JR Z,.NO_ZG ; открытие графического экрана + ;LD DE,(SYS_PAGE.WIN_ZG) ; знакогенератор + LD DE,ZG_ADDRESS ; знакогенератор + EXX + EX AF,AF' + CALL WIN_SET_ZG.SET ;LP_SET_ZG1 ;!TODO стоит ли каждый раз закидывать шрифт? + EX AF,AF' + EXX +.NO_ZG: LD A,(WIN_ID_0.H_BEG) + LD D,A + LD A,(WIN_ID_0.V_BEG) + LD L,A + INC L + LD H,#C3 + AND A + LD A,(WIN_ID_0.USER.MODE) + BIT 5,A + LD A,(WIN_ID_0.USER.SIZE_H) + JR NZ,.TXT_40 + ; TXT_80 + ADD A,A + SCF +.TXT_40: LD B,A + LD (WIN_ID_0.SIZE_REL),A + EX AF,AF' + EXX + JP LP_END_P +;******************************************************** + + +; +;------------------------------------------------------------------[#80] +LP_OPEN_S: LD A,B + ADD A,A + CP LP_SC_TAB.SIZE + CCF + RET C + PUSH HL + LD HL,LP_SC_TAB + ADD A,L + LD L,A + JR NC,.no_inc + INC H +.no_inc: LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX (SP),HL + RET + ; +LP_SC_TAB: DW LP_SET_32 ; 0 - спектрумовское окно 32x24 + DW LP_SET_64 ; 1 - текстовое окно 64x24 + DW LP_SET_40 ; 2 - текстовое окно 40x32 + DW LP_SET_80 ; 3 - текстовое окно 80x32 + DW LP_SET_32.X ; 4 - спектрумовское окно, HL - положение окна + DW LP_SET_64.X ; 5 - текстовое окно 64x24, HL - положение окна + DW LP_SET_40.X ; 6 - текстовое окно 40x32, HL - положение окна + DW LP_SET_80.X ; 7 - текстовое окно 80x32, HL - положение окна + DW PIC_SET_S1 ; 8 - графическое окно 0, HL - положение окна + DW PIC_SET_S2 ; 9 - графическое окно 1, HL - положение окна + ;DW LP_SET_MNU ; 10 - ;!TODO +.SIZE: EQU $-LP_SC_TAB + +; !TODO +; LP_SET_MNU: +; LD IX,LP_SCR_MNU +; JP PIC_FN0_OpenWin + +LP_SET_32: LD HL,#4104 +.X: LD IX,LP_SCR_32 + JP PIC_FN0_OpenWin + +LP_SET_64: LD HL,#4104 +.X: LD IX,LP_SCR_64 + JP PIC_FN0_OpenWin + +LP_SET_40: LD HL,#4000 +.X: LD IX,LP_SCR_40 + JP PIC_FN0_OpenWin + +LP_SET_80: LD HL,#4000 +.X: LD IX,LP_SCR_80 + JP PIC_FN0_OpenWin + +PIC_SET_S1: LD IX,PIC_320X256_1 + JP PIC_FN0_OpenWin + +PIC_SET_S2: LD IX,PIC_320X256_2 + JP PIC_FN0_OpenWin +;------------------------------------------------------------------[#80] +; + +;------------------------------------------------------------------[#B1] +; !TODO +WIN_CLOSE: SCF + RET +;------------------------------------------------------------------[#B1] +; + +; +;------------------------------------------------------------------[#B0] +; IX - описатель окна +WIN_OPEN.SCR1: LD E,1 +; E - bit0 - номер экрана +WIN_OPEN: CALL .Prepare + LD L,(IX + Window_Variables.USER.PLACE_H) + LD H,(IX + Window_Variables.USER.PLACE_V) + JP WIN_OPEN_W1 + ; +.Prepare: CALL LP_OPEN_PG + PUSH HL + PUSH DE + ;LD (SYS_PAGE.WIN_MAP_SC),IX ; карта окна + ;LD HL,(SYS_PAGE.WIN_MAP_SC) + PUSH IX + POP HL + LD DE,WIN_ID_0 + LD BC,Window_UserVars + LDIR + LD IX,WIN_ID_0 + POP DE + POP HL + LD (IX + Window_Variables.MODE_E),E + RET +;------------------------------------------------------------------[#B0] +; + +; +;------------------------------------------------------------------[#A0] +; HL = X + Y*64 + #4000 + #1000*RGMOD. место на экране по знакоместам +; IX - описатель окна +; E - bit0: номер экрана +;LP_SET_MODE: +PIC_FN0_OpenWin: + ; финт для совместимости со старыми прогами, где передавались другие параметры + LD A,H + AND %00001'0000 ; переместить бит 4 в регистр E + XOR E + LD E,A + ; + LD A,L + AND #3F + ADD HL,HL + ADD HL,HL + LD L,A + ; + LD A,H + AND #3F + LD H,A + CALL WIN_OPEN.Prepare + LD (IX + Window_Variables.USER.PLACE_H),L + LD (IX + Window_Variables.USER.PLACE_V),H + ; +WIN_OPEN_W1: LD A,L + ADD A,A + INC A ; вычисление PORT_Y + BIT 4,E + JR NZ,.NO_OR + OR #80 ; если вывод на второй экран +.NO_OR: LD (IX+Window_Variables.H_BEG),A + LD D,A + LD A,(IX+Window_Variables.USER.SIZE_H) + ADD A,A + ADD A,D + LD (IX+Window_Variables.H_END),A + ;LD (SYS_PAGE.WIN_MODE_SC),DE ; место по горизонтали и страница моды + LD A,H + AND #3F + ADD A,A + ADD A,A + LD L,A + LD H,A + ;LD (SYS_PAGE.WIN_MODE_SH),HL ; место по вертикали с адресом + LD (IX+Window_Variables.V_BEG),A + LD A,(IX+Window_Variables.USER.SIZE_V) + ADD A,A + ADD A,A + ADD A,L + LD (IX+Window_Variables.V_END),A + ; + ;LD L,(IX+Window_Variables.V_BEG) + LD L,H + LD H,#C3 + LD B,(IX+Window_Variables.USER.SIZE_V) ; размер по вертикали + LD (IX+Window_Variables.WORK_1),0 + LD A,(IX+Window_Variables.USER.MODE) ; знакогенератор плюс режим + LD (IX+Window_Variables.WORK_2),A + BIT 4,A + JR NZ,.LOOP ; переход, если текстовый режим + ; + AND #F0 + LD C,A + LD A,(IX+Window_Variables.USER.GR_X) + RRCA + RRCA + RRCA + LD D,A + AND #0F + OR C + LD (IX+Window_Variables.WORK_2),A + ; + LD A,D + AND #E0 + LD C,A + LD A,(IX+Window_Variables.USER.GR_Y) + AND #1F + OR C + RLCA + RLCA + RLCA + LD (IX+Window_Variables.WORK_1),A +.LOOP: LD D,(IX+Window_Variables.H_BEG) ; D - начало строки (PORT_Y) + LD C,(IX+Window_Variables.USER.SIZE_H) ; размер по горизонтали + LD A,(IX+Window_Variables.USER.MODE) ; знакогенератор плюс режим + PUSH BC + CALL LP_MODE_LINE + POP BC + INC L + INC L + INC L + INC L + DJNZ .LOOP + ; + LD A,(IX+Window_Variables.MODE_E) + AND 1 + OUT (SCREEN_SWITCH),A + ;LD A,(IX+Window_Variables.MODE) + ;BIT 4,A + CALL LP_CLOSE_PG + ;RET Z + CALL LP_INI_P + ;LD A,(SYS_PAGE.WIN_MODE_SC) + ;OUT (RGMOD),A + ; нигде не было описано + CALL LP_SIZE + ; DE - размеры окна + ; + XOR A ;!TODO номер окна + RET +; + +; Установка режима на линии +LP_MODE_LINE: BIT 0,(IX+Window_Variables.USER.MODE_S) + JP NZ,.Spectrum ; идти на спектрум + BIT 4,A + JP Z,.Graphic ; идти на графику! + DEC D + ; текстовый режим. + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + LD A,L ; вертикальное положение + CP #80 + JR NC,.Exit_txt + ; + CALL .RECURSE + JR NC,.Exit_txt + ; + CALL .CALC_C + ; +.loop_txt_scr: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),A ; режим + INC D + EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),A ; режим + INC D + DEC C + JR NZ,.loop_txt_scr + ; + EX AF,AF' +.Exit_txt: LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + RET + ; + ; Spectrum mode +.Spectrum: LD A,(IX+Window_Variables.WORK_2) + LD B,(IX+Window_Variables.WORK_1) + DEC D + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + LD A,L ; вертикальное положение + CP #80 + JR NC,.Exit_zx_scr + ; + CALL .RECURSE + JR NC,.Exit_zx_scr + ; + CALL .CALC_C + ; +.loop_zx_scr: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),A ; режим + ; + INC L + LD (HL),B + INC L + LD (HL),B + DEC L + DEC L + ; + INC D + BIT 4,A + JR NZ,.no_inc_B_zx + ; + INC B +.no_inc_B_zx: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + ; + LD (HL),A ; режим + INC L + LD (HL),B + INC L + LD (HL),B + DEC L + DEC L + ; + INC D + INC B + JR NZ,.NO_ADD_40 + ; + ADD A,#40 +.NO_ADD_40: DEC C + JR NZ,.loop_zx_scr + EX AF,AF' + ; +.Exit_zx_scr: LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD (IX+Window_Variables.WORK_1),B + LD (IX+Window_Variables.WORK_2),A + RET + ; + ; Graphic Mode +.Graphic: LD A,(IX+Window_Variables.WORK_1) + LD B,(IX+Window_Variables.WORK_2) + DEC D + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + LD A,L ; вертикальное положение + CP #80 + JR NC,.Exit2_GFX_scr + ; + CALL .RECURSE + JR NC,.Exit2_GFX_scr + ; + CALL .CALC_C + ; + BIT 5,B + JR Z,.GFX_640_Loop + ; + ; GFX 320 +.loop_GFX_scr: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),B ; mode 0 + INC L + LD (HL),A ; mode 1 + INC L + LD (HL),0 ; mode 2 + DEC L + DEC L + INC D + ; + ;EX AF,AF' + ;LD A,D + ;OUT (PORT_Y),A + ;EX AF,AF' + ;LD (HL),B ; режим + ;INC L + ;LD (HL),A ; режим 2 + ;DEC L + ; + INC D + INC A + LD E,A + AND 7 + JR NZ,.NO_INC_B_320 + ; + LD A,E + SUB 8 + LD E,A + INC B +.NO_INC_B_320: LD A,E + DEC C + JR NZ,.loop_GFX_scr + ; +.Exit_GFX_scr: EX AF,AF' +.Exit2_GFX_scr: LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD A,(IX+Window_Variables.WORK_1) + ADD A,8 + LD (IX+Window_Variables.WORK_1),A + RET + ; + ; GFX 640 +.GFX_640_Loop: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),B ; mode 0 + INC L + LD (HL),A ; mode 1 + INC L + LD (HL),0 ; mode 2 + ; + INC D + EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),0 ; mode 2 + DEC L + LD (HL),A ; mode 1 + DEC L + LD (HL),B ; mode 0 + ; + INC D + INC A + LD E,A + AND 7 + JR NZ,.NO_INC_B_640 + ; + LD A,E + SUB 8 + LD E,A + INC B +.NO_INC_B_640: LD A,E + DEC C + JR NZ,.GFX_640_Loop + JP .Exit_GFX_scr +; +.RECURSE: LD A,D ; горизонтальное положение + AND #7F + SUB 80 + RET C + SUB 48 + NEG + LD E,A ; запомнить + ADD A,D + LD D,A ; новое положение + LD A,E ; восстановить + RRA + AND #3F + SUB C + RET NC + NEG + LD C,A ; новое значение C + JR .RECURSE +; +.CALC_C: NEG + RRA + AND #3F + CP C + JR NC,.NoChangeC + LD C,A +.NoChangeC: EX AF,AF' + INC D + RET +;***************************************************************** + + +LP_SCROLL_UD: DEC B + JR Z,LP_SCROLL_UP + DEC B + JR Z,LP_SCROLL_DN + SCF + RET + +; Вход: +; D - верхняя строка ( от 0 ) +; E - число скроллируемых строк +LP_SCROLL_UP: DEC E + RET Z + CALL LP_OPEN_PG + ; + LD B,E + LD E,0 ; всю строку окна скроллим + CALL .RUN + JP LP_CLOSE_PG + ; + ; +.RUN: CALL LP_SET_CUR ; вычислить переменные для строки + PUSH IX + LD IX,(WIN_ID_0.USER.SIZE_H) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO + ; отличие от LP_SCROLL_DN + LD A,(WIN_ID_0.V_END) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + LD C,A + LD A,#50 + OUT (SLOT3),A ; открыть страницу для переноса + ; +.loop2: EXX + PUSH HL + EXX + POP HL + ; + LD E,L + LD D,H + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO + ; отличие от LP_SCROLL_DN + LD A,4 + ADD L + LD L,A + ; + LD A,C ; LD A,(WIN_ID_0.V_END) + CP L + JR C,.exit ; если конец, то выход + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + PUSH BC + LD A,L + EXX + LD L,A + EXX + ;XH + LD A,XL ; WIN_ID_0.USER.SIZE_H + ; LD A,SYS_PAGE + ; OUT (SLOT3),A + ; LD A,(WIN_ID_0.USER.SIZE_H) + ADD A,A ; число байт в строке для переноса + ADD A,A + LD C,A + LD B,0 + ; LD A,#50 + ; OUT (SLOT3),A ; открыть страницу для переноса + ; + EXX + LD A,D ; получить порт начала строки + EXX +.loop1: OUT (PORT_Y),A + INC A ; следующее значение порта + LDI + LDD + ; + OUT (PORT_Y),A + INC A ; следующее значение порта + LDI + LDD + JP PE,.loop1 + ; + POP BC + DJNZ .loop2 +.exit: POP IX + RET + + + +; Вход : +; D - верхняя строка ( от 0 ) +; E - число скроллируемых строк +LP_SCROLL_DN: DEC E + RET Z + CALL LP_OPEN_PG + ; + LD B,E + LD E,0 + LD A,D + ADD A,B + LD D,A + CALL .RUN +.EXIT: JP LP_CLOSE_PG + ; + ; +.RUN: CALL LP_SET_CUR + PUSH IX + LD IX,(WIN_ID_0.USER.SIZE_H) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO + ; отличие от LP_SCROLL_UD + LD A,(WIN_ID_0.V_BEG) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + LD C,A + LD A,#50 + OUT (SLOT3),A ; открыть страницу для переноса + ; +.loop2: EXX + PUSH HL + EXX + POP HL + ; + LD E,L + LD D,H + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!TODO + ; отличие от LP_SCROLL_UD + LD A,L + SUB 4 + LD L,A + ; + LD A,C + CP L ; .CONT: L >= A + JR Z,.CONT + JR NC,.exit ; если конец, то выход + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +.CONT: PUSH BC + LD A,L + EXX + LD L,A + EXX + ; + LD A,XL ; WIN_ID_0.USER.SIZE_H + ; LD A,SYS_PAGE + ; OUT (SLOT3),A + ; LD A,(WIN_ID_0.USER.SIZE_H) + ADD A,A ; число байт в строке для переноса + ADD A,A + LD C,A + LD B,0 + ; LD A,#50 + ; OUT (SLOT3),A ; открыть страницу для переноса + ; + EXX + LD A,D ; получить порт начала строки + EXX +.loop1: OUT (PORT_Y),A + INC A ; следующее значение порта + LDI + LDD + ; + OUT (PORT_Y),A + INC A ; следующее значение порта + LDI + LDD + JP PE,.loop1 + ; + POP BC + DJNZ .loop2 +.exit: POP IX + RET + + +; DE - место символа в окне +; А - номер окна +; выход: HL - символ/атрибут B - знакогенератор +WIN_GET_SYM: AND A + SCF + RET NZ + ; + CALL LP_BEG_P + CALL LP_SET_CUR + LD A,#50 + OUT (SLOT3),A + ; + EXX + LD A,D + OUT (PORT_Y),A + LD A,(HL) + EXX + LD L,A + EXX + INC L + LD A,(HL) + EXX + LD H,A + EXX + DEC L + DEC L + LD A,(HL) + INC L + EXX + LD B,A + JP LP_END_P + ;RET + +; DE - место символа в окне +; А - номер окна +; HL - символ/атрибут +; B - знакогенератор +WIN_PUT_SYM: AND A + SCF + RET NZ + ; + CALL LP_BEG_P + CALL LP_SET_CUR + LD A,#50 + OUT (SLOT3),A + ; + EXX + LD A,D + OUT (PORT_Y),A + EXX + ; [ ] 31/03/2025 если B=0, то кладём только символ + ; если B=1, то кладём символ с атрибутом + ; символ + ; LD A,L + ; EXX + ; LD (HL),A + ; INC L + ; EXX + ; ; атрибут + ; LD A,H + ; EXX + ; LD (HL),A + ; DEC L + ; DEC L + ; EXX + ; ; шрифт + ; LD A,B + ; EXX + ; LD (HL),A + ; INC L + ; EXX + ; JP LP_END_P + ; + ; шрифт + LD A,B + OR A + JR Z,.onlySymbol + DEC B + JR Z,.noChangeZG + ; + EXX + DEC L + LD (HL),A + INC L + EXX + ; атрибут +.noChangeZG: LD A,H + EXX + INC L + LD (HL),A + DEC L + EXX + ; символ +.onlySymbol: LD A,L + EXX + LD (HL),A + EXX + JP LP_END_P + + + +; HL - размер окна +; DE - положение окна +; A - номер окна +; IX - новое положение окна +WIN_MOVE: AND A + SCF + RET NZ + PUSH IX + PUSH HL + LD B,SHARED_PAGE + LD IX,SLOT3.MEM_ADDR + CALL WIN_COPY_WIN1 + POP HL + POP DE + LD B,SHARED_PAGE + LD IX,SLOT3.MEM_ADDR + CALL WIN_RESTORE.Start + AND A + RET + + +; HL - размер сохраняемого окна +; DE - место сохраняемого окна +; IX - адрес сохраняемого окна, в странице 4000h +; А - номер окна, B - страница +WIN_COPY: AND A + SCF + RET NZ +WIN_COPY_WIN1: CALL LP_BEG_P + IN A,(SLOT1) + PUSH AF + ; + CALL LP_SET_CUR + LD (SYS_PAGE.SYS_WORK1),SP + LD A,B + OUT (SLOT3),A + LD A,#50 + OUT (SLOT1),A + ; + EXX + RES 7,H + LD C,D + EXX + ; +.COPY_loop2: LD A,L + EXX + LD B,A + ADD A,A + ADD A,XL + LD XL,A + JR NC,.NO_INC_XH + ; + INC XH +.NO_INC_XH: LD SP,IX + LD A,C + ADD A,B +.COPY_loop: DEC A + OUT (PORT_Y),A + LD E,(HL) + INC L + LD D,(HL) + DEC L + PUSH DE + DJNZ .COPY_loop + ; + INC HL + INC HL + INC HL + INC HL + EXX + DEC H + JR NZ,.COPY_loop2 + ; + LD A,SYS_PAGE + OUT (SLOT3),A + LD SP,(SYS_PAGE.SYS_WORK1) + ; + POP AF + OUT (SLOT1),A + JP LP_END_P.short +; + +; HL - размер сохраняемого окна +; DE - место сохраняемого окна +; IX - адрес данных восстанавливаемого окна +WIN_RESTORE: AND A + SCF + RET NZ +.Start: + CALL LP_BEG_P + ; + IN A,(SLOT1) + PUSH AF + ; + CALL LP_SET_CUR + ; + LD (SYS_PAGE.SYS_WORK1),SP + LD SP,IX + ; + LD A,B + OUT (SLOT3),A + LD A,#50 + OUT (SLOT1),A + ; + EXX + RES 7,H + LD C,D + EXX +.L2: LD A,L + EXX + LD B,A + LD A,C +.L1: OUT (PORT_Y),A + INC A + POP DE + LD (HL),E + INC L + LD (HL),D + DEC L + DJNZ .L1 + ; + INC HL + INC HL + INC HL + INC HL + EXX + DEC H + JR NZ,.L2 + + LD A,SYS_PAGE + OUT (SLOT3),A + + LD SP,(SYS_PAGE.SYS_WORK1) + + POP AF + OUT (SLOT1),A + JP LP_END_P.short +;======================================================================; + + + + +; Печать с управляющими символами в консоль +;------------------------------------------------------------------[#E0] +LP_PR_LINE_DIR: + ;>------------------------------------------------[BELL] +.BELL: EXX + PUSH HL + PUSH BC + ; + LD DE,1200 + LD HL,4 + CALL BEEP + ; + POP BC + POP HL + EXX + JR .loop + ;-------------------------------------------------[BELL] + + ;>------------------------------------------------[Backspace] +.BACK: LD A,(WIN_ID_0.H_BEG) + CP D + JR Z,.loop + INC B + DEC D + CORRECT_SCR_40_BACKWARD + JP .loop + ;>------------------------------------------------[Backspace] + ; +.EXIT_SpecSymbol: + DEC HL + CALL LP_END_P + POP IX + SCF + RET +; +.EXIT: POP IX + JP LP_END_P +;;;;;;;;;;;;;;;;; +; A - атрибуты выводимого символа если CF' +; A' - если !=0 то без скролла +; CF - XY-mode +; DE - место символа в окне, если CF=1 +; HL - адрес с выводимой строкой +; B - цвет консоли (используется при скролле и очистке окна) +; IY - два спец.символа для выхода с CF=1. Должны быть равны B, если не нужны +; CF' - выводить символ с атрибутами +;;;;;;;;;;;;;;;;; +.START: PUSH IX + LD XL,A ; атрибуты выводимого символа + ; + EX AF,AF' + PUSH AF ; attr-mode + EX AF,AF' + ; + IN A,(SLOT3) + LD C,A + CALL LP_BEG_P + CALL C,LP_SET_CUR ; mode for DE + LD A,B + ; далее рег B свободен, можно задействовать + LD (SYS_PAGE.SYS_WORK2),A ; цвет консоли + POP AF ; attr-mode, scroll on/off + LD B,A ; scroll on/off + EXX + RL C ; C' - attr-mode. выводить атрибут +.loop: LD A,D + OUT (PORT_Y),A + EXX + LD A,C + OUT (SLOT3),A + ; + LD A,(HL) + LD XH,A + INC HL + AND A + JR Z,.EXIT + CP YH + JR Z,.EXIT_SpecSymbol + CP YL + JR Z,.EXIT_SpecSymbol + ; + EXX + ; печатаемые символы + CP 14 + JR NC,.print + CP 7 + JR C,.print + ; управляющие символы + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,XH + ; + SUB 7 + JR Z,.BELL ; A = 07 "BELL" + DEC A + JR Z,.BACK ; A = 08 "Backspace" + DEC A + JR Z,.TAB ; A = 09 "TAB" + DEC A + JR Z,.LineFeed ; А = 10 "Line Feed" + DEC A + JR Z,.VertTab ; А = 11 "Vertical Tabulation" + DEC A + JR Z,.CLS ; А = 12 "Form feed" - разрыв страницы, начало нового листа, может работать как VT + ;DEC A + ;JR Z,.CR ; А = 13 "Carriage Return" + ;>------------------------------------------------[CR] +.CR: LD A,(WIN_ID_0.H_BEG) + LD D,A + LD A,(WIN_ID_0.SIZE_REL) + LD B,A + JP .loop + ;-------------------------------------------------[CR] + + ;>------------------------------------------------[PRINT] +.print: LD A,#50 + OUT (SLOT3),A + LD A,XH + LD (HL),A + ; выводить атрибут + RR C ; C' - attr flag + JR NC,.NoPutAttr + ; + INC L + LD A,XL + LD (HL),A + DEC L +.NoPutAttr: RL C ; C' - attr flag + INC D +.next_full: CORRECT_SCR_40_FORWARD +.next: DJNZ .loop + CALL LP_NEXT_HL_DIR + JP .loop + ;-------------------------------------------------[PRINT] + + ;>------------------------------------------------[TAB] +.TAB: LD A,(WIN_ID_0.H_BEG) + SUB D + NEG + AND %0000'0111 + NEG + ADD A,8 + CP B + JR C,.keep_A + ; + LD A,B + DEC A +.keep_A: ;NEG + PUSH BC ; save C' - attr flag + LD C,A + EX AF,AF' + JR C,.LLL + ; + EX AF,AF' + ADD A,A ; режим 40 + EX AF,AF' +.LLL: EX AF,AF' + ; +.tabNxt: ADD A,D + LD D,A + LD A,B + SUB C ; set XL + POP BC ; restore C' - attr flag + LD B,A + JP .loop + ; + ;-------------------------------------------------[TAB] + + ;>------------------------------------------------[Line Feed] +.VertTab: ; +.LineFeed: LD A,4 ;!HARDCODE длина одного описателя квадратика + ADD L + LD L,A + ; + LD A,(WIN_ID_0.V_END) + CP L + CALL C,LP_NEXT_HL_DIR.end_line + JP .loop + ;-------------------------------------------------[Line Feed] + + ;>------------------------------------------------[Form feed] +.CLS: PUSH BC ; C' - attr flag + EXX + PUSH BC + PUSH HL + PUSH DE + ; + LD A,(SYS_PAGE.SYS_WORK2) ; цвет консоли + LD B,A + LD DE,0 + LD HL,(WIN_ID_0.USER.SIZE_H) ; get WIN XY + LD A,(WIN_ID_0.SIZE_REL) + LD L,A + LD C," " + CALL LP_CLS_WIN.CLS + ; + POP DE + POP HL + POP BC + EXX + LD A,B + POP BC ; C' - attr flag + LD B,A + JP .loop + ;-------------------------------------------------[Form feed] +;------------------------------------------------------------------[#E0] +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +LP_NEXT_HL_DIR: LD A,SYS_PAGE + OUT (SLOT3),A + LD A,4 ;!HARDCODE длина одного описателя квадратика + ADD L + LD L,A + LD A,(WIN_ID_0.V_END) + CP L + CALL C,.end_line + ; +.no_end_line: LD A,(WIN_ID_0.H_BEG) + LD D,A + LD A,(WIN_ID_0.SIZE_REL) + LD B,A + RET + ; +.end_line: LD A,L + SUB 4 ;!HARDCODE длина одного описателя квадратика + LD L,A + ; игнорим скрролл или нет? + EXX + LD A,B + EXX + AND A + RET NZ ; ZF=0 игнор скролла + ; + PUSH HL + DEC L + PUSH BC + PUSH DE + EXX + PUSH BC + PUSH HL + PUSH DE + LD A,(WIN_ID_0.V_BEG) + LD D,A + LD A,(WIN_ID_0.USER.SIZE_V) + LD B,A + LD E,0 ; всю строку окна скроллим + CALL LP_SCROLL_UP.RUN + ; + LD A,SYS_PAGE + OUT (SLOT3),A + LD C," " + LD A,(SYS_PAGE.SYS_WORK2) ; цвет консоли + LD B,A + LD A,(WIN_ID_0.USER.SIZE_V) + DEC A + LD D,A + LD E,0 + LD HL,(WIN_ID_0.SIZE_REL) + LD H,1 + LD C," " + CALL LP_CLS_WIN.CLS + ; + POP DE + POP HL + POP BC + EXX + POP DE + POP BC + POP HL + RET +; +; LD HL,(WIN_ID_0.V_END) +; DEC L +; DEC L +; DEC L +; LD H,#C3 +; ; +; LD A,(WIN_ID_0.H_BEG) +; LD D,A +; ; +; LD A,#50 +; OUT (SLOT3),A +; ; +; EXX +; LD A,(WIN_ID_0.SIZE_REL) +; LD B,A +; .loop_cl_line: EXX +; LD A,D +; OUT (PORT_Y),A +; LD (HL),C +; INC D +; CORRECT_SCR_40_FORWARD +; EXX +; DJNZ .loop_cl_line +; LD A,SYS_PAGE +; OUT (SLOT3),A +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +LP_OPEN_PG: IN A,(SLOT3) + LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD A,C + LD (SYS_PAGE.COPY_SLOT3),A + IN A,(PORT_Y) + LD (SYS_PAGE.COPY_RGADR),A + RET +; + +; не должна влиять на флаги и трогать регистры кроме A +LP_CLOSE_PG: LD A,(SYS_PAGE.COPY_RGADR) + OUT (PORT_Y),A + LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A + RET + +/* + +;!TODO старая LP_SET_MODE - расковырять старый LP_SCR_MNU + + MODULE EXPERIMENT + +; byte 1 +; 0..4 - VIDEO_PAGE +; 5 - mode 42/84 ; 0 - 42,1 - 84 +; 6 - next line +; 7 - end table +; byte 2 - number of places +; byte 3..4 - adress places/ +; 4000-5FFF - Spectrum modes/ C000-FFFF - Graf mode +; + MACRO LP_S PG,XX,ADR + DB PG,XX + DW ADR + ENDM + + MACRO LP_OPEN_PG + IN A,(SLOT3) + LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD A,C + LD (SYS_PAGE.COPY_SLOT3),A + IN A,(PORT_Y) + LD (SYS_PAGE.COPY_RGADR),A + ENDM ; + + MACRO LP_CLOSE_PG + LD A,(SYS_PAGE.COPY_RGADR) + OUT (PORT_Y),A + LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A + ENDM ; +;--------------------------------------- +GR_BIT_END: EQU 7 + +S_BIT_END: EQU 7 +S_BIT_LIN: EQU 6 +S_BIT_MOD: EQU 5 + +BIT_1440: EQU 1 +BIT_MASK_1440: EQU %00000010 + +MODE_PAGE: EQU #FC +;--------------------------------------- + ;DS (($/4)*4+4-$) + ALIGN 4 + + +LP_SCR_MNU: + LP_S #40,14,#40E7 + LP_S #40,14,#4807 + LP_S #40,14,#4827 + LP_S #40,14,#4847 + LP_S #40,14,#4867 + LP_S #40,14,#4887 + LP_S #40,14,#48A7 + LP_S #40,14,#48C7 + LP_S #40,14,#48E7 + DB #FF,0,0,0 + +; LP_SCR_80: +; DB 40,32,0,0,#1B,0,0,0 +; DB 0,0,0,0,0,0,0,0 + +; LP_S %0110'0010,40,#4000 +; LP_S %0110'0010,40,#4028 +; LP_S %0110'0010,40,#4050 +; LP_S %0110'0010,40,#4078 +; LP_S %0110'0010,40,#40A0 +; LP_S %0110'0010,40,#40C8 +; +; LP_S %0110'0010,40,#4800 +; LP_S %0110'0010,40,#4828 +; LP_S %0110'0010,40,#4850 +; LP_S %0110'0010,40,#4878 +; LP_S %0110'0010,40,#48A0 +; LP_S %0110'0010,40,#48C8 +; +; LP_S %0110'0010,40,#5000 +; LP_S %0110'0010,40,#5028 +; LP_S %0110'0010,40,#5050 +; LP_S %0110'0010,40,#5078 +; LP_S %0110'0010,40,#50A0 +; LP_S %0110'0010,40,#50C8 +; +; LP_S %0110'0100,40,#4000 +; LP_S %0110'0100,40,#4028 +; LP_S %0110'0100,40,#4050 +; LP_S %0110'0100,40,#4078 +; LP_S %0110'0100,40,#40A0 +; LP_S %0110'0100,40,#40C8 +; +; LP_S %0110'0100,40,#4800 +; LP_S %0110'0100,40,#4828 +; LP_S %0110'0100,40,#4850 +; LP_S %0110'0100,40,#4878 +; LP_S %0110'0100,40,#48A0 +; LP_S %0110'0100,40,#48C8 +; +; LP_S %0110'0100,40,#5000 +; LP_S %0110'0100,40,#5028 +; +; DEFB #FF,0,0,0 +; +; LP_SCR_40: +; DB 40,32,0,0,7BH,0,0,0 +; DB 0,0,0,0,0,0,0,0 +; +; LP_S 01000100B,40,5050H +; LP_S 01000100B,40,5078H +; LP_S 01000100B,40,50A0H +; LP_S 01000100B,40,50C8H +; +; LP_S 01000110B,40,4000H +; LP_S 01000110B,40,4028H +; LP_S 01000110B,40,4050H +; LP_S 01000110B,40,4078H +; LP_S 01000110B,40,40A0H +; LP_S 01000110B,40,40C8H +; +; LP_S 01000110B,40,4800H +; LP_S 01000110B,40,4828H +; LP_S 01000110B,40,4850H +; LP_S 01000110B,40,4878H +; LP_S 01000110B,40,48A0H +; LP_S 01000110B,40,48C8H +; +; LP_S 01000110B,40,5000H +; LP_S 01000110B,40,5028H +; LP_S 01000110B,40,5050H +; LP_S 01000110B,40,5078H +; LP_S 01000110B,40,50A0H +; LP_S 01000110B,40,50C8H +; +; LP_S 01001000B,40,4000H +; LP_S 01001000B,40,4028H +; LP_S 01001000B,40,4050H +; LP_S 01001000B,40,4078H +; LP_S 01001000B,40,40A0H +; LP_S 01001000B,40,40C8H +; +; LP_S 01001000B,40,4800H +; LP_S 01001000B,40,4828H +; LP_S 01001000B,40,4850H +; LP_S 01001000B,40,4878H +; +; DEFB 0FFh,0,0,0 +; +; LP_SCR_32: +; DB 32,24,4,4,30H,1,0,0 +; DB 0,0,0,0,0,0,0,0 +; +; LP_S 040h,32,04000H +; LP_S 040h,32,04020H +; LP_S 040h,32,04040H +; LP_S 040h,32,04060H +; LP_S 040h,32,04080H +; LP_S 040h,32,040A0H +; LP_S 040h,32,040C0H +; LP_S 040h,32,040E0H +; +; LP_S 040h,32,04800H +; LP_S 040h,32,04820H +; LP_S 040h,32,04840H +; LP_S 040h,32,04860H +; LP_S 040h,32,04880H +; LP_S 040h,32,048A0H +; LP_S 040h,32,048C0H +; LP_S 040h,32,048E0H +; +; LP_S 040h,32,05000H +; LP_S 040h,32,05020H +; LP_S 040h,32,05040H +; LP_S 040h,32,05060H +; LP_S 040h,32,05080H +; LP_S 040h,32,050A0H +; LP_S 040h,32,050C0H +; LP_S 040h,32,050E0H +; +; LP_S 0FFh,0,0 +; +; LP_SCR_64: +; DB 32,24,4,4,9BH,0,0,0 +; DB 0,0,0,0,0,0,0,0 +; +; LP_S 06Ah,32,04000H +; LP_S 06Ah,32,04020H +; LP_S 06Ah,32,04040H +; LP_S 06Ah,32,04060H +; LP_S 06Ah,32,04080H +; LP_S 06Ah,32,040A0H +; LP_S 06Ah,32,040C0H +; LP_S 06Ah,32,040E0H +; +; LP_S 06Ah,32,04800H +; LP_S 06Ah,32,04820H +; LP_S 06Ah,32,04840H +; LP_S 06Ah,32,04860H +; LP_S 06Ah,32,04880H +; LP_S 06Ah,32,048A0H +; LP_S 06Ah,32,048C0H +; LP_S 06Ah,32,048E0H +; +; LP_S 06Ah,32,05000H +; LP_S 06Ah,32,05020H +; LP_S 06Ah,32,05040H +; LP_S 06Ah,32,05060H +; LP_S 06Ah,32,05080H +; LP_S 06Ah,32,050A0H +; LP_S 06Ah,32,050C0H +; LP_S 06Ah,32,050E0H +; +; LP_S 0FFh,0,0 + + +@LP_SET_MNU: LD IX,LP_SCR_MNU + ;JR LP_SET_MODE +; HL - смещение от начала экрана +; = hor_sh + vert_sh * 64 + 4000H +; IX - экранная таблица +LP_SET_MODE: LP_OPEN_PG + LD (SYS_PAGE.WIN_MAP_SC),IX + LD (SYS_PAGE.WIN_MODE_SH),HL + LD (SYS_PAGE.WIN_MODE_SC),DE + LD HL,(SYS_PAGE.WIN_MAP_SC) + LD DE,SYS_PAGE.WIN_MAP_IX +.LP_SET_COPY: LD BC,4 + LDIR + BIT S_BIT_END,(HL) + JR Z,.LP_SET_COPY + LD BC,4 + LDIR + LD HL,SYS_PAGE.WIN_MAP_IX + LD (SYS_PAGE.WIN_MAP_SC),HL +.LP_SET_MODE_INT: + LD IX,(SYS_PAGE.WIN_MAP_SC) + LD HL,(SYS_PAGE.WIN_MODE_SH) + CALL LP_SET_MODE1 + LD DE,(SYS_PAGE.WIN_MODE_SC) + LP_CLOSE_PG + PUSH DE + CALL LP_INI_P + POP DE + LD A,E + OUT (RGMOD),A + CALL LP_SIZE + RET + +LP_SET_MODE1: AND A + BIT S_BIT_END,(IX) ; проверка конца данных + RET NZ + + PUSH HL + + IN A,(RGADR) + PUSH AF + + LD A,H + CP #48 + CCF + LD A,#16 + ADC A,0 + OUT (RGADR),A + +.LP_SET_LOOP: CALL LP_MODE_LINE + + INC IX + INC IX + INC IX + INC IX + BIT S_BIT_LIN,(IX) + JR Z,.LP_SET_LOOP + + POP AF + OUT (RGADR),A + + POP HL + + LD BC,#40 + ADD HL,BC + JR LP_SET_MODE1 + +;******************************************************** +; Вычисление значения MODE из экранной таблицы. +; IX - текущее положение в таблице. +LP_MODE_LINE: BIT 3,H + RET NZ + + IN A,(SLOT1) + LD (SYS_PAGE.SYS_WORK1),A + + IN A,(RGADR) + AND 1 + OR MODE_PAGE + OUT (SLOT1),A + + LD A,(IX) + LD B,A + RRCA + AND #0F + LD C,A + LD A,B + AND #20 + XOR #30 + OR C + LD C,A + LD A,(IX+3) + RLC A + RLC A + RLC A + AND #C0 + OR C + LD D,A ; Первый байт MODE + LD E,(IX+2) ; Второй байт.. + + LD B,(IX+1) ; число знакомест + + LD A,L + AND #3F + SUB 40 + JR NC,.LP_NO_SET_MD + NEG + CP B + JR NC,.LP_MD_NO_B + LD B,A +.LP_MD_NO_B: + +.LP_MD_LOOP: SET 4,H + LD (HL),E + RES 4,H + LD (HL),D + + INC E + INC L + DJNZ .LP_MD_LOOP + +.LP_MD_END: LD A,(SYS_PAGE.SYS_WORK1) + OUT (SLOT1),A + RET + +.LP_NO_SET_MD: LD A,C + +.LP_MD_LOOP2: INC E + INC L + BIT 5,H + JR Z,.LP_MD_LOOP + DJNZ .LP_MD_LOOP2 + JR .LP_MD_END + + +; вычисление нового места +LP_TAB_HL: LD HL,(SYS_PAGE.WIN_TAB_SC) ; загрузить текущее положение в таблице SCR + LD A,(HL) ; загрузить флаги таблицы + BIT S_BIT_END,A ; флаг конца + JR Z,LP_TAB_H1 ; если 0 - не конец +LP_TAB_H2: LD HL,(SYS_PAGE.WIN_MAP_SC) ; загрузить начальное положение в таблице SCR +LP_TAB_H3: LD A,(HL) ; и новые флаги +LP_TAB_H1: CALL .LP_PG1 ; переключить страницу + INC HL ; (HL) - новое число символов + BIT S_BIT_MOD,A ; бит 42/84 + LD A,(HL) ; загрузить число символов + JR Z,.LP_NO_MUL ; если 84, то не нужно умножение на 2 + ADD A,A ; A=A*2 +.LP_NO_MUL: LD B,A ; число символов в B + INC HL ; загрузка нового HL + LD A,(HL) + INC HL + INC HL + LD (SYS_PAGE.WIN_TAB_SC),HL ; с сохранением следующего положения в таблице SCR + DEC HL + LD H,(HL) ; положение на экране + LD L,A + + LD A,H + RRCA ; вычислить положение + RRCA ; аттрибута + RRCA + AND 3 + OR H + OR #18 + LD C,A + RET + +.LP_PG1: AND #1F ; переключать только страницы ОЗУ Spectrum mode + OUT (RGADR),A + LD E,(HL) ; значение битов и флагов + + BIT S_BIT_MOD,E ; бит 42/84 + JR Z,.LP_N_84 ; если 42 то не устанавливать CF + SCF ; 84 mode +.LP_N_84: EX AF,AF' ; спрятать флаги и значение для вывода в порт + LD A,E ; в A должен быть байт с флагами + RET + +; program init registers +; for low printer & save +LP_INI_P: EXX + LP_OPEN_PG + LD DE,(SYS_PAGE.WIN_ZG) + LD B,0 + CALL LP_TAB_H2 + EXX +; program save registers +; for low printer +LP_END_P: EX AF,AF' + EXX + RLA + LD E,A + LD (SYS_PAGE.WIN_SAV_HL),HL + LD (SYS_PAGE.WIN_SAV_DE),DE + LD (SYS_PAGE.WIN_SAV_BC),BC + LP_CLOSE_PG + EXX + EX AF,AF' + RET + + +; определение size +LP_SIZE: LP_OPEN_PG + EXX + XOR A + LD HL,(SYS_PAGE.WIN_MAP_SC) ; начало карты scr + CALL .LP_LN2 ; сканировать до + EXX ; конца + NEG ; получить число + LD D,A ; строк в D + LD E,0 + EXX + ;LD A,3 ; число символов + LD HL,(SYS_PAGE.WIN_MAP_SC) ; по 3-йе строке + ;CALL LP_LN2 ; настройка +.LOOP: CALL LP_TAB_H3 ; данные + LD A,B + EXX + ADD A,E + LD E,A + EXX + LD HL,(SYS_PAGE.WIN_TAB_SC) ; данные экрана + BIT S_BIT_LIN,(HL) + JR Z,.LOOP + ;BIT S_BIT_MOD,(HL) + EXX + ;XOR A + ;OUT (RGADR),A + LP_CLOSE_PG + RET + ; +.LP_LN0: DEC A + RET Z +.LP_LN1: INC HL + INC HL + INC HL + INC HL +.LP_LN2: BIT S_BIT_LIN,(HL) + JR Z,.LP_LN1 + BIT S_BIT_END,(HL) + JR Z,.LP_LN0 + RET + + ENDMODULE + */ \ No newline at end of file diff --git a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM b/bios/exp/FUNC_RAM_ROM_DRV.ASM similarity index 94% rename from src/bios/exp/FUNC_RAM_ROM_DRV.ASM rename to bios/exp/FUNC_RAM_ROM_DRV.ASM index 304df85..5ad24d9 100644 --- a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM +++ b/bios/exp/FUNC_RAM_ROM_DRV.ASM @@ -1,1132 +1,1132 @@ -;===================[ Функции распределения памяти ]===================; -; Выход: BC - FREE MEM в блоках по 16k, HL - FULL MEM -;!TEST все SLOT2 на SLOT1 -; -;----------------------------------------------------------------------; -; Определение объема памяти. -; Выход: BC - FREE MEM в блоках по 16k, HL - FULL MEM -EMM.GetMemSize: IN A,(SLOT1) - LD B,A - LD A,SYS_PAGE - OUT (SLOT1),A - XOR A - LD C,A - LD HL,SYS_PAGE.RAM_TABLE-#4000-#4000 - ; -.loop: DEC L - JR Z,.exit - CP (HL) - JR NZ,.loop - INC C - JP .loop - ; -.exit: LD HL,#100 ;!HARDCODE max mem pages - LD A,B - ; L=0 - LD B,L - OUT (SLOT1),A - RET - - /* -.loop: LD A,(HL) - INC L - JR Z,.exit - AND A - JR NZ,.loop - INC C - JR .loop -.exit: LD HL,#100 ;!HARDCODE max mem pages - LD A,B - LD B,0 - OUT (SLOT1),A - RET - */ -;----------------------------------------------------------------------; -; - -;!!!!! Если используется SLOT3 со своими страницами, то не пользоваться -; стеком, там может быть SP в режиме спектрума - -; -;----------------------------------------------------------------------; -; Инициализация распределения памяти. -EMM.InitMem: PUSH BC - PUSH HL - PUSH DE - - IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A - LD HL,SYS_PAGE.RAM_TABLE ; Адрес RAM FAT в ОЗУ. - ; обнуляем таблицу - XOR A -.loopFree: LD (HL),A - INC L - JR NZ,.loopFree - ; резервируем спец.страницы и страницы ZX - ;LD B,RESERVED_PAGES.Blocks - LD DE,RESERVED_PAGES ; таблица занятых системных страниц -.loop: LD A,(DE) - CP #FF - JR Z,.exitLoop - ; -.loopBlk: INC DE - LD L,A - LD A,(DE) - LD (HL),A - CP #FF - JR NZ,.loopBlk - ; -.exitLoop: ;INC DE - ;DJNZ .loop - LD L,A - LD (HL),A - ; Инициализация ключей RAM-Disks - XOR A - LD HL,SYS_PAGE.RAMD_KEYS - LD B,SYS_PAGE.RAMD_KEYS.NUM -.loop2: LD (HL),A - INC L - DJNZ .loop2 - ; [x] 04/11/2023 - LD HL,SYS_PAGE.Sp_RAMD_KEYS - LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM -.loop3: LD (HL),A - INC L - DJNZ .loop3 - ; - LD A,C - OUT (SLOT3),A - POP DE - POP HL - POP BC - RET -;---------------------------------------------------------------------[] -RESERVED_PAGES: ;[x] free zx pages! - ; Block #1 - можно освободить по ID 1 - ;DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; for Spectrum - ; эмулятор ПЗУ - ;DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION - ;DB #FF ; End of the block - ; - ; Block #2 - нельзя освобождать - DB ZX_PAGE.SLOT0,ZX_PAGE.SLOT2,ZX_PAGE.SLOT1 ; for Spectrum and BIOS starting - DB DCP_PAGE ; Ports map - DB Spec_Page ; Page for Spectrum mode - ; Screen pages - DB #50,#51,#52,#53,#54,#55,#56,#57 - DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F - ; - ;DB MODE_PAGE ; ????? - DB SP_SND.CBL.BUFFER_PAGE ; Page for CBL audio - DB SYS_PAGE ; Page for system (BIOS) variables - DB #FF ; End of the block - ; -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; Получить блок памяти N bytes, -; Вход: B - число необходимых блоков -; Выход: L,A - КЛЮЧ RAM-Disk/код ошибки -; CF - признак ошибки -;EMM_FN2M: -EMM.GetMem: PUSH BC - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD HL,SYS_PAGE.RAM_TABLE - XOR A - LD C,#FF ; Метка конца рамблока - ; Заполнить RAM_TABLE -.loop2: DEC L - JR Z,.error_no_mem - CP (HL) - JR NZ,.loop2 - LD (HL),C - LD C,L - DJNZ .loop2 - ; L = указатель цепочки. - EX AF,AF' - OUT (SLOT3),A - LD A,L - AND A - POP BC - RET - ; -.error_no_mem: EX AF,AF' - OUT (SLOT3),A - LD A,C - CALL EMM.FreeMem - LD L,BIOS.Error.EMM.NoMemory - LD A,L - SCF - POP BC - RET - - - - /* -EMM.GetMem: PUSH BC - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD C,B ; сохранить число нужных блоков - LD HL,SYS_PAGE.RAM_TABLE - ; Цикл проверки наличия нужных блоков. - XOR A -.loop: DEC L - JR Z,.noRAM - ; LD A,(HL) - ; AND A - CP (HL) - JR NZ,.loop - DJNZ .loop - ; Место есть ! - LD B,C ; Восстановить нужный объем диска - LD C,#FF ; МЕТКА КОНЦА RAM-Disk - LD L,A ;low SYS_PAGE.RAM_TABLE - ; Заполнить RAM_TABLE - ; A = 0 -.loop2: DEC L - ; LD A,(HL) - ; AND A - CP (HL) - JR NZ,.loop2 - LD (HL),C - LD C,L - DJNZ .loop2 - ; L = указатель цепочки. - EX AF,AF' - OUT (SLOT3),A - LD A,L - AND A - POP BC - RET - ; -.noRAM: LD L,BIOS.Error.EMM.NoMemory - EX AF,AF' - OUT (SLOT3),A - LD A,L - SCF - POP BC - RET - */ -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; Получить блок памяти N bytes, для RAM-Disk A -; Вход: B - число необходимых блоков, A - RAM-Disk -; Выход: L,A - КЛЮЧ RAM-Disk/код ошибки -; CF - признак ошибки -;EMM.GetMem: -EMM.GetMemRMD: PUSH AF - CALL EMM.GetMem - JR C,.error1 - ; - LD B,A - POP AF - CALL BLK_TO_RAMD - RET NC - ; -.error2: LD L,BIOS.Error.BadNumber ; RAM-Disk занят - LD A,L - RET - ; -.error1: POP HL ; чистим стек - LD L,A - RET -;----------------------------------------------------------------------; -; - - - -;----------------------------------------------------------------------; -; Освободить блок памяти ключа K -; Вход: A - КЛЮЧ RAM-Disk -EMM.FreeMemRMD: CALL GET_RAMD_ST - RET C - SCF - RET Z - LD C,A - IN A,(SLOT3) - LD B,A - LD A,SYS_PAGE - OUT (SLOT3),A - LD H,high SYS_PAGE.RAMD_KEYS - LD (HL),0 - LD A,B - OUT (SLOT3),A - LD A,C - ;JR EMM.FreeMem -;------[ -; Освободить блок памяти -; Вход: A - НАЧАЛО ЦЕПОЧКИ -; НЕ ПОРТИТЬ DE!!! -;EMM_FN3M: -EMM.FreeMem: ; [x] теперь нельзя освободить страницу #FF - SCF - INC A - RET Z - DEC A - ; - RET Z - ; - LD C,A - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - - LD H,high SYS_PAGE.RAM_TABLE - LD A,C -.loop: LD L,A - LD A,(HL) ; следующий блок - AND A - JR Z,.error - LD (HL),0 ; Освободить - CP #FF ; Если не конец - JR NZ,.loop ; продолжать - - ; [x] 23/08/2024 восстановление цепочки если освобождали не с начала - LD A,C - LD L,0 - LD BC,256 - CPIR - JR NZ,.exit - DEC HL - LD (HL),#FF - ; -.exit: EX AF,AF' - OUT (SLOT3),A - XOR A ; no error code - RET - -.error: EX AF,AF' - OUT (SLOT3),A - LD A,BIOS.Error.BadNumber - SCF - RET -;----------------------------------------------------------------------; -; - - - -; WARNING!!! не трогать DE -;----------------------------------------------------------------------; -; Получить страницу N ключа K -; Вход: A - КЛЮЧ RAM-Disk, B - номер страницы -; Выход: A - страница -EMM.GetMemPageRMD: - CALL GET_RAMD_ST - RET C - SCF - RET Z - ;JR EMM.GetMemPage -;------[ -; Получить страницу N блока K -; Вход: A - блок, B - номер страницы -; Выход: A - страница, IF CF - A=0 - нет блока, A=FF - END -;EMM_FN4M: -EMM.GetMemPage: - LD L,A - IN A,(SLOT1) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT1),A - - INC B - LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000) -EMM_F4M_L1: - LD A,(HL) - AND A - JR Z,EMM_F4M_ERR - DEC B - JR Z,EMM_F4M_END - LD L,A - CP #FF - JR NZ,EMM_F4M_L1 -EMM_F4M_ERR: - LD L,A - EX AF,AF' - OUT (SLOT1),A - LD A,L - SCF - RET - -EMM_F4M_END: - EX AF,AF' - OUT (SLOT1),A - LD A,L - AND A - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; Получить следующую страницу по FAT -; Вход: A - страница ОЗУ -; Выход: A - следующая страница ОЗУ -;EMM_FN5: -EMM.GetMemPageNext: - LD L,A - AND A - SCF - RET Z - - IN A,(SLOT1) - LD H,A - LD A,SYS_PAGE - OUT (SLOT1),A - - LD A,H - LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000) - LD L,(HL) - OUT (SLOT1),A - LD A,L - AND A - SCF - RET Z - - AND A - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; Получить список страниц блока в HL -; Вход: A - блок, HL - адрес буфера - 256 байт. -; Выход: HL - адрес блока, B - длина блока в страницах ОЗУ -;EMM_FN5M: -EMM.GetMemBlkPages: - PUSH DE - PUSH HL - EX DE,HL - LD B,0 - LD L,A - -.loop: LD A,L - LD (DE),A - INC DE - AND A - JR Z,.error - CP #FF - JR Z,.end - ; - IN A,(SLOT1) - LD C,A - LD A,SYS_PAGE - OUT (SLOT1),A - LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000) - LD L,(HL) - LD A,C - OUT (SLOT1),A - ; - INC B - JR NZ,.loop - -.error: SCF -.end: POP HL - POP DE - RET - -; RAMDRV.EXE вызывает эту функцию с адресом в SLOT1, поэтому лучше так не оптимизировать -; EMM.GetMemBlkPages: -; PUSH DE -; PUSH HL -; EX DE,HL -; LD B,0 -; LD L,A - -; IN A,(SLOT1) -; LD C,A -; LD A,SYS_PAGE -; OUT (SLOT1),A - -; .loop: LD A,L -; LD (DE),A -; INC DE -; AND A -; JR Z,.error -; CP #FF -; JR Z,.end -; ; -; LD H,high +(SYS_PAGE.RAM_TABLE - #4000 - #4000) -; LD L,(HL) -; INC B -; JR NZ,.loop - -; .error: SCF -; .end: LD A,C -; OUT (SLOT1),A -; POP HL -; POP DE -; RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; разделить блок памяти на два блока -; A - блок, B - длина первого блока после разделения -; выход: A - блок 1, B - блок 2 -EMM.DivMemBlocks: - INC B - DEC B - SCF - RET Z - DEC B - LD E,A - CALL EMM.GetMemPage ; получить номер страницы блока - RET C - LD D,A - - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - - LD H,high +(SYS_PAGE.RAM_TABLE); - #4000 - #4000) - LD L,D - LD A,(HL) - LD (HL),#FF - LD B,A - - EX AF,AF' - OUT (SLOT3),A - - LD A,E - AND A - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; слить два блока памяти в один -; А - блок 1, B - блок 2 -; выход: А - блок -EMM.MergeMemBlocks: - LD E,A - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD H,high SYS_PAGE.RAM_TABLE - LD L,E - LD C,B - LD B,0 -.ADD_L: LD A,(HL) - AND A - JR Z,.ADD_ERR - CP #FF - JR Z,.ADD_NEXT - LD L,A - DJNZ .ADD_L - -.ADD_ERR: - EX AF,AF' - OUT (SLOT3),A - SCF - RET - -.ADD_NEXT: LD A,C - AND A - JR Z,.ADD_ERR - LD (HL),A - EX AF,AF' - OUT (SLOT3),A - AND A - LD A,E - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; вход: DE - ram_disk trk_sec, A - RAM-Disk -; выход: HL - адрес, A - page -RAMD_CALC_PAGE: - CP 16 - CCF - RET C ; НЕТ ТАКОГО RAM-Disk - - PUSH AF - LD H,D - LD L,E - ADD HL,HL - ADD HL,HL - LD B,H - LD A,E - OR #C0 - LD C,A ; C - часть адреса, B - страница - POP AF - - CALL EMM.GetMemPageRMD ; ПОЛУЧИТЬ СТРАНИЦУ - LD L,0 - LD H,C - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; Вход: -; A - RAM Disk ID -; Выход: -; A - Number (0..15) -GET_RAMD_NUM: - EX AF,AF' - IN A,(SLOT1) - EX AF,AF' - LD BC,SYS_PAGE*256+SLOT1 - OUT (C),B - - LD HL,SYS_PAGE.RAMD_KEYS-#4000-#4000 - LD BC,SYS_PAGE.RAMD_KEYS.NUM - CPIR - - EX AF,AF' - OUT (SLOT1),A - EX AF,AF' - - SCF - RET PE - - DEC L - LD A,L - SUB low SYS_PAGE.RAMD_KEYS - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; [x] 04/11/2023 -; Вход: -; B = 0: swap to Sp -; B = #FF: swap to ZX -; B = #FE: no swap, only get info -; Выход: -; A - current RAM Drives set -SWAP_RAM_DRIVES: - IN A,(SLOT3) - EX AF,AF' - PUSH AF ;на всякий случай - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD A,(SYS_PAGE.CURRENT_RAM_DRV) - LD C,A - CP B - JR Z,.exit ; уже установлен запрашиваемый набор - ; - LD A,#FE - CP B - JR Z,.exit ; ничего не менять, выдать текущий набор - ; -.swap: LD HL,SYS_PAGE.RAMD_KEYS - LD DE,SYS_PAGE.Sp_RAMD_KEYS - LD B,SYS_PAGE.RAMD_KEYS.NUM -.loop: LD A,(DE) - LD C,A - LD A,(HL) - LD (DE),A - LD A,C - LD (HL),A - INC HL - INC DE - DJNZ .loop - ; - LD A,(SYS_PAGE.CURRENT_RAM_DRV) - XOR #FF - LD (SYS_PAGE.CURRENT_RAM_DRV),A - LD C,A - ; -.exit: EX AF,AF' - OUT (SLOT3),A - POP AF - EX AF,AF' - LD A,C - RET -;----------------------------------------------------------------------; -; - - -; -;----------------------------------------------------------------------; -; на выходе при А = 0 должен быть установлен флаг Z -; не убивает DE и BC -GET_RAMD_ST: - CP SYS_PAGE.RAMD_KEYS.NUM - CCF - RET C - - PUSH BC - - LD HL,SYS_PAGE.RAMD_KEYS-#4000-#4000 - ADD A,L - LD L,A - - IN A,(SLOT1) - LD B,A - LD A,SYS_PAGE - OUT (SLOT1),A - LD C,(HL) - LD A,B - OUT (SLOT1),A - LD A,C - POP BC - AND A - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; RAM-Disk A, BLK - B -BLK_TO_RAMD: - CP SYS_PAGE.RAMD_KEYS.NUM - CCF - RET C - - PUSH HL - LD L,A - - IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,L - LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 - ADD A,L - LD L,A - LD A,(HL) ; ключ блока - AND A - JR NZ,BLK_BUSY ; RAM-Disk занят - ошибка - LD (HL),B - - LD A,C - OUT (SLOT3),A - - LD A,B - AND A - POP HL - RET - ; -BLK_BUSY: - LD A,C - OUT (SLOT3),A - SCF - POP HL - LD A,L - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; -; RAM-Disk A -RAMD_CLEAR: - CP SYS_PAGE.RAMD_KEYS.NUM - CCF - RET C - - PUSH HL - LD L,A - - IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,L - LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 ; RAM-Disk свободен - ADD A,L - LD L,A - LD B,A ; запомнить удаляемый рамдиск - LD A,(HL) - AND A - JR Z,BLK_BUSY ; возврат с ошибкой - LD (HL),0 - LD A,C - OUT (SLOT3),A - - AND A - POP HL - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; !FIXIT SAFE_RGADR -;RAMD_R_W: -; ╔════════════════════════════════════════════════╗ -; ║ RD/WR SECTOR ║\ -; ║ HL - BUFER ║\ -; ║ DE - ABS sector в 256b блоках ║\ -; ║ B - число данных в 256b блоках ║\ -; ║ A - block RAM ║\ -; ║ A' - команда чтение/запись/чтение ROM Disk ║\ -; ║ 0 - read, 255 - write, 70 - read ROM DISK║\ -; ║ ** NOT USED TR-DOS VARS ** ║\ -; ╚════════════════════════════════════════════════╝\ -; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -BLK_RD_WR: AND A - SCF - RET Z - ; - AND A - INC B - DEC B - RET Z - ; сохраняем состояние прерываний - LD C,A - LD A,R - PUSH AF - ; сохраняем PORT_Y - IN A,(PORT_Y) - PUSH AF - LD A,#C0 - OUT (PORT_Y),A - ; - LD A,C - DI - CALL .start - EX AF,AF' - ; восстанавливаем PORT_Y - POP AF - OUT (PORT_Y),A - ; восстанавливаем состояние прерываний - POP AF - JP PO,.noInterrupts - EI -.noInterrupts: EX AF,AF' - RET -; ; -.start: EX AF,AF' - AND A ; 0 - read - JR Z,.reset_Z - CP #FF ; write - JR Z,.keep_Z - ; - CP 5 ; old read - JR Z,.reset_Z - CP 6 ; old write - JR Z,.keep_Z - ; - CP #46 - JP Z,ROM_DISK - ; - EX AF,AF' - SCF - RET - ; -.reset_Z: INC A ; set Z for WRITE -.keep_Z: EX AF,AF' - ; - PUSH HL - PUSH BC - LD C,SLOT1 - IN B,(C) - LD H,A - LD A,SYS_PAGE - OUT (SLOT1),A - LD A,H - ; - LD H,high +(SYS_PAGE.RAM_TABLE-#4000-#4000) - LD L,A - INC D -.RAMD_LOOP_D: DEC D - JR Z,.NOT_FOUR_BLK - LD L,(HL) - LD L,(HL) - LD L,(HL) - LD L,(HL) - JP .RAMD_LOOP_D - ; -.NOT_FOUR_BLK: LD A,E -.loop: SUB #40 - JR C,.NOT_ONE_BLK - LD L,(HL) - JP .loop - ; -.NOT_ONE_BLK: AND #3F - LD D,A ; DE - ADRESS in RAM-Disk - LD E,0 - LD A,L ; L - текущий банк RAM-Disk - OUT (C),B ; восстановить страницу - POP BC ; длина данных - POP HL ; адрес буфера - BIT 7,H - JR NZ,.BLK_PAGE1 - ; - LD C,SLOT3 - IN C,(C) - OUT (SLOT3),A - SET 7,D - SET 6,D - JP .BLK_CONT1 - ; -.BLK_PAGE1: LD C,SLOT1 - IN C,(C) - OUT (SLOT1),A - RES 7,D - SET 6,D - ; DE - RamDisk, HL - data -.BLK_CONT1: EX AF,AF' - JR Z,.NO_EX_RW1 ; WRITE - EX DE,HL ; for READ -.NO_EX_RW1: EX AF,AF' - LD A,16 - ; -.BLK_LL1: DUP 16 - LDI - EDUP - DEC A - JR NZ,.BLK_LL1 - ; - EX AF,AF' - JR Z,.NO_EX_RW2 ; WRITE - EX DE,HL ; for READ -.NO_EX_RW2: EX AF,AF' ; DEC C прокрутился 256 раз и вернулся - ; A = 0 - CP B - JP Z,.BLK_EXIT_1 - ; - BIT 6,D - JP NZ,.BLK_CONT1 - ; - BIT 7,D - JR Z,.BLK_PAGE3_X - ; - IN A,(SLOT1) - LD E,A - LD D,high +(SYS_PAGE.RAM_TABLE-#4000-#4000) - LD A,SYS_PAGE - OUT (SLOT1),A - LD A,(DE) - OUT (SLOT1),A - LD DE,#4000 - JP .BLK_CONT1 - ; -.BLK_PAGE3_X: IN A,(SLOT3) - LD E,A - LD D,high SYS_PAGE.RAM_TABLE - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(DE) - OUT (SLOT3),A - LD DE,#C000 - ; - BIT 7,H - JP Z,.BLK_CONT1 - ; - LD E,A - LD A,C - OUT (SLOT3),A - IN A,(SLOT1) - LD C,A - LD A,E - OUT (SLOT1),A - LD DE,#4000 - JP .BLK_CONT1 - ; -.BLK_EXIT_1: LD A,D - DEC A - RLCA - LD A,C - JR C,.BLK_EXIT_2 - OUT (SLOT1),A - RET - ; -.BLK_EXIT_2: OUT (SLOT3),A - AND A - RET -;----------------------------------------------------------------------; -; - - - -; -;----------------------------------------------------------------------; - ;**************************************** - ;!!!!! READ_ROM_PAGE_X чтение последних - ; 256 байтов ПЗУ в служебную страницу зачем-то - ; READ_ROM_PAGE_X: - ; LD DE,0 - ; LD BC,#100 ; один сектор - ; PUSH DE - ; PUSH BC - ; LD HL,#3F00 - ; LD DE,#FF00 - ; LD A,#1F ; last page ROM - ; JR ROM_DISK.loopRead - ;**************************************** - -; Чтение с ROM-Disk -; HL - адрес, куда читать -; DE - номер сектора (считать по 256b сектор) -; B - число секторов -; A' - размер сектора (1 - 256b, 2 - 512 b) -ROM_DISK: EX AF,AF' - LD C,0 ; счетчик - DEC A - JR Z,.loop - ; - DEC A - SCF - RET NZ - ; - EX DE,HL - ADD HL,HL - EX DE,HL - LD A,B - ADD A,A - LD B,A - RET C - ; - DI - CALL .loop - RET C - ; - AND A - RR D - RR E - XOR A - RET - ; -.loop: PUSH DE ; номер сектора - PUSH BC - ; - LD A,E - AND #3F ; ADRESS in ROM-Page - PUSH AF ; сохранить адрес - ; - EX DE,HL ; DE - адрес буфера - ADD HL,HL - ADD HL,HL ; H - номер банки - ; [ ] без привязки ром-диска к align 256 - ;LD A,(ROM_DISK.Pages.Number) - ;INC H - ;CP H - ; - LD C,H - LD B,0 - LD HL,ROM_DISK.Pages - ADD HL,BC - ; - LD A,(ROM_DISK.Pages.Number) ; rdlow-ok - INC C - CP C - ; - ;LD L,H - ;LD H,high ROM_DISK.Pages.Number ; ROM-Disk pages! - ; - LD A,(HL) ; PAGE-ROM - POP HL ; восстановить адрес в ROM-Page - LD L,0 ; если далеко захотели - выход с ошибкой - JR C,.errorExit ; ROM-Disk-end - ; DE - буфер - ; HL - адрес в ROM - ; B - число секторов - ; A - ROM-Page -.loopRead: PUSH HL ; откуда - PUSH DE ; куда - - LD HL,-.stackDepth-.readProcedure.size ; memory stack use! - ADD HL,SP ; stack - - PUSH HL ; адрес программы .readProcedure - - LD DE,.readProcedure ; перенести программу на стек - EX DE,HL - LD BC,.readProcedure.size - LDIR ; программа на стеке - LD BC,#100 ; длина сектора - RET ; исполнить программу .readProcedure, на стеке адреса буфера и ROM - ; DE - next address - ; HL - ROM address -.readNext: POP BC ; число секторов - - INC C ; счетчик считанных секторов - DEC B ; сектора кончились? - - JR Z,.normExit - BIT 6,H ; чтение не закончено - - PUSH BC ; сохранить счетчики - JR Z,.loopRead ; читать дальше - POP BC - - POP HL ; номер сектора - - LD A,B - LD B,0 - ADD HL,BC - LD B,A ; вычислить след.сектор - - EX DE,HL ; теперь HL - адрес, DE сектор, B - сколько еще читать - - JP .loop ; начать все снова! -; чтение закончено -.normExit: POP HL ; сектор, откуда велось чтение - ADD HL,BC ; по возврату: HL - след.адрес - EX DE,HL ; DE - след.сектор - AND A - RET -; ошибка -.errorExit: ; !TODO сделать, чтоб на выходе показывалось количество прочитанных секторов - POP BC - POP DE - SCF - RET -; процедура, переносимая на стек для чтения из ROM-Disk -; осторожнее с PUSH, если надо много, то увеличить .stackDepth -.readProcedure: - POP DE ; куда - POP HL ; откуда - OUT (ROM.SLOT0),A ; ROM_PAGE - LDIR ; здесь читается из ROM-Disk - LD B,A - XOR A - OUT (ROM.SLOT0),A - OUT (SYS_PORT.ROM),A - LD A,B - JP .readNext -.stackDepth EQU 8 ; расстояние от конца процедуры до вершины стека. -.readProcedure.size EQU $-.readProcedure -;----------------------------------------------------------------------; +;===================[ Функции распределения памяти ]===================; +; Выход: BC - FREE MEM в блоках по 16k, HL - FULL MEM +;!TEST все SLOT2 на SLOT1 +; +;----------------------------------------------------------------------; +; Определение объема памяти. +; Выход: BC - FREE MEM в блоках по 16k, HL - FULL MEM +EMM.GetMemSize: IN A,(SLOT1) + LD B,A + LD A,SYS_PAGE + OUT (SLOT1),A + XOR A + LD C,A + LD HL,SYS_PAGE.RAM_TABLE-#4000-#4000 + ; +.loop: DEC L + JR Z,.exit + CP (HL) + JR NZ,.loop + INC C + JP .loop + ; +.exit: LD HL,#100 ;!HARDCODE max mem pages + LD A,B + ; L=0 + LD B,L + OUT (SLOT1),A + RET + + /* +.loop: LD A,(HL) + INC L + JR Z,.exit + AND A + JR NZ,.loop + INC C + JR .loop +.exit: LD HL,#100 ;!HARDCODE max mem pages + LD A,B + LD B,0 + OUT (SLOT1),A + RET + */ +;----------------------------------------------------------------------; +; + +;!!!!! Если используется SLOT3 со своими страницами, то не пользоваться +; стеком, там может быть SP в режиме спектрума + +; +;----------------------------------------------------------------------; +; Инициализация распределения памяти. +EMM.InitMem: PUSH BC + PUSH HL + PUSH DE + + IN A,(SLOT3) + LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD HL,SYS_PAGE.RAM_TABLE ; Адрес RAM FAT в ОЗУ. + ; обнуляем таблицу + XOR A +.loopFree: LD (HL),A + INC L + JR NZ,.loopFree + ; резервируем спец.страницы и страницы ZX + ;LD B,RESERVED_PAGES.Blocks + LD DE,RESERVED_PAGES ; таблица занятых системных страниц +.loop: LD A,(DE) + CP #FF + JR Z,.exitLoop + ; +.loopBlk: INC DE + LD L,A + LD A,(DE) + LD (HL),A + CP #FF + JR NZ,.loopBlk + ; +.exitLoop: ;INC DE + ;DJNZ .loop + LD L,A + LD (HL),A + ; Инициализация ключей RAM-Disks + XOR A + LD HL,SYS_PAGE.RAMD_KEYS + LD B,SYS_PAGE.RAMD_KEYS.NUM +.loop2: LD (HL),A + INC L + DJNZ .loop2 + ; [x] 04/11/2023 + LD HL,SYS_PAGE.Sp_RAMD_KEYS + LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM +.loop3: LD (HL),A + INC L + DJNZ .loop3 + ; + LD A,C + OUT (SLOT3),A + POP DE + POP HL + POP BC + RET +;---------------------------------------------------------------------[] +RESERVED_PAGES: ;[x] free zx pages! + ; Block #1 - можно освободить по ID 1 + ;DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; for Spectrum + ; эмулятор ПЗУ + ;DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION + ;DB #FF ; End of the block + ; + ; Block #2 - нельзя освобождать + DB ZX_PAGE.SLOT0,ZX_PAGE.SLOT2,ZX_PAGE.SLOT1 ; for Spectrum and BIOS starting + DB DCP_PAGE ; Ports map + DB Spec_Page ; Page for Spectrum mode + ; Screen pages + DB #50,#51,#52,#53,#54,#55,#56,#57 + DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F + ; + ;DB MODE_PAGE ; ????? + DB SP_SND.CBL.BUFFER_PAGE ; Page for CBL audio + DB SYS_PAGE ; Page for system (BIOS) variables + DB #FF ; End of the block + ; +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; Получить блок памяти N bytes, +; Вход: B - число необходимых блоков +; Выход: L,A - КЛЮЧ RAM-Disk/код ошибки +; CF - признак ошибки +;EMM_FN2M: +EMM.GetMem: PUSH BC + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD HL,SYS_PAGE.RAM_TABLE + XOR A + LD C,#FF ; Метка конца рамблока + ; Заполнить RAM_TABLE +.loop2: DEC L + JR Z,.error_no_mem + CP (HL) + JR NZ,.loop2 + LD (HL),C + LD C,L + DJNZ .loop2 + ; L = указатель цепочки. + EX AF,AF' + OUT (SLOT3),A + LD A,L + AND A + POP BC + RET + ; +.error_no_mem: EX AF,AF' + OUT (SLOT3),A + LD A,C + CALL EMM.FreeMem + LD L,BIOS.Error.EMM.NoMemory + LD A,L + SCF + POP BC + RET + + + + /* +EMM.GetMem: PUSH BC + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD C,B ; сохранить число нужных блоков + LD HL,SYS_PAGE.RAM_TABLE + ; Цикл проверки наличия нужных блоков. + XOR A +.loop: DEC L + JR Z,.noRAM + ; LD A,(HL) + ; AND A + CP (HL) + JR NZ,.loop + DJNZ .loop + ; Место есть ! + LD B,C ; Восстановить нужный объем диска + LD C,#FF ; МЕТКА КОНЦА RAM-Disk + LD L,A ;low SYS_PAGE.RAM_TABLE + ; Заполнить RAM_TABLE + ; A = 0 +.loop2: DEC L + ; LD A,(HL) + ; AND A + CP (HL) + JR NZ,.loop2 + LD (HL),C + LD C,L + DJNZ .loop2 + ; L = указатель цепочки. + EX AF,AF' + OUT (SLOT3),A + LD A,L + AND A + POP BC + RET + ; +.noRAM: LD L,BIOS.Error.EMM.NoMemory + EX AF,AF' + OUT (SLOT3),A + LD A,L + SCF + POP BC + RET + */ +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; Получить блок памяти N bytes, для RAM-Disk A +; Вход: B - число необходимых блоков, A - RAM-Disk +; Выход: L,A - КЛЮЧ RAM-Disk/код ошибки +; CF - признак ошибки +;EMM.GetMem: +EMM.GetMemRMD: PUSH AF + CALL EMM.GetMem + JR C,.error1 + ; + LD B,A + POP AF + CALL BLK_TO_RAMD + RET NC + ; +.error2: LD L,BIOS.Error.BadNumber ; RAM-Disk занят + LD A,L + RET + ; +.error1: POP HL ; чистим стек + LD L,A + RET +;----------------------------------------------------------------------; +; + + + +;----------------------------------------------------------------------; +; Освободить блок памяти ключа K +; Вход: A - КЛЮЧ RAM-Disk +EMM.FreeMemRMD: CALL GET_RAMD_ST + RET C + SCF + RET Z + LD C,A + IN A,(SLOT3) + LD B,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD H,high SYS_PAGE.RAMD_KEYS + LD (HL),0 + LD A,B + OUT (SLOT3),A + LD A,C + ;JR EMM.FreeMem +;------[ +; Освободить блок памяти +; Вход: A - НАЧАЛО ЦЕПОЧКИ +; НЕ ПОРТИТЬ DE!!! +;EMM_FN3M: +EMM.FreeMem: ; [x] теперь нельзя освободить страницу #FF + SCF + INC A + RET Z + DEC A + ; + RET Z + ; + LD C,A + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + + LD H,high SYS_PAGE.RAM_TABLE + LD A,C +.loop: LD L,A + LD A,(HL) ; следующий блок + AND A + JR Z,.error + LD (HL),0 ; Освободить + CP #FF ; Если не конец + JR NZ,.loop ; продолжать + + ; [x] 23/08/2024 восстановление цепочки если освобождали не с начала + LD A,C + LD L,0 + LD BC,256 + CPIR + JR NZ,.exit + DEC HL + LD (HL),#FF + ; +.exit: EX AF,AF' + OUT (SLOT3),A + XOR A ; no error code + RET + +.error: EX AF,AF' + OUT (SLOT3),A + LD A,BIOS.Error.BadNumber + SCF + RET +;----------------------------------------------------------------------; +; + + + +; WARNING!!! не трогать DE +;----------------------------------------------------------------------; +; Получить страницу N ключа K +; Вход: A - КЛЮЧ RAM-Disk, B - номер страницы +; Выход: A - страница +EMM.GetMemPageRMD: + CALL GET_RAMD_ST + RET C + SCF + RET Z + ;JR EMM.GetMemPage +;------[ +; Получить страницу N блока K +; Вход: A - блок, B - номер страницы +; Выход: A - страница, IF CF - A=0 - нет блока, A=FF - END +;EMM_FN4M: +EMM.GetMemPage: + LD L,A + IN A,(SLOT1) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT1),A + + INC B + LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000) +EMM_F4M_L1: + LD A,(HL) + AND A + JR Z,EMM_F4M_ERR + DEC B + JR Z,EMM_F4M_END + LD L,A + CP #FF + JR NZ,EMM_F4M_L1 +EMM_F4M_ERR: + LD L,A + EX AF,AF' + OUT (SLOT1),A + LD A,L + SCF + RET + +EMM_F4M_END: + EX AF,AF' + OUT (SLOT1),A + LD A,L + AND A + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; Получить следующую страницу по FAT +; Вход: A - страница ОЗУ +; Выход: A - следующая страница ОЗУ +;EMM_FN5: +EMM.GetMemPageNext: + LD L,A + AND A + SCF + RET Z + + IN A,(SLOT1) + LD H,A + LD A,SYS_PAGE + OUT (SLOT1),A + + LD A,H + LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000) + LD L,(HL) + OUT (SLOT1),A + LD A,L + AND A + SCF + RET Z + + AND A + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; Получить список страниц блока в HL +; Вход: A - блок, HL - адрес буфера - 256 байт. +; Выход: HL - адрес блока, B - длина блока в страницах ОЗУ +;EMM_FN5M: +EMM.GetMemBlkPages: + PUSH DE + PUSH HL + EX DE,HL + LD B,0 + LD L,A + +.loop: LD A,L + LD (DE),A + INC DE + AND A + JR Z,.error + CP #FF + JR Z,.end + ; + IN A,(SLOT1) + LD C,A + LD A,SYS_PAGE + OUT (SLOT1),A + LD H,high (SYS_PAGE.RAM_TABLE-#4000-#4000) + LD L,(HL) + LD A,C + OUT (SLOT1),A + ; + INC B + JR NZ,.loop + +.error: SCF +.end: POP HL + POP DE + RET + +; RAMDRV.EXE вызывает эту функцию с адресом в SLOT1, поэтому лучше так не оптимизировать +; EMM.GetMemBlkPages: +; PUSH DE +; PUSH HL +; EX DE,HL +; LD B,0 +; LD L,A + +; IN A,(SLOT1) +; LD C,A +; LD A,SYS_PAGE +; OUT (SLOT1),A + +; .loop: LD A,L +; LD (DE),A +; INC DE +; AND A +; JR Z,.error +; CP #FF +; JR Z,.end +; ; +; LD H,high +(SYS_PAGE.RAM_TABLE - #4000 - #4000) +; LD L,(HL) +; INC B +; JR NZ,.loop + +; .error: SCF +; .end: LD A,C +; OUT (SLOT1),A +; POP HL +; POP DE +; RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; разделить блок памяти на два блока +; A - блок, B - длина первого блока после разделения +; выход: A - блок 1, B - блок 2 +EMM.DivMemBlocks: + INC B + DEC B + SCF + RET Z + DEC B + LD E,A + CALL EMM.GetMemPage ; получить номер страницы блока + RET C + LD D,A + + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + + LD H,high +(SYS_PAGE.RAM_TABLE); - #4000 - #4000) + LD L,D + LD A,(HL) + LD (HL),#FF + LD B,A + + EX AF,AF' + OUT (SLOT3),A + + LD A,E + AND A + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; слить два блока памяти в один +; А - блок 1, B - блок 2 +; выход: А - блок +EMM.MergeMemBlocks: + LD E,A + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD H,high SYS_PAGE.RAM_TABLE + LD L,E + LD C,B + LD B,0 +.ADD_L: LD A,(HL) + AND A + JR Z,.ADD_ERR + CP #FF + JR Z,.ADD_NEXT + LD L,A + DJNZ .ADD_L + +.ADD_ERR: + EX AF,AF' + OUT (SLOT3),A + SCF + RET + +.ADD_NEXT: LD A,C + AND A + JR Z,.ADD_ERR + LD (HL),A + EX AF,AF' + OUT (SLOT3),A + AND A + LD A,E + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; вход: DE - ram_disk trk_sec, A - RAM-Disk +; выход: HL - адрес, A - page +RAMD_CALC_PAGE: + CP 16 + CCF + RET C ; НЕТ ТАКОГО RAM-Disk + + PUSH AF + LD H,D + LD L,E + ADD HL,HL + ADD HL,HL + LD B,H + LD A,E + OR #C0 + LD C,A ; C - часть адреса, B - страница + POP AF + + CALL EMM.GetMemPageRMD ; ПОЛУЧИТЬ СТРАНИЦУ + LD L,0 + LD H,C + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; Вход: +; A - RAM Disk ID +; Выход: +; A - Number (0..15) +GET_RAMD_NUM: + EX AF,AF' + IN A,(SLOT1) + EX AF,AF' + LD BC,SYS_PAGE*256+SLOT1 + OUT (C),B + + LD HL,SYS_PAGE.RAMD_KEYS-#4000-#4000 + LD BC,SYS_PAGE.RAMD_KEYS.NUM + CPIR + + EX AF,AF' + OUT (SLOT1),A + EX AF,AF' + + SCF + RET PE + + DEC L + LD A,L + SUB low SYS_PAGE.RAMD_KEYS + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; [x] 04/11/2023 +; Вход: +; B = 0: swap to Sp +; B = #FF: swap to ZX +; B = #FE: no swap, only get info +; Выход: +; A - current RAM Drives set +SWAP_RAM_DRIVES: + IN A,(SLOT3) + EX AF,AF' + PUSH AF ;на всякий случай + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD A,(SYS_PAGE.CURRENT_RAM_DRV) + LD C,A + CP B + JR Z,.exit ; уже установлен запрашиваемый набор + ; + LD A,#FE + CP B + JR Z,.exit ; ничего не менять, выдать текущий набор + ; +.swap: LD HL,SYS_PAGE.RAMD_KEYS + LD DE,SYS_PAGE.Sp_RAMD_KEYS + LD B,SYS_PAGE.RAMD_KEYS.NUM +.loop: LD A,(DE) + LD C,A + LD A,(HL) + LD (DE),A + LD A,C + LD (HL),A + INC HL + INC DE + DJNZ .loop + ; + LD A,(SYS_PAGE.CURRENT_RAM_DRV) + XOR #FF + LD (SYS_PAGE.CURRENT_RAM_DRV),A + LD C,A + ; +.exit: EX AF,AF' + OUT (SLOT3),A + POP AF + EX AF,AF' + LD A,C + RET +;----------------------------------------------------------------------; +; + + +; +;----------------------------------------------------------------------; +; на выходе при А = 0 должен быть установлен флаг Z +; не убивает DE и BC +GET_RAMD_ST: + CP SYS_PAGE.RAMD_KEYS.NUM + CCF + RET C + + PUSH BC + + LD HL,SYS_PAGE.RAMD_KEYS-#4000-#4000 + ADD A,L + LD L,A + + IN A,(SLOT1) + LD B,A + LD A,SYS_PAGE + OUT (SLOT1),A + LD C,(HL) + LD A,B + OUT (SLOT1),A + LD A,C + POP BC + AND A + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; RAM-Disk A, BLK - B +BLK_TO_RAMD: + CP SYS_PAGE.RAMD_KEYS.NUM + CCF + RET C + + PUSH HL + LD L,A + + IN A,(SLOT3) + LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,L + LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 + ADD A,L + LD L,A + LD A,(HL) ; ключ блока + AND A + JR NZ,BLK_BUSY ; RAM-Disk занят - ошибка + LD (HL),B + + LD A,C + OUT (SLOT3),A + + LD A,B + AND A + POP HL + RET + ; +BLK_BUSY: + LD A,C + OUT (SLOT3),A + SCF + POP HL + LD A,L + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; +; RAM-Disk A +RAMD_CLEAR: + CP SYS_PAGE.RAMD_KEYS.NUM + CCF + RET C + + PUSH HL + LD L,A + + IN A,(SLOT3) + LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,L + LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 ; RAM-Disk свободен + ADD A,L + LD L,A + LD B,A ; запомнить удаляемый рамдиск + LD A,(HL) + AND A + JR Z,BLK_BUSY ; возврат с ошибкой + LD (HL),0 + LD A,C + OUT (SLOT3),A + + AND A + POP HL + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +;RAMD_R_W: +; ╔════════════════════════════════════════════════╗ +; ║ RD/WR SECTOR ║\ +; ║ HL - BUFER ║\ +; ║ DE - ABS sector в 256b блоках ║\ +; ║ B - число данных в 256b блоках ║\ +; ║ A - block RAM ║\ +; ║ A' - команда чтение/запись/чтение ROM Disk ║\ +; ║ 0 - read, 255 - write, 70 - read ROM DISK║\ +; ║ ** NOT USED TR-DOS VARS ** ║\ +; ╚════════════════════════════════════════════════╝\ +; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +BLK_RD_WR: AND A + SCF + RET Z + ; + AND A + INC B + DEC B + RET Z + ; сохраняем состояние прерываний + LD C,A + LD A,R + PUSH AF + ; сохраняем PORT_Y + IN A,(PORT_Y) + PUSH AF + LD A,#C0 + OUT (PORT_Y),A + ; + LD A,C + DI + CALL .start + EX AF,AF' + ; восстанавливаем PORT_Y + POP AF + OUT (PORT_Y),A + ; восстанавливаем состояние прерываний + POP AF + JP PO,.noInterrupts + EI +.noInterrupts: EX AF,AF' + RET +; ; +.start: EX AF,AF' + AND A ; 0 - read + JR Z,.reset_Z + CP #FF ; write + JR Z,.keep_Z + ; + CP 5 ; old read + JR Z,.reset_Z + CP 6 ; old write + JR Z,.keep_Z + ; + CP #46 + JP Z,ROM_DISK + ; + EX AF,AF' + SCF + RET + ; +.reset_Z: INC A ; set Z for WRITE +.keep_Z: EX AF,AF' + ; + PUSH HL + PUSH BC + LD C,SLOT1 + IN B,(C) + LD H,A + LD A,SYS_PAGE + OUT (SLOT1),A + LD A,H + ; + LD H,high +(SYS_PAGE.RAM_TABLE-#4000-#4000) + LD L,A + INC D +.RAMD_LOOP_D: DEC D + JR Z,.NOT_FOUR_BLK + LD L,(HL) + LD L,(HL) + LD L,(HL) + LD L,(HL) + JP .RAMD_LOOP_D + ; +.NOT_FOUR_BLK: LD A,E +.loop: SUB #40 + JR C,.NOT_ONE_BLK + LD L,(HL) + JP .loop + ; +.NOT_ONE_BLK: AND #3F + LD D,A ; DE - ADRESS in RAM-Disk + LD E,0 + LD A,L ; L - текущий банк RAM-Disk + OUT (C),B ; восстановить страницу + POP BC ; длина данных + POP HL ; адрес буфера + BIT 7,H + JR NZ,.BLK_PAGE1 + ; + LD C,SLOT3 + IN C,(C) + OUT (SLOT3),A + SET 7,D + SET 6,D + JP .BLK_CONT1 + ; +.BLK_PAGE1: LD C,SLOT1 + IN C,(C) + OUT (SLOT1),A + RES 7,D + SET 6,D + ; DE - RamDisk, HL - data +.BLK_CONT1: EX AF,AF' + JR Z,.NO_EX_RW1 ; WRITE + EX DE,HL ; for READ +.NO_EX_RW1: EX AF,AF' + LD A,16 + ; +.BLK_LL1: DUP 16 + LDI + EDUP + DEC A + JR NZ,.BLK_LL1 + ; + EX AF,AF' + JR Z,.NO_EX_RW2 ; WRITE + EX DE,HL ; for READ +.NO_EX_RW2: EX AF,AF' ; DEC C прокрутился 256 раз и вернулся + ; A = 0 + CP B + JP Z,.BLK_EXIT_1 + ; + BIT 6,D + JP NZ,.BLK_CONT1 + ; + BIT 7,D + JR Z,.BLK_PAGE3_X + ; + IN A,(SLOT1) + LD E,A + LD D,high +(SYS_PAGE.RAM_TABLE-#4000-#4000) + LD A,SYS_PAGE + OUT (SLOT1),A + LD A,(DE) + OUT (SLOT1),A + LD DE,#4000 + JP .BLK_CONT1 + ; +.BLK_PAGE3_X: IN A,(SLOT3) + LD E,A + LD D,high SYS_PAGE.RAM_TABLE + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(DE) + OUT (SLOT3),A + LD DE,#C000 + ; + BIT 7,H + JP Z,.BLK_CONT1 + ; + LD E,A + LD A,C + OUT (SLOT3),A + IN A,(SLOT1) + LD C,A + LD A,E + OUT (SLOT1),A + LD DE,#4000 + JP .BLK_CONT1 + ; +.BLK_EXIT_1: LD A,D + DEC A + RLCA + LD A,C + JR C,.BLK_EXIT_2 + OUT (SLOT1),A + RET + ; +.BLK_EXIT_2: OUT (SLOT3),A + AND A + RET +;----------------------------------------------------------------------; +; + + + +; +;----------------------------------------------------------------------; + ;**************************************** + ;!!!!! READ_ROM_PAGE_X чтение последних + ; 256 байтов ПЗУ в служебную страницу зачем-то + ; READ_ROM_PAGE_X: + ; LD DE,0 + ; LD BC,#100 ; один сектор + ; PUSH DE + ; PUSH BC + ; LD HL,#3F00 + ; LD DE,#FF00 + ; LD A,#1F ; last page ROM + ; JR ROM_DISK.loopRead + ;**************************************** + +; Чтение с ROM-Disk +; HL - адрес, куда читать +; DE - номер сектора (считать по 256b сектор) +; B - число секторов +; A' - размер сектора (1 - 256b, 2 - 512 b) +ROM_DISK: EX AF,AF' + LD C,0 ; счетчик + DEC A + JR Z,.loop + ; + DEC A + SCF + RET NZ + ; + EX DE,HL + ADD HL,HL + EX DE,HL + LD A,B + ADD A,A + LD B,A + RET C + ; + DI + CALL .loop + RET C + ; + AND A + RR D + RR E + XOR A + RET + ; +.loop: PUSH DE ; номер сектора + PUSH BC + ; + LD A,E + AND #3F ; ADRESS in ROM-Page + PUSH AF ; сохранить адрес + ; + EX DE,HL ; DE - адрес буфера + ADD HL,HL + ADD HL,HL ; H - номер банки + ; [ ] без привязки ром-диска к align 256 + ;LD A,(ROM_DISK.Pages.Number) + ;INC H + ;CP H + ; + LD C,H + LD B,0 + LD HL,ROM_DISK.Pages + ADD HL,BC + ; + LD A,(ROM_DISK.Pages.Number) ; rdlow-ok + INC C + CP C + ; + ;LD L,H + ;LD H,high ROM_DISK.Pages.Number ; ROM-Disk pages! + ; + LD A,(HL) ; PAGE-ROM + POP HL ; восстановить адрес в ROM-Page + LD L,0 ; если далеко захотели - выход с ошибкой + JR C,.errorExit ; ROM-Disk-end + ; DE - буфер + ; HL - адрес в ROM + ; B - число секторов + ; A - ROM-Page +.loopRead: PUSH HL ; откуда + PUSH DE ; куда + + LD HL,-.stackDepth-.readProcedure.size ; memory stack use! + ADD HL,SP ; stack + + PUSH HL ; адрес программы .readProcedure + + LD DE,.readProcedure ; перенести программу на стек + EX DE,HL + LD BC,.readProcedure.size + LDIR ; программа на стеке + LD BC,#100 ; длина сектора + RET ; исполнить программу .readProcedure, на стеке адреса буфера и ROM + ; DE - next address + ; HL - ROM address +.readNext: POP BC ; число секторов + + INC C ; счетчик считанных секторов + DEC B ; сектора кончились? + + JR Z,.normExit + BIT 6,H ; чтение не закончено + + PUSH BC ; сохранить счетчики + JR Z,.loopRead ; читать дальше + POP BC + + POP HL ; номер сектора + + LD A,B + LD B,0 + ADD HL,BC + LD B,A ; вычислить след.сектор + + EX DE,HL ; теперь HL - адрес, DE сектор, B - сколько еще читать + + JP .loop ; начать все снова! +; чтение закончено +.normExit: POP HL ; сектор, откуда велось чтение + ADD HL,BC ; по возврату: HL - след.адрес + EX DE,HL ; DE - след.сектор + AND A + RET +; ошибка +.errorExit: ; !TODO сделать, чтоб на выходе показывалось количество прочитанных секторов + POP BC + POP DE + SCF + RET +; процедура, переносимая на стек для чтения из ROM-Disk +; осторожнее с PUSH, если надо много, то увеличить .stackDepth +.readProcedure: + POP DE ; куда + POP HL ; откуда + OUT (ROM.SLOT0),A ; ROM_PAGE + LDIR ; здесь читается из ROM-Disk + LD B,A + XOR A + OUT (ROM.SLOT0),A + OUT (SYS_PORT.ROM),A + LD A,B + JP .readNext +.stackDepth EQU 8 ; расстояние от конца процедуры до вершины стека. +.readProcedure.size EQU $-.readProcedure +;----------------------------------------------------------------------; ; \ No newline at end of file diff --git a/src/bios/exp/FUNC_SCREEN.ASM b/bios/exp/FUNC_SCREEN.ASM similarity index 93% rename from src/bios/exp/FUNC_SCREEN.ASM rename to bios/exp/FUNC_SCREEN.ASM index 9da51e1..1af0f13 100644 --- a/src/bios/exp/FUNC_SCREEN.ASM +++ b/bios/exp/FUNC_SCREEN.ASM @@ -1,1145 +1,1145 @@ - -;****************************************************************** -; вход: DE - вертикаль, HL - горизонталь, -; B - цвет точки, A - экран -PIC_FN1: - AND A - SCF - RET NZ - CCF - - IN A,(PORT_Y) - PUSH AF - - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - - LD A,(WIN_ID_0.GRAF_Y) - ADD A,E - OUT (PORT_Y),A - LD A,B - LD BC,(WIN_ID_0.GRAF_X) - ADD HL,BC - LD B,A - LD A,#50 - OUT (SLOT3),A - LD (HL),A - EX AF,AF' - OUT (SLOT3),A - - POP AF - OUT (PORT_Y),A - RET - -; вход: DE - вертикаль, HL - горизонталь. -; IX - длина линии в точках не 0 !!! -; FILL - by A -; ????? -PIC_FN2: - LD D,A - IN A,(SLOT1) - EX AF,AF' - - LD A,B - ADD A,#50 - OUT (SLOT1),A - - BIT 0,B - LD BC,#40+#4000 - JR Z,PIC_FN2_NO_2ND - LD BC,#40+320+#4000 -PIC_FN2_NO_2ND: - ADD HL,BC - - LD A,E - OUT (PORT_Y),A - - LD A,XH - AND A - JR Z,PIC_FN2_NO256 -PIC_FN2_256L: - LD B,64 -PIC_FN2_256: - LD (HL),D - INC HL - LD (HL),D - INC HL - LD (HL),D - INC HL - LD (HL),D - INC HL - DJNZ PIC_FN2_256 - DEC A - JR NZ,PIC_FN2_256L - -PIC_FN2_NO256: - LD B,XL - AND A - RR B - JR NC,PIC_FN2_NO1 - LD (HL),D - INC HL - AND A -PIC_FN2_NO1: - RR B - JR NC,PIC_FN2_NO2 - LD (HL),D - INC HL - LD (HL),D - INC HL - AND A -PIC_FN2_NO2: - XOR A - CP B - JR Z,PIC_FN2_NO4 -PIC_FN2_4: - LD (HL),D - INC HL - LD (HL),D - INC HL - LD (HL),D - INC HL - LD (HL),D - INC HL - DJNZ PIC_FN2_4 -PIC_FN2_NO4: - - EX AF,AF' - OUT (SLOT1),A - XOR A - OUT (PORT_Y),A - RET - -;************************************************************************ -; вход: dE - вертикаль, HL - горизонталь. -; A',HL' - адрес данных во второй странице ! -; BC' - длина данных -; ВЫВОД ЛИНИИ ТОЧЕК -PIC_FN3: - IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,C - LD (SYS_PAGE.COPY_SLOT3),A - IN A,(SLOT2) - LD (SYS_PAGE.COPY_SLOT2),A - IN A,(SLOT1) - LD (SYS_PAGE.COPY_SLOT1),A - - LD A,B - ADD A,#50 - OUT (SLOT1),A - - BIT 0,B - LD BC,#40 + #4000 - JR Z,PIC_FN3_NO_2ND - LD BC,#40 + 320 + #4000 -PIC_FN3_NO_2ND: - ADD HL,BC - - LD A,E - OUT (PORT_Y),A - - LD A,H - EXX - LD D,A - EXX - LD A,L - EXX - LD E,A - EXX - - EX AF,AF' - OUT (SLOT2),A - EX AF,AF' - LD HL,SYS_PAGE.RAM_TABLE - LD L,A - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(HL) - OUT (SLOT3),A - EXX - LDIR - BIT 6,H - JR Z,PIC_FN3_NO - RES 6,H - EX AF,AF' -PIC_FN3_NO: - EXX - - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.COPY_SLOT1) - OUT (SLOT1),A - LD A,(SYS_PAGE.COPY_SLOT2) - OUT (SLOT2),A - LD A,(SYS_PAGE.COPY_SLOT3) - OUT (SLOT3),A - - XOR A - OUT (PORT_Y),A - RET - -;************************************************************************** -;PIC_FN4: -; вход: HL - данные палитры RGB, E - начальный цвет -; D - число цветов, B - PAL-mask, A - page PAL -PIC_SET_PAL: - PUSH IX - - EX AF,AF' - IN A,(PORT_Y) - PUSH AF ; сохранить положение PORT_Y - LD A,E - OUT (PORT_Y),A ; начальный цвет в порт - LD A,D ; сохранить число цветов - EX AF,AF' ; вернуть страницу PAL - - BIT 7,H ; проверить адрес данных - LD C,SLOT3 ; если ниже 8000h - LD D,#C3 ; то граф.экран на странице 3 - JR Z,.NO_PAGE1 - LD D,#43 ; иначе - LD C,SLOT1 ; на странице 1 -.NO_PAGE1: - ADD A,A - PUSH AF - - ADD A,A - AND #1C - XOR #E0 ; младший байт адреса PAL - LD E,A ; DE - адрес в видео-ОЗУ - PUSH DE - POP IX ; адрес палитры - - LD D,B ; маска PAL - EX AF,AF' ; вернуть число цветов - LD B,A ; число цветов - - IN E,(C) ; сохранить страницу 3 - LD A,#50 ; страница графического RAM - OUT (C),A - - POP AF - JR C,PIC_GET_PAL - ; цикл установки цветов палитры -.loopPal: - LD A,(HL) ; B - AND D - LD (IX+2),A - INC HL - - LD A,(HL) ; G - AND D - LD (IX+1),A - INC HL - - LD A,(HL) ; R - AND D - LD (IX+0),A - INC HL - - LD A,(HL) ; Y - AND D - LD (IX+3),A - INC HL - - IN A,(PORT_Y) - INC A - OUT (PORT_Y),A - DJNZ .loopPal ; выполнять, пока не 0 - -.exit: OUT (C),E ; восстановить страницу 3 - POP AF - OUT (PORT_Y),A ; восстановить Y_PORT - POP IX - AND A - RET - -PIC_GET_PAL: - ; цикл чтения цветов палитры -.loopPal: - LD A,(IX+2) - LD (HL),A ; B - INC HL - - LD A,(IX+1) - LD (HL),A ; G - INC HL - - LD A,(IX+0) - LD (HL),A ; R - INC HL - - LD A,(IX+3) - LD (HL),A ; Y - INC HL - - IN A,(PORT_Y) - INC A - OUT (PORT_Y),A - DJNZ .loopPal ; выполнять, пока не 0 - - JR PIC_SET_PAL.exit - -;******************************************************************** -PIC_FN5: ; УСТАНОВКА СТРАНИЦЫ MODE - LD A,E - AND 1 - OUT (RGMOD),A - RET -;******************************************************************* -; Установка внутренней палитры -; A - page_pal, E - номер палитры, B - тип палитры -SET_PAL_INIT: - LD D,A - DEC B - JP Z,SET_GRAPH_PALETTE - DEC B - JP Z,SET_TXT_PALETTE.ZX - DEC B - JP Z,SET_TXT_PALETTE.IBM - -; LD IX,PAL_DAT1 -; JR Z,PIC_FN6_L1 -; DEC B -; LD IX,PAL_DAT -; JR Z,PIC_FN6_L1 - - SCF - RET - -;PIC_FN6_L1: -; AND 3 -; ADD A,A -; ADD A,A -; ADD A,#E0 -; LD L,A -; LD H,#43 -; IN A,(SLOT1) -; PUSH AF -; -; LD A,#50 -; OUT (SLOT1),A -; XOR A -; OUT (PORT_Y),A -; EX AF,AF' -; call PAL_LOOP_M -; -; POP AF -; OUT (SLOT1),A -; XOR A -; OUT (PORT_Y),A -; -; RET - -;****************************************************************** -; Рисование линии. -; dЕ - вертикаль, HL - горизонталь -; H' - высота, C'/DE',B' - add_parameters -; A - color ;!FIXIT заменить сразу на D? -PIC_FN7: - LD D,A - IN A,(SLOT1) - PUSH AF - - LD A,B - ADD A,#50 - OUT (SLOT1),A - - BIT 0,B - LD BC,#40+#4000 ;!HARDCODE screen - JR Z,.no_2nd - LD BC,#40+320+#4000 ;!HARDCODE screen -.no_2nd: - ADD HL,BC - LD A,E - -.loop: OUT (PORT_Y),A ; страница видео-ОЗУ - LD (HL),D - - EXX - EX AF,AF' - - DEC H - JR Z,.exit - - LD A,C ; NEXT HORIZONTAL - ADD A,B - LD C,A - LD A,E - EXX - - ADC A,L - LD L,A - - EXX - LD A,D - EXX - - ADC A,H - LD H,A - INC E ; NEXT VERTICAL - EX AF,AF' - INC A - JR .loop - -.exit: EXX - POP AF - OUT (SLOT1),A - XOR A - OUT (PORT_Y),A - RET - -;****************************************************************** -; Рисование линии. -; dЕ - вертикаль, HL - горизонталь -; H' - высота, C'/DE',B' - add_parameters -; (IX) - colors -PIC_FN8: - IN A,(SLOT1) - PUSH AF - - LD A,B - ADD A,#50 - OUT (SLOT1),A - - BIT 0,B - LD BC,#40+#4000 ;!HARDCODE screen - JR Z,.no_2nd - LD BC,#40+320+#4000 ;!HARDCODE screen -.no_2nd: - ADD HL,BC - LD A,E - -.loop: OUT (PORT_Y),A ; страница видео-ОЗУ - LD D,(IX) - INC IX - LD (HL),D - - EXX - EX AF,AF' - - DEC H - JR Z,.exit - - LD A,C ; NEXT HORIZONTAL - ADD A,B - LD C,A - LD A,E - EXX - - ADC A,L - LD L,A - - EXX - LD A,D - EXX - - ADC A,H - LD H,A - - INC E ; NEXT VERTICAL - - EX AF,AF' - INC A - JR .loop - -.exit: EXX - POP AF - OUT (SLOT1),A - XOR A - OUT (PORT_Y),A - RET - -;************************************************** -; Вывод спрайта на экран -; HL - горизоталь, dE - вертикаль -; A',HL' - адрес данных -PIC_FN9: - -;********************************* -; HL,E - координаты D - color -; B - Magnify -PIC_FN10: -PIC_FN11: -PIC_FN12: -PIC_FN13: -PIC_FN14: -PIC_FN15: - SCF - RET -;************************************ - - -;************************************ -; SYCLES EQU 0 -; ;START EQU 1 -; ST1 EQU 2 -; DPAL1 EQU 3 -; ST2 EQU 4 -; DPAL2 EQU 5 - -; MACRO NEXT_LIN_H -; EX AF,AF' -; INC A -; OUT (PORT_Y),A -; EX AF,AF' -; ENDM - -; MACRO NEXT_LIN_HP -; EX AF,AF' -; INC A -; OUT (PORT_Y),A -; JR NZ,.MD_NO_INC_H -; INC L -; .MD_NO_INC_H: -; EX AF,AF' -; ENDM - -;**************************************** -; Загрузка режима экрана. -;**************************************** - -; CALL SINC_DEF -; CALL SET_TXT_PALETTE.ZX -; RET - -;**************************************** - -;!TODO тут функция -CL0 EQU 200 -CL1 EQU 240 - - -SET_TXT_PALETTE: -.IBM: LD DE,#8000 - JR .TXT - ; -.ZX: LD DE,0 -.TXT: PUSH IX - IN A,(PORT_Y) - PUSH AF - IN A,(SLOT3) - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - ; - LD IX,#C3F0 ; !HARDCODE адрес палитры? -.generate_loop: - CALL GENERATE_PAL1 - LD A,E - OUT (PORT_Y),A - LD (IX),L ; R - LD (IX+1),B ; G - LD (IX+2),C ; B - LD (IX+3),H ; i ? - INC E - JR NZ,.generate_loop - ; - LD BC,4 - ADD IX,BC - INC D - LD A,D - AND 3 - JR NZ,.generate_loop - ; - EX AF,AF' - OUT (SLOT3),A - POP AF - OUT (PORT_Y),A - POP IX - RET - -; генерация спектрумовской палитры. -; Вход: E - атрибут, D - номер палитры -; ВЫХОД: L - red, B - green, C - blue, H - intensity -GENERATE_PAL1: XOR A - LD C,A - LD B,A - LD L,A - BIT 7,D - JR NZ,GENERATE_IBM - BIT 1,D - JR NZ,.FLH -.NOF: BIT 0,D - JR Z,.PAPER -.INK: LD A,CL0 - BIT 6,E - JR Z,.NOI1 - LD A,CL1 -.NOI1: BIT 0,E ; BLUE - JR Z,.NO1 - LD C,A -.NO1: BIT 1,E ; RED - JR Z,.PP_NO2 - LD L,A -.PP_NO2: BIT 2,E ; GREEN - JR Z,.PP_NO6 - LD B,A -.PP_NO3: JR .PP_NO6 -; -.FLH: BIT 7,E - JR Z,.NOF - BIT 0,D - JR Z,.INK -.PAPER: LD A,CL0 - BIT 6,E - JR Z,.NOI2 - LD A,CL1 -.NOI2: BIT 3,E ; BLUE - JR Z,.PP_NO4 - LD C,A -.PP_NO4: BIT 4,E ; RED - JR Z,.PP_NO5 - LD L,A -.PP_NO5: BIT 5,E ; GREEN - JR Z,.PP_NO6 - LD B,A -.PP_NO6: LD A,C - AND A - RRA - ADD A,L - RRA - ADD A,B - RRA - LD H,A ; B/W mode - RET -;**************************************** - -GENERATE_IBM: - BIT 7,E - JR Z,.NO_FLH - BIT 1,D - JR Z,.PAPER -.NO_FLH: - BIT 0,D - JR Z,.PAPER -.INK: -.NO_INTENS: - LD A,#A8 -.INTENS: - BIT 0,E ; BLUE - JR Z,.PPI_NO4 - LD C,A -.PPI_NO4: - BIT 2,E ; RED - JR Z,.PPI_NO5 - LD L,A -.PPI_NO5: - BIT 1,E ; GREEN - JR Z,.PPI_NO6 - LD B,A -.PPI_NO6: - LD A,E - AND #0F - CP 6 - JR NZ,.no_correct - LD B,#54 -.no_correct: - BIT 3,E - JR Z,GENERATE_PAL1.PP_NO6 - - LD A,#54 - ADD A,C - LD C,A - LD A,#54 - ADD A,B - LD B,A - LD A,#54 - ADD A,L - LD L,A - JR GENERATE_PAL1.PP_NO6 -.PAPER: - LD A,#A8 - BIT 4,E ; BLUE - JR Z,.PPI_NO4X - LD C,A -.PPI_NO4X: - BIT 6,E ; RED - JR Z,.PPI_NO5X - LD L,A -.PPI_NO5X: - BIT 5,E ; GREEN - JR Z,.PPI_NO6X - LD B,A -.PPI_NO6X: - LD A,E - AND #70 - CP #60 - JR NZ,GENERATE_PAL1.PP_NO6 - LD B,#54 - JR GENERATE_PAL1.PP_NO6 -;**************************************** - -;**************************************** -;**************************************** - -; D - номер графической палитры -SET_GRAPH_PALETTE: - PUSH IX - IN A,(PORT_Y) - PUSH AF - - IN A,(SLOT3) - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - - - LD IX,#C3E0 - LD A,D - AND 3 - ADD A,A - ADD A,A - LD E,A - LD D,0 - ADD IX,DE - - LD E,0 - - XOR A - LD B,A - LD C,A - LD L,A - LD H,A - -SET_PAL_GR1: - LD A,E - OUT (PORT_Y),A - - LD (IX),L - LD (IX+1),B - LD (IX+2),C - LD (IX+3),H - - CALL GENERATE_PAL3 - - INC E - LD A,E - CP 40 - JR NZ,SET_PAL_GR1 - - XOR A - LD B,A - LD C,A - LD L,A - LD H,A - -SET_PAL_GR2: - LD A,E - OUT (PORT_Y),A - - LD (IX),L - LD (IX+1),B - LD (IX+2),C - LD (IX+3),H - - CALL GENERATE_PAL2 - - INC E - JR NZ,SET_PAL_GR2 - - EX AF,AF' - OUT (SLOT3),A - POP AF - OUT (PORT_Y),A - POP IX - RET -; -;;********************************* -; - -GENERATE_PAL3: ; gray-scale - LD A,B - ADD A,6 - LD B,A - LD C,A - LD L,A - - LD A,C - AND A - RRA - ADD A,L - RRA - ADD A,B - RRA - LD H,A - - RET - -GENERATE_PAL2: ; C - BLUE; L - RED; B - GREEN; H - INTENSITY - LD A,C - ADD A,50 - LD C,A - JR NC,GEN_PAL2_L1 - LD C,0 - LD A,L - ADD A,50 - LD L,A - JR NC,GEN_PAL2_L1 - LD L,0 - LD A,B - ADD A,50 - LD B,A - JR NC,GEN_PAL2_L1 - LD B,0 - -GEN_PAL2_L1: - LD A,C - AND A - RR A - ADD A,L - RR A - ADD A,B - RR A - LD H,A - - RET -; -;************************************ - -FN_SYNC: BIT 7,A - JR Z,.old_mode - ; - LD H,A - AND #60 ; check reserved bits - JR NZ,.error - ; - BIT 2,H ; Set V-Sinc? - JR NZ,.set_v_sinc - ; - BIT 4,H ; Set Waits? - JR Z,.error ; Error - no parameters - ; -.set_waits: LD A,H - AND 8 ; check waits. Z - no waits, NZ - waits - LD H,Port_All_Mode.DEFAULT - JR Z,.no_change - LD H,Port_All_Mode.DEFAULT-Port_All_Mode.MEM_WAITS_OFF -.no_change: LD BC,(Port_All_Mode) - IN A,(C) - AND H - OUT (C),A - RET - ; -.set_v_sinc: LD A,H - AND 3 - JR Z,.SetDefLines - DEC A - JR Z,.SetCmosLines - DEC A - JR Z,.Set320Lines - ;JR .Set312Lines -.set312lines: LD A,Port_VSYNC.SET_312L - OUT (Port_VSYNC),A - ; - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - LD A,(SYS_PAGE.VSyncAndWaits) - AND 2 - LD (SYS_PAGE.VSyncAndWaits),A - OUT (C),B - ; -.end_set_v_sinc: - BIT 4,H - RET Z - JR .set_waits - ; -.Set320Lines: LD A,Port_VSYNC.SET_320L - OUT (Port_VSYNC),A - ; - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - LD A,(SYS_PAGE.VSyncAndWaits) - OR 1 - LD (SYS_PAGE.VSyncAndWaits),A - OUT (C),B - JR .end_set_v_sinc - ; -.SetCmosLines: LD D,CMOS_CELL.ScreenSET - CALL CMOS_RD - ; - AND high CMOS_CELL.ScreenSET.Mask.Sinc ; в регистре A значение ScreenSET - JR Z,.SetDefLines - ; - BIT 6,A - JR Z,.set312lines - JR .Set320Lines - ; -.old_mode: AND A - JR Z,.INT_DEF - DEC A - JR Z,.INT_SCORP - DEC A - JR Z,.INT_PENT - DEC A - JR Z,.INT_ORIG - DEC A - JR Z,.INT_CMOS_SINC - ; [x] кастомный экран по таблице пользователя - DEC A - JR Z,.PROG_SCR - ; -.error: SCF - RET - ; -.SetDefLines: LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - LD A,(SYS_PAGE.VSyncAndWaits) - OUT (C),B - AND 1 - JR Z,.set312lines - JR .Set320Lines - ; -.INT_DEF: LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - LD DE,(SYS_PAGE.SCREEN_TABLE) - OUT (C),B - ; - CALL Test_SCREEN_TABLE - JR NZ,.INT_CMOS_SINC - JP (IX) - ; -.INT_CMOS_SINC: LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - LD DE,(SYS_PAGE.SCREEN_TABLE) - OUT (C),B - ; - LD D,CMOS_CELL.ScreenSET - CALL CMOS_RD - ; - AND high CMOS_CELL.ScreenSET.Mask.Int ; в регистре A значение ScreenSET - JR NZ,.skiptest - ; - CALL Test_SCREEN_TABLE - JP (IX) ; default int (non CMOS) - ; -.skiptest: CP #10 - JR Z,.INT_SCORP ; scorpion int - ; - CP #20 - JR Z,.INT_PENT ; pentagon int - ; - ;JR .INT_ORIG ; original int -.INT_ORIG: LD IX,SCREEN_TABLES.ORIGINAL - JR .PROG_SCR - ; -.INT_SCORP: LD IX,SCREEN_TABLES.SCORPION - JR .PROG_SCR - ; -.INT_PENT: LD IX,SCREEN_TABLES.PENTAGON - ;JR .PROG_SCR -.PROG_SCR: IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD (SYS_PAGE.COPY_SLOT3),A - IN A,(PORT_Y) - LD (SYS_PAGE.COPY_RGADR),A - ; - LD (SYS_PAGE.SCREEN_TABLE),IX - XOR A -;----[START]-----------------------[? 1] -.loop_1: OUT (PORT_Y),A - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - LD HL,#C300 -;----[START]------------------[v 2]----- -.loop_2: LD C,(IX) -;----[START]-------------[v 3]---------- -.loop_3: ; взять адрес данных для записи в служебную область экрана - LD E,(IX+1) ; take adress of line X - LD D,(IX+2) -;----[START]--------[v 4]--------------- -.loop_4: LD A,(DE) ; take counter in table 1, line X, column Y - INC DE - AND A - JR Z,.loop_4_exit ; exit if zero-counter - LD B,A - LD A,(DE) - INC DE -;----[START]---[v 5]-------------------- -.loop_5: LD (HL),A - INC L - LD (HL),0 - INC L - LD (HL),0 - ; - EX AF,AF' - INC A - OUT (PORT_Y),A - EX AF,AF' - ; - LD (HL),0 - DEC L - LD (HL),0 - DEC L - LD (HL),A - ; - EX AF,AF' - INC A - OUT (PORT_Y),A - EX AF,AF' - ; - DJNZ .loop_5 -;--------------[^ 5]-------------------- - JR .loop_4 -;-------------------[^ 4]--------------- -.loop_4_exit: INC HL ; next line - INC HL - INC HL - INC HL - IN A,(PORT_Y) - AND #80 - OUT (PORT_Y),A - DEC C - JR NZ,.loop_3 -;------------------------[^ 3]---------- - INC IX ; next counter - INC IX - INC IX - LD A,(IX) - AND A - JR NZ,.loop_2 -;-----------------------------[^ 2]----- - LD A,SYS_PAGE - OUT (SLOT3),A - LD IX,(SYS_PAGE.SCREEN_TABLE) - ; - EX AF,AF' - ADD A,#80 - JR NC,.loop_1 -;----------------------------------[^ 1] - ; Exit - LD A,(SYS_PAGE.COPY_RGADR) - OUT (PORT_Y),A - LD A,(SYS_PAGE.COPY_SLOT3) - OUT (SLOT3),A -.exit: OR A - RET - ; - ;DE - содержимое SYS_PAGE.SCREEN_TABLE -Test_SCREEN_TABLE: - LD HL,SCREEN_TABLES.SCORPION - AND A - SBC HL,DE - LD IX,FN_SYNC.INT_SCORP - RET Z - ; - LD HL,SCREEN_TABLES.ORIGINAL - AND A - SBC HL,DE - LD IX,FN_SYNC.INT_ORIG - RET Z - ; - LD HL,SCREEN_TABLES.PENTAGON - AND A - SBC HL,DE - LD IX,FN_SYNC.INT_PENT - RET Z - AND A - RET -;--- Screen data table 1: counter1, data1 .. counterX, dataX -SCREEN_TABLES: -; | число | значения | -; | строк | в | -; | /2 | строках | -.SCR: DB 41 , #F8 - DB 3 , #FC - DB 4 , #FC - DB 7 , #FC - DB 9 , #F8 - DB 0 - -;.SCR: DB 41,#F8, 3,#FC, 4,#FC, 7,#FC, 9,#F8, 0 -.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0 -.INT_SC: DB 41,#F8, 1,#FD, 6,#FC, 7,#FC, 9,#F8, 0 -.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 -.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 -.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0 -;--------------------------------------- - -;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX -; -; | кол-во | значения | -; | строк | в | -; | | строке | -.PENTAGON: DB 33 : DW .SCR - DB 1 : DW .INT ; DW .BLN - DB 3 : DW .SNC - DB 1 : DW .BLN - DB 1 : DW .SCR - DB 1 : DW .RES - DB 0 ; end -.SCORPION: DB 31 : DW .SCR - DB 1 : DW .INT_SC - DB 1 : DW .SCR - DB 1 : DW .SNC - DB 3 : DW .SNC - DB 1 : DW .BLN - DB 2 : DW .RES - DB 0 ; end -.ORIGINAL: DB 33 : DW .SCR - DB 1 : DW .SNC - DB 1 : DW .INT - DB 2 : DW .SNC - DB 1 : DW .BLN - DB 1 : DW .SCR - DB 1 : DW .RES - DB 0 ; end -;--------------------------------------- - -;************************************ -; -; Экранные таблицы -; -;текстовое окно 80x32 -LP_SCR_80: - DB 40,32,0,0,%0001'1011,0,0,0 - BLOCK 8,0 - -;текстовое окно 40x32 -LP_SCR_40: - DB 40,32,0,0,%0111'1011,0,0,0 - BLOCK 8,0 - -;спектрумовское окно 32x24 -LP_SCR_32: - DB 32,24,4,4,%0011'0000,1,0,0 - BLOCK 8,0 - -;текстовое окно 64x24 -LP_SCR_64: - DB 32,24,4,4,%1001'1011,0,0,0 - BLOCK 8,0 - -;графическое окно 0 -PIC_320X256_1: - DB 40,32,0,0,%0010'0000,0,8,0 - BLOCK 8,0 - -;графическое окно 1 -PIC_320X256_2: - DB 40,32,0,0,%0110'0000,0,48,0 - BLOCK 8,0 - -;************************************ -; - - + +;****************************************************************** +; вход: DE - вертикаль, HL - горизонталь, +; B - цвет точки, A - экран +PIC_FN1: + AND A + SCF + RET NZ + CCF + + IN A,(PORT_Y) + PUSH AF + + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + + LD A,(WIN_ID_0.GRAF_Y) + ADD A,E + OUT (PORT_Y),A + LD A,B + LD BC,(WIN_ID_0.GRAF_X) + ADD HL,BC + LD B,A + LD A,#50 + OUT (SLOT3),A + LD (HL),A + EX AF,AF' + OUT (SLOT3),A + + POP AF + OUT (PORT_Y),A + RET + +; вход: DE - вертикаль, HL - горизонталь. +; IX - длина линии в точках не 0 !!! +; FILL - by A +; ????? +PIC_FN2: + LD D,A + IN A,(SLOT1) + EX AF,AF' + + LD A,B + ADD A,#50 + OUT (SLOT1),A + + BIT 0,B + LD BC,#40+#4000 + JR Z,PIC_FN2_NO_2ND + LD BC,#40+320+#4000 +PIC_FN2_NO_2ND: + ADD HL,BC + + LD A,E + OUT (PORT_Y),A + + LD A,XH + AND A + JR Z,PIC_FN2_NO256 +PIC_FN2_256L: + LD B,64 +PIC_FN2_256: + LD (HL),D + INC HL + LD (HL),D + INC HL + LD (HL),D + INC HL + LD (HL),D + INC HL + DJNZ PIC_FN2_256 + DEC A + JR NZ,PIC_FN2_256L + +PIC_FN2_NO256: + LD B,XL + AND A + RR B + JR NC,PIC_FN2_NO1 + LD (HL),D + INC HL + AND A +PIC_FN2_NO1: + RR B + JR NC,PIC_FN2_NO2 + LD (HL),D + INC HL + LD (HL),D + INC HL + AND A +PIC_FN2_NO2: + XOR A + CP B + JR Z,PIC_FN2_NO4 +PIC_FN2_4: + LD (HL),D + INC HL + LD (HL),D + INC HL + LD (HL),D + INC HL + LD (HL),D + INC HL + DJNZ PIC_FN2_4 +PIC_FN2_NO4: + + EX AF,AF' + OUT (SLOT1),A + XOR A + OUT (PORT_Y),A + RET + +;************************************************************************ +; вход: dE - вертикаль, HL - горизонталь. +; A',HL' - адрес данных во второй странице ! +; BC' - длина данных +; ВЫВОД ЛИНИИ ТОЧЕК +PIC_FN3: + IN A,(SLOT3) + LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,C + LD (SYS_PAGE.COPY_SLOT3),A + IN A,(SLOT2) + LD (SYS_PAGE.COPY_SLOT2),A + IN A,(SLOT1) + LD (SYS_PAGE.COPY_SLOT1),A + + LD A,B + ADD A,#50 + OUT (SLOT1),A + + BIT 0,B + LD BC,#40 + #4000 + JR Z,PIC_FN3_NO_2ND + LD BC,#40 + 320 + #4000 +PIC_FN3_NO_2ND: + ADD HL,BC + + LD A,E + OUT (PORT_Y),A + + LD A,H + EXX + LD D,A + EXX + LD A,L + EXX + LD E,A + EXX + + EX AF,AF' + OUT (SLOT2),A + EX AF,AF' + LD HL,SYS_PAGE.RAM_TABLE + LD L,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(HL) + OUT (SLOT3),A + EXX + LDIR + BIT 6,H + JR Z,PIC_FN3_NO + RES 6,H + EX AF,AF' +PIC_FN3_NO: + EXX + + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.COPY_SLOT1) + OUT (SLOT1),A + LD A,(SYS_PAGE.COPY_SLOT2) + OUT (SLOT2),A + LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A + + XOR A + OUT (PORT_Y),A + RET + +;************************************************************************** +;PIC_FN4: +; вход: HL - данные палитры RGB, E - начальный цвет +; D - число цветов, B - PAL-mask, A - page PAL +PIC_SET_PAL: + PUSH IX + + EX AF,AF' + IN A,(PORT_Y) + PUSH AF ; сохранить положение PORT_Y + LD A,E + OUT (PORT_Y),A ; начальный цвет в порт + LD A,D ; сохранить число цветов + EX AF,AF' ; вернуть страницу PAL + + BIT 7,H ; проверить адрес данных + LD C,SLOT3 ; если ниже 8000h + LD D,#C3 ; то граф.экран на странице 3 + JR Z,.NO_PAGE1 + LD D,#43 ; иначе + LD C,SLOT1 ; на странице 1 +.NO_PAGE1: + ADD A,A + PUSH AF + + ADD A,A + AND #1C + XOR #E0 ; младший байт адреса PAL + LD E,A ; DE - адрес в видео-ОЗУ + PUSH DE + POP IX ; адрес палитры + + LD D,B ; маска PAL + EX AF,AF' ; вернуть число цветов + LD B,A ; число цветов + + IN E,(C) ; сохранить страницу 3 + LD A,#50 ; страница графического RAM + OUT (C),A + + POP AF + JR C,PIC_GET_PAL + ; цикл установки цветов палитры +.loopPal: + LD A,(HL) ; B + AND D + LD (IX+2),A + INC HL + + LD A,(HL) ; G + AND D + LD (IX+1),A + INC HL + + LD A,(HL) ; R + AND D + LD (IX+0),A + INC HL + + LD A,(HL) ; Y + AND D + LD (IX+3),A + INC HL + + IN A,(PORT_Y) + INC A + OUT (PORT_Y),A + DJNZ .loopPal ; выполнять, пока не 0 + +.exit: OUT (C),E ; восстановить страницу 3 + POP AF + OUT (PORT_Y),A ; восстановить Y_PORT + POP IX + AND A + RET + +PIC_GET_PAL: + ; цикл чтения цветов палитры +.loopPal: + LD A,(IX+2) + LD (HL),A ; B + INC HL + + LD A,(IX+1) + LD (HL),A ; G + INC HL + + LD A,(IX+0) + LD (HL),A ; R + INC HL + + LD A,(IX+3) + LD (HL),A ; Y + INC HL + + IN A,(PORT_Y) + INC A + OUT (PORT_Y),A + DJNZ .loopPal ; выполнять, пока не 0 + + JR PIC_SET_PAL.exit + +;******************************************************************** +PIC_FN5: ; УСТАНОВКА СТРАНИЦЫ MODE + LD A,E + AND 1 + OUT (RGMOD),A + RET +;******************************************************************* +; Установка внутренней палитры +; A - page_pal, E - номер палитры, B - тип палитры +SET_PAL_INIT: + LD D,A + DEC B + JP Z,SET_GRAPH_PALETTE + DEC B + JP Z,SET_TXT_PALETTE.ZX + DEC B + JP Z,SET_TXT_PALETTE.IBM + +; LD IX,PAL_DAT1 +; JR Z,PIC_FN6_L1 +; DEC B +; LD IX,PAL_DAT +; JR Z,PIC_FN6_L1 + + SCF + RET + +;PIC_FN6_L1: +; AND 3 +; ADD A,A +; ADD A,A +; ADD A,#E0 +; LD L,A +; LD H,#43 +; IN A,(SLOT1) +; PUSH AF +; +; LD A,#50 +; OUT (SLOT1),A +; XOR A +; OUT (PORT_Y),A +; EX AF,AF' +; call PAL_LOOP_M +; +; POP AF +; OUT (SLOT1),A +; XOR A +; OUT (PORT_Y),A +; +; RET + +;****************************************************************** +; Рисование линии. +; dЕ - вертикаль, HL - горизонталь +; H' - высота, C'/DE',B' - add_parameters +; A - color ;!FIXIT заменить сразу на D? +PIC_FN7: + LD D,A + IN A,(SLOT1) + PUSH AF + + LD A,B + ADD A,#50 + OUT (SLOT1),A + + BIT 0,B + LD BC,#40+#4000 ;!HARDCODE screen + JR Z,.no_2nd + LD BC,#40+320+#4000 ;!HARDCODE screen +.no_2nd: + ADD HL,BC + LD A,E + +.loop: OUT (PORT_Y),A ; страница видео-ОЗУ + LD (HL),D + + EXX + EX AF,AF' + + DEC H + JR Z,.exit + + LD A,C ; NEXT HORIZONTAL + ADD A,B + LD C,A + LD A,E + EXX + + ADC A,L + LD L,A + + EXX + LD A,D + EXX + + ADC A,H + LD H,A + INC E ; NEXT VERTICAL + EX AF,AF' + INC A + JR .loop + +.exit: EXX + POP AF + OUT (SLOT1),A + XOR A + OUT (PORT_Y),A + RET + +;****************************************************************** +; Рисование линии. +; dЕ - вертикаль, HL - горизонталь +; H' - высота, C'/DE',B' - add_parameters +; (IX) - colors +PIC_FN8: + IN A,(SLOT1) + PUSH AF + + LD A,B + ADD A,#50 + OUT (SLOT1),A + + BIT 0,B + LD BC,#40+#4000 ;!HARDCODE screen + JR Z,.no_2nd + LD BC,#40+320+#4000 ;!HARDCODE screen +.no_2nd: + ADD HL,BC + LD A,E + +.loop: OUT (PORT_Y),A ; страница видео-ОЗУ + LD D,(IX) + INC IX + LD (HL),D + + EXX + EX AF,AF' + + DEC H + JR Z,.exit + + LD A,C ; NEXT HORIZONTAL + ADD A,B + LD C,A + LD A,E + EXX + + ADC A,L + LD L,A + + EXX + LD A,D + EXX + + ADC A,H + LD H,A + + INC E ; NEXT VERTICAL + + EX AF,AF' + INC A + JR .loop + +.exit: EXX + POP AF + OUT (SLOT1),A + XOR A + OUT (PORT_Y),A + RET + +;************************************************** +; Вывод спрайта на экран +; HL - горизоталь, dE - вертикаль +; A',HL' - адрес данных +PIC_FN9: + +;********************************* +; HL,E - координаты D - color +; B - Magnify +PIC_FN10: +PIC_FN11: +PIC_FN12: +PIC_FN13: +PIC_FN14: +PIC_FN15: + SCF + RET +;************************************ + + +;************************************ +; SYCLES EQU 0 +; ;START EQU 1 +; ST1 EQU 2 +; DPAL1 EQU 3 +; ST2 EQU 4 +; DPAL2 EQU 5 + +; MACRO NEXT_LIN_H +; EX AF,AF' +; INC A +; OUT (PORT_Y),A +; EX AF,AF' +; ENDM + +; MACRO NEXT_LIN_HP +; EX AF,AF' +; INC A +; OUT (PORT_Y),A +; JR NZ,.MD_NO_INC_H +; INC L +; .MD_NO_INC_H: +; EX AF,AF' +; ENDM + +;**************************************** +; Загрузка режима экрана. +;**************************************** + +; CALL SINC_DEF +; CALL SET_TXT_PALETTE.ZX +; RET + +;**************************************** + +;!TODO тут функция +CL0 EQU 200 +CL1 EQU 240 + + +SET_TXT_PALETTE: +.IBM: LD DE,#8000 + JR .TXT + ; +.ZX: LD DE,0 +.TXT: PUSH IX + IN A,(PORT_Y) + PUSH AF + IN A,(SLOT3) + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + ; + LD IX,#C3F0 ; !HARDCODE адрес палитры? +.generate_loop: + CALL GENERATE_PAL1 + LD A,E + OUT (PORT_Y),A + LD (IX),L ; R + LD (IX+1),B ; G + LD (IX+2),C ; B + LD (IX+3),H ; i ? + INC E + JR NZ,.generate_loop + ; + LD BC,4 + ADD IX,BC + INC D + LD A,D + AND 3 + JR NZ,.generate_loop + ; + EX AF,AF' + OUT (SLOT3),A + POP AF + OUT (PORT_Y),A + POP IX + RET + +; генерация спектрумовской палитры. +; Вход: E - атрибут, D - номер палитры +; ВЫХОД: L - red, B - green, C - blue, H - intensity +GENERATE_PAL1: XOR A + LD C,A + LD B,A + LD L,A + BIT 7,D + JR NZ,GENERATE_IBM + BIT 1,D + JR NZ,.FLH +.NOF: BIT 0,D + JR Z,.PAPER +.INK: LD A,CL0 + BIT 6,E + JR Z,.NOI1 + LD A,CL1 +.NOI1: BIT 0,E ; BLUE + JR Z,.NO1 + LD C,A +.NO1: BIT 1,E ; RED + JR Z,.PP_NO2 + LD L,A +.PP_NO2: BIT 2,E ; GREEN + JR Z,.PP_NO6 + LD B,A +.PP_NO3: JR .PP_NO6 +; +.FLH: BIT 7,E + JR Z,.NOF + BIT 0,D + JR Z,.INK +.PAPER: LD A,CL0 + BIT 6,E + JR Z,.NOI2 + LD A,CL1 +.NOI2: BIT 3,E ; BLUE + JR Z,.PP_NO4 + LD C,A +.PP_NO4: BIT 4,E ; RED + JR Z,.PP_NO5 + LD L,A +.PP_NO5: BIT 5,E ; GREEN + JR Z,.PP_NO6 + LD B,A +.PP_NO6: LD A,C + AND A + RRA + ADD A,L + RRA + ADD A,B + RRA + LD H,A ; B/W mode + RET +;**************************************** + +GENERATE_IBM: + BIT 7,E + JR Z,.NO_FLH + BIT 1,D + JR Z,.PAPER +.NO_FLH: + BIT 0,D + JR Z,.PAPER +.INK: +.NO_INTENS: + LD A,#A8 +.INTENS: + BIT 0,E ; BLUE + JR Z,.PPI_NO4 + LD C,A +.PPI_NO4: + BIT 2,E ; RED + JR Z,.PPI_NO5 + LD L,A +.PPI_NO5: + BIT 1,E ; GREEN + JR Z,.PPI_NO6 + LD B,A +.PPI_NO6: + LD A,E + AND #0F + CP 6 + JR NZ,.no_correct + LD B,#54 +.no_correct: + BIT 3,E + JR Z,GENERATE_PAL1.PP_NO6 + + LD A,#54 + ADD A,C + LD C,A + LD A,#54 + ADD A,B + LD B,A + LD A,#54 + ADD A,L + LD L,A + JR GENERATE_PAL1.PP_NO6 +.PAPER: + LD A,#A8 + BIT 4,E ; BLUE + JR Z,.PPI_NO4X + LD C,A +.PPI_NO4X: + BIT 6,E ; RED + JR Z,.PPI_NO5X + LD L,A +.PPI_NO5X: + BIT 5,E ; GREEN + JR Z,.PPI_NO6X + LD B,A +.PPI_NO6X: + LD A,E + AND #70 + CP #60 + JR NZ,GENERATE_PAL1.PP_NO6 + LD B,#54 + JR GENERATE_PAL1.PP_NO6 +;**************************************** + +;**************************************** +;**************************************** + +; D - номер графической палитры +SET_GRAPH_PALETTE: + PUSH IX + IN A,(PORT_Y) + PUSH AF + + IN A,(SLOT3) + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + + + LD IX,#C3E0 + LD A,D + AND 3 + ADD A,A + ADD A,A + LD E,A + LD D,0 + ADD IX,DE + + LD E,0 + + XOR A + LD B,A + LD C,A + LD L,A + LD H,A + +SET_PAL_GR1: + LD A,E + OUT (PORT_Y),A + + LD (IX),L + LD (IX+1),B + LD (IX+2),C + LD (IX+3),H + + CALL GENERATE_PAL3 + + INC E + LD A,E + CP 40 + JR NZ,SET_PAL_GR1 + + XOR A + LD B,A + LD C,A + LD L,A + LD H,A + +SET_PAL_GR2: + LD A,E + OUT (PORT_Y),A + + LD (IX),L + LD (IX+1),B + LD (IX+2),C + LD (IX+3),H + + CALL GENERATE_PAL2 + + INC E + JR NZ,SET_PAL_GR2 + + EX AF,AF' + OUT (SLOT3),A + POP AF + OUT (PORT_Y),A + POP IX + RET +; +;;********************************* +; + +GENERATE_PAL3: ; gray-scale + LD A,B + ADD A,6 + LD B,A + LD C,A + LD L,A + + LD A,C + AND A + RRA + ADD A,L + RRA + ADD A,B + RRA + LD H,A + + RET + +GENERATE_PAL2: ; C - BLUE; L - RED; B - GREEN; H - INTENSITY + LD A,C + ADD A,50 + LD C,A + JR NC,GEN_PAL2_L1 + LD C,0 + LD A,L + ADD A,50 + LD L,A + JR NC,GEN_PAL2_L1 + LD L,0 + LD A,B + ADD A,50 + LD B,A + JR NC,GEN_PAL2_L1 + LD B,0 + +GEN_PAL2_L1: + LD A,C + AND A + RR A + ADD A,L + RR A + ADD A,B + RR A + LD H,A + + RET +; +;************************************ + +FN_SYNC: BIT 7,A + JR Z,.old_mode + ; + LD H,A + AND #60 ; check reserved bits + JR NZ,.error + ; + BIT 2,H ; Set V-Sinc? + JR NZ,.set_v_sinc + ; + BIT 4,H ; Set Waits? + JR Z,.error ; Error - no parameters + ; +.set_waits: LD A,H + AND 8 ; check waits. Z - no waits, NZ - waits + LD H,Port_All_Mode.DEFAULT + JR Z,.no_change + LD H,Port_All_Mode.DEFAULT-Port_All_Mode.MEM_WAITS_OFF +.no_change: LD BC,(Port_All_Mode) + IN A,(C) + AND H + OUT (C),A + RET + ; +.set_v_sinc: LD A,H + AND 3 + JR Z,.SetDefLines + DEC A + JR Z,.SetCmosLines + DEC A + JR Z,.Set320Lines + ;JR .Set312Lines +.set312lines: LD A,Port_VSYNC.SET_312L + OUT (Port_VSYNC),A + ; + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + LD A,(SYS_PAGE.VSyncAndWaits) + AND 2 + LD (SYS_PAGE.VSyncAndWaits),A + OUT (C),B + ; +.end_set_v_sinc: + BIT 4,H + RET Z + JR .set_waits + ; +.Set320Lines: LD A,Port_VSYNC.SET_320L + OUT (Port_VSYNC),A + ; + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + LD A,(SYS_PAGE.VSyncAndWaits) + OR 1 + LD (SYS_PAGE.VSyncAndWaits),A + OUT (C),B + JR .end_set_v_sinc + ; +.SetCmosLines: LD D,CMOS_CELL.ScreenSET + CALL CMOS_RD + ; + AND high CMOS_CELL.ScreenSET.Mask.Sinc ; в регистре A значение ScreenSET + JR Z,.SetDefLines + ; + BIT 6,A + JR Z,.set312lines + JR .Set320Lines + ; +.old_mode: AND A + JR Z,.INT_DEF + DEC A + JR Z,.INT_SCORP + DEC A + JR Z,.INT_PENT + DEC A + JR Z,.INT_ORIG + DEC A + JR Z,.INT_CMOS_SINC + ; [x] кастомный экран по таблице пользователя + DEC A + JR Z,.PROG_SCR + ; +.error: SCF + RET + ; +.SetDefLines: LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + LD A,(SYS_PAGE.VSyncAndWaits) + OUT (C),B + AND 1 + JR Z,.set312lines + JR .Set320Lines + ; +.INT_DEF: LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + LD DE,(SYS_PAGE.SCREEN_TABLE) + OUT (C),B + ; + CALL Test_SCREEN_TABLE + JR NZ,.INT_CMOS_SINC + JP (IX) + ; +.INT_CMOS_SINC: LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + LD DE,(SYS_PAGE.SCREEN_TABLE) + OUT (C),B + ; + LD D,CMOS_CELL.ScreenSET + CALL CMOS_RD + ; + AND high CMOS_CELL.ScreenSET.Mask.Int ; в регистре A значение ScreenSET + JR NZ,.skiptest + ; + CALL Test_SCREEN_TABLE + JP (IX) ; default int (non CMOS) + ; +.skiptest: CP #10 + JR Z,.INT_SCORP ; scorpion int + ; + CP #20 + JR Z,.INT_PENT ; pentagon int + ; + ;JR .INT_ORIG ; original int +.INT_ORIG: LD IX,SCREEN_TABLES.ORIGINAL + JR .PROG_SCR + ; +.INT_SCORP: LD IX,SCREEN_TABLES.SCORPION + JR .PROG_SCR + ; +.INT_PENT: LD IX,SCREEN_TABLES.PENTAGON + ;JR .PROG_SCR +.PROG_SCR: IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD (SYS_PAGE.COPY_SLOT3),A + IN A,(PORT_Y) + LD (SYS_PAGE.COPY_RGADR),A + ; + LD (SYS_PAGE.SCREEN_TABLE),IX + XOR A +;----[START]-----------------------[? 1] +.loop_1: OUT (PORT_Y),A + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + LD HL,#C300 +;----[START]------------------[v 2]----- +.loop_2: LD C,(IX) +;----[START]-------------[v 3]---------- +.loop_3: ; взять адрес данных для записи в служебную область экрана + LD E,(IX+1) ; take adress of line X + LD D,(IX+2) +;----[START]--------[v 4]--------------- +.loop_4: LD A,(DE) ; take counter in table 1, line X, column Y + INC DE + AND A + JR Z,.loop_4_exit ; exit if zero-counter + LD B,A + LD A,(DE) + INC DE +;----[START]---[v 5]-------------------- +.loop_5: LD (HL),A + INC L + LD (HL),0 + INC L + LD (HL),0 + ; + EX AF,AF' + INC A + OUT (PORT_Y),A + EX AF,AF' + ; + LD (HL),0 + DEC L + LD (HL),0 + DEC L + LD (HL),A + ; + EX AF,AF' + INC A + OUT (PORT_Y),A + EX AF,AF' + ; + DJNZ .loop_5 +;--------------[^ 5]-------------------- + JR .loop_4 +;-------------------[^ 4]--------------- +.loop_4_exit: INC HL ; next line + INC HL + INC HL + INC HL + IN A,(PORT_Y) + AND #80 + OUT (PORT_Y),A + DEC C + JR NZ,.loop_3 +;------------------------[^ 3]---------- + INC IX ; next counter + INC IX + INC IX + LD A,(IX) + AND A + JR NZ,.loop_2 +;-----------------------------[^ 2]----- + LD A,SYS_PAGE + OUT (SLOT3),A + LD IX,(SYS_PAGE.SCREEN_TABLE) + ; + EX AF,AF' + ADD A,#80 + JR NC,.loop_1 +;----------------------------------[^ 1] + ; Exit + LD A,(SYS_PAGE.COPY_RGADR) + OUT (PORT_Y),A + LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A +.exit: OR A + RET + ; + ;DE - содержимое SYS_PAGE.SCREEN_TABLE +Test_SCREEN_TABLE: + LD HL,SCREEN_TABLES.SCORPION + AND A + SBC HL,DE + LD IX,FN_SYNC.INT_SCORP + RET Z + ; + LD HL,SCREEN_TABLES.ORIGINAL + AND A + SBC HL,DE + LD IX,FN_SYNC.INT_ORIG + RET Z + ; + LD HL,SCREEN_TABLES.PENTAGON + AND A + SBC HL,DE + LD IX,FN_SYNC.INT_PENT + RET Z + AND A + RET +;--- Screen data table 1: counter1, data1 .. counterX, dataX +SCREEN_TABLES: +; | число | значения | +; | строк | в | +; | /2 | строках | +.SCR: DB 41 , #F8 + DB 3 , #FC + DB 4 , #FC + DB 7 , #FC + DB 9 , #F8 + DB 0 + +;.SCR: DB 41,#F8, 3,#FC, 4,#FC, 7,#FC, 9,#F8, 0 +.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0 +.INT_SC: DB 41,#F8, 1,#FD, 6,#FC, 7,#FC, 9,#F8, 0 +.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 +.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 +.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0 +;--------------------------------------- + +;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX +; +; | кол-во | значения | +; | строк | в | +; | | строке | +.PENTAGON: DB 33 : DW .SCR + DB 1 : DW .INT ; DW .BLN + DB 3 : DW .SNC + DB 1 : DW .BLN + DB 1 : DW .SCR + DB 1 : DW .RES + DB 0 ; end +.SCORPION: DB 31 : DW .SCR + DB 1 : DW .INT_SC + DB 1 : DW .SCR + DB 1 : DW .SNC + DB 3 : DW .SNC + DB 1 : DW .BLN + DB 2 : DW .RES + DB 0 ; end +.ORIGINAL: DB 33 : DW .SCR + DB 1 : DW .SNC + DB 1 : DW .INT + DB 2 : DW .SNC + DB 1 : DW .BLN + DB 1 : DW .SCR + DB 1 : DW .RES + DB 0 ; end +;--------------------------------------- + +;************************************ +; +; Экранные таблицы +; +;текстовое окно 80x32 +LP_SCR_80: + DB 40,32,0,0,%0001'1011,0,0,0 + BLOCK 8,0 + +;текстовое окно 40x32 +LP_SCR_40: + DB 40,32,0,0,%0111'1011,0,0,0 + BLOCK 8,0 + +;спектрумовское окно 32x24 +LP_SCR_32: + DB 32,24,4,4,%0011'0000,1,0,0 + BLOCK 8,0 + +;текстовое окно 64x24 +LP_SCR_64: + DB 32,24,4,4,%1001'1011,0,0,0 + BLOCK 8,0 + +;графическое окно 0 +PIC_320X256_1: + DB 40,32,0,0,%0010'0000,0,8,0 + BLOCK 8,0 + +;графическое окно 1 +PIC_320X256_2: + DB 40,32,0,0,%0110'0000,0,48,0 + BLOCK 8,0 + +;************************************ +; + + diff --git a/src/bios/exp/FUNC_SERVICE.asm b/bios/exp/FUNC_SERVICE.asm similarity index 95% rename from src/bios/exp/FUNC_SERVICE.asm rename to bios/exp/FUNC_SERVICE.asm index a766644..81e3764 100644 --- a/src/bios/exp/FUNC_SERVICE.asm +++ b/bios/exp/FUNC_SERVICE.asm @@ -1,637 +1,637 @@ -; DISPLAY "Service" -; !FIXIT тут можно, походу, дохрена убрать - -; ; страницы с конфой для Sp97, для совместимости с древними прогами -; PG_SP1 equ #EC -; PG_SP2 equ #EE -; PG_AY equ #EA -; ; - -; ;!TODO замутить заливку конфы, рестарт, перехват ресета силами BIOS -; PG_Sp2000 EQU #FE -; PG_Sp2000_REINIT EQU #FD -; - -RST_CONF: -;--[] ZX Spectrum -.AY8910: CALL .ACC_OFF - LD DE,ACEX.Config_ID.Sp97_AY - JR .INT_PLD - ;LD A,CNF_PORT.CNF_1 - ;OUT (SYS_PORT.ON),A - ;RET -;--[] - -;--[] Sprinter ZX -.SP97_1: CALL .ACC_OFF - LD DE,ACEX.Config_ID.Sp97_1 - JR .INT_PLD -;--[] - -;--[] -.SP97_2: CALL .ACC_ON - LD DE,ACEX.Config_ID.Sp97_2 - JR .INT_PLD -;--[] - - -;--[] -;[x] -.SP2000: CALL .ACC_ON - LD DE,ACEX.Config_ID.Sp2000 - JR .INT_PLD -;--[] - - -;--[] -.CUSTOM: LD C,A - ; устанавливаем нулевую карту портов - LD A,CNF_PORT.CNF_0 - OUT (SYS_PORT.ON),A - LD A,C - ; - CP #80 ; тут теперь может любое число быть у старых прог - JR NC,.CHOOSE_CNF - ; only for old FLEX10K soft compatible -.crutch: LD C,SLOT3 - IN B,(C) - OUT (C),A ; PAGE с прошивкой - LD DE,(#C090) ; PLD-ID - OUT (C),B ; RET page -;--[] ;JR INT_PLD -.INT_PLD: ; only for old FLEX10K soft compatible - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - LD (SYS_PAGE.CONFIG_BYTE),DE - OUT (C),B - ; - LD A,E ; config-byte - CP #FF - LD A,#80 - JR Z,.YES_CBL - XOR A -.YES_CBL: LD BC,SP_SND.CBL.SYS_PORT - OUT (C),A - ; - LD A,E ; config-byte - OR #FE ;!HARDCODE - LD BC,Port_All_Mode ; SYSTEM Spectrum/Sprinter - OUT (C),A - ; - LD A,#3C - OUT (FDC_93.DrvCTRL),A - ; восстанавливаем карту портов - походу, не нужно - ;LD C,SLOT3 - ;IN B,(C) - ; LD A,SYS_PAGE - ; OUT (C),A - ; LD A,(SYS_PAGE.CONFIG_DE.CNF_PORT) - ;OUT (C),B - ;OUT (SYS_PORT.ON),A - XOR A - RET - ; - ;[x] -.CHOOSE_CNF: ; [x] bug with "free zx pages" - LD A,high ZX_MEM_PORT.Scorpion - IN A,(ZX_MEM_PORT) - RRCA - LD A,C - JR C,.not_vRAM_page - ; - IN A,(SLOT3) - CP C - LD A,C - JR Z,.crutch - ; [x] -.not_vRAM_page: CP ACEX.Config_PG.Sp2000_SoftRestartNow - JP Z,.ReturnSoftReset - ; - CP ACEX.Config_PG.Sp2000_AcexSetUpNow - JR Z,.INIT_ACEX - ; - CP ACEX.Config_PG.Sp2000_SetUp - JR Z,.SP2000 - ; - CP ACEX.Config_PG.Sp2000_SoftRestartSet - JR Z,.SetUpSoftReset - ; - CP ACEX.Config_PG.Sp2000_AcexSetUpSet - JR Z,.SetUpHardReset - ; - ; only for old FLEX10K soft compatible - CP ACEX.Config_PG.Sp97_1 - LD DE,ACEX.Config_ID.Sp97_1 - JR Z,.INT_PLD - ; - CP ACEX.Config_PG.Sp97_2 - LD DE,ACEX.Config_ID.Sp97_2 - JR Z,.INT_PLD - ; - CP ACEX.Config_PG.Sp97_AY - LD DE,ACEX.Config_ID.Sp97_AY - JR Z,.INT_PLD - SCF - RET - ; -; B - ID рамблока с bitstream - ;[x] -.INIT_ACEX: LD C,B - LD B,high BIOS.REINIT.HARD_RESET - CALL .PrepareResetSetUp - LD B,C - CALL .PrepareHardReset - JR C,.INIT_ACEX.ERROR - LD B,high BIOS.REINIT.HARD_RESET - JR .set_ret_addr - -; DI -; IN A,(SLOT3) ; сохраняем номер воткнутой страницы -; PUSH AF -; LD A,Spec_Page -; OUT (SLOT3),A -; ; проверяем размер блока с конфой и получаем страницы конфы -; LD HL,Spec_Page.bitstream_pages -; LD A,B -; AND A -; JR Z,.INIT_ACEX.ReloadConfFromROM -; ; -; CALL EMM.GetMemBlkPages -; LD A,B -; JR C,.INIT_ACEX.ERROR -; CP BitStream_SizeInPages+1 ; количество страниц в кэш для бистрима плюс одна -; JR NC,.INIT_ACEX.ERROR -; LD A,(Spec_Page.bitstream_pages) -; INC A -; JR Z,.INIT_ACEX.ERROR -; ; -; .INIT_ACEX.ReloadConfFromROM: -; ; закидываем в Spec_Page прогу для заливки конфы -; LD HL,.INIT_ACEX.PROGRAM -; LD DE,Spec_Page.init_acex -; LD BC,.INIT_ACEX.PROGRAM.Size -; LDIR -; ; если ZF=0, то процедура сделает ресет с перезаливкой из BIOS, иначе из КЭШ -; CALL Spec_Page.init_acex -; LD B,high BIOS.REINIT.HARD_RESET -; POP HL -; ; -; ;вход: B - параметр функции BIOS REINIT -; ; H - Spec_Page.page_3 -; .INIT_ACEX.ifSoftreset: -; ; сохраняем воткнутые страницы в Spec_Page -; IN A,(SLOT0) -; LD E,A -; IN A,(SLOT1) -; LD D,A -; IN A,(SLOT2) -; ;POP HL ; восстанавливаем номер воткнутой страницы -; LD L,A -; LD (Spec_Page.page_0),DE -; LD (Spec_Page.page_2),HL -; ; -; ; достаём адрес возврата в вызывающую функцию и сохраняем в Spec_Page -; POP DE -; LD HL,RST_18_1.exit -; XOR A -; SBC HL,DE -; JR NZ,.set_ret ; NZ - если вызов был по RST #18 -; POP DE ; если вызов был в ОЗУ по RST 8 -; INC A -; .set_ret: LD (Spec_Page.RET_addr),DE -; ; A=0 - SYS_PORT.ON -; ; A=1 - SYS_PORT.OFF -; LD (Spec_Page.Reload_Version),A -; LD (Spec_Page.Stack_Point),SP -; ; -; LD A,high BIOS.REINIT.HARD_RESET -; CP B -; JR NZ,.reinit -; ; Устанавливаем ключи для HARD reset -; LD HL,Spec_Page.flag_R -; LD (HL),"R" -; INC HL -; LD (HL),"S" -; INC HL -; LD (HL),"T" -; ; -; ; .. ... ... .. -; ;LD BC,BIOS.REINIT.HARD_RESET -; .reinit: JP REINIT - ; -.SetUpHardReset: - LD C,B - LD B,high BIOS.REINIT.HARD_RESET - CALL .PrepareResetSetUp - LD (Spec_Page.RET_addr),DE - LD A,#FF - LD (Spec_Page.Reload_Version),A - LD B,C - CALL .PrepareHardReset - JR .INIT_ACEX.ERROR ; нормальный выход в данном случае - ; -.ReturnSoftReset: - CALL .PrepareSoftReset - CALL .PrepareResetSetUp - ; достаём адрес возврата в вызывающую функцию и сохраняем в Spec_Page -.set_ret_addr: POP DE - LD HL,RST_18_1.exit - XOR A - SBC HL,DE - JR NZ,.set_ret ; NZ - если вызов был по RST #18 - POP DE ; если вызов был в ОЗУ по RST 8 - INC A -.set_ret: LD (Spec_Page.RET_addr),DE - ; A=0 - SYS_PORT.ON - ; A=1 - SYS_PORT.OFF - LD (Spec_Page.Reload_Version),A - LD (Spec_Page.Stack_Point),SP - JP REINIT - ; -.SetUpSoftReset: - PUSH DE - CALL .PrepareSoftReset - CALL .PrepareResetSetUp - POP DE - LD (Spec_Page.RET_addr),DE - LD A,#FF - LD (Spec_Page.Reload_Version),A - LD A,(Spec_Page.page_3) - OUT (SLOT3),A - RET - - ; DI - ; LD A,ACEX.RET_PORT - ; LD B,Spec_Page - ; CALL SET_PORTS - ; ; - ; ; и так понятно что делает - ; IN A,(SLOT3) ; сохраняем номер воткнутой страницы - ; LD H,A - ; LD A,Spec_Page - ; OUT (SLOT3),A - ; ; - ; LD B,high BIOS.REINIT.SOFT_RESET - ; JR .INIT_ACEX.ifSoftreset - ; - ;;; -.INIT_ACEX.ERROR: - LD A,(Spec_Page.page_3) - OUT (SLOT3),A - ;SCF - RET -; -;--[] -.ACC_OFF: LD BC,Port_All_Mode - IN A,(C) - AND Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF - OUT (C),A - RET - ; -.ACC_ON: LD BC,Port_All_Mode - IN A,(C) - OR 1 ; ACC_ON - OUT (C),A - RET -;--[] -; -.INIT_ACEX.PROGRAM: - DISP Spec_Page.init_acex - ; - SAFE_PORTY - IN A,(FastRAM.ON) - ; IN A,(SLOT1) - ; LD (.slot1_page),A - ; - LD A,#FE ; чтоб проверить, что вызывать после CALL NZ,.INIT_ACEX.PROGRAM.LOAD - ; тут ZF должен быть из вызывающей процедуры - CALL NZ,.INIT_ACEX.PROGRAM.LOAD ; если RAM_BLOCK ID не равен 0, то выполняется - INC A ; флаг ZF=0 грузим из ROM - ; -.INIT_ACEX.PROGRAM.SET_KEYS: - LD A,3 - OUT (FastRAM.SLOT0),A ; Страница КЭШ = 3 - ; - LD HL,.INIT_ACEX.Reload_String ; флаг перезагрузки из КЭШ-а - JR Z,.skip ; устанавливаем флаг перезагрузки из КЭШ-а - INC L ; затираем флаг перезагрузки из КЭШ-а -.skip: LD DE,ACEX.LOADER.String_Address-#C000 - LD BC,#10 - LDIR - - LD HL,#FFFF ; залить конфу только при первой перезагрузке - ;LD HL,ACEX.LOADER.Reload_Flag ; заливать конфу при каждой перезагрузке - LD (ACEX.LOADER.Reload_Flag_Address-#C000),HL - ; -.INIT_ACEX.PROGRAM.END: - XOR A - OUT (FastRAM.SLOT0),A - IN A,(FastRAM.OFF) -; .slot1_page+1: LD A,0 - LD A,(Spec_Page.page_1) - OUT (SLOT1),A - RET - ; - ; -.INIT_ACEX.PROGRAM.LOAD: - XOR A ; страница КЭШ - LD HL,Spec_Page.bitstream_pages - OUT (FastRAM.SLOT0),A ; Страница КЭШ = 0 - INC A -.INIT_ACEX.PROGRAM.load_loop: - EX AF,AF' - LD A,(HL) - INC HL - CP #FF - RET Z - OUT (SLOT1),A ; страница с данными файла - EX AF,AF' - ; - ; перекидывание #3000 байтов в КЭШ(0) = #1000 - EXX - LD HL,#4000 - LD DE,#1000 - LD BC,#3000 - LDIR - ; докидывание #1000 байтов в КЭШ(1) = #0000 - ; HL = #7000 - OUT (FastRAM.SLOT0),A ; Страница КЭШ = 1 - INC A - ; - LD D,C ; LD DE,0 - LD B,#10 ; LD BC,#1000 - LDIR - EXX - JR .INIT_ACEX.PROGRAM.load_loop - - -.INIT_ACEX.Reload_String: - DB ACEX.RELOAD_STRING - ; - ENT -.INIT_ACEX.PROGRAM.Size EQU $-.INIT_ACEX.PROGRAM -;--[] -.PrepareSoftReset: - LD A,ACEX.RET_PORT - LD B,Spec_Page - CALL SET_PORTS - LD B,high BIOS.REINIT.SOFT_RESET - RET - -.PrepareResetSetUp: - DI - ; сохраняем воткнутые страницы в Spec_Page - IN A,(SLOT3) - LD H,A - LD A,Spec_Page - OUT (SLOT3),A - ; - IN A,(SLOT2) - LD L,A - LD (Spec_Page.page_2),HL - IN A,(SLOT0) - LD (Spec_Page.page_0),A - IN A,(SLOT1) - LD (Spec_Page.page_1),A - ; - LD A,high BIOS.REINIT.HARD_RESET - CP B - LD HL,Spec_Page.flag_R - JR NZ,.kill_flag - ; Устанавливаем ключи для HARD reset - LD (HL),"R" - INC HL -.kill_flag: LD (HL),"S" - INC HL - LD (HL),"T" - RET - ; - -; B - ramblock bitstream -.PrepareHardReset: - ; проверяем размер блока с конфой и получаем страницы конфы - LD HL,Spec_Page.bitstream_pages - LD A,B - AND A - JR Z,.INIT_ACEX.ReloadConfFromROM - ; - CALL EMM.GetMemBlkPages - RET C ; ERROR - LD A,BitStream_SizeInPages ; количество страниц в кэш для бистрима - CP B - RET C ; ERROR - LD A,(Spec_Page.bitstream_pages) - INC A - SCF - RET Z ; ERROR - ; -.INIT_ACEX.ReloadConfFromROM: - ; закидываем в Spec_Page прогу для заливки конфы - LD HL,.INIT_ACEX.PROGRAM - LD DE,Spec_Page.init_acex - LD BC,.INIT_ACEX.PROGRAM.Size - LDIR - ; если ZF=0, то процедура сделает ресет с перезаливкой из BIOS, иначе из КЭШ - JP Spec_Page.init_acex -;--[] -;*************************************** - - -;[x] -;--------------------------[;!TODO потестить]--------------------------; -; B - параметр сброса -; B = 1 - RESTART. -; B = 2 - Soft reset -; B = 3 - Hard reset -; B = 4 - Free memory except ZX pages -REINIT: DEC B - JR Z,.Restart ; 1 - DEC B - JR Z,.SoftReset ; 2 - DEC B - JR Z,.HardReset ; 3 - DEC B - SCF - RET NZ - ; ; 4 -.FreeNoZxMem: DI - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - LD (SYS_PAGE.SP_SAVE),SP - LD SP,SYS_PAGE.SYS_SP - PUSH BC - ; чистим буфер - LD HL,SYS_PAGE.SHARED_BUFFER_256b - LD DE,SYS_PAGE.SHARED_BUFFER_256b + 1 - LD BC,255 - LD (HL),0 - LDIR - ; - LD IX,SYS_PAGE.Block_IDs - LD H,high SYS_PAGE.RAM_TABLE - LD D,high SYS_PAGE.SHARED_BUFFER_256b - LD BC,2*256 + #FF ; 2 = vRAM и VROM ID's - CALL SAVE_CHAINS - ; - CALL EMM.InitMem - ; - LD HL,SYS_PAGE.SHARED_BUFFER_256b - LD DE,SYS_PAGE.RAM_TABLE - CALL RESTORE_CHAINS - ; CF=0 - POP BC - LD SP,(SYS_PAGE.SP_SAVE) - OUT (C),B - RET - -;[x] -.Restart: DI - XOR A - LD BC,#1FFD - OUT (C),A - LD B,#7F - OUT (C),A - OUT (RGADR),A - OUT (RGMOD),A - OUT (SLOT0),A - ; [ ] 16/09/24 free zx pages! - ;LD A,5 - ;OUT (SLOT1),A - ;LD A,2 - ;OUT (SLOT2),A - OUT (SLOT2),A - DEC A - OUT (SLOT1),A - ; - LD A,DCP_PAGE - OUT (SLOT3),A - JP 0 ;Restart -; - -; -.SoftReset: DI - LD A,#10 - LD BC,#1FFD - OUT (C),A ; 8-я страница !! - ; - LD A,RESET_PAGE - OUT (SLOT3),A - LD A,CNF_PORT.TURBO.OFF - OUT (SYS_PORT.ROM),A -.loop2: LD (#C000),A ; Soft RESET !!! - JR .loop2 -; - -;[x] -.HardReset: - DI - LD A,SYS_PORT.CNF_0 - OUT (SYS_PORT.ROM),A - ; - LD A,Z84.REG.Misc_Ctrl - OUT (Z84.SYS.Control),A - LD A,%0000'0011 ; CS1/CS0 enabled - OUT (Z84.SYS.Data),A - ; - LD A,DCP_PAGE - OUT (SLOT1),A ; set DCP page - LD A,ACEX.RESET - LD (#4400),A ; open for WR -.loop: LD BC,#0100 ; цикл сброса - OUT (C),C - LD B,C - OUT (C),C - JR .loop ; полностью зациклить! -; -;----------------------------------------------------------------------; -; Вход: H - RAM_TABLE -; D - Buffer for RAM_TABLE -; IX - указатель на последовательность из RAM BLOCK ID -; B - кол-во RAM BLOCK ID в последовательности -; C - #FF (чтоб LDI не ломало DJNZ счётчик) -SAVE_CHAINS: LD A,(IX) - INC IX - OR A - LD L,A - CALL NZ,COPY_CHAIN - DJNZ SAVE_CHAINS - RET -; Вход: H - RAM_TABLE -; L - RAM BLOCK ID -; D - Buffer for RAM_TABLE -COPY_CHAIN: LD E,L - LDI - DEC L - LD L,(HL) - INC L - RET Z - DEC L - JR COPY_CHAIN -;--------------; -; Вход: HL - копия RAM_TABLE откуда копировать -; DE - RAM_TABLE -RESTORE_CHAINS: XOR A -.loop: CP (HL) - JR Z,.NoCopy - LD E,L - LDI - DEC L -.NoCopy: INC L - JR NZ,.loop - RET -;----------------------------------------------------------------------; - - -;----------------------------------------------------------------------; -; старый вариант освобождения страниц спектрума через RAM BLK ID 1 -;----------------------------------------------------------------------; -; JR Z,.HardReset ;3 -; DEC B -; .ReinitZXpages: ;4 -; LD DE,RESERVED_PAGES ; таблица занятых системных страниц -; LD HL,SYS_PAGE.RAM_TABLE ; Адрес FAT ОЗУ. - -; LD C,SLOT3 -; IN B,(C) -; LD A,SYS_PAGE -; OUT (SLOT3),A - -; LD A,(DE) -; .zxloop: -; CP #FF -; JR Z,.endzxloop -; INC DE -; LD L,A - -; LD A,(HL) -; AND A -; JR NZ,.errorzxloop - -; LD A,(DE) -; LD (HL),A -; JR .zxloop - -; .errorzxloop: -; DEC DE -; LD HL,-RESERVED_PAGES-1 -; ADD HL,DE -; JR NC,.errorzxloop_noChanges - -; DEC DE -; LD H,high SYS_PAGE.RAM_TABLE -; LD A,(DE) -; LD L,A -; LD A,#FF -; LD (HL),A -; .errorzxloop_noChanges: -; SCF -; .endzxloop: -; OUT (C),B -; RET - -;----------------------------------------------------------------------; +; DISPLAY "Service" +; !FIXIT тут можно, походу, дохрена убрать + +; ; страницы с конфой для Sp97, для совместимости с древними прогами +; PG_SP1 equ #EC +; PG_SP2 equ #EE +; PG_AY equ #EA +; ; + +; ;!TODO замутить заливку конфы, рестарт, перехват ресета силами BIOS +; PG_Sp2000 EQU #FE +; PG_Sp2000_REINIT EQU #FD +; + +RST_CONF: +;--[] ZX Spectrum +.AY8910: CALL .ACC_OFF + LD DE,ACEX.Config_ID.Sp97_AY + JR .INT_PLD + ;LD A,CNF_PORT.CNF_1 + ;OUT (SYS_PORT.ON),A + ;RET +;--[] + +;--[] Sprinter ZX +.SP97_1: CALL .ACC_OFF + LD DE,ACEX.Config_ID.Sp97_1 + JR .INT_PLD +;--[] + +;--[] +.SP97_2: CALL .ACC_ON + LD DE,ACEX.Config_ID.Sp97_2 + JR .INT_PLD +;--[] + + +;--[] +;[x] +.SP2000: CALL .ACC_ON + LD DE,ACEX.Config_ID.Sp2000 + JR .INT_PLD +;--[] + + +;--[] +.CUSTOM: LD C,A + ; устанавливаем нулевую карту портов + LD A,CNF_PORT.CNF_0 + OUT (SYS_PORT.ON),A + LD A,C + ; + CP #80 ; тут теперь может любое число быть у старых прог + JR NC,.CHOOSE_CNF + ; only for old FLEX10K soft compatible +.crutch: LD C,SLOT3 + IN B,(C) + OUT (C),A ; PAGE с прошивкой + LD DE,(#C090) ; PLD-ID + OUT (C),B ; RET page +;--[] ;JR INT_PLD +.INT_PLD: ; only for old FLEX10K soft compatible + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + LD (SYS_PAGE.CONFIG_BYTE),DE + OUT (C),B + ; + LD A,E ; config-byte + CP #FF + LD A,#80 + JR Z,.YES_CBL + XOR A +.YES_CBL: LD BC,SP_SND.CBL.SYS_PORT + OUT (C),A + ; + LD A,E ; config-byte + OR #FE ;!HARDCODE + LD BC,Port_All_Mode ; SYSTEM Spectrum/Sprinter + OUT (C),A + ; + LD A,#3C + OUT (FDC_93.DrvCTRL),A + ; восстанавливаем карту портов - походу, не нужно + ;LD C,SLOT3 + ;IN B,(C) + ; LD A,SYS_PAGE + ; OUT (C),A + ; LD A,(SYS_PAGE.CONFIG_DE.CNF_PORT) + ;OUT (C),B + ;OUT (SYS_PORT.ON),A + XOR A + RET + ; + ;[x] +.CHOOSE_CNF: ; [x] bug with "free zx pages" + LD A,high ZX_MEM_PORT.Scorpion + IN A,(ZX_MEM_PORT) + RRCA + LD A,C + JR C,.not_vRAM_page + ; + IN A,(SLOT3) + CP C + LD A,C + JR Z,.crutch + ; [x] +.not_vRAM_page: CP ACEX.Config_PG.Sp2000_SoftRestartNow + JP Z,.ReturnSoftReset + ; + CP ACEX.Config_PG.Sp2000_AcexSetUpNow + JR Z,.INIT_ACEX + ; + CP ACEX.Config_PG.Sp2000_SetUp + JR Z,.SP2000 + ; + CP ACEX.Config_PG.Sp2000_SoftRestartSet + JR Z,.SetUpSoftReset + ; + CP ACEX.Config_PG.Sp2000_AcexSetUpSet + JR Z,.SetUpHardReset + ; + ; only for old FLEX10K soft compatible + CP ACEX.Config_PG.Sp97_1 + LD DE,ACEX.Config_ID.Sp97_1 + JR Z,.INT_PLD + ; + CP ACEX.Config_PG.Sp97_2 + LD DE,ACEX.Config_ID.Sp97_2 + JR Z,.INT_PLD + ; + CP ACEX.Config_PG.Sp97_AY + LD DE,ACEX.Config_ID.Sp97_AY + JR Z,.INT_PLD + SCF + RET + ; +; B - ID рамблока с bitstream + ;[x] +.INIT_ACEX: LD C,B + LD B,high BIOS.REINIT.HARD_RESET + CALL .PrepareResetSetUp + LD B,C + CALL .PrepareHardReset + JR C,.INIT_ACEX.ERROR + LD B,high BIOS.REINIT.HARD_RESET + JR .set_ret_addr + +; DI +; IN A,(SLOT3) ; сохраняем номер воткнутой страницы +; PUSH AF +; LD A,Spec_Page +; OUT (SLOT3),A +; ; проверяем размер блока с конфой и получаем страницы конфы +; LD HL,Spec_Page.bitstream_pages +; LD A,B +; AND A +; JR Z,.INIT_ACEX.ReloadConfFromROM +; ; +; CALL EMM.GetMemBlkPages +; LD A,B +; JR C,.INIT_ACEX.ERROR +; CP BitStream_SizeInPages+1 ; количество страниц в кэш для бистрима плюс одна +; JR NC,.INIT_ACEX.ERROR +; LD A,(Spec_Page.bitstream_pages) +; INC A +; JR Z,.INIT_ACEX.ERROR +; ; +; .INIT_ACEX.ReloadConfFromROM: +; ; закидываем в Spec_Page прогу для заливки конфы +; LD HL,.INIT_ACEX.PROGRAM +; LD DE,Spec_Page.init_acex +; LD BC,.INIT_ACEX.PROGRAM.Size +; LDIR +; ; если ZF=0, то процедура сделает ресет с перезаливкой из BIOS, иначе из КЭШ +; CALL Spec_Page.init_acex +; LD B,high BIOS.REINIT.HARD_RESET +; POP HL +; ; +; ;вход: B - параметр функции BIOS REINIT +; ; H - Spec_Page.page_3 +; .INIT_ACEX.ifSoftreset: +; ; сохраняем воткнутые страницы в Spec_Page +; IN A,(SLOT0) +; LD E,A +; IN A,(SLOT1) +; LD D,A +; IN A,(SLOT2) +; ;POP HL ; восстанавливаем номер воткнутой страницы +; LD L,A +; LD (Spec_Page.page_0),DE +; LD (Spec_Page.page_2),HL +; ; +; ; достаём адрес возврата в вызывающую функцию и сохраняем в Spec_Page +; POP DE +; LD HL,RST_18_1.exit +; XOR A +; SBC HL,DE +; JR NZ,.set_ret ; NZ - если вызов был по RST #18 +; POP DE ; если вызов был в ОЗУ по RST 8 +; INC A +; .set_ret: LD (Spec_Page.RET_addr),DE +; ; A=0 - SYS_PORT.ON +; ; A=1 - SYS_PORT.OFF +; LD (Spec_Page.Reload_Version),A +; LD (Spec_Page.Stack_Point),SP +; ; +; LD A,high BIOS.REINIT.HARD_RESET +; CP B +; JR NZ,.reinit +; ; Устанавливаем ключи для HARD reset +; LD HL,Spec_Page.flag_R +; LD (HL),"R" +; INC HL +; LD (HL),"S" +; INC HL +; LD (HL),"T" +; ; +; ; .. ... ... .. +; ;LD BC,BIOS.REINIT.HARD_RESET +; .reinit: JP REINIT + ; +.SetUpHardReset: + LD C,B + LD B,high BIOS.REINIT.HARD_RESET + CALL .PrepareResetSetUp + LD (Spec_Page.RET_addr),DE + LD A,#FF + LD (Spec_Page.Reload_Version),A + LD B,C + CALL .PrepareHardReset + JR .INIT_ACEX.ERROR ; нормальный выход в данном случае + ; +.ReturnSoftReset: + CALL .PrepareSoftReset + CALL .PrepareResetSetUp + ; достаём адрес возврата в вызывающую функцию и сохраняем в Spec_Page +.set_ret_addr: POP DE + LD HL,RST_18_1.exit + XOR A + SBC HL,DE + JR NZ,.set_ret ; NZ - если вызов был по RST #18 + POP DE ; если вызов был в ОЗУ по RST 8 + INC A +.set_ret: LD (Spec_Page.RET_addr),DE + ; A=0 - SYS_PORT.ON + ; A=1 - SYS_PORT.OFF + LD (Spec_Page.Reload_Version),A + LD (Spec_Page.Stack_Point),SP + JP REINIT + ; +.SetUpSoftReset: + PUSH DE + CALL .PrepareSoftReset + CALL .PrepareResetSetUp + POP DE + LD (Spec_Page.RET_addr),DE + LD A,#FF + LD (Spec_Page.Reload_Version),A + LD A,(Spec_Page.page_3) + OUT (SLOT3),A + RET + + ; DI + ; LD A,ACEX.RET_PORT + ; LD B,Spec_Page + ; CALL SET_PORTS + ; ; + ; ; и так понятно что делает + ; IN A,(SLOT3) ; сохраняем номер воткнутой страницы + ; LD H,A + ; LD A,Spec_Page + ; OUT (SLOT3),A + ; ; + ; LD B,high BIOS.REINIT.SOFT_RESET + ; JR .INIT_ACEX.ifSoftreset + ; + ;;; +.INIT_ACEX.ERROR: + LD A,(Spec_Page.page_3) + OUT (SLOT3),A + ;SCF + RET +; +;--[] +.ACC_OFF: LD BC,Port_All_Mode + IN A,(C) + AND Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF + OUT (C),A + RET + ; +.ACC_ON: LD BC,Port_All_Mode + IN A,(C) + OR 1 ; ACC_ON + OUT (C),A + RET +;--[] +; +.INIT_ACEX.PROGRAM: + DISP Spec_Page.init_acex + ; + SAFE_PORTY + IN A,(FastRAM.ON) + ; IN A,(SLOT1) + ; LD (.slot1_page),A + ; + LD A,#FE ; чтоб проверить, что вызывать после CALL NZ,.INIT_ACEX.PROGRAM.LOAD + ; тут ZF должен быть из вызывающей процедуры + CALL NZ,.INIT_ACEX.PROGRAM.LOAD ; если RAM_BLOCK ID не равен 0, то выполняется + INC A ; флаг ZF=0 грузим из ROM + ; +.INIT_ACEX.PROGRAM.SET_KEYS: + LD A,3 + OUT (FastRAM.SLOT0),A ; Страница КЭШ = 3 + ; + LD HL,.INIT_ACEX.Reload_String ; флаг перезагрузки из КЭШ-а + JR Z,.skip ; устанавливаем флаг перезагрузки из КЭШ-а + INC L ; затираем флаг перезагрузки из КЭШ-а +.skip: LD DE,ACEX.LOADER.String_Address-#C000 + LD BC,#10 + LDIR + + LD HL,#FFFF ; залить конфу только при первой перезагрузке + ;LD HL,ACEX.LOADER.Reload_Flag ; заливать конфу при каждой перезагрузке + LD (ACEX.LOADER.Reload_Flag_Address-#C000),HL + ; +.INIT_ACEX.PROGRAM.END: + XOR A + OUT (FastRAM.SLOT0),A + IN A,(FastRAM.OFF) +; .slot1_page+1: LD A,0 + LD A,(Spec_Page.page_1) + OUT (SLOT1),A + RET + ; + ; +.INIT_ACEX.PROGRAM.LOAD: + XOR A ; страница КЭШ + LD HL,Spec_Page.bitstream_pages + OUT (FastRAM.SLOT0),A ; Страница КЭШ = 0 + INC A +.INIT_ACEX.PROGRAM.load_loop: + EX AF,AF' + LD A,(HL) + INC HL + CP #FF + RET Z + OUT (SLOT1),A ; страница с данными файла + EX AF,AF' + ; + ; перекидывание #3000 байтов в КЭШ(0) = #1000 + EXX + LD HL,#4000 + LD DE,#1000 + LD BC,#3000 + LDIR + ; докидывание #1000 байтов в КЭШ(1) = #0000 + ; HL = #7000 + OUT (FastRAM.SLOT0),A ; Страница КЭШ = 1 + INC A + ; + LD D,C ; LD DE,0 + LD B,#10 ; LD BC,#1000 + LDIR + EXX + JR .INIT_ACEX.PROGRAM.load_loop + + +.INIT_ACEX.Reload_String: + DB ACEX.RELOAD_STRING + ; + ENT +.INIT_ACEX.PROGRAM.Size EQU $-.INIT_ACEX.PROGRAM +;--[] +.PrepareSoftReset: + LD A,ACEX.RET_PORT + LD B,Spec_Page + CALL SET_PORTS + LD B,high BIOS.REINIT.SOFT_RESET + RET + +.PrepareResetSetUp: + DI + ; сохраняем воткнутые страницы в Spec_Page + IN A,(SLOT3) + LD H,A + LD A,Spec_Page + OUT (SLOT3),A + ; + IN A,(SLOT2) + LD L,A + LD (Spec_Page.page_2),HL + IN A,(SLOT0) + LD (Spec_Page.page_0),A + IN A,(SLOT1) + LD (Spec_Page.page_1),A + ; + LD A,high BIOS.REINIT.HARD_RESET + CP B + LD HL,Spec_Page.flag_R + JR NZ,.kill_flag + ; Устанавливаем ключи для HARD reset + LD (HL),"R" + INC HL +.kill_flag: LD (HL),"S" + INC HL + LD (HL),"T" + RET + ; + +; B - ramblock bitstream +.PrepareHardReset: + ; проверяем размер блока с конфой и получаем страницы конфы + LD HL,Spec_Page.bitstream_pages + LD A,B + AND A + JR Z,.INIT_ACEX.ReloadConfFromROM + ; + CALL EMM.GetMemBlkPages + RET C ; ERROR + LD A,BitStream_SizeInPages ; количество страниц в кэш для бистрима + CP B + RET C ; ERROR + LD A,(Spec_Page.bitstream_pages) + INC A + SCF + RET Z ; ERROR + ; +.INIT_ACEX.ReloadConfFromROM: + ; закидываем в Spec_Page прогу для заливки конфы + LD HL,.INIT_ACEX.PROGRAM + LD DE,Spec_Page.init_acex + LD BC,.INIT_ACEX.PROGRAM.Size + LDIR + ; если ZF=0, то процедура сделает ресет с перезаливкой из BIOS, иначе из КЭШ + JP Spec_Page.init_acex +;--[] +;*************************************** + + +;[x] +;--------------------------[;!TODO потестить]--------------------------; +; B - параметр сброса +; B = 1 - RESTART. +; B = 2 - Soft reset +; B = 3 - Hard reset +; B = 4 - Free memory except ZX pages +REINIT: DEC B + JR Z,.Restart ; 1 + DEC B + JR Z,.SoftReset ; 2 + DEC B + JR Z,.HardReset ; 3 + DEC B + SCF + RET NZ + ; ; 4 +.FreeNoZxMem: DI + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + LD (SYS_PAGE.SP_SAVE),SP + LD SP,SYS_PAGE.SYS_SP + PUSH BC + ; чистим буфер + LD HL,SYS_PAGE.SHARED_BUFFER_256b + LD DE,SYS_PAGE.SHARED_BUFFER_256b + 1 + LD BC,255 + LD (HL),0 + LDIR + ; + LD IX,SYS_PAGE.Block_IDs + LD H,high SYS_PAGE.RAM_TABLE + LD D,high SYS_PAGE.SHARED_BUFFER_256b + LD BC,2*256 + #FF ; 2 = vRAM и VROM ID's + CALL SAVE_CHAINS + ; + CALL EMM.InitMem + ; + LD HL,SYS_PAGE.SHARED_BUFFER_256b + LD DE,SYS_PAGE.RAM_TABLE + CALL RESTORE_CHAINS + ; CF=0 + POP BC + LD SP,(SYS_PAGE.SP_SAVE) + OUT (C),B + RET + +;[x] +.Restart: DI + XOR A + LD BC,#1FFD + OUT (C),A + LD B,#7F + OUT (C),A + OUT (RGADR),A + OUT (RGMOD),A + OUT (SLOT0),A + ; [ ] 16/09/24 free zx pages! + ;LD A,5 + ;OUT (SLOT1),A + ;LD A,2 + ;OUT (SLOT2),A + OUT (SLOT2),A + DEC A + OUT (SLOT1),A + ; + LD A,DCP_PAGE + OUT (SLOT3),A + JP 0 ;Restart +; + +; +.SoftReset: DI + LD A,#10 + LD BC,#1FFD + OUT (C),A ; 8-я страница !! + ; + LD A,RESET_PAGE + OUT (SLOT3),A + LD A,CNF_PORT.TURBO.OFF + OUT (SYS_PORT.ROM),A +.loop2: LD (#C000),A ; Soft RESET !!! + JR .loop2 +; + +;[x] +.HardReset: + DI + LD A,SYS_PORT.CNF_0 + OUT (SYS_PORT.ROM),A + ; + LD A,Z84.REG.Misc_Ctrl + OUT (Z84.SYS.Control),A + LD A,%0000'0011 ; CS1/CS0 enabled + OUT (Z84.SYS.Data),A + ; + LD A,DCP_PAGE + OUT (SLOT1),A ; set DCP page + LD A,ACEX.RESET + LD (#4400),A ; open for WR +.loop: LD BC,#0100 ; цикл сброса + OUT (C),C + LD B,C + OUT (C),C + JR .loop ; полностью зациклить! +; +;----------------------------------------------------------------------; +; Вход: H - RAM_TABLE +; D - Buffer for RAM_TABLE +; IX - указатель на последовательность из RAM BLOCK ID +; B - кол-во RAM BLOCK ID в последовательности +; C - #FF (чтоб LDI не ломало DJNZ счётчик) +SAVE_CHAINS: LD A,(IX) + INC IX + OR A + LD L,A + CALL NZ,COPY_CHAIN + DJNZ SAVE_CHAINS + RET +; Вход: H - RAM_TABLE +; L - RAM BLOCK ID +; D - Buffer for RAM_TABLE +COPY_CHAIN: LD E,L + LDI + DEC L + LD L,(HL) + INC L + RET Z + DEC L + JR COPY_CHAIN +;--------------; +; Вход: HL - копия RAM_TABLE откуда копировать +; DE - RAM_TABLE +RESTORE_CHAINS: XOR A +.loop: CP (HL) + JR Z,.NoCopy + LD E,L + LDI + DEC L +.NoCopy: INC L + JR NZ,.loop + RET +;----------------------------------------------------------------------; + + +;----------------------------------------------------------------------; +; старый вариант освобождения страниц спектрума через RAM BLK ID 1 +;----------------------------------------------------------------------; +; JR Z,.HardReset ;3 +; DEC B +; .ReinitZXpages: ;4 +; LD DE,RESERVED_PAGES ; таблица занятых системных страниц +; LD HL,SYS_PAGE.RAM_TABLE ; Адрес FAT ОЗУ. + +; LD C,SLOT3 +; IN B,(C) +; LD A,SYS_PAGE +; OUT (SLOT3),A + +; LD A,(DE) +; .zxloop: +; CP #FF +; JR Z,.endzxloop +; INC DE +; LD L,A + +; LD A,(HL) +; AND A +; JR NZ,.errorzxloop + +; LD A,(DE) +; LD (HL),A +; JR .zxloop + +; .errorzxloop: +; DEC DE +; LD HL,-RESERVED_PAGES-1 +; ADD HL,DE +; JR NC,.errorzxloop_noChanges + +; DEC DE +; LD H,high SYS_PAGE.RAM_TABLE +; LD A,(DE) +; LD L,A +; LD A,#FF +; LD (HL),A +; .errorzxloop_noChanges: +; SCF +; .endzxloop: +; OUT (C),B +; RET + +;----------------------------------------------------------------------; ; \ No newline at end of file diff --git a/src/bios/exp/FUNC_SYS.ASM b/bios/exp/FUNC_SYS.ASM similarity index 100% rename from src/bios/exp/FUNC_SYS.ASM rename to bios/exp/FUNC_SYS.ASM diff --git a/src/bios/exp/ZX_MEM.TXT b/bios/exp/ZX_MEM.TXT similarity index 100% rename from src/bios/exp/ZX_MEM.TXT rename to bios/exp/ZX_MEM.TXT diff --git a/src/bios/loader/bitstream_header.inc b/bios/loader/bitstream_header.inc similarity index 96% rename from src/bios/loader/bitstream_header.inc rename to bios/loader/bitstream_header.inc index 6093006..d8ec35e 100644 --- a/src/bios/loader/bitstream_header.inc +++ b/bios/loader/bitstream_header.inc @@ -1,5 +1,5 @@ -; Header of bitstream which non packed - DB #FF,#FF,#62,#7B,#39,#00;,#FF,#FF ; 1k30 -; Packed: - ;DB #FF,#FF,#62,#7B,#3C,#00;,#01,#FF ; 1k50 +; Header of bitstream which non packed + DB #FF,#FF,#62,#7B,#39,#00;,#FF,#FF ; 1k30 +; Packed: + ;DB #FF,#FF,#62,#7B,#3C,#00;,#01,#FF ; 1k50 ; \ No newline at end of file diff --git a/src/bios/loader/loader.asm b/bios/loader/loader.asm similarity index 93% rename from src/bios/loader/loader.asm rename to bios/loader/loader.asm index 21158c3..2ecd580 100644 --- a/src/bios/loader/loader.asm +++ b/bios/loader/loader.asm @@ -1,169 +1,169 @@ -; -;**********************************; -; ACEX Loading program ; -;**********************************; - MACRO Conf_loader altera_chip -.START: DI - LD BC,#FF*256 + Z84.SYS.Control - XOR A ; Z84.REG.WaitState_Ctrl - register - waits - OUT (C),A ; Z84.SYS.Control - INC C ; LD BC,#FFEF - LD A,4 ; Memory waits set to 1 - OUT (C),A ; Z84.SYS.Data - - DEC C ; Z84.SYS.Control - DEC A ; LD A,3 - 3-nd register - boundaries - OUT (C),A ; Z84.REG.Misc_Ctrl - INC C ; cs0 enable, cs1 enable, 32-Bit CRC disable, reset output enable, Clock Divide-by-two - OUT (C),A ; Z84.SYS.Data - - DEC C ; Z84.SYS.Control - DEC A ; LD A,2 - Z84.REG..CS_Boundary 2-nd register - boundaries - OUT (C),A ; Z84.SYS.Data - INC C - LD A,#FE ; boundaries FFFF..F000 - CS1 - OUT (C),A ; EFFF..0000 - CS0 - - JR .LOOP_S1 -;************************************** - BLOCK #38-$,#FF - JP 0 -;************************************** - -.LOOP_S1: - LD HL,#FEF0 ; !HARDCODE - LD DE,.STRING -.LOOP_S: - LD A,(DE) - CP (HL) - JR NZ,.NO_CNF_RAM - INC E - INC L - JR NZ,.LOOP_S ; !!!!! привязка к адресу в HL - -; !TODO убрать вейты для кэша? - LD BC,#FF*256 + Z84.SYS.Control - LD A,Z84.REG.CS_Boundary - OUT (C),A ; 0 register - waits - INC C - LD A,#F0 - OUT (C),A ; boundaries FFFF..1000 - CS1 -; ; 0FFF..0000 - CS0 - LD HL,#1000 ; !!!!! Load bitstream from Fast-RAM - - JR .NEW_SHM - -;************************************** - BLOCK #66-$,#FF - JP 0 -;************************************** - -.NO_CNF_RAM: - LD HL,#0100 ; !!!!! Load bitstream from ROM -.NEW_SHM: -;--------------[conf check]------------- - LD A,H ; сохраняем старший адрес начала конфы, -; начало конфы должно быть с младшим адресом = 0 - EXX - LD L,0 - LD H,A - EX AF,AF' - - ; в HL адрес первого байта конфы - LD DE,.Conf_header - LD B,.Conf_header.length -.conf_header_loop: - LD A,(DE) - CP (HL) - JR NZ,.Conf_Packed - INC DE - INC L - DJNZ .conf_header_loop - - ;XOR A - JR .exit_conf_check -.Conf_Packed: - SCF -.exit_conf_check: - EX AF,AF' - EXX -;--------------------------------------- - - LD DE,#FE00 ;!HARDCODE ; !!!!! Check flag "don't erase fast-ram bitstream" - "IM" - LD A,(#FEE0) - CP "I" - JR NZ,.ONES_CONFIG - LD A,(#FEE1) - CP "M" - JR NZ,.ONES_CONFIG - - DEC D ; multiple config! - -.ONES_CONFIG: - LD IY,SP2000_Loader_Flag - ;LD IX,#FFFD - LD IX,ACEX.Config_ID.Sp2000 - -.LOOP1: - LD A,(HL) - - ex af,AF' - ld b,1 - jr nc,.no_packed_loop - ex af,AF' - - LD B,A ; save byte to B to check later if we worked with zero - OR A - JR NZ,.LOOP1A - INC HL - LD C,(HL) ; set counter - jr .LOOP1A -.no_packed_loop: - ex af,AF' -.LOOP1A: -;---[Sending bits to Altera]---[v] - DUP 7 - LD (DE),A - RRCA - EDUP - LD (DE),A -;------------------------------[^] - INC E - - LD A,B ; was it zero? - OR A - JR NZ,.LOOP1E -; it was zero so we need to decrement counter - DEC C - JR NZ,.LOOP1A -; end of the counter reached -.LOOP1E: - INC HL - JR .LOOP1 - -.STRING: DB ACEX.RELOAD_STRING - -.Conf_header: include 'src/bios/Loader/bitstream_header.inc' -.Conf_header.length EQU $-.Conf_header - -;----------------------; - BLOCK #FE-$,#FF -; Это, скорее всего, рудимент, тот самый байт описателя конфы, -; который ищет загрузчик для Sp97 по старому адресу #C090. -; Воткнул его в конце загрузчика, может потом пригодится. -.DEF_SYM: DW ACEX.Config_ID.Sp2000 -;------------------------------[Loader end] - - DEFINE Altera_Chip altera_chip - LUA - local file_path = 'Build/ACEX/' - local file_ext = '.BIN' - local altera_ver = sj.get_define("Altera_Chip") - sj.insert_define("Altera_File", '"' .. file_path .. altera_ver .. file_ext .. '"') - ENDLUA - UNDEFINE Altera_Chip - - INCBIN Altera_File - UNDEFINE Altera_File - ENDM -; +; +;**********************************; +; ACEX Loading program ; +;**********************************; + MACRO Conf_loader altera_chip +.START: DI + LD BC,#FF*256 + Z84.SYS.Control + XOR A ; Z84.REG.WaitState_Ctrl - register - waits + OUT (C),A ; Z84.SYS.Control + INC C ; LD BC,#FFEF + LD A,4 ; Memory waits set to 1 + OUT (C),A ; Z84.SYS.Data + + DEC C ; Z84.SYS.Control + DEC A ; LD A,3 - 3-nd register - boundaries + OUT (C),A ; Z84.REG.Misc_Ctrl + INC C ; cs0 enable, cs1 enable, 32-Bit CRC disable, reset output enable, Clock Divide-by-two + OUT (C),A ; Z84.SYS.Data + + DEC C ; Z84.SYS.Control + DEC A ; LD A,2 - Z84.REG..CS_Boundary 2-nd register - boundaries + OUT (C),A ; Z84.SYS.Data + INC C + LD A,#FE ; boundaries FFFF..F000 - CS1 + OUT (C),A ; EFFF..0000 - CS0 + + JR .LOOP_S1 +;************************************** + BLOCK #38-$,#FF + JP 0 +;************************************** + +.LOOP_S1: + LD HL,#FEF0 ; !HARDCODE + LD DE,.STRING +.LOOP_S: + LD A,(DE) + CP (HL) + JR NZ,.NO_CNF_RAM + INC E + INC L + JR NZ,.LOOP_S ; !!!!! привязка к адресу в HL + +; !TODO убрать вейты для кэша? + LD BC,#FF*256 + Z84.SYS.Control + LD A,Z84.REG.CS_Boundary + OUT (C),A ; 0 register - waits + INC C + LD A,#F0 + OUT (C),A ; boundaries FFFF..1000 - CS1 +; ; 0FFF..0000 - CS0 + LD HL,#1000 ; !!!!! Load bitstream from Fast-RAM + + JR .NEW_SHM + +;************************************** + BLOCK #66-$,#FF + JP 0 +;************************************** + +.NO_CNF_RAM: + LD HL,#0100 ; !!!!! Load bitstream from ROM +.NEW_SHM: +;--------------[conf check]------------- + LD A,H ; сохраняем старший адрес начала конфы, +; начало конфы должно быть с младшим адресом = 0 + EXX + LD L,0 + LD H,A + EX AF,AF' + + ; в HL адрес первого байта конфы + LD DE,.Conf_header + LD B,.Conf_header.length +.conf_header_loop: + LD A,(DE) + CP (HL) + JR NZ,.Conf_Packed + INC DE + INC L + DJNZ .conf_header_loop + + ;XOR A + JR .exit_conf_check +.Conf_Packed: + SCF +.exit_conf_check: + EX AF,AF' + EXX +;--------------------------------------- + + LD DE,#FE00 ;!HARDCODE ; !!!!! Check flag "don't erase fast-ram bitstream" - "IM" + LD A,(#FEE0) + CP "I" + JR NZ,.ONES_CONFIG + LD A,(#FEE1) + CP "M" + JR NZ,.ONES_CONFIG + + DEC D ; multiple config! + +.ONES_CONFIG: + LD IY,SP2000_Loader_Flag + ;LD IX,#FFFD + LD IX,ACEX.Config_ID.Sp2000 + +.LOOP1: + LD A,(HL) + + ex af,AF' + ld b,1 + jr nc,.no_packed_loop + ex af,AF' + + LD B,A ; save byte to B to check later if we worked with zero + OR A + JR NZ,.LOOP1A + INC HL + LD C,(HL) ; set counter + jr .LOOP1A +.no_packed_loop: + ex af,AF' +.LOOP1A: +;---[Sending bits to Altera]---[v] + DUP 7 + LD (DE),A + RRCA + EDUP + LD (DE),A +;------------------------------[^] + INC E + + LD A,B ; was it zero? + OR A + JR NZ,.LOOP1E +; it was zero so we need to decrement counter + DEC C + JR NZ,.LOOP1A +; end of the counter reached +.LOOP1E: + INC HL + JR .LOOP1 + +.STRING: DB ACEX.RELOAD_STRING + +.Conf_header: include 'bios/Loader/bitstream_header.inc' +.Conf_header.length EQU $-.Conf_header + +;----------------------; + BLOCK #FE-$,#FF +; Это, скорее всего, рудимент, тот самый байт описателя конфы, +; который ищет загрузчик для Sp97 по старому адресу #C090. +; Воткнул его в конце загрузчика, может потом пригодится. +.DEF_SYM: DW ACEX.Config_ID.Sp2000 +;------------------------------[Loader end] + + DEFINE Altera_Chip altera_chip + LUA + local file_path = 'Build/ACEX/' + local file_ext = '.BIN' + local altera_ver = sj.get_define("Altera_Chip") + sj.insert_define("Altera_File", '"' .. file_path .. altera_ver .. file_ext .. '"') + ENDLUA + UNDEFINE Altera_Chip + + INCBIN Altera_File + UNDEFINE Altera_File + ENDM +; diff --git a/src/bios/logo/Projects/LOGO.PAK b/bios/logo/Projects/LOGO.PAK similarity index 100% rename from src/bios/logo/Projects/LOGO.PAK rename to bios/logo/Projects/LOGO.PAK diff --git a/src/bios/logo/Projects/LOGO.bmp b/bios/logo/Projects/LOGO.bmp similarity index 100% rename from src/bios/logo/Projects/LOGO.bmp rename to bios/logo/Projects/LOGO.bmp diff --git a/src/bios/logo/Projects/MAIN.xcf b/bios/logo/Projects/MAIN.xcf similarity index 100% rename from src/bios/logo/Projects/MAIN.xcf rename to bios/logo/Projects/MAIN.xcf diff --git a/src/bios/logo/Projects/NY_Kokoshnik.PAK b/bios/logo/Projects/NY_Kokoshnik.PAK similarity index 100% rename from src/bios/logo/Projects/NY_Kokoshnik.PAK rename to bios/logo/Projects/NY_Kokoshnik.PAK diff --git a/src/bios/logo/Projects/NY_Kokoshnik.bmp b/bios/logo/Projects/NY_Kokoshnik.bmp similarity index 100% rename from src/bios/logo/Projects/NY_Kokoshnik.bmp rename to bios/logo/Projects/NY_Kokoshnik.bmp diff --git a/src/bios/logo/Projects/NY_mustache.PAK b/bios/logo/Projects/NY_mustache.PAK similarity index 100% rename from src/bios/logo/Projects/NY_mustache.PAK rename to bios/logo/Projects/NY_mustache.PAK diff --git a/src/bios/logo/Projects/NY_mustache.bmp b/bios/logo/Projects/NY_mustache.bmp similarity index 100% rename from src/bios/logo/Projects/NY_mustache.bmp rename to bios/logo/Projects/NY_mustache.bmp diff --git a/src/bios/logo/Projects/test.png b/bios/logo/Projects/test.png similarity index 100% rename from src/bios/logo/Projects/test.png rename to bios/logo/Projects/test.png diff --git a/src/bios/logo/Set_Pictures.asm b/bios/logo/Set_Pictures.asm similarity index 97% rename from src/bios/logo/Set_Pictures.asm rename to bios/logo/Set_Pictures.asm index d7f9aff..b14865d 100644 --- a/src/bios/logo/Set_Pictures.asm +++ b/bios/logo/Set_Pictures.asm @@ -101,8 +101,8 @@ days_table: .November EQU 0 .December: DZ 31 -NewYear: INCLUDE './src/bios/logo/use/New_Year.inc' -;.March8: INCLUDE './src/bios/logo/use/March_8.inc' +NewYear: INCLUDE './bios/logo/use/New_Year.inc' +;.March8: INCLUDE './bios/logo/use/March_8.inc' ENDIF diff --git a/src/bios/logo/clean.cmd b/bios/logo/clean.cmd similarity index 92% rename from src/bios/logo/clean.cmd rename to bios/logo/clean.cmd index ca561e9..d5a3907 100644 --- a/src/bios/logo/clean.cmd +++ b/bios/logo/clean.cmd @@ -1,4 +1,4 @@ -@echo off -del *.bin /s -del *.lst /s -del *.log /s +@echo off +del *.bin /s +del *.lst /s +del *.log /s diff --git a/src/bios/logo/compile.log b/bios/logo/compile.log similarity index 97% rename from src/bios/logo/compile.log rename to bios/logo/compile.log index 4514673..6232a5d 100644 --- a/src/bios/logo/compile.log +++ b/bios/logo/compile.log @@ -1,4 +1,4 @@ -Extractor BMP-files for Sprinter BIOS logo -Copyright (c) 2022 Sprinter Team -File [psfathers.bmp], found 8 bit BMP 128x72, output RGB4 [LOGO_PAL.BIN] and [LOGO_DAT.BIN] -Done. +Extractor BMP-files for Sprinter BIOS logo +Copyright (c) 2022 Sprinter Team +File [psfathers.bmp], found 8 bit BMP 128x72, output RGB4 [LOGO_PAL.BIN] and [LOGO_DAT.BIN] +Done. diff --git a/src/bios/logo/make.cmd b/bios/logo/make.cmd similarity index 95% rename from src/bios/logo/make.cmd rename to bios/logo/make.cmd index 9ca40da..04c3182 100644 --- a/src/bios/logo/make.cmd +++ b/bios/logo/make.cmd @@ -1,23 +1,23 @@ -rem @echo off -set BIN=..\..\bin -set LOG=compile.log -for /F %%i in ('date /t') do set mydate=%%i -for /F %%i in ('time /t') do set mytime=%%i -set mydt=%mydate% %mytime% - -rem set LOGO_FILE=peters.bmp -set LOGO_FILE=psfathers.bmp - -echo 5. [1/1] BMP LOGO -echo %mydt%: [1/1] BMP LOGO > %LOG% -%BIN%\bmp_extract.exe %LOGO_FILE% /pn LOGO_PAL.BIN /dn LOGO_DAT.BIN /pt 4 >> %LOG% -if errorlevel 1 goto error - -goto quit - -:error -echo ERROR during compile BMP LOGO -pause 0 -exit 3 - -:quit +rem @echo off +set BIN=..\..\bin +set LOG=compile.log +for /F %%i in ('date /t') do set mydate=%%i +for /F %%i in ('time /t') do set mytime=%%i +set mydt=%mydate% %mytime% + +rem set LOGO_FILE=peters.bmp +set LOGO_FILE=psfathers.bmp + +echo 5. [1/1] BMP LOGO +echo %mydt%: [1/1] BMP LOGO > %LOG% +%BIN%\bmp_extract.exe %LOGO_FILE% /pn LOGO_PAL.BIN /dn LOGO_DAT.BIN /pt 4 >> %LOG% +if errorlevel 1 goto error + +goto quit + +:error +echo ERROR during compile BMP LOGO +pause 0 +exit 3 + +:quit diff --git a/src/bios/logo/peters.bmp b/bios/logo/peters.bmp similarity index 100% rename from src/bios/logo/peters.bmp rename to bios/logo/peters.bmp diff --git a/src/bios/logo/pfathers.bmp b/bios/logo/pfathers.bmp similarity index 100% rename from src/bios/logo/pfathers.bmp rename to bios/logo/pfathers.bmp diff --git a/src/bios/logo/psclean.bmp b/bios/logo/psclean.bmp similarity index 100% rename from src/bios/logo/psclean.bmp rename to bios/logo/psclean.bmp diff --git a/src/bios/logo/psfathers.bmp b/bios/logo/psfathers.bmp similarity index 100% rename from src/bios/logo/psfathers.bmp rename to bios/logo/psfathers.bmp diff --git a/src/bios/logo/use/LOGO.bmp b/bios/logo/use/LOGO.bmp similarity index 100% rename from src/bios/logo/use/LOGO.bmp rename to bios/logo/use/LOGO.bmp diff --git a/src/bios/logo/use/NY_Kokoshnik.bmp b/bios/logo/use/NY_Kokoshnik.bmp similarity index 100% rename from src/bios/logo/use/NY_Kokoshnik.bmp rename to bios/logo/use/NY_Kokoshnik.bmp diff --git a/src/bios/logo/use/NY_Kokoshnik_DAT.BIN b/bios/logo/use/NY_Kokoshnik_DAT.BIN similarity index 100% rename from src/bios/logo/use/NY_Kokoshnik_DAT.BIN rename to bios/logo/use/NY_Kokoshnik_DAT.BIN diff --git a/src/bios/logo/use/NY_mustache.bmp b/bios/logo/use/NY_mustache.bmp similarity index 100% rename from src/bios/logo/use/NY_mustache.bmp rename to bios/logo/use/NY_mustache.bmp diff --git a/src/bios/logo/use/NY_mustache_DAT.BIN b/bios/logo/use/NY_mustache_DAT.BIN similarity index 100% rename from src/bios/logo/use/NY_mustache_DAT.BIN rename to bios/logo/use/NY_mustache_DAT.BIN diff --git a/bios/logo/use/New_Year.inc b/bios/logo/use/New_Year.inc new file mode 100644 index 0000000..d669ea7 --- /dev/null +++ b/bios/logo/use/New_Year.inc @@ -0,0 +1,16 @@ + MODULE _mNewYear + + LUA PASS1 + make_pic_files ("./bios/logo/use/NY_Kokoshnik", 0, 1) + make_pic_files ("./bios/logo/use/NY_mustache", 0, 1) + print() + ENDLUA + + BYTE 2 ; количество спрайтов + EasterTable 48, 42, 13, 2, sprite1 + EasterTable 37, 6, 69, 26, sprite2 +sprite1: INCBIN './bios/logo/use/NY_Kokoshnik_DAT.bin' +sprite2: INCBIN './bios/logo/use/NY_mustache_DAT.bin' + + ENDMODULE +; \ No newline at end of file diff --git a/src/bios/mem_map.txt b/bios/mem_map.txt similarity index 88% rename from src/bios/mem_map.txt rename to bios/mem_map.txt index 7ac2697..3a67672 100644 --- a/src/bios/mem_map.txt +++ b/bios/mem_map.txt @@ -1,16 +1,16 @@ -#10 - EXTENSION -#11 - LOGO #2800 bytes -#12 - sp_128 -#13 - sp_48 -#14 - sp_trd -#15 - ROM Disk Recovery -#16 - ROM Disk Recovery -#17 - ROM Disk Recovery -#18 - BIOS -#19 - ROM Disk Recovery -#1A - ROM Disk Recovery -#1B - ROM Disk Recovery -#1C - Loader #100 bytes, bitstream #3F00 bytes -#1D - Bitstream #4000 bytes -#1E - Bitstream #4000 bytes +#10 - EXTENSION +#11 - LOGO #2800 bytes +#12 - sp_128 +#13 - sp_48 +#14 - sp_trd +#15 - ROM Disk Recovery +#16 - ROM Disk Recovery +#17 - ROM Disk Recovery +#18 - BIOS +#19 - ROM Disk Recovery +#1A - ROM Disk Recovery +#1B - ROM Disk Recovery +#1C - Loader #100 bytes, bitstream #3F00 bytes +#1D - Bitstream #4000 bytes +#1E - Bitstream #4000 bytes #1F - Bitstream #4000 bytes \ No newline at end of file diff --git a/src/bios/rom/BIOS.inc b/bios/rom/BIOS.inc similarity index 96% rename from src/bios/rom/BIOS.inc rename to bios/rom/BIOS.inc index 8db15b7..529dcc6 100644 --- a/src/bios/rom/BIOS.inc +++ b/bios/rom/BIOS.inc @@ -1,5 +1,5 @@ -;WITH_BUILD EQU 1 ;BIOS NUMBER INCLUDED BUILD NUMBER -TEST_Build EQU 0 -Logo_X_size EQU 128 -Logo_Y_size EQU 72 -;WITH_2IDE EQU 1 ;SECONDARY IDE +;WITH_BUILD EQU 1 ;BIOS NUMBER INCLUDED BUILD NUMBER +TEST_Build EQU 0 +Logo_X_size EQU 128 +Logo_Y_size EQU 72 +;WITH_2IDE EQU 1 ;SECONDARY IDE diff --git a/src/bios/rom/MEM_MAP.inc b/bios/rom/MEM_MAP.inc similarity index 97% rename from src/bios/rom/MEM_MAP.inc rename to bios/rom/MEM_MAP.inc index 2f86374..1c50f25 100644 --- a/src/bios/rom/MEM_MAP.inc +++ b/bios/rom/MEM_MAP.inc @@ -1,72 +1,72 @@ -; -; ██████╗ ██████╗ ███╗ ███╗ ███╗ ███╗ █████╗ ██████╗ -; ██╔══██╗██╔═══██╗████╗ ████║ ████╗ ████║██╔══██╗██╔══██╗ -; ██████╔╝██║ ██║██╔████╔██║ ██╔████╔██║███████║██████╔╝ -; ██╔══██╗██║ ██║██║╚██╔╝██║ ██║╚██╔╝██║██╔══██║██╔═══╝ -; ██║ ██║╚██████╔╝██║ ╚═╝ ██║ ██║ ╚═╝ ██║██║ ██║██║ -; ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ -; -ROM_MAP: -.EXP EQU 0 -.EXP.STACK EQU #C000 -.ROM EQU 0 -.LOADER EQU 0 -.LOGO EQU 0 - IF PACKED_MAIN -.SETUP EQU #1000 - ELSE -.SETUP EQU BLOCK_Setup - ENDIF -; - -; -; ███╗ ███╗███████╗███╗ ███╗ ███╗ ███╗ █████╗ ██████╗ -; ████╗ ████║██╔════╝████╗ ████║ ████╗ ████║██╔══██╗██╔══██╗ -; ██╔████╔██║█████╗ ██╔████╔██║ ██╔████╔██║███████║██████╔╝ -; ██║╚██╔╝██║██╔══╝ ██║╚██╔╝██║ ██║╚██╔╝██║██╔══██║██╔═══╝ -; ██║ ╚═╝ ██║███████╗██║ ╚═╝ ██║ ██║ ╚═╝ ██║██║ ██║██║ -; ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ -; -MEM_MAP: -.SETUP EQU COMPILE_ADDR.SETUP -;.ID_Version EQU COMPILE_ADDR.EXP + #C0 -; -; ██████╗ ██████╗ ██████╗ ███████╗ -; ██╔═══██╗██╔══██╗██╔════╝ ██╔════╝ -; ██║ ██║██████╔╝██║ ███╗███████╗ -; ██║ ██║██╔══██╗██║ ██║╚════██║ -; ╚██████╔╝██║ ██║╚██████╔╝███████║ -; ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ -; -COMPILE_ADDR: -.EXP EQU 0 -.ROM EQU 0 -.LOADER EQU 0 -.MAIN EQU #8000 -.SETUP EQU #8000 -.DEPACK EQU #D000 -.SETUP_STARTER EQU .SETUP + SETUP_MAIN.Size ;#C000 -; -; ██████╗ ███████╗██████╗ █████╗ ██████╗██╗ ██╗███████╗██████╗ -; ██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗ -; ██║ ██║█████╗ ██████╔╝███████║██║ █████╔╝ █████╗ ██████╔╝ -; ██║ ██║██╔══╝ ██╔═══╝ ██╔══██║██║ ██╔═██╗ ██╔══╝ ██╔══██╗ -; ██████╔╝███████╗██║ ██║ ██║╚██████╗██║ ██╗███████╗██║ ██║ -; ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ -; - IF PACKED_MAIN - - IFNDEF PREBUILD ; неизвестные метки при прекомпиляции MAIN.BIN -DEPACKER: -.Addr EQU SETUP_MAIN.Depacker -.WorkAddr EQU COMPILE_ADDR.DEPACK -.PackedMAIN EQU UnPacker.PackedMAIN -.UnpackAddr EQU COMPILE_ADDR.MAIN -.CodeLength EQU UnPacker.Length -.UnpackedEXECaddr EQU MAIN_START -.Length EQU DEPACK_DATA.length -;Depacker_start EQU #D000 -;Depacked_logo_start EQU #D900 - ENDIF - - ENDIF +; +; ██████╗ ██████╗ ███╗ ███╗ ███╗ ███╗ █████╗ ██████╗ +; ██╔══██╗██╔═══██╗████╗ ████║ ████╗ ████║██╔══██╗██╔══██╗ +; ██████╔╝██║ ██║██╔████╔██║ ██╔████╔██║███████║██████╔╝ +; ██╔══██╗██║ ██║██║╚██╔╝██║ ██║╚██╔╝██║██╔══██║██╔═══╝ +; ██║ ██║╚██████╔╝██║ ╚═╝ ██║ ██║ ╚═╝ ██║██║ ██║██║ +; ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ +; +ROM_MAP: +.EXP EQU 0 +.EXP.STACK EQU #C000 +.ROM EQU 0 +.LOADER EQU 0 +.LOGO EQU 0 + IF PACKED_MAIN +.SETUP EQU #1000 + ELSE +.SETUP EQU BLOCK_Setup + ENDIF +; + +; +; ███╗ ███╗███████╗███╗ ███╗ ███╗ ███╗ █████╗ ██████╗ +; ████╗ ████║██╔════╝████╗ ████║ ████╗ ████║██╔══██╗██╔══██╗ +; ██╔████╔██║█████╗ ██╔████╔██║ ██╔████╔██║███████║██████╔╝ +; ██║╚██╔╝██║██╔══╝ ██║╚██╔╝██║ ██║╚██╔╝██║██╔══██║██╔═══╝ +; ██║ ╚═╝ ██║███████╗██║ ╚═╝ ██║ ██║ ╚═╝ ██║██║ ██║██║ +; ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ +; +MEM_MAP: +.SETUP EQU COMPILE_ADDR.SETUP +;.ID_Version EQU COMPILE_ADDR.EXP + #C0 +; +; ██████╗ ██████╗ ██████╗ ███████╗ +; ██╔═══██╗██╔══██╗██╔════╝ ██╔════╝ +; ██║ ██║██████╔╝██║ ███╗███████╗ +; ██║ ██║██╔══██╗██║ ██║╚════██║ +; ╚██████╔╝██║ ██║╚██████╔╝███████║ +; ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ +; +COMPILE_ADDR: +.EXP EQU 0 +.ROM EQU 0 +.LOADER EQU 0 +.MAIN EQU #8000 +.SETUP EQU #8000 +.DEPACK EQU #D000 +.SETUP_STARTER EQU .SETUP + SETUP_MAIN.Size ;#C000 +; +; ██████╗ ███████╗██████╗ █████╗ ██████╗██╗ ██╗███████╗██████╗ +; ██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗ +; ██║ ██║█████╗ ██████╔╝███████║██║ █████╔╝ █████╗ ██████╔╝ +; ██║ ██║██╔══╝ ██╔═══╝ ██╔══██║██║ ██╔═██╗ ██╔══╝ ██╔══██╗ +; ██████╔╝███████╗██║ ██║ ██║╚██████╗██║ ██╗███████╗██║ ██║ +; ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ +; + IF PACKED_MAIN + + IFNDEF PREBUILD ; неизвестные метки при прекомпиляции MAIN.BIN +DEPACKER: +.Addr EQU SETUP_MAIN.Depacker +.WorkAddr EQU COMPILE_ADDR.DEPACK +.PackedMAIN EQU UnPacker.PackedMAIN +.UnpackAddr EQU COMPILE_ADDR.MAIN +.CodeLength EQU UnPacker.Length +.UnpackedEXECaddr EQU MAIN_START +.Length EQU DEPACK_DATA.length +;Depacker_start EQU #D000 +;Depacked_logo_start EQU #D900 + ENDIF + + ENDIF diff --git a/src/bios/rom/ROM.asm b/bios/rom/ROM.asm similarity index 94% rename from src/bios/rom/ROM.asm rename to bios/rom/ROM.asm index b426fd1..f299f87 100644 --- a/src/bios/rom/ROM.asm +++ b/bios/rom/ROM.asm @@ -1,447 +1,447 @@ -; -; MODULE ROM_PART - DISPLAY "\r\n/=====================[ROM part]=====================\\" -;------------[Begin of ROM]------------- -ROM_START: - DI - HALT -;--------------------------------------- - -;--------------[checksum]--------------- - _mInfoBLOCK 4-$,#FF -Check_Sum: - DB #FF,#FF,#FF,#FF ; место для контрольной суммы -;--------------------------------------- - _mInfoBLOCK #10-$,#FF - RET -;--------------------------------------- - -;!TODO прикрутить к ROM.BIOS -;----------------[int]------------------ - _mInfoBLOCK #38-$,#FF -; INT: PUSH BC -; PUSH AF - -; LD C,SLOT3 -; IN B,(C) -; LD A,SYS_PAGE -; OUT (C),A - -; LD A,(SYS_PAGE.INT_ID) -; CP #AA -; JR Z,YESINT -; OUT (C),B -; JR NOINT -; YESINT: PUSH HL -; LD HL,(SYS_PAGE.INT_ADRESS) -; LD A,H -; OR L -; LD A,(SYS_PAGE.INT_PAGE) -; OUT (C),B -; CALL NZ,EXTINT -; POP HL -; NOINT: POP AF -; POP BC - EI - RETI -;--------------------------------------- - -;----------------[NMI]------------------ - _mInfoBLOCK #66-$,#FF -NMI: RETN -;--------------------------------------- - -; ;----------------[int]------------------ -; EXTINT: OR A -; RET Z - -; ;LD C,SLOT1 -; BIT 7,H -; JR Z,.L2 -; LD C,SLOT2 -; BIT 6,H -; JR Z,.L1 -; LD C,SLOT3 - -; .L1: IN B,(C) -; PUSH BC -; OUT (C),A -; CALL .JPHL -; POP BC -; OUT (C),B -; RET -; ; проверка на нулевой слот -; .L2: BIT 6,H -; LD C,SLOT1 -; JR NZ,.L1 ; продолжаем если ненулевой слот -; ; ВОТ ТУТ МОЖНО ВЛУПИТЬ ПРОЦЕДУРУ ДЛЯ ПОДСТАНОВКИ СТРАНИЦЫ В SLOT0 И -; ; ПЕРЕХОД ПО ПРЕРЫВАНИЮ В ОБРАБОТЧИК ПОЛЬЗОВАТЕЛЯ ЧЕРЕЗ процедуру на стэк, например - - -; IF TEST_INT -; LD HL,-.stackDepth - .switchProcedure.size + .patch+2 -; ADD HL,SP -; PUSH HL - -; LD HL,-.stackDepth - .switchProcedure.size ; memory stack use! -; ADD HL,SP ; stack -; PUSH HL ; адрес программы .readProcedure - -; LD DE,.switchProcedure ; перенести программу на стек -; EX DE,HL -; LD BC,.switchProcedure.size -; LDIR -; RET - -; ; процедура, переносимая на стек для вызова прерывания пользователя из SLOT0 -; ; осторожнее с PUSH, если надо много, то увеличивай .stackDepth -; .switchProcedure: -; DEC DE -; POP HL -; LD (HL),E -; INC HL -; LD (HL),D - - -; LD C,SLOT0 -; IN B,(C) -; PUSH BC -; OUT (C),A - -; XOR A -; OUT (SYS_PORT.RAM),A -; .patch EQU $+1-.switchProcedure -; CALL .JPHL - -; DI - -; XOR A -; OUT (SYS_PORT.ROM),A - -; POP BC -; OUT (C),B - -; RET -; .JPHL: JP (HL) -; .stackDepth EQU 32 ; расстояние от конца процедуры до вершины стека. -; .switchProcedure.size EQU $-.switchProcedure -; ELSE - -; SCF -; RET -; .JPHL: JP (HL) -; ENDIF -;--------------------------------------- - -/* - - - -*/ - -; -; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; - -; -;----------------------------[ FOR ZX-MODE ]----------------------------; -;!HARDCODE на этот адрес #С0 прыгает в vROM Basic-48 по адресу #3CF0 -; можно попробовать переделать этот адрес там - _mInfoBLOCK #C0-$,#FF -; Вход через USR 15600 -RET_FROM_BIOS_TO_BASIC48: - CALL CH_2 - CALL COMAND_LINE ; ВЫПОЛНЕНИЕ КОМАНДЫ, ЕСЛИ ЕСТЬ - ; Вход без команды - JP _SW_ROM_1 ; ВОЗВРАТ В << MAIN MENU >> - INCLUDE 'ZX/ZX_FUNC.ASM' - INCLUDE 'ZX/ZX_MENU.ASM' -;-----------------------------------------------------------------------; -; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; -; - - - - -;-------------[#1000 SETUP]------------- - ShowInfo 'Setup block of ROM start', 0 ; !!!!! test - -BLOCK_Setup EQU $ -; - IF PACKED_MAIN - BLOCK ROM_MAP.SETUP-$,#FF - - DISP COMPILE_ADDR.SETUP - -; Depacker version -SETUP_MAIN: - LD HL,DEPACKER.UnpackedEXECaddr; точка входа в распакованном коде - PUSH HL - LD DE,DEPACKER.WorkAddr ; адрес процедуры депакера - PUSH DE - - LD HL,DEPACKER.Addr - LD BC,DEPACKER.Length - LDIR - - LD HL,DEPACKER.PackedMAIN ; где архив - LD DE,DEPACKER.UnpackAddr ; куда распаковывать - RET - -.Depacker EQU $ - ENT - -;-----------------[v] -DEPACK_DATA: - DISP DEPACKER.WorkAddr - MODULE UnPacker - INCLUDE 'src/bios/ROM/SETUP/DEHRUST.asm' ; !TODO сделать на LUA автовыбор декомпрессора и компрессора -PackedMAIN: INCBIN 'Build/Bin/temp/MAIN.PAK' - ENDMODULE - ENT -DEPACK_DATA.length EQU $-DEPACK_DATA -;-----------------[^] - - - ELSE - DISP COMPILE_ADDR.SETUP - ShowInfo 'Setup block DISP start', 1 ; !!!!! test -SETUP_MAIN: INCLUDE 'src/bios/ROM/SETUP/Main.asm' -SETUP_MAIN.Size EQU $-SETUP_MAIN - ShowInfo 'Setup block DISP end', 1 ; !!!!! test - ENT - ENDIF - - ASSERT ($ + Setup_Starter.Size) < (STACK - STACK.Size), "WARNING: Stack area overlaps code..." - ShowInfo 'Setup block of ROM end', 0 ; !!!!! test -BLOCK_Setup.Length EQU $-BLOCK_Setup - - -;--------------------------------------- -; - - - - - -; -; !FIXIT сделать эти фиксированные адреса отдельным файлом и с IF/ELSE и подключать их потом куда надо. -;----------------------------------------------------------------------; -; BLOCK #3CC0-$,255 - ; no-magics! -;MAGIC_1: ; ЗАГЛУШКА ДЛЯ MAGIC -; PUSH AF -; LD A,ROM.EXT -; OUT (SYS_PORT.OFF),A -; POP AF -; JP MAGIC_1 -;MAGIC_3: -; PUSH AF -; LD A,ROM.EXT -; OUT (SYS_PORT.OFF),A -; POP AF -; RETN -;MAGIC_2: -;; CALL MG_BEGIN -; JR MAGIC_3 - -;************************* - _mInfoBLOCK #3CE0-$,#FF ;!TEST 0 -_SW_ROM_1 EQU SW_ROM_1 - LD HL,#259F ;!HARDCODE Show Main Menu in BASIC-128 - PUSH HL - LD HL,#5B00 ;!HARDCODE - LD A,(HL) - CP #F5 ; #F5 - опкод 'PUSH AF'. Проверяется в #5B00 - JR Z,_JP_HL_48 ; ВОЗВРАТ К МЕНЮ BASIC128 - POP HL - JR _SW_ROM_1 ; ПРОСТОЙ ВОЗВРАТ -;************************* - - _mInfoBLOCK #3CF0-$,#FF ;!TEST 0 -;JMP_48: -; LD HL,00h -; JR _JP_HL_48 -; -; NOP -; NOP -; NOP - -;*************************************** - _mInfoBLOCK #3CF8-$,#FF ;!TEST 0 - ; no basic-48! -_JP_HL_48 EQU JP_HL_48 - PUSH HL -_SW_ROM EQU SW_ROM - PUSH AF - LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A - POP AF - RET -;*************************************** -;----------------------------------------------------------------------; -; - -;!TODO спектрумовские утилиты -;----------------------------------------------------------------------; - ; _mInfoBLOCK #3CFA-$,#FF - ; LD A,0 ;!HARDCODE - ; OUT (SYS_PORT.OFF),A - ; POP AF -;----------------------------------------------------------------------; -; - - -; -;----------------------------------------------------------------------; - _mInfoBLOCK #3D00-$,#FF -;DOS_ON: - NOP - RET -;*************************************** - -;*************************************** -; BLOCK #3D02-$,FF -; !TODO можно оприходовать тут 17 байтов -; -;*************************************** - -;*************************************** - _mInfoBLOCK #3D13-$,#FF - NOP - CALL ToBIOS_FromEXT - JP DOS_OFF -;*************************************** - -;*************************************** -; BLOCK #3D17-$,FF -; !TODO можно оприходовать тут 233 байта -; -;*************************************** - -;*************************************** - _mInfoBLOCK #3E00-$,#FF -;DOS_OFF: - PUSH AF - LD A,R - DI - PUSH AF - PUSH BC - ; - LD BC,(#5BFF) ; !HARDCODE - LD A,#C9 ; Opcode RET - LD (#5BFF),A ; !HARDCODE - CALL #5BFF ; !HARDCODE - LD (#5BFF),BC ; !HARDCODE - ; - POP BC - POP AF - JP PO,.no_EI - EI -.no_EI: POP AF - RET -;*************************************** - - -;*************************************** -; BLOCK #3E16-$,FF -; !TODO можно оприходовать тут 10 байтов -; -;*************************************** -; - - - -; -;--------------------------------------- -; _mInfoBLOCK #3FC6-$,#FF -; или можно добавить функции -; TRDOS_HD_CMD: -; ; LD A,C -; ; OR #40 -; ; LD C,A -; POP AF -; SET 6,C -; RST_to_BIOS -; JR RET_TO_TRDOS -;--------------------------------------- -; -;--------------[GOTO BIOS]-------------- - _mInfoBLOCK #3FD0-$,#FF -;ToBIOS_FromEXT: call BIOS from EXTENSION - PUSH AF - LD A,ROM.BIOS ; set BIOS to slot0 - OUT (SYS_PORT.ROM),A - POP AF - RET -;--------------------------------------- - - -;--------[ From TR-DOS to HDD part2]-------- - _mInfoBLOCK #3FD8-$,#FF -TRDOS_HD_CMD: - POP AF - SET 6,C - RST_to_BIOS - JR RET_TO_TRDOS -;--------------------------------------- - - -;!FIXIT остатки от тестов Ивана со звуковой картой -;-------------[SND_TEST_RET]------------- - _mInfoBLOCK #3FE0-$,#FF -; SND_TEST_RET: -; LD A,ROM.BIOS -; OUT (SYS_PORT.RAM),A -; ;JP SOUND_TEST -; JP #0000 -;--------------------------------------- - - -;------------[Portal to EXT]------------ -; точка входа/выхода для функций из BIOS - _mInfoBLOCK #3FE8-$,#FF -RET_TO_BIOS: ;RET_TO_EXP: - PUSH AF - LD A,ROM.BIOS - OUT (SYS_PORT.ROM),A ; from BIOS EXTENSION_FNs - POP AF - RET - ; JP HDD_FN_5x -;--------------------------------------- - - -;!FIXIT Можно поправить номера функций при вызовах из TR-DOS и прыгать сразу в BIOS -;-------[ From TR-DOS to API 4x ]------- - _mInfoBLOCK #3FF0-$,#FF -RET_TO_TRDOS: - PUSH AF - DI - LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A - JR TRDOS_HD_CMD ; тут не хватило места в 1 байт, чтоб сразу сделать JP -;--------------------------------------- - - - -;-----[???????????????????????????]----- - _mInfoBLOCK #3FF8-$,#FF - ; PUSH AF - ; LD A,ROM.BIOS - ; OUT (SYS_PORT.RAM),A - ; JP #0000 -;--------------------------------------- - _mInfoBLOCK #4000-$,#FF -;======================================= - - IFNDEF PREBUILD - DISPLAY ' -------------------[Main.asm]-------------------' - DISPLAY 'End code address: ',/A,MAIN_END_CODE_ADDRESS - DISPLAY 'Code size: ',/A,MAIN_END_CODE_ADDRESS + 1 - COMPILE_ADDR.MAIN - DISPLAY 'End buffers address: ',/A,memBUFFER.End - 1 - DISPLAY 'Free memory: ',/A,#C000 - (memBUFFER.End-1) - STACK.Size - DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer - ENDIF -; ENDMODULE ;ROM_PART -; - DISPLAY ' ' +; +; MODULE ROM_PART + DISPLAY "\r\n/=====================[ROM part]=====================\\" +;------------[Begin of ROM]------------- +ROM_START: + DI + HALT +;--------------------------------------- + +;--------------[checksum]--------------- + _mInfoBLOCK 4-$,#FF +Check_Sum: + DB #FF,#FF,#FF,#FF ; место для контрольной суммы +;--------------------------------------- + _mInfoBLOCK #10-$,#FF + RET +;--------------------------------------- + +;!TODO прикрутить к ROM.BIOS +;----------------[int]------------------ + _mInfoBLOCK #38-$,#FF +; INT: PUSH BC +; PUSH AF + +; LD C,SLOT3 +; IN B,(C) +; LD A,SYS_PAGE +; OUT (C),A + +; LD A,(SYS_PAGE.INT_ID) +; CP #AA +; JR Z,YESINT +; OUT (C),B +; JR NOINT +; YESINT: PUSH HL +; LD HL,(SYS_PAGE.INT_ADRESS) +; LD A,H +; OR L +; LD A,(SYS_PAGE.INT_PAGE) +; OUT (C),B +; CALL NZ,EXTINT +; POP HL +; NOINT: POP AF +; POP BC + EI + RETI +;--------------------------------------- + +;----------------[NMI]------------------ + _mInfoBLOCK #66-$,#FF +NMI: RETN +;--------------------------------------- + +; ;----------------[int]------------------ +; EXTINT: OR A +; RET Z + +; ;LD C,SLOT1 +; BIT 7,H +; JR Z,.L2 +; LD C,SLOT2 +; BIT 6,H +; JR Z,.L1 +; LD C,SLOT3 + +; .L1: IN B,(C) +; PUSH BC +; OUT (C),A +; CALL .JPHL +; POP BC +; OUT (C),B +; RET +; ; проверка на нулевой слот +; .L2: BIT 6,H +; LD C,SLOT1 +; JR NZ,.L1 ; продолжаем если ненулевой слот +; ; ВОТ ТУТ МОЖНО ВЛУПИТЬ ПРОЦЕДУРУ ДЛЯ ПОДСТАНОВКИ СТРАНИЦЫ В SLOT0 И +; ; ПЕРЕХОД ПО ПРЕРЫВАНИЮ В ОБРАБОТЧИК ПОЛЬЗОВАТЕЛЯ ЧЕРЕЗ процедуру на стэк, например + + +; IF TEST_INT +; LD HL,-.stackDepth - .switchProcedure.size + .patch+2 +; ADD HL,SP +; PUSH HL + +; LD HL,-.stackDepth - .switchProcedure.size ; memory stack use! +; ADD HL,SP ; stack +; PUSH HL ; адрес программы .readProcedure + +; LD DE,.switchProcedure ; перенести программу на стек +; EX DE,HL +; LD BC,.switchProcedure.size +; LDIR +; RET + +; ; процедура, переносимая на стек для вызова прерывания пользователя из SLOT0 +; ; осторожнее с PUSH, если надо много, то увеличивай .stackDepth +; .switchProcedure: +; DEC DE +; POP HL +; LD (HL),E +; INC HL +; LD (HL),D + + +; LD C,SLOT0 +; IN B,(C) +; PUSH BC +; OUT (C),A + +; XOR A +; OUT (SYS_PORT.RAM),A +; .patch EQU $+1-.switchProcedure +; CALL .JPHL + +; DI + +; XOR A +; OUT (SYS_PORT.ROM),A + +; POP BC +; OUT (C),B + +; RET +; .JPHL: JP (HL) +; .stackDepth EQU 32 ; расстояние от конца процедуры до вершины стека. +; .switchProcedure.size EQU $-.switchProcedure +; ELSE + +; SCF +; RET +; .JPHL: JP (HL) +; ENDIF +;--------------------------------------- + +/* + + + +*/ + +; +; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; + +; +;----------------------------[ FOR ZX-MODE ]----------------------------; +;!HARDCODE на этот адрес #С0 прыгает в vROM Basic-48 по адресу #3CF0 +; можно попробовать переделать этот адрес там + _mInfoBLOCK #C0-$,#FF +; Вход через USR 15600 +RET_FROM_BIOS_TO_BASIC48: + CALL CH_2 + CALL COMAND_LINE ; ВЫПОЛНЕНИЕ КОМАНДЫ, ЕСЛИ ЕСТЬ + ; Вход без команды + JP _SW_ROM_1 ; ВОЗВРАТ В << MAIN MENU >> + INCLUDE 'ZX/ZX_FUNC.ASM' + INCLUDE 'ZX/ZX_MENU.ASM' +;-----------------------------------------------------------------------; +; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; +; + + + + +;-------------[#1000 SETUP]------------- + ShowInfo 'Setup block of ROM start', 0 ; !!!!! test + +BLOCK_Setup EQU $ +; + IF PACKED_MAIN + BLOCK ROM_MAP.SETUP-$,#FF + + DISP COMPILE_ADDR.SETUP + +; Depacker version +SETUP_MAIN: + LD HL,DEPACKER.UnpackedEXECaddr; точка входа в распакованном коде + PUSH HL + LD DE,DEPACKER.WorkAddr ; адрес процедуры депакера + PUSH DE + + LD HL,DEPACKER.Addr + LD BC,DEPACKER.Length + LDIR + + LD HL,DEPACKER.PackedMAIN ; где архив + LD DE,DEPACKER.UnpackAddr ; куда распаковывать + RET + +.Depacker EQU $ + ENT + +;-----------------[v] +DEPACK_DATA: + DISP DEPACKER.WorkAddr + MODULE UnPacker + INCLUDE 'bios/ROM/SETUP/DEHRUST.asm' ; !TODO сделать на LUA автовыбор декомпрессора и компрессора +PackedMAIN: INCBIN 'Build/Bin/temp/MAIN.PAK' + ENDMODULE + ENT +DEPACK_DATA.length EQU $-DEPACK_DATA +;-----------------[^] + + + ELSE + DISP COMPILE_ADDR.SETUP + ShowInfo 'Setup block DISP start', 1 ; !!!!! test +SETUP_MAIN: INCLUDE 'bios/ROM/SETUP/Main.asm' +SETUP_MAIN.Size EQU $-SETUP_MAIN + ShowInfo 'Setup block DISP end', 1 ; !!!!! test + ENT + ENDIF + + ASSERT ($ + Setup_Starter.Size) < (STACK - STACK.Size), "WARNING: Stack area overlaps code..." + ShowInfo 'Setup block of ROM end', 0 ; !!!!! test +BLOCK_Setup.Length EQU $-BLOCK_Setup + + +;--------------------------------------- +; + + + + + +; +; !FIXIT сделать эти фиксированные адреса отдельным файлом и с IF/ELSE и подключать их потом куда надо. +;----------------------------------------------------------------------; +; BLOCK #3CC0-$,255 + ; no-magics! +;MAGIC_1: ; ЗАГЛУШКА ДЛЯ MAGIC +; PUSH AF +; LD A,ROM.EXT +; OUT (SYS_PORT.OFF),A +; POP AF +; JP MAGIC_1 +;MAGIC_3: +; PUSH AF +; LD A,ROM.EXT +; OUT (SYS_PORT.OFF),A +; POP AF +; RETN +;MAGIC_2: +;; CALL MG_BEGIN +; JR MAGIC_3 + +;************************* + _mInfoBLOCK #3CE0-$,#FF ;!TEST 0 +_SW_ROM_1 EQU SW_ROM_1 + LD HL,#259F ;!HARDCODE Show Main Menu in BASIC-128 + PUSH HL + LD HL,#5B00 ;!HARDCODE + LD A,(HL) + CP #F5 ; #F5 - опкод 'PUSH AF'. Проверяется в #5B00 + JR Z,_JP_HL_48 ; ВОЗВРАТ К МЕНЮ BASIC128 + POP HL + JR _SW_ROM_1 ; ПРОСТОЙ ВОЗВРАТ +;************************* + + _mInfoBLOCK #3CF0-$,#FF ;!TEST 0 +;JMP_48: +; LD HL,00h +; JR _JP_HL_48 +; +; NOP +; NOP +; NOP + +;*************************************** + _mInfoBLOCK #3CF8-$,#FF ;!TEST 0 + ; no basic-48! +_JP_HL_48 EQU JP_HL_48 + PUSH HL +_SW_ROM EQU SW_ROM + PUSH AF + LD A,ROM.BIOS + OUT (SYS_PORT.RAM),A + POP AF + RET +;*************************************** +;----------------------------------------------------------------------; +; + +;!TODO спектрумовские утилиты +;----------------------------------------------------------------------; + ; _mInfoBLOCK #3CFA-$,#FF + ; LD A,0 ;!HARDCODE + ; OUT (SYS_PORT.OFF),A + ; POP AF +;----------------------------------------------------------------------; +; + + +; +;----------------------------------------------------------------------; + _mInfoBLOCK #3D00-$,#FF +;DOS_ON: + NOP + RET +;*************************************** + +;*************************************** +; BLOCK #3D02-$,FF +; !TODO можно оприходовать тут 17 байтов +; +;*************************************** + +;*************************************** + _mInfoBLOCK #3D13-$,#FF + NOP + CALL ToBIOS_FromEXT + JP DOS_OFF +;*************************************** + +;*************************************** +; BLOCK #3D17-$,FF +; !TODO можно оприходовать тут 233 байта +; +;*************************************** + +;*************************************** + _mInfoBLOCK #3E00-$,#FF +;DOS_OFF: + PUSH AF + LD A,R + DI + PUSH AF + PUSH BC + ; + LD BC,(#5BFF) ; !HARDCODE + LD A,#C9 ; Opcode RET + LD (#5BFF),A ; !HARDCODE + CALL #5BFF ; !HARDCODE + LD (#5BFF),BC ; !HARDCODE + ; + POP BC + POP AF + JP PO,.no_EI + EI +.no_EI: POP AF + RET +;*************************************** + + +;*************************************** +; BLOCK #3E16-$,FF +; !TODO можно оприходовать тут 10 байтов +; +;*************************************** +; + + + +; +;--------------------------------------- +; _mInfoBLOCK #3FC6-$,#FF +; или можно добавить функции +; TRDOS_HD_CMD: +; ; LD A,C +; ; OR #40 +; ; LD C,A +; POP AF +; SET 6,C +; RST_to_BIOS +; JR RET_TO_TRDOS +;--------------------------------------- +; +;--------------[GOTO BIOS]-------------- + _mInfoBLOCK #3FD0-$,#FF +;ToBIOS_FromEXT: call BIOS from EXTENSION + PUSH AF + LD A,ROM.BIOS ; set BIOS to slot0 + OUT (SYS_PORT.ROM),A + POP AF + RET +;--------------------------------------- + + +;--------[ From TR-DOS to HDD part2]-------- + _mInfoBLOCK #3FD8-$,#FF +TRDOS_HD_CMD: + POP AF + SET 6,C + RST_to_BIOS + JR RET_TO_TRDOS +;--------------------------------------- + + +;!FIXIT остатки от тестов Ивана со звуковой картой +;-------------[SND_TEST_RET]------------- + _mInfoBLOCK #3FE0-$,#FF +; SND_TEST_RET: +; LD A,ROM.BIOS +; OUT (SYS_PORT.RAM),A +; ;JP SOUND_TEST +; JP #0000 +;--------------------------------------- + + +;------------[Portal to EXT]------------ +; точка входа/выхода для функций из BIOS + _mInfoBLOCK #3FE8-$,#FF +RET_TO_BIOS: ;RET_TO_EXP: + PUSH AF + LD A,ROM.BIOS + OUT (SYS_PORT.ROM),A ; from BIOS EXTENSION_FNs + POP AF + RET + ; JP HDD_FN_5x +;--------------------------------------- + + +;!FIXIT Можно поправить номера функций при вызовах из TR-DOS и прыгать сразу в BIOS +;-------[ From TR-DOS to API 4x ]------- + _mInfoBLOCK #3FF0-$,#FF +RET_TO_TRDOS: + PUSH AF + DI + LD A,ROM.BIOS + OUT (SYS_PORT.RAM),A + JR TRDOS_HD_CMD ; тут не хватило места в 1 байт, чтоб сразу сделать JP +;--------------------------------------- + + + +;-----[???????????????????????????]----- + _mInfoBLOCK #3FF8-$,#FF + ; PUSH AF + ; LD A,ROM.BIOS + ; OUT (SYS_PORT.RAM),A + ; JP #0000 +;--------------------------------------- + _mInfoBLOCK #4000-$,#FF +;======================================= + + IFNDEF PREBUILD + DISPLAY ' -------------------[Main.asm]-------------------' + DISPLAY 'End code address: ',/A,MAIN_END_CODE_ADDRESS + DISPLAY 'Code size: ',/A,MAIN_END_CODE_ADDRESS + 1 - COMPILE_ADDR.MAIN + DISPLAY 'End buffers address: ',/A,memBUFFER.End - 1 + DISPLAY 'Free memory: ',/A,#C000 - (memBUFFER.End-1) - STACK.Size + DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer + ENDIF +; ENDMODULE ;ROM_PART +; + DISPLAY ' ' DISPLAY 'FIX printer init!!!!!!!!' \ No newline at end of file diff --git a/src/bios/rom/SETUP/AUTOIDE.asm b/bios/rom/SETUP/AUTOIDE.asm similarity index 100% rename from src/bios/rom/SETUP/AUTOIDE.asm rename to bios/rom/SETUP/AUTOIDE.asm diff --git a/src/bios/rom/SETUP/IM2_INT.asm b/bios/rom/SETUP/IM2_INT.asm similarity index 100% rename from src/bios/rom/SETUP/IM2_INT.asm rename to bios/rom/SETUP/IM2_INT.asm diff --git a/src/bios/rom/SETUP/KEY.asm b/bios/rom/SETUP/KEY.asm similarity index 96% rename from src/bios/rom/SETUP/KEY.asm rename to bios/rom/SETUP/KEY.asm index 40134bb..2004b1e 100644 --- a/src/bios/rom/SETUP/KEY.asm +++ b/bios/rom/SETUP/KEY.asm @@ -1,790 +1,790 @@ - -; - _mInfoALIGN 256,0 ; выравнивание на адрес #XX00 -SBUF: BLOCK 64,0 - -HEAD: DB 0 -HOST: DB 0 - -; -K_LOCK EQU $-KEYFLAG -LANG_L EQU 7 -PAUSE_L EQU 6 -RES5_L EQU 5 -RES4_L EQU 4 -NUM_L EQU 3 -SCRL_L EQU 2 -INS_L EQU 1 -CAPS_L EQU 0 -KEYFLAG: DB 2 ;D0-Key Pressed -; -K_SHIFT EQU $-KEYFLAG -L_SHIFT EQU 7 -R_SHIFT EQU 6 -X_CTRL EQU 5 -X_ALT EQU 4 -L_CTRL EQU 3 -L_ALT EQU 2 -R_CTRL EQU 1 -R_ALT EQU 0 -KEYCTRL: DB 0 -; -KEYFLG EQU $-KEYFLAG -FLAG_E0 EQU 7 -FLAG_F0 EQU 6 -FLAG_E1 EQU 5 -FLAG_04 EQU 4 -FLAG_03 EQU 3 -FLAG_02 EQU 2 -FLAG_01 EQU 1 -FLAG_00 EQU 0 - DB 0 -; -SOUND_K EQU $-KEYFLAG -FLAG_S7 EQU 7 -FLAG_S6 EQU 6 -FLAG_S5 EQU 5 -FLAG_S4 EQU 4 -FLAG_S3 EQU 3 -FLAG_S2 EQU 2 -SF_ALT EQU 1 -SF_BUFF EQU 0 - DB 3 -; -;UNCODE: DW 0000 -; - -; D15 - LShift -; D14 - RShift -; D13 - CTRL -; D12 - ALT -; D11 - LCTRL -; D10 - LALT -; D9 - RCTRL -; D8 - RALT -; D7 - Language Lock -; D6 - Reserved -; D5 - Reserved -; D4 - Reserved -; D3 - Num Lock -; D2 - Scroll Lock -; D1 - Insert Lock -; D0 - Caps Lock - -; D15 - Keystroke -; D14 -; D13 \ -; D12 \ -; D11 -- Position code (0...5Ah) -; D10 / -; D9 / -; D8 -; D7..D0 - ASCII code - -WAITKEY: LD HL,HOST - LD A,(HEAD) - CP (HL) - JR Z,WAITKEY - CALL GETSYM - LD A,E - ;AND A - RET - -SCANKEY: LD HL,HOST - LD A,(HEAD) - CP (HL) - RET Z - CALL GETSYM - LD A,E - RET - -CTRLKEY: LD HL,HOST - LD A,(HEAD) - CP (HL) - LD BC,(KEYFLAG) - LD A,#00 - RET Z - DEC A - RET - -PUTSYM: LD HL,HEAD - LD A,(HOST) - SUB 4 - AND #3F - CP (HL) - JR Z,FULL_BF - ; - CALL GetSymAddr - ; - LD (HL),E - INC L - LD (HL),D - INC L - LD (HL),B - INC L - LD (HL),C - RET - -GetSymAddr: LD A,(HL) - INC (HL) - INC (HL) - INC (HL) - INC (HL) - RES 6,(HL) - LD L,A - LD H,high SBUF - RET - -GETSYM: LD HL,HOST - LD A,(HEAD) - CP (HL) - RET Z - AND A - ; - CALL GetSymAddr - ; - LD E,(HL) - INC L - LD D,(HL) - INC L - LD B,(HL) - INC L - LD C,(HL) - RET - -FULL_BF: EX AF,AF' - BIT SF_BUFF,(IX+SOUND_K) - JR Z,.FBF - EXX - LD DE,230 - LD HL,50 - CALL BEEP - EXX -.FBF: EX AF,AF' - RET - -KEYSCAN: LD IX,KEYFLAG -RESCANN: - IN A,(Z84.SIO.Ch_A.Ctrl) - AND 1 - RET Z - ;[x] 18/02/2024 проверка на переполнение буфера - ; A = 1 - ; reg 1 - OUT (Z84.SIO.Ch_A.Ctrl),A - IN A,(Z84.SIO.Ch_A.Ctrl) - AND %0010'0000 ; check receiver overrun error - JP NZ,Receiver_Overrun - ; - IN A,(Z84.SIO.Ch_A.Data) - CP #F0 - JR Z,F0_KEY - CP #E0 - JR Z,E0_KEY - ; - CP #E1 - IF USE_E1_SCANCODE - JR Z,E1_KEY - ELSE - JR Z,RESCANN - ENDIF - ; - BIT FLAG_F0,(IX+KEYFLG) - JR NZ,UN_KEY - ; - LD L,A - CALL XLAT - CALL SHIFTS - RES FLAG_E0,(IX+KEYFLG) - IF USE_E1_SCANCODE - RES FLAG_E1,(IX+KEYFLG) - ENDIF - ; - ;[x] 29/02/2024 выгребсти весь буфер - JR Z,RESCANN ;IT'S SHIFT KEY - ; RET Z ;IT'S SHIFT KEY - ; - CALL INPCODE ;L - AT POS. CODE - ;PUTCODE - LD HL,#1C00 ;Caps Lock - AND A - SBC HL,DE - CALL Z,CAPS_X - - ; !TODO вернуть русский? А зачем? -; LD HL,#B800 ;Ctrl + Space -; AND A -; SBC HL,DE -; CALL Z,RUS_X - - LD HL,#5000 ;Insert - AND A - SBC HL,DE - CALL Z,INS_X - LD HL,#4900 ;Num Lock - AND A - SBC HL,DE - CALL Z,NUM_X - LD HL,#C900 ;Pause Lock - AND A - SBC HL,DE - CALL Z,PAUSE_X - LD HL,#4800 ;Scroll Lock - AND A - SBC HL,DE - CALL Z,SCL_X - ;-----------------------; !!!!! ресет по КАД - ; LD HL,#CF00 ; ; Ctrl + Alt + Del - ; AND A ; - ; SBC HL,DE ; - ; CALL Z,RST_X ; - ;-----------------------; - LD BC,(KEYFLAG) - CALL PUTSYM - JP RESCANN - -E0_KEY: SET FLAG_E0,(IX+KEYFLG) - JR RESCANN - -F0_KEY: SET FLAG_F0,(IX+KEYFLG) - JR RESCANN - - IF USE_E1_SCANCODE -E1_KEY: SET FLAG_E1,(IX+KEYFLG) - JR RESCANN - ENDIF - -UN_KEY: RES FLAG_F0,(IX+KEYFLG) - LD L,A - CALL XLAT - CALL UNSHIFT - RES FLAG_E0,(IX+KEYFLG) - ;LD H,0 - ;LD (UNCODE),HL - RET - -CAPS_X: LD A,(KEYFLAG) - XOR 1<","?",#00,"|" - DB #00,#00,Spc,#00,#00 - DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 - DB #00,#00,#00,"/","*","-","+",Ent,#00 - DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 -CAPSTAB: - DB "`",Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs - DB Tab,"Q","W","E","R","T","Y","U","I","O","P","[","]" - DB Cps,"A","S","D","F","G","H","J","K","L",";","'",Ent - DB #00,"Z","X","C","V","B","N","M",#2C,".","/",#00,#5C ;"\" - DB #00,#00,Spc,#00,#00 - DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 - DB #00,#00,#00,"/","*","-","+",Ent,#00 - DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 -SHF2TAB: - DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs - DB Tab,"q","w","e","r","t","y","u","i","o","p","{","}" - DB Cps,"a","s","d","f","g","h","j","k","l",":",#22,Ent - DB #00,"z","x","c","v","b","n","m","<",">","?",#00,"|" - DB #00,#00,Spc,#00,#00 - DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 - DB #00,#00,#00,"/","*","-","+",Ent,#00 - DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 - -/////////////////////////////////////////////////////////////////////// -; _mInfoALIGN 256,0 ; без выравнивания -XLAT_T: -; 0 1 2 3 4 5 6 7 8 9 A B C D E F - DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00 - DB #00,#37,#29,#00,#36,#10,#02,#00,#00,#00,#2A,#1E,#1D,#11,#03,#00 ;10 - DB #00,#2C,#2B,#1F,#12,#05,#04,#00,#00,#38,#2D,#20,#14,#13,#06,#00 ;20 - DB #00,#2F,#2E,#22,#21,#15,#07,#00,#00,#00,#30,#23,#16,#08,#09,#00 ;30 - DB #00,#31,#24,#17,#18,#0B,#0A,#00,#00,#32,#33,#25,#26,#19,#0C,#00 ;40 - DB #00,#00,#27,#00,#1A,#0D,#00,#00,#1C,#34,#28,#1B,#00,#35,#00,#00 ;50 - DB #00,#00,#00,#00,#00,#00,#0E,#00,#00,#51,#00,#54,#57,#00,#00,#00 ;60 - DB #50,#4F,#52,#55,#56,#58,#01,#49,#45,#4D,#53,#4C,#4B,#59,#48,#00 ;70 - DB #00,#00,#00,#41,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 ;80 -XLAT_T.Size EQU $-XLAT_T -/////////////////////////////////////////////////////////////////////// - - -XLAT: BIT FLAG_E0,(IX+KEYFLG) - JR Z,.W_O_E0 - CP #11 ; Right ALT - LD L,#39 - RET Z - - CP #14 ; Right CTRL - LD L,#3A - RET Z - - CP #5A ; enter - LD L,#4E - RET Z - - CP #4A ; / - LD L,#4A - RET Z - - CP #7C ; * - Print Screen - LD L,#47 - RET Z - - LD L,A -.W_O_E0: - ; таблица с выравниванием на 256 - ; LD H,high XLAT_T - ; LD L,(HL) - ; - ; без выравнивания - ; [x] 31/03/2024 исправлен баг с выходом за границы таблицы XLAT_T - CP XLAT_T.Size - LD L,0 - RET NC - ; - LD HL,XLAT_T - ADD A,L - LD L,A - JR NC,.no_inc - INC H -.no_inc: - LD L,(HL) - RET - RET - -; !TODO посмотреть -;INPCODE: -; BIT 1,(IX+1) ;00110000 -; JR NZ,FN_KEY ;LRCAcaRP - -INPCODE: LD D,L - LD E,0 - ; !TODO вернуть русский? А зачем? - ; BIT LANG_L,(IX+K_LOCK) - ; JP NZ,RUSCODE - LD A,(KEYCTRL) - AND 1<","?",#00,"|" + DB #00,#00,Spc,#00,#00 + DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 + DB #00,#00,#00,"/","*","-","+",Ent,#00 + DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 +CAPSTAB: + DB "`",Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs + DB Tab,"Q","W","E","R","T","Y","U","I","O","P","[","]" + DB Cps,"A","S","D","F","G","H","J","K","L",";","'",Ent + DB #00,"Z","X","C","V","B","N","M",#2C,".","/",#00,#5C ;"\" + DB #00,#00,Spc,#00,#00 + DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 + DB #00,#00,#00,"/","*","-","+",Ent,#00 + DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 +SHF2TAB: + DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs + DB Tab,"q","w","e","r","t","y","u","i","o","p","{","}" + DB Cps,"a","s","d","f","g","h","j","k","l",":",#22,Ent + DB #00,"z","x","c","v","b","n","m","<",">","?",#00,"|" + DB #00,#00,Spc,#00,#00 + DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 + DB #00,#00,#00,"/","*","-","+",Ent,#00 + DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 + +/////////////////////////////////////////////////////////////////////// +; _mInfoALIGN 256,0 ; без выравнивания +XLAT_T: +; 0 1 2 3 4 5 6 7 8 9 A B C D E F + DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00 + DB #00,#37,#29,#00,#36,#10,#02,#00,#00,#00,#2A,#1E,#1D,#11,#03,#00 ;10 + DB #00,#2C,#2B,#1F,#12,#05,#04,#00,#00,#38,#2D,#20,#14,#13,#06,#00 ;20 + DB #00,#2F,#2E,#22,#21,#15,#07,#00,#00,#00,#30,#23,#16,#08,#09,#00 ;30 + DB #00,#31,#24,#17,#18,#0B,#0A,#00,#00,#32,#33,#25,#26,#19,#0C,#00 ;40 + DB #00,#00,#27,#00,#1A,#0D,#00,#00,#1C,#34,#28,#1B,#00,#35,#00,#00 ;50 + DB #00,#00,#00,#00,#00,#00,#0E,#00,#00,#51,#00,#54,#57,#00,#00,#00 ;60 + DB #50,#4F,#52,#55,#56,#58,#01,#49,#45,#4D,#53,#4C,#4B,#59,#48,#00 ;70 + DB #00,#00,#00,#41,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 ;80 +XLAT_T.Size EQU $-XLAT_T +/////////////////////////////////////////////////////////////////////// + + +XLAT: BIT FLAG_E0,(IX+KEYFLG) + JR Z,.W_O_E0 + CP #11 ; Right ALT + LD L,#39 + RET Z + + CP #14 ; Right CTRL + LD L,#3A + RET Z + + CP #5A ; enter + LD L,#4E + RET Z + + CP #4A ; / + LD L,#4A + RET Z + + CP #7C ; * - Print Screen + LD L,#47 + RET Z + + LD L,A +.W_O_E0: + ; таблица с выравниванием на 256 + ; LD H,high XLAT_T + ; LD L,(HL) + ; + ; без выравнивания + ; [x] 31/03/2024 исправлен баг с выходом за границы таблицы XLAT_T + CP XLAT_T.Size + LD L,0 + RET NC + ; + LD HL,XLAT_T + ADD A,L + LD L,A + JR NC,.no_inc + INC H +.no_inc: + LD L,(HL) + RET + RET + +; !TODO посмотреть +;INPCODE: +; BIT 1,(IX+1) ;00110000 +; JR NZ,FN_KEY ;LRCAcaRP + +INPCODE: LD D,L + LD E,0 + ; !TODO вернуть русский? А зачем? + ; BIT LANG_L,(IX+K_LOCK) + ; JP NZ,RUSCODE + LD A,(KEYCTRL) + AND 1< 16 -; DISPLAY 'Warning! To much space before INT_POINTER: ',/D,INT_POINTER-before_intPointer -; ENDIF -; ENDIF - -; INT_HANDLER: -; PUSH AF -; EX AF,AF' -; PUSH AF -; PUSH BC -; PUSH DE -; PUSH HL -; EXX -; PUSH BC -; PUSH DE -; PUSH HL -; PUSH IX -; PUSH IY -; CALL KEYSCAN -; POP IY -; POP IX -; POP HL -; POP DE -; POP BC -; EXX -; POP HL -; POP DE -; POP BC -; POP AF -; EX AF,AF' -; POP AF -; EI -; RETI -; ; - -INT_OFF: DI - LD A,#3F - LD I,A - IM 1 - RET - ; -INT_ON: DI - LD A,+high INT_POINTER - LD I,A - LD HL,INT_HANDLER - LD (INT_POINTER),HL - IM 2 - EI - RET -; - -; -;------------------------[go to spectrum from bios]---------------------; -EXIT_SETUP: CALL INT_OFF - CALL TRD_MOUNT ; !TEST 24/09/2024 перенос в EXIT_SETUP (перед запуском ZX) - CALL SetUp_ZX_HDD - -; IF FREE_ZX_PAGES - LD A,Spec_Page - OUT (SLOT3),A - ; - LD A,(Spec_Page.flag_Z) - CP 'Z' - LD A,(Spec_Page.flag_X) - LD B,A - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,B - JR NZ,.Set_Page41 - CP 'X' -.Set_Page41: CALL NZ,ZXMODE_SETUP.Set_Page41 - -.set_ZX_params: LD BC,CMOS_CELL.QuickStartSetUp.Mask.ZxRom - CALL GET_CMOS_VALUE - LD L,A - LD BC,CMOS_CELL.QuickStartSetUp.Mask.Hardware - CALL GET_CMOS_VALUE - ; - EX AF,AF - LD A,ROM.EXTENSION - OUT (SYS_PORT.ROM),A - EX AF,AF - OR A - JP Z,SPRINTER_ZX.custom_ROM - DEC A - JP Z,Pentagon_48.custom_ROM - DEC A - JP Z,PENTAGON_128.custom_ROM - DEC A - JP Z,PENTAGON_512.custom_ROM - DEC A - JP Z,SCORPION_256.custom_ROM - DEC A - JP Z,ZX_Spectrum_48.custom_ROM - DEC A - JP Z,ZX_SPECTRUM_128.custom_ROM - ; error - XOR A - OUT (SYS_PORT.ROM),A - LD D,CMOS_CELL.QuickStartSetUp ; обнуляем параметр на всякий случай - CALL CMOS_WR - ; - CALL ScreenPOS.CRLF - LD A,msgStrings.errorZXmode - LD E,COLORS.CGA.INK.RED - CALL POSTMSC -.loop_di: DI - HALT - JR .loop_di - - - -SetUp_ZX_HDD: LD D,CMOS_CELL.TRDOSmount - CALL CMOS_RD - AND %1010'1010 ; маска для 4-х HDD - RET Z - ; find first good partition - ; - ; чистка переменных ZX HDD - IN A,(SLOT3) - EX AF,AF - LD A,SYS_PAGE - OUT (SLOT3),A - ; - XOR A - LD H,A - LD L,A - LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL - LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL - DEC A - LD (SYS_PAGE.CURRENT_HDD),A - LD (SYS_PAGE.CURRENT_DIR_DRIVE),A - LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A - ; - EX AF,AF - OUT (SLOT3),A - EX AF,AF - ; - XOR A -.loop: PUSH AF - CALL FN_HDD_PART - POP BC - RET NC - LD A,B - INC A - CP #10 - JR C,.loop - RET -;-----------------------------------------------------------------------; - -INSTALL: - CALL INT_ON - CALL SET_CGA - XOR A - OUT (BorderColor),A - LD IX,win_descriptor.tab80x32 - CALL WIN_OPEN.SCR1 - - LD DE,0 - LD HL,#2050 - LD B,7 - CALL LP_CLS_WIN - - LD DE,0 - LD HL,#0820 - LD B,0 - CALL LP_CLS_WIN - - CALL SETLAND - - CALL GET_ID - LD DE,#0028 ; !HARDCODE - CALL LP_SET_PLACE - LD HL,memBUFFER.ID - LD A,COLORS.CGA.INK.LCYAN - CALL CPRINTZ - ; LD HL,BUILD - ; LD A,COLORS.CGA.INK.LCYAN - ; CALL CPRINTZ - - LD DE,#0128 ; !HARDCODE - CALL LP_SET_PLACE - LD A,msgStrings.copyRightPeters - LD E,COLORS.CGA.INK.LGREEN - CALL POSTMSC - - LD DE,#0228 ; !HARDCODE - CALL LP_SET_PLACE - LD A,msgStrings.copyRightSPTeam - LD E,COLORS.CGA.INK.GREEN - CALL POSTMSC - - LD DE,#0328 - CALL LP_SET_PLACE - LD A,msgStrings.extBIOSmsg - IF BETA_BUILD > 0 - LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED - ELSE - LD E,COLORS.CGA.INK.LGRAY - ENDIF - CALL POSTMSC - - IN A,(SLOT3) - PUSH AF - LD A,SYS_PAGE - OUT (SLOT3),A - LD HL,RebootDate - CALL GETTIME - POP AF - OUT (SLOT3),A - RET - -RESTART_ID: -.str: DZ "RESTART" -.size EQU $ - RESTART_ID.str - - -Start_again: LD SP,STACK-2 -START: DI - PUSH AF - XOR A - LD (ERRSUM),A - LD (ERRSUM.ErrDateTime),A - ; - LD A,R ; reg R bit7 - признак запуска с отработкой лоадера конфы (из SET_CONFIG_ID) - LD (LOGOTYPE.playSnd),A - ; -; LD C,#97 -; RST_to_BIOS_18 -; XOR A -; LD C,#F2 -; RST_to_BIOS_18 -;------------------------------ ;!!!!! посмотреть -; CALL KINIT -;------------------------------ ;!!!!! посмотреть - -;--------[Clean keyboard buffer]-------- -; clean_kbd_buf: -; IN A,(Z84.SIO.Ch_A.Ctrl) -; BIT 0,A -; jr z,.exit -; IN A,(Z84.SIO.Ch_A.Data) -; jr clean_kbd_buf -; .exit: -;--------------------------------------- - - -;R08 CALL OPENDOS - ;!TEST 20/08/2024 - ;CALL ZXCLS - ; - CALL READING - CALL TEST_CHECKSUM - CALL NZ,SETDEFX - - ;!TODO CMOS Disabled use of CONFIG_DE (#C13A) word - ;LD A,#1C - ;CALL READCMS - ;PUSH AF - ;LD A,CMOS_CELL.HardwareConfiguration - ;CALL READCMS - ;POP DE - ;LD E,A - ; - - LD C,SLOT3 - IN B,(C) - PUSH BC - LD A,SYS_PAGE - OUT (C),A - -; LD (SYS_PAGE.CONFIG_DE),DE - - LD HL,SYS_PAGE.INT_ADRESS ;EXTENDED INTERRUPT - XOR A - LD (HL),A - INC L - LD (HL),A - INC L - LD (HL),A - INC L - LD (HL),A - POP BC - OUT (C),B - - - ;CALL TRD_MOUNT ; !TEST 24/09/2024 перенос в EXIT_SETUP (перед запуском ZX) - CALL FDD_INSTAL - CALL CLEAR_MEM - CALL ZXMODE_SETUP - CALL XY_SCREEN - -;R06 ;[Check Quick Start ROM] - LD BC,CMOS_CELL.BootUpParams.Mask.QuickStartROM ;#010E - CALL GET_CMOS_VALUE - POP BC - RR C - JR NC,IGNORE_QuickStartROM ; результат проверки Space из exp.asm [Check SPACE] - PUSH AF - LD C,SLOT3 - IN B,(C) - PUSH BC - LD A,SYS_PAGE - OUT (C),A - LD HL,SYS_PAGE.RESTART_ID - LD DE,RESTART_ID.str - LD B,RESTART_ID.size - CALL COMPARE_RESTART_ID - CALL NZ,SET_RESTART_ID - POP BC - OUT (C),B - JR Z,YES_QuickStartROM - POP AF - JR IGNORE_QuickStartROM - -SET_RESTART_ID: - PUSH AF - LD HL,RESTART_ID.str - LD DE,SYS_PAGE.RESTART_ID - LD BC,RESTART_ID.size - LDIR - LD HL,PowerOnDate ; !TODO изменить под структуру, когда структура переменных будет готова - CALL GETTIME - POP AF - RET - -YES_QuickStartROM: - POP AF - OR A - JP NZ,EXIT_SETUP -IGNORE_QuickStartROM: - CALL INSTALL - LD DE,#0528 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.toSetupButton - LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.WHITE - CALL POSTMSC - - LD DE,#0900 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE -ERRSUM+1: - LD A,#00 - OR A - JR Z,.ErrDateTime - XOR A - LD (.ErrDateTime+1),A ; если контрольная сумма слетела, то сообщение о кривых дате/времени в кмос не выводим - LD A,msgStrings.cmosChecksumErr - LD E,COLORS.CGA.INK.RED - CALL POSTMSC - CALL ScreenPOS.CRLF - CALL ScreenPOS.CRLF - JR CHEKOK - -.ErrDateTime+1: - LD A,0 - OR A - JR Z,CHEKOK - LD A,msgStrings.cmosDateTimeErr - LD E,COLORS.CGA.INK.RED - CALL POSTMSC - CALL ScreenPOS.CRLF - CALL ScreenPOS.CRLF - -CHEKOK: ;CALL ScreenPOS.GET_CUR - CALL LP_GET_PLACE - PUSH DE - CALL LOGOTYPE - - LD DE,#0000 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.spModel - CALL POSTMSG - CALL PIDNUM - CALL ScreenPOS.CRLF - - LD A,msgStrings.boardID - CALL POSTMSG - CALL PIDBOARD - CALL ScreenPOS.CRLF - - LD A,msgStrings.spCNFver - CALL POSTMSG - CALL CNF_VER_PRINT - CALL ScreenPOS.CRLF - - LD A,msgStrings.spMemory - CALL POSTMSG - CALL EMM.GetMemSize - PUSH BC - CALL PMEMORY - CALL ScreenPOS.CRLF - LD A,msgStrings.memoryAvailable - CALL POSTMSG - POP HL - CALL PMEMORY - CALL ScreenPOS.CRLF - - ;CALL TSTCMOS - CALL CMOS_TEST - - LD A,msgStrings.cmosNone - JR C,CMOS_ABSENT - ; CMOS OK - CALL CMOSINIT - LD A,msgStrings.cmosFound - CALL POSTMSG - LD A,',' - CALL PRINT_CHAR - LD A," " - CALL PRINT_CHAR - LD HL,RebootDate - CALL PRNTIME - CALL ScreenPOS.CRLF - JR INFO_MESSAGE -CMOS_ABSENT: - CALL POSTMSG -INFO_MESSAGE: - ; for recovery boot - ; LD DE,#0428 - ; CALL LP_SET_PLACE - ; LD A,msgStrings.forCtrlBootButton - ; LD E,COLORS.CGA.INK.WHITE - ; CALL POSTMSC - ; - ; For alternative boot - LD DE,#0528 - CALL LP_SET_PLACE - LD A,msgStrings.forAltBootButton - LD E,COLORS.CGA.INK.WHITE - CALL POSTMSC - - - POP DE - CALL LP_SET_PLACE - - CALL TSETUP ;!TODO может пихнуть её на прерывания? - - CALL CONFIGURE_IDE_DRIVES.START - ;CALL CONFIGURE_IDE_DRIVES.Nop_CHANELS - CALL CTRLKEY - LD A,B - ; [x] 05/07/2024 - BIT X_CTRL,A - LD BC,#FFFF ; маркер для PrepareToBOOT, чтоб грузил Recovery - JR NZ,RECOVERY_BOOT - ; - BIT X_ALT,A - JR NZ,ALT_BOOT - ; - CALL TSETUP - ; - LD BC,CMOS_CELL.BootDrives.Mask.SysDisk ;#0710 -RECOVERY_BOOT: - CALL PrepareToBOOT - LD A,msgStrings.bootFail - LD E,COLORS.CGA.INK.LRED - CALL C,POSTMSC - CALL ScreenPOS.CRLF - ; - CALL INT_ON -ALT_BOOT: - LD A,msgStrings.bootAltDrv - LD E,COLORS.CGA.INK.LGREEN - CALL POSTMSC - - LD BC,CMOS_CELL.BootDrives.Mask.AltSysDisk ;#7010 - CALL PrepareToBOOT - LD A,msgStrings.bootFail - LD E,COLORS.CGA.INK.LRED - CALL C,POSTMSC - CALL ScreenPOS.CRLF - - ;NO START DISK - RESTART / SETUP / ZX SPECTRUM mode - LD BC,CMOS_CELL.Options.Mask.RebootMSG ;#021D - CALL GET_CMOS_VALUE - OR A - JP Z,EXIT_SETUP - - CALL ScreenPOS.CRLF - LD A,msgStrings.afterBootFail - LD E,COLORS.CGA.INK.RED - CALL POSTMSC - - ;EI - CALL INT_ON -StartUpKey: CALL WAITKEY - LD HL,#4F00 ; DEL - go to settings - ;AND A - SBC HL,DE - JR Z,ENTER_SETUP - ; - CP #1B ; ESC - go to zx spectrum mode - JP Z,EXIT_SETUP - CP #0D ; ENTER - restart - JP NZ,StartUpKey - XOR A - JP Start_again - -TSETUP: CALL SCANKEY - RET Z - LD HL,#4F00 ; DEL - go to settings - AND A - SBC HL,DE - JR Z,ENTER_SETUP - ; - LD HL,#011B ; ESC - AND A - SBC HL,DE - JR NZ,TSETUP - POP HL ; убираем лишнее - JP EXIT_SETUP -ENTER_SETUP: - XOR A - LD (ITEM_Restore),A - CALL SETTINGS - XOR A - JP Start_again - -COMPARE_RESTART_ID: - LD A,(DE) - CP (HL) - RET NZ - INC HL - INC DE - DJNZ COMPARE_RESTART_ID - RET - -; ????? перенести это в функции БИОС? -; HL - data to write: BYTE Hours, minutes, seconds, day, month, century, year. (2022: 20 - century, 22 - year) -writeDateTimeToCmos: ;!FIXIT - LD A,(HL) - LD D,CMOS.Register.hours - CALL CMOS_WR - - INC HL - LD A,(HL) - LD D,CMOS.Register.minutes - CALL CMOS_WR - - INC HL - LD A,(HL) - LD D,CMOS.Register.seconds - CALL CMOS_WR - - INC HL - LD A,(HL) - LD D,CMOS.Register.date - CALL CMOS_WR - - INC HL - LD A,(HL) - LD D,CMOS.Register.month - CALL CMOS_WR - - INC HL - LD A,(HL) - LD D,CMOS.Register.century - CALL CMOS_WR - - INC HL - LD A,(HL) - LD D,CMOS.Register.year - CALL CMOS_WR - RET - -XY_SCREEN: ;R06 - LD A,CMOS_CELL.ScreenPosition - CALL READCMS - LD B,A - LD A,ACEX.HOLD - JP SET_PORTS - ; PUSH AF - ; IN A,(SLOT3) - ; LD E,A - ; LD A,DCP_PAGE - ; OUT (SLOT3),A - ; LD A,(#C400) ;c400 for first cfg 50176 - ; LD D,A - ; LD A,ACEX.HOLD - ; LD (#C400),A - ; POP AF - ; LD BC,0 - ; OUT (C),A - ; LD A,D - ; LD (#C400),A - ; LD A,E - ; OUT (SLOT3),a - ; RET -; -;R07 -; CMOSINIT: -; LD D,10 ;FREQ -; LD C,#F6 ;READ CMOS -; RST_to_BIOS -; CP #26 -; JR NZ,CMSERR -; LD D,12 -; LD C,#F6 -; RST_to_BIOS -; CP #50 -; RET Z -; CMSERR: -; LD D,10 -; LD A,#26 ;FREQ -; LD C,#F7 -; RST_to_BIOS -; LD D,11 -; LD A,#02 ;TIME FORMAT -; LD C,#F7 -; RST_to_BIOS -; LD D,12 -; LD A,#50 -; LD C,#F7 -; RST_to_BIOS -; LD D,13 -; LD A,#80 -; LD C,#F7 -; RST_to_BIOS -; RET - -;------------------- ;!!!!! посмотреть -; 0 - 1-st FDD -; 1 - 2-nd FDD -; 2 - 1-st IDE -; 3 - 2-nd IDE -; 4 - 3-rd IDE -; 5 - 4-th IDE -; 6 - RAM-DISK -; -; -> BC - ячейка и маска для чтения значения кмос для загрузочного драйва - -; -;[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] -RECOVERYstart: - LD A,msgStrings.bootRecovery - CALL POSTMSG - ; - - ; Выбор рамдиска для рекавери - _mRECOVERYrdChooseTYPE RECOVERYrdChooseTYPE - - ; прибиваем последний рамдиск, если занят -.killRAMdisk: LD A,SYS_PAGE.RAMD_KEYS.NUM-1 - LD (.RDkey),A - CALL EMM.FreeMemRMD - JR NC,.setRAMdisk - JR Z,.setRAMdisk - RET ; непонятная ошибка - выходим -.setRAMdisk: LD A,(.RDkey) - LD B,ROM_DISK.Pages.Size - CALL EMM.GetMemRMD - JR NC,.IMGread ; свободный рамдиск найден - DEC A - JR Z,.FreeMem ; ошибка - недостаточно памяти, вызываем очистку памяти - RET ; непонятная ошибка - выходим -.FreeMem: CALL EMM.FullInit - JR .killRAMdisk -; - -; Вход: A - RAM block ID -.IMGread: - ; Вариант копирования ROM -> RAM disk - _mRECOVERYmountTYPE RECOVERYmountTYPE -; - ;Exit from "ROM Disk to RAM disk" procedure -.RDkey+*: LD A,0 - OR DRIVE_CODES.SPRINTER.RAM - LD B,A ; передаём загрузочное устройство в OS_LOAD - JP OS_LOAD - ; -;[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] -; - -PrepareToBOOT: ;CALL INT_ON - HALT - CALL PORTS_INIT.clean_kbd_buf ;Clearing the keyboard buffer - CALL PORTS_INIT.clean_mouse_buf ;Clearing the mouse buffer - CALL INT_OFF - ; тут не должно быть испорчено значение BC - ; [x] 05/07/2024 - INC BC - LD A,B - OR C - JP Z,RECOVERYstart - DEC BC - ; - CALL GET_CMOS_VALUE - LD B,DRIVE_CODES.SPRINTER.FDD - ; FDD - OR A - JR Z,FDSTART ; FDD A: - INC B - DEC A - JR Z,FDSTART ; FDD B: - ; IDE - LD B,DRIVE_CODES.SPRINTER.HDD - DEC A - JR Z,HDSTART - INC B ;LD B,#81 - DEC A - JR Z,HDSTART - INC B ;LD B,#82 - DEC A - JR Z,HDSTART - INC B ;LD B,#83 - DEC A - JR Z,HDSTART - ; RAM - DEC A - JR Z,RDSTART - ; ROM - DEC A - JP Z,RECOVERYstart - ; Error - SCF - RET - ; -FDSTART: PUSH BC - PUSH BC - LD A,msgStrings.bootFdd - CALL POSTMSG - POP AF - CALL FDD_5x_RESET - POP BC - RET C - JR OS_LOAD - ; -CDSTART: LD A,B ; [ ] 15/02/2025 boot from ATAPI - OR DRIVE_CODES.SPRINTER.ATAPI - LD B,A - PUSH BC - LD A,msgStrings.bootCd - CALL POSTMSG - POP AF - PUSH AF - CALL PRINT_CHANEL - ; - POP BC - PUSH BC - CALL OS_LOAD - POP BC - RET NC - LD HL,2048 ;!HARDCODE sector size - LD IX,#0011 - JR OS_LOAD.CD - ; -RDSTART: LD A,msgStrings.bootRamDrv - CALL POSTMSG - LD B,DRIVE_CODES.SPRINTER.RAM ; 6 - тип драйва RAM-DRV, 0 - номер драйва -.loop: PUSH BC - CALL OS_LOAD - POP BC - INC B - LD A,DRIVE_CODES.SPRINTER.RAM + SYS_PAGE.RAMD_KEYS.NUM-1 ; максимальный номер рамдиска - SUB B - JR NC,.loop - RET - - -HDSTART: IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,B - ; - AND #03 ;R02 %00000011 - LD IY,IDE.INIT_TBL_IDE0 - JR Z,.next - ; - LD IY,IDE.INIT_TBL_IDE1 - CP 1 ;R02 - JR Z,.next - ; - LD IY,IDE.INIT_TBL_IDE2 ;R02 - CP 2 ;R02 - JR Z,.next - ; - LD IY,IDE.INIT_TBL_IDE3 ;R02 - ; -.next: LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - CP IDE.Device.ATAPI - JP Z,CDSTART - PUSH AF - PUSH BC - LD A,msgStrings.bootHdd - CALL POSTMSG - POP AF - PUSH AF - CALL PRINT_CHANEL - ; - POP BC - POP AF - CP #FF - SCF - RET Z - ; -OS_LOAD: LD HL,512 ;!HARDCODE - LD IX,#0001 -.CD: LD (.SectorSizeAddr),HL - LD HL,#0000 - LD DE,TEMP - LD A,B - LD BC,1*256 + BIOS.DRV_READ - PUSH AF - RST ToBIOS_18 - ; - POP BC - RET C - LD A,B - EX AF,AF' - LD HL,TEMP - LD DE,SYSID - LD B,SYSID.length -.loop: LD A,(DE) - CP (HL) - SCF - RET NZ - INC HL - INC DE - DJNZ .loop - EX AF,AF' - PUSH AF - LD A,msgStrings.bootOk - LD E,COLORS.CGA.INK.LGREEN - CALL POSTMSC - CALL ScreenPOS.CRLF - POP AF ; физический номер диска - POP HL -.MOVE0: DI - IM 1 - LD HL,MOVE1 - LD DE,OS_LOAD.SectorSizeAddr - MOVE1.length ; !HARDCODE - LD BC,MOVE1.length - LDIR - JP OS_LOAD.SectorSizeAddr - MOVE1.length - ; -MOVE1: LD HL,#8000 ; !HARDCODE - LD SP,HL - EX DE,HL - LD HL,TEMP - LD BC,(OS_LOAD.SectorSizeAddr) - LDIR - JP #8000+SYSID.length ;#800C ; !HARDCODE - ; -.length EQU $-MOVE1 - - -SYSID: DZ "Starting..." -.length EQU $-SYSID - - -;FD144A: DB #80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD -; .Size EQU $ - FD144A -; FD720A: DB #00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD -; .Size EQU $ - FD720A -FDD_INIT_TABLE: FDD_1440_TABLE - -FDD_INSTAL: IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD HL,SYS_PAGE.FDD_TABLE - LD BC,SYS_PAGE.FDD_TABLE.Size*256 + #FF ; table_size*256 + fill_byte -.FILLFDD: LD (HL),C - INC HL - DJNZ .FILLFDD - ; - ;EX AF,AF' - ;OUT (SLOT3),A - ;LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311 - ;CALL GET_CMOS_VALUE - ;LD HL,FD720A - ;OR A - ;JR Z,.SETFD0 - LD HL,FDD_INIT_TABLE - ;DEC A - ;JR NZ,.NOFDD0 -;.SETFD0: ;IN A,(SLOT3) - ;EX AF,AF' - ;LD A,SYS_PAGE - ;OUT (SLOT3),A - LD DE,SYS_PAGE.FDD_TABLE - ; B=0 - LD C,SYS_PAGE.FDD_TABLE.Size - LDIR - ;EX AF,AF' - ;OUT (SLOT3),A -;.NOFDD0: LD BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD ;#0C11 - ;CALL GET_CMOS_VALUE - ;LD HL,FD720A - ;OR A - ;JR Z,.SETFD1 - ;LD HL,FD144A - ;DEC A - ;JR NZ,.NOFDD1 -;.SETFD1: IN A,(SLOT3) - ;EX AF,AF' - ;LD A,SYS_PAGE - ;OUT (SLOT3),A - ;LD DE,SYS_PAGE.FDD_1_TABLE - ;LD BC,FD144A.Size - ;LDIR - EX AF,AF' - OUT (SLOT3),A -.NOFDD1: RET - - -PIDNUM: LD HL,memBUFFER.ID - LD BC,#00FF - XOR A - CPIR - LD A,(HL) - OR A - RET Z - CALL PRINTZ - RET - -PIDBOARD: CALL FN_CRIPT.board_id - ; - IF MotherBoardType > 0 - PUSH AF - ENDIF - PUSH DE - PUSH HL - PUSH BC - LD A,B - CALL PRNHEX - LD A,'-' - CALL PRINT_CHAR - POP BC - LD A,C - CALL PRNHEX - LD A,'-' - CALL PRINT_CHAR - POP HL - CALL IPRINT.Z - POP DE - PUSH DE - LD A,D - CALL PRNHEX - POP DE - LD A,E - IF MotherBoardType == 0 - JP PRNHEX - ELSE - CALL PRNHEX - LD A,' ' - CALL PRINT_CHAR - POP AF - ; type 0 - Classic - RET Z - ; type 1 - DX - LD HL,.ver_DX - DEC A - JP Z,PRINTZ - ; type 2 - DP - LD HL,.ver_DP - DEC A - JP Z,PRINTZ - ; type 3 - Max - LD HL,.ver_Max - DEC A - JP Z,PRINTZ - ; type 4 - test - LD HL,.Test - DEC A - JP Z,PRINTZ - RET - ; -.ver_DX: DZ "DX" -.ver_DP: DZ "DP" -.ver_Max: DZ "Max" -.Test DZ "0123456789A" - ENDIF - - -CNF_VER_PRINT: - LD HL,memBUFFER.ID - IFN BIOS.FN_VERSION.STR.BitstreamVer = 0 - LD BC,BIOS.FN_VERSION.STR.BitstreamVer*256 - XOR A -.loop: CPIR - DJNZ .loop - ENDIF - JP PRINTZ - -;PIDNUM LD A,#0D -; LD HL,ID_BUFFER -; LD BC,#0030 -; CPIR -; RET NZ -; INC HL -; LD BC,#0286 -; RST_to_BIOS_18 -; INC HL -; LD BC,#0586 -; RST_to_BIOS_18 -; INC HL -; LD BC,#0286 -; RST_to_BIOS_18 -; XOR A -; RET - -;PIDDATE -; LD A,#0D -; LD HL,ID_BUFFER -; LD BC,#0030 -; CPIR -; RET NZ -; INC HL -; CPIR -; RET NZ -; INC HL -; LD BC,#0A86 -; JP_to_BIOS - -////////////////////////////////////////////////////////////////////// -; INCLUDE 'IM2_INT.asm' -////////////////////////////////////////////////////////////////////// - -PRNHEX: LD D,A - RRCA - RRCA - RRCA - RRCA - AND #0F - ADD A,#30 - CP #3A - JR C,PRNH1 - ADD A,7 -PRNH1: CALL PRINT_CHAR - LD A,D - AND #0F - ADD A,#30 - CP #3A - JP C,PRINT_CHAR - ADD A,7 - JP PRINT_CHAR - -PHEX: LD D,A - RRCA - RRCA - RRCA - RRCA - AND #0F - ADD A,#30 - CALL PRINT_CHAR - LD A,D - AND #0F - ADD A,#30 - JP PRINT_CHAR - -PRNTIME: - IN A,(SLOT3) - PUSH AF - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(HL) - CALL PHEX - LD A,":" - CALL PRINT_CHAR - INC L - LD A,(HL) - CALL PHEX - LD A,":" - CALL PRINT_CHAR - INC L - LD A,(HL) - CALL PHEX - POP AF - OUT (SLOT3),A - RET - - -PMEMORY: - ADD HL,HL - ADD HL,HL - ADD HL,HL - ADD HL,HL ; * 16 - CALL IPRINT - LD A,"K" - JP PRINT_CHAR - - IFUSED ZXCLS -ZXCLS: LD HL,#4000 - LD DE,#4001 - LD BC,#1AFF - LD (HL),L - LDIR - RET - ENDIF - -GET_ID: LD HL,memBUFFER.ID - ;LD C,BIOS.FN_VERSION - ;JP_to_BIOS - JP FN_VERSION - - -;R01GET_ID -;R01 LD A,#10 -;R01 LD BC,#1FFD -;R01 OUT (C),A -;R01 LD C,SLOT3 -;R01 IN B,(C) -;R01 PUSH BC -;R01 LD A,#EE -;R01 OUT (C),A -;R01 LD HL,#FFD0 -;R01 LD DE,ID_BUFFER -;R01 LD BC,#30 -;R01 LDIR -;R01 POP BC -;R01 OUT (C),B -;R01 XOR A -;R01 LD BC,#1FFD -;R01 OUT (C),A -;R01 RET - - -; COPY_CHAIN: LD E,L -; LDI -; DEC L -; LD L,(HL) -; INC L -; RET Z -; DEC L -; JR COPY_CHAIN - -; ; Вход: HL - копия RAM_TABLE откуда копировать -; RESTORE_CHAINS: LD DE,SYS_PAGE.RAM_TABLE -; XOR A -; .loop: CP (HL) -; JR Z,.NoCopy -; LD E,L -; LDI -; DEC L -; .NoCopy: INC L -; JR NZ,.loop -; RET - -;---------------------------------------------------------------[] -;REGISTER #1E -; %0000'0011 - TR DOS A: Default / FDD / HDD / RMD -; %0000'1100 - TR DOS B: Default / FDD / HDD / RMD -; %0011'0000 - TR DOS C: Default / FDD / HDD / RMD -; %1100'0000 - TR DOS D: Default / FDD / HDD / RMD - -TRD_MOUNT: LD BC,CMOS_CELL.TRDOSmount.Mask.A ;#031E - LD A,0 - CALL .TRDOSX - LD BC,CMOS_CELL.TRDOSmount.Mask.B ;#0C1E - LD A,1 - CALL .TRDOSX - LD BC,CMOS_CELL.TRDOSmount.Mask.C ;#301E - LD A,2 - CALL .TRDOSX - LD BC,CMOS_CELL.TRDOSmount.Mask.D ;#C01E - LD A,3 -.TRDOSX: ; PUSH AF - ; CALL GET_CMOS_VALUE - ; POP BC - ; OR A - ; RET Z - ; LD C,BIOS.FDD_TO_DRV - ; DEC A - ; JP Z,ToBIOS_18 - ; LD C,BIOS.HDD_TO_DRV - ; DEC A - ; JP Z,ToBIOS_18 - ; SCF - ; RET - PUSH AF - CALL GET_CMOS_VALUE - POP BC - OR A - RET Z - DEC A - JP Z,FDD_TO_DRV - DEC A - JP Z,HDD_TO_DRV - SCF - RET -;---------------------------------------------------------------[] - - -;!TODO посмотреть - ;открывает порт #FE на чтение в 3-й карте портов - ;OPENDOS: - ; DI - ; IN A,(SLOT3) - ; EX AF,AF' - ; LD A,#40 - ; OUT (SLOT3),A - ; LD HL,#C000 - ; LD DE,#F000 - ; LD BC,#0400 - ; LDIR - ; LD A,#40 - ; LD (#F26E),A - ; LD (#F27E),A - ; LD (#F2EE),A - ; LD (#F2FE),A - ; LD (#F36E),A - ; LD (#F37E),A - ; LD (#F3EE),A - ; LD (#F3FE),A - ; LD HL,#F000 - ; LD DE,#F400 - ; LD BC,#0C00 - ; LDIR - ; EX AF,AF' - ; OUT (SLOT3),A - ; RET -; - - - -setFRAME: -.double: - LD HL,.dataDoubleAll - JR .setElements -.single: - LD HL,.dataSingleAll - JR .setElements -.high: LD HL,.dataSingleDown - JR .setElements -.low: LD HL,.dataSingleUp - JR .setElements -.medium: - LD HL,.dataSingleMedium -; JR .setElements -.setElements: - LD DE,ElementsBuffer - LD BC,ElementsBuffer.Size - LDIR - RET - -.dataDoubleAll: BYTE "╔╗═║╚╝", "╠╣╦╩" ; #C9,#BB,#CD,#BA,#C8,#BC, #CC,#B9,#CB,#CA -.dataSingleAll: BYTE "┌┐─│└┘", "├┤┬┴" ; #DA,#BF,#C4,#B3,#C0,#D9, #C3,#B4,#C2,#C1 -.dataSingleDown: BYTE "╔╗─║╟╢", "╟╢╤┴" ; #C9,#BB,#C4,#BA,#C7,#B6, #C7,#B6,#D1,#C1 -.dataSingleUp: BYTE "╟╢─║╚╝", "╟╢┬╧" ; #C7,#B6,#C4,#BA,#C8,#BC, #C7,#B6,#C2,#CF -.dataSingleMedium: BYTE "╟╢─║╟╢", "╟╢┬┴" ; #C7,#B6,#C4,#BA,#C7,#B6, #C7,#B6,#C2,#C1 -; -ElementsBuffer: -.UpLeft: BYTE "┌" ; UL - UpLeft -.UpRight: BYTE "┐" ; UR - UpRight -.HorizontalLine: BYTE "─" ; ZL - HorizontalLine -.VerticalLine: BYTE "│" ; VL - VerticalLine -.DownLeft: BYTE "└" ; LL - DownLeft -.DownRight: BYTE "┘" ; LR - DownRight -.LeftCenter: BYTE "├" ; LC - LeftCenter -.RightCenter: BYTE "┤" ; RC - RightCenter -.UpCenter: BYTE "┬" ; UC - UpCenter -.DownCenter: BYTE "┴" ; DC - DownCenter -.Size EQU $-ElementsBuffer -; - IF STARTUP_SND - INCLUDE 'startup_sound.asm' - ENDIF - INCLUDE 'VIDEO_IO.asm' - INCLUDE 'AUTOIDE.asm' - INCLUDE 'SETTINGS.asm' - INCLUDE 'KEY.asm' -;....................................... - -KEY: EI - JP WAITKEY - -FindStringAddr: - LD L,A - LD H,0 - LD BC,memBUFFER.Messages - ADD HL,HL - ADD HL,BC - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - RET - -POSTLEN: - CALL FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - SRL A - LD C,A - LD A,40 - SUB C - LD E,A - ;JP ScreenPOS.LOCAT - JP LP_SET_PLACE - -SETLAND: - LD A,#0E ; !HARDCODE CMOS ячейка options - CALL READCMS ;!TODO переделать на GET_CMOS_VALUE - AND #04 ; !HARDCODE CMOS значение языка - LD HL,MSG_RUS - JR NZ,.set - LD HL,MSG_ENG - ; -.set: LD DE,memBUFFER.Messages - LD BC,MSG_TABLE.Size - LDIR - RET - -; -; print boot drive number -PRINT_CHANEL: AND #0F - LD C,A - ; - LD A,msgStrings.parPriIdeMA - JR Z,.print_chanel - ; - LD A,msgStrings.parPriIdeSl - DEC C - JR Z,.print_chanel - ; - LD A,msgStrings.parSecIdeMA - DEC C - JR Z,.print_chanel - ; - LD A,msgStrings.parSecIdeSl -.print_chanel: CALL FindStringAddr - ;CALL LP_GET_PLACE - ;LD A,ScreenPOS.SUBNAME.POS - ;SUB E - ;LD B,A - LD B,0 - LD D,#FF - JP LP_PRINT_LINE6 -; - -POSTMSC: CALL FindStringAddr - LD A,E - JP CPRINTZ -; -////////////////////////////////////////////////////////////////////// - INCLUDE 'IM2_INT.asm' -////////////////////////////////////////////////////////////////////// - -POSTMSG: CALL FindStringAddr - JP PRINTZ - - - -;----------------------------------------------------------------------[] -;Что грузить в vПЗУ при старте. Варианты: -;[x] 0 - Не грузить ПЗУ спектрума, инитить страницу #41 как в 3.04 -;[x] 1 - Грузит ПЗУ спектрума из ROM при старте если нет флага ZX -;[x] 2 - Грузит ПЗУ спектрума из ROM при каждом перезапуске -;[ ] 3 - Не грузить ПЗУ спектрума, инитить страницу #41 так, -; чтоб код в ней подгружал ПЗУ спектрума при обращении -ZXMODE_SETUP: IN A,(SLOT3) - PUSH AF - LD A,Spec_Page - OUT (SLOT3),A - ; - LD BC,CMOS_CELL.Options.Mask.LoadZXroms - CALL GET_CMOS_VALUE - ; - OR A - JR Z,.init_41h - DEC A - JR Z,.CheckAndLoad - DEC A - JR Z,.Load_ZXROMS - ;!TODO - ;DEC A - ;JR Z,.New_init_41h - ; - ; Check ZX ROMS Loaded -.CheckAndLoad: LD A,(Spec_Page.flag_Z) - CP 'Z' - JR NZ,.Load_ZXROMS - LD A,(Spec_Page.flag_X) - CP 'X' - JR NZ,.Load_ZXROMS - ; [x] 31/12/23 подстраховка от недоутечки памяти - LD A,R - AND #80 - JR Z,.No_Need_To_Load_ZXROMS -.Load_ZXROMS: XOR A - LD R,A - ; Load ZX ROM's - LD BC,64*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! MANAGE_ZX_PAGES.FREE_vMEMORY - RST ToBIOS_18 - ; - LD B,3 ; !HARDCODE zx-rom number of pages - CALL EMM.GetMem - JR C,.init_41h ;!FIXIT печатать ошибку ; [ ] free zx pages! - CALL init_zx_roms - ; IFN FREE_ZX_PAGES - ; ; ставим метку если прогрузили ПЗУ спектрума - ; LD HL,'XZ' - ; LD (Spec_Page.flag_Z),HL - ; ENDIF ; -.No_Need_To_Load_ZXROMS: - POP AF - OUT (SLOT3),A - RET - ; -.init_41h: CALL init_zx_roms.init_41h - LD A,SYS_PAGE - OUT (SLOT3),A - CALL .Set_Page41 - ;!FIXIT установить во все vROM страницу #41 ; [ ] free zx pages! - JR .No_Need_To_Load_ZXROMS - ; -.Set_Page41: LD HL,SYS_PAGE.SHARED_BUFFER_256b + 11 - LD DE,SYS_PAGE.SHARED_BUFFER_256b + 11-1 - LD BC,11-1 ; !HARDCODE кол-во страниц vROM + RAM BLOCK ID - LD (HL),#FF - LDDR ; зачищаем - EX DE,HL - ; - ; LD A,SYS_PORT.EXTENSION - ; OUT (SYS_PORT.ROM),A - ; JP MANAGE_ZX_PAGES.INIT_vROM - ; XOR A ;LD A,SYS_PORT.BIOS - ; OUT (SYS_PORT.ROM),A - LD BC,128*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE - JP ToBIOS_18 - ;RET -; -;--------------------[copy zx-roms to zx-pages]-----------------; -; SLOT0 - ROM 8, sys_port - on. -; RAM SLOT0 - page 0 -; RAM SLOT3 - Spec_Page -; для режима zx spectrum -; !HARDCODE номера страниц для эмулятора ПЗУ -init_zx_roms: DI - ; ;;;;;;;; - ; IF FREE_ZX_PAGES - ; ;;;;;;;; - ; НА ВХООДЕ A = SYS_PAGE.Block_ID.vROM - ; добиваем буфер до 11 байтов пустыми страницами - ; в буфер упадут 1 RAM BLOCK ID, 3 страницы для vROM и #FF - LD HL,#FFFF - LD (memBUFFER.Shared + 5),HL ; !HARDCODE zx-rom number of pages - LD (memBUFFER.Shared + 7),HL ; !HARDCODE zx-rom number of pages - LD (memBUFFER.Shared + 9),HL ; !HARDCODE zx-rom number of pages - ; получаем список страниц для vROM - LD HL,memBUFFER.Shared - LD (HL),A - INC HL - LD B,A - CALL EMM.GetMemBlkPages - ; - LD A,SYS_PAGE - OUT (SLOT3),A - ; устанавливаем номера страниц vROM в порты ALTERA - DEC HL - LD A,ROM.EXTENSION - OUT (SYS_PORT.ROM),A - CALL MANAGE_ZX_PAGES.INIT_vROM - ; Копируем образы ZX-ROM из ПЗУ в страницы vROM - LD A,2 ; !HARDCODE - LD BC,+(3*2)*256 + SLOT3 ; !HARDCODE B = (zx-rom number of pages)*2 - LD HL,memBUFFER.Shared + 1 -.loop: OUTI - OUT (ROM.SLOT0),A - EXX - LD HL,0 - LD DE,#C000 - LD BC,#4000 - LDIR - EXX - INC A - DJNZ .loop - ; возвращаем страницы на место - XOR A - OUT (ROM.SLOT0),A - OUT (SYS_PORT.ROM),A - LD A,Spec_Page - OUT (SLOT3),A -.init_41h: ; забить FF-ами - LD HL,#C000 - LD DE,#C001 - LD BC,#3FFF - 2 - LD (HL),#FF - LDIR - ; Заглушка для страницы #41 - LD HL,PROG_NO_ROM - LD DE,#C000 + Spec_Page.no_zx_rom - LD BC,PROG_NO_ROM.size - LDIR - ; - LD HL,RAM_BIOS_PROG - LD DE,#C000 + Spec_Page.to_bios - LD BC,RAM_BIOS_PROG.Length - LDIR - RET -;---------------------------------------------------------------------[] - - -;--------------------------------------- - INCLUDE 'src/bios/ROM/SETUP/messages.z80' -;--------------------------------------- -; - - STRUCT MAIN_BUFFERS -ID BLOCK #100 -Messages BLOCK MSG_ENG.size -Shared BLOCK 1024 -End BYTE - ENDS - - -memBUFFER MAIN_BUFFERS = $ -STACK EQU #C000 -.Size EQU 128 - - - IF memBUFFER.End-1 > #C000-STACK.Size - DISPLAY 'memBUFFER.Shared overlaps STACK by: ',/A,(memBUFFER.End-1)-(#C000-STACK.size) - ASSERT memBUFFER.End-1 < #C000-STACK.size - ENDIF - - IFDEF PREBUILD - OUTEND - - DISPLAY '-----[Set_Pictures Prebuild start]-----' - MMU 1 e, 0 ; страница 0 в банку 0 и проверка на границы. - ORG ROM_MAP.LOGO - INCLUDE 'src/bios/logo/Set_Pictures.asm' - DISPLAY '-----[Set_Pictures Prebuild done ]-----' - ELSE -MAIN_END_CODE_ADDRESS EQU $-1 - ; DISPLAY ' -------------------[Main.asm]-------------------' - ; DISPLAY 'End code address: ',/A,$-1 - ; DISPLAY 'Code size: ',/A,$-COMPILE_ADDR.MAIN - ; DISPLAY 'End buffers address: ',/A,memBUFFER.End-1 - ; DISPLAY 'Free memory: ',/A,#C000-(memBUFFER.End-1)-STACK.Size - ; DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer - ENDIF -; - - - -;======================================================================================================================= - -; ;;;;;;;; -; ELSE -; ;;;;;;;; -; IN A,(SLOT3) -; EX AF,AF' -; ; -; LD A,SYS_PORT.EXTENSION -; OUT (SYS_PORT.ROM),A -; INC A ; !HARDCODE LD A,2 -; LD B,3 ; !HARDCODE zx-rom number of pages -; ; -; .loop: EXX -; ; -; OUT (ROM.SLOT0),A -; OR %0100'0000 ; !HARDCODE номера страниц для эмулятора ПЗУ -; OUT (SLOT3),A -; AND %1011'1111 ; !HARDCODE номера страниц для эмулятора ПЗУ -; ; -; LD HL,0 -; LD DE,#C000 -; LD BC,#4000 -; LDIR -; ; -; INC A -; EXX -; DJNZ .loop -; ; -; XOR A -; OUT (ROM.SLOT0),A -; OUT (SYS_PORT.ROM),A -; EX AF,AF' -; OUT (SLOT3),A -; ; -; ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 -; [ ] free zx pages! переделать на вызов FREE_ZX_PAGES.INIT_vROM -; LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128 -; LD B,#42 ;!HARDCODE page -; CALL SET_PORTS -; ; -; LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48 -; LD B,#43 ;!HARDCODE page -; CALL SET_PORTS -; ; -; LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS -; LD B,#44 ;!HARDCODE page -; CALL SET_PORTS -; ; -; ; эти страницы пока не используются -; LD A,ACEX.vROM.EXPANSION ; ROM-ID - BIOS -; ;LD B,#45 ;!HARDCODE page -; LD B,#41 -; CALL SET_PORTS -; ; -; LD A,ACEX.vROM.BIOS_1 ; ROM-ID - BIOS-1 -; ;LD B,#46 ;!HARDCODE page -; LD B,#41 -; CALL SET_PORTS -; ; -; LD A,ACEX.vROM.BIOS_2 ; ROM-ID - BIOS-2 -; ;LD B,#47 ;!HARDCODE page -; LD B,#41 -; CALL SET_PORTS -; ; можно задействовать ещё 4 страницы на порты #E4..#E7 -; ;;;;;;;; -; ENDIF +;[BEGIN] +;//MODULE: DSETUP, Main module of BIOS SETUP & BOOTSTRAP +;//CREATE: ??-??-???? AUTHOR: Denis Parinov +;//UPDATE: 23-04-2001 DNS Remake for Sp2000 mainboard +;--------------------------------------------------------------- +;Rev Date Name Description +;--------------------------------------------------------------- +;R08 04-03-2002 DNS Disabled Open TRDOS +;R07 16-02-2002 DNS Add routine for check CMOS clock registers. +;R06 28-01-2002 DNS Add new items to SETUP Utility for screen position. +;R05 01-10-2001 DNS Found BUG with size of boot messages, messages for secondary +; IDE were removed. (BUG NOT FIXED!) --- ты ошибаешься, друг мой))) +;R04 14-09-2001 DNS Added procedure GET_BOARD_NUMBER +;R03 30-07-2001 DNS Developed a new IDE DETECT routine and fixied any bugs +;R02 25-07-2001 DNS Add Secondary IDE +;R01 23-04-2001 DNS Removed procedure GET_ID and make new which +; will be take Model Name. +;--------------------------------------------------------------- + +;Memory dump ; !TODO переделать +;#0000-#3FFF : STANDART ROM BIOS +;#4000-#7BFF : NOT USED MEMORY +;#7C00-#7C7F : SYSTEM JUMP RESIDENT +;#7C80-#7DFF : NOT USED MEMORY +;#7E00-#7FFF : SECTOR BUFFER AND TEMPORY AREA +;#8000-#8002 : SETUP ENTRY POINT +;#8003-#80F0 : STACK FRAME ;!!!!! посмотреть +;#80F1-#80FD : NOT USED MEMORY +;#80FE-#80FF : INTERRUPT ADDRESS +;#8000-#B3FF : SETUP AND BOOT PROGRAM +;#B400-#BAFF : BOOT MESSAGES ;!!!!! посмотреть +;#B900-#BEFF : SETUP MESSAGES AND ITEMS ;!!!!! посмотреть +;#BF00-#BFFF : STACK FRAME ;!!!!! посмотреть! +;#C000-#D8FF : NOT USED MEMORY +;---DELETED--- #D900-#FFFF : UNPACKED LOGOTYPE + +;System page(#FE) dump +;#F000-#F007 : db "RESTART",0 ;First start identificator +;#F008-#F00F : db hour,min,sec,day,month,century,year,reserved ; PowerOn date +;#F010-#F017 : db hour,min,sec,day,mouth,century,year,reserved ; Reboot date +; +;#FEE0-#FEEF : Any buffer (Video mode set?!) Used in Sprinter DOS and CD driver +;#FF00 +; + +; для варианта с запаковкой части бинарника (может не сработать без напильника за давностью лет) + IFDEF PREBUILD +; ENCODING "DOS" + DEVICE ZXSPECTRUM4096 ; модель с 4 метрами памяти + MMU 2 e, 0 ; страница 0 в банку 2 и проверка на границы. + INCLUDE 'bios/shared/includes.inc' + ORG COMPILE_ADDR.MAIN + OUTPUT 'Build/Bin/temp/MAIN.BIN' + ENDIF + +;SYS_PAGE.RAMD_KEYS EQU #C180 ; ключи RAM-Disks +;RAMD_KEY_NUM EQU 16 +;SYS_PAGE EQU #FE ; страница с системными переменными BIOS +;SYS_PORT_ON EQU #7C +;SYS_PORT_OFF EQU #3C +;STACK EQU #80F0 +;PAGE0 EQU #82 +;PAGE1 EQU #A2 +;PAGE2 EQU #C2 +;SLOT3 EQU #E2 +;Y_PORT EQU #89 +;SYSPAGE EQU #FE +;INT EQU #80 + +;ITMADDR EQU MSG_Items_Buffer +;ITMTABS EQU #BA00 ;!!!!! b900 +;ITMTABS EQU ITMADDR + +;FDD EQU #03 + +;!FIXIT нормально прописать +TEMP EQU #7800 ; !HARDCODE +OS_LOAD.SectorSizeAddr EQU TEMP-2 +IDENTIFY_DEVICE_BUFFER _ATA_IDENTIFY_DEVICE_DATA = TEMP +MEMMAP2 EQU TEMP ; должно быть выровнено по ALIGN 256 +TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM; - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023 + ASSERT (low TEMP = 0) or (low MEMMAP2 = 0), "ERROR Align 256!!!" + +;██████████████████████████████████████████████████████████████████████████████████████████████████████████████; +;SETUP_MAIN: +MAIN_START: + ; POP AF + ; POP HL + LD SP,STACK + PUSH HL + LD (RET_TO_EXP_ADDR),HL + JP START +; DB "(C) 2002 PETERS PLUS LTD " +RET_TO_EXP_ADDR: WORD 0000 ; place for save ret address to exp + +; +;------------------- ;!!!!! посмотреть +; Значения времени и даты в кмос записаны десятичными значениями +; и в регистре A на выходе из функции #F6 (CMOS_RD) BIOS значения десятичные. +GETTIME: + PUSH HL + LD D,CMOS.Register.hours + CALL CMOS_RD + CP #24 ;24 + jp nc,.error + LD (HL),A + INC HL + + LD D,CMOS.Register.minutes + CALL CMOS_RD + CP #5A ; 60 + jp nc,.error + LD (HL),A + INC HL + + LD D,CMOS.Register.seconds + CALL CMOS_RD + CP #5A ; 60 + jp nc,.error + LD (HL),A + INC HL + + LD D,CMOS.Register.date ; число + CALL CMOS_RD + CP #32 + jp nc,.error + LD (HL),A + INC HL + + LD D,CMOS.Register.month + CALL CMOS_RD + CP #13 ;13 + jp nc,.error + LD (HL),A + INC HL + + LD D,CMOS.Register.century + CALL CMOS_RD + CP #1A ;20 + jp c,.error + CP #9A ;100 + jp nc,.error + LD (HL),A + INC HL + + LD D,CMOS.Register.year + CALL CMOS_RD + CP #9A ;100 + jp nc,.error + LD (HL),A + +; DEC HL +; LD C,A +; LD A,19 +; CP (HL) +; RET Z +; LD A,20 +; CP (HL) +; RET Z +; LD A,80 +; CP C +; LD A,20 +; JR NC,.correct_century +; LD A,19 +; .correct_century: +; LD (HL),A +; LD D,#32 ;CENTURY +; LD C,#F7 ; !HARDCODE +; RST_to_BIOS_18 + + POP HL + RET +.error: + LD HL,.default_date + POP DE + LD BC,7 + LDIR + +;---[] +;!FIXIT + CALL CMSERR + ; LD HL,.default_date + ; call writeDateTimeToCmos +;---[] + + ld a,#FF + ld (ERRSUM.ErrDateTime),a + RET + + LUA ALLPASS + sj.insert_define("Current_CENTURY", math.modf(tonumber(os.date("%Y"))/100)) + sj.insert_define("Current_YEAR", tonumber(os.date("%y"))) + sj.insert_define("Current_MONTH", tonumber(os.date("%m"))) + sj.insert_define("Current_DATE", tonumber(os.date("%d"))) + ENDLUA + +.default_date: + BYTE 0,0,0 ; Hours, minutes, seconds + BYTE #Current_DATE + BYTE #Current_MONTH + BYTE #Current_CENTURY + BYTE #Current_YEAR + + UNDEFINE Current_DATE + UNDEFINE Current_MONTH + UNDEFINE Current_CENTURY + UNDEFINE Current_YEAR +;-------------------------------- +; +;R07 ; !FIXIT CMOS сделать согласно доке на кмос +; если батарейка села, то при чеке кмоса выдавать соответствующую ошибку и, возможно, работать как без кмоса. +CMOSINIT: + LD D,CMOS.Register.CTRLregA ; !FIXIT FREQ + CALL CMOS_RD + CP #26 ; !FIXIT + JR NZ,CMSERR + + LD D,CMOS.Register.CTRLregC + CALL CMOS_RD + CP #50 + RET Z +CMSERR: + LD D,CMOS.Register.CTRLregB + LD A,#82 ;TIME FORMAT ; !FIXIT CMOS + CALL CMOS_WR + + LD D,CMOS.Register.CTRLregA + LD A,#26 ; !FIXIT CMOS FREQ + CALL CMOS_WR + + LD D,CMOS.Register.CTRLregC + LD A,#0 ; !FIXIT CMOS + CALL CMOS_WR + + LD HL,GETTIME.default_date + call writeDateTimeToCmos + + LD D,CMOS.Register.CTRLregB + LD A,#02 ;TIME FORMAT ; !FIXIT CMOS + CALL CMOS_WR + + ; LD D,13 + ; LD A,#80 ; !FIXIT CMOS + ; LD C,#F7 ; !HARDCODE + ; RST_to_BIOS + RET + +CLEAR_MEM: IN A,(SLOT3) + PUSH AF + LD A,SYS_PAGE + OUT (SLOT3),A + ; очищаем буфер RAM Table + LD HL,MEMMAP2 + LD DE,MEMMAP2+1 + LD BC,255 + LD (HL),0 + LDIR + ; копируем ZX vROM + LD HL,(SYS_PAGE.Block_ID.vROM) ; нужно значение в L + LD H,high SYS_PAGE.RAM_TABLE + LD D,high MEMMAP2 + ;LD BC,#01FF ;!HARDCODE 1 vROM RAM BLOCK ID + CALL COPY_CHAIN + ; LD IX,SYS_PAGE.Block_ID.vROM + ; LD H,high SYS_PAGE.RAM_TABLE + ; LD D,high MEMMAP2 + ; LD BC,#01FF ;!HARDCODE 1 vROM RAM BLOCK ID + ; CALL .SAVE_RMD + ; [x] 28/09/2024 Отдельные рамдиски для режима спектрума и DSS. + LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000 + CALL SWAP_RAM_DRIVES + ; нужно ли сохранять рамдиски при перезапуске? + LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E + CALL GET_CMOS_VALUE + OR A + PUSH AF + JR Z,.skip_save_rmd + ; + ; save RAM disks on reboot when memory is cleared + LD HL,SYS_PAGE.RAMD_KEYS + LD DE,TPOINTD + LD BC,SYS_PAGE.RAMD_KEYS.NUM + LDIR + ; [x] 4/11/2023 + ; LD HL,SYS_PAGE.Sp_RAMD_KEYS + ; LD BC,SYS_PAGE.Sp_RAMD_KEYS.NUM + ; LDIR + ; + ; копируем RAM диски Sprinter mode + LD IX,SYS_PAGE.RAMD_KEYS ;RAM DISKS + LD H,high SYS_PAGE.RAM_TABLE + LD D,high MEMMAP2 + LD BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF + CALL SAVE_CHAINS + ; [x] 4/11/2023 + ; LD IX,SYS_PAGE.Sp_RAMD_KEYS + ; LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM + ; CALL .SAVE_RMD + ; +.skip_save_rmd: CALL EMM.InitMem + LD HL,MEMMAP2 + LD DE,SYS_PAGE.RAM_TABLE + CALL RESTORE_CHAINS + POP AF + JR Z,.skip_restore_rmd + ; LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E + ; CALL GET_CMOS_VALUE + ; OR A + ; JR Z,.skip_restore + ; + LD HL,TPOINTD + LD DE,SYS_PAGE.RAMD_KEYS + LD BC,SYS_PAGE.RAMD_KEYS.NUM + LDIR + ; +.skip_restore_rmd: + POP AF + OUT (SLOT3),A + ; [x] 04/11/2023 Отдельные рамдиски для режима спектрума и DSS. + ; LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000 + ; JP SWAP_RAM_DRIVES + RET + ; +; SAVE_CHAINS: LD A,(IX) +; INC IX +; OR A +; LD L,A +; CALL NZ,COPY_CHAIN +; DJNZ SAVE_CHAINS +; RET +; + +; +; +; before_intPointer EQU $ +; BLOCK #FF - low $,0 ; выравнивание на #xxFF +; INT_POINTER: WORD 0 + +; ASSERT +low INT_POINTER = #FF, 'ERROR! Not valid interrupt pointer!' +; IFDEF PREBUILD +; ASSERT INT_POINTER-before_intPointer < 16, 'Warning! To much space before INT_POINTER.' +; ELSE +; IF INT_POINTER-before_intPointer > 16 +; DISPLAY 'Warning! To much space before INT_POINTER: ',/D,INT_POINTER-before_intPointer +; ENDIF +; ENDIF + +; INT_HANDLER: +; PUSH AF +; EX AF,AF' +; PUSH AF +; PUSH BC +; PUSH DE +; PUSH HL +; EXX +; PUSH BC +; PUSH DE +; PUSH HL +; PUSH IX +; PUSH IY +; CALL KEYSCAN +; POP IY +; POP IX +; POP HL +; POP DE +; POP BC +; EXX +; POP HL +; POP DE +; POP BC +; POP AF +; EX AF,AF' +; POP AF +; EI +; RETI +; ; + +INT_OFF: DI + LD A,#3F + LD I,A + IM 1 + RET + ; +INT_ON: DI + LD A,+high INT_POINTER + LD I,A + LD HL,INT_HANDLER + LD (INT_POINTER),HL + IM 2 + EI + RET +; + +; +;------------------------[go to spectrum from bios]---------------------; +EXIT_SETUP: CALL INT_OFF + CALL TRD_MOUNT ; !TEST 24/09/2024 перенос в EXIT_SETUP (перед запуском ZX) + CALL SetUp_ZX_HDD + +; IF FREE_ZX_PAGES + LD A,Spec_Page + OUT (SLOT3),A + ; + LD A,(Spec_Page.flag_Z) + CP 'Z' + LD A,(Spec_Page.flag_X) + LD B,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,B + JR NZ,.Set_Page41 + CP 'X' +.Set_Page41: CALL NZ,ZXMODE_SETUP.Set_Page41 + +.set_ZX_params: LD BC,CMOS_CELL.QuickStartSetUp.Mask.ZxRom + CALL GET_CMOS_VALUE + LD L,A + LD BC,CMOS_CELL.QuickStartSetUp.Mask.Hardware + CALL GET_CMOS_VALUE + ; + EX AF,AF + LD A,ROM.EXTENSION + OUT (SYS_PORT.ROM),A + EX AF,AF + OR A + JP Z,SPRINTER_ZX.custom_ROM + DEC A + JP Z,Pentagon_48.custom_ROM + DEC A + JP Z,PENTAGON_128.custom_ROM + DEC A + JP Z,PENTAGON_512.custom_ROM + DEC A + JP Z,SCORPION_256.custom_ROM + DEC A + JP Z,ZX_Spectrum_48.custom_ROM + DEC A + JP Z,ZX_SPECTRUM_128.custom_ROM + ; error + XOR A + OUT (SYS_PORT.ROM),A + LD D,CMOS_CELL.QuickStartSetUp ; обнуляем параметр на всякий случай + CALL CMOS_WR + ; + CALL ScreenPOS.CRLF + LD A,msgStrings.errorZXmode + LD E,COLORS.CGA.INK.RED + CALL POSTMSC +.loop_di: DI + HALT + JR .loop_di + + + +SetUp_ZX_HDD: LD D,CMOS_CELL.TRDOSmount + CALL CMOS_RD + AND %1010'1010 ; маска для 4-х HDD + RET Z + ; find first good partition + ; + ; чистка переменных ZX HDD + IN A,(SLOT3) + EX AF,AF + LD A,SYS_PAGE + OUT (SLOT3),A + ; + XOR A + LD H,A + LD L,A + LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL + LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL + DEC A + LD (SYS_PAGE.CURRENT_HDD),A + LD (SYS_PAGE.CURRENT_DIR_DRIVE),A + LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A + ; + EX AF,AF + OUT (SLOT3),A + EX AF,AF + ; + XOR A +.loop: PUSH AF + CALL FN_HDD_PART + POP BC + RET NC + LD A,B + INC A + CP #10 + JR C,.loop + RET +;-----------------------------------------------------------------------; + +INSTALL: + CALL INT_ON + CALL SET_CGA + XOR A + OUT (BorderColor),A + LD IX,win_descriptor.tab80x32 + CALL WIN_OPEN.SCR1 + + LD DE,0 + LD HL,#2050 + LD B,7 + CALL LP_CLS_WIN + + LD DE,0 + LD HL,#0820 + LD B,0 + CALL LP_CLS_WIN + + CALL SETLAND + + CALL GET_ID + LD DE,#0028 ; !HARDCODE + CALL LP_SET_PLACE + LD HL,memBUFFER.ID + LD A,COLORS.CGA.INK.LCYAN + CALL CPRINTZ + ; LD HL,BUILD + ; LD A,COLORS.CGA.INK.LCYAN + ; CALL CPRINTZ + + LD DE,#0128 ; !HARDCODE + CALL LP_SET_PLACE + LD A,msgStrings.copyRightPeters + LD E,COLORS.CGA.INK.LGREEN + CALL POSTMSC + + LD DE,#0228 ; !HARDCODE + CALL LP_SET_PLACE + LD A,msgStrings.copyRightSPTeam + LD E,COLORS.CGA.INK.GREEN + CALL POSTMSC + + LD DE,#0328 + CALL LP_SET_PLACE + LD A,msgStrings.extBIOSmsg + IF BETA_BUILD > 0 + LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED + ELSE + LD E,COLORS.CGA.INK.LGRAY + ENDIF + CALL POSTMSC + + IN A,(SLOT3) + PUSH AF + LD A,SYS_PAGE + OUT (SLOT3),A + LD HL,RebootDate + CALL GETTIME + POP AF + OUT (SLOT3),A + RET + +RESTART_ID: +.str: DZ "RESTART" +.size EQU $ - RESTART_ID.str + + +Start_again: LD SP,STACK-2 +START: DI + PUSH AF + XOR A + LD (ERRSUM),A + LD (ERRSUM.ErrDateTime),A + ; + LD A,R ; reg R bit7 - признак запуска с отработкой лоадера конфы (из SET_CONFIG_ID) + LD (LOGOTYPE.playSnd),A + ; +; LD C,#97 +; RST_to_BIOS_18 +; XOR A +; LD C,#F2 +; RST_to_BIOS_18 +;------------------------------ ;!!!!! посмотреть +; CALL KINIT +;------------------------------ ;!!!!! посмотреть + +;--------[Clean keyboard buffer]-------- +; clean_kbd_buf: +; IN A,(Z84.SIO.Ch_A.Ctrl) +; BIT 0,A +; jr z,.exit +; IN A,(Z84.SIO.Ch_A.Data) +; jr clean_kbd_buf +; .exit: +;--------------------------------------- + + +;R08 CALL OPENDOS + ;!TEST 20/08/2024 + ;CALL ZXCLS + ; + CALL READING + CALL TEST_CHECKSUM + CALL NZ,SETDEFX + + ;!TODO CMOS Disabled use of CONFIG_DE (#C13A) word + ;LD A,#1C + ;CALL READCMS + ;PUSH AF + ;LD A,CMOS_CELL.HardwareConfiguration + ;CALL READCMS + ;POP DE + ;LD E,A + ; + + LD C,SLOT3 + IN B,(C) + PUSH BC + LD A,SYS_PAGE + OUT (C),A + +; LD (SYS_PAGE.CONFIG_DE),DE + + LD HL,SYS_PAGE.INT_ADRESS ;EXTENDED INTERRUPT + XOR A + LD (HL),A + INC L + LD (HL),A + INC L + LD (HL),A + INC L + LD (HL),A + POP BC + OUT (C),B + + + ;CALL TRD_MOUNT ; !TEST 24/09/2024 перенос в EXIT_SETUP (перед запуском ZX) + CALL FDD_INSTAL + CALL CLEAR_MEM + CALL ZXMODE_SETUP + CALL XY_SCREEN + +;R06 ;[Check Quick Start ROM] + LD BC,CMOS_CELL.BootUpParams.Mask.QuickStartROM ;#010E + CALL GET_CMOS_VALUE + POP BC + RR C + JR NC,IGNORE_QuickStartROM ; результат проверки Space из exp.asm [Check SPACE] + PUSH AF + LD C,SLOT3 + IN B,(C) + PUSH BC + LD A,SYS_PAGE + OUT (C),A + LD HL,SYS_PAGE.RESTART_ID + LD DE,RESTART_ID.str + LD B,RESTART_ID.size + CALL COMPARE_RESTART_ID + CALL NZ,SET_RESTART_ID + POP BC + OUT (C),B + JR Z,YES_QuickStartROM + POP AF + JR IGNORE_QuickStartROM + +SET_RESTART_ID: + PUSH AF + LD HL,RESTART_ID.str + LD DE,SYS_PAGE.RESTART_ID + LD BC,RESTART_ID.size + LDIR + LD HL,PowerOnDate ; !TODO изменить под структуру, когда структура переменных будет готова + CALL GETTIME + POP AF + RET + +YES_QuickStartROM: + POP AF + OR A + JP NZ,EXIT_SETUP +IGNORE_QuickStartROM: + CALL INSTALL + LD DE,#0528 + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,msgStrings.toSetupButton + LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.WHITE + CALL POSTMSC + + LD DE,#0900 + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE +ERRSUM+1: + LD A,#00 + OR A + JR Z,.ErrDateTime + XOR A + LD (.ErrDateTime+1),A ; если контрольная сумма слетела, то сообщение о кривых дате/времени в кмос не выводим + LD A,msgStrings.cmosChecksumErr + LD E,COLORS.CGA.INK.RED + CALL POSTMSC + CALL ScreenPOS.CRLF + CALL ScreenPOS.CRLF + JR CHEKOK + +.ErrDateTime+1: + LD A,0 + OR A + JR Z,CHEKOK + LD A,msgStrings.cmosDateTimeErr + LD E,COLORS.CGA.INK.RED + CALL POSTMSC + CALL ScreenPOS.CRLF + CALL ScreenPOS.CRLF + +CHEKOK: ;CALL ScreenPOS.GET_CUR + CALL LP_GET_PLACE + PUSH DE + CALL LOGOTYPE + + LD DE,#0000 + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,msgStrings.spModel + CALL POSTMSG + CALL PIDNUM + CALL ScreenPOS.CRLF + + LD A,msgStrings.boardID + CALL POSTMSG + CALL PIDBOARD + CALL ScreenPOS.CRLF + + LD A,msgStrings.spCNFver + CALL POSTMSG + CALL CNF_VER_PRINT + CALL ScreenPOS.CRLF + + LD A,msgStrings.spMemory + CALL POSTMSG + CALL EMM.GetMemSize + PUSH BC + CALL PMEMORY + CALL ScreenPOS.CRLF + LD A,msgStrings.memoryAvailable + CALL POSTMSG + POP HL + CALL PMEMORY + CALL ScreenPOS.CRLF + + ;CALL TSTCMOS + CALL CMOS_TEST + + LD A,msgStrings.cmosNone + JR C,CMOS_ABSENT + ; CMOS OK + CALL CMOSINIT + LD A,msgStrings.cmosFound + CALL POSTMSG + LD A,',' + CALL PRINT_CHAR + LD A," " + CALL PRINT_CHAR + LD HL,RebootDate + CALL PRNTIME + CALL ScreenPOS.CRLF + JR INFO_MESSAGE +CMOS_ABSENT: + CALL POSTMSG +INFO_MESSAGE: + ; for recovery boot + ; LD DE,#0428 + ; CALL LP_SET_PLACE + ; LD A,msgStrings.forCtrlBootButton + ; LD E,COLORS.CGA.INK.WHITE + ; CALL POSTMSC + ; + ; For alternative boot + LD DE,#0528 + CALL LP_SET_PLACE + LD A,msgStrings.forAltBootButton + LD E,COLORS.CGA.INK.WHITE + CALL POSTMSC + + + POP DE + CALL LP_SET_PLACE + + CALL TSETUP ;!TODO может пихнуть её на прерывания? + + CALL CONFIGURE_IDE_DRIVES.START + ;CALL CONFIGURE_IDE_DRIVES.Nop_CHANELS + CALL CTRLKEY + LD A,B + ; [x] 05/07/2024 + BIT X_CTRL,A + LD BC,#FFFF ; маркер для PrepareToBOOT, чтоб грузил Recovery + JR NZ,RECOVERY_BOOT + ; + BIT X_ALT,A + JR NZ,ALT_BOOT + ; + CALL TSETUP + ; + LD BC,CMOS_CELL.BootDrives.Mask.SysDisk ;#0710 +RECOVERY_BOOT: + CALL PrepareToBOOT + LD A,msgStrings.bootFail + LD E,COLORS.CGA.INK.LRED + CALL C,POSTMSC + CALL ScreenPOS.CRLF + ; + CALL INT_ON +ALT_BOOT: + LD A,msgStrings.bootAltDrv + LD E,COLORS.CGA.INK.LGREEN + CALL POSTMSC + + LD BC,CMOS_CELL.BootDrives.Mask.AltSysDisk ;#7010 + CALL PrepareToBOOT + LD A,msgStrings.bootFail + LD E,COLORS.CGA.INK.LRED + CALL C,POSTMSC + CALL ScreenPOS.CRLF + + ;NO START DISK - RESTART / SETUP / ZX SPECTRUM mode + LD BC,CMOS_CELL.Options.Mask.RebootMSG ;#021D + CALL GET_CMOS_VALUE + OR A + JP Z,EXIT_SETUP + + CALL ScreenPOS.CRLF + LD A,msgStrings.afterBootFail + LD E,COLORS.CGA.INK.RED + CALL POSTMSC + + ;EI + CALL INT_ON +StartUpKey: CALL WAITKEY + LD HL,#4F00 ; DEL - go to settings + ;AND A + SBC HL,DE + JR Z,ENTER_SETUP + ; + CP #1B ; ESC - go to zx spectrum mode + JP Z,EXIT_SETUP + CP #0D ; ENTER - restart + JP NZ,StartUpKey + XOR A + JP Start_again + +TSETUP: CALL SCANKEY + RET Z + LD HL,#4F00 ; DEL - go to settings + AND A + SBC HL,DE + JR Z,ENTER_SETUP + ; + LD HL,#011B ; ESC + AND A + SBC HL,DE + JR NZ,TSETUP + POP HL ; убираем лишнее + JP EXIT_SETUP +ENTER_SETUP: + XOR A + LD (ITEM_Restore),A + CALL SETTINGS + XOR A + JP Start_again + +COMPARE_RESTART_ID: + LD A,(DE) + CP (HL) + RET NZ + INC HL + INC DE + DJNZ COMPARE_RESTART_ID + RET + +; ????? перенести это в функции БИОС? +; HL - data to write: BYTE Hours, minutes, seconds, day, month, century, year. (2022: 20 - century, 22 - year) +writeDateTimeToCmos: ;!FIXIT + LD A,(HL) + LD D,CMOS.Register.hours + CALL CMOS_WR + + INC HL + LD A,(HL) + LD D,CMOS.Register.minutes + CALL CMOS_WR + + INC HL + LD A,(HL) + LD D,CMOS.Register.seconds + CALL CMOS_WR + + INC HL + LD A,(HL) + LD D,CMOS.Register.date + CALL CMOS_WR + + INC HL + LD A,(HL) + LD D,CMOS.Register.month + CALL CMOS_WR + + INC HL + LD A,(HL) + LD D,CMOS.Register.century + CALL CMOS_WR + + INC HL + LD A,(HL) + LD D,CMOS.Register.year + CALL CMOS_WR + RET + +XY_SCREEN: ;R06 + LD A,CMOS_CELL.ScreenPosition + CALL READCMS + LD B,A + LD A,ACEX.HOLD + JP SET_PORTS + ; PUSH AF + ; IN A,(SLOT3) + ; LD E,A + ; LD A,DCP_PAGE + ; OUT (SLOT3),A + ; LD A,(#C400) ;c400 for first cfg 50176 + ; LD D,A + ; LD A,ACEX.HOLD + ; LD (#C400),A + ; POP AF + ; LD BC,0 + ; OUT (C),A + ; LD A,D + ; LD (#C400),A + ; LD A,E + ; OUT (SLOT3),a + ; RET +; +;R07 +; CMOSINIT: +; LD D,10 ;FREQ +; LD C,#F6 ;READ CMOS +; RST_to_BIOS +; CP #26 +; JR NZ,CMSERR +; LD D,12 +; LD C,#F6 +; RST_to_BIOS +; CP #50 +; RET Z +; CMSERR: +; LD D,10 +; LD A,#26 ;FREQ +; LD C,#F7 +; RST_to_BIOS +; LD D,11 +; LD A,#02 ;TIME FORMAT +; LD C,#F7 +; RST_to_BIOS +; LD D,12 +; LD A,#50 +; LD C,#F7 +; RST_to_BIOS +; LD D,13 +; LD A,#80 +; LD C,#F7 +; RST_to_BIOS +; RET + +;------------------- ;!!!!! посмотреть +; 0 - 1-st FDD +; 1 - 2-nd FDD +; 2 - 1-st IDE +; 3 - 2-nd IDE +; 4 - 3-rd IDE +; 5 - 4-th IDE +; 6 - RAM-DISK +; +; -> BC - ячейка и маска для чтения значения кмос для загрузочного драйва + +; +;[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] +RECOVERYstart: + LD A,msgStrings.bootRecovery + CALL POSTMSG + ; + + ; Выбор рамдиска для рекавери + _mRECOVERYrdChooseTYPE RECOVERYrdChooseTYPE + + ; прибиваем последний рамдиск, если занят +.killRAMdisk: LD A,SYS_PAGE.RAMD_KEYS.NUM-1 + LD (.RDkey),A + CALL EMM.FreeMemRMD + JR NC,.setRAMdisk + JR Z,.setRAMdisk + RET ; непонятная ошибка - выходим +.setRAMdisk: LD A,(.RDkey) + LD B,ROM_DISK.Pages.Size + CALL EMM.GetMemRMD + JR NC,.IMGread ; свободный рамдиск найден + DEC A + JR Z,.FreeMem ; ошибка - недостаточно памяти, вызываем очистку памяти + RET ; непонятная ошибка - выходим +.FreeMem: CALL EMM.FullInit + JR .killRAMdisk +; + +; Вход: A - RAM block ID +.IMGread: + ; Вариант копирования ROM -> RAM disk + _mRECOVERYmountTYPE RECOVERYmountTYPE +; + ;Exit from "ROM Disk to RAM disk" procedure +.RDkey+*: LD A,0 + OR DRIVE_CODES.SPRINTER.RAM + LD B,A ; передаём загрузочное устройство в OS_LOAD + JP OS_LOAD + ; +;[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] +; + +PrepareToBOOT: ;CALL INT_ON + HALT + CALL PORTS_INIT.clean_kbd_buf ;Clearing the keyboard buffer + CALL PORTS_INIT.clean_mouse_buf ;Clearing the mouse buffer + CALL INT_OFF + ; тут не должно быть испорчено значение BC + ; [x] 05/07/2024 + INC BC + LD A,B + OR C + JP Z,RECOVERYstart + DEC BC + ; + CALL GET_CMOS_VALUE + LD B,DRIVE_CODES.SPRINTER.FDD + ; FDD + OR A + JR Z,FDSTART ; FDD A: + INC B + DEC A + JR Z,FDSTART ; FDD B: + ; IDE + LD B,DRIVE_CODES.SPRINTER.HDD + DEC A + JR Z,HDSTART + INC B ;LD B,#81 + DEC A + JR Z,HDSTART + INC B ;LD B,#82 + DEC A + JR Z,HDSTART + INC B ;LD B,#83 + DEC A + JR Z,HDSTART + ; RAM + DEC A + JR Z,RDSTART + ; ROM + DEC A + JP Z,RECOVERYstart + ; Error + SCF + RET + ; +FDSTART: PUSH BC + PUSH BC + LD A,msgStrings.bootFdd + CALL POSTMSG + POP AF + CALL FDD_5x_RESET + POP BC + RET C + JR OS_LOAD + ; +CDSTART: LD A,B ; [ ] 15/02/2025 boot from ATAPI + OR DRIVE_CODES.SPRINTER.ATAPI + LD B,A + PUSH BC + LD A,msgStrings.bootCd + CALL POSTMSG + POP AF + PUSH AF + CALL PRINT_CHANEL + ; + POP BC + PUSH BC + CALL OS_LOAD + POP BC + RET NC + LD HL,2048 ;!HARDCODE sector size + LD IX,#0011 + JR OS_LOAD.CD + ; +RDSTART: LD A,msgStrings.bootRamDrv + CALL POSTMSG + LD B,DRIVE_CODES.SPRINTER.RAM ; 6 - тип драйва RAM-DRV, 0 - номер драйва +.loop: PUSH BC + CALL OS_LOAD + POP BC + INC B + LD A,DRIVE_CODES.SPRINTER.RAM + SYS_PAGE.RAMD_KEYS.NUM-1 ; максимальный номер рамдиска + SUB B + JR NC,.loop + RET + + +HDSTART: IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,B + ; + AND #03 ;R02 %00000011 + LD IY,IDE.INIT_TBL_IDE0 + JR Z,.next + ; + LD IY,IDE.INIT_TBL_IDE1 + CP 1 ;R02 + JR Z,.next + ; + LD IY,IDE.INIT_TBL_IDE2 ;R02 + CP 2 ;R02 + JR Z,.next + ; + LD IY,IDE.INIT_TBL_IDE3 ;R02 + ; +.next: LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) + EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + CP IDE.Device.ATAPI + JP Z,CDSTART + PUSH AF + PUSH BC + LD A,msgStrings.bootHdd + CALL POSTMSG + POP AF + PUSH AF + CALL PRINT_CHANEL + ; + POP BC + POP AF + CP #FF + SCF + RET Z + ; +OS_LOAD: LD HL,512 ;!HARDCODE + LD IX,#0001 +.CD: LD (.SectorSizeAddr),HL + LD HL,#0000 + LD DE,TEMP + LD A,B + LD BC,1*256 + BIOS.DRV_READ + PUSH AF + RST ToBIOS_18 + ; + POP BC + RET C + LD A,B + EX AF,AF' + LD HL,TEMP + LD DE,SYSID + LD B,SYSID.length +.loop: LD A,(DE) + CP (HL) + SCF + RET NZ + INC HL + INC DE + DJNZ .loop + EX AF,AF' + PUSH AF + LD A,msgStrings.bootOk + LD E,COLORS.CGA.INK.LGREEN + CALL POSTMSC + CALL ScreenPOS.CRLF + POP AF ; физический номер диска + POP HL +.MOVE0: DI + IM 1 + LD HL,MOVE1 + LD DE,OS_LOAD.SectorSizeAddr - MOVE1.length ; !HARDCODE + LD BC,MOVE1.length + LDIR + JP OS_LOAD.SectorSizeAddr - MOVE1.length + ; +MOVE1: LD HL,#8000 ; !HARDCODE + LD SP,HL + EX DE,HL + LD HL,TEMP + LD BC,(OS_LOAD.SectorSizeAddr) + LDIR + JP #8000+SYSID.length ;#800C ; !HARDCODE + ; +.length EQU $-MOVE1 + + +SYSID: DZ "Starting..." +.length EQU $-SYSID + + +;FD144A: DB #80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD +; .Size EQU $ - FD144A +; FD720A: DB #00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD +; .Size EQU $ - FD720A +FDD_INIT_TABLE: FDD_1440_TABLE + +FDD_INSTAL: IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD HL,SYS_PAGE.FDD_TABLE + LD BC,SYS_PAGE.FDD_TABLE.Size*256 + #FF ; table_size*256 + fill_byte +.FILLFDD: LD (HL),C + INC HL + DJNZ .FILLFDD + ; + ;EX AF,AF' + ;OUT (SLOT3),A + ;LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311 + ;CALL GET_CMOS_VALUE + ;LD HL,FD720A + ;OR A + ;JR Z,.SETFD0 + LD HL,FDD_INIT_TABLE + ;DEC A + ;JR NZ,.NOFDD0 +;.SETFD0: ;IN A,(SLOT3) + ;EX AF,AF' + ;LD A,SYS_PAGE + ;OUT (SLOT3),A + LD DE,SYS_PAGE.FDD_TABLE + ; B=0 + LD C,SYS_PAGE.FDD_TABLE.Size + LDIR + ;EX AF,AF' + ;OUT (SLOT3),A +;.NOFDD0: LD BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD ;#0C11 + ;CALL GET_CMOS_VALUE + ;LD HL,FD720A + ;OR A + ;JR Z,.SETFD1 + ;LD HL,FD144A + ;DEC A + ;JR NZ,.NOFDD1 +;.SETFD1: IN A,(SLOT3) + ;EX AF,AF' + ;LD A,SYS_PAGE + ;OUT (SLOT3),A + ;LD DE,SYS_PAGE.FDD_1_TABLE + ;LD BC,FD144A.Size + ;LDIR + EX AF,AF' + OUT (SLOT3),A +.NOFDD1: RET + + +PIDNUM: LD HL,memBUFFER.ID + LD BC,#00FF + XOR A + CPIR + LD A,(HL) + OR A + RET Z + CALL PRINTZ + RET + +PIDBOARD: CALL FN_CRIPT.board_id + ; + IF MotherBoardType > 0 + PUSH AF + ENDIF + PUSH DE + PUSH HL + PUSH BC + LD A,B + CALL PRNHEX + LD A,'-' + CALL PRINT_CHAR + POP BC + LD A,C + CALL PRNHEX + LD A,'-' + CALL PRINT_CHAR + POP HL + CALL IPRINT.Z + POP DE + PUSH DE + LD A,D + CALL PRNHEX + POP DE + LD A,E + IF MotherBoardType == 0 + JP PRNHEX + ELSE + CALL PRNHEX + LD A,' ' + CALL PRINT_CHAR + POP AF + ; type 0 - Classic + RET Z + ; type 1 - DX + LD HL,.ver_DX + DEC A + JP Z,PRINTZ + ; type 2 - DP + LD HL,.ver_DP + DEC A + JP Z,PRINTZ + ; type 3 - Max + LD HL,.ver_Max + DEC A + JP Z,PRINTZ + ; type 4 - test + LD HL,.Test + DEC A + JP Z,PRINTZ + RET + ; +.ver_DX: DZ "DX" +.ver_DP: DZ "DP" +.ver_Max: DZ "Max" +.Test DZ "0123456789A" + ENDIF + + +CNF_VER_PRINT: + LD HL,memBUFFER.ID + IFN BIOS.FN_VERSION.STR.BitstreamVer = 0 + LD BC,BIOS.FN_VERSION.STR.BitstreamVer*256 + XOR A +.loop: CPIR + DJNZ .loop + ENDIF + JP PRINTZ + +;PIDNUM LD A,#0D +; LD HL,ID_BUFFER +; LD BC,#0030 +; CPIR +; RET NZ +; INC HL +; LD BC,#0286 +; RST_to_BIOS_18 +; INC HL +; LD BC,#0586 +; RST_to_BIOS_18 +; INC HL +; LD BC,#0286 +; RST_to_BIOS_18 +; XOR A +; RET + +;PIDDATE +; LD A,#0D +; LD HL,ID_BUFFER +; LD BC,#0030 +; CPIR +; RET NZ +; INC HL +; CPIR +; RET NZ +; INC HL +; LD BC,#0A86 +; JP_to_BIOS + +////////////////////////////////////////////////////////////////////// +; INCLUDE 'IM2_INT.asm' +////////////////////////////////////////////////////////////////////// + +PRNHEX: LD D,A + RRCA + RRCA + RRCA + RRCA + AND #0F + ADD A,#30 + CP #3A + JR C,PRNH1 + ADD A,7 +PRNH1: CALL PRINT_CHAR + LD A,D + AND #0F + ADD A,#30 + CP #3A + JP C,PRINT_CHAR + ADD A,7 + JP PRINT_CHAR + +PHEX: LD D,A + RRCA + RRCA + RRCA + RRCA + AND #0F + ADD A,#30 + CALL PRINT_CHAR + LD A,D + AND #0F + ADD A,#30 + JP PRINT_CHAR + +PRNTIME: + IN A,(SLOT3) + PUSH AF + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(HL) + CALL PHEX + LD A,":" + CALL PRINT_CHAR + INC L + LD A,(HL) + CALL PHEX + LD A,":" + CALL PRINT_CHAR + INC L + LD A,(HL) + CALL PHEX + POP AF + OUT (SLOT3),A + RET + + +PMEMORY: + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL ; * 16 + CALL IPRINT + LD A,"K" + JP PRINT_CHAR + + IFUSED ZXCLS +ZXCLS: LD HL,#4000 + LD DE,#4001 + LD BC,#1AFF + LD (HL),L + LDIR + RET + ENDIF + +GET_ID: LD HL,memBUFFER.ID + ;LD C,BIOS.FN_VERSION + ;JP_to_BIOS + JP FN_VERSION + + +;R01GET_ID +;R01 LD A,#10 +;R01 LD BC,#1FFD +;R01 OUT (C),A +;R01 LD C,SLOT3 +;R01 IN B,(C) +;R01 PUSH BC +;R01 LD A,#EE +;R01 OUT (C),A +;R01 LD HL,#FFD0 +;R01 LD DE,ID_BUFFER +;R01 LD BC,#30 +;R01 LDIR +;R01 POP BC +;R01 OUT (C),B +;R01 XOR A +;R01 LD BC,#1FFD +;R01 OUT (C),A +;R01 RET + + +; COPY_CHAIN: LD E,L +; LDI +; DEC L +; LD L,(HL) +; INC L +; RET Z +; DEC L +; JR COPY_CHAIN + +; ; Вход: HL - копия RAM_TABLE откуда копировать +; RESTORE_CHAINS: LD DE,SYS_PAGE.RAM_TABLE +; XOR A +; .loop: CP (HL) +; JR Z,.NoCopy +; LD E,L +; LDI +; DEC L +; .NoCopy: INC L +; JR NZ,.loop +; RET + +;---------------------------------------------------------------[] +;REGISTER #1E +; %0000'0011 - TR DOS A: Default / FDD / HDD / RMD +; %0000'1100 - TR DOS B: Default / FDD / HDD / RMD +; %0011'0000 - TR DOS C: Default / FDD / HDD / RMD +; %1100'0000 - TR DOS D: Default / FDD / HDD / RMD + +TRD_MOUNT: LD BC,CMOS_CELL.TRDOSmount.Mask.A ;#031E + LD A,0 + CALL .TRDOSX + LD BC,CMOS_CELL.TRDOSmount.Mask.B ;#0C1E + LD A,1 + CALL .TRDOSX + LD BC,CMOS_CELL.TRDOSmount.Mask.C ;#301E + LD A,2 + CALL .TRDOSX + LD BC,CMOS_CELL.TRDOSmount.Mask.D ;#C01E + LD A,3 +.TRDOSX: ; PUSH AF + ; CALL GET_CMOS_VALUE + ; POP BC + ; OR A + ; RET Z + ; LD C,BIOS.FDD_TO_DRV + ; DEC A + ; JP Z,ToBIOS_18 + ; LD C,BIOS.HDD_TO_DRV + ; DEC A + ; JP Z,ToBIOS_18 + ; SCF + ; RET + PUSH AF + CALL GET_CMOS_VALUE + POP BC + OR A + RET Z + DEC A + JP Z,FDD_TO_DRV + DEC A + JP Z,HDD_TO_DRV + SCF + RET +;---------------------------------------------------------------[] + + +;!TODO посмотреть + ;открывает порт #FE на чтение в 3-й карте портов + ;OPENDOS: + ; DI + ; IN A,(SLOT3) + ; EX AF,AF' + ; LD A,#40 + ; OUT (SLOT3),A + ; LD HL,#C000 + ; LD DE,#F000 + ; LD BC,#0400 + ; LDIR + ; LD A,#40 + ; LD (#F26E),A + ; LD (#F27E),A + ; LD (#F2EE),A + ; LD (#F2FE),A + ; LD (#F36E),A + ; LD (#F37E),A + ; LD (#F3EE),A + ; LD (#F3FE),A + ; LD HL,#F000 + ; LD DE,#F400 + ; LD BC,#0C00 + ; LDIR + ; EX AF,AF' + ; OUT (SLOT3),A + ; RET +; + + + +setFRAME: +.double: + LD HL,.dataDoubleAll + JR .setElements +.single: + LD HL,.dataSingleAll + JR .setElements +.high: LD HL,.dataSingleDown + JR .setElements +.low: LD HL,.dataSingleUp + JR .setElements +.medium: + LD HL,.dataSingleMedium +; JR .setElements +.setElements: + LD DE,ElementsBuffer + LD BC,ElementsBuffer.Size + LDIR + RET + +.dataDoubleAll: BYTE "╔╗═║╚╝", "╠╣╦╩" ; #C9,#BB,#CD,#BA,#C8,#BC, #CC,#B9,#CB,#CA +.dataSingleAll: BYTE "┌┐─│└┘", "├┤┬┴" ; #DA,#BF,#C4,#B3,#C0,#D9, #C3,#B4,#C2,#C1 +.dataSingleDown: BYTE "╔╗─║╟╢", "╟╢╤┴" ; #C9,#BB,#C4,#BA,#C7,#B6, #C7,#B6,#D1,#C1 +.dataSingleUp: BYTE "╟╢─║╚╝", "╟╢┬╧" ; #C7,#B6,#C4,#BA,#C8,#BC, #C7,#B6,#C2,#CF +.dataSingleMedium: BYTE "╟╢─║╟╢", "╟╢┬┴" ; #C7,#B6,#C4,#BA,#C7,#B6, #C7,#B6,#C2,#C1 +; +ElementsBuffer: +.UpLeft: BYTE "┌" ; UL - UpLeft +.UpRight: BYTE "┐" ; UR - UpRight +.HorizontalLine: BYTE "─" ; ZL - HorizontalLine +.VerticalLine: BYTE "│" ; VL - VerticalLine +.DownLeft: BYTE "└" ; LL - DownLeft +.DownRight: BYTE "┘" ; LR - DownRight +.LeftCenter: BYTE "├" ; LC - LeftCenter +.RightCenter: BYTE "┤" ; RC - RightCenter +.UpCenter: BYTE "┬" ; UC - UpCenter +.DownCenter: BYTE "┴" ; DC - DownCenter +.Size EQU $-ElementsBuffer +; + IF STARTUP_SND + INCLUDE 'startup_sound.asm' + ENDIF + INCLUDE 'VIDEO_IO.asm' + INCLUDE 'AUTOIDE.asm' + INCLUDE 'SETTINGS.asm' + INCLUDE 'KEY.asm' +;....................................... + +KEY: EI + JP WAITKEY + +FindStringAddr: + LD L,A + LD H,0 + LD BC,memBUFFER.Messages + ADD HL,HL + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + RET + +POSTLEN: + CALL FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + SRL A + LD C,A + LD A,40 + SUB C + LD E,A + ;JP ScreenPOS.LOCAT + JP LP_SET_PLACE + +SETLAND: + LD A,#0E ; !HARDCODE CMOS ячейка options + CALL READCMS ;!TODO переделать на GET_CMOS_VALUE + AND #04 ; !HARDCODE CMOS значение языка + LD HL,MSG_RUS + JR NZ,.set + LD HL,MSG_ENG + ; +.set: LD DE,memBUFFER.Messages + LD BC,MSG_TABLE.Size + LDIR + RET + +; +; print boot drive number +PRINT_CHANEL: AND #0F + LD C,A + ; + LD A,msgStrings.parPriIdeMA + JR Z,.print_chanel + ; + LD A,msgStrings.parPriIdeSl + DEC C + JR Z,.print_chanel + ; + LD A,msgStrings.parSecIdeMA + DEC C + JR Z,.print_chanel + ; + LD A,msgStrings.parSecIdeSl +.print_chanel: CALL FindStringAddr + ;CALL LP_GET_PLACE + ;LD A,ScreenPOS.SUBNAME.POS + ;SUB E + ;LD B,A + LD B,0 + LD D,#FF + JP LP_PRINT_LINE6 +; + +POSTMSC: CALL FindStringAddr + LD A,E + JP CPRINTZ +; +////////////////////////////////////////////////////////////////////// + INCLUDE 'IM2_INT.asm' +////////////////////////////////////////////////////////////////////// + +POSTMSG: CALL FindStringAddr + JP PRINTZ + + + +;----------------------------------------------------------------------[] +;Что грузить в vПЗУ при старте. Варианты: +;[x] 0 - Не грузить ПЗУ спектрума, инитить страницу #41 как в 3.04 +;[x] 1 - Грузит ПЗУ спектрума из ROM при старте если нет флага ZX +;[x] 2 - Грузит ПЗУ спектрума из ROM при каждом перезапуске +;[ ] 3 - Не грузить ПЗУ спектрума, инитить страницу #41 так, +; чтоб код в ней подгружал ПЗУ спектрума при обращении +ZXMODE_SETUP: IN A,(SLOT3) + PUSH AF + LD A,Spec_Page + OUT (SLOT3),A + ; + LD BC,CMOS_CELL.Options.Mask.LoadZXroms + CALL GET_CMOS_VALUE + ; + OR A + JR Z,.init_41h + DEC A + JR Z,.CheckAndLoad + DEC A + JR Z,.Load_ZXROMS + ;!TODO + ;DEC A + ;JR Z,.New_init_41h + ; + ; Check ZX ROMS Loaded +.CheckAndLoad: LD A,(Spec_Page.flag_Z) + CP 'Z' + JR NZ,.Load_ZXROMS + LD A,(Spec_Page.flag_X) + CP 'X' + JR NZ,.Load_ZXROMS + ; [x] 31/12/23 подстраховка от недоутечки памяти + LD A,R + AND #80 + JR Z,.No_Need_To_Load_ZXROMS +.Load_ZXROMS: XOR A + LD R,A + ; Load ZX ROM's + LD BC,64*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! MANAGE_ZX_PAGES.FREE_vMEMORY + RST ToBIOS_18 + ; + LD B,3 ; !HARDCODE zx-rom number of pages + CALL EMM.GetMem + JR C,.init_41h ;!FIXIT печатать ошибку ; [ ] free zx pages! + CALL init_zx_roms + ; IFN FREE_ZX_PAGES + ; ; ставим метку если прогрузили ПЗУ спектрума + ; LD HL,'XZ' + ; LD (Spec_Page.flag_Z),HL + ; ENDIF ; +.No_Need_To_Load_ZXROMS: + POP AF + OUT (SLOT3),A + RET + ; +.init_41h: CALL init_zx_roms.init_41h + LD A,SYS_PAGE + OUT (SLOT3),A + CALL .Set_Page41 + ;!FIXIT установить во все vROM страницу #41 ; [ ] free zx pages! + JR .No_Need_To_Load_ZXROMS + ; +.Set_Page41: LD HL,SYS_PAGE.SHARED_BUFFER_256b + 11 + LD DE,SYS_PAGE.SHARED_BUFFER_256b + 11-1 + LD BC,11-1 ; !HARDCODE кол-во страниц vROM + RAM BLOCK ID + LD (HL),#FF + LDDR ; зачищаем + EX DE,HL + ; + ; LD A,SYS_PORT.EXTENSION + ; OUT (SYS_PORT.ROM),A + ; JP MANAGE_ZX_PAGES.INIT_vROM + ; XOR A ;LD A,SYS_PORT.BIOS + ; OUT (SYS_PORT.ROM),A + LD BC,128*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE + JP ToBIOS_18 + ;RET +; +;--------------------[copy zx-roms to zx-pages]-----------------; +; SLOT0 - ROM 8, sys_port - on. +; RAM SLOT0 - page 0 +; RAM SLOT3 - Spec_Page +; для режима zx spectrum +; !HARDCODE номера страниц для эмулятора ПЗУ +init_zx_roms: DI + ; ;;;;;;;; + ; IF FREE_ZX_PAGES + ; ;;;;;;;; + ; НА ВХООДЕ A = SYS_PAGE.Block_ID.vROM + ; добиваем буфер до 11 байтов пустыми страницами + ; в буфер упадут 1 RAM BLOCK ID, 3 страницы для vROM и #FF + LD HL,#FFFF + LD (memBUFFER.Shared + 5),HL ; !HARDCODE zx-rom number of pages + LD (memBUFFER.Shared + 7),HL ; !HARDCODE zx-rom number of pages + LD (memBUFFER.Shared + 9),HL ; !HARDCODE zx-rom number of pages + ; получаем список страниц для vROM + LD HL,memBUFFER.Shared + LD (HL),A + INC HL + LD B,A + CALL EMM.GetMemBlkPages + ; + LD A,SYS_PAGE + OUT (SLOT3),A + ; устанавливаем номера страниц vROM в порты ALTERA + DEC HL + LD A,ROM.EXTENSION + OUT (SYS_PORT.ROM),A + CALL MANAGE_ZX_PAGES.INIT_vROM + ; Копируем образы ZX-ROM из ПЗУ в страницы vROM + LD A,2 ; !HARDCODE + LD BC,+(3*2)*256 + SLOT3 ; !HARDCODE B = (zx-rom number of pages)*2 + LD HL,memBUFFER.Shared + 1 +.loop: OUTI + OUT (ROM.SLOT0),A + EXX + LD HL,0 + LD DE,#C000 + LD BC,#4000 + LDIR + EXX + INC A + DJNZ .loop + ; возвращаем страницы на место + XOR A + OUT (ROM.SLOT0),A + OUT (SYS_PORT.ROM),A + LD A,Spec_Page + OUT (SLOT3),A +.init_41h: ; забить FF-ами + LD HL,#C000 + LD DE,#C001 + LD BC,#3FFF - 2 + LD (HL),#FF + LDIR + ; Заглушка для страницы #41 + LD HL,PROG_NO_ROM + LD DE,#C000 + Spec_Page.no_zx_rom + LD BC,PROG_NO_ROM.size + LDIR + ; + LD HL,RAM_BIOS_PROG + LD DE,#C000 + Spec_Page.to_bios + LD BC,RAM_BIOS_PROG.Length + LDIR + RET +;---------------------------------------------------------------------[] + + +;--------------------------------------- + INCLUDE 'bios/ROM/SETUP/messages.z80' +;--------------------------------------- +; + + STRUCT MAIN_BUFFERS +ID BLOCK #100 +Messages BLOCK MSG_ENG.size +Shared BLOCK 1024 +End BYTE + ENDS + + +memBUFFER MAIN_BUFFERS = $ +STACK EQU #C000 +.Size EQU 128 + + + IF memBUFFER.End-1 > #C000-STACK.Size + DISPLAY 'memBUFFER.Shared overlaps STACK by: ',/A,(memBUFFER.End-1)-(#C000-STACK.size) + ASSERT memBUFFER.End-1 < #C000-STACK.size + ENDIF + + IFDEF PREBUILD + OUTEND + + DISPLAY '-----[Set_Pictures Prebuild start]-----' + MMU 1 e, 0 ; страница 0 в банку 0 и проверка на границы. + ORG ROM_MAP.LOGO + INCLUDE 'bios/logo/Set_Pictures.asm' + DISPLAY '-----[Set_Pictures Prebuild done ]-----' + ELSE +MAIN_END_CODE_ADDRESS EQU $-1 + ; DISPLAY ' -------------------[Main.asm]-------------------' + ; DISPLAY 'End code address: ',/A,$-1 + ; DISPLAY 'Code size: ',/A,$-COMPILE_ADDR.MAIN + ; DISPLAY 'End buffers address: ',/A,memBUFFER.End-1 + ; DISPLAY 'Free memory: ',/A,#C000-(memBUFFER.End-1)-STACK.Size + ; DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer + ENDIF +; + + + +;======================================================================================================================= + +; ;;;;;;;; +; ELSE +; ;;;;;;;; +; IN A,(SLOT3) +; EX AF,AF' +; ; +; LD A,SYS_PORT.EXTENSION +; OUT (SYS_PORT.ROM),A +; INC A ; !HARDCODE LD A,2 +; LD B,3 ; !HARDCODE zx-rom number of pages +; ; +; .loop: EXX +; ; +; OUT (ROM.SLOT0),A +; OR %0100'0000 ; !HARDCODE номера страниц для эмулятора ПЗУ +; OUT (SLOT3),A +; AND %1011'1111 ; !HARDCODE номера страниц для эмулятора ПЗУ +; ; +; LD HL,0 +; LD DE,#C000 +; LD BC,#4000 +; LDIR +; ; +; INC A +; EXX +; DJNZ .loop +; ; +; XOR A +; OUT (ROM.SLOT0),A +; OUT (SYS_PORT.ROM),A +; EX AF,AF' +; OUT (SLOT3),A +; ; +; ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 +; [ ] free zx pages! переделать на вызов FREE_ZX_PAGES.INIT_vROM +; LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128 +; LD B,#42 ;!HARDCODE page +; CALL SET_PORTS +; ; +; LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48 +; LD B,#43 ;!HARDCODE page +; CALL SET_PORTS +; ; +; LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS +; LD B,#44 ;!HARDCODE page +; CALL SET_PORTS +; ; +; ; эти страницы пока не используются +; LD A,ACEX.vROM.EXPANSION ; ROM-ID - BIOS +; ;LD B,#45 ;!HARDCODE page +; LD B,#41 +; CALL SET_PORTS +; ; +; LD A,ACEX.vROM.BIOS_1 ; ROM-ID - BIOS-1 +; ;LD B,#46 ;!HARDCODE page +; LD B,#41 +; CALL SET_PORTS +; ; +; LD A,ACEX.vROM.BIOS_2 ; ROM-ID - BIOS-2 +; ;LD B,#47 ;!HARDCODE page +; LD B,#41 +; CALL SET_PORTS +; ; можно задействовать ещё 4 страницы на порты #E4..#E7 +; ;;;;;;;; +; ENDIF ; ;;;;;;;; \ No newline at end of file diff --git a/src/bios/rom/SETUP/SETTINGS.asm b/bios/rom/SETUP/SETTINGS.asm similarity index 95% rename from src/bios/rom/SETUP/SETTINGS.asm rename to bios/rom/SETUP/SETTINGS.asm index ff06cd2..634cfd8 100644 --- a/src/bios/rom/SETUP/SETTINGS.asm +++ b/bios/rom/SETUP/SETTINGS.asm @@ -1,1092 +1,1092 @@ -;U_SETUP: -SETTINGS: - LD A,CMOS_CELL.ScreenSET - CALL READCMS - AND high CMOS_CELL.ScreenSET.Mask.ColorStyle - LD L,A - CALL CSET - LD DE,0 - LD HL,#2050 - LD A,(NORCLR) - LD B,A - CALL LP_CLS_WIN - - - LD A,msgStrings.setupBiosVer - LD DE,#0100 ; ????? - CALL POSTLEN - LD A,msgStrings.setupBiosVer - CALL POSTMSG - LD A,msgStrings.setupCopyRight - LD DE,#0200 - CALL POSTLEN - LD A,msgStrings.setupCopyRight - CALL POSTMSG - LD A,msgStrings.setupUtilityVer - LD DE,#0500 - CALL POSTLEN - LD A,msgStrings.setupUtilityVer - CALL POSTMSG - - CALL setFRAME.double - - LD DE,#0402 - LD BC,#1A4C - CALL PBORDER - - CALL setFRAME.medium - - LD DE,#0602 - LD BC,#134C - CALL PBORDER ;!FIXIT - - CALL setFRAME.single - - LD DE,#062A - LD H,#13 - CALL TLINEV - - LD DE,#1906 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.setupHelpStr1 - CALL POSTMSG - LD DE,#1A06 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.setupHelpStr2 - CALL POSTMSG - LD DE,#1B06 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.setupHelpStr3 - CALL POSTMSG - LD DE,#1C06 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.setupHelpStr4 - CALL POSTMSG - LD BC,SettingsItemsTabsAddrs.max*256 - - - IF NEW_FEATURE - - ; LD HL,CurrentDateTime - ; CALL GETTIME - - ; LD HL,CurrentDateTime - - ; LD A,(HL) - ; AND #F0 - - ENDIF - - -STT1: LD A,C - LD (ITEM),A - PUSH BC - CALL PTEXT - POP BC - INC C - DJNZ STT1 - - LD a,(ITEM_Restore) - LD (ITEM),A - CALL PCURSOR - -AGAIN: LD HL,AGAIN - PUSH HL - CALL KEY -; CURSOR DOWN - LD HL,#5200 - AND A - SBC HL,DE - JP Z,INCITM -; CURSOR UP - LD HL,#5800 - AND A - SBC HL,DE - JP Z,DECITM -; CURSOR RIGHT - LD HL,#5600 - AND A - SBC HL,DE - JP Z,ADDITM -; CURSOR LEFT - LD HL,#5400 - AND A - SBC HL,DE - JP Z,SUBITM -; + - LD HL,#5300 - AND A - SBC HL,DE - JP Z,INCVAL -; - - LD HL,#5900 - AND A - SBC HL,DE - JP Z,DECVAL -; + or - - LD HL,#A400 - AND A - SBC HL,DE - JP Z,INCVAL - CP "+" - JP Z,INCVAL - CP "-" - JP Z,DECVAL - - IF NEW_FEATURE -; ENTER - LD HL,#280D - AND A - SBC HL,DE - JP Z,pressedEnter - ENDIF - -; F2 - LD HL,#3C00 - AND A - SBC HL,DE - JP Z,SAVEV -; F3 - LD HL,#3D00 - AND A - SBC HL,DE - JP Z,CCHANGE -; F5 - LD HL,#3F00 - AND A - SBC HL,DE - JP Z,OLD_VAL -; F7 - LD HL,#4100 - AND A - SBC HL,DE - JP Z,DEF_VAL -; F10 - LD HL,#4400 - AND A - SBC HL,DE - JP Z,SAVEXIT -; ESC - LD HL,#011B - AND A - SBC HL,DE - RET NZ - POP HL - RET - -OLD_VAL: - CALL READING - JR RestartSetup - RET - -DEF_VAL: - CALL SETDEF -;--------------------------------------- -RestartSetup: -;setXYpos - CALL XY_SCREEN -;setLang - CALL SETLAND -;setVsinc - CALL OnChangeAction.setVsinc -;setInt - Должна быть последней!!! - JP OnChangeAction.setInt -;--------------------------------------- - -SAVEXIT: - CALL WRITING - POP HL - RET - -SAVEV: - CALL WRITING - RET - -SUBITM: - CALL RCURSOR - LD A,(ITEM) - SUB 17 ; !HARDCODE max items in column - JR NC,GODITM2 - XOR A -GODITM2: - LD (ITEM),A - JP PCURSOR - -ADDITM: - CALL RCURSOR - LD A,(ITEM) - ADD A,17 ; !HARDCODE max items in column - CP SettingsItemsTabsAddrs.max - JR C,GODITM - LD A,SettingsItemsTabsAddrs.max - DEC A -GODITM: - LD (ITEM),A - JP PCURSOR - -INCITM: CALL RCURSOR - LD A,(ITEM) - INC A - CP SettingsItemsTabsAddrs.max - JR NZ,1F - XOR A -1: LD (ITEM),A - JP PCURSOR - -DECITM: - CALL RCURSOR - LD A,(ITEM) - OR A - JR NZ,1F - LD A,SettingsItemsTabsAddrs.max -1: DEC A - LD (ITEM),A - JP PCURSOR - -CCHANGE: - LD A,CMOS_CELL.ScreenSET - CALL READCMS - INC A - AND high CMOS_CELL.ScreenSET.Mask.ColorStyle - LD L,A - LD B,A - LD A,CMOS_CELL.ScreenSET - CALL WRITCMS -CSET: LD H,0 - LD DE,STYLES - ADD HL,HL - ADD HL,HL - ADD HL,DE - LD DE,NORCLR - LDI - LDI - LDI - LDI - CALL FSCREEN - ; - ;REFRESH: - LD BC,SettingsItemsTabsAddrs.max*256 - LD A,(ITEM) - PUSH AF -STT2: LD A,C - LD (ITEM),A - PUSH BC - CALL PTEXT - POP BC - INC C - DJNZ STT2 - POP AF - LD (ITEM),A - CALL PCURSOR - RET - -PTEXT: call Get_Item_Address - JP PITEM - -;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] - IF NEW_FEATURE -; New procedure with IY reg -LocateCursor: - call Get_Item_Address - LD E,(IY+MenusItem.Column) - LD D,(IY+MenusItem.Line) - ld a,(IY+MenusItem.Name) - push iy - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - ADD A,E - LD E,A - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - pop iy - ld a,(iy+MenusItem.FirstString) - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - LD B,A - ret - - ELSE -LocateCursor: - call Get_Item_Address - LD E,(HL) - INC HL - LD D,(HL) - INC HL - ld a,(hl) - inc hl - push hl - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - ADD A,E - LD E,A - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - pop hl - INC HL ;SKIP REGISTER - INC HL ;SKIP MASK - INC HL ;SKIP MAX VALUE - ld a,(hl) - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - LD B,A - ret - ENDIF -;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] - -PCURSOR: - call LocateCursor - LD A,(CURCLR) - JP PRINTA - -RCURSOR: - call LocateCursor - LD A,(NORCLR) - JP PRINTA - -FSCREEN: - LD DE,#0000 - EI - HALT -FSC1: - PUSH DE - CALL LP_SET_PLACE - - LD A,(NORCLR) - LD E,A - LD B,#50 - CALL LP_PRINT_ATR - - POP DE - LD A,#20 - INC D - CP D - JR NZ,FSC1 - RET - -ITEM: DB #00 -ITEM_Restore: DB #00 - -NORCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE -HLTCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.YELLOW -CURCLR: DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE -WRMCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE - - -;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] - IF NEW_FEATURE -; New procedure with IY reg -INCVAL: call Get_Item_Address - ld A,(IY+MenusItem.Type) - AND A - RET NZ ; проверка на тип, дальше если paramLine - - LD A,(IY+MenusItem.CMOSreg) - PUSH AF - CALL READCMS - LD C,A - AND (IY+MenusItem.ValueMask) - CP (IY+MenusItem.ValueMax) - LD A,C - JR Z,OVERI - LD B,(IY+MenusItem.ValueMask) - CALL ADDVAL - ADD A,B - JR OVER -OVERI: XOR (IY+MenusItem.ValueMax) -OVER: LD B,A - POP AF - CALL WRITCMS - PUSH IY - PUSH IY - POP HL - CALL PITEM - POP IY - ld l,(IY+MenusItem.Action) - ld h,(IY+MenusItem.Action+1) - jp (hl) - -DECVAL: call Get_Item_Address - ld A,(IY+MenusItem.Type) - AND A - RET NZ ; проверка на тип, дальше если paramLine - - LD A,(IY+MenusItem.CMOSreg) - PUSH AF - CALL READCMS - LD C,A - AND (IY+MenusItem.ValueMask) - LD A,C - JR Z,OVERD - LD B,(IY+MenusItem.ValueMask) - CALL ADDVAL - SUB B - JR OVER -OVERD: OR (IY+MenusItem.ValueMax) - JR OVER - - -pressedEnter: -; !TODO New Feature - ld a,(iy+MenusItem.Type) - and a - ret z - ld l,(iy+MenusItem.Action) - ld h,(iy+MenusItem.Action+1) - jp (HL) - - ELSE -INCVAL: call Get_Item_Address - INC HL - INC HL - INC HL - LD A,(HL) - INC HL - PUSH AF - CALL READCMS - LD C,A - AND (HL) - INC HL - CP (HL) - LD A,C - JR Z,OVERI - DEC HL - LD B,(HL) - CALL ADDVAL - ADD A,B - JR OVER -OVERI: XOR (HL) -OVER: LD B,A - POP AF - CALL WRITCMS - CALL PTEXT - call Get_Item_Address - dec hl - ld a,(hl) - dec hl - ld l,(hl) - ld h,a - jp (hl) - -DECVAL: call Get_Item_Address - INC HL - INC HL - INC HL - LD A,(HL) - INC HL - PUSH AF - CALL READCMS - LD C,A - AND (HL) - LD A,C - INC HL - JR Z,OVERD - DEC HL - LD B,(HL) - CALL ADDVAL - SUB B - JR OVER -OVERD: - OR (HL) - JR OVER - - ENDIF -;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] - -; B - MASK -ADDVAL: LD C,#00 -ADDV1: INC C - RRC B - JR NC,ADDV1 - LD B,#80 -ADDV2: RLC B - DEC C - JR NZ,ADDV2 - RET - -;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] - IF NEW_FEATURE -; IY - item's address -; New procedure with IY reg -PITEM: LD E,(IY+MenusItem.Column) ; x-coordinate - LD D,(IY+MenusItem.Line) ; y-coordinate - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE ; set position of item - LD A,(IY+MenusItem.Name) - CALL POSTMSG - - PUSH IY - LD BC,MenusItem.FirstString - ADD IY,BC - EX (SP),IY - POP HL ; тут адрес строки первого параметра - - LD A,(IY+MenusItem.Type) - AND A - JR NZ,.printParameter ; если это не строка с изменяемым параметром, то просто печать - - LD A,(IY+MenusItem.CMOSreg) ; address of next parametr - CALL READCMS ; read item`s value from cmos - - LD B,(IY+MenusItem.ValueMask) ; item's value mask - AND B -.getParameterNum: - RRCA - RRC B - JR NC,.getParameterNum - RLCA - OR A - jr Z,.printParameter ; первый параметр выводим? - - ld c,a - xor a - ld b,a - add hl,bc ; находим номер параметра -.printParameter: - ld a,(hl) - jp POSTMSG - - ELSE -; вызовы процедур биоса надеются на то, что некоторые регистры не портятся -; HL - item's address -PITEM: LD E,(HL) ; x-coordinate - INC HL - LD D,(HL) ; y-coordinate - INC HL ; address of next parametr - PUSH HL - CALL LP_SET_PLACE ; set position of item - LD A,(HL) - CALL POSTMSG - POP HL - INC HL - LD A,(HL) ; address of next parametr - CALL READCMS ; read item`s value from cmos - INC HL - LD B,(HL) ; item's value mask - INC HL - INC HL - AND B -.getParameterNum: - RRCA - RRC B - JR NC,.getParameterNum - RLCA - OR A - jr Z,.printParameter ; первый параметр выводим? - - ld c,a - xor a - ld b,a - add hl,bc ; находим номер параметра -.printParameter: - ld a,(hl) - jp POSTMSG - ENDIF -;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] - -; Не портит HL -GET_CMOS_VALUE: - PUSH BC - LD A,C - CALL READCMS - POP BC - AND B -.loop: RRCA - RRC B - JR NC,.loop - RLCA - RET - -; [x] чтоб не влезло куда не надо -READCMS: LD D,high CMOSARE - LD E,A - CP CMOS.USED_MAX_ADDRESS+1 - JR NC,.error - LD A,(DE) - RET - ; -.error: SCF - RET - -; [x] чтоб не влезло куда не надо -WRITCMS: - LD D,high CMOSARE - LD E,A - CP CMOS.USED_MAX_ADDRESS+1 - JR NC,.error - LD A,B - LD (DE),A - RET -.error: SCF - RET - -CHEKSUM: - LD BC,DEFVAL.Size*256 + CMOS.USED_MIN_ADDRESS - LD H,#DE ;!HARDCODE -.loop: LD A,C - CALL READCMS - LD L,A - LD A,H - SUB L - RLCA - SUB L - LD H,A - INC C - DJNZ .loop - RET - -TEST_CHECKSUM: - CALL CHEKSUM - LD A,CMOS_CELL.CheckSum - CALL READCMS - CP H - RET - -; TSTCMOS: -; LD C,BIOS.CMOS_TEST -; JP_to_BIOS - - -; RDCMOS: -; LD C,BIOS.CMOS_RD -; JP_to_BIOS - -; WRCMOS: -; LD C,BIOS.CMOS_WR -; JP_to_BIOS - -READING: - LD D,CMOS.USED_MIN_ADDRESS -.loop: PUSH DE - CALL CMOS_RD - POP DE - LD H,high CMOSARE - LD L,D - LD (HL),A - LD A,CMOS.USED_MAX_ADDRESS+1 - INC D - CP D - JR NZ,.loop - RET - -WRITING: CALL CHEKSUM - LD B,H - LD A,CMOS.Cell.CheckSum - CALL WRITCMS - LD D,CMOS.USED_MIN_ADDRESS -.loop: LD H,high CMOSARE - LD L,D - LD A,(HL) - PUSH DE - CALL CMOS_WR - POP DE - LD A,CMOS.USED_MAX_ADDRESS+1 - INC D - CP D - JR NZ,.loop - RET - -SETDEFX: - LD A,#FF - LD (ERRSUM),A - CALL SETDEF - JP WRITING - -SETDEF: ;!TODO может бахнуть LDIRом? посмотреть - LD HL,DEFVAL - LD C,DEFVAL.Size - LD A,CMOS.USED_MIN_ADDRESS -.loop: - LD B,(HL) - INC HL - PUSH AF - CALL WRITCMS - POP AF - INC A - DEC C - JR NZ,.loop - - LD A,CMOS_CELL.HardwareConfiguration ; не используется - LD B,0 - CALL WRITCMS - - LD A,CMOS_CELL.QuickStartSetUp - LD B,CMOS_CELL.QuickStartSetUp.ZxRom.Basic128 - CALL WRITCMS - - CALL CHEKSUM - LD B,H - LD A,CMOS_CELL.CheckSum - CALL WRITCMS - RET - -;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] -; New procedure with IY reg - IF NEW_FEATURE -Get_Item_Address: - LD A,(ITEM) - LD L,A - LD H,0 - LD DE,SettingsItemsTabsAddrs - ADD HL,HL - ADD HL,DE - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - PUSH HL - POP IY - RET - - ELSE -Get_Item_Address: - LD A,(ITEM) - LD L,A - LD H,0 - LD DE,SettingsItemsTabsAddrs - ADD HL,HL - ADD HL,DE - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - INC HL - INC HL - RET - ENDIF -;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] -; - MODULE OnChangeAction -nothing: - ret - - ; !TODO New Feature - ; !TODO замутить что-то типа API для рисования всплывающих окон - IF NEW_FEATURE -SetTime: - xor a - ld hl,#050E - ld de,#0C20 - ld ix,memBUFFER.Shared - CALL WIN_COPY - - LD DE,#0C20 ; !HARDCODE - ld b,5 - DI - -.loop: push bc - push de - CALL LP_SET_PLACE - ; печать атрибутов - LD E,COLORS.CGA.INK.RED - LD B,#0E - CALL LP_PRINT_ATR - - pop de - inc d - pop bc - DJNZ .loop - - CALL setFRAME.single - LD DE,#0C20 ;yx. y=0..1F, x=0..4F координаты левого верхнего угла - LD BC,#050E ;yx. длина и высота линии - CALL PBORDER - - CALL KEY - xor a - ld hl,#050E - ld de,#0C20 - ld ix,memBUFFER.Shared - JP WIN_RESTORE - ENDIF - -setXYpos: - JP XY_SCREEN - -setVsinc: - ld a,CMOS_CELL.ScreenSET - call READCMS - and high CMOS_CELL.ScreenSET.Mask.Sinc - SCF - jr z,.skip ;320 - SLA A -.skip: ld a,128+7 ;312 - jp nc,FN_SYNC - dec a ;320 -.set: jp FN_SYNC - -setLang: - CALL SETLAND - ld a,(ITEM) - ld (ITEM_Restore),a - pop hl ; delete return adress from stack - jp SETTINGS -setInt: ld a,CMOS_CELL.ScreenSET - call READCMS - and high CMOS_CELL.ScreenSET.Mask.Int - jr nz,.skipDefaultInt - ld a,2 ; Pentagon sync - default - jr .set - -.skipDefaultInt: - SRA A - SRA A - SRA A - SRA A ; byte %00xx0000 --> %000000xx -.set: CALL FN_SYNC - - LD IX,win_descriptor.tab80x32 - CALL WIN_OPEN.SCR1 - - ld a,(ITEM) - ld (ITEM_Restore),a - pop hl ; delete return adress from stack - jp SETTINGS - ENDMODULE -; -;-----------------------------------------------------------------------; -;!FIXIT прибраться тут -SETBOOTSOUND EQU high CMOS_CELL.BootUpParams.Mask.BootSound -MEMTEST EQU high CMOS_CELL.BootUpParams.Mask.MemTest -SAVERAM EQU high CMOS_CELL.BootUpParams.Mask.SaveRAMdisks -EXTBIOS EQU high CMOS_CELL.BootUpParams.Mask.UpdBios - -SDELAY2 EQU #10 -SDELAY1 EQU #08 -SDELAY0 EQU #00 -RUS EQU #04 -QSTART EQU #01 - -TMAT_ON EQU #80 -TDL250 EQU #00 -TDL500 EQU #20 -TDL750 EQU #40 -TDL1000 EQU #60 -TRATE6 EQU #00 -TRATE8 EQU #01 -TRATE10 EQU #02 -TRATE12 EQU #03 -TRATE15 EQU #04 -TRATE20 EQU #05 -TRATE24 EQU #06 -TRATE30 EQU #07 -SDFDD1 EQU #00 -SDFDD2 EQU #01 -SDIDE1 EQU #02 -SDIDE2 EQU #03 -SDRAM EQU #04 -ASDFDD1 EQU #00 -ASDFDD2 EQU #10 -ASDRECOVERY EQU #70 -ASDIDE1 EQU #20 -ASDIDE2 EQU #30 -ASDRAM EQU #40 -FD1720 EQU #00 -FD1144 EQU #01 -FD1NONE EQU #02 -FD2720 EQU #00 -FD2144 EQU #04 -FD2NONE EQU #08 -HD1AUTO EQU #00 -HD1STP EQU #01 -HD1NONE EQU #02 -HD2AUTO EQU #00 -HD2STP EQU #04 -HD2NONE EQU #08 -TURBOFF EQU #06 -TURBON EQU #07 -SPRIN EQU #00 -SCORP EQU #08 -PENT EQU #10 -USER EQU #18 -BAS128 EQU #00 -BAS48_ EQU #01 -TRD128 EQU #02 -EXPN EQU #03 -TRD48 EQU #04 -BAS48 EQU #05 -REBOOTM EQU #02 -HDDWP EQU #01 -;-----------------------------------------------------------------------; - -STYLES: -; Color Style 0 - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE -; Color Style 1 - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.LMAGENT - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE -; Color Style 2 - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.LCYAN - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLACK -; Color Style 3 - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.LGREEN -; Color Style 4 - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLUE - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW -; Color Style 5 - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BROWN - DB COLORS.CGA.PAPER.BROWN + COLORS.CGA.INK.LGRAY - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE -; Color Style 6 - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.GREEN - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.GREEN -; Color Style 7 - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.LGRAY - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE -; Color Style 8 - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LCYAN - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE -; Color Style 9 - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLUE - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LRED -; Color Style 10 - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.RED - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE -; Color Style 11 - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLUE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE -; Color Style 12 - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.LCYAN - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE -; Color Style 13 - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LCYAN - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.YELLOW -; Color Style 14 (Mono) - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGRAY - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGRAY -; Color Style 15 - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LMAGENT - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.RED - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.RED - -DEFVAL: DB SAVERAM + SETBOOTSOUND + SDELAY1 ;#0E - OPTIONS - DB TDL250 + TRATE30 ;#0F - KEYBOARD - DB SDIDE1 + ASDFDD1 ;#10 - SYSTEM DISKS - DB FD1720 + FD2720+HD1AUTO+HD2AUTO ;#11 - FDD & Primary HDD's - DB 0 ;#12 - CYLINDERS LOW MASTER - DB 0 ;#13 - CYLINDERS HIGH MASTER - DB 0 ;#14 - HEADS MASTER - DB 0 ;#15 - SECTORS MASTER - DB 0 ;#16 - CYLINDERS LOW SLAVE - DB 0 ;#17 - CYLINDERS HIGH SLAVE - DB 0 ;#18 - HEADS SLAVE - DB 0 ;#19 - SECTORS SLAVE - DB 0 ;#1A - Int conf, Screen sync, COLOR STYLE - DB CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 ;#1B - HARDARE CONF - DB BAS128 ;#1C - RESET MODE - DB REBOOTM + 4 ;#1D - REBOOT + LoadZXroms by ZX flag - DB 0 ;#1E - TRDOS - DB #77 ;#1F - SCREEN POSITION - DB HD1AUTO + HD2AUTO ;#20 - Secondary HDD's -.Size EQU $-DEFVAL - - -;!FIXIT расписать тут ячейки кмоса и это смещение меткой привязать вместо #0E в SETDEF - _mInfoALIGN 256,0 ; выравнивание на адрес #XX00 -CMOSARE: - DS 14 - ; - DB SAVERAM + SETBOOTSOUND + SDELAY1 ;#0E - OPTIONS - DB TDL250+TRATE30 ;#0F - KEYBOARD - DB SDIDE1 + ASDFDD1 ;#10 - SYSTEM DISKS - DB FD1720+FD2720+HD1AUTO+HD2AUTO ;#11 - FDD & HDD - DB 0 ;#12 - CYLINDERS LOW MASTER - DB 0 ;#13 - CYLINDERS HIGH MASTER - DB 0 ;#14 - HEADS MASTER - DB 0 ;#15 - SECTORS MASTER - DB 0 ;#16 - CYLINDERS LOW SLAVE - DB 0 ;#17 - CYLINDERS HIGH SLAVE - DB 0 ;#18 - HEADS SLAVE - DB 0 ;#19 - SECTORS SLAVE - DB 0 ;#1A - Int conf, Screen sync, COLOR STYLE - DB TURBON+SPRIN ;#1B - HARDARE CONF - DB BAS128 ;#1C - RESET MODE - DB REBOOTM ;#1D - REBOOT MSG, HDD W/P - DB %0000'0000 ;#1E - TRDOS - DB %0111'0111 ;#1F - SCREEN POSITION - DB HD1AUTO+HD2AUTO ;#20 - Secondary HDD's - DB %0000'0000 ;#21 - DB %0000'0000 ;#22 - DB %0000'0000 ;#23 - DB %0000'0000 ;#24 - DB %0000'0000 ;#25 - DB %0000'0000 ;#26 - DB %0000'0000 ;#27 - DB %0000'0000 ;#28 - DB %0000'0000 ;#29 - DB %0000'0000 ;#2A - DB %0000'0000 ;#2B - DB %0000'0000 ;#2C - DB %0000'0000 ;#2D - DB %0000'0000 ;#2E - DB %0000'0000 ;#2F - DB %0000'0000 ;#30 - DB %0000'0000 ;#31 - DB #20 ;#32 - CENTURY - DB %0000'0000 ;#33 - DB %0000'0000 ;#34 - DB %0000'0000 ;#35 - DB %0000'0000 ;#36 - DB %0000'0000 ;#37 - DB %0000'0000 ;#38 - DB %0000'0000 ;#39 - DB %0000'0000 ;#3A - DB %0000'0000 ;#3B - DB %0000'0000 ;#3C - DB %0000'0000 ;#3D - DB %0000'0000 ;#3E - DB %0000'0000 ;#3F - CHECKSUM - BLOCK #100 - low $ ; добивка CMOSARE до размера в 256 байтов -;DONT MOVE !!! ADDRESS +;U_SETUP: +SETTINGS: + LD A,CMOS_CELL.ScreenSET + CALL READCMS + AND high CMOS_CELL.ScreenSET.Mask.ColorStyle + LD L,A + CALL CSET + LD DE,0 + LD HL,#2050 + LD A,(NORCLR) + LD B,A + CALL LP_CLS_WIN + + + LD A,msgStrings.setupBiosVer + LD DE,#0100 ; ????? + CALL POSTLEN + LD A,msgStrings.setupBiosVer + CALL POSTMSG + LD A,msgStrings.setupCopyRight + LD DE,#0200 + CALL POSTLEN + LD A,msgStrings.setupCopyRight + CALL POSTMSG + LD A,msgStrings.setupUtilityVer + LD DE,#0500 + CALL POSTLEN + LD A,msgStrings.setupUtilityVer + CALL POSTMSG + + CALL setFRAME.double + + LD DE,#0402 + LD BC,#1A4C + CALL PBORDER + + CALL setFRAME.medium + + LD DE,#0602 + LD BC,#134C + CALL PBORDER ;!FIXIT + + CALL setFRAME.single + + LD DE,#062A + LD H,#13 + CALL TLINEV + + LD DE,#1906 + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,msgStrings.setupHelpStr1 + CALL POSTMSG + LD DE,#1A06 + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,msgStrings.setupHelpStr2 + CALL POSTMSG + LD DE,#1B06 + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,msgStrings.setupHelpStr3 + CALL POSTMSG + LD DE,#1C06 + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,msgStrings.setupHelpStr4 + CALL POSTMSG + LD BC,SettingsItemsTabsAddrs.max*256 + + + IF NEW_FEATURE + + ; LD HL,CurrentDateTime + ; CALL GETTIME + + ; LD HL,CurrentDateTime + + ; LD A,(HL) + ; AND #F0 + + ENDIF + + +STT1: LD A,C + LD (ITEM),A + PUSH BC + CALL PTEXT + POP BC + INC C + DJNZ STT1 + + LD a,(ITEM_Restore) + LD (ITEM),A + CALL PCURSOR + +AGAIN: LD HL,AGAIN + PUSH HL + CALL KEY +; CURSOR DOWN + LD HL,#5200 + AND A + SBC HL,DE + JP Z,INCITM +; CURSOR UP + LD HL,#5800 + AND A + SBC HL,DE + JP Z,DECITM +; CURSOR RIGHT + LD HL,#5600 + AND A + SBC HL,DE + JP Z,ADDITM +; CURSOR LEFT + LD HL,#5400 + AND A + SBC HL,DE + JP Z,SUBITM +; + + LD HL,#5300 + AND A + SBC HL,DE + JP Z,INCVAL +; - + LD HL,#5900 + AND A + SBC HL,DE + JP Z,DECVAL +; + or - + LD HL,#A400 + AND A + SBC HL,DE + JP Z,INCVAL + CP "+" + JP Z,INCVAL + CP "-" + JP Z,DECVAL + + IF NEW_FEATURE +; ENTER + LD HL,#280D + AND A + SBC HL,DE + JP Z,pressedEnter + ENDIF + +; F2 + LD HL,#3C00 + AND A + SBC HL,DE + JP Z,SAVEV +; F3 + LD HL,#3D00 + AND A + SBC HL,DE + JP Z,CCHANGE +; F5 + LD HL,#3F00 + AND A + SBC HL,DE + JP Z,OLD_VAL +; F7 + LD HL,#4100 + AND A + SBC HL,DE + JP Z,DEF_VAL +; F10 + LD HL,#4400 + AND A + SBC HL,DE + JP Z,SAVEXIT +; ESC + LD HL,#011B + AND A + SBC HL,DE + RET NZ + POP HL + RET + +OLD_VAL: + CALL READING + JR RestartSetup + RET + +DEF_VAL: + CALL SETDEF +;--------------------------------------- +RestartSetup: +;setXYpos + CALL XY_SCREEN +;setLang + CALL SETLAND +;setVsinc + CALL OnChangeAction.setVsinc +;setInt - Должна быть последней!!! + JP OnChangeAction.setInt +;--------------------------------------- + +SAVEXIT: + CALL WRITING + POP HL + RET + +SAVEV: + CALL WRITING + RET + +SUBITM: + CALL RCURSOR + LD A,(ITEM) + SUB 17 ; !HARDCODE max items in column + JR NC,GODITM2 + XOR A +GODITM2: + LD (ITEM),A + JP PCURSOR + +ADDITM: + CALL RCURSOR + LD A,(ITEM) + ADD A,17 ; !HARDCODE max items in column + CP SettingsItemsTabsAddrs.max + JR C,GODITM + LD A,SettingsItemsTabsAddrs.max + DEC A +GODITM: + LD (ITEM),A + JP PCURSOR + +INCITM: CALL RCURSOR + LD A,(ITEM) + INC A + CP SettingsItemsTabsAddrs.max + JR NZ,1F + XOR A +1: LD (ITEM),A + JP PCURSOR + +DECITM: + CALL RCURSOR + LD A,(ITEM) + OR A + JR NZ,1F + LD A,SettingsItemsTabsAddrs.max +1: DEC A + LD (ITEM),A + JP PCURSOR + +CCHANGE: + LD A,CMOS_CELL.ScreenSET + CALL READCMS + INC A + AND high CMOS_CELL.ScreenSET.Mask.ColorStyle + LD L,A + LD B,A + LD A,CMOS_CELL.ScreenSET + CALL WRITCMS +CSET: LD H,0 + LD DE,STYLES + ADD HL,HL + ADD HL,HL + ADD HL,DE + LD DE,NORCLR + LDI + LDI + LDI + LDI + CALL FSCREEN + ; + ;REFRESH: + LD BC,SettingsItemsTabsAddrs.max*256 + LD A,(ITEM) + PUSH AF +STT2: LD A,C + LD (ITEM),A + PUSH BC + CALL PTEXT + POP BC + INC C + DJNZ STT2 + POP AF + LD (ITEM),A + CALL PCURSOR + RET + +PTEXT: call Get_Item_Address + JP PITEM + +;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] + IF NEW_FEATURE +; New procedure with IY reg +LocateCursor: + call Get_Item_Address + LD E,(IY+MenusItem.Column) + LD D,(IY+MenusItem.Line) + ld a,(IY+MenusItem.Name) + push iy + call FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + ADD A,E + LD E,A + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + pop iy + ld a,(iy+MenusItem.FirstString) + call FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + LD B,A + ret + + ELSE +LocateCursor: + call Get_Item_Address + LD E,(HL) + INC HL + LD D,(HL) + INC HL + ld a,(hl) + inc hl + push hl + call FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + ADD A,E + LD E,A + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + pop hl + INC HL ;SKIP REGISTER + INC HL ;SKIP MASK + INC HL ;SKIP MAX VALUE + ld a,(hl) + call FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + LD B,A + ret + ENDIF +;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] + +PCURSOR: + call LocateCursor + LD A,(CURCLR) + JP PRINTA + +RCURSOR: + call LocateCursor + LD A,(NORCLR) + JP PRINTA + +FSCREEN: + LD DE,#0000 + EI + HALT +FSC1: + PUSH DE + CALL LP_SET_PLACE + + LD A,(NORCLR) + LD E,A + LD B,#50 + CALL LP_PRINT_ATR + + POP DE + LD A,#20 + INC D + CP D + JR NZ,FSC1 + RET + +ITEM: DB #00 +ITEM_Restore: DB #00 + +NORCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE +HLTCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.YELLOW +CURCLR: DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE +WRMCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE + + +;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] + IF NEW_FEATURE +; New procedure with IY reg +INCVAL: call Get_Item_Address + ld A,(IY+MenusItem.Type) + AND A + RET NZ ; проверка на тип, дальше если paramLine + + LD A,(IY+MenusItem.CMOSreg) + PUSH AF + CALL READCMS + LD C,A + AND (IY+MenusItem.ValueMask) + CP (IY+MenusItem.ValueMax) + LD A,C + JR Z,OVERI + LD B,(IY+MenusItem.ValueMask) + CALL ADDVAL + ADD A,B + JR OVER +OVERI: XOR (IY+MenusItem.ValueMax) +OVER: LD B,A + POP AF + CALL WRITCMS + PUSH IY + PUSH IY + POP HL + CALL PITEM + POP IY + ld l,(IY+MenusItem.Action) + ld h,(IY+MenusItem.Action+1) + jp (hl) + +DECVAL: call Get_Item_Address + ld A,(IY+MenusItem.Type) + AND A + RET NZ ; проверка на тип, дальше если paramLine + + LD A,(IY+MenusItem.CMOSreg) + PUSH AF + CALL READCMS + LD C,A + AND (IY+MenusItem.ValueMask) + LD A,C + JR Z,OVERD + LD B,(IY+MenusItem.ValueMask) + CALL ADDVAL + SUB B + JR OVER +OVERD: OR (IY+MenusItem.ValueMax) + JR OVER + + +pressedEnter: +; !TODO New Feature + ld a,(iy+MenusItem.Type) + and a + ret z + ld l,(iy+MenusItem.Action) + ld h,(iy+MenusItem.Action+1) + jp (HL) + + ELSE +INCVAL: call Get_Item_Address + INC HL + INC HL + INC HL + LD A,(HL) + INC HL + PUSH AF + CALL READCMS + LD C,A + AND (HL) + INC HL + CP (HL) + LD A,C + JR Z,OVERI + DEC HL + LD B,(HL) + CALL ADDVAL + ADD A,B + JR OVER +OVERI: XOR (HL) +OVER: LD B,A + POP AF + CALL WRITCMS + CALL PTEXT + call Get_Item_Address + dec hl + ld a,(hl) + dec hl + ld l,(hl) + ld h,a + jp (hl) + +DECVAL: call Get_Item_Address + INC HL + INC HL + INC HL + LD A,(HL) + INC HL + PUSH AF + CALL READCMS + LD C,A + AND (HL) + LD A,C + INC HL + JR Z,OVERD + DEC HL + LD B,(HL) + CALL ADDVAL + SUB B + JR OVER +OVERD: + OR (HL) + JR OVER + + ENDIF +;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] + +; B - MASK +ADDVAL: LD C,#00 +ADDV1: INC C + RRC B + JR NC,ADDV1 + LD B,#80 +ADDV2: RLC B + DEC C + JR NZ,ADDV2 + RET + +;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] + IF NEW_FEATURE +; IY - item's address +; New procedure with IY reg +PITEM: LD E,(IY+MenusItem.Column) ; x-coordinate + LD D,(IY+MenusItem.Line) ; y-coordinate + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE ; set position of item + LD A,(IY+MenusItem.Name) + CALL POSTMSG + + PUSH IY + LD BC,MenusItem.FirstString + ADD IY,BC + EX (SP),IY + POP HL ; тут адрес строки первого параметра + + LD A,(IY+MenusItem.Type) + AND A + JR NZ,.printParameter ; если это не строка с изменяемым параметром, то просто печать + + LD A,(IY+MenusItem.CMOSreg) ; address of next parametr + CALL READCMS ; read item`s value from cmos + + LD B,(IY+MenusItem.ValueMask) ; item's value mask + AND B +.getParameterNum: + RRCA + RRC B + JR NC,.getParameterNum + RLCA + OR A + jr Z,.printParameter ; первый параметр выводим? + + ld c,a + xor a + ld b,a + add hl,bc ; находим номер параметра +.printParameter: + ld a,(hl) + jp POSTMSG + + ELSE +; вызовы процедур биоса надеются на то, что некоторые регистры не портятся +; HL - item's address +PITEM: LD E,(HL) ; x-coordinate + INC HL + LD D,(HL) ; y-coordinate + INC HL ; address of next parametr + PUSH HL + CALL LP_SET_PLACE ; set position of item + LD A,(HL) + CALL POSTMSG + POP HL + INC HL + LD A,(HL) ; address of next parametr + CALL READCMS ; read item`s value from cmos + INC HL + LD B,(HL) ; item's value mask + INC HL + INC HL + AND B +.getParameterNum: + RRCA + RRC B + JR NC,.getParameterNum + RLCA + OR A + jr Z,.printParameter ; первый параметр выводим? + + ld c,a + xor a + ld b,a + add hl,bc ; находим номер параметра +.printParameter: + ld a,(hl) + jp POSTMSG + ENDIF +;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] + +; Не портит HL +GET_CMOS_VALUE: + PUSH BC + LD A,C + CALL READCMS + POP BC + AND B +.loop: RRCA + RRC B + JR NC,.loop + RLCA + RET + +; [x] чтоб не влезло куда не надо +READCMS: LD D,high CMOSARE + LD E,A + CP CMOS.USED_MAX_ADDRESS+1 + JR NC,.error + LD A,(DE) + RET + ; +.error: SCF + RET + +; [x] чтоб не влезло куда не надо +WRITCMS: + LD D,high CMOSARE + LD E,A + CP CMOS.USED_MAX_ADDRESS+1 + JR NC,.error + LD A,B + LD (DE),A + RET +.error: SCF + RET + +CHEKSUM: + LD BC,DEFVAL.Size*256 + CMOS.USED_MIN_ADDRESS + LD H,#DE ;!HARDCODE +.loop: LD A,C + CALL READCMS + LD L,A + LD A,H + SUB L + RLCA + SUB L + LD H,A + INC C + DJNZ .loop + RET + +TEST_CHECKSUM: + CALL CHEKSUM + LD A,CMOS_CELL.CheckSum + CALL READCMS + CP H + RET + +; TSTCMOS: +; LD C,BIOS.CMOS_TEST +; JP_to_BIOS + + +; RDCMOS: +; LD C,BIOS.CMOS_RD +; JP_to_BIOS + +; WRCMOS: +; LD C,BIOS.CMOS_WR +; JP_to_BIOS + +READING: + LD D,CMOS.USED_MIN_ADDRESS +.loop: PUSH DE + CALL CMOS_RD + POP DE + LD H,high CMOSARE + LD L,D + LD (HL),A + LD A,CMOS.USED_MAX_ADDRESS+1 + INC D + CP D + JR NZ,.loop + RET + +WRITING: CALL CHEKSUM + LD B,H + LD A,CMOS.Cell.CheckSum + CALL WRITCMS + LD D,CMOS.USED_MIN_ADDRESS +.loop: LD H,high CMOSARE + LD L,D + LD A,(HL) + PUSH DE + CALL CMOS_WR + POP DE + LD A,CMOS.USED_MAX_ADDRESS+1 + INC D + CP D + JR NZ,.loop + RET + +SETDEFX: + LD A,#FF + LD (ERRSUM),A + CALL SETDEF + JP WRITING + +SETDEF: ;!TODO может бахнуть LDIRом? посмотреть + LD HL,DEFVAL + LD C,DEFVAL.Size + LD A,CMOS.USED_MIN_ADDRESS +.loop: + LD B,(HL) + INC HL + PUSH AF + CALL WRITCMS + POP AF + INC A + DEC C + JR NZ,.loop + + LD A,CMOS_CELL.HardwareConfiguration ; не используется + LD B,0 + CALL WRITCMS + + LD A,CMOS_CELL.QuickStartSetUp + LD B,CMOS_CELL.QuickStartSetUp.ZxRom.Basic128 + CALL WRITCMS + + CALL CHEKSUM + LD B,H + LD A,CMOS_CELL.CheckSum + CALL WRITCMS + RET + +;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] +; New procedure with IY reg + IF NEW_FEATURE +Get_Item_Address: + LD A,(ITEM) + LD L,A + LD H,0 + LD DE,SettingsItemsTabsAddrs + ADD HL,HL + ADD HL,DE + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + PUSH HL + POP IY + RET + + ELSE +Get_Item_Address: + LD A,(ITEM) + LD L,A + LD H,0 + LD DE,SettingsItemsTabsAddrs + ADD HL,HL + ADD HL,DE + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + INC HL + INC HL + RET + ENDIF +;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] +; + MODULE OnChangeAction +nothing: + ret + + ; !TODO New Feature + ; !TODO замутить что-то типа API для рисования всплывающих окон + IF NEW_FEATURE +SetTime: + xor a + ld hl,#050E + ld de,#0C20 + ld ix,memBUFFER.Shared + CALL WIN_COPY + + LD DE,#0C20 ; !HARDCODE + ld b,5 + DI + +.loop: push bc + push de + CALL LP_SET_PLACE + ; печать атрибутов + LD E,COLORS.CGA.INK.RED + LD B,#0E + CALL LP_PRINT_ATR + + pop de + inc d + pop bc + DJNZ .loop + + CALL setFRAME.single + LD DE,#0C20 ;yx. y=0..1F, x=0..4F координаты левого верхнего угла + LD BC,#050E ;yx. длина и высота линии + CALL PBORDER + + CALL KEY + xor a + ld hl,#050E + ld de,#0C20 + ld ix,memBUFFER.Shared + JP WIN_RESTORE + ENDIF + +setXYpos: + JP XY_SCREEN + +setVsinc: + ld a,CMOS_CELL.ScreenSET + call READCMS + and high CMOS_CELL.ScreenSET.Mask.Sinc + SCF + jr z,.skip ;320 + SLA A +.skip: ld a,128+7 ;312 + jp nc,FN_SYNC + dec a ;320 +.set: jp FN_SYNC + +setLang: + CALL SETLAND + ld a,(ITEM) + ld (ITEM_Restore),a + pop hl ; delete return adress from stack + jp SETTINGS +setInt: ld a,CMOS_CELL.ScreenSET + call READCMS + and high CMOS_CELL.ScreenSET.Mask.Int + jr nz,.skipDefaultInt + ld a,2 ; Pentagon sync - default + jr .set + +.skipDefaultInt: + SRA A + SRA A + SRA A + SRA A ; byte %00xx0000 --> %000000xx +.set: CALL FN_SYNC + + LD IX,win_descriptor.tab80x32 + CALL WIN_OPEN.SCR1 + + ld a,(ITEM) + ld (ITEM_Restore),a + pop hl ; delete return adress from stack + jp SETTINGS + ENDMODULE +; +;-----------------------------------------------------------------------; +;!FIXIT прибраться тут +SETBOOTSOUND EQU high CMOS_CELL.BootUpParams.Mask.BootSound +MEMTEST EQU high CMOS_CELL.BootUpParams.Mask.MemTest +SAVERAM EQU high CMOS_CELL.BootUpParams.Mask.SaveRAMdisks +EXTBIOS EQU high CMOS_CELL.BootUpParams.Mask.UpdBios + +SDELAY2 EQU #10 +SDELAY1 EQU #08 +SDELAY0 EQU #00 +RUS EQU #04 +QSTART EQU #01 + +TMAT_ON EQU #80 +TDL250 EQU #00 +TDL500 EQU #20 +TDL750 EQU #40 +TDL1000 EQU #60 +TRATE6 EQU #00 +TRATE8 EQU #01 +TRATE10 EQU #02 +TRATE12 EQU #03 +TRATE15 EQU #04 +TRATE20 EQU #05 +TRATE24 EQU #06 +TRATE30 EQU #07 +SDFDD1 EQU #00 +SDFDD2 EQU #01 +SDIDE1 EQU #02 +SDIDE2 EQU #03 +SDRAM EQU #04 +ASDFDD1 EQU #00 +ASDFDD2 EQU #10 +ASDRECOVERY EQU #70 +ASDIDE1 EQU #20 +ASDIDE2 EQU #30 +ASDRAM EQU #40 +FD1720 EQU #00 +FD1144 EQU #01 +FD1NONE EQU #02 +FD2720 EQU #00 +FD2144 EQU #04 +FD2NONE EQU #08 +HD1AUTO EQU #00 +HD1STP EQU #01 +HD1NONE EQU #02 +HD2AUTO EQU #00 +HD2STP EQU #04 +HD2NONE EQU #08 +TURBOFF EQU #06 +TURBON EQU #07 +SPRIN EQU #00 +SCORP EQU #08 +PENT EQU #10 +USER EQU #18 +BAS128 EQU #00 +BAS48_ EQU #01 +TRD128 EQU #02 +EXPN EQU #03 +TRD48 EQU #04 +BAS48 EQU #05 +REBOOTM EQU #02 +HDDWP EQU #01 +;-----------------------------------------------------------------------; + +STYLES: +; Color Style 0 + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE +; Color Style 1 + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.LMAGENT + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE +; Color Style 2 + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.LCYAN + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLACK +; Color Style 3 + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.LGREEN +; Color Style 4 + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLUE + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW +; Color Style 5 + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BROWN + DB COLORS.CGA.PAPER.BROWN + COLORS.CGA.INK.LGRAY + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE +; Color Style 6 + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.GREEN + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.GREEN +; Color Style 7 + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.LGRAY + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE +; Color Style 8 + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LCYAN + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE +; Color Style 9 + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLUE + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LRED +; Color Style 10 + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.RED + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE +; Color Style 11 + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLUE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE +; Color Style 12 + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.LCYAN + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE +; Color Style 13 + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LCYAN + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.YELLOW +; Color Style 14 (Mono) + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGRAY + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGRAY +; Color Style 15 + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LMAGENT + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.RED + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.RED + +DEFVAL: DB SAVERAM + SETBOOTSOUND + SDELAY1 ;#0E - OPTIONS + DB TDL250 + TRATE30 ;#0F - KEYBOARD + DB SDIDE1 + ASDFDD1 ;#10 - SYSTEM DISKS + DB FD1720 + FD2720+HD1AUTO+HD2AUTO ;#11 - FDD & Primary HDD's + DB 0 ;#12 - CYLINDERS LOW MASTER + DB 0 ;#13 - CYLINDERS HIGH MASTER + DB 0 ;#14 - HEADS MASTER + DB 0 ;#15 - SECTORS MASTER + DB 0 ;#16 - CYLINDERS LOW SLAVE + DB 0 ;#17 - CYLINDERS HIGH SLAVE + DB 0 ;#18 - HEADS SLAVE + DB 0 ;#19 - SECTORS SLAVE + DB 0 ;#1A - Int conf, Screen sync, COLOR STYLE + DB CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 ;#1B - HARDARE CONF + DB BAS128 ;#1C - RESET MODE + DB REBOOTM + 4 ;#1D - REBOOT + LoadZXroms by ZX flag + DB 0 ;#1E - TRDOS + DB #77 ;#1F - SCREEN POSITION + DB HD1AUTO + HD2AUTO ;#20 - Secondary HDD's +.Size EQU $-DEFVAL + + +;!FIXIT расписать тут ячейки кмоса и это смещение меткой привязать вместо #0E в SETDEF + _mInfoALIGN 256,0 ; выравнивание на адрес #XX00 +CMOSARE: + DS 14 + ; + DB SAVERAM + SETBOOTSOUND + SDELAY1 ;#0E - OPTIONS + DB TDL250+TRATE30 ;#0F - KEYBOARD + DB SDIDE1 + ASDFDD1 ;#10 - SYSTEM DISKS + DB FD1720+FD2720+HD1AUTO+HD2AUTO ;#11 - FDD & HDD + DB 0 ;#12 - CYLINDERS LOW MASTER + DB 0 ;#13 - CYLINDERS HIGH MASTER + DB 0 ;#14 - HEADS MASTER + DB 0 ;#15 - SECTORS MASTER + DB 0 ;#16 - CYLINDERS LOW SLAVE + DB 0 ;#17 - CYLINDERS HIGH SLAVE + DB 0 ;#18 - HEADS SLAVE + DB 0 ;#19 - SECTORS SLAVE + DB 0 ;#1A - Int conf, Screen sync, COLOR STYLE + DB TURBON+SPRIN ;#1B - HARDARE CONF + DB BAS128 ;#1C - RESET MODE + DB REBOOTM ;#1D - REBOOT MSG, HDD W/P + DB %0000'0000 ;#1E - TRDOS + DB %0111'0111 ;#1F - SCREEN POSITION + DB HD1AUTO+HD2AUTO ;#20 - Secondary HDD's + DB %0000'0000 ;#21 + DB %0000'0000 ;#22 + DB %0000'0000 ;#23 + DB %0000'0000 ;#24 + DB %0000'0000 ;#25 + DB %0000'0000 ;#26 + DB %0000'0000 ;#27 + DB %0000'0000 ;#28 + DB %0000'0000 ;#29 + DB %0000'0000 ;#2A + DB %0000'0000 ;#2B + DB %0000'0000 ;#2C + DB %0000'0000 ;#2D + DB %0000'0000 ;#2E + DB %0000'0000 ;#2F + DB %0000'0000 ;#30 + DB %0000'0000 ;#31 + DB #20 ;#32 - CENTURY + DB %0000'0000 ;#33 + DB %0000'0000 ;#34 + DB %0000'0000 ;#35 + DB %0000'0000 ;#36 + DB %0000'0000 ;#37 + DB %0000'0000 ;#38 + DB %0000'0000 ;#39 + DB %0000'0000 ;#3A + DB %0000'0000 ;#3B + DB %0000'0000 ;#3C + DB %0000'0000 ;#3D + DB %0000'0000 ;#3E + DB %0000'0000 ;#3F - CHECKSUM + BLOCK #100 - low $ ; добивка CMOSARE до размера в 256 байтов +;DONT MOVE !!! ADDRESS ; \ No newline at end of file diff --git a/src/bios/rom/SETUP/VIDEO_IO.asm b/bios/rom/SETUP/VIDEO_IO.asm similarity index 94% rename from src/bios/rom/SETUP/VIDEO_IO.asm rename to bios/rom/SETUP/VIDEO_IO.asm index aeddc70..313f281 100644 --- a/src/bios/rom/SETUP/VIDEO_IO.asm +++ b/bios/rom/SETUP/VIDEO_IO.asm @@ -1,656 +1,656 @@ - -def_pal_mask EQU #FF -PIC_SET_PAL_FF EQU def_pal_mask*256+BIOS.PIC_SET_PAL - -;; -ScreenPOS: -.SUBNAME: - CALL LP_GET_PLACE - LD E,.SUBNAME.POS ;!HARDCODE autodetected hdd/cdrom info - JP LP_SET_PLACE -.SUBNAME.POS EQU 37 - ; -.CRLF: CALL LP_GET_PLACE - INC D - LD E,#00 - JP LP_SET_PLACE -;; - - - - IF BIG_ENDIAN_STR_PRINT = 2 -PRINT_STR_BIG_ENDIAN: - LD A,(HL) - CP ' ' - JR NZ,.PRINTDW - INC HL - LD A,(HL) - DEC HL - CP ' ' - JR NZ,.PRINTDW - INC HL - INC HL -.no_space: DJNZ DWPRINT - RET - ; -.PRINTDW: PUSH BC - LD E,(HL) - INC HL - LD A,(HL) - INC HL - CALL PRINT_CHAR - LD A,E - CALL PRINT_CHAR - POP BC - LD A,' ' - CP E - JR Z,.no_space - DJNZ .PRINTDW - RET - - ELSEIF BIG_ENDIAN_STR_PRINT = 0 -PRINT_STR_BIG_ENDIAN: - PUSH HL - PUSH BC - LD D,H - LD E,L - INC HL - ; -.loop_ch: LD A,(DE) - LDI - LD (DE),A - INC HL - INC DE - DJNZ .loop_ch - ; - POP BC - POP HL - LD A,B - ADD A,B - LD B,A - ; -.print_loop: CALL .no_space - RET Z - LD D,H - LD E,L - PUSH DE - PUSH BC - LD D,' ' - CALL LP_PRINT_LINE6 - POP BC - POP DE - PUSH HL - AND A - SBC HL,DE - LD A,B - SUB L - LD B,A - JR Z,.exit - LD A,' ' - INC B - PUSH BC - CALL PRINT_CHAR - POP BC - POP HL - DJNZ .print_loop - RET - ; -.no_space: LD A,(HL) - CP ' ' - RET NZ - INC HL - DJNZ .no_space - RET - ; -.exit: POP HL - RET - - ELSEIF BIG_ENDIAN_STR_PRINT = 1 -PRINT_STR_BIG_ENDIAN: - PUSH HL - PUSH BC - LD D,H - LD E,L - INC HL - ; -.loop_ch: LD A,(DE) - LDI - LD (DE),A - INC HL - INC DE - DJNZ .loop_ch - ; - POP BC - POP HL - LD A,B - ADD A,B - LD B,A - JP LP_PRINT_LINE2 - ENDIF - - - -PRINTA: LD E,A - JP LP_PRINT_ATR -; -PRINT_CHAR: LD B,1 - JP LP_PRINT_SYM -; - -;TPRINTZ: CALL LP_SET_PLACE -PRINTZ: LD B,0 - LD D,B - JP LP_PRINT_LINE6 -; - -; HPRINTZ: LD B,0 -; LD D,B -; LD E,COLORS.CGA.INK.WHITE -; JP LP_PRINT_LINE5 - -CPRINTZ: LD B,0 - LD D,B - LD E,A - JP LP_PRINT_LINE5 -; - -IPRINT: LD D,0 -.I: LD BC,10000 - CALL PRINTDG - LD BC,1000 - CALL PRINTDG - LD BC,100 - CALL PRINTDG - LD BC,10 - CALL PRINTDG - LD A,L - ADD A,#30 - JP PRINT_CHAR - ;HL - NUMBER -.Z: LD D,1 - JR .I - -PRINTDG: - LD A,#2F -PDG1: INC A - SBC HL,BC - JR NC,PDG1 - ADD HL,BC - BIT 0,D - JR NZ,PDG2 - CP #30 - RET Z - SET 0,D -PDG2: PUSH BC - CALL PRINT_CHAR - POP BC - RET - -; D - Y -; E - X -; H - CY -TLINEV: - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,(ElementsBuffer.UpCenter) - CALL PRSYM - DEC H - DEC H - -.loop: INC D - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,(ElementsBuffer.VerticalLine) - CALL PRSYM - DEC H - JR NZ,.loop - - INC D - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,(ElementsBuffer.DownCenter) - JP PRSYM - -; D - Y -; E - X -; L - CX -TLINEH: - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,(ElementsBuffer.LeftCenter) - CALL PRSYM - DEC L - DEC L - LD A,(ElementsBuffer.HorizontalLine) - LD B,L - - ;CALL PRSYMB - CALL LP_PRINT_SYM - - - LD A,(ElementsBuffer.RightCenter) - JP PRSYM - -; D - Y -; E - X -; B - CY -; C - CX -PBORDER: PUSH BC - LD A,C - DEC A - LD (.BSHI),A - DEC A - LD (.BHOR),A - LD (.BHOR2),A - CALL LP_SET_PLACE - LD A,(ElementsBuffer.UpLeft) - LD H,E - CALL PRSYM - LD A,(ElementsBuffer.HorizontalLine) -.BHOR+1: LD B,1 - CALL LP_PRINT_SYM - - LD A,(ElementsBuffer.UpRight) - CALL PRSYM - POP BC - DEC B - DEC B - INC D - LD E,H - -.loop: PUSH BC - CALL LP_SET_PLACE - LD A,(ElementsBuffer.VerticalLine) - CALL PRSYM - LD A,H -.BSHI+1: ADD A,#00 - LD E,A - CALL LP_SET_PLACE - LD A,(ElementsBuffer.VerticalLine) - CALL PRSYM - POP BC - LD E,H - INC D - DJNZ .loop - - CALL LP_SET_PLACE - LD A,(ElementsBuffer.DownLeft) - CALL PRSYM - LD A,(ElementsBuffer.HorizontalLine) -.BHOR2+1: LD B,1 - CALL LP_PRINT_SYM - LD A,(ElementsBuffer.DownRight) - CALL PRSYM - RET - -PRSYM: LD B,1 - JP LP_PRINT_SYM - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -//////////////////// LOGO \\\\\\\\\\\\\\\\\\\\ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -LOGOTYPE: CALL SHOW_LOGO - ; - IF STARTUP_SND -.playSnd+1: LD A,#80 - RLA - JR NC,.noSound - ; - LD BC,CMOS_CELL.BootUpParams.Mask.BootSound - CALL GET_CMOS_VALUE - OR A - JR Z,.noSound - LD A,#37 ; opcode SCF, play sound on - LD (INT_HANDLER.sndSwitch),A -.noSound: ; - ENDIF - ; - LD BC,CMOS_CELL.BootUpParams.Mask.StartDelay - CALL GET_CMOS_VALUE - OR A - JR Z,.MinDelay - DEC A - JR Z,.AverageDelay - ; Delay enabled - LD B,LOGO_DELAY_NORM -.loop EI - push bc - HALT - CALL go_setup - pop bc - DJNZ .loop - ; Delay average -.AverageDelay: LD B,LOGO_DELAY_MAX -.MMA: PUSH BC - EI - HALT - DI - CALL FADE - POP BC - DJNZ .MMA - ; ; -.ERASE_LOGO: LD IX,win_descriptor.tab80x32 - ;LD HL,#0000 - ;LD E,1 - ; - EI - HALT - DI - CALL WIN_OPEN.SCR1 - ; - IF STARTUP_SND - LD A,#3F ; opcode CCF, play sound off - LD (INT_HANDLER.sndSwitch),A - CALL STARTUP_SOUND.mute - ENDIF - ; - LD DE,0 - LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE - LD B,7 - JP LP_CLS_WIN - ; Delay disabled -.MinDelay: LD B,LOGO_DELAY_MIN -.loop2: EI - HALT - DJNZ .loop2 - DI - JR .ERASE_LOGO -; ; ; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -SHOW_LOGO: LD IX,win_descriptor.tab320x256 - CALL WIN_OPEN.SCR1 - - SAFE_PORTY - - DI - LD A,SYS_PORT.PAGE0 - OUT (SYS_PORT.ON),A - OUT (ROM.SLOT0),A - - LD HL,MAIN_LOGO.Pallete - LD DE,memBUFFER.Shared - LD BC,MAIN_LOGO.Pallete.length - LDIR - - XOR A - OUT (ROM.SLOT0),A - OUT (SYS_PORT.ON),A - EI - - LD HL,memBUFFER.Shared - ; A = 0 - LD D,A ; SET DESKTOP PALETTE & CURSOR COLORS - LD E,A - LD B,def_pal_mask - CALL PIC_SET_PAL - - SAFE_PORTY - - DI - LD A,SYS_PORT.PAGE0 - OUT (SYS_PORT.ON),A - OUT (ROM.SLOT0),A - LD HL,MAIN_LOGO.Raster ; начало картинки в банке ПЗУ - ; CALL DECODE - CALL LOGO_TO_SCREEN - XOR A - OUT (SYS_PORT.ON),A - OUT (ROM.SLOT0),A - EI - RET -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -win_descriptor: -.tab80x32 Window_UserVars{ - 40, ; горизонтальный размер окна в знакоместах - 32, ; вертикальный размер в знакоместах - 0, ; положение окна по горизонтали на экране - 0, ; положение окна по вертикали на экране - %0001'1011, ; режим знакоместа - 0, ; дополнительный режим знакоместа - 0, ; положение по X в поле графики (по знакоместам) - 0 ; положение по Y в поле графики (по знакоместам) - } -.tab320x256 Window_UserVars{ - 16, ; горизонтальный размер окна в знакоместах - 9, ; вертикальный размер в знакоместах - 0, ; положение окна по горизонтали на экране - 0, ; положение окна по вертикали на экране - %0010'0000, ; режим знакоместа - 0, ; дополнительный режим знакоместа - 8, ; положение по X в поле графики (по знакоместам) - 0 ; положение по Y в поле графики (по знакоместам) - } -; - - MACRO _mFADE - LD HL,memBUFFER.Shared - ; A = 0 - LD B,A -.loop: DUP 3 - CP (HL) - JR Z,1F - DEC (HL) -1: INC HL - EDUP - INC HL - DJNZ .loop - ENDM - - -FADE: XOR A - _mFADE - _mFADE - ; A = 0 - LD HL,memBUFFER.Shared - ; LD DE,#0000 - LD D,A - LD E,A - ; - LD B,def_pal_mask - CALL PIC_SET_PAL - - SAFE_PORTY - -go_setup: ; !FIXIT переделать на TSETUP - CALL SCANKEY - RET Z - - CP #1B - JP Z,.to_EXIT_SETUP - - LD HL,#4F00 - AND A - SBC HL,DE - jr nz,go_setup - - LD IX,win_descriptor.tab80x32 - CALL WIN_OPEN.SCR1 - JP ENTER_SETUP - -.to_EXIT_SETUP: - LD HL,(RET_TO_EXP_ADDR) - PUSH HL - JP EXIT_SETUP - -;DECODE: -LOGO_TO_SCREEN: - PUSH HL - IN A,(SLOT1) - LD H,A - IN A,(PORT_Y) - LD L,A - EX (SP),HL - - LD A,#50 - OUT (SLOT1),A - LD A,72 ; !HARDCODE координата картинки по Y + высота картинки -.loop: - DEC A - OUT (PORT_Y),A - LD DE,#4040 ; !HARDCODE координата картинки по Х - LD BC,128 ; !HARDCODE длина горизонтальной линии картинки - LDIR - OR A - JP NZ,.loop - - POP BC - LD A,B - OUT (SLOT1),A - LD A,C - OUT (PORT_Y),A - XOR A - RET - - ; IF !ROM_LOGO_TEST - ; LOGPAL: ; palitre for logotype - ; IF TEST_Build - ; INCBIN './test/test2_pal.bin' - ; ELSE - ; INCBIN './original/logo_pal.bin' - ; ENDIF - ; - ; IF ($-LOGPAL) < 1024 - ; BLOCK +(1024-($-LOGPAL)),0 - ; ENDIF - ; ENDIF - -; Original hardcoded pallete for Peters logotype - ; B G R - ; DB #FF,#FF,#FF,#00 - ; DB #8C,#A5,#A5,#00 - ; DB #42,#EF,#EF,#00 - ; DB #DE,#CE,#C6,#00 - ; DB #84,#39,#39,#00 - ; DB #CE,#8C,#84,#00 - ; DB #A5,#39,#31,#00 - ; DB #84,#7B,#7B,#00 - ; DB #63,#5A,#5A,#00 - ; DB #BD,#39,#39,#00 - ; DB #84,#08,#08,#00 - ; DB #AD,#08,#08,#00 - ; DB #18,#00,#00,#00 - ; DB #63,#08,#10,#00 - ; DB #94,#08,#18,#00 - ; DB #00,#00,#00,#00 - - ; PALCOL: - ; ; B G R - ; DB #FF,#FF,#FF,#00 - ; DB #8C,#BD,#BD,#80 - ; DB #BD,#CE,#BD,#00 - ; DB #EF,#CE,#BD,#00 - ; DB #BC,#73,#73,#00 - ; DB #9C,#63,#63,#00 - ; DB #DE,#8C,#8C,#00 - ; DB #8C,#52,#52,#00 - ; DB #BD,#63,#63,#00 - ; DB #52,#10,#10,#00 - ; DB #21,#00,#00,#00 - ; DB #8C,#00,#00,#00 - ; DB #AD,#00,#00,#00 - ; DB #AD,#10,#21,#00 - ; DB #8C,#00,#10,#00 - ; DB #00,#00,#00,#00 - - - -SET_CGA: - ; LD A,4 - ; LD B,3 - ; CALL SET_PAL_INIT - ; LD A,5 - ; LD B,3 - ; CALL SET_PAL_INIT - ; LD A,6 - ; LD B,3 - ; CALL SET_PAL_INIT - ; LD A,7 - ; LD B,3 - ; CALL SET_PAL_INIT - ; RET - - CALL SETPAL4 - LD A,4 ; page_pal - LD HL,memBUFFER.Shared - LD DE,#0000 ; D - ELEMENTS,E - COLOR - LD B,def_pal_mask - CALL PIC_SET_PAL - - LD A,6 ; page_pal - LD HL,memBUFFER.Shared - LD DE,#0000 ;D - ELEMENTS,E - COLOR - LD B,def_pal_mask - CALL PIC_SET_PAL - - LD A,7 ; page_pal - LD HL,#80*4+memBUFFER.Shared - LD DE,#8080 ;D - ELEMENTS,E - COLOR - LD B,def_pal_mask - CALL PIC_SET_PAL - ; - - CALL SETPAL5 - LD A,5 ; page_pal - LD HL,memBUFFER.Shared - LD DE,#0000 ;D - ELEMENTS,E - COLOR - LD B,def_pal_mask - CALL PIC_SET_PAL - - LD A,7 ; page_pal - LD HL,memBUFFER.Shared - LD DE,#8000 ;D - ELEMENTS,E - COLOR - LD B,def_pal_mask - CALL PIC_SET_PAL - ; - -SETPAL4: - LD HL,COLORS.CGA.PALETTE - LD DE,memBUFFER.Shared - LD C,#08 - -.DCR0: LD B,COLORS.CGA.PALETTE.ColNum - PUSH HL - ; -.DCR1: POP HL - PUSH HL - PUSH BC - LDI - LDI - LDI - LDI - POP BC - DJNZ .DCR1 - ; - INC SP - INC SP - DEC C - JR NZ,.DCR0 - - LD HL,memBUFFER.Shared - LD BC,512 - LDIR - RET - -SETPAL5: - LD HL,COLORS.CGA.PALETTE - LD DE,memBUFFER.Shared - LD B,#08 -.DCR01: - PUSH BC - PUSH HL - LD BC,16*4 - LDIR - POP HL - POP BC - DJNZ .DCR01 - LD HL,memBUFFER.Shared - LD BC,512 - LDIR - RET - - include 'shared_includes/constants/standart_colors.inc' + +def_pal_mask EQU #FF +PIC_SET_PAL_FF EQU def_pal_mask*256+BIOS.PIC_SET_PAL + +;; +ScreenPOS: +.SUBNAME: + CALL LP_GET_PLACE + LD E,.SUBNAME.POS ;!HARDCODE autodetected hdd/cdrom info + JP LP_SET_PLACE +.SUBNAME.POS EQU 37 + ; +.CRLF: CALL LP_GET_PLACE + INC D + LD E,#00 + JP LP_SET_PLACE +;; + + + + IF BIG_ENDIAN_STR_PRINT = 2 +PRINT_STR_BIG_ENDIAN: + LD A,(HL) + CP ' ' + JR NZ,.PRINTDW + INC HL + LD A,(HL) + DEC HL + CP ' ' + JR NZ,.PRINTDW + INC HL + INC HL +.no_space: DJNZ DWPRINT + RET + ; +.PRINTDW: PUSH BC + LD E,(HL) + INC HL + LD A,(HL) + INC HL + CALL PRINT_CHAR + LD A,E + CALL PRINT_CHAR + POP BC + LD A,' ' + CP E + JR Z,.no_space + DJNZ .PRINTDW + RET + + ELSEIF BIG_ENDIAN_STR_PRINT = 0 +PRINT_STR_BIG_ENDIAN: + PUSH HL + PUSH BC + LD D,H + LD E,L + INC HL + ; +.loop_ch: LD A,(DE) + LDI + LD (DE),A + INC HL + INC DE + DJNZ .loop_ch + ; + POP BC + POP HL + LD A,B + ADD A,B + LD B,A + ; +.print_loop: CALL .no_space + RET Z + LD D,H + LD E,L + PUSH DE + PUSH BC + LD D,' ' + CALL LP_PRINT_LINE6 + POP BC + POP DE + PUSH HL + AND A + SBC HL,DE + LD A,B + SUB L + LD B,A + JR Z,.exit + LD A,' ' + INC B + PUSH BC + CALL PRINT_CHAR + POP BC + POP HL + DJNZ .print_loop + RET + ; +.no_space: LD A,(HL) + CP ' ' + RET NZ + INC HL + DJNZ .no_space + RET + ; +.exit: POP HL + RET + + ELSEIF BIG_ENDIAN_STR_PRINT = 1 +PRINT_STR_BIG_ENDIAN: + PUSH HL + PUSH BC + LD D,H + LD E,L + INC HL + ; +.loop_ch: LD A,(DE) + LDI + LD (DE),A + INC HL + INC DE + DJNZ .loop_ch + ; + POP BC + POP HL + LD A,B + ADD A,B + LD B,A + JP LP_PRINT_LINE2 + ENDIF + + + +PRINTA: LD E,A + JP LP_PRINT_ATR +; +PRINT_CHAR: LD B,1 + JP LP_PRINT_SYM +; + +;TPRINTZ: CALL LP_SET_PLACE +PRINTZ: LD B,0 + LD D,B + JP LP_PRINT_LINE6 +; + +; HPRINTZ: LD B,0 +; LD D,B +; LD E,COLORS.CGA.INK.WHITE +; JP LP_PRINT_LINE5 + +CPRINTZ: LD B,0 + LD D,B + LD E,A + JP LP_PRINT_LINE5 +; + +IPRINT: LD D,0 +.I: LD BC,10000 + CALL PRINTDG + LD BC,1000 + CALL PRINTDG + LD BC,100 + CALL PRINTDG + LD BC,10 + CALL PRINTDG + LD A,L + ADD A,#30 + JP PRINT_CHAR + ;HL - NUMBER +.Z: LD D,1 + JR .I + +PRINTDG: + LD A,#2F +PDG1: INC A + SBC HL,BC + JR NC,PDG1 + ADD HL,BC + BIT 0,D + JR NZ,PDG2 + CP #30 + RET Z + SET 0,D +PDG2: PUSH BC + CALL PRINT_CHAR + POP BC + RET + +; D - Y +; E - X +; H - CY +TLINEV: + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,(ElementsBuffer.UpCenter) + CALL PRSYM + DEC H + DEC H + +.loop: INC D + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,(ElementsBuffer.VerticalLine) + CALL PRSYM + DEC H + JR NZ,.loop + + INC D + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,(ElementsBuffer.DownCenter) + JP PRSYM + +; D - Y +; E - X +; L - CX +TLINEH: + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + LD A,(ElementsBuffer.LeftCenter) + CALL PRSYM + DEC L + DEC L + LD A,(ElementsBuffer.HorizontalLine) + LD B,L + + ;CALL PRSYMB + CALL LP_PRINT_SYM + + + LD A,(ElementsBuffer.RightCenter) + JP PRSYM + +; D - Y +; E - X +; B - CY +; C - CX +PBORDER: PUSH BC + LD A,C + DEC A + LD (.BSHI),A + DEC A + LD (.BHOR),A + LD (.BHOR2),A + CALL LP_SET_PLACE + LD A,(ElementsBuffer.UpLeft) + LD H,E + CALL PRSYM + LD A,(ElementsBuffer.HorizontalLine) +.BHOR+1: LD B,1 + CALL LP_PRINT_SYM + + LD A,(ElementsBuffer.UpRight) + CALL PRSYM + POP BC + DEC B + DEC B + INC D + LD E,H + +.loop: PUSH BC + CALL LP_SET_PLACE + LD A,(ElementsBuffer.VerticalLine) + CALL PRSYM + LD A,H +.BSHI+1: ADD A,#00 + LD E,A + CALL LP_SET_PLACE + LD A,(ElementsBuffer.VerticalLine) + CALL PRSYM + POP BC + LD E,H + INC D + DJNZ .loop + + CALL LP_SET_PLACE + LD A,(ElementsBuffer.DownLeft) + CALL PRSYM + LD A,(ElementsBuffer.HorizontalLine) +.BHOR2+1: LD B,1 + CALL LP_PRINT_SYM + LD A,(ElementsBuffer.DownRight) + CALL PRSYM + RET + +PRSYM: LD B,1 + JP LP_PRINT_SYM + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +//////////////////// LOGO \\\\\\\\\\\\\\\\\\\\ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +LOGOTYPE: CALL SHOW_LOGO + ; + IF STARTUP_SND +.playSnd+1: LD A,#80 + RLA + JR NC,.noSound + ; + LD BC,CMOS_CELL.BootUpParams.Mask.BootSound + CALL GET_CMOS_VALUE + OR A + JR Z,.noSound + LD A,#37 ; opcode SCF, play sound on + LD (INT_HANDLER.sndSwitch),A +.noSound: ; + ENDIF + ; + LD BC,CMOS_CELL.BootUpParams.Mask.StartDelay + CALL GET_CMOS_VALUE + OR A + JR Z,.MinDelay + DEC A + JR Z,.AverageDelay + ; Delay enabled + LD B,LOGO_DELAY_NORM +.loop EI + push bc + HALT + CALL go_setup + pop bc + DJNZ .loop + ; Delay average +.AverageDelay: LD B,LOGO_DELAY_MAX +.MMA: PUSH BC + EI + HALT + DI + CALL FADE + POP BC + DJNZ .MMA + ; ; +.ERASE_LOGO: LD IX,win_descriptor.tab80x32 + ;LD HL,#0000 + ;LD E,1 + ; + EI + HALT + DI + CALL WIN_OPEN.SCR1 + ; + IF STARTUP_SND + LD A,#3F ; opcode CCF, play sound off + LD (INT_HANDLER.sndSwitch),A + CALL STARTUP_SOUND.mute + ENDIF + ; + LD DE,0 + LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE + LD B,7 + JP LP_CLS_WIN + ; Delay disabled +.MinDelay: LD B,LOGO_DELAY_MIN +.loop2: EI + HALT + DJNZ .loop2 + DI + JR .ERASE_LOGO +; ; ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +SHOW_LOGO: LD IX,win_descriptor.tab320x256 + CALL WIN_OPEN.SCR1 + + SAFE_PORTY + + DI + LD A,SYS_PORT.PAGE0 + OUT (SYS_PORT.ON),A + OUT (ROM.SLOT0),A + + LD HL,MAIN_LOGO.Pallete + LD DE,memBUFFER.Shared + LD BC,MAIN_LOGO.Pallete.length + LDIR + + XOR A + OUT (ROM.SLOT0),A + OUT (SYS_PORT.ON),A + EI + + LD HL,memBUFFER.Shared + ; A = 0 + LD D,A ; SET DESKTOP PALETTE & CURSOR COLORS + LD E,A + LD B,def_pal_mask + CALL PIC_SET_PAL + + SAFE_PORTY + + DI + LD A,SYS_PORT.PAGE0 + OUT (SYS_PORT.ON),A + OUT (ROM.SLOT0),A + LD HL,MAIN_LOGO.Raster ; начало картинки в банке ПЗУ + ; CALL DECODE + CALL LOGO_TO_SCREEN + XOR A + OUT (SYS_PORT.ON),A + OUT (ROM.SLOT0),A + EI + RET +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +win_descriptor: +.tab80x32 Window_UserVars{ + 40, ; горизонтальный размер окна в знакоместах + 32, ; вертикальный размер в знакоместах + 0, ; положение окна по горизонтали на экране + 0, ; положение окна по вертикали на экране + %0001'1011, ; режим знакоместа + 0, ; дополнительный режим знакоместа + 0, ; положение по X в поле графики (по знакоместам) + 0 ; положение по Y в поле графики (по знакоместам) + } +.tab320x256 Window_UserVars{ + 16, ; горизонтальный размер окна в знакоместах + 9, ; вертикальный размер в знакоместах + 0, ; положение окна по горизонтали на экране + 0, ; положение окна по вертикали на экране + %0010'0000, ; режим знакоместа + 0, ; дополнительный режим знакоместа + 8, ; положение по X в поле графики (по знакоместам) + 0 ; положение по Y в поле графики (по знакоместам) + } +; + + MACRO _mFADE + LD HL,memBUFFER.Shared + ; A = 0 + LD B,A +.loop: DUP 3 + CP (HL) + JR Z,1F + DEC (HL) +1: INC HL + EDUP + INC HL + DJNZ .loop + ENDM + + +FADE: XOR A + _mFADE + _mFADE + ; A = 0 + LD HL,memBUFFER.Shared + ; LD DE,#0000 + LD D,A + LD E,A + ; + LD B,def_pal_mask + CALL PIC_SET_PAL + + SAFE_PORTY + +go_setup: ; !FIXIT переделать на TSETUP + CALL SCANKEY + RET Z + + CP #1B + JP Z,.to_EXIT_SETUP + + LD HL,#4F00 + AND A + SBC HL,DE + jr nz,go_setup + + LD IX,win_descriptor.tab80x32 + CALL WIN_OPEN.SCR1 + JP ENTER_SETUP + +.to_EXIT_SETUP: + LD HL,(RET_TO_EXP_ADDR) + PUSH HL + JP EXIT_SETUP + +;DECODE: +LOGO_TO_SCREEN: + PUSH HL + IN A,(SLOT1) + LD H,A + IN A,(PORT_Y) + LD L,A + EX (SP),HL + + LD A,#50 + OUT (SLOT1),A + LD A,72 ; !HARDCODE координата картинки по Y + высота картинки +.loop: + DEC A + OUT (PORT_Y),A + LD DE,#4040 ; !HARDCODE координата картинки по Х + LD BC,128 ; !HARDCODE длина горизонтальной линии картинки + LDIR + OR A + JP NZ,.loop + + POP BC + LD A,B + OUT (SLOT1),A + LD A,C + OUT (PORT_Y),A + XOR A + RET + + ; IF !ROM_LOGO_TEST + ; LOGPAL: ; palitre for logotype + ; IF TEST_Build + ; INCBIN './test/test2_pal.bin' + ; ELSE + ; INCBIN './original/logo_pal.bin' + ; ENDIF + ; + ; IF ($-LOGPAL) < 1024 + ; BLOCK +(1024-($-LOGPAL)),0 + ; ENDIF + ; ENDIF + +; Original hardcoded pallete for Peters logotype + ; B G R + ; DB #FF,#FF,#FF,#00 + ; DB #8C,#A5,#A5,#00 + ; DB #42,#EF,#EF,#00 + ; DB #DE,#CE,#C6,#00 + ; DB #84,#39,#39,#00 + ; DB #CE,#8C,#84,#00 + ; DB #A5,#39,#31,#00 + ; DB #84,#7B,#7B,#00 + ; DB #63,#5A,#5A,#00 + ; DB #BD,#39,#39,#00 + ; DB #84,#08,#08,#00 + ; DB #AD,#08,#08,#00 + ; DB #18,#00,#00,#00 + ; DB #63,#08,#10,#00 + ; DB #94,#08,#18,#00 + ; DB #00,#00,#00,#00 + + ; PALCOL: + ; ; B G R + ; DB #FF,#FF,#FF,#00 + ; DB #8C,#BD,#BD,#80 + ; DB #BD,#CE,#BD,#00 + ; DB #EF,#CE,#BD,#00 + ; DB #BC,#73,#73,#00 + ; DB #9C,#63,#63,#00 + ; DB #DE,#8C,#8C,#00 + ; DB #8C,#52,#52,#00 + ; DB #BD,#63,#63,#00 + ; DB #52,#10,#10,#00 + ; DB #21,#00,#00,#00 + ; DB #8C,#00,#00,#00 + ; DB #AD,#00,#00,#00 + ; DB #AD,#10,#21,#00 + ; DB #8C,#00,#10,#00 + ; DB #00,#00,#00,#00 + + + +SET_CGA: + ; LD A,4 + ; LD B,3 + ; CALL SET_PAL_INIT + ; LD A,5 + ; LD B,3 + ; CALL SET_PAL_INIT + ; LD A,6 + ; LD B,3 + ; CALL SET_PAL_INIT + ; LD A,7 + ; LD B,3 + ; CALL SET_PAL_INIT + ; RET + + CALL SETPAL4 + LD A,4 ; page_pal + LD HL,memBUFFER.Shared + LD DE,#0000 ; D - ELEMENTS,E - COLOR + LD B,def_pal_mask + CALL PIC_SET_PAL + + LD A,6 ; page_pal + LD HL,memBUFFER.Shared + LD DE,#0000 ;D - ELEMENTS,E - COLOR + LD B,def_pal_mask + CALL PIC_SET_PAL + + LD A,7 ; page_pal + LD HL,#80*4+memBUFFER.Shared + LD DE,#8080 ;D - ELEMENTS,E - COLOR + LD B,def_pal_mask + CALL PIC_SET_PAL + ; + + CALL SETPAL5 + LD A,5 ; page_pal + LD HL,memBUFFER.Shared + LD DE,#0000 ;D - ELEMENTS,E - COLOR + LD B,def_pal_mask + CALL PIC_SET_PAL + + LD A,7 ; page_pal + LD HL,memBUFFER.Shared + LD DE,#8000 ;D - ELEMENTS,E - COLOR + LD B,def_pal_mask + CALL PIC_SET_PAL + ; + +SETPAL4: + LD HL,COLORS.CGA.PALETTE + LD DE,memBUFFER.Shared + LD C,#08 + +.DCR0: LD B,COLORS.CGA.PALETTE.ColNum + PUSH HL + ; +.DCR1: POP HL + PUSH HL + PUSH BC + LDI + LDI + LDI + LDI + POP BC + DJNZ .DCR1 + ; + INC SP + INC SP + DEC C + JR NZ,.DCR0 + + LD HL,memBUFFER.Shared + LD BC,512 + LDIR + RET + +SETPAL5: + LD HL,COLORS.CGA.PALETTE + LD DE,memBUFFER.Shared + LD B,#08 +.DCR01: + PUSH BC + PUSH HL + LD BC,16*4 + LDIR + POP HL + POP BC + DJNZ .DCR01 + LD HL,memBUFFER.Shared + LD BC,512 + LDIR + RET + + include 'shared_includes/constants/standart_colors.inc' ; \ No newline at end of file diff --git a/src/bios/rom/SETUP/messages.z80 b/bios/rom/SETUP/messages.z80 similarity index 97% rename from src/bios/rom/SETUP/messages.z80 rename to bios/rom/SETUP/messages.z80 index 62bd927..6177475 100644 --- a/src/bios/rom/SETUP/messages.z80 +++ b/bios/rom/SETUP/messages.z80 @@ -1,919 +1,919 @@ - -; OnChangeAction: -; .setLang EQU 1 -; .nothing EQU 2 -; .setXYpos EQU 3 -; .setInt EQU 4 -; .setVsinc EQU 5 - - LUA ALLPASS - function get_key_for_value(t, value) - for column=1,2 do - for line,name in pairs(t[column]) do - if name==value then return column,line end - end - end - return nil - end - - function DeleteValueByDEFINE (t,zero_def,value) - if tonumber(sj.get_define(zero_def)) then - local delCol, delLine = get_key_for_value(t, value) - table.remove (t[delCol], delLine) - end - end - ENDLUA - - LUA PASS1 - SettingsTabsOrder = { - [1]={ - "Lang", -- 1 - "SaveRAMdrvs", -- 2 - "StartDelay", -- 3 - "RebootMsg", -- 4 - "SysDsk", -- 5 - "AltSysDsk", -- 6 - "FddFirst", -- 7 - "FddSecond", -- 8 - "PriIdeMA", -- 9 - "PriIdeSl", -- 10 - "SecIdeMA", -- 11 - "SecIdeSl", -- 12 - "ScreenY", -- 13 - "ScreenX", -- 14 - "FrameInt", -- 15 - "VSync", -- 16 - "QuickStartROM", -- 17 - "MemTest", -- DEFINES.INC --> UnusedSettingsFeatures - "UpdBios", -- DEFINES.INC --> UnusedSettingsFeatures - "TypRate", -- DEFINES.INC --> UnusedSettingsFeatures - "TypDelay", -- DEFINES.INC --> UnusedSettingsFeatures - }, - [2]={ - "PlayStartUpSound", -- 1 - "LoadZXroms", -- 2 - "QS_SetUpHardware", -- 3 - "QS_SetUpZxRom", -- 4 - "TrDosA", -- 5 - "TrDosB", -- 6 - "TrDosC", -- 7 - "TrDosD", -- 8 - "SetTime", -- 9 DEFINES.INC --> NEW_FEATUREDEFINES.INC --> HDDwriteProtect - --"HddWrPr", -- 10 DEFINES.INC --> HDDwriteProtect - -- 11 - -- 12 - -- 13 - -- 14 - -- 15 - -- 16 - -- 17 - } - } - DeleteValueByDEFINE(SettingsTabsOrder,"NEW_FEATURE","SetTime") - --DeleteValueByDEFINE(SettingsTabsOrder,"HDDwriteProtect","HddWrPr") - DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","MemTest") - DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","UpdBios") - DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","TypRate") - DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","TypDelay") - -- DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","") - -- DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","") - ENDLUA -; - -; - MACRO _mSETitemParams itemName? -@.itemName? EQU $ - DEFINE TmpDef itemName? - LUA ALLPASS - local tmpName = sj.get_define("TmpDef") - local column,line = get_key_for_value(SettingsTabsOrder, tmpName) - if (column == nil or line == nil) then sj.error("Settings Tab not found",tmpName) end - if column == 1 then column = _c("firstColumn") else column = _c("secondColumn") end - sj.insert_define("columnNum", column) - sj.insert_define("lineNum", (_c("firstLine")+line-1)) - sj.insert_define("paramName", "msgStrings.par" .. tmpName) - ENDLUA - UNDEFINE TmpDef - ENDM -; - - MACRO _mCreateSettingsItemsTabsAddrs - LUA ALLPASS - for i = 1, #SettingsTabsOrder do - for j = 1, #SettingsTabsOrder[i] do - _pc("DW " .. _c("SettingsItemsTabs." .. SettingsTabsOrder[i][j])) - end - end - ENDLUA - -; создаёт такую структуру: -; DW SettingsItemsTabs.FirstItem -; DW .. -; DW SettingsItemsTabs.LastItem - ENDM - - MACRO _mCreateMsgAddrTable ; !FIXIT доделать на приём параметра "msgRusStrings.msg_", а лучше внутри самому определять эту метку - LUA ALLPASS - for i = 0, _c("tmp_Counter")-1, 1 do - _pc("WORD " .. "msgRusStrings.msg_" .. i) - end - ENDLUA - -; создаёт такую структуру: -; WORD msgRusStrings.msg_0 -; .. -; WORD msgRusStrings.msg_XX ; XX = tmp_Counter - ENDM - -;----------------------------[Settings items table]----------------------------[v] - -; - IF NEW_FEATURE -; New structure for procedure with IY reg - STRUCT MenusItem -Action WORD -Type BYTE -Column BYTE -Line BYTE -Name BYTE -CMOSreg BYTE -ValueMask BYTE -ValueMax BYTE -FirstString BYTE - ENDS - -paramLine EQU 0 -folderLine EQU 1 - - ENDIF -; - -firstColumn EQU 03 ; смещение по X для первого столбца -secondColumn EQU 43 ; смещение по X для второго столбца -firstLine EQU 07 ; смещение по Y для первой строки - -SettingsItemsTabs: - - _mSETitemParams Lang - DW OnChangeAction.setLang ; действие при изменении - IF NEW_FEATURE : DB paramLine : ENDIF ; тип параметра (строка со значением или каталог) - DB columnNum,lineNum ; столбец, строка - DB paramName ; Название параметра - DW CMOS_CELL.BootUpParams.Mask.Language : DB %0000'0100 ; CMOS : MASK - DB msgStrings.valLangEng ; 1-й вариант параметра - DB msgStrings.valLangRus ; 2-й вариант параметра - - - IF UnusedSettingsFeatures ; !TODO - _mSETitemParams MemTest - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.BootUpParams.Mask.MemTest : DB %1000'0000 - DB msgStrings.valDisabled - DB msgStrings.valEnabled - ENDIF - - _mSETitemParams SaveRAMdrvs - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.BootUpParams.Mask.SaveRAMdisks : DB %0100'0000 - DB msgStrings.valDisabled - DB msgStrings.valEnabled - - IF UnusedSettingsFeatures ; !TODO - _mSETitemParams UpdBios - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.BootUpParams.Mask.UpdBios : DB %0010'0000 - DB msgStrings.valDisabled - DB msgStrings.valEnabled - ENDIF - - _mSETitemParams StartDelay - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.BootUpParams.Mask.StartDelay : DB %0001'0000 - DB msgStrings.valDisabled - DB msgStrings.valShort - DB msgStrings.valLong - - IF UnusedSettingsFeatures ; !TODO - _mSETitemParams TypRate - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.Typematic.Mask.Rate : DB %0000'0111 - DB msgStrings.val_6 - DB msgStrings.val_8 - DB msgStrings.val_10 - DB msgStrings.val_12 - DB msgStrings.val_15 - DB msgStrings.val_20 - DB msgStrings.val_24 - DB msgStrings.val_30 - ENDIF - - IF UnusedSettingsFeatures ; !TODO - _mSETitemParams TypDelay - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.Typematic.Mask.Delay : DB %0110'0000 - DB msgStrings.val_250 - DB msgStrings.val_500 - DB msgStrings.val_750 - DB msgStrings.val_1000 - ENDIF - - _mSETitemParams RebootMsg - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.Options.Mask.RebootMSG : DB %0000'0010 - DB msgStrings.valDisabled - DB msgStrings.valEnabled - - _mSETitemParams SysDsk - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.BootDrives.Mask.SysDisk : DB %0000'0111 - DB msgStrings.val1stFDD - DB msgStrings.val2ndFDD - DB msgStrings.val1stIDE - DB msgStrings.val2ndIDE - DB msgStrings.val3rdIDE - DB msgStrings.val4thIDE - DB msgStrings.valRamDsk - DB msgStrings.valRecovery - - _mSETitemParams AltSysDsk - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.BootDrives.Mask.AltSysDisk : DB %0111'0000 - DB msgStrings.val1stFDD - DB msgStrings.val2ndFDD - DB msgStrings.val1stIDE - DB msgStrings.val2ndIDE - DB msgStrings.val3rdIDE - DB msgStrings.val4thIDE - DB msgStrings.valRamDsk - DB msgStrings.valRecovery - - _mSETitemParams FddFirst - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.DrivesSetup_1.Mask.FirstFDD : DB %0000'0000 - DB msgStrings.valAuto - ; DB msgStrings.val720 - ; DB msgStrings.val1440 - ; DB msgStrings.valDash6 - - _mSETitemParams FddSecond - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.DrivesSetup_1.Mask.SecondFDD : DB %0000'0000 - DB msgStrings.valAuto - ; DB msgStrings.val720 - ; DB msgStrings.val1440 - ; DB msgStrings.valDash6 - - _mSETitemParams PriIdeMA - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.DrivesSetup_1.Mask.PriIDEmaster : DB %0011'0000 - DB msgStrings.valAuto - DB msgStrings.valSetup - DB msgStrings.valCdRom - DB msgStrings.valDash6 - - _mSETitemParams PriIdeSl - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.DrivesSetup_1.Mask.PriIDEslave : DB %1100'0000 - DB msgStrings.valAuto - DB msgStrings.valSetup - DB msgStrings.valCdRom - DB msgStrings.valDash6 - - _mSETitemParams SecIdeMA - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.DrivesSetup_2.Mask.SecIDEmaster : DB %0011'0000 - DB msgStrings.valAuto - DB msgStrings.valSetup - DB msgStrings.valCdRom - DB msgStrings.valDash6 - - _mSETitemParams SecIdeSl - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.DrivesSetup_2.Mask.SecIDEslave : DB %1100'0000 - DB msgStrings.valAuto - DB msgStrings.valSetup - DB msgStrings.valCdRom - DB msgStrings.valDash6 - - ; IF HDDwriteProtect - ; _mSETitemParams HddWrPr - ; DW OnChangeAction.nothing - ; IF NEW_FEATURE : DB paramLine : ENDIF - ; DB columnNum,lineNum - ; DB paramName - ; DW CMOS_CELL.Options.Mask.HDDwriteProtect : DB %0000'0001 - ; DB msgStrings.valDisabled - ; DB msgStrings.valEnabled - ; ENDIF - - _mSETitemParams ScreenY - DW OnChangeAction.setXYpos - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.ScreenPosition.Mask.X : DB %1110'0000 - DB msgStrings.valMinus7 - DB msgStrings.valMinus6 - DB msgStrings.valMinus5 - DB msgStrings.valMinus4 - DB msgStrings.valMinus3 - DB msgStrings.valMinus2 - DB msgStrings.valMinus1 - DB msgStrings.val_0 - DB msgStrings.valPlus1 - DB msgStrings.valPlus2 - DB msgStrings.valPlus3 - DB msgStrings.valPlus4 - DB msgStrings.valPlus5 - DB msgStrings.valPlus6 - DB msgStrings.valPlus7 - - _mSETitemParams ScreenX - DW OnChangeAction.setXYpos - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.ScreenPosition.Mask.Y : DB %0000'1110 - DB msgStrings.valPlus7 - DB msgStrings.valPlus6 - DB msgStrings.valPlus5 - DB msgStrings.valPlus4 - DB msgStrings.valPlus3 - DB msgStrings.valPlus2 - DB msgStrings.valPlus1 - DB msgStrings.val_0 - DB msgStrings.valMinus1 - DB msgStrings.valMinus2 - DB msgStrings.valMinus3 - DB msgStrings.valMinus4 - DB msgStrings.valMinus5 - DB msgStrings.valMinus6 - DB msgStrings.valMinus7 - - _mSETitemParams FrameInt - DW OnChangeAction.setInt - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.ScreenSET.Mask.Int : DB %0011'0000 - DB msgStrings.valDash8 - DB msgStrings.valScorpion - DB msgStrings.valPentagon - DB msgStrings.valSpectrum - - _mSETitemParams VSync - DW OnChangeAction.setVsinc - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.ScreenSET.Mask.Sinc : DB %1000'0000 - DB msgStrings.valDash8 - DB msgStrings.val312_50 - DB msgStrings.val320_49 - - _mSETitemParams QuickStartROM - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.BootUpParams.Mask.QuickStartROM : DB %0000'0001 - DB msgStrings.valQuickStartSP - DB msgStrings.valSpectrum - - - _mSETitemParams QS_SetUpZxRom - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.QuickStartSetUp.Mask.ZxRom : DB %0000'0101 - DB msgStrings.valQS_SetUpBasic128 - DB msgStrings.valQS_SetUpBasic48p - DB msgStrings.valQS_SetUpTrDos - DB msgStrings.valQS_SetUpExp - DB msgStrings.valQS_SetUpTrDos48 - DB msgStrings.valQS_SetUpBasic48 - - _mSETitemParams QS_SetUpHardware - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.QuickStartSetUp.Mask.Hardware : DB %0011'0000 - DB msgStrings.valSprinterZX - DB msgStrings.valPentagon48 - DB msgStrings.valPentagon128 - DB msgStrings.valPentagon512 - DB msgStrings.valScorpion256 - DB msgStrings.valZXSpectrum48 - DB msgStrings.valZXSpectrum128 - - - _mSETitemParams TrDosA - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.TRDOSmount.Mask.A : DB %0000'0010 - DB msgStrings.valDefault - DB msgStrings.valFDD - DB msgStrings.valHDD - - _mSETitemParams TrDosB - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.TRDOSmount.Mask.B : DB %0000'1000 - DB msgStrings.valDefault - DB msgStrings.valFDD - DB msgStrings.valHDD - - _mSETitemParams TrDosC - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.TRDOSmount.Mask.C : DB %0010'0000 - DB msgStrings.valDefault - DB msgStrings.valFDD - DB msgStrings.valHDD - - _mSETitemParams TrDosD - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.TRDOSmount.Mask.D : DB %1000'0000 - DB msgStrings.valDefault - DB msgStrings.valFDD - DB msgStrings.valHDD - - _mSETitemParams LoadZXroms - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.Options.Mask.LoadZXroms : DB %0000'1000 - DB msgStrings.valLoadZXromsManually - DB msgStrings.valLoadZXromsFlag - DB msgStrings.valLoadZXromsCAD - - _mSETitemParams PlayStartUpSound - DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF - DB columnNum,lineNum - DB paramName - DW CMOS_CELL.BootUpParams.Mask.BootSound : DB %0000'0010 - DB msgStrings.valDisabled - DB msgStrings.valEnabled - - IF NEW_FEATURE - _mSETitemParams SetTime - DW OnChangeAction.SetTime - DB folderLine - DB columnNum,lineNum - DB paramName - DB #00,%0000'0000,%0000'0000 - DB msgStrings.valFolder - ENDIF -;--------------------[Items Addresses table]--------------------[] -SettingsItemsTabsAddrs: - _mCreateSettingsItemsTabsAddrs -.max EQU ($-SettingsItemsTabsAddrs)/2 - - ; db on-change routine addr - ; db X,Y - ; db string-name number - ; db CMOS, MASK - ; db string-value number 1, .. , string-value number XX -;----------------------------------------------------------------[] - -;----------------------------[Settings items table]----------------------------[^] - -; -; !TODO добавить экспорт создаваемых переменных в отдельный файл для справки - MACRO _mSetStr Suffix?, Num? -@.Suffix? EQU Num? - LUA ALLPASS - _pl("@.msg_" .. _c("Num?")) - ENDLUA -!tmp_Counter = tmp_Counter + 1 - ENDM -; -; - -; -; !TODO добавить экспорт создаваемых переменных в отдельный файл для справки - MACRO _mSetStrRus Suffix?, Num? - DEFINE TmpDef Suffix? - LUA ALLPASS - if (_c("msgStrings." .. sj.get_define("TmpDef"))) ~= _c("Num?") then - sj.error("Sequence matching between Russian and English strings is broken!!!") - else - _pl("@.msg_" .. _c("Num?")) - end - ENDLUA - UNDEFINE TmpDef -!tmp_Counter = tmp_Counter + 1 - ENDM -; -; -; -;================================================================================================================================== -; Не менять бездумно название метки msgStrings !!! Участвует в LUA макросе в этом же файле. -tmp_Counter DEFL 0 -msgStrings: - _mSetStr copyRightPeters, tmp_Counter : DZ 'Copyright (c) 2002 Peters Plus' - _mSetStr copyRightSPTeam, tmp_Counter : DZ 'Copyright (c) 2009-', SPTeam_year, ' Sprinter Team' - _mSetStr setupBiosVer, tmp_Counter : DZ 'Sprinter BIOS v', BIOS_ver_string - _mSetStr setupCopyRight, tmp_Counter : DZ 'Copyright (c) 2002 Peters Plus, (c) 2009-', SPTeam_year, ' Sprinter Team' - _mSetStr setupUtilityVer, tmp_Counter : DZ 'SETUP Utility v', SetupVer - _mSetStr setupHelpStr1, tmp_Counter : DZ 'ESC : Quit F10 : Save & Exit Setup' - _mSetStr setupHelpStr2, tmp_Counter : DZ 'F2 : Save Values ',24,32,25,32,26,32,27,' : Select Item' ; коды стрелок вместе с пробелами: 24,32,25,32,26,32,27 - _mSetStr setupHelpStr3, tmp_Counter : DZ 'F5 : Old Values PU/PD/+/- : Modify' - _mSetStr setupHelpStr4, tmp_Counter : DZ 'F7 : Default Values F3 : Color ' - _mSetStr toSetupButton, tmp_Counter : DZ ' to enter SETUP' -;_mSetStr forCtrlBootButton, tmp_Counter : DZ ' for Recovery boot' - _mSetStr forAltBootButton, tmp_Counter : DZ ' for Alternative boot' - _mSetStr cmosChecksumErr, tmp_Counter : DZ 'WARNING! CMOS CHECKSUM ERROR, DEFAULT VALUES SET!' - _mSetStr cmosDateTimeErr, tmp_Counter : DZ 'WARNING! CMOS DATE/TIME ERROR, DEFAULT VALUES SET!' - _mSetStr detectIdePrMA, tmp_Counter : DZ ' Detecting IDE Primary Master ... [Press F4 to skip]' - _mSetStr detectIdePrSL, tmp_Counter : DZ ' Detecting IDE Primary Slave ... [Press F4 to skip]' - _mSetStr detectIdeSecMA, tmp_Counter : DZ ' Detecting IDE Secondary Master ... [Press F4 to skip]' - _mSetStr detectIdeSecSL, tmp_Counter : DZ ' Detecting IDE Secondary Slave ... [Press F4 to skip]' - _mSetStr ideUnknown, tmp_Counter : DZ 'Unknown ' - _mSetStr ideNone, tmp_Counter : DZ 'None ' - _mSetStr ideSkiped, tmp_Counter : DZ 'Skipped ' - _mSetStr ideFail, tmp_Counter : DZ 'Fail ' ; !FIXIT strFail - _mSetStr spModel, tmp_Counter : DZ 'Model : ' -.str_ACEX_MODEL EQU $$$+7 ; указатель на строку ниже для патча апдейтером - _mSetStr spCNFver, tmp_Counter : DZ 'Core 1K30 : v' - _mSetStr spMemory, tmp_Counter : DZ 'Memory : ' - _mSetStr cmosFound, tmp_Counter : DZ 'CMOS : Found' - _mSetStr cmosNone, tmp_Counter : DZ 'CMOS : None' - _mSetStr memoryAvailable, tmp_Counter : DZ 'Available : ' -; _mSetStr unknownSTR1, tmp_Counter : DZ "7" -; _mSetStr unknownSTR2, tmp_Counter : DZ "8" - _mSetStr boardID, tmp_Counter : DZ 'Board ID : ' - _mSetStr bootFdd, tmp_Counter : DZ 'Boot from Diskette' -; _mSetStr bootHdd, tmp_Counter : DZ 'Boot from Hard disk ' - _mSetStr bootHdd, tmp_Counter : DZ 'Boot from HDD ' - _mSetStr bootCd, tmp_Counter : DZ 'Boot from CD-ROM ' - _mSetStr bootRamDrv, tmp_Counter : DZ 'Boot from RAM disk' - _mSetStr bootRecovery, tmp_Counter : DZ 'Starting recovery' - _mSetStr bootAltDrv, tmp_Counter : DZ 'Alternative ' - _mSetStr bootFail, tmp_Counter : DZ ' fail' ; !FIXIT strFail - _mSetStr bootOk, tmp_Counter : DZ ' OK' - _mSetStr afterBootFail, tmp_Counter : DZ 'PRESS TO REBOOT, TO ENTER SETUP OR TO ZX-MODE . . .' - _mSetStr errorZXmode, tmp_Counter : DZ 'Error! Spectrum mode launch failed. Press CTRL+ALT+DEL or RESET.' -; - _mSetStr parLang, tmp_Counter : DZ 'Language (язык) : ' - _mSetStr valLangEng, tmp_Counter : DZ 'English ' - _mSetStr valLangRus, tmp_Counter : DZ 'Русский ' - _mSetStr parMemTest, tmp_Counter : DZ 'Memory test : ' - _mSetStr valDisabled, tmp_Counter : DZ 'Disabled' - _mSetStr valEnabled, tmp_Counter : DZ 'Enabled ' - _mSetStr parSaveRAMdrvs, tmp_Counter : DZ 'Save RAM-disks : ' - _mSetStr parUpdBios, tmp_Counter : DZ 'Update BIOS : ' - _mSetStr parStartDelay, tmp_Counter : DZ 'Start delay : ' - _mSetStr valShort, tmp_Counter : DZ 'Short ' - _mSetStr valLong, tmp_Counter : DZ 'Long ' - _mSetStr parTypRate, tmp_Counter : DZ 'Typematic rate (chars/sec) : ' - _mSetStr val_6, tmp_Counter : DZ '6 ' - _mSetStr val_8, tmp_Counter : DZ '8 ' - _mSetStr val_10, tmp_Counter : DZ '10' - _mSetStr val_12, tmp_Counter : DZ '12' - _mSetStr val_15, tmp_Counter : DZ '15' - _mSetStr val_20, tmp_Counter : DZ '20' - _mSetStr val_24, tmp_Counter : DZ '24' - _mSetStr val_30, tmp_Counter : DZ '30' - _mSetStr parTypDelay, tmp_Counter : DZ 'Typematic delay (Msec) : ' - _mSetStr val_250, tmp_Counter : DZ '250 ' - _mSetStr val_500, tmp_Counter : DZ '500 ' - _mSetStr val_750, tmp_Counter : DZ '750 ' - _mSetStr val_1000, tmp_Counter : DZ '1000' - _mSetStr parRebootMsg, tmp_Counter : DZ 'Reboot message : ' - _mSetStr parSysDsk, tmp_Counter : DZ 'System disk : ' - _mSetStr val1stFDD, tmp_Counter : DZ '1-st FDD' - _mSetStr val2ndFDD, tmp_Counter : DZ '2-nd FDD' - _mSetStr val1stIDE, tmp_Counter : DZ '1-st IDE' - _mSetStr val2ndIDE, tmp_Counter : DZ '2-nd IDE' - _mSetStr val3rdIDE, tmp_Counter : DZ '3-rd IDE' - _mSetStr val4thIDE, tmp_Counter : DZ '4-th IDE' - _mSetStr valRamDsk, tmp_Counter : DZ 'RAM-DISK' - _mSetStr valRecovery, tmp_Counter : DZ 'RECOVERY' - _mSetStr parAltSysDsk, tmp_Counter : DZ 'Alt. system disk : ' - _mSetStr parFddFirst, tmp_Counter : DZ 'FDD first : ' - _mSetStr valAuto, tmp_Counter : DZ 'Auto ' -; _mSetStr val720, tmp_Counter : DZ '720K ' -; _mSetStr val1440, tmp_Counter : DZ '1.44M ' - _mSetStr valDash6, tmp_Counter : DZ '------' - _mSetStr parFddSecond, tmp_Counter : DZ 'FDD second : ' - _mSetStr parPriIdeMA, tmp_Counter : DZ 'Primary IDE Master',#FF,' : ' - _mSetStr valSetup, tmp_Counter : DZ 'Setup ' - _mSetStr valCdRom, tmp_Counter : DZ 'CD-ROM' - _mSetStr parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave',#FF,' : ' - _mSetStr parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master',#FF,' : ' - _mSetStr parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave',#FF,' : ' -; IF HDDwriteProtect -; _mSetStr parHddWrPr, tmp_Counter : DZ 'HDD write protect : ' -; ENDIF - _mSetStr parScreenY, tmp_Counter : DZ 'Y-screen position : ' - _mSetStr valMinus7, tmp_Counter : DZ '-7' - _mSetStr valMinus6, tmp_Counter : DZ '-6' - _mSetStr valMinus5, tmp_Counter : DZ '-5' - _mSetStr valMinus4, tmp_Counter : DZ '-4' - _mSetStr valMinus3, tmp_Counter : DZ '-3' - _mSetStr valMinus2, tmp_Counter : DZ '-2' - _mSetStr valMinus1, tmp_Counter : DZ '-1' - _mSetStr val_0, tmp_Counter : DZ ' 0' - _mSetStr valPlus1, tmp_Counter : DZ '+1' - _mSetStr valPlus2, tmp_Counter : DZ '+2' - _mSetStr valPlus3, tmp_Counter : DZ '+3' - _mSetStr valPlus4, tmp_Counter : DZ '+4' - _mSetStr valPlus5, tmp_Counter : DZ '+5' - _mSetStr valPlus6, tmp_Counter : DZ '+6' - _mSetStr valPlus7, tmp_Counter : DZ '+7' - _mSetStr parScreenX, tmp_Counter : DZ 'X-screen position : ' - _mSetStr parFrameInt, tmp_Counter : DZ 'Frame interrupt : ' - _mSetStr valDash8, tmp_Counter : DZ '--------' - _mSetStr valScorpion, tmp_Counter : DZ 'Scorpion' - _mSetStr valPentagon, tmp_Counter : DZ 'Pentagon' - _mSetStr valSpectrum, tmp_Counter : DZ 'Spectrum' - _mSetStr parVSync, tmp_Counter : DZ 'V-synchronization : ' - _mSetStr val312_50, tmp_Counter : DZ '312/50Hz' - _mSetStr val320_49, tmp_Counter : DZ '320/49Hz' - _mSetStr parQuickStartROM, tmp_Counter : DZ 'Run in mode : ' - _mSetStr valQuickStartSP, tmp_Counter : DZ 'Sprinter' - _mSetStr valDefault, tmp_Counter : DZ 'Default' - _mSetStr valFDD, tmp_Counter : DZ 'FDD ' ; ????? подумать какие варианты возможны - _mSetStr valHDD, tmp_Counter : DZ 'HDD ' ; ????? подумать какие варианты возможны - _mSetStr parTrDosA, tmp_Counter : DZ 'TR DOS A:> : ' - _mSetStr parTrDosB, tmp_Counter : DZ 'TR DOS B:> : ' - _mSetStr parTrDosC, tmp_Counter : DZ 'TR DOS C:> : ' - _mSetStr parTrDosD, tmp_Counter : DZ 'TR DOS D:> : ' - _mSetStr parPlayStartUpSound, tmp_Counter : DZ 'Startup sound : ' - _mSetStr parLoadZXroms, tmp_Counter : DZ 'Load ZX ROMs : ' - _mSetStr valLoadZXromsManually, tmp_Counter : DZ 'Manually ' - _mSetStr valLoadZXromsFlag, tmp_Counter : DZ 'By ZX flag' - _mSetStr valLoadZXromsCAD, tmp_Counter : DZ 'On restart' -; - _mSetStr parQS_SetUpHardware, tmp_Counter : DZ 'ZX Mode : ' - _mSetStr valSprinterZX, tmp_Counter : DZ 'Sprinter ZX ' - _mSetStr valPentagon48, tmp_Counter : DZ 'Pentagon 48 ' - _mSetStr valPentagon128, tmp_Counter : DZ 'Pentagon 128' - _mSetStr valPentagon512, tmp_Counter : DZ 'Pentagon 512' - _mSetStr valScorpion256, tmp_Counter : DZ 'Scorpion 256' - _mSetStr valZXSpectrum48, tmp_Counter : DZ 'Spectrum 48 ' - _mSetStr valZXSpectrum128, tmp_Counter : DZ 'Spectrum 128' -; - _mSetStr parQS_SetUpZxRom, tmp_Counter : DZ 'ZX Mode start in : ' - _mSetStr valQS_SetUpBasic128, tmp_Counter : DZ 'Basic 128' - _mSetStr valQS_SetUpBasic48p, tmp_Counter : DZ 'Basic 48+' - _mSetStr valQS_SetUpTrDos, tmp_Counter : DZ 'TR-DOS ' - _mSetStr valQS_SetUpExp, tmp_Counter : DZ 'Expansion' - _mSetStr valQS_SetUpTrDos48, tmp_Counter : DZ 'TR-DOS 48' - _mSetStr valQS_SetUpBasic48, tmp_Counter : DZ 'Basic 48 ' -; _mSetStrRus valLoadZXromsAuto, tmp_Counter : DZ 'On call ' - IF NEW_FEATURE - _mSetStr parSetTime, tmp_Counter : DZ 'Date and time setup : ' - _mSetStr valFolder, tmp_Counter : DB 16,'ENTER',17,0 - ENDIF - IF BETA_BUILD > 0 - _mSetStr extBIOSmsg, tmp_Counter : DZ 'Test build! ',BUILD_DATE,', ',__TIME__ - ELSE - _mSetStr extBIOSmsg, tmp_Counter : DZ 'Release ',RELEASE_BUILD_DATE - ENDIF -; - -MSG_ENG: ; !FIXIT подставить макрос _mCreateMsgAddrTable который надо доделать на приём параметра "msgStrings.msg_" или "msgRusStrings.msg_" - LUA ALLPASS - for i = 0, _c("tmp_Counter")-1, 1 do - _pc("WORD " .. "msgStrings.msg_" .. i) - end - ENDLUA -/* - WORD msgStrings.msg_0 - .. - WORD msgStrings.msg_XX ; XX = tmp_Counter -*/ -MSG_ENG.size EQU $-MSG_ENG -;================================================================================================================================== - -;================================================================================================================================== -tmp_Counter = 0 -msgRusStrings: - _mSetStrRus copyRightPeters, tmp_Counter : DZ 'Copyright (c) 2002 Peters Plus' - _mSetStrRus copyRightSPTeam, tmp_Counter : DZ 'Copyright (c) 2009-', SPTeam_year, ' Sprinter Team' - _mSetStrRus setupBiosVer, tmp_Counter : DZ 'Sprinter BIOS v', BIOS_ver_string - _mSetStrRus setupCopyRight, tmp_Counter : DZ 'Copyright (c) 2002 Peters Plus, (c) 2009-', SPTeam_year, ' Sprinter Team' - _mSetStrRus setupUtilityVer, tmp_Counter : DZ 'SETUP Utility v', SetupVer - _mSetStrRus setupHelpStr1, tmp_Counter : DZ 'ESC : Выйти F10 : Сохранить и выйти' - _mSetStrRus setupHelpStr2, tmp_Counter : DZ 'F2 : Сохранить значения ',24,32,25,32,26,32,27,' : Выбор пункта' - _mSetStrRus setupHelpStr3, tmp_Counter : DZ 'F5 : Старые значения PU/PD/+/- : Изменение' - _mSetStrRus setupHelpStr4, tmp_Counter : DZ 'F7 : Значения по умолчанию F3 : Цвета ' - _mSetStrRus toSetupButton, tmp_Counter : DZ ' для входа в SETUP' -;_mSetStrRus forCtrlBootButton, tmp_Counter : DZ ' для загрузки Recovery' - _mSetStrRus forAltBootButton, tmp_Counter : DZ ' для Альтернативной загрузки' - _mSetStrRus cmosChecksumErr, tmp_Counter : DZ 'ВНИМАНИЕ! ОШИБКА КОНТРОЛЬНОЙ СУММЫ CMOS, УСТАНОВЛЕНЫ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ' - _mSetStrRus cmosDateTimeErr, tmp_Counter : DZ 'ВНИМАНИЕ! ОШИБКА ДАТЫ/ВРЕМЕНИ CMOS, УСТАНОВЛЕНЫ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ' - _mSetStrRus detectIdePrMA, tmp_Counter : DZ ' Определяем Первичный IDE Master ... [F4 для пропуска] ' - _mSetStrRus detectIdePrSL, tmp_Counter : DZ ' Определяем Первичный IDE Slave ... [F4 для пропуска]' - _mSetStrRus detectIdeSecMA, tmp_Counter : DZ ' Определяем Вторичный IDE Master ... [F4 для пропуска]' - _mSetStrRus detectIdeSecSL, tmp_Counter : DZ ' Определяем Вторичный IDE Slave ... [F4 для пропуска]' - _mSetStrRus ideUnknown, tmp_Counter : DZ 'Неизвестный ' - _mSetStrRus ideNone, tmp_Counter : DZ 'Нет ' - _mSetStrRus ideSkiped, tmp_Counter : DZ 'Пропущен ' - _mSetStrRus ideFail, tmp_Counter : DZ 'Не определён ' - _mSetStrRus spModel, tmp_Counter : DZ 'Модель : ' -.str_ACEX_MODEL EQU $$$+7 ; указатель на строку ниже для патча апдейтером ; !FIXIT ? вытягивать через FN_CRIPT.Acex_ver ? - _mSetStrRus spCNFver, tmp_Counter : DZ 'Ядро 1K30 : v' - _mSetStrRus spMemory, tmp_Counter : DZ 'Память : ' - _mSetStrRus cmosFound, tmp_Counter : DZ 'CMOS : Найден' - _mSetStrRus cmosNone, tmp_Counter : DZ 'CMOS : Нет' - _mSetStrRus memoryAvailable, tmp_Counter : DZ 'Доступно : ' -; _mSetStrRus unknownSTR1, tmp_Counter : DZ '7' -; _mSetStrRus unknownSTR2, tmp_Counter : DZ '8' - _mSetStrRus boardID, tmp_Counter : DZ 'ID платы : ' - _mSetStrRus bootFdd, tmp_Counter : DZ 'Запуск с дискеты' - _mSetStrRus bootHdd, tmp_Counter : DZ 'Запуск с HDD ' - _mSetStrRus bootCd, tmp_Counter : DZ 'Запуск с CD-ROM ' - _mSetStrRus bootRamDrv, tmp_Counter : DZ 'Запуск с RAM диска' - _mSetStrRus bootRecovery, tmp_Counter : DZ 'Запуск восстановления' - _mSetStrRus bootAltDrv, tmp_Counter : DZ 'Альтернативный ' - _mSetStrRus bootFail, tmp_Counter : DZ ' невозможен' - _mSetStrRus bootOk, tmp_Counter : DZ ' OK' - _mSetStrRus afterBootFail, tmp_Counter : DZ 'НАЖМИТЕ ДЛЯ ПЕРЕЗАГРУЗКИ, ДЛЯ НАСТРОЕК ИЛИ ДЛЯ ZX-MODE . . .' - _mSetStrRus errorZXmode, tmp_Counter : DZ 'Ошибка! Запуск режима Spectrum не удался. Нажмите CTRL+ALT+DEL или RESET.' -; - _mSetStrRus parLang, tmp_Counter : DZ 'Язык (language) : ' - _mSetStrRus valLangEng, tmp_Counter : DZ 'English ' - _mSetStrRus valLangRus, tmp_Counter : DZ 'Русский ' - _mSetStrRus parMemTest, tmp_Counter : DZ 'Тестирование памяти : ' - _mSetStrRus valDisabled, tmp_Counter : DZ 'Отключено' - _mSetStrRus valEnabled, tmp_Counter : DZ 'Включено ' - _mSetStrRus parSaveRAMdrvs, tmp_Counter : DZ 'Сохранение RAM-дисков : ' - _mSetStrRus parUpdBios, tmp_Counter : DZ 'Обновление BIOS : ' - _mSetStrRus parStartDelay, tmp_Counter : DZ 'Начальное ожидание : ' - _mSetStrRus valShort, tmp_Counter : DZ 'Короткое ' - _mSetStrRus valLong, tmp_Counter : DZ 'Длинное ' - _mSetStrRus parTypRate, tmp_Counter : DZ 'Скорость автоповтора : ' - _mSetStrRus val_6, tmp_Counter : DZ '6 ' - _mSetStrRus val_8, tmp_Counter : DZ '8 ' - _mSetStrRus val_10, tmp_Counter : DZ '10' - _mSetStrRus val_12, tmp_Counter : DZ '12' - _mSetStrRus val_15, tmp_Counter : DZ '15' - _mSetStrRus val_20, tmp_Counter : DZ '20' - _mSetStrRus val_24, tmp_Counter : DZ '24' - _mSetStrRus val_30, tmp_Counter : DZ '30' - _mSetStrRus parTypDelay, tmp_Counter : DZ 'Задержка автоповтора (Мсек): ' - _mSetStrRus val_250, tmp_Counter : DZ '250 ' - _mSetStrRus val_500, tmp_Counter : DZ '500 ' - _mSetStrRus val_750, tmp_Counter : DZ '750 ' - _mSetStrRus val_1000, tmp_Counter : DZ '1000' - _mSetStrRus parRebootMsg, tmp_Counter : DZ 'Сообщение о перезагрузке : ' - _mSetStrRus parSysDsk, tmp_Counter : DZ 'Системный диск : ' - _mSetStrRus val1stFDD, tmp_Counter : DZ '1-ый FDD' - _mSetStrRus val2ndFDD, tmp_Counter : DZ '2-ой FDD' - _mSetStrRus val1stIDE, tmp_Counter : DZ '1-ый IDE' - _mSetStrRus val2ndIDE, tmp_Counter : DZ '2-ой IDE' - _mSetStrRus val3rdIDE, tmp_Counter : DZ '3-ий IDE' - _mSetStrRus val4thIDE, tmp_Counter : DZ '4-ый IDE' - _mSetStrRus valRamDsk, tmp_Counter : DZ 'RAM-DISK' - _mSetStrRus valRecovery, tmp_Counter : DZ 'RECOVERY' - _mSetStrRus parAltSysDsk, tmp_Counter : DZ 'Алт. Системный диск : ' - _mSetStrRus parFddFirst, tmp_Counter : DZ 'FDD первый : ' - _mSetStrRus valAuto, tmp_Counter : DZ 'Авто ' -; _mSetStrRus val720, tmp_Counter : DZ '720K ' -; _mSetStrRus val1440, tmp_Counter : DZ '1.44M ' - _mSetStrRus valDash6, tmp_Counter : DZ '------' - _mSetStrRus parFddSecond, tmp_Counter : DZ 'FDD второй : ' - _mSetStrRus parPriIdeMA, tmp_Counter : DZ 'Primary IDE Master',#FF,' : ' - _mSetStrRus valSetup, tmp_Counter : DZ 'Setup ' - _mSetStrRus valCdRom, tmp_Counter : DZ 'CD-ROM' - _mSetStrRus parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave',#FF,' : ' - _mSetStrRus parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master',#FF,' : ' - _mSetStrRus parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave',#FF,' : ' -; IF HDDwriteProtect -; _mSetStrRus parHddWrPr, tmp_Counter : DZ 'Защита записи на HDD : ' -; ENDIF - _mSetStrRus parScreenY, tmp_Counter : DZ 'Сдвиг экрана по Y : ' - _mSetStrRus valMinus7, tmp_Counter : DZ '-7' - _mSetStrRus valMinus6, tmp_Counter : DZ '-6' - _mSetStrRus valMinus5, tmp_Counter : DZ '-5' - _mSetStrRus valMinus4, tmp_Counter : DZ '-4' - _mSetStrRus valMinus3, tmp_Counter : DZ '-3' - _mSetStrRus valMinus2, tmp_Counter : DZ '-2' - _mSetStrRus valMinus1, tmp_Counter : DZ '-1' - _mSetStrRus val_0, tmp_Counter : DZ ' 0' - _mSetStrRus valPlus1, tmp_Counter : DZ '+1' - _mSetStrRus valPlus2, tmp_Counter : DZ '+2' - _mSetStrRus valPlus3, tmp_Counter : DZ '+3' - _mSetStrRus valPlus4, tmp_Counter : DZ '+4' - _mSetStrRus valPlus5, tmp_Counter : DZ '+5' - _mSetStrRus valPlus6, tmp_Counter : DZ '+6' - _mSetStrRus valPlus7, tmp_Counter : DZ '+7' - _mSetStrRus parScreenX, tmp_Counter : DZ 'Сдвиг экрана по X : ' - _mSetStrRus parFrameInt, tmp_Counter : DZ 'Кадровое прерывание : ' - _mSetStrRus valDash8, tmp_Counter : DZ '--------' - _mSetStrRus valScorpion, tmp_Counter : DZ 'Скорпион' - _mSetStrRus valPentagon, tmp_Counter : DZ 'Пентагон' - _mSetStrRus valSpectrum, tmp_Counter : DZ 'Спектрум' - _mSetStrRus parVSync, tmp_Counter : DZ 'Верт. синхронизация : ' - _mSetStrRus val312_50, tmp_Counter : DZ '312/50Гц' - _mSetStrRus val320_49, tmp_Counter : DZ '320/49Гц' - _mSetStrRus parQuickStartROM, tmp_Counter : DZ 'Запуск в режиме : ' - _mSetStrRus valQuickStartSP, tmp_Counter : DZ 'Спринтер' - _mSetStrRus valDefault, tmp_Counter : DZ 'По умолчанию' - _mSetStrRus valFDD, tmp_Counter : DZ 'FDD ' - _mSetStrRus valHDD, tmp_Counter : DZ 'HDD ' - _mSetStrRus parTrDosA, tmp_Counter : DZ 'TR DOS A:> : ' - _mSetStrRus parTrDosB, tmp_Counter : DZ 'TR DOS B:> : ' - _mSetStrRus parTrDosC, tmp_Counter : DZ 'TR DOS C:> : ' - _mSetStrRus parTrDosD, tmp_Counter : DZ 'TR DOS D:> : ' - _mSetStrRus parPlayStartUpSound, tmp_Counter : DZ 'Стартовый звук : ' - _mSetStrRus parLoadZXroms, tmp_Counter : DZ 'Загружать ZX ПЗУ : ' - _mSetStrRus valLoadZXromsManually, tmp_Counter : DZ 'Вручную ' - _mSetStrRus valLoadZXromsFlag, tmp_Counter : DZ 'По флагу ZX ' - _mSetStrRus valLoadZXromsCAD, tmp_Counter : DZ 'При рестарте' -; - _mSetStrRus parQS_SetUpHardware, tmp_Counter : DZ 'Режим ZX : ' - _mSetStrRus valSprinterZX, tmp_Counter : DZ 'Спринтер ZX ' - _mSetStrRus valPentagon48, tmp_Counter : DZ 'Пентагон 48 ' - _mSetStrRus valPentagon128, tmp_Counter : DZ 'Пентагон 128' - _mSetStrRus valPentagon512, tmp_Counter : DZ 'Пентагон 512' - _mSetStrRus valScorpion256, tmp_Counter : DZ 'Скорпион 256' - _mSetStrRus valZXSpectrum48, tmp_Counter : DZ 'Спектрум 48 ' - _mSetStrRus valZXSpectrum128, tmp_Counter : DZ 'Спектрум 128' -; - _mSetStrRus parQS_SetUpZxRom, tmp_Counter : DZ 'Старт режима ZX в : ' - _mSetStrRus valQS_SetUpBasic128, tmp_Counter : DZ 'Basic 128' - _mSetStrRus valQS_SetUpBasic48p, tmp_Counter : DZ 'Basic 48+' - _mSetStrRus valQS_SetUpTrDos, tmp_Counter : DZ 'TR-DOS ' - _mSetStrRus valQS_SetUpExp, tmp_Counter : DZ 'Expansion' - _mSetStrRus valQS_SetUpTrDos48, tmp_Counter : DZ 'TR-DOS 48' - _mSetStrRus valQS_SetUpBasic48, tmp_Counter : DZ 'Basic 48 ' -; _mSetStrRus valLoadZXromsAuto, tmp_Counter : DZ 'При вызове ' - IF NEW_FEATURE - _mSetStrRus parSetTime, tmp_Counter : DZ 'Дата и время : ' - _mSetStrRus valFolder, tmp_Counter : DB 16,'ВВОД',17,0 - ENDIF - IF BETA_BUILD > 0 - _mSetStrRus extBIOSmsg, tmp_Counter : DZ 'Тестовая сборка! ',BUILD_DATE,', ',__TIME__ - ELSE - _mSetStrRus extBIOSmsg, tmp_Counter : DZ 'Релиз ',RELEASE_BUILD_DATE - ENDIF -; -MSG_RUS: - _mCreateMsgAddrTable -MSG_RUS.size EQU $-MSG_RUS -;================================================================================================================================== - ASSERT MSG_ENG.size = MSG_RUS.size, "ERROR IN MESSAGE STRINGS: RUS and ENG do not match" -MSG_TABLE.Size EQU MSG_RUS.size + +; OnChangeAction: +; .setLang EQU 1 +; .nothing EQU 2 +; .setXYpos EQU 3 +; .setInt EQU 4 +; .setVsinc EQU 5 + + LUA ALLPASS + function get_key_for_value(t, value) + for column=1,2 do + for line,name in pairs(t[column]) do + if name==value then return column,line end + end + end + return nil + end + + function DeleteValueByDEFINE (t,zero_def,value) + if tonumber(sj.get_define(zero_def)) then + local delCol, delLine = get_key_for_value(t, value) + table.remove (t[delCol], delLine) + end + end + ENDLUA + + LUA PASS1 + SettingsTabsOrder = { + [1]={ + "Lang", -- 1 + "SaveRAMdrvs", -- 2 + "StartDelay", -- 3 + "RebootMsg", -- 4 + "SysDsk", -- 5 + "AltSysDsk", -- 6 + "FddFirst", -- 7 + "FddSecond", -- 8 + "PriIdeMA", -- 9 + "PriIdeSl", -- 10 + "SecIdeMA", -- 11 + "SecIdeSl", -- 12 + "ScreenY", -- 13 + "ScreenX", -- 14 + "FrameInt", -- 15 + "VSync", -- 16 + "QuickStartROM", -- 17 + "MemTest", -- DEFINES.INC --> UnusedSettingsFeatures + "UpdBios", -- DEFINES.INC --> UnusedSettingsFeatures + "TypRate", -- DEFINES.INC --> UnusedSettingsFeatures + "TypDelay", -- DEFINES.INC --> UnusedSettingsFeatures + }, + [2]={ + "PlayStartUpSound", -- 1 + "LoadZXroms", -- 2 + "QS_SetUpHardware", -- 3 + "QS_SetUpZxRom", -- 4 + "TrDosA", -- 5 + "TrDosB", -- 6 + "TrDosC", -- 7 + "TrDosD", -- 8 + "SetTime", -- 9 DEFINES.INC --> NEW_FEATUREDEFINES.INC --> HDDwriteProtect + --"HddWrPr", -- 10 DEFINES.INC --> HDDwriteProtect + -- 11 + -- 12 + -- 13 + -- 14 + -- 15 + -- 16 + -- 17 + } + } + DeleteValueByDEFINE(SettingsTabsOrder,"NEW_FEATURE","SetTime") + --DeleteValueByDEFINE(SettingsTabsOrder,"HDDwriteProtect","HddWrPr") + DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","MemTest") + DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","UpdBios") + DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","TypRate") + DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","TypDelay") + -- DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","") + -- DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","") + ENDLUA +; + +; + MACRO _mSETitemParams itemName? +@.itemName? EQU $ + DEFINE TmpDef itemName? + LUA ALLPASS + local tmpName = sj.get_define("TmpDef") + local column,line = get_key_for_value(SettingsTabsOrder, tmpName) + if (column == nil or line == nil) then sj.error("Settings Tab not found",tmpName) end + if column == 1 then column = _c("firstColumn") else column = _c("secondColumn") end + sj.insert_define("columnNum", column) + sj.insert_define("lineNum", (_c("firstLine")+line-1)) + sj.insert_define("paramName", "msgStrings.par" .. tmpName) + ENDLUA + UNDEFINE TmpDef + ENDM +; + + MACRO _mCreateSettingsItemsTabsAddrs + LUA ALLPASS + for i = 1, #SettingsTabsOrder do + for j = 1, #SettingsTabsOrder[i] do + _pc("DW " .. _c("SettingsItemsTabs." .. SettingsTabsOrder[i][j])) + end + end + ENDLUA + +; создаёт такую структуру: +; DW SettingsItemsTabs.FirstItem +; DW .. +; DW SettingsItemsTabs.LastItem + ENDM + + MACRO _mCreateMsgAddrTable ; !FIXIT доделать на приём параметра "msgRusStrings.msg_", а лучше внутри самому определять эту метку + LUA ALLPASS + for i = 0, _c("tmp_Counter")-1, 1 do + _pc("WORD " .. "msgRusStrings.msg_" .. i) + end + ENDLUA + +; создаёт такую структуру: +; WORD msgRusStrings.msg_0 +; .. +; WORD msgRusStrings.msg_XX ; XX = tmp_Counter + ENDM + +;----------------------------[Settings items table]----------------------------[v] + +; + IF NEW_FEATURE +; New structure for procedure with IY reg + STRUCT MenusItem +Action WORD +Type BYTE +Column BYTE +Line BYTE +Name BYTE +CMOSreg BYTE +ValueMask BYTE +ValueMax BYTE +FirstString BYTE + ENDS + +paramLine EQU 0 +folderLine EQU 1 + + ENDIF +; + +firstColumn EQU 03 ; смещение по X для первого столбца +secondColumn EQU 43 ; смещение по X для второго столбца +firstLine EQU 07 ; смещение по Y для первой строки + +SettingsItemsTabs: + + _mSETitemParams Lang + DW OnChangeAction.setLang ; действие при изменении + IF NEW_FEATURE : DB paramLine : ENDIF ; тип параметра (строка со значением или каталог) + DB columnNum,lineNum ; столбец, строка + DB paramName ; Название параметра + DW CMOS_CELL.BootUpParams.Mask.Language : DB %0000'0100 ; CMOS : MASK + DB msgStrings.valLangEng ; 1-й вариант параметра + DB msgStrings.valLangRus ; 2-й вариант параметра + + + IF UnusedSettingsFeatures ; !TODO + _mSETitemParams MemTest + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.BootUpParams.Mask.MemTest : DB %1000'0000 + DB msgStrings.valDisabled + DB msgStrings.valEnabled + ENDIF + + _mSETitemParams SaveRAMdrvs + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.BootUpParams.Mask.SaveRAMdisks : DB %0100'0000 + DB msgStrings.valDisabled + DB msgStrings.valEnabled + + IF UnusedSettingsFeatures ; !TODO + _mSETitemParams UpdBios + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.BootUpParams.Mask.UpdBios : DB %0010'0000 + DB msgStrings.valDisabled + DB msgStrings.valEnabled + ENDIF + + _mSETitemParams StartDelay + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.BootUpParams.Mask.StartDelay : DB %0001'0000 + DB msgStrings.valDisabled + DB msgStrings.valShort + DB msgStrings.valLong + + IF UnusedSettingsFeatures ; !TODO + _mSETitemParams TypRate + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.Typematic.Mask.Rate : DB %0000'0111 + DB msgStrings.val_6 + DB msgStrings.val_8 + DB msgStrings.val_10 + DB msgStrings.val_12 + DB msgStrings.val_15 + DB msgStrings.val_20 + DB msgStrings.val_24 + DB msgStrings.val_30 + ENDIF + + IF UnusedSettingsFeatures ; !TODO + _mSETitemParams TypDelay + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.Typematic.Mask.Delay : DB %0110'0000 + DB msgStrings.val_250 + DB msgStrings.val_500 + DB msgStrings.val_750 + DB msgStrings.val_1000 + ENDIF + + _mSETitemParams RebootMsg + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.Options.Mask.RebootMSG : DB %0000'0010 + DB msgStrings.valDisabled + DB msgStrings.valEnabled + + _mSETitemParams SysDsk + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.BootDrives.Mask.SysDisk : DB %0000'0111 + DB msgStrings.val1stFDD + DB msgStrings.val2ndFDD + DB msgStrings.val1stIDE + DB msgStrings.val2ndIDE + DB msgStrings.val3rdIDE + DB msgStrings.val4thIDE + DB msgStrings.valRamDsk + DB msgStrings.valRecovery + + _mSETitemParams AltSysDsk + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.BootDrives.Mask.AltSysDisk : DB %0111'0000 + DB msgStrings.val1stFDD + DB msgStrings.val2ndFDD + DB msgStrings.val1stIDE + DB msgStrings.val2ndIDE + DB msgStrings.val3rdIDE + DB msgStrings.val4thIDE + DB msgStrings.valRamDsk + DB msgStrings.valRecovery + + _mSETitemParams FddFirst + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.DrivesSetup_1.Mask.FirstFDD : DB %0000'0000 + DB msgStrings.valAuto + ; DB msgStrings.val720 + ; DB msgStrings.val1440 + ; DB msgStrings.valDash6 + + _mSETitemParams FddSecond + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.DrivesSetup_1.Mask.SecondFDD : DB %0000'0000 + DB msgStrings.valAuto + ; DB msgStrings.val720 + ; DB msgStrings.val1440 + ; DB msgStrings.valDash6 + + _mSETitemParams PriIdeMA + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.DrivesSetup_1.Mask.PriIDEmaster : DB %0011'0000 + DB msgStrings.valAuto + DB msgStrings.valSetup + DB msgStrings.valCdRom + DB msgStrings.valDash6 + + _mSETitemParams PriIdeSl + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.DrivesSetup_1.Mask.PriIDEslave : DB %1100'0000 + DB msgStrings.valAuto + DB msgStrings.valSetup + DB msgStrings.valCdRom + DB msgStrings.valDash6 + + _mSETitemParams SecIdeMA + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.DrivesSetup_2.Mask.SecIDEmaster : DB %0011'0000 + DB msgStrings.valAuto + DB msgStrings.valSetup + DB msgStrings.valCdRom + DB msgStrings.valDash6 + + _mSETitemParams SecIdeSl + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.DrivesSetup_2.Mask.SecIDEslave : DB %1100'0000 + DB msgStrings.valAuto + DB msgStrings.valSetup + DB msgStrings.valCdRom + DB msgStrings.valDash6 + + ; IF HDDwriteProtect + ; _mSETitemParams HddWrPr + ; DW OnChangeAction.nothing + ; IF NEW_FEATURE : DB paramLine : ENDIF + ; DB columnNum,lineNum + ; DB paramName + ; DW CMOS_CELL.Options.Mask.HDDwriteProtect : DB %0000'0001 + ; DB msgStrings.valDisabled + ; DB msgStrings.valEnabled + ; ENDIF + + _mSETitemParams ScreenY + DW OnChangeAction.setXYpos + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.ScreenPosition.Mask.X : DB %1110'0000 + DB msgStrings.valMinus7 + DB msgStrings.valMinus6 + DB msgStrings.valMinus5 + DB msgStrings.valMinus4 + DB msgStrings.valMinus3 + DB msgStrings.valMinus2 + DB msgStrings.valMinus1 + DB msgStrings.val_0 + DB msgStrings.valPlus1 + DB msgStrings.valPlus2 + DB msgStrings.valPlus3 + DB msgStrings.valPlus4 + DB msgStrings.valPlus5 + DB msgStrings.valPlus6 + DB msgStrings.valPlus7 + + _mSETitemParams ScreenX + DW OnChangeAction.setXYpos + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.ScreenPosition.Mask.Y : DB %0000'1110 + DB msgStrings.valPlus7 + DB msgStrings.valPlus6 + DB msgStrings.valPlus5 + DB msgStrings.valPlus4 + DB msgStrings.valPlus3 + DB msgStrings.valPlus2 + DB msgStrings.valPlus1 + DB msgStrings.val_0 + DB msgStrings.valMinus1 + DB msgStrings.valMinus2 + DB msgStrings.valMinus3 + DB msgStrings.valMinus4 + DB msgStrings.valMinus5 + DB msgStrings.valMinus6 + DB msgStrings.valMinus7 + + _mSETitemParams FrameInt + DW OnChangeAction.setInt + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.ScreenSET.Mask.Int : DB %0011'0000 + DB msgStrings.valDash8 + DB msgStrings.valScorpion + DB msgStrings.valPentagon + DB msgStrings.valSpectrum + + _mSETitemParams VSync + DW OnChangeAction.setVsinc + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.ScreenSET.Mask.Sinc : DB %1000'0000 + DB msgStrings.valDash8 + DB msgStrings.val312_50 + DB msgStrings.val320_49 + + _mSETitemParams QuickStartROM + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.BootUpParams.Mask.QuickStartROM : DB %0000'0001 + DB msgStrings.valQuickStartSP + DB msgStrings.valSpectrum + + + _mSETitemParams QS_SetUpZxRom + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.QuickStartSetUp.Mask.ZxRom : DB %0000'0101 + DB msgStrings.valQS_SetUpBasic128 + DB msgStrings.valQS_SetUpBasic48p + DB msgStrings.valQS_SetUpTrDos + DB msgStrings.valQS_SetUpExp + DB msgStrings.valQS_SetUpTrDos48 + DB msgStrings.valQS_SetUpBasic48 + + _mSETitemParams QS_SetUpHardware + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.QuickStartSetUp.Mask.Hardware : DB %0011'0000 + DB msgStrings.valSprinterZX + DB msgStrings.valPentagon48 + DB msgStrings.valPentagon128 + DB msgStrings.valPentagon512 + DB msgStrings.valScorpion256 + DB msgStrings.valZXSpectrum48 + DB msgStrings.valZXSpectrum128 + + + _mSETitemParams TrDosA + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.TRDOSmount.Mask.A : DB %0000'0010 + DB msgStrings.valDefault + DB msgStrings.valFDD + DB msgStrings.valHDD + + _mSETitemParams TrDosB + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.TRDOSmount.Mask.B : DB %0000'1000 + DB msgStrings.valDefault + DB msgStrings.valFDD + DB msgStrings.valHDD + + _mSETitemParams TrDosC + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.TRDOSmount.Mask.C : DB %0010'0000 + DB msgStrings.valDefault + DB msgStrings.valFDD + DB msgStrings.valHDD + + _mSETitemParams TrDosD + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.TRDOSmount.Mask.D : DB %1000'0000 + DB msgStrings.valDefault + DB msgStrings.valFDD + DB msgStrings.valHDD + + _mSETitemParams LoadZXroms + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.Options.Mask.LoadZXroms : DB %0000'1000 + DB msgStrings.valLoadZXromsManually + DB msgStrings.valLoadZXromsFlag + DB msgStrings.valLoadZXromsCAD + + _mSETitemParams PlayStartUpSound + DW OnChangeAction.nothing + IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum + DB paramName + DW CMOS_CELL.BootUpParams.Mask.BootSound : DB %0000'0010 + DB msgStrings.valDisabled + DB msgStrings.valEnabled + + IF NEW_FEATURE + _mSETitemParams SetTime + DW OnChangeAction.SetTime + DB folderLine + DB columnNum,lineNum + DB paramName + DB #00,%0000'0000,%0000'0000 + DB msgStrings.valFolder + ENDIF +;--------------------[Items Addresses table]--------------------[] +SettingsItemsTabsAddrs: + _mCreateSettingsItemsTabsAddrs +.max EQU ($-SettingsItemsTabsAddrs)/2 + + ; db on-change routine addr + ; db X,Y + ; db string-name number + ; db CMOS, MASK + ; db string-value number 1, .. , string-value number XX +;----------------------------------------------------------------[] + +;----------------------------[Settings items table]----------------------------[^] + +; +; !TODO добавить экспорт создаваемых переменных в отдельный файл для справки + MACRO _mSetStr Suffix?, Num? +@.Suffix? EQU Num? + LUA ALLPASS + _pl("@.msg_" .. _c("Num?")) + ENDLUA +!tmp_Counter = tmp_Counter + 1 + ENDM +; +; + +; +; !TODO добавить экспорт создаваемых переменных в отдельный файл для справки + MACRO _mSetStrRus Suffix?, Num? + DEFINE TmpDef Suffix? + LUA ALLPASS + if (_c("msgStrings." .. sj.get_define("TmpDef"))) ~= _c("Num?") then + sj.error("Sequence matching between Russian and English strings is broken!!!") + else + _pl("@.msg_" .. _c("Num?")) + end + ENDLUA + UNDEFINE TmpDef +!tmp_Counter = tmp_Counter + 1 + ENDM +; +; +; +;================================================================================================================================== +; Не менять бездумно название метки msgStrings !!! Участвует в LUA макросе в этом же файле. +tmp_Counter DEFL 0 +msgStrings: + _mSetStr copyRightPeters, tmp_Counter : DZ 'Copyright (c) 2002 Peters Plus' + _mSetStr copyRightSPTeam, tmp_Counter : DZ 'Copyright (c) 2009-', SPTeam_year, ' Sprinter Team' + _mSetStr setupBiosVer, tmp_Counter : DZ 'Sprinter BIOS v', BIOS_ver_string + _mSetStr setupCopyRight, tmp_Counter : DZ 'Copyright (c) 2002 Peters Plus, (c) 2009-', SPTeam_year, ' Sprinter Team' + _mSetStr setupUtilityVer, tmp_Counter : DZ 'SETUP Utility v', SetupVer + _mSetStr setupHelpStr1, tmp_Counter : DZ 'ESC : Quit F10 : Save & Exit Setup' + _mSetStr setupHelpStr2, tmp_Counter : DZ 'F2 : Save Values ',24,32,25,32,26,32,27,' : Select Item' ; коды стрелок вместе с пробелами: 24,32,25,32,26,32,27 + _mSetStr setupHelpStr3, tmp_Counter : DZ 'F5 : Old Values PU/PD/+/- : Modify' + _mSetStr setupHelpStr4, tmp_Counter : DZ 'F7 : Default Values F3 : Color ' + _mSetStr toSetupButton, tmp_Counter : DZ ' to enter SETUP' +;_mSetStr forCtrlBootButton, tmp_Counter : DZ ' for Recovery boot' + _mSetStr forAltBootButton, tmp_Counter : DZ ' for Alternative boot' + _mSetStr cmosChecksumErr, tmp_Counter : DZ 'WARNING! CMOS CHECKSUM ERROR, DEFAULT VALUES SET!' + _mSetStr cmosDateTimeErr, tmp_Counter : DZ 'WARNING! CMOS DATE/TIME ERROR, DEFAULT VALUES SET!' + _mSetStr detectIdePrMA, tmp_Counter : DZ ' Detecting IDE Primary Master ... [Press F4 to skip]' + _mSetStr detectIdePrSL, tmp_Counter : DZ ' Detecting IDE Primary Slave ... [Press F4 to skip]' + _mSetStr detectIdeSecMA, tmp_Counter : DZ ' Detecting IDE Secondary Master ... [Press F4 to skip]' + _mSetStr detectIdeSecSL, tmp_Counter : DZ ' Detecting IDE Secondary Slave ... [Press F4 to skip]' + _mSetStr ideUnknown, tmp_Counter : DZ 'Unknown ' + _mSetStr ideNone, tmp_Counter : DZ 'None ' + _mSetStr ideSkiped, tmp_Counter : DZ 'Skipped ' + _mSetStr ideFail, tmp_Counter : DZ 'Fail ' ; !FIXIT strFail + _mSetStr spModel, tmp_Counter : DZ 'Model : ' +.str_ACEX_MODEL EQU $$$+7 ; указатель на строку ниже для патча апдейтером + _mSetStr spCNFver, tmp_Counter : DZ 'Core 1K30 : v' + _mSetStr spMemory, tmp_Counter : DZ 'Memory : ' + _mSetStr cmosFound, tmp_Counter : DZ 'CMOS : Found' + _mSetStr cmosNone, tmp_Counter : DZ 'CMOS : None' + _mSetStr memoryAvailable, tmp_Counter : DZ 'Available : ' +; _mSetStr unknownSTR1, tmp_Counter : DZ "7" +; _mSetStr unknownSTR2, tmp_Counter : DZ "8" + _mSetStr boardID, tmp_Counter : DZ 'Board ID : ' + _mSetStr bootFdd, tmp_Counter : DZ 'Boot from Diskette' +; _mSetStr bootHdd, tmp_Counter : DZ 'Boot from Hard disk ' + _mSetStr bootHdd, tmp_Counter : DZ 'Boot from HDD ' + _mSetStr bootCd, tmp_Counter : DZ 'Boot from CD-ROM ' + _mSetStr bootRamDrv, tmp_Counter : DZ 'Boot from RAM disk' + _mSetStr bootRecovery, tmp_Counter : DZ 'Starting recovery' + _mSetStr bootAltDrv, tmp_Counter : DZ 'Alternative ' + _mSetStr bootFail, tmp_Counter : DZ ' fail' ; !FIXIT strFail + _mSetStr bootOk, tmp_Counter : DZ ' OK' + _mSetStr afterBootFail, tmp_Counter : DZ 'PRESS TO REBOOT, TO ENTER SETUP OR TO ZX-MODE . . .' + _mSetStr errorZXmode, tmp_Counter : DZ 'Error! Spectrum mode launch failed. Press CTRL+ALT+DEL or RESET.' +; + _mSetStr parLang, tmp_Counter : DZ 'Language (язык) : ' + _mSetStr valLangEng, tmp_Counter : DZ 'English ' + _mSetStr valLangRus, tmp_Counter : DZ 'Русский ' + _mSetStr parMemTest, tmp_Counter : DZ 'Memory test : ' + _mSetStr valDisabled, tmp_Counter : DZ 'Disabled' + _mSetStr valEnabled, tmp_Counter : DZ 'Enabled ' + _mSetStr parSaveRAMdrvs, tmp_Counter : DZ 'Save RAM-disks : ' + _mSetStr parUpdBios, tmp_Counter : DZ 'Update BIOS : ' + _mSetStr parStartDelay, tmp_Counter : DZ 'Start delay : ' + _mSetStr valShort, tmp_Counter : DZ 'Short ' + _mSetStr valLong, tmp_Counter : DZ 'Long ' + _mSetStr parTypRate, tmp_Counter : DZ 'Typematic rate (chars/sec) : ' + _mSetStr val_6, tmp_Counter : DZ '6 ' + _mSetStr val_8, tmp_Counter : DZ '8 ' + _mSetStr val_10, tmp_Counter : DZ '10' + _mSetStr val_12, tmp_Counter : DZ '12' + _mSetStr val_15, tmp_Counter : DZ '15' + _mSetStr val_20, tmp_Counter : DZ '20' + _mSetStr val_24, tmp_Counter : DZ '24' + _mSetStr val_30, tmp_Counter : DZ '30' + _mSetStr parTypDelay, tmp_Counter : DZ 'Typematic delay (Msec) : ' + _mSetStr val_250, tmp_Counter : DZ '250 ' + _mSetStr val_500, tmp_Counter : DZ '500 ' + _mSetStr val_750, tmp_Counter : DZ '750 ' + _mSetStr val_1000, tmp_Counter : DZ '1000' + _mSetStr parRebootMsg, tmp_Counter : DZ 'Reboot message : ' + _mSetStr parSysDsk, tmp_Counter : DZ 'System disk : ' + _mSetStr val1stFDD, tmp_Counter : DZ '1-st FDD' + _mSetStr val2ndFDD, tmp_Counter : DZ '2-nd FDD' + _mSetStr val1stIDE, tmp_Counter : DZ '1-st IDE' + _mSetStr val2ndIDE, tmp_Counter : DZ '2-nd IDE' + _mSetStr val3rdIDE, tmp_Counter : DZ '3-rd IDE' + _mSetStr val4thIDE, tmp_Counter : DZ '4-th IDE' + _mSetStr valRamDsk, tmp_Counter : DZ 'RAM-DISK' + _mSetStr valRecovery, tmp_Counter : DZ 'RECOVERY' + _mSetStr parAltSysDsk, tmp_Counter : DZ 'Alt. system disk : ' + _mSetStr parFddFirst, tmp_Counter : DZ 'FDD first : ' + _mSetStr valAuto, tmp_Counter : DZ 'Auto ' +; _mSetStr val720, tmp_Counter : DZ '720K ' +; _mSetStr val1440, tmp_Counter : DZ '1.44M ' + _mSetStr valDash6, tmp_Counter : DZ '------' + _mSetStr parFddSecond, tmp_Counter : DZ 'FDD second : ' + _mSetStr parPriIdeMA, tmp_Counter : DZ 'Primary IDE Master',#FF,' : ' + _mSetStr valSetup, tmp_Counter : DZ 'Setup ' + _mSetStr valCdRom, tmp_Counter : DZ 'CD-ROM' + _mSetStr parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave',#FF,' : ' + _mSetStr parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master',#FF,' : ' + _mSetStr parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave',#FF,' : ' +; IF HDDwriteProtect +; _mSetStr parHddWrPr, tmp_Counter : DZ 'HDD write protect : ' +; ENDIF + _mSetStr parScreenY, tmp_Counter : DZ 'Y-screen position : ' + _mSetStr valMinus7, tmp_Counter : DZ '-7' + _mSetStr valMinus6, tmp_Counter : DZ '-6' + _mSetStr valMinus5, tmp_Counter : DZ '-5' + _mSetStr valMinus4, tmp_Counter : DZ '-4' + _mSetStr valMinus3, tmp_Counter : DZ '-3' + _mSetStr valMinus2, tmp_Counter : DZ '-2' + _mSetStr valMinus1, tmp_Counter : DZ '-1' + _mSetStr val_0, tmp_Counter : DZ ' 0' + _mSetStr valPlus1, tmp_Counter : DZ '+1' + _mSetStr valPlus2, tmp_Counter : DZ '+2' + _mSetStr valPlus3, tmp_Counter : DZ '+3' + _mSetStr valPlus4, tmp_Counter : DZ '+4' + _mSetStr valPlus5, tmp_Counter : DZ '+5' + _mSetStr valPlus6, tmp_Counter : DZ '+6' + _mSetStr valPlus7, tmp_Counter : DZ '+7' + _mSetStr parScreenX, tmp_Counter : DZ 'X-screen position : ' + _mSetStr parFrameInt, tmp_Counter : DZ 'Frame interrupt : ' + _mSetStr valDash8, tmp_Counter : DZ '--------' + _mSetStr valScorpion, tmp_Counter : DZ 'Scorpion' + _mSetStr valPentagon, tmp_Counter : DZ 'Pentagon' + _mSetStr valSpectrum, tmp_Counter : DZ 'Spectrum' + _mSetStr parVSync, tmp_Counter : DZ 'V-synchronization : ' + _mSetStr val312_50, tmp_Counter : DZ '312/50Hz' + _mSetStr val320_49, tmp_Counter : DZ '320/49Hz' + _mSetStr parQuickStartROM, tmp_Counter : DZ 'Run in mode : ' + _mSetStr valQuickStartSP, tmp_Counter : DZ 'Sprinter' + _mSetStr valDefault, tmp_Counter : DZ 'Default' + _mSetStr valFDD, tmp_Counter : DZ 'FDD ' ; ????? подумать какие варианты возможны + _mSetStr valHDD, tmp_Counter : DZ 'HDD ' ; ????? подумать какие варианты возможны + _mSetStr parTrDosA, tmp_Counter : DZ 'TR DOS A:> : ' + _mSetStr parTrDosB, tmp_Counter : DZ 'TR DOS B:> : ' + _mSetStr parTrDosC, tmp_Counter : DZ 'TR DOS C:> : ' + _mSetStr parTrDosD, tmp_Counter : DZ 'TR DOS D:> : ' + _mSetStr parPlayStartUpSound, tmp_Counter : DZ 'Startup sound : ' + _mSetStr parLoadZXroms, tmp_Counter : DZ 'Load ZX ROMs : ' + _mSetStr valLoadZXromsManually, tmp_Counter : DZ 'Manually ' + _mSetStr valLoadZXromsFlag, tmp_Counter : DZ 'By ZX flag' + _mSetStr valLoadZXromsCAD, tmp_Counter : DZ 'On restart' +; + _mSetStr parQS_SetUpHardware, tmp_Counter : DZ 'ZX Mode : ' + _mSetStr valSprinterZX, tmp_Counter : DZ 'Sprinter ZX ' + _mSetStr valPentagon48, tmp_Counter : DZ 'Pentagon 48 ' + _mSetStr valPentagon128, tmp_Counter : DZ 'Pentagon 128' + _mSetStr valPentagon512, tmp_Counter : DZ 'Pentagon 512' + _mSetStr valScorpion256, tmp_Counter : DZ 'Scorpion 256' + _mSetStr valZXSpectrum48, tmp_Counter : DZ 'Spectrum 48 ' + _mSetStr valZXSpectrum128, tmp_Counter : DZ 'Spectrum 128' +; + _mSetStr parQS_SetUpZxRom, tmp_Counter : DZ 'ZX Mode start in : ' + _mSetStr valQS_SetUpBasic128, tmp_Counter : DZ 'Basic 128' + _mSetStr valQS_SetUpBasic48p, tmp_Counter : DZ 'Basic 48+' + _mSetStr valQS_SetUpTrDos, tmp_Counter : DZ 'TR-DOS ' + _mSetStr valQS_SetUpExp, tmp_Counter : DZ 'Expansion' + _mSetStr valQS_SetUpTrDos48, tmp_Counter : DZ 'TR-DOS 48' + _mSetStr valQS_SetUpBasic48, tmp_Counter : DZ 'Basic 48 ' +; _mSetStrRus valLoadZXromsAuto, tmp_Counter : DZ 'On call ' + IF NEW_FEATURE + _mSetStr parSetTime, tmp_Counter : DZ 'Date and time setup : ' + _mSetStr valFolder, tmp_Counter : DB 16,'ENTER',17,0 + ENDIF + IF BETA_BUILD > 0 + _mSetStr extBIOSmsg, tmp_Counter : DZ 'Test build! ',BUILD_DATE,', ',__TIME__ + ELSE + _mSetStr extBIOSmsg, tmp_Counter : DZ 'Release ',RELEASE_BUILD_DATE + ENDIF +; + +MSG_ENG: ; !FIXIT подставить макрос _mCreateMsgAddrTable который надо доделать на приём параметра "msgStrings.msg_" или "msgRusStrings.msg_" + LUA ALLPASS + for i = 0, _c("tmp_Counter")-1, 1 do + _pc("WORD " .. "msgStrings.msg_" .. i) + end + ENDLUA +/* + WORD msgStrings.msg_0 + .. + WORD msgStrings.msg_XX ; XX = tmp_Counter +*/ +MSG_ENG.size EQU $-MSG_ENG +;================================================================================================================================== + +;================================================================================================================================== +tmp_Counter = 0 +msgRusStrings: + _mSetStrRus copyRightPeters, tmp_Counter : DZ 'Copyright (c) 2002 Peters Plus' + _mSetStrRus copyRightSPTeam, tmp_Counter : DZ 'Copyright (c) 2009-', SPTeam_year, ' Sprinter Team' + _mSetStrRus setupBiosVer, tmp_Counter : DZ 'Sprinter BIOS v', BIOS_ver_string + _mSetStrRus setupCopyRight, tmp_Counter : DZ 'Copyright (c) 2002 Peters Plus, (c) 2009-', SPTeam_year, ' Sprinter Team' + _mSetStrRus setupUtilityVer, tmp_Counter : DZ 'SETUP Utility v', SetupVer + _mSetStrRus setupHelpStr1, tmp_Counter : DZ 'ESC : Выйти F10 : Сохранить и выйти' + _mSetStrRus setupHelpStr2, tmp_Counter : DZ 'F2 : Сохранить значения ',24,32,25,32,26,32,27,' : Выбор пункта' + _mSetStrRus setupHelpStr3, tmp_Counter : DZ 'F5 : Старые значения PU/PD/+/- : Изменение' + _mSetStrRus setupHelpStr4, tmp_Counter : DZ 'F7 : Значения по умолчанию F3 : Цвета ' + _mSetStrRus toSetupButton, tmp_Counter : DZ ' для входа в SETUP' +;_mSetStrRus forCtrlBootButton, tmp_Counter : DZ ' для загрузки Recovery' + _mSetStrRus forAltBootButton, tmp_Counter : DZ ' для Альтернативной загрузки' + _mSetStrRus cmosChecksumErr, tmp_Counter : DZ 'ВНИМАНИЕ! ОШИБКА КОНТРОЛЬНОЙ СУММЫ CMOS, УСТАНОВЛЕНЫ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ' + _mSetStrRus cmosDateTimeErr, tmp_Counter : DZ 'ВНИМАНИЕ! ОШИБКА ДАТЫ/ВРЕМЕНИ CMOS, УСТАНОВЛЕНЫ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ' + _mSetStrRus detectIdePrMA, tmp_Counter : DZ ' Определяем Первичный IDE Master ... [F4 для пропуска] ' + _mSetStrRus detectIdePrSL, tmp_Counter : DZ ' Определяем Первичный IDE Slave ... [F4 для пропуска]' + _mSetStrRus detectIdeSecMA, tmp_Counter : DZ ' Определяем Вторичный IDE Master ... [F4 для пропуска]' + _mSetStrRus detectIdeSecSL, tmp_Counter : DZ ' Определяем Вторичный IDE Slave ... [F4 для пропуска]' + _mSetStrRus ideUnknown, tmp_Counter : DZ 'Неизвестный ' + _mSetStrRus ideNone, tmp_Counter : DZ 'Нет ' + _mSetStrRus ideSkiped, tmp_Counter : DZ 'Пропущен ' + _mSetStrRus ideFail, tmp_Counter : DZ 'Не определён ' + _mSetStrRus spModel, tmp_Counter : DZ 'Модель : ' +.str_ACEX_MODEL EQU $$$+7 ; указатель на строку ниже для патча апдейтером ; !FIXIT ? вытягивать через FN_CRIPT.Acex_ver ? + _mSetStrRus spCNFver, tmp_Counter : DZ 'Ядро 1K30 : v' + _mSetStrRus spMemory, tmp_Counter : DZ 'Память : ' + _mSetStrRus cmosFound, tmp_Counter : DZ 'CMOS : Найден' + _mSetStrRus cmosNone, tmp_Counter : DZ 'CMOS : Нет' + _mSetStrRus memoryAvailable, tmp_Counter : DZ 'Доступно : ' +; _mSetStrRus unknownSTR1, tmp_Counter : DZ '7' +; _mSetStrRus unknownSTR2, tmp_Counter : DZ '8' + _mSetStrRus boardID, tmp_Counter : DZ 'ID платы : ' + _mSetStrRus bootFdd, tmp_Counter : DZ 'Запуск с дискеты' + _mSetStrRus bootHdd, tmp_Counter : DZ 'Запуск с HDD ' + _mSetStrRus bootCd, tmp_Counter : DZ 'Запуск с CD-ROM ' + _mSetStrRus bootRamDrv, tmp_Counter : DZ 'Запуск с RAM диска' + _mSetStrRus bootRecovery, tmp_Counter : DZ 'Запуск восстановления' + _mSetStrRus bootAltDrv, tmp_Counter : DZ 'Альтернативный ' + _mSetStrRus bootFail, tmp_Counter : DZ ' невозможен' + _mSetStrRus bootOk, tmp_Counter : DZ ' OK' + _mSetStrRus afterBootFail, tmp_Counter : DZ 'НАЖМИТЕ ДЛЯ ПЕРЕЗАГРУЗКИ, ДЛЯ НАСТРОЕК ИЛИ ДЛЯ ZX-MODE . . .' + _mSetStrRus errorZXmode, tmp_Counter : DZ 'Ошибка! Запуск режима Spectrum не удался. Нажмите CTRL+ALT+DEL или RESET.' +; + _mSetStrRus parLang, tmp_Counter : DZ 'Язык (language) : ' + _mSetStrRus valLangEng, tmp_Counter : DZ 'English ' + _mSetStrRus valLangRus, tmp_Counter : DZ 'Русский ' + _mSetStrRus parMemTest, tmp_Counter : DZ 'Тестирование памяти : ' + _mSetStrRus valDisabled, tmp_Counter : DZ 'Отключено' + _mSetStrRus valEnabled, tmp_Counter : DZ 'Включено ' + _mSetStrRus parSaveRAMdrvs, tmp_Counter : DZ 'Сохранение RAM-дисков : ' + _mSetStrRus parUpdBios, tmp_Counter : DZ 'Обновление BIOS : ' + _mSetStrRus parStartDelay, tmp_Counter : DZ 'Начальное ожидание : ' + _mSetStrRus valShort, tmp_Counter : DZ 'Короткое ' + _mSetStrRus valLong, tmp_Counter : DZ 'Длинное ' + _mSetStrRus parTypRate, tmp_Counter : DZ 'Скорость автоповтора : ' + _mSetStrRus val_6, tmp_Counter : DZ '6 ' + _mSetStrRus val_8, tmp_Counter : DZ '8 ' + _mSetStrRus val_10, tmp_Counter : DZ '10' + _mSetStrRus val_12, tmp_Counter : DZ '12' + _mSetStrRus val_15, tmp_Counter : DZ '15' + _mSetStrRus val_20, tmp_Counter : DZ '20' + _mSetStrRus val_24, tmp_Counter : DZ '24' + _mSetStrRus val_30, tmp_Counter : DZ '30' + _mSetStrRus parTypDelay, tmp_Counter : DZ 'Задержка автоповтора (Мсек): ' + _mSetStrRus val_250, tmp_Counter : DZ '250 ' + _mSetStrRus val_500, tmp_Counter : DZ '500 ' + _mSetStrRus val_750, tmp_Counter : DZ '750 ' + _mSetStrRus val_1000, tmp_Counter : DZ '1000' + _mSetStrRus parRebootMsg, tmp_Counter : DZ 'Сообщение о перезагрузке : ' + _mSetStrRus parSysDsk, tmp_Counter : DZ 'Системный диск : ' + _mSetStrRus val1stFDD, tmp_Counter : DZ '1-ый FDD' + _mSetStrRus val2ndFDD, tmp_Counter : DZ '2-ой FDD' + _mSetStrRus val1stIDE, tmp_Counter : DZ '1-ый IDE' + _mSetStrRus val2ndIDE, tmp_Counter : DZ '2-ой IDE' + _mSetStrRus val3rdIDE, tmp_Counter : DZ '3-ий IDE' + _mSetStrRus val4thIDE, tmp_Counter : DZ '4-ый IDE' + _mSetStrRus valRamDsk, tmp_Counter : DZ 'RAM-DISK' + _mSetStrRus valRecovery, tmp_Counter : DZ 'RECOVERY' + _mSetStrRus parAltSysDsk, tmp_Counter : DZ 'Алт. Системный диск : ' + _mSetStrRus parFddFirst, tmp_Counter : DZ 'FDD первый : ' + _mSetStrRus valAuto, tmp_Counter : DZ 'Авто ' +; _mSetStrRus val720, tmp_Counter : DZ '720K ' +; _mSetStrRus val1440, tmp_Counter : DZ '1.44M ' + _mSetStrRus valDash6, tmp_Counter : DZ '------' + _mSetStrRus parFddSecond, tmp_Counter : DZ 'FDD второй : ' + _mSetStrRus parPriIdeMA, tmp_Counter : DZ 'Primary IDE Master',#FF,' : ' + _mSetStrRus valSetup, tmp_Counter : DZ 'Setup ' + _mSetStrRus valCdRom, tmp_Counter : DZ 'CD-ROM' + _mSetStrRus parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave',#FF,' : ' + _mSetStrRus parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master',#FF,' : ' + _mSetStrRus parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave',#FF,' : ' +; IF HDDwriteProtect +; _mSetStrRus parHddWrPr, tmp_Counter : DZ 'Защита записи на HDD : ' +; ENDIF + _mSetStrRus parScreenY, tmp_Counter : DZ 'Сдвиг экрана по Y : ' + _mSetStrRus valMinus7, tmp_Counter : DZ '-7' + _mSetStrRus valMinus6, tmp_Counter : DZ '-6' + _mSetStrRus valMinus5, tmp_Counter : DZ '-5' + _mSetStrRus valMinus4, tmp_Counter : DZ '-4' + _mSetStrRus valMinus3, tmp_Counter : DZ '-3' + _mSetStrRus valMinus2, tmp_Counter : DZ '-2' + _mSetStrRus valMinus1, tmp_Counter : DZ '-1' + _mSetStrRus val_0, tmp_Counter : DZ ' 0' + _mSetStrRus valPlus1, tmp_Counter : DZ '+1' + _mSetStrRus valPlus2, tmp_Counter : DZ '+2' + _mSetStrRus valPlus3, tmp_Counter : DZ '+3' + _mSetStrRus valPlus4, tmp_Counter : DZ '+4' + _mSetStrRus valPlus5, tmp_Counter : DZ '+5' + _mSetStrRus valPlus6, tmp_Counter : DZ '+6' + _mSetStrRus valPlus7, tmp_Counter : DZ '+7' + _mSetStrRus parScreenX, tmp_Counter : DZ 'Сдвиг экрана по X : ' + _mSetStrRus parFrameInt, tmp_Counter : DZ 'Кадровое прерывание : ' + _mSetStrRus valDash8, tmp_Counter : DZ '--------' + _mSetStrRus valScorpion, tmp_Counter : DZ 'Скорпион' + _mSetStrRus valPentagon, tmp_Counter : DZ 'Пентагон' + _mSetStrRus valSpectrum, tmp_Counter : DZ 'Спектрум' + _mSetStrRus parVSync, tmp_Counter : DZ 'Верт. синхронизация : ' + _mSetStrRus val312_50, tmp_Counter : DZ '312/50Гц' + _mSetStrRus val320_49, tmp_Counter : DZ '320/49Гц' + _mSetStrRus parQuickStartROM, tmp_Counter : DZ 'Запуск в режиме : ' + _mSetStrRus valQuickStartSP, tmp_Counter : DZ 'Спринтер' + _mSetStrRus valDefault, tmp_Counter : DZ 'По умолчанию' + _mSetStrRus valFDD, tmp_Counter : DZ 'FDD ' + _mSetStrRus valHDD, tmp_Counter : DZ 'HDD ' + _mSetStrRus parTrDosA, tmp_Counter : DZ 'TR DOS A:> : ' + _mSetStrRus parTrDosB, tmp_Counter : DZ 'TR DOS B:> : ' + _mSetStrRus parTrDosC, tmp_Counter : DZ 'TR DOS C:> : ' + _mSetStrRus parTrDosD, tmp_Counter : DZ 'TR DOS D:> : ' + _mSetStrRus parPlayStartUpSound, tmp_Counter : DZ 'Стартовый звук : ' + _mSetStrRus parLoadZXroms, tmp_Counter : DZ 'Загружать ZX ПЗУ : ' + _mSetStrRus valLoadZXromsManually, tmp_Counter : DZ 'Вручную ' + _mSetStrRus valLoadZXromsFlag, tmp_Counter : DZ 'По флагу ZX ' + _mSetStrRus valLoadZXromsCAD, tmp_Counter : DZ 'При рестарте' +; + _mSetStrRus parQS_SetUpHardware, tmp_Counter : DZ 'Режим ZX : ' + _mSetStrRus valSprinterZX, tmp_Counter : DZ 'Спринтер ZX ' + _mSetStrRus valPentagon48, tmp_Counter : DZ 'Пентагон 48 ' + _mSetStrRus valPentagon128, tmp_Counter : DZ 'Пентагон 128' + _mSetStrRus valPentagon512, tmp_Counter : DZ 'Пентагон 512' + _mSetStrRus valScorpion256, tmp_Counter : DZ 'Скорпион 256' + _mSetStrRus valZXSpectrum48, tmp_Counter : DZ 'Спектрум 48 ' + _mSetStrRus valZXSpectrum128, tmp_Counter : DZ 'Спектрум 128' +; + _mSetStrRus parQS_SetUpZxRom, tmp_Counter : DZ 'Старт режима ZX в : ' + _mSetStrRus valQS_SetUpBasic128, tmp_Counter : DZ 'Basic 128' + _mSetStrRus valQS_SetUpBasic48p, tmp_Counter : DZ 'Basic 48+' + _mSetStrRus valQS_SetUpTrDos, tmp_Counter : DZ 'TR-DOS ' + _mSetStrRus valQS_SetUpExp, tmp_Counter : DZ 'Expansion' + _mSetStrRus valQS_SetUpTrDos48, tmp_Counter : DZ 'TR-DOS 48' + _mSetStrRus valQS_SetUpBasic48, tmp_Counter : DZ 'Basic 48 ' +; _mSetStrRus valLoadZXromsAuto, tmp_Counter : DZ 'При вызове ' + IF NEW_FEATURE + _mSetStrRus parSetTime, tmp_Counter : DZ 'Дата и время : ' + _mSetStrRus valFolder, tmp_Counter : DB 16,'ВВОД',17,0 + ENDIF + IF BETA_BUILD > 0 + _mSetStrRus extBIOSmsg, tmp_Counter : DZ 'Тестовая сборка! ',BUILD_DATE,', ',__TIME__ + ELSE + _mSetStrRus extBIOSmsg, tmp_Counter : DZ 'Релиз ',RELEASE_BUILD_DATE + ENDIF +; +MSG_RUS: + _mCreateMsgAddrTable +MSG_RUS.size EQU $-MSG_RUS +;================================================================================================================================== + ASSERT MSG_ENG.size = MSG_RUS.size, "ERROR IN MESSAGE STRINGS: RUS and ENG do not match" +MSG_TABLE.Size EQU MSG_RUS.size ; \ No newline at end of file diff --git a/src/bios/rom/SETUP/startup_sound.asm b/bios/rom/SETUP/startup_sound.asm similarity index 95% rename from src/bios/rom/SETUP/startup_sound.asm rename to bios/rom/SETUP/startup_sound.asm index f4980ea..acecb83 100644 --- a/src/bios/rom/SETUP/startup_sound.asm +++ b/bios/rom/SETUP/startup_sound.asm @@ -1,164 +1,164 @@ -; CODE BY Александр -=TmK deMarche=- -; play frame -; use: af,hl,de,bc 251 -STARTUP_SOUND: LD HL,.BYTE_POS - LD A,(HL) - LD C,SP_SND.AY - ; - AND A - JR NZ,.no_init - ; - LD DE,7*256 + %0011'1011 - LD B,high SP_SND.AY.CTRL - OUT (C),D - LD B,high SP_SND.AY.DATA - OUT (C),E - ; -.no_init: CP .volDataSize - JR C,.play - ;-- mus off -.mute: XOR A - LD E,A -.offLp: CALL .set_regs - CP 14 - JR NZ,.offLp - ; - LD A,7 - DEC E - CALL .set_regs - RET - ; -.play: ; - ;--- set tone - LD HL,(.WORD_TONE) - ;A=0 - LD A,4 ;REG C -.playToneLp: LD B,high SP_SND.AY.CTRL - OUT (C),A - LD B,high SP_SND.AY.DATA + 1 - OUTI - INC A - CP 6 - JR NZ,.playToneLp - ; - LD (.WORD_TONE),HL - ;--- set volume -.playVol: LD HL,(.WORD_VOL) - LD A,10 - LD E,(HL) - INC HL -.playVolLp: CALL .set_regs - ; - LD (.WORD_VOL),HL - LD HL,.BYTE_POS - INC (HL) - RET - ; ; -.set_regs: LD B,high SP_SND.AY.CTRL - OUT (C),A - LD B,high SP_SND.AY.DATA - OUT (C),E - INC A - RET -;----------------------------------------------------------------------- -.BYTE_POS: DB 0 -.WORD_VOL: DW .volData -.WORD_TONE: DW .toneData -;----------------------------------------------------------------------- -.toneData: DW #022, #044, #088, #110, #220, #440 - DW #880, #440, #220, #110, #088, #044 - DW #022, #044, #088, #110, #220, #440 - DW #880, #440, #220, #110, #088, #044 - DW #022 -.volData: DB #02, #04, #06, #08, #0A, #0C - DB #0E, #0D, #0C, #0B, #0A, #09 - DB #08, #07, #06, #05, #04, #03 - DB #02, #06, #08, #0A, #0C, #0E - DB #0F -.volDataSize EQU $ - .volData - -.codeEnd: DISPLAY "StartUp Sound size: ",/A,.codeEnd - STARTUP_SOUND - - -/* -; CODE BY Александр -=TmK deMarche=- -; play frame -; use: af,hl,de,bc 251 -STARTUP_SOUND: LD HL,.BYTE_POS - LD A,(HL) - LD C,SP_SND.AY - ; - AND A - JR NZ,.no_init - ; - LD DE,7*256 + %0011'1011 - LD B,high SP_SND.AY.CTRL - OUT (C),D - LD B,high SP_SND.AY.DATA - OUT (C),E - ; -.no_init: CP .volDataSize - JR C,.play - ;-- mus off -.mute: XOR A - LD E,A -.offLp: CALL .set_regs - CP 14 - JR NZ,.offLp - ; - LD A,7 - DEC E - CALL .set_regs - RET - ; -.play: ; - ;--- set tone - LD HL,(.WORD_TONE) - ;A=0 - LD A,4 ;REG C -.playToneLp: LD B,high SP_SND.AY.CTRL - OUT (C),A - LD B,high SP_SND.AY.DATA + 1 - OUTI - INC A - CP 6 - JR NZ,.playToneLp - ; - LD (.WORD_TONE),HL - ;--- set volume -.playVol: LD HL,(.WORD_VOL) - LD A,10 - LD E,(HL) - INC HL -.playVolLp: CALL .set_regs - ; - LD (.WORD_VOL),HL - LD HL,.BYTE_POS - INC (HL) - RET - ; ; -.set_regs: LD B,high SP_SND.AY.CTRL - OUT (C),A - LD B,high SP_SND.AY.DATA - OUT (C),E - INC A - RET -;----------------------------------------------------------------------- -.BYTE_POS: DB 0 -.WORD_VOL: DW .volData -.WORD_TONE: DW .toneData -;----------------------------------------------------------------------- -.toneData: DW #022, #044, #088, #110, #220, #440 - DW #880, #440, #220, #110, #088, #044 - DW #022, #044, #088, #110, #220, #440 - DW #880, #440, #220, #110, #088, #044 - DW #022 -.volData: DB #02, #04, #06, #08, #0A, #0C - DB #0E, #0D, #0C, #0B, #0A, #09 - DB #08, #07, #06, #05, #04, #03 - DB #02, #06, #08, #0A, #0C, #0E - DB #0F -.volDataSize EQU $ - .volData - -.codeEnd: DISPLAY "StartUp Sound size: ",/A,.codeEnd - STARTUP_SOUND +; CODE BY Александр -=TmK deMarche=- +; play frame +; use: af,hl,de,bc 251 +STARTUP_SOUND: LD HL,.BYTE_POS + LD A,(HL) + LD C,SP_SND.AY + ; + AND A + JR NZ,.no_init + ; + LD DE,7*256 + %0011'1011 + LD B,high SP_SND.AY.CTRL + OUT (C),D + LD B,high SP_SND.AY.DATA + OUT (C),E + ; +.no_init: CP .volDataSize + JR C,.play + ;-- mus off +.mute: XOR A + LD E,A +.offLp: CALL .set_regs + CP 14 + JR NZ,.offLp + ; + LD A,7 + DEC E + CALL .set_regs + RET + ; +.play: ; + ;--- set tone + LD HL,(.WORD_TONE) + ;A=0 + LD A,4 ;REG C +.playToneLp: LD B,high SP_SND.AY.CTRL + OUT (C),A + LD B,high SP_SND.AY.DATA + 1 + OUTI + INC A + CP 6 + JR NZ,.playToneLp + ; + LD (.WORD_TONE),HL + ;--- set volume +.playVol: LD HL,(.WORD_VOL) + LD A,10 + LD E,(HL) + INC HL +.playVolLp: CALL .set_regs + ; + LD (.WORD_VOL),HL + LD HL,.BYTE_POS + INC (HL) + RET + ; ; +.set_regs: LD B,high SP_SND.AY.CTRL + OUT (C),A + LD B,high SP_SND.AY.DATA + OUT (C),E + INC A + RET +;----------------------------------------------------------------------- +.BYTE_POS: DB 0 +.WORD_VOL: DW .volData +.WORD_TONE: DW .toneData +;----------------------------------------------------------------------- +.toneData: DW #022, #044, #088, #110, #220, #440 + DW #880, #440, #220, #110, #088, #044 + DW #022, #044, #088, #110, #220, #440 + DW #880, #440, #220, #110, #088, #044 + DW #022 +.volData: DB #02, #04, #06, #08, #0A, #0C + DB #0E, #0D, #0C, #0B, #0A, #09 + DB #08, #07, #06, #05, #04, #03 + DB #02, #06, #08, #0A, #0C, #0E + DB #0F +.volDataSize EQU $ - .volData + +.codeEnd: DISPLAY "StartUp Sound size: ",/A,.codeEnd - STARTUP_SOUND + + +/* +; CODE BY Александр -=TmK deMarche=- +; play frame +; use: af,hl,de,bc 251 +STARTUP_SOUND: LD HL,.BYTE_POS + LD A,(HL) + LD C,SP_SND.AY + ; + AND A + JR NZ,.no_init + ; + LD DE,7*256 + %0011'1011 + LD B,high SP_SND.AY.CTRL + OUT (C),D + LD B,high SP_SND.AY.DATA + OUT (C),E + ; +.no_init: CP .volDataSize + JR C,.play + ;-- mus off +.mute: XOR A + LD E,A +.offLp: CALL .set_regs + CP 14 + JR NZ,.offLp + ; + LD A,7 + DEC E + CALL .set_regs + RET + ; +.play: ; + ;--- set tone + LD HL,(.WORD_TONE) + ;A=0 + LD A,4 ;REG C +.playToneLp: LD B,high SP_SND.AY.CTRL + OUT (C),A + LD B,high SP_SND.AY.DATA + 1 + OUTI + INC A + CP 6 + JR NZ,.playToneLp + ; + LD (.WORD_TONE),HL + ;--- set volume +.playVol: LD HL,(.WORD_VOL) + LD A,10 + LD E,(HL) + INC HL +.playVolLp: CALL .set_regs + ; + LD (.WORD_VOL),HL + LD HL,.BYTE_POS + INC (HL) + RET + ; ; +.set_regs: LD B,high SP_SND.AY.CTRL + OUT (C),A + LD B,high SP_SND.AY.DATA + OUT (C),E + INC A + RET +;----------------------------------------------------------------------- +.BYTE_POS: DB 0 +.WORD_VOL: DW .volData +.WORD_TONE: DW .toneData +;----------------------------------------------------------------------- +.toneData: DW #022, #044, #088, #110, #220, #440 + DW #880, #440, #220, #110, #088, #044 + DW #022, #044, #088, #110, #220, #440 + DW #880, #440, #220, #110, #088, #044 + DW #022 +.volData: DB #02, #04, #06, #08, #0A, #0C + DB #0E, #0D, #0C, #0B, #0A, #09 + DB #08, #07, #06, #05, #04, #03 + DB #02, #06, #08, #0A, #0C, #0E + DB #0F +.volDataSize EQU $ - .volData + +.codeEnd: DISPLAY "StartUp Sound size: ",/A,.codeEnd - STARTUP_SOUND */ \ No newline at end of file diff --git a/src/bios/rom/ZX/ZX_FUNC.ASM b/bios/rom/ZX/ZX_FUNC.ASM similarity index 100% rename from src/bios/rom/ZX/ZX_FUNC.ASM rename to bios/rom/ZX/ZX_FUNC.ASM diff --git a/src/bios/rom/ZX/ZX_MENU.ASM b/bios/rom/ZX/ZX_MENU.ASM similarity index 95% rename from src/bios/rom/ZX/ZX_MENU.ASM rename to bios/rom/ZX/ZX_MENU.ASM index d786c5d..26f31be 100644 --- a/src/bios/rom/ZX/ZX_MENU.ASM +++ b/bios/rom/ZX/ZX_MENU.ASM @@ -1,752 +1,752 @@ -; "MENU PROGRAMS." -;********************************* -; FOR INCLUDE !!! -;********************************* -; Обслуживание МЕНЮ -; HL - адрес таблицы программ -; A - номер в таблице -; если A=-1, то возврат, -; иначе выполнение -;***************************** -EXEC_PNT: - INC A - RET Z - ;!FIXIT почему не так? - ; DEC A - ; JR Z,EXEC_HL - ; LD D,0 - ; LD E,A - ; XOR A - ; ADC HL,DE - ; ADC HL,DE - ; -EXEC_PNT_LOOP: - DEC A - JR Z,EXEC_HL - INC HL - INC HL - JR EXEC_PNT_LOOP -EXEC_HL: - LD E,(HL) - INC HL - LD D,(HL) - INC HL - EX DE,HL - JP (HL) -RET_FROM_M: - POP HL - RET - -;**************************************** -; РАБОТА С MENU_128 -;**************************************** -; ВХОД: DE - адрес меню -; BC - длина меню -; ВЫХОД: A - выбранный пункт -;**************************************** -RUN_MENU: - PUSH IX - PUSH DE ; DE - MENU - PUSH BC ; BC - len_menu - - LD A,(DE) - DEC A ; число CMD - CP 9 ; !HARDCODE макисмальное число пунктов меню - JR C,RUN_M_1 -RUN_MN_ERR: - POP BC - POP DE - LD A,#FF ; вернуться с номером 255 - ошибка - POP IX - RET -RUN_M_1: - LD A,(ZX_VARS.PROG.SWAP_ROM) - CP #F5 ; сравнить А с опкодом PUSH AF - JR NZ,RUN_MN_ERR - - - LD HL,LEN_P_M - ADD HL,BC ; HL - нужная длина памяти - LD B,H ; HL -> BC - LD C,L - LD HL,(ZX_VARS.WORK_SPACE) ; HL - начало раб обл - - PUSH BC - PUSH HL - - CALL C_1655 ; получить рабочую память - - POP DE - PUSH DE ; начало раб обл - - LD BC,LEN_P_M ; длина программы меню - LD HL,MENU_128 ; сама программа - LDIR ; программа перемещена. DE - место для MENU - POP BC - PUSH BC ; начало программы - - PUSH DE ; сохранить место для MENU - LD DE,MN_128_S ; данные для shifter - CALL SHIFTER ; изменить данные в соответствии с положением в MEM - POP DE ; вернуть место для MENU - - POP HL ; начало программы - POP IX ; длина данных - POP BC ; длина меню - EX (SP),HL ; HL - меню - LDIR ; переместить данные MENU - - POP HL ; адрес программы MENU - PUSH HL - PUSH IX ; длина раб. обл - CALL JP_HL ; вызов программы MENU - POP BC ; вернуть длину раб обл - POP HL ; и начала программы - - PUSH AF ; сохранить номер выбора - CALL C_19E8 ; освободить память !! - POP AF ; вернуть номер выбора - POP IX - RET ; возврат из программы RUN_MENU -JP_HL: JP (HL) -;************************************** -; 128k MENU -;************************************** -;!HARDCODE -MENU_PROG EQU #25B9 ; #25B9 in sp_128.asm -;SWAP_ROM EQU #5B00 -NEW_SP EQU #1F45 ; L1F45: in sp_128.asm -RET_SP EQU #1F20 ; L1F20: in sp_128.asm - -;************************************** -; Программа вызова MENU_128 из ОЗУ. -;************************************** -MN_128_S: - DB SH_1 - MENU_128+1 - DB SH_2 - MENU_128+1 - DB SH_3 - MENU_128+1 - DB SH_4 - MENU_128+1 - DB SH_5 - MENU_128 - DB SH_6 - MENU_128 - DB SH_7 - MENU_128 - DB SH_8 - MENU_128 - DB SH_9 - MENU_128 - DB SH_A - MENU_128 - DB SH_B - MENU_128 - DB SH_C - MENU_128 - DB 0 -;************************************** -; Эта программа перемещается в озу -;************************************** -MENU_128: - XOR A - OUT (SYS_PORT.RAM),A - CALL ZX_VARS.PROG.SWAP_ROM - CALL NEW_SP - -SH_1: LD DE,MENU_DAT - MENU_128 - LD HL,ZX_VARS.MENU_TBL.JUMP - LD BC,4 - LDIR - -SH_2: LD HL,MENU_128_E - MENU_128 - LD (ZX_VARS.MENU_TBL.JUMP),HL -SH_3: LD HL,MENU_128_E2 - MENU_128 - LD (ZX_VARS.MENU_TBL.TEXT),HL - JP MENU_PROG - -RET_M EQU $-MENU_128 -SH_4: LD HL,MENU_DAT - MENU_128 - LD DE,ZX_VARS.MENU_TBL.JUMP - LD BC,4 - LDIR - - CALL RET_SP - CALL ZX_VARS.PROG.SWAP_ROM - EX AF,AF' - LD A,SYS_PORT.EXTENSION - OUT (SYS_PORT.ROM),A - EX AF,AF' - RET -MENU_DAT: - DW 0,0 -MENU_128_E: - DB 8 - DB 0 -SH_5: DW RET_M - DB 1 -SH_6: DW RET_M - DB 2 -SH_7: DW RET_M - DB 3 -SH_8: DW RET_M - DB 4 -SH_9: DW RET_M - DB 5 -SH_A: DW RET_M - DB 6 -SH_B: DW RET_M - DB 7 -SH_C: DW RET_M -MENU_128_E2: - -LEN_P_M EQU $-MENU_128 - -;************************************** -; RST 30 - получение BC SPACES с адреса HL -; #19E8 - освобождение BC spaces с адреса HL -; HL - раб. ячейка -; BC - адрес программы -; DE - адрес данных для перемещения -SHIFTER: - LD A,(DE) ; (DE) - SHIFT IN PROG - AND A - RET Z - INC DE - LD L,A - LD H,0 - - ADD HL,BC ; HL - ADRESS FOR SHIFT - LD A,(HL) ; (HL)=(HL)+BC - ADD A,C - LD (HL),A - INC HL - LD A,(HL) - ADC A,B - LD (HL),A - JR SHIFTER - -;******************************************* -; МЕНЮ : байт 1 - для результата -; байт 2 - число пунктов +1 -; название меню, код 0FFh ( COPY ) -; пункты меню окончание байтом с -; уст, 7-м битом + пустая строка !! -;******************************************* -BASIC_MENU: -; LD A,(HL) -; CP 'S' -; JP Z,SET_SYSTEM - - LD DE,(ZX_VARS.CH_ADR) - PUSH DE - LD (ZX_VARS.CH_ADR),HL - CALL_48X #1C8C ; SYMBOL VAR - CALL_48X #2BF1 ; input txt !!! - ; DE - adr - ; BC - len - PUSH DE - PUSH BC - INC DE - CALL TST_M - JR C,NO_EXE_M - CALL RUN_MENU - LD (IY+0),255 -NO_EXE_M: - POP BC - POP DE - LD (DE),A - POP HL - LD (ZX_VARS.CH_ADR),HL - JP SW_ROM -TST_M: - PUSH DE - PUSH BC - EX DE,HL - LD D,(HL) - INC D - LD A,255 - CPIR - JR NZ,ERR_TST_M -LOOP_TST_M: - LD A,B - OR C - JR Z,ERR_TST_M - - BIT 7,(HL) - INC HL - DEC BC - JR Z,LOOP_TST_M - DEC D - JR NZ,LOOP_TST_M - POP BC - POP DE - AND A - RET - -ERR_TST_M: - POP BC - POP DE - LD A,255 - SCF - RET - -;************************************** - -CALL_DOS_MOVE: - LD HL,DOS_PROG - LD DE,DOS_PROG.Exec - LD BC,DOS_PROG.Size - LDIR - RET -; -; HL - адрес команды, BC - длина команды -CALL_DOS1: - LD C,(HL) - INC HL - LD B,0 - LD DE,(ZX_VARS.E_LINE) - LD (ZX_VARS.CH_ADR),DE - LDIR - LD (ZX_VARS.WORK_SPACE),DE - LD (ZX_VARS.STK_BOT),DE - LD (ZX_VARS.STK_END),DE - CALL CALL_DOS_MOVE - JP DOS_PROG.Exec - -DOS_PROG: - DISP #5C00 - DOS_PROG.Size ;!HARDCODE - //DOS_PROG: -.Exec: PUSH AF - XOR A - OUT (SYS_PORT.RAM),A - POP AF - //DOS_PROG_A+1: -.Patch+2: CALL #3D03 ;!HARDCODE - PUSH AF - ;!FIXIT сделать через условие компиляции ZX_ROM_BIOS - //LD A,0 - //OUT (CNF_PORT),A - LD A,SYS_PORT.EXTENSION - OUT (SYS_PORT.ROM),A ;!!!!! версия для ПЗУ - POP AF - RET - //DOS_PROG_LEN -.Size EQU $ - .Exec - ENT - - ;????? вроде, не используются -CONT_PROG: - LD HL,#1AFD ;!HARDCODE COM_LN: - PUSH HL - LD HL,#5B00 ;!HARDCODE - PUSH HL - LD DE,ZX_VARS.FLG_INPUT - LD BC,1 - LD A,#E8 ;!HARDCODE - LD (DE),A - JP SW_ROM -CALL_DOS: - PUSH HL - PUSH DE - PUSH BC - PUSH AF - CALL CALL_DOS_MOVE - LD A,#13 ;!HARDCODE #13 из AUTO_1303 - LD (DOS_PROG.Patch),A - POP AF - POP BC - POP DE - POP HL - JP DOS_PROG.Exec - ; -; - -;=======================================================================; -;=======================================================================; -;=======================================================================; -SERVICE: - //LD HL,SR_TAB - LD DE,SR_MENU - LD BC,SR_MENU.Size - //PUSH HL - CALL RUN_MENU ;09f3 - LD HL,SR_TAB - //POP HL - CALL EXEC_PNT - JR SERVICE - -SR_TAB: DW RUN_DISK_TRD - DW GOTO_TRDOS.m128 - DW GOTO_TRDOS.m48 - DW TURBO_OFF - DW TURBO_ON - DW CLEAR_RAM - DW RET_FROM_M - -; DC - every last character of a string will have bit 7 set -SR_MENU: - BYTE 8 ; количество пунктов - BYTE 'Options ',#FF ; заголовок меню - DC 'RUN disk.trd' - DC '128 TR-DOS' - DC '48 TR-DOS' - DC 'TURBO OFF ' - DC 'TURBO ON ' - DC 'Clear RAM' - DC 'RETURN' - DC " " ; маркер конца -.Size EQU $-SR_MENU - -;***************************** - -;SR_48R: -GOTO_TRDOS: -.m128: LD A,#10 - JR .RUN -;SR_48: -.m48: LD A,#30 ; Стопор на PORT_128 !!! -;SR_48A: -.RUN: LD BC,#7FFD - OUT (C),A - LD BC,0 ; НА 0 !! - PUSH BC - LD BC,#3D2F ; В DOS ! - PUSH BC - JP SW_ROM - -;******************************* -TURBO_OFF: - LD A,BIOS.FN_TURBO.OFF - LD C,BIOS.FN_TURBO - JP_to_BIOS -TURBO_ON: - LD A,BIOS.FN_TURBO.ON - LD C,BIOS.FN_TURBO - JP_to_BIOS - -;******************************* - -CLEAR_RAM: - DI - ; [ ] free zx pages! - LD BC,BIOS.REINIT.FREE_NO_ZX_MEM - ;LD C,BIOS.FullInit - ; - CALL ToBIOS_FromEXT - ; при очистке памяти из меню спектрума возврат в DSS по CAD - ; будет опасным (RAM Blocks освободились), - ; поэтому отключаем перехват ресета. - LD A,ACEX.RET_PORT - LD BC,BIOS.SET_PORTS - ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 - ;CALL ToBIOS_3D13 - CALL ToBIOS_FromEXT - ; - EI - RET - - -;***************************** -; *** MENU Hardware *** -;***************************** - -Hardware_Menu: - LD HL,Hardware_Menu_TAB - LD DE,Hardware_Menu_STR - LD BC,Hardware_Menu_STR.Size - PUSH HL - CALL RUN_MENU - POP HL - CALL EXEC_PNT - JR Hardware_Menu - -Hardware_Menu_TAB: -; DW TR_DOS -; DW SP_DOS - DW SPRINTER_ZX - DW SCORPION_256 - DW Pentagon_48 - DW PENTAGON_128 - DW PENTAGON_512 - DW ZX_SPECTRUM_128 - DW SPRINTER_reset ;SPRINTER_2X - DW RET_FROM_M - -; DC - every last character of a string will have bit 7 set -Hardware_Menu_STR: - BYTE 9 ; количество пунктов - BYTE 'Hardware',#FF ; заголовок меню - DC 'Sprinter ZX ' - DC 'Scorpion 256' - DC 'Pentagon 48 ' - DC 'Pentagon 128' - DC 'Pentagon 512' - DC 'Spectrum 128' - DC 'Restart ' - DC 'RETURN' - DC " " ; маркер конца -.Size EQU $ - Hardware_Menu_STR - -;!TODO отключать 7FFD и 1FFD одновременно через отключение 1FFD в cnf_port -; и защелку в 7FFD иначе vROM подсунет страницу BASIC128. -; В зависимости от устанавливаемой карты портов выбирать карту для прописывания порта AY -; -;************************************************** -SPRINTER_ZX: LD L,0 ; точка входа в ПЗУ -.custom_ROM: LD H,BIOS.RST_CONF.SP97_1 - LD BC,#FE*256 + %0000'0010 ; = GOTO_SPEC reg B, reg A - LD DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 ; !HARDCODE 4 - выделение памяти Scorpion 256k. 2+6+8 страницы - JR PREPARE_TO_START_ZX - ; -ZX_SPECTRUM_128: - LD L,0 ; точка входа в ПЗУ -.custom_ROM: LD H,BIOS.RST_CONF.AY8910 - LD BC,#FA*256 + %1000'0011 ; = GOTO_SPEC reg B, reg A - JR PENTAGON_128.zx - ; -SCORPION_256: LD L,0 ; точка входа в ПЗУ -.custom_ROM: LD H,BIOS.RST_CONF.AY8910 - LD BC,#FE*256 + %1000'0001 ; = GOTO_SPEC reg B, reg A - LD DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_1 ; !HARDCODE 4 - выделение памяти Scorpion 256k. 2+6+8 страницы -PREPARE_TO_START_ZX: - DI - LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - OUT (SYS_PORT.ROM),A - LD A,SYS_PAGE - OUT (SLOT3),A - ; - PUSH HL - PUSH BC - PUSH DE - PUSH DE - ; - LD C,H - CALL ToBIOS_FromEXT - ; - POP DE - LD B,D - CALL MANAGE_ZX_PAGES.FN_ENTRANCE.API - JR C,.loop_rst - ; - POP DE - POP BC - POP HL - ; - LD D,L ; !HARDCODE точка входа в ПЗУ спектрума - ; LD H,A - ; LD A,(SYS_PAGE.Block_ID.vROM) - ; LD L,A - LD HL,(SYS_PAGE.Block_ID.vROM) - LD H,A - LD A,C - JP GOTO_SPECTRUM - ; -.loop_rst: LD BC,BIOS.REINIT.HARD_RESET - CALL ToBIOS_FromEXT - JR .loop_rst - ; -PENTAGON_128: LD L,0 ; точка входа в ПЗУ -.custom_ROM: LD H,BIOS.RST_CONF.AY8910 - LD BC,#FE*256 + %0000'0010 ; = GOTO_SPEC reg B, reg A -.zx: LD DE,2*256 + CNF_PORT.CNF_2 + CNF_PORT.TURBO.ON + CNF_PORT.SCORP_RESET ; !HARDCODE 2 - выделение памяти Pentagon 128 - JR PREPARE_TO_START_ZX - ; -PENTAGON_512: LD L,0 ; точка входа в ПЗУ -.custom_ROM: LD H,BIOS.RST_CONF.AY8910 - LD BC,#FE*256 + %0000'0010 ; = GOTO_SPEC reg B, reg A - LD DE,3*256 + CNF_PORT.CNF_2 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512 + CNF_PORT.SCORP_RESET ; !HARDCODE 3 - выделение памяти Pentagon 512 - JR PREPARE_TO_START_ZX - ; -Pentagon_48: LD L,0 ; точка входа в ПЗУ -.custom_ROM: LD H,BIOS.RST_CONF.AY8910 - LD BC,#FE*256 + %0000'0010 ; = GOTO_SPEC reg B, reg A -.zx: LD DE,1*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_2 ; !HARDCODE 1 - выделение памяти 48 кб - JR PREPARE_TO_START_ZX - ; -ZX_Spectrum_48: LD L,0 ; точка входа в ПЗУ -.custom_ROM: LD H,BIOS.RST_CONF.AY8910 - LD BC,#FA*256 + %1000'0011 ; = GOTO_SPEC reg B, reg A - JR Pentagon_48.zx - -SPRINTER_reset: - DI - LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - OUT (SYS_PORT.ROM),A - LD BC,BIOS.REINIT.SOFT_RESET - JP_to_BIOS - - -;***************************** -; *** MENU UTILITES *** -;***************************** -;!FIXIT BIOS SIZE. это запуск c:\disk.trd - не думаю, что это нужно, можно заменить -RUN_DISK_TRD: - LD HL,C_DISK_C - CALL CALL_DOS1 - - ; [ ] исправлен баг с запуском disk.trd с CNF != 0 - LD A,SYS_PORT.CNF_0 + SYS_PORT.EXTENSION - OUT (SYS_PORT.ROM),A - ; - - LD C,BIOS.HDD_INIT - CALL ToBIOS_FromEXT - JR C,.DISK_UTILIT - - LD HL,C_DISK_C3 - CALL CALL_DOS1 - -.UTIL_DISK: - XOR A - LD C,BIOS.FreeMemRMD - CALL ToBIOS_FromEXT - - LD HL,C_DEMO6 - CALL CALL_DOS1 - - XOR A - LD C,BIOS.GET_RAMD_ST - CALL ToBIOS_FromEXT - - JR C,.UTIL_DISK_L1 - JR Z,.UTIL_DISK_L1 - - LD HL,C_DISK_C1 - CALL CALL_DOS1 - ; [ ] исправлен баг с запуском disk.trd с CNF != 0 - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD A,(SYS_PAGE.CONFIG_DE.CNF_PORT) - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - OUT (SYS_PORT.ROM),A - ; - LD HL,C_DISK_C2 - CALL CALL_DOS1 - RET - -.UTIL_DISK_L1: - LD A,(ZX_VARS.OPER_DISK) - INC A - CP 2 - JR Z,.DISK_UTIL_RET - LD HL,C_DISK_C5 - CALL CALL_DOS1 - JR .UTIL_DISK - -.DISK_UTIL_RET: - LD HL,C_DISK_C6 - CALL CALL_DOS1 - RET - -.DISK_UTILIT: - LD HL,C_DISK_C4 - CALL CALL_DOS1 - JR .UTIL_DISK - -C_DEMO6: DB .Size, ZX_Token.rem, ':/disk.trd', 13,80 -.Size EQU $-C_DEMO6-1 - -C_DISK_C: DB .Size,ZX_Token.rem,':',13,80 -.Size EQU $-C_DISK_C-1 - -; C_DISK_C0: DB .Size,ZX_Token.rem,':/CLEAR E',13,80 -; .Size EQU $-C_DISK_C0-1 - -C_DISK_C1: DB .Size,ZX_Token.rem,':/RMD E',13,80 -.Size EQU $-C_DISK_C1-1 - -C_DISK_C2: DB .Size,ZX_Token.rem,':RUN',13,80 -.Size EQU $-C_DISK_C2-1 - -C_DISK_C3: DB .Size,ZX_Token.rem,':/HDD',13,80 -.Size EQU $-C_DISK_C3-1 - -C_DISK_C4: DB .Size,ZX_Token.rem,':/FDD',13,80 -.Size EQU $-C_DISK_C4-1 - -C_DISK_C5: DB .Size,ZX_Token.rem,':/B:',13,80 -.Size EQU $-C_DISK_C5-1 - -C_DISK_C6: DB .Size,ZX_Token.rem,':/A:',13,80 -.Size EQU $-C_DISK_C6-1 -; - -;*************************************** - -;VERSION: DEFB 22,21,0 -; DEFB 16,2,"Expansion 3.02  1997 ELSY Co.",16,1,0FFh - -;********************************************** - -;****************************** -;SP_DOS: -; LD B,#E2 -; LD A,#E1 -; JR TR_DOS1 -;TR_DOS: -; LD B,#EA -; LD A,#E1 -;TR_DOS1: -; CALL DOS_ON -; CALL SET_ROM_PAGES -; CALL DOS_OFF -; RET -;****************************** - - -; _SET_CNF: -; ;DI -; LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON -; OUT (SYS_PORT.ROM),A -; RET - -; CNF_SC_312: -; LD A,Port_VSYNC.SET_312L -; OUT (Port_VSYNC),A -; RET - -; CNF_PN_320: -; LD A,Port_VSYNC.SET_320L -; OUT (Port_VSYNC),A -; RET - -; LD A,CNF_0 -; OUT (SYS_PORT.ROM),A -; CALL DOS_OFF -; JP 0 - - -; DOS_RUN: LD HL,C_DISK_C1 -; CALL CALL_DOS1 -; ; -; LD HL,C_DISK_C2 -; CALL CALL_DOS1 -; RET - -; START_TRD: LD HL,C_DISK_C -; CALL CALL_DOS1 -; LD HL,C_DISK_C0 -; CALL CALL_DOS1 -; LD HL,C_DISK_C3 -; CALL CALL_DOS1 -; RET - -;SR_CL_MEM: -; DI -; LD A,10H -;SR_CL_R2: -; LD BC,1FFDH -; OUT (C),A -; EX AF,AF' -; XOR A -;SR_CL_R1: -; LD BC,7FFDH -; OUT (C),A -; LD HL,0C000H -; LD DE,0C001H -; LD BC,03FFFH -; LD (HL),L -; LDIR -; INC A -; CP 48H -; JR NZ,SR_CL_R1 -; EX AF,AF' -; CP 0 -; JP Z,BASIC_128 ; выход на сброс BASIC 128 -; LD A,0 -; JR SR_CL_R2 +; "MENU PROGRAMS." +;********************************* +; FOR INCLUDE !!! +;********************************* +; Обслуживание МЕНЮ +; HL - адрес таблицы программ +; A - номер в таблице +; если A=-1, то возврат, +; иначе выполнение +;***************************** +EXEC_PNT: + INC A + RET Z + ;!FIXIT почему не так? + ; DEC A + ; JR Z,EXEC_HL + ; LD D,0 + ; LD E,A + ; XOR A + ; ADC HL,DE + ; ADC HL,DE + ; +EXEC_PNT_LOOP: + DEC A + JR Z,EXEC_HL + INC HL + INC HL + JR EXEC_PNT_LOOP +EXEC_HL: + LD E,(HL) + INC HL + LD D,(HL) + INC HL + EX DE,HL + JP (HL) +RET_FROM_M: + POP HL + RET + +;**************************************** +; РАБОТА С MENU_128 +;**************************************** +; ВХОД: DE - адрес меню +; BC - длина меню +; ВЫХОД: A - выбранный пункт +;**************************************** +RUN_MENU: + PUSH IX + PUSH DE ; DE - MENU + PUSH BC ; BC - len_menu + + LD A,(DE) + DEC A ; число CMD + CP 9 ; !HARDCODE макисмальное число пунктов меню + JR C,RUN_M_1 +RUN_MN_ERR: + POP BC + POP DE + LD A,#FF ; вернуться с номером 255 - ошибка + POP IX + RET +RUN_M_1: + LD A,(ZX_VARS.PROG.SWAP_ROM) + CP #F5 ; сравнить А с опкодом PUSH AF + JR NZ,RUN_MN_ERR + + + LD HL,LEN_P_M + ADD HL,BC ; HL - нужная длина памяти + LD B,H ; HL -> BC + LD C,L + LD HL,(ZX_VARS.WORK_SPACE) ; HL - начало раб обл + + PUSH BC + PUSH HL + + CALL C_1655 ; получить рабочую память + + POP DE + PUSH DE ; начало раб обл + + LD BC,LEN_P_M ; длина программы меню + LD HL,MENU_128 ; сама программа + LDIR ; программа перемещена. DE - место для MENU + POP BC + PUSH BC ; начало программы + + PUSH DE ; сохранить место для MENU + LD DE,MN_128_S ; данные для shifter + CALL SHIFTER ; изменить данные в соответствии с положением в MEM + POP DE ; вернуть место для MENU + + POP HL ; начало программы + POP IX ; длина данных + POP BC ; длина меню + EX (SP),HL ; HL - меню + LDIR ; переместить данные MENU + + POP HL ; адрес программы MENU + PUSH HL + PUSH IX ; длина раб. обл + CALL JP_HL ; вызов программы MENU + POP BC ; вернуть длину раб обл + POP HL ; и начала программы + + PUSH AF ; сохранить номер выбора + CALL C_19E8 ; освободить память !! + POP AF ; вернуть номер выбора + POP IX + RET ; возврат из программы RUN_MENU +JP_HL: JP (HL) +;************************************** +; 128k MENU +;************************************** +;!HARDCODE +MENU_PROG EQU #25B9 ; #25B9 in sp_128.asm +;SWAP_ROM EQU #5B00 +NEW_SP EQU #1F45 ; L1F45: in sp_128.asm +RET_SP EQU #1F20 ; L1F20: in sp_128.asm + +;************************************** +; Программа вызова MENU_128 из ОЗУ. +;************************************** +MN_128_S: + DB SH_1 - MENU_128+1 + DB SH_2 - MENU_128+1 + DB SH_3 - MENU_128+1 + DB SH_4 - MENU_128+1 + DB SH_5 - MENU_128 + DB SH_6 - MENU_128 + DB SH_7 - MENU_128 + DB SH_8 - MENU_128 + DB SH_9 - MENU_128 + DB SH_A - MENU_128 + DB SH_B - MENU_128 + DB SH_C - MENU_128 + DB 0 +;************************************** +; Эта программа перемещается в озу +;************************************** +MENU_128: + XOR A + OUT (SYS_PORT.RAM),A + CALL ZX_VARS.PROG.SWAP_ROM + CALL NEW_SP + +SH_1: LD DE,MENU_DAT - MENU_128 + LD HL,ZX_VARS.MENU_TBL.JUMP + LD BC,4 + LDIR + +SH_2: LD HL,MENU_128_E - MENU_128 + LD (ZX_VARS.MENU_TBL.JUMP),HL +SH_3: LD HL,MENU_128_E2 - MENU_128 + LD (ZX_VARS.MENU_TBL.TEXT),HL + JP MENU_PROG + +RET_M EQU $-MENU_128 +SH_4: LD HL,MENU_DAT - MENU_128 + LD DE,ZX_VARS.MENU_TBL.JUMP + LD BC,4 + LDIR + + CALL RET_SP + CALL ZX_VARS.PROG.SWAP_ROM + EX AF,AF' + LD A,SYS_PORT.EXTENSION + OUT (SYS_PORT.ROM),A + EX AF,AF' + RET +MENU_DAT: + DW 0,0 +MENU_128_E: + DB 8 + DB 0 +SH_5: DW RET_M + DB 1 +SH_6: DW RET_M + DB 2 +SH_7: DW RET_M + DB 3 +SH_8: DW RET_M + DB 4 +SH_9: DW RET_M + DB 5 +SH_A: DW RET_M + DB 6 +SH_B: DW RET_M + DB 7 +SH_C: DW RET_M +MENU_128_E2: + +LEN_P_M EQU $-MENU_128 + +;************************************** +; RST 30 - получение BC SPACES с адреса HL +; #19E8 - освобождение BC spaces с адреса HL +; HL - раб. ячейка +; BC - адрес программы +; DE - адрес данных для перемещения +SHIFTER: + LD A,(DE) ; (DE) - SHIFT IN PROG + AND A + RET Z + INC DE + LD L,A + LD H,0 + + ADD HL,BC ; HL - ADRESS FOR SHIFT + LD A,(HL) ; (HL)=(HL)+BC + ADD A,C + LD (HL),A + INC HL + LD A,(HL) + ADC A,B + LD (HL),A + JR SHIFTER + +;******************************************* +; МЕНЮ : байт 1 - для результата +; байт 2 - число пунктов +1 +; название меню, код 0FFh ( COPY ) +; пункты меню окончание байтом с +; уст, 7-м битом + пустая строка !! +;******************************************* +BASIC_MENU: +; LD A,(HL) +; CP 'S' +; JP Z,SET_SYSTEM + + LD DE,(ZX_VARS.CH_ADR) + PUSH DE + LD (ZX_VARS.CH_ADR),HL + CALL_48X #1C8C ; SYMBOL VAR + CALL_48X #2BF1 ; input txt !!! + ; DE - adr + ; BC - len + PUSH DE + PUSH BC + INC DE + CALL TST_M + JR C,NO_EXE_M + CALL RUN_MENU + LD (IY+0),255 +NO_EXE_M: + POP BC + POP DE + LD (DE),A + POP HL + LD (ZX_VARS.CH_ADR),HL + JP SW_ROM +TST_M: + PUSH DE + PUSH BC + EX DE,HL + LD D,(HL) + INC D + LD A,255 + CPIR + JR NZ,ERR_TST_M +LOOP_TST_M: + LD A,B + OR C + JR Z,ERR_TST_M + + BIT 7,(HL) + INC HL + DEC BC + JR Z,LOOP_TST_M + DEC D + JR NZ,LOOP_TST_M + POP BC + POP DE + AND A + RET + +ERR_TST_M: + POP BC + POP DE + LD A,255 + SCF + RET + +;************************************** + +CALL_DOS_MOVE: + LD HL,DOS_PROG + LD DE,DOS_PROG.Exec + LD BC,DOS_PROG.Size + LDIR + RET +; +; HL - адрес команды, BC - длина команды +CALL_DOS1: + LD C,(HL) + INC HL + LD B,0 + LD DE,(ZX_VARS.E_LINE) + LD (ZX_VARS.CH_ADR),DE + LDIR + LD (ZX_VARS.WORK_SPACE),DE + LD (ZX_VARS.STK_BOT),DE + LD (ZX_VARS.STK_END),DE + CALL CALL_DOS_MOVE + JP DOS_PROG.Exec + +DOS_PROG: + DISP #5C00 - DOS_PROG.Size ;!HARDCODE + //DOS_PROG: +.Exec: PUSH AF + XOR A + OUT (SYS_PORT.RAM),A + POP AF + //DOS_PROG_A+1: +.Patch+2: CALL #3D03 ;!HARDCODE + PUSH AF + ;!FIXIT сделать через условие компиляции ZX_ROM_BIOS + //LD A,0 + //OUT (CNF_PORT),A + LD A,SYS_PORT.EXTENSION + OUT (SYS_PORT.ROM),A ;!!!!! версия для ПЗУ + POP AF + RET + //DOS_PROG_LEN +.Size EQU $ - .Exec + ENT + + ;????? вроде, не используются +CONT_PROG: + LD HL,#1AFD ;!HARDCODE COM_LN: + PUSH HL + LD HL,#5B00 ;!HARDCODE + PUSH HL + LD DE,ZX_VARS.FLG_INPUT + LD BC,1 + LD A,#E8 ;!HARDCODE + LD (DE),A + JP SW_ROM +CALL_DOS: + PUSH HL + PUSH DE + PUSH BC + PUSH AF + CALL CALL_DOS_MOVE + LD A,#13 ;!HARDCODE #13 из AUTO_1303 + LD (DOS_PROG.Patch),A + POP AF + POP BC + POP DE + POP HL + JP DOS_PROG.Exec + ; +; + +;=======================================================================; +;=======================================================================; +;=======================================================================; +SERVICE: + //LD HL,SR_TAB + LD DE,SR_MENU + LD BC,SR_MENU.Size + //PUSH HL + CALL RUN_MENU ;09f3 + LD HL,SR_TAB + //POP HL + CALL EXEC_PNT + JR SERVICE + +SR_TAB: DW RUN_DISK_TRD + DW GOTO_TRDOS.m128 + DW GOTO_TRDOS.m48 + DW TURBO_OFF + DW TURBO_ON + DW CLEAR_RAM + DW RET_FROM_M + +; DC - every last character of a string will have bit 7 set +SR_MENU: + BYTE 8 ; количество пунктов + BYTE 'Options ',#FF ; заголовок меню + DC 'RUN disk.trd' + DC '128 TR-DOS' + DC '48 TR-DOS' + DC 'TURBO OFF ' + DC 'TURBO ON ' + DC 'Clear RAM' + DC 'RETURN' + DC " " ; маркер конца +.Size EQU $-SR_MENU + +;***************************** + +;SR_48R: +GOTO_TRDOS: +.m128: LD A,#10 + JR .RUN +;SR_48: +.m48: LD A,#30 ; Стопор на PORT_128 !!! +;SR_48A: +.RUN: LD BC,#7FFD + OUT (C),A + LD BC,0 ; НА 0 !! + PUSH BC + LD BC,#3D2F ; В DOS ! + PUSH BC + JP SW_ROM + +;******************************* +TURBO_OFF: + LD A,BIOS.FN_TURBO.OFF + LD C,BIOS.FN_TURBO + JP_to_BIOS +TURBO_ON: + LD A,BIOS.FN_TURBO.ON + LD C,BIOS.FN_TURBO + JP_to_BIOS + +;******************************* + +CLEAR_RAM: + DI + ; [ ] free zx pages! + LD BC,BIOS.REINIT.FREE_NO_ZX_MEM + ;LD C,BIOS.FullInit + ; + CALL ToBIOS_FromEXT + ; при очистке памяти из меню спектрума возврат в DSS по CAD + ; будет опасным (RAM Blocks освободились), + ; поэтому отключаем перехват ресета. + LD A,ACEX.RET_PORT + LD BC,BIOS.SET_PORTS + ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 + ;CALL ToBIOS_3D13 + CALL ToBIOS_FromEXT + ; + EI + RET + + +;***************************** +; *** MENU Hardware *** +;***************************** + +Hardware_Menu: + LD HL,Hardware_Menu_TAB + LD DE,Hardware_Menu_STR + LD BC,Hardware_Menu_STR.Size + PUSH HL + CALL RUN_MENU + POP HL + CALL EXEC_PNT + JR Hardware_Menu + +Hardware_Menu_TAB: +; DW TR_DOS +; DW SP_DOS + DW SPRINTER_ZX + DW SCORPION_256 + DW Pentagon_48 + DW PENTAGON_128 + DW PENTAGON_512 + DW ZX_SPECTRUM_128 + DW SPRINTER_reset ;SPRINTER_2X + DW RET_FROM_M + +; DC - every last character of a string will have bit 7 set +Hardware_Menu_STR: + BYTE 9 ; количество пунктов + BYTE 'Hardware',#FF ; заголовок меню + DC 'Sprinter ZX ' + DC 'Scorpion 256' + DC 'Pentagon 48 ' + DC 'Pentagon 128' + DC 'Pentagon 512' + DC 'Spectrum 128' + DC 'Restart ' + DC 'RETURN' + DC " " ; маркер конца +.Size EQU $ - Hardware_Menu_STR + +;!TODO отключать 7FFD и 1FFD одновременно через отключение 1FFD в cnf_port +; и защелку в 7FFD иначе vROM подсунет страницу BASIC128. +; В зависимости от устанавливаемой карты портов выбирать карту для прописывания порта AY +; +;************************************************** +SPRINTER_ZX: LD L,0 ; точка входа в ПЗУ +.custom_ROM: LD H,BIOS.RST_CONF.SP97_1 + LD BC,#FE*256 + %0000'0010 ; = GOTO_SPEC reg B, reg A + LD DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 ; !HARDCODE 4 - выделение памяти Scorpion 256k. 2+6+8 страницы + JR PREPARE_TO_START_ZX + ; +ZX_SPECTRUM_128: + LD L,0 ; точка входа в ПЗУ +.custom_ROM: LD H,BIOS.RST_CONF.AY8910 + LD BC,#FA*256 + %1000'0011 ; = GOTO_SPEC reg B, reg A + JR PENTAGON_128.zx + ; +SCORPION_256: LD L,0 ; точка входа в ПЗУ +.custom_ROM: LD H,BIOS.RST_CONF.AY8910 + LD BC,#FE*256 + %1000'0001 ; = GOTO_SPEC reg B, reg A + LD DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_1 ; !HARDCODE 4 - выделение памяти Scorpion 256k. 2+6+8 страницы +PREPARE_TO_START_ZX: + DI + LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON + OUT (SYS_PORT.ROM),A + LD A,SYS_PAGE + OUT (SLOT3),A + ; + PUSH HL + PUSH BC + PUSH DE + PUSH DE + ; + LD C,H + CALL ToBIOS_FromEXT + ; + POP DE + LD B,D + CALL MANAGE_ZX_PAGES.FN_ENTRANCE.API + JR C,.loop_rst + ; + POP DE + POP BC + POP HL + ; + LD D,L ; !HARDCODE точка входа в ПЗУ спектрума + ; LD H,A + ; LD A,(SYS_PAGE.Block_ID.vROM) + ; LD L,A + LD HL,(SYS_PAGE.Block_ID.vROM) + LD H,A + LD A,C + JP GOTO_SPECTRUM + ; +.loop_rst: LD BC,BIOS.REINIT.HARD_RESET + CALL ToBIOS_FromEXT + JR .loop_rst + ; +PENTAGON_128: LD L,0 ; точка входа в ПЗУ +.custom_ROM: LD H,BIOS.RST_CONF.AY8910 + LD BC,#FE*256 + %0000'0010 ; = GOTO_SPEC reg B, reg A +.zx: LD DE,2*256 + CNF_PORT.CNF_2 + CNF_PORT.TURBO.ON + CNF_PORT.SCORP_RESET ; !HARDCODE 2 - выделение памяти Pentagon 128 + JR PREPARE_TO_START_ZX + ; +PENTAGON_512: LD L,0 ; точка входа в ПЗУ +.custom_ROM: LD H,BIOS.RST_CONF.AY8910 + LD BC,#FE*256 + %0000'0010 ; = GOTO_SPEC reg B, reg A + LD DE,3*256 + CNF_PORT.CNF_2 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512 + CNF_PORT.SCORP_RESET ; !HARDCODE 3 - выделение памяти Pentagon 512 + JR PREPARE_TO_START_ZX + ; +Pentagon_48: LD L,0 ; точка входа в ПЗУ +.custom_ROM: LD H,BIOS.RST_CONF.AY8910 + LD BC,#FE*256 + %0000'0010 ; = GOTO_SPEC reg B, reg A +.zx: LD DE,1*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_2 ; !HARDCODE 1 - выделение памяти 48 кб + JR PREPARE_TO_START_ZX + ; +ZX_Spectrum_48: LD L,0 ; точка входа в ПЗУ +.custom_ROM: LD H,BIOS.RST_CONF.AY8910 + LD BC,#FA*256 + %1000'0011 ; = GOTO_SPEC reg B, reg A + JR Pentagon_48.zx + +SPRINTER_reset: + DI + LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON + OUT (SYS_PORT.ROM),A + LD BC,BIOS.REINIT.SOFT_RESET + JP_to_BIOS + + +;***************************** +; *** MENU UTILITES *** +;***************************** +;!FIXIT BIOS SIZE. это запуск c:\disk.trd - не думаю, что это нужно, можно заменить +RUN_DISK_TRD: + LD HL,C_DISK_C + CALL CALL_DOS1 + + ; [ ] исправлен баг с запуском disk.trd с CNF != 0 + LD A,SYS_PORT.CNF_0 + SYS_PORT.EXTENSION + OUT (SYS_PORT.ROM),A + ; + + LD C,BIOS.HDD_INIT + CALL ToBIOS_FromEXT + JR C,.DISK_UTILIT + + LD HL,C_DISK_C3 + CALL CALL_DOS1 + +.UTIL_DISK: + XOR A + LD C,BIOS.FreeMemRMD + CALL ToBIOS_FromEXT + + LD HL,C_DEMO6 + CALL CALL_DOS1 + + XOR A + LD C,BIOS.GET_RAMD_ST + CALL ToBIOS_FromEXT + + JR C,.UTIL_DISK_L1 + JR Z,.UTIL_DISK_L1 + + LD HL,C_DISK_C1 + CALL CALL_DOS1 + ; [ ] исправлен баг с запуском disk.trd с CNF != 0 + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + LD A,(SYS_PAGE.CONFIG_DE.CNF_PORT) + EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + OUT (SYS_PORT.ROM),A + ; + LD HL,C_DISK_C2 + CALL CALL_DOS1 + RET + +.UTIL_DISK_L1: + LD A,(ZX_VARS.OPER_DISK) + INC A + CP 2 + JR Z,.DISK_UTIL_RET + LD HL,C_DISK_C5 + CALL CALL_DOS1 + JR .UTIL_DISK + +.DISK_UTIL_RET: + LD HL,C_DISK_C6 + CALL CALL_DOS1 + RET + +.DISK_UTILIT: + LD HL,C_DISK_C4 + CALL CALL_DOS1 + JR .UTIL_DISK + +C_DEMO6: DB .Size, ZX_Token.rem, ':/disk.trd', 13,80 +.Size EQU $-C_DEMO6-1 + +C_DISK_C: DB .Size,ZX_Token.rem,':',13,80 +.Size EQU $-C_DISK_C-1 + +; C_DISK_C0: DB .Size,ZX_Token.rem,':/CLEAR E',13,80 +; .Size EQU $-C_DISK_C0-1 + +C_DISK_C1: DB .Size,ZX_Token.rem,':/RMD E',13,80 +.Size EQU $-C_DISK_C1-1 + +C_DISK_C2: DB .Size,ZX_Token.rem,':RUN',13,80 +.Size EQU $-C_DISK_C2-1 + +C_DISK_C3: DB .Size,ZX_Token.rem,':/HDD',13,80 +.Size EQU $-C_DISK_C3-1 + +C_DISK_C4: DB .Size,ZX_Token.rem,':/FDD',13,80 +.Size EQU $-C_DISK_C4-1 + +C_DISK_C5: DB .Size,ZX_Token.rem,':/B:',13,80 +.Size EQU $-C_DISK_C5-1 + +C_DISK_C6: DB .Size,ZX_Token.rem,':/A:',13,80 +.Size EQU $-C_DISK_C6-1 +; + +;*************************************** + +;VERSION: DEFB 22,21,0 +; DEFB 16,2,"Expansion 3.02  1997 ELSY Co.",16,1,0FFh + +;********************************************** + +;****************************** +;SP_DOS: +; LD B,#E2 +; LD A,#E1 +; JR TR_DOS1 +;TR_DOS: +; LD B,#EA +; LD A,#E1 +;TR_DOS1: +; CALL DOS_ON +; CALL SET_ROM_PAGES +; CALL DOS_OFF +; RET +;****************************** + + +; _SET_CNF: +; ;DI +; LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON +; OUT (SYS_PORT.ROM),A +; RET + +; CNF_SC_312: +; LD A,Port_VSYNC.SET_312L +; OUT (Port_VSYNC),A +; RET + +; CNF_PN_320: +; LD A,Port_VSYNC.SET_320L +; OUT (Port_VSYNC),A +; RET + +; LD A,CNF_0 +; OUT (SYS_PORT.ROM),A +; CALL DOS_OFF +; JP 0 + + +; DOS_RUN: LD HL,C_DISK_C1 +; CALL CALL_DOS1 +; ; +; LD HL,C_DISK_C2 +; CALL CALL_DOS1 +; RET + +; START_TRD: LD HL,C_DISK_C +; CALL CALL_DOS1 +; LD HL,C_DISK_C0 +; CALL CALL_DOS1 +; LD HL,C_DISK_C3 +; CALL CALL_DOS1 +; RET + +;SR_CL_MEM: +; DI +; LD A,10H +;SR_CL_R2: +; LD BC,1FFDH +; OUT (C),A +; EX AF,AF' +; XOR A +;SR_CL_R1: +; LD BC,7FFDH +; OUT (C),A +; LD HL,0C000H +; LD DE,0C001H +; LD BC,03FFFH +; LD (HL),L +; LDIR +; INC A +; CP 48H +; JR NZ,SR_CL_R1 +; EX AF,AF' +; CP 0 +; JP Z,BASIC_128 ; выход на сброс BASIC 128 +; LD A,0 +; JR SR_CL_R2 diff --git a/src/bios/rom/_not_used/DEHRUST.asm b/bios/rom/_not_used/DEHRUST.asm similarity index 100% rename from src/bios/rom/_not_used/DEHRUST.asm rename to bios/rom/_not_used/DEHRUST.asm diff --git a/src/bios/rom/_not_used/EasterSprites.asm b/bios/rom/_not_used/EasterSprites.asm similarity index 100% rename from src/bios/rom/_not_used/EasterSprites.asm rename to bios/rom/_not_used/EasterSprites.asm diff --git a/src/bios/rom/_not_used/LZ4_DEC.asm b/bios/rom/_not_used/LZ4_DEC.asm similarity index 95% rename from src/bios/rom/_not_used/LZ4_DEC.asm rename to bios/rom/_not_used/LZ4_DEC.asm index f25c685..c52f738 100644 --- a/src/bios/rom/_not_used/LZ4_DEC.asm +++ b/bios/rom/_not_used/LZ4_DEC.asm @@ -1,157 +1,157 @@ -;------------------------------------------------------------------------------ -;hl=src de=dst -lz4decrunch: - ld bc,7 - add hl,bc - ld c,(hl) - inc hl - ld b,(hl) ;ДqДuДВДvД} ДtДrДp ДqДpДzДДДp ДyДx ДxДpДsДАД|ДАДrД{Дp - ДВДpДxД}ДuДВ - inc hl - inc hl - inc hl ;Д~ДpДЙДpД|ДА ДГДwДpДДДНДЗ ДtДpД~Д~ДНДЗ ДГДА ДГД}ДuДЛДuД~ДyДС #0B - - ld a,l - add a,c - ld (.endL+1),a - ld a,h - adc a,b - ld (.endH+1),a ;ДKДАД~ДuДЙД~ДНДz ДpДtДВДuДГ ДГДwДpДДДНДЗ ДtДpД~Д~ДНДЗ - -.loop: - ld a,(hl) - inc hl - ld (.litteral+1),a - and #F0 - jr z,.copy ;ДEДГД|Дy ДtД|ДyД~Дp ДВДpДrД~Дp 0, ДГД{ДАДБДyДВДАДrДpДДДО ДЕДwДu ДБДuДВДuДtДpД~Д~ДНДu ДtДpД~Д~ДНДu - rrca - rrca - rrca - rrca - ld b,0 - ld c,a - cp #0F - call z,.getlength ;ДEДГД|Дy ДtД|ДyД~Дp #0F, ДДДА ДБДАД|ДЕДЙДyДДДО ДtДАДБДАД|Д~ДyДДДuД|ДОД~ДЕДР ДtД|ДyД~ДЕ - - ldir ;ДPДuДВДuДtДpДЙДp Д~ДpДЙДyД~ДpДuДДДГДС ДГДА ДГД|ДuДtДЕДРДЛДuДz ДyД~ДЖДАДВД}ДpДИДyДy ДА ДtД|ДyД~Дu - -.copy: - ld a,l ;ДtДАДГДДДyДsД|Дy Д|Дy ДГДwДpДДДНДu ДtДpД~Д~ДНДu Д{ДАД~ДuДЙД~ДАДsДА ДpДtДВДuДГДp -.endL: - sub #FF - ld a,h -.endH: - sbc a,#FF - ret nc ;Д^ДЖДЖДuД{ДДДyДrД~ДpДС ДБДВДАДrДuДВД{Дp zf=1 - - ld c,(hl) - inc hl - ld b,(hl) ;bc=2byte ДXДДДuД~ДyДu ДxД~ДpДЙДuД~ДyДС ДГД}ДuДЛДuД~ДyДС - inc hl - -.litteral: - ld a,0 ;litteral ДБДuДВДuДБДyДГДpДДДО ДxДtДuДГДО - and #0F - add a,#04 ;cf=0 - - push hl - ld h,d - ld l,e - sbc hl,bc ;hl=de-bc ДIДГДБДАД|ДОДxДЕДzДДДu ДtДpД~Д~ДНДu, Д{ДАДДДАДВДНДu ДЕДwДu ДqДНД|Дy ДВДpДГДКДyДВДuД~ДН, Дr Д{ДpДЙДuДГДДДrДu ДyДГДДДАДЙД~ДyД{Дp ДБДuДВДuДtДpДЙДy - - ld b,0 - ld c,a - cp #0F+#04 - ex (sp),hl - call z,.getlength - ex (sp),hl - - ldir ;ДKДАДБДyДВДАДrДpДДДО ДБДuДВДuД~ДАДГ ДЕДwДu ДВДpДxДrДuДВД~ДЕДДДНДЗ ДtДpД~Д~ДНДЗ - pop hl - jp .loop - -.getlength: ;ДPДАД|ДЕДЙДyДДДО ДtД|ДyД~ДЕ ДqДpДzДДДp ДБДuДВДuДrДАДtДp (ДqДАД|ДОДКДu) bc=ДДДuД{ДЕДЛДpДС ДГДЕД}Д}Дp ДБДuДВДuДrДАДtДp - ld a,(hl) - inc hl - cp #FF ;#FF ДЕДtДrДpДyДrДpДuДДДГДС Д{ДpД{ ДxД~ДpД{, ДxДp Д{ДАДДДАДВДНД} ДГД|ДuДtДЕДuДД ДyД~ДЖДАДВД}ДpДИДyДС ДА ДtД|ДyД~Дu - jr nz,.addlen - inc b - dec bc ;bc += 255 - jr .getlength -.addlen: - add a,c - ld c,a - adc a,b - sub c - ld b,a ;bc=ДtД|ДyД~Дp ДБДuДВДuДtДpДrДpДuД}ДАДsДА ДqДpДzДДДp - ret - -;------------------------------------------------------------------------------ -;in: hl=Д~ДpДЙДpД|ДОД~ДНДz ДpДtДВДuДГ bc=ДtД|ДyД~Дp -;out: bcde=ДВДuДxДЕД|ДОДДДpДД -crc32: - push hl - push bc - - ld de,#FFFF ; 0xFFFFFFFF ? Д~ДpДЙДpД|ДОД~ДАДu ДxД~ДpДЙДuД~ДyДu CRC32, ДyДГДБДАД|ДОДxДЕДuД}ДАДsДА Дr ZIP - ld h,d - ld l,e - ld c,#20 ;ДГДАД{ДВДpДЛДuД~ДyДu - - exx - pop hl - dec hl - inc h - inc l - ld b,l - ld c,h - pop hl -.loop1: - ld a,(hl) - inc hl - exx - - xor e - ld b,8 -.loop2: - srl h - rr l - rr d - rra - jp nc,.skip - ld e,a - ld a,h - xor #ED - ld h,a - ld a,l - xor #B8 - ld l,a - ld a,d - xor #83 - ld d,a - ld a,e -; xor #20 - xor c -.skip: - djnz .loop2 - ld e,a - - exx - djnz .loop1 - dec c - jp nz,.loop1 - exx - - ld a,h ;CRC32, ДyДГДБДАД|ДОДxДЕДuД}ДНДz Дr ZIP, ДБДВДyД~ДyД}ДpДuДД xor ДГ 0xFFFFFFFF Дr Д{ДАД~ДИДu - cpl - ld b,a - ld a,l - cpl - ld c,a - - ld a,d - cpl - ld d,a - ld a,e - cpl - ld e,a - ret +;------------------------------------------------------------------------------ +;hl=src de=dst +lz4decrunch: + ld bc,7 + add hl,bc + ld c,(hl) + inc hl + ld b,(hl) ;ДqДuДВДvД} ДtДrДp ДqДpДzДДДp ДyДx ДxДpДsДАД|ДАДrД{Дp - ДВДpДxД}ДuДВ + inc hl + inc hl + inc hl ;Д~ДpДЙДpД|ДА ДГДwДpДДДНДЗ ДtДpД~Д~ДНДЗ ДГДА ДГД}ДuДЛДuД~ДyДС #0B + + ld a,l + add a,c + ld (.endL+1),a + ld a,h + adc a,b + ld (.endH+1),a ;ДKДАД~ДuДЙД~ДНДz ДpДtДВДuДГ ДГДwДpДДДНДЗ ДtДpД~Д~ДНДЗ + +.loop: + ld a,(hl) + inc hl + ld (.litteral+1),a + and #F0 + jr z,.copy ;ДEДГД|Дy ДtД|ДyД~Дp ДВДpДrД~Дp 0, ДГД{ДАДБДyДВДАДrДpДДДО ДЕДwДu ДБДuДВДuДtДpД~Д~ДНДu ДtДpД~Д~ДНДu + rrca + rrca + rrca + rrca + ld b,0 + ld c,a + cp #0F + call z,.getlength ;ДEДГД|Дy ДtД|ДyД~Дp #0F, ДДДА ДБДАД|ДЕДЙДyДДДО ДtДАДБДАД|Д~ДyДДДuД|ДОД~ДЕДР ДtД|ДyД~ДЕ + + ldir ;ДPДuДВДuДtДpДЙДp Д~ДpДЙДyД~ДpДuДДДГДС ДГДА ДГД|ДuДtДЕДРДЛДuДz ДyД~ДЖДАДВД}ДpДИДyДy ДА ДtД|ДyД~Дu + +.copy: + ld a,l ;ДtДАДГДДДyДsД|Дy Д|Дy ДГДwДpДДДНДu ДtДpД~Д~ДНДu Д{ДАД~ДuДЙД~ДАДsДА ДpДtДВДuДГДp +.endL: + sub #FF + ld a,h +.endH: + sbc a,#FF + ret nc ;Д^ДЖДЖДuД{ДДДyДrД~ДpДС ДБДВДАДrДuДВД{Дp zf=1 + + ld c,(hl) + inc hl + ld b,(hl) ;bc=2byte ДXДДДuД~ДyДu ДxД~ДpДЙДuД~ДyДС ДГД}ДuДЛДuД~ДyДС + inc hl + +.litteral: + ld a,0 ;litteral ДБДuДВДuДБДyДГДpДДДО ДxДtДuДГДО + and #0F + add a,#04 ;cf=0 + + push hl + ld h,d + ld l,e + sbc hl,bc ;hl=de-bc ДIДГДБДАД|ДОДxДЕДzДДДu ДtДpД~Д~ДНДu, Д{ДАДДДАДВДНДu ДЕДwДu ДqДНД|Дy ДВДpДГДКДyДВДuД~ДН, Дr Д{ДpДЙДuДГДДДrДu ДyДГДДДАДЙД~ДyД{Дp ДБДuДВДuДtДpДЙДy + + ld b,0 + ld c,a + cp #0F+#04 + ex (sp),hl + call z,.getlength + ex (sp),hl + + ldir ;ДKДАДБДyДВДАДrДpДДДО ДБДuДВДuД~ДАДГ ДЕДwДu ДВДpДxДrДuДВД~ДЕДДДНДЗ ДtДpД~Д~ДНДЗ + pop hl + jp .loop + +.getlength: ;ДPДАД|ДЕДЙДyДДДО ДtД|ДyД~ДЕ ДqДpДzДДДp ДБДuДВДuДrДАДtДp (ДqДАД|ДОДКДu) bc=ДДДuД{ДЕДЛДpДС ДГДЕД}Д}Дp ДБДuДВДuДrДАДtДp + ld a,(hl) + inc hl + cp #FF ;#FF ДЕДtДrДpДyДrДpДuДДДГДС Д{ДpД{ ДxД~ДpД{, ДxДp Д{ДАДДДАДВДНД} ДГД|ДuДtДЕДuДД ДyД~ДЖДАДВД}ДpДИДyДС ДА ДtД|ДyД~Дu + jr nz,.addlen + inc b + dec bc ;bc += 255 + jr .getlength +.addlen: + add a,c + ld c,a + adc a,b + sub c + ld b,a ;bc=ДtД|ДyД~Дp ДБДuДВДuДtДpДrДpДuД}ДАДsДА ДqДpДzДДДp + ret + +;------------------------------------------------------------------------------ +;in: hl=Д~ДpДЙДpД|ДОД~ДНДz ДpДtДВДuДГ bc=ДtД|ДyД~Дp +;out: bcde=ДВДuДxДЕД|ДОДДДpДД +crc32: + push hl + push bc + + ld de,#FFFF ; 0xFFFFFFFF ? Д~ДpДЙДpД|ДОД~ДАДu ДxД~ДpДЙДuД~ДyДu CRC32, ДyДГДБДАД|ДОДxДЕДuД}ДАДsДА Дr ZIP + ld h,d + ld l,e + ld c,#20 ;ДГДАД{ДВДpДЛДuД~ДyДu + + exx + pop hl + dec hl + inc h + inc l + ld b,l + ld c,h + pop hl +.loop1: + ld a,(hl) + inc hl + exx + + xor e + ld b,8 +.loop2: + srl h + rr l + rr d + rra + jp nc,.skip + ld e,a + ld a,h + xor #ED + ld h,a + ld a,l + xor #B8 + ld l,a + ld a,d + xor #83 + ld d,a + ld a,e +; xor #20 + xor c +.skip: + djnz .loop2 + ld e,a + + exx + djnz .loop1 + dec c + jp nz,.loop1 + exx + + ld a,h ;CRC32, ДyДГДБДАД|ДОДxДЕДuД}ДНДz Дr ZIP, ДБДВДyД~ДyД}ДpДuДД xor ДГ 0xFFFFFFFF Дr Д{ДАД~ДИДu + cpl + ld b,a + ld a,l + cpl + ld c,a + + ld a,d + cpl + ld d,a + ld a,e + cpl + ld e,a + ret diff --git a/src/bios/rom/_not_used/Logo_Depacker.asm b/bios/rom/_not_used/Logo_Depacker.asm similarity index 88% rename from src/bios/rom/_not_used/Logo_Depacker.asm rename to bios/rom/_not_used/Logo_Depacker.asm index b5276d2..ec2ee54 100644 --- a/src/bios/rom/_not_used/Logo_Depacker.asm +++ b/bios/rom/_not_used/Logo_Depacker.asm @@ -1,89 +1,89 @@ - CALL #E1D2 - DI - LD (RelocatedCode.SPsave),SP - LD HL,.START - LD DE,#D800 - LD BC,.END-.START - PUSH DE - LDIR - - LD HL,#E1D1 - LD DE,#FFFF - LD BC,#0850 - RET - -RelocatedCode: -.START: - LDDR - LD HL,#F7B0 - LD DE,#D900 - LD B,#00 - LD A,(HL) - BIT 7,A - JR NZ,#D94A - AND #0F - LD B,A - RLD - ADD A,#03 - LD C,A - INC HL - LD A,E - SUB (HL) - INC HL - LD SP,HL - LD H,(HL) - LD L,A - LD A,D - SBC A,B - LD B,H - LD H,A - LD A,B - LD B,#00 - LDIR - LD H,B - LD L,C - ADD HL,SP - JR #D929 - AND #7F - JR Z,#D967 - INC HL - BIT 6,A - JR NZ,#D958 - LD C,A - LDIR - JR #D928 - AND #3F - ADD A,#03 - LD B,A - LD A,(HL) - INC HL - LD C,(HL) - LD (DE),A - INC DE - DJNZ #D960 - LD A,C - JR #D929 - LD SP,#D85B - LD B,#03 - POP HL - DEC SP - POP AF - LD (HL),A - DJNZ #D96C -.SPsave+1: LD SP,#0000 - DI - RET - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP -.END EQU $ -; Картинка на стартовом экране слева сверху + CALL #E1D2 + DI + LD (RelocatedCode.SPsave),SP + LD HL,.START + LD DE,#D800 + LD BC,.END-.START + PUSH DE + LDIR + + LD HL,#E1D1 + LD DE,#FFFF + LD BC,#0850 + RET + +RelocatedCode: +.START: + LDDR + LD HL,#F7B0 + LD DE,#D900 + LD B,#00 + LD A,(HL) + BIT 7,A + JR NZ,#D94A + AND #0F + LD B,A + RLD + ADD A,#03 + LD C,A + INC HL + LD A,E + SUB (HL) + INC HL + LD SP,HL + LD H,(HL) + LD L,A + LD A,D + SBC A,B + LD B,H + LD H,A + LD A,B + LD B,#00 + LDIR + LD H,B + LD L,C + ADD HL,SP + JR #D929 + AND #7F + JR Z,#D967 + INC HL + BIT 6,A + JR NZ,#D958 + LD C,A + LDIR + JR #D928 + AND #3F + ADD A,#03 + LD B,A + LD A,(HL) + INC HL + LD C,(HL) + LD (DE),A + INC DE + DJNZ #D960 + LD A,C + JR #D929 + LD SP,#D85B + LD B,#03 + POP HL + DEC SP + POP AF + LD (HL),A + DJNZ #D96C +.SPsave+1: LD SP,#0000 + DI + RET + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP +.END EQU $ +; Картинка на стартовом экране слева сверху INCBIN 'SP_LOGO.BIN' \ No newline at end of file diff --git a/src/bios/rom/_not_used/ayfxplay.asm b/bios/rom/_not_used/ayfxplay.asm similarity index 100% rename from src/bios/rom/_not_used/ayfxplay.asm rename to bios/rom/_not_used/ayfxplay.asm diff --git a/src/bios/rom/_not_used/netherworld_8.afx b/bios/rom/_not_used/netherworld_8.afx similarity index 100% rename from src/bios/rom/_not_used/netherworld_8.afx rename to bios/rom/_not_used/netherworld_8.afx diff --git a/src/bios/shared/CompMacro.asm b/bios/shared/CompMacro.asm similarity index 96% rename from src/bios/shared/CompMacro.asm rename to bios/shared/CompMacro.asm index d6b4f43..5c75cf9 100644 --- a/src/bios/shared/CompMacro.asm +++ b/bios/shared/CompMacro.asm @@ -1,172 +1,172 @@ -; - MACRO ShowInfo text, in_disp -/* - DISPLAY ' ' - DISPLAY '[*] ', text - IF in_disp - DISPLAY 'ROM:' - DISPLAY ' ORG: ',/H, $$$ - DISPLAY ' PAGE: ',/H, $$$$ - DISPLAY 'MEM:' - DISPLAY ' DISP: ',/H, $ - DISPLAY ' PAGE: ',/H, $$ - ELSE - DISPLAY 'ROM:' - DISPLAY ' ORG: ',/H, $ - DISPLAY ' PAGE: ',/H, $$ - ENDIF - DISPLAY '[X]' - DISPLAY ' ' -*/ - ENDM -; - -; -; Вход: ширина спрайта, высота, координата X, координата Y, адрес спрайта в памяти - MACRO EasterTable width, height, Xcoord, Ycoord, addr - WORD addr ; адрес спрайта в памяти - WORD width ; Ширина - BYTE height+Ycoord ; Высота + Y coord - WORD Xcoord+#4040 ; X coord ; !HARDCODE исправить на метку #4040 - адрес лого - BYTE Ycoord ; Y coord - ENDM -; - -; - MACRO _mRECOVERYrdChooseTYPE vers - IF vers = 1 - ; если RECOVERY не подразумевает 90% безопасность пользовательских рамдисков - ; то выбираем этот вариант, он шустрее, под RECOVERY всегда выбирается RAM Disk 15 - ; - - ELSEIF vers = 2 - - ; Ищем свободный рамдиск - LD B,SYS_PAGE.RAMD_KEYS.NUM -.getRDidLoop: LD A,B - DEC A - LD (RECOVERYstart.RDkey),A - PUSH BC - LD B,ROM_DISK.Pages.Size - CALL EMM.GetMemRMD - POP BC - JR NC,RECOVERYstart.IMGread ; свободный рамдиск найден, выходим из цикла - DEC A - JR Z,RECOVERYstart.FreeMem ; ошибка - недостаточно памяти, вызываем очистку памяти - DJNZ .getRDidLoop - ; - - ELSE - ASSERT 0, Invalid 'RECOVERYrdChooseTYPE' variant - RECOVERYrdChooseTYPE - ENDIF - ENDM -; - MACRO _mRECOVERYmountTYPE vers - IF vers = 1 ; Более быстрый, но захардкоженный вариант - - LD HL,TEMP - CALL EMM.GetMemBlkPages ; кидаем в буфер номера страниц RAM disk - - IN A,(SLOT3) - LD (.slot3save),A - - LD HL,ROM_DISK.Pages.Number - LD B,0 - LD C,(HL) - INC C - LD DE,TEMP+ROM_DISK.Pages.Size - LDIR ; кидаем дальше в буфер номера страниц ROM disk - - LD IY,TEMP+ROM_DISK.Pages.Size ; ROM_DISK.Pages.Number - LD IX,TEMP - LD B,(IY+0) - - LD A,R - PUSH AF - DI -.loopIMGtoRAM: PUSH BC - INC IY - LD A,(IY+0) - OUT (ROM.SLOT0),A - LD A,(IX+0) - OUT (SLOT3),A - INC IX - - LD HL,0 - LD DE,#C000 - LD BC,#4000 - LDIR - - POP BC - DJNZ .loopIMGtoRAM -.slot3save+*: LD A,0 - OUT (SLOT3),A - XOR A - OUT (ROM.SLOT0),A - OUT (SYS_PORT.ROM),A - POP AF - JP PO,.noInterrupts - EI -.noInterrupts: - ; - - ELSEIF vers = 2 ; менее быстрый, но более правильный вариант через функции биоса - - LD (.ramdskID),A - LD DE,0 ; номер сектора - LD B,(ROM_DISK.Pages.Size * #4000)/512 ; счётчик - кол-ва секторов по 512 кб -.loop: - ;read rom disk - PUSH BC - LD A,1 ;размер сектора 256 - EX AF,AF' - LD A,#46 ;чтение из ROM-Disk - EX AF,AF' - LD HL,TEMP ;адрес буфера данных - LD B,2 ;число секторов - CALL BLK_RD_WR - - ;write to ram disk - PUSH DE ;номер сектора - DEC DE - DEC DE - -.ramdskID+*: LD A,0 ;идентификатор блока - EX AF,AF' - LD A,#FF ;запись в RAM-Disk - EX AF,AF' - LD HL,TEMP ;адрес буфера данных - LD B,2 ;число секторов - CALL BLK_RD_WR - - POP DE ;номер сектора - POP BC - DJNZ .loop - ; - - ELSE - ASSERT 0, Invalid 'RECOVERYmountTYPE' variant - RECOVERYmountTYPE - ENDIF - ENDM -; - -; - MACRO RST_to_BIOS - IF (IsInBIOS = 0) && ($ < #4000) - CALL ToBIOS_FromEXT - ELSE - RST ToBIOS_18 - ENDIF - ENDM - -; - -; - MACRO JP_to_BIOS - IF (IsInBIOS = 0) && ($ < #4000) - JP ToBIOS_FromEXT - ELSE - JP ToBIOS_18 - ENDIF - ENDM -; +; + MACRO ShowInfo text, in_disp +/* + DISPLAY ' ' + DISPLAY '[*] ', text + IF in_disp + DISPLAY 'ROM:' + DISPLAY ' ORG: ',/H, $$$ + DISPLAY ' PAGE: ',/H, $$$$ + DISPLAY 'MEM:' + DISPLAY ' DISP: ',/H, $ + DISPLAY ' PAGE: ',/H, $$ + ELSE + DISPLAY 'ROM:' + DISPLAY ' ORG: ',/H, $ + DISPLAY ' PAGE: ',/H, $$ + ENDIF + DISPLAY '[X]' + DISPLAY ' ' +*/ + ENDM +; + +; +; Вход: ширина спрайта, высота, координата X, координата Y, адрес спрайта в памяти + MACRO EasterTable width, height, Xcoord, Ycoord, addr + WORD addr ; адрес спрайта в памяти + WORD width ; Ширина + BYTE height+Ycoord ; Высота + Y coord + WORD Xcoord+#4040 ; X coord ; !HARDCODE исправить на метку #4040 - адрес лого + BYTE Ycoord ; Y coord + ENDM +; + +; + MACRO _mRECOVERYrdChooseTYPE vers + IF vers = 1 + ; если RECOVERY не подразумевает 90% безопасность пользовательских рамдисков + ; то выбираем этот вариант, он шустрее, под RECOVERY всегда выбирается RAM Disk 15 + ; + + ELSEIF vers = 2 + + ; Ищем свободный рамдиск + LD B,SYS_PAGE.RAMD_KEYS.NUM +.getRDidLoop: LD A,B + DEC A + LD (RECOVERYstart.RDkey),A + PUSH BC + LD B,ROM_DISK.Pages.Size + CALL EMM.GetMemRMD + POP BC + JR NC,RECOVERYstart.IMGread ; свободный рамдиск найден, выходим из цикла + DEC A + JR Z,RECOVERYstart.FreeMem ; ошибка - недостаточно памяти, вызываем очистку памяти + DJNZ .getRDidLoop + ; + + ELSE + ASSERT 0, Invalid 'RECOVERYrdChooseTYPE' variant - RECOVERYrdChooseTYPE + ENDIF + ENDM +; + MACRO _mRECOVERYmountTYPE vers + IF vers = 1 ; Более быстрый, но захардкоженный вариант + + LD HL,TEMP + CALL EMM.GetMemBlkPages ; кидаем в буфер номера страниц RAM disk + + IN A,(SLOT3) + LD (.slot3save),A + + LD HL,ROM_DISK.Pages.Number + LD B,0 + LD C,(HL) + INC C + LD DE,TEMP+ROM_DISK.Pages.Size + LDIR ; кидаем дальше в буфер номера страниц ROM disk + + LD IY,TEMP+ROM_DISK.Pages.Size ; ROM_DISK.Pages.Number + LD IX,TEMP + LD B,(IY+0) + + LD A,R + PUSH AF + DI +.loopIMGtoRAM: PUSH BC + INC IY + LD A,(IY+0) + OUT (ROM.SLOT0),A + LD A,(IX+0) + OUT (SLOT3),A + INC IX + + LD HL,0 + LD DE,#C000 + LD BC,#4000 + LDIR + + POP BC + DJNZ .loopIMGtoRAM +.slot3save+*: LD A,0 + OUT (SLOT3),A + XOR A + OUT (ROM.SLOT0),A + OUT (SYS_PORT.ROM),A + POP AF + JP PO,.noInterrupts + EI +.noInterrupts: + ; + + ELSEIF vers = 2 ; менее быстрый, но более правильный вариант через функции биоса + + LD (.ramdskID),A + LD DE,0 ; номер сектора + LD B,(ROM_DISK.Pages.Size * #4000)/512 ; счётчик - кол-ва секторов по 512 кб +.loop: + ;read rom disk + PUSH BC + LD A,1 ;размер сектора 256 + EX AF,AF' + LD A,#46 ;чтение из ROM-Disk + EX AF,AF' + LD HL,TEMP ;адрес буфера данных + LD B,2 ;число секторов + CALL BLK_RD_WR + + ;write to ram disk + PUSH DE ;номер сектора + DEC DE + DEC DE + +.ramdskID+*: LD A,0 ;идентификатор блока + EX AF,AF' + LD A,#FF ;запись в RAM-Disk + EX AF,AF' + LD HL,TEMP ;адрес буфера данных + LD B,2 ;число секторов + CALL BLK_RD_WR + + POP DE ;номер сектора + POP BC + DJNZ .loop + ; + + ELSE + ASSERT 0, Invalid 'RECOVERYmountTYPE' variant - RECOVERYmountTYPE + ENDIF + ENDM +; + +; + MACRO RST_to_BIOS + IF (IsInBIOS = 0) && ($ < #4000) + CALL ToBIOS_FromEXT + ELSE + RST ToBIOS_18 + ENDIF + ENDM + +; + +; + MACRO JP_to_BIOS + IF (IsInBIOS = 0) && ($ < #4000) + JP ToBIOS_FromEXT + ELSE + JP ToBIOS_18 + ENDIF + ENDM +; diff --git a/src/bios/shared/DEFINES.INC b/bios/shared/DEFINES.INC similarity index 97% rename from src/bios/shared/DEFINES.INC rename to bios/shared/DEFINES.INC index f70d049..f89813f 100644 --- a/src/bios/shared/DEFINES.INC +++ b/bios/shared/DEFINES.INC @@ -10,7 +10,7 @@ RELEASEhotFIX EQU 2 ; DEFINE SP2000_Loader_Flag #0107 ; DEFINE IDE_Optimization 1 ; слегка оптимизирует некоторые процедуры работы с HDD DEFINE NeedSafePort_Y 1 ; если 0, то в режиме без акселя некоторые процедуры могут засрать экран - DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' ; + DEFINE PICTURE_FILE './bios/logo/psfathers.bmp' ; DEFINE StandartCGApallete 1 ; Подключать палитру из standart_colors.inc DEFINE BitStream_SizeInPages 4 ; DEFINE USE_E1_SCANCODE 0 ; diff --git a/src/bios/shared/RECOVERY.IMG b/bios/shared/RECOVERY.IMG similarity index 100% rename from src/bios/shared/RECOVERY.IMG rename to bios/shared/RECOVERY.IMG diff --git a/src/bios/shared/VERSION.inc b/bios/shared/VERSION.inc similarity index 95% rename from src/bios/shared/VERSION.inc rename to bios/shared/VERSION.inc index 87f4338..f9aa2ca 100644 --- a/src/bios/shared/VERSION.inc +++ b/bios/shared/VERSION.inc @@ -1,60 +1,60 @@ -;█████████████████████████████████████████████████████████████████████████████████████████████████████████; -; ============[For EXP part]============= -; ------[Version of BIOS "VER.MOD"]------ -EXP_ID: -.VER EQU SET_EXPID_VER ; Номер версии менять тут! -.MOD EQU SET_EXPID_MOD ; Номер версии менять тут! -BIOS_ver_hex EQU EXP_ID.VER*256+EXP_ID.MOD - - DEFINE BIOS_ver_string '0'+EXP_ID.VER, '.', '0'+EXP_ID.MOD/10, '0'+EXP_ID.MOD-(EXP_ID.MOD/10)*10 - - IF BETA_BUILD > 0 - IF BETA_RC > 0 - DEFINE BETA_str_ver "RC","0"+BETA_RC - ELSE - DEFINE BETA_str_ver "BETA ","0"+BETA_BUILD - ENDIF - ENDIF -;--------------------------------------- - DEFINE BoardID_start #5283 - DEFINE BoardID_end #47E8 - DEFINE MotherBoardID #0000 - DEFINE MotherBoardType #00 ; !TODO 0 - Legacy, 1 - DX, 2 - Max -;======================================= -;█████████████████████████████████████████████████████████████████████████████████████████████████████████; - -; ============[For ROM part]============= -; -[Version of disk subsystem "VER.MOD"]- -ROM_ID: -.VER EQU 2 ; Номер версии менять тут! -.MOD EQU 56 ; Номер версии менять тут! -Disk_subsystem_ver_hex EQU ROM_ID.VER*256+ROM_ID.MOD - - DEFINE Disk_subsystem_ver_txt '0'+ROM_ID.VER, '.', '0'+ROM_ID.MOD/10, '0'+ROM_ID.MOD-(ROM_ID.MOD/10)*10 -;--------------------------------------- - IF RELEASEhotFIX != 0 - IF RELEASEhotFIX > 9 - DEFINE ReleaseHotFix ' Hotfix ', '0' + RELEASEhotFIX/10, '0' + (RELEASEhotFIX - (RELEASEhotFIX/10)*10) - ELSE - DEFINE ReleaseHotFix ' Hotfix ', '0' + RELEASEhotFIX - ENDIF - ELSE - DEFINE ReleaseHotFix "" - ENDIF -;█████████████████████████████████████████████████████████████████████████████████████████████████████████; - -; ============[For CNF part]============= -CNF_ID: -.VER EQU 3 ; Номер версии менять тут! -.MOD EQU 05 ; Номер версии менять тут! -bitstream_ver_hex EQU CNF_ID.VER*256+CNF_ID.MOD - - DEFINE bitstream_ver_string '0'+CNF_ID.VER, '.', '0'+CNF_ID.MOD/10, '0'+CNF_ID.MOD-(CNF_ID.MOD/10)*10 -;--------------------------------------- -;█████████████████████████████████████████████████████████████████████████████████████████████████████████; - -;======================================= - DEFINE SPTeam_year BUILD_YEAR - DEFINE SetupVer '1.60' -;--------------------------------------- +;█████████████████████████████████████████████████████████████████████████████████████████████████████████; +; ============[For EXP part]============= +; ------[Version of BIOS "VER.MOD"]------ +EXP_ID: +.VER EQU SET_EXPID_VER ; Номер версии менять тут! +.MOD EQU SET_EXPID_MOD ; Номер версии менять тут! +BIOS_ver_hex EQU EXP_ID.VER*256+EXP_ID.MOD + + DEFINE BIOS_ver_string '0'+EXP_ID.VER, '.', '0'+EXP_ID.MOD/10, '0'+EXP_ID.MOD-(EXP_ID.MOD/10)*10 + + IF BETA_BUILD > 0 + IF BETA_RC > 0 + DEFINE BETA_str_ver "RC","0"+BETA_RC + ELSE + DEFINE BETA_str_ver "BETA ","0"+BETA_BUILD + ENDIF + ENDIF +;--------------------------------------- + DEFINE BoardID_start #5283 + DEFINE BoardID_end #47E8 + DEFINE MotherBoardID #0000 + DEFINE MotherBoardType #00 ; !TODO 0 - Legacy, 1 - DX, 2 - Max +;======================================= +;█████████████████████████████████████████████████████████████████████████████████████████████████████████; + +; ============[For ROM part]============= +; -[Version of disk subsystem "VER.MOD"]- +ROM_ID: +.VER EQU 2 ; Номер версии менять тут! +.MOD EQU 56 ; Номер версии менять тут! +Disk_subsystem_ver_hex EQU ROM_ID.VER*256+ROM_ID.MOD + + DEFINE Disk_subsystem_ver_txt '0'+ROM_ID.VER, '.', '0'+ROM_ID.MOD/10, '0'+ROM_ID.MOD-(ROM_ID.MOD/10)*10 +;--------------------------------------- + IF RELEASEhotFIX != 0 + IF RELEASEhotFIX > 9 + DEFINE ReleaseHotFix ' Hotfix ', '0' + RELEASEhotFIX/10, '0' + (RELEASEhotFIX - (RELEASEhotFIX/10)*10) + ELSE + DEFINE ReleaseHotFix ' Hotfix ', '0' + RELEASEhotFIX + ENDIF + ELSE + DEFINE ReleaseHotFix "" + ENDIF +;█████████████████████████████████████████████████████████████████████████████████████████████████████████; + +; ============[For CNF part]============= +CNF_ID: +.VER EQU 3 ; Номер версии менять тут! +.MOD EQU 05 ; Номер версии менять тут! +bitstream_ver_hex EQU CNF_ID.VER*256+CNF_ID.MOD + + DEFINE bitstream_ver_string '0'+CNF_ID.VER, '.', '0'+CNF_ID.MOD/10, '0'+CNF_ID.MOD-(CNF_ID.MOD/10)*10 +;--------------------------------------- +;█████████████████████████████████████████████████████████████████████████████████████████████████████████; + +;======================================= + DEFINE SPTeam_year BUILD_YEAR + DEFINE SetupVer '1.60' +;--------------------------------------- ;█████████████████████████████████████████████████████████████████████████████████████████████████████████; \ No newline at end of file diff --git a/src/bios/shared/includes.inc b/bios/shared/includes.inc similarity index 51% rename from src/bios/shared/includes.inc rename to bios/shared/includes.inc index a3ecdd6..6475751 100644 --- a/src/bios/shared/includes.inc +++ b/bios/shared/includes.inc @@ -1,17 +1,17 @@ -; -;---------[All shared includes]--------- - INCLUDE 'src/bios/shared/DEFINES.INC' ; Shared defines - INCLUDE 'Shared_Includes/structures/FileSystem.inc' - INCLUDE 'Shared_Includes/structures/ATA_ATAPI.inc' - INCLUDE 'src/bios/Loader/Loader.asm' ; Bitstream loader as macros - INCLUDE 'src/bios/shared/CompMacro.asm' ; макросы - INCLUDE 'Shared_Includes/constants/SP2000.inc' ; константы - INCLUDE 'Shared_Includes/constants/zx_char_codes.inc' ; константы - INCLUDE 'Shared_Includes/constants/zx_vars.inc' ; - INCLUDE 'Shared_Includes/macroses/macros.z80' - INCLUDE 'src/bios/ROM/MEM_MAP.inc' ; карта памяти - INCLUDE 'src/bios/shared/VERSION.inc' ; Версия EXP и ROM - INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc' - INCLUDE 'src/bios/ROM/BIOS.inc' -;--------------------------------------- -; +; +;---------[All shared includes]--------- + INCLUDE 'bios/shared/DEFINES.INC' ; Shared defines + INCLUDE 'Shared_Includes/structures/FileSystem.inc' + INCLUDE 'Shared_Includes/structures/ATA_ATAPI.inc' + INCLUDE 'bios/Loader/Loader.asm' ; Bitstream loader as macros + INCLUDE 'bios/shared/CompMacro.asm' ; макросы + INCLUDE 'Shared_Includes/constants/SP2000.inc' ; константы + INCLUDE 'Shared_Includes/constants/zx_char_codes.inc' ; константы + INCLUDE 'Shared_Includes/constants/zx_vars.inc' ; + INCLUDE 'Shared_Includes/macroses/macros.z80' + INCLUDE 'bios/ROM/MEM_MAP.inc' ; карта памяти + INCLUDE 'bios/shared/VERSION.inc' ; Версия EXP и ROM + INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc' + INCLUDE 'bios/ROM/BIOS.inc' +;--------------------------------------- +; diff --git a/src/doc/CDLOADER.TXT b/doc/CDLOADER.TXT similarity index 92% rename from src/doc/CDLOADER.TXT rename to doc/CDLOADER.TXT index 1866836..e1011be 100644 --- a/src/doc/CDLOADER.TXT +++ b/doc/CDLOADER.TXT @@ -1,262 +1,262 @@ - -RETTR PUSH BC - LD DE,DIR - LD HL,0 - LD IX,#0010 - LD BC,#0105 - LD A,(DRIVE) - RST #18 - POP BC - JR C,CDAGAA - LD HL,DIR - LD A,(HL) - INC HL - CP #01 - JR NZ,UNKCD - LD A,(HL) - INC HL - CP "C" - JR NZ,UNKCD - LD A,(HL) - INC HL - CP "D" - JR NZ,UNKCD - LD HL,DIR+#009E - LD DE,ROOTDIR - LDI - LDI - LDI - LDI - LD HL,DIR+#00A6 - LD DE,ROOTLEN - LDI - LDI - LDI - LDI - POP AF - OUT (PAGE3),A - LD HL,0 - LD (FATCASH),HL - XOR A - RET - -LOADDIR XOR A - LD HL,0 - LD IX,0 - LD B,0 - CALL MOVE_FP - LD A,DIRPAGE - CALL BANK - PUSH AF - LD B,3 -LOADFFF PUSH BC - LD HL,#C000 - LD DE,#C001 - LD BC,#3FFF - LD (HL),L - LDIR - LD A,(DRIVE) - LD (IY+FDRV),A -; LD C,(IY+LEN1) - LD C,(IY+LEN2) - LD B,(IY+LEN3) - LD E,(IY+LEN4) - LD D,0 - SRL D - RR E - RR B - RR C - SRL D - RR E - RR B - RR C - SRL D - RR E - RR B - RR C - LD E,(IY+CLU1) - LD D,(IY+CLU2) - LD L,(IY+CLU3) - LD H,(IY+CLU4) - LD HX,D - LD LX,E - LD B,C - LD A,B - OR A - JR Z,ERRLEND - CP #08 - JR C,NORLEND - LD B,8 -NORLEND LD A,(DRIVE) - LD C,5 - LD DE,DIR - RST #18 - POP BC - JR NC,LOADMMM - DEC B - JP NZ,LOADFFF - POP AF - OUT (PAGE3),A - SCF - LD A,20 - RET - -ERRLEND POP BC - POP AF - OUT (PAGE3),A - SCF - LD A,20 - RET - -LOADMMM POP AF - OUT (PAGE3),A - CALL CORRDIR - AND A - RET - -CORRDIR LD A,DIRPAGE - CALL BANK - PUSH AF - LD HL,DIR - LD DE,DIR -CORRL1 PUSH DE - LD C,(HL) - LD B,0 - LD DE,ENTRYBF - LDIR - POP DE - PUSH HL - LD HL,FCDFLEN - LD C,(HL) - LD B,0 - ADD HL,BC - INC HL - LD (HL),0 - SBC HL,BC - PUSH DE - CALL MASK - POP HL - LD BC,11 - ADD HL,BC - LD A,(FCDFLAG) - AND 2 - LD A,#00 ;ATTRIBUT FILE - JR Z,CORRL0 - LD A,#10 ;ATTRIBUT DIRECTORY -CORRL0 LD (HL),A - INC HL - XOR A - LD B,8 -FILLCDN LD (HL),A - INC HL - DJNZ FILLCDN - LD A,(FCDSEC+2) - LD (HL),A - INC HL - LD A,(FCDSEC+3) - LD (HL),A - INC HL - LD DE,#0000 ;TIME - LD (HL),E - INC HL - LD (HL),D - INC HL - LD DE,#0000 ;DATE - LD (HL),E - INC HL - LD (HL),D - INC HL - LD DE,(FCDSEC) - LD (HL),E - INC HL - LD (HL),D - INC HL - EX DE,HL - LD HL,FCDLEN - LDI - LDI - LDI - LDI - POP HL - BIT 7,H - JR Z,CORRL2 - LD A,(HL) - OR A - JP NZ,CORRL1 - LD L,0 - INC H - JR Z,CORRL2 - LD A,(HL) - OR A - JP NZ,CORRL1 -CORRL2 XOR A - LD (DE),A - LD DE,(ROOTDIR+0) - LD L,(IY+CLU1) - LD H,(IY+CLU2) - AND A - SBC HL,DE - JR NZ,CORRL6 - LD DE,(ROOTDIR+2) - LD L,(IY+CLU3) - LD H,(IY+CLU4) - AND A - SBC HL,DE - JR NZ,CORRL6 - LD HL,DIR - LD A,(HL) - CP " " - JR NZ,CORRL4 - LD (HL),#E5 - LD BC,#0020 - ADD HL,BC - LD A,(HL) - CP " " - JR NZ,CORRL4 - LD (HL),#E5 - JR CORRL4 -CORRL6 LD HL,DIR - LD A,(HL) - CP " " - JR NZ,CORRL4 - LD (HL),"." - LD BC,#0020 - ADD HL,BC - LD A,(HL) - CP " " - JR NZ,CORRL4 - LD (HL),"." - INC HL - LD (HL),"." -CORRL4 POP AF - OUT (PAGE3),A - AND A - RET - -ENTRYBF - DEFB #00 ;Entry lenght - DEFB #00 ;XAR in LBN -FCDSEC DEFW #00,#00 ;Start sector (Intel) - DEFW #00,#00 ;Start sector (Motorola) -FCDLEN DEFW #00,#00 ;Lenght file (Intel) - DEFW #00,#00 ;Lenght file (Motorola) -FCDYEAR DEFB #00 ;Year -FCDMOUN DEFB #00 ;Mount -FCDDAY DEFB #00 ;Day -FCDHOUR DEFB #00 ;Hour -FCDMIN DEFB #00 ;Minute -FCDSECN DEFB #00 ;Second - DEFB #00 ;Reserve -FCDFLAG DEFB #00 ;Flag - DEFB #00 ;Interlive size - DEFB #00 ;Interlive skip factor - DEFW #0000 ;Volume Set Sequence (Intel) - DEFW #0000 ;Volume Set Sequence (Motorola) -FCDFLEN DEFB #00 -DEFSA EQU $-ENTRYBF -FCDNAME DEFS #100-DEFSA - -ROOTDIR DEFW 0,0 -ROOTLEN DEFW 0,0 - - + +RETTR PUSH BC + LD DE,DIR + LD HL,0 + LD IX,#0010 + LD BC,#0105 + LD A,(DRIVE) + RST #18 + POP BC + JR C,CDAGAA + LD HL,DIR + LD A,(HL) + INC HL + CP #01 + JR NZ,UNKCD + LD A,(HL) + INC HL + CP "C" + JR NZ,UNKCD + LD A,(HL) + INC HL + CP "D" + JR NZ,UNKCD + LD HL,DIR+#009E + LD DE,ROOTDIR + LDI + LDI + LDI + LDI + LD HL,DIR+#00A6 + LD DE,ROOTLEN + LDI + LDI + LDI + LDI + POP AF + OUT (PAGE3),A + LD HL,0 + LD (FATCASH),HL + XOR A + RET + +LOADDIR XOR A + LD HL,0 + LD IX,0 + LD B,0 + CALL MOVE_FP + LD A,DIRPAGE + CALL BANK + PUSH AF + LD B,3 +LOADFFF PUSH BC + LD HL,#C000 + LD DE,#C001 + LD BC,#3FFF + LD (HL),L + LDIR + LD A,(DRIVE) + LD (IY+FDRV),A +; LD C,(IY+LEN1) + LD C,(IY+LEN2) + LD B,(IY+LEN3) + LD E,(IY+LEN4) + LD D,0 + SRL D + RR E + RR B + RR C + SRL D + RR E + RR B + RR C + SRL D + RR E + RR B + RR C + LD E,(IY+CLU1) + LD D,(IY+CLU2) + LD L,(IY+CLU3) + LD H,(IY+CLU4) + LD HX,D + LD LX,E + LD B,C + LD A,B + OR A + JR Z,ERRLEND + CP #08 + JR C,NORLEND + LD B,8 +NORLEND LD A,(DRIVE) + LD C,5 + LD DE,DIR + RST #18 + POP BC + JR NC,LOADMMM + DEC B + JP NZ,LOADFFF + POP AF + OUT (PAGE3),A + SCF + LD A,20 + RET + +ERRLEND POP BC + POP AF + OUT (PAGE3),A + SCF + LD A,20 + RET + +LOADMMM POP AF + OUT (PAGE3),A + CALL CORRDIR + AND A + RET + +CORRDIR LD A,DIRPAGE + CALL BANK + PUSH AF + LD HL,DIR + LD DE,DIR +CORRL1 PUSH DE + LD C,(HL) + LD B,0 + LD DE,ENTRYBF + LDIR + POP DE + PUSH HL + LD HL,FCDFLEN + LD C,(HL) + LD B,0 + ADD HL,BC + INC HL + LD (HL),0 + SBC HL,BC + PUSH DE + CALL MASK + POP HL + LD BC,11 + ADD HL,BC + LD A,(FCDFLAG) + AND 2 + LD A,#00 ;ATTRIBUT FILE + JR Z,CORRL0 + LD A,#10 ;ATTRIBUT DIRECTORY +CORRL0 LD (HL),A + INC HL + XOR A + LD B,8 +FILLCDN LD (HL),A + INC HL + DJNZ FILLCDN + LD A,(FCDSEC+2) + LD (HL),A + INC HL + LD A,(FCDSEC+3) + LD (HL),A + INC HL + LD DE,#0000 ;TIME + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,#0000 ;DATE + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,(FCDSEC) + LD (HL),E + INC HL + LD (HL),D + INC HL + EX DE,HL + LD HL,FCDLEN + LDI + LDI + LDI + LDI + POP HL + BIT 7,H + JR Z,CORRL2 + LD A,(HL) + OR A + JP NZ,CORRL1 + LD L,0 + INC H + JR Z,CORRL2 + LD A,(HL) + OR A + JP NZ,CORRL1 +CORRL2 XOR A + LD (DE),A + LD DE,(ROOTDIR+0) + LD L,(IY+CLU1) + LD H,(IY+CLU2) + AND A + SBC HL,DE + JR NZ,CORRL6 + LD DE,(ROOTDIR+2) + LD L,(IY+CLU3) + LD H,(IY+CLU4) + AND A + SBC HL,DE + JR NZ,CORRL6 + LD HL,DIR + LD A,(HL) + CP " " + JR NZ,CORRL4 + LD (HL),#E5 + LD BC,#0020 + ADD HL,BC + LD A,(HL) + CP " " + JR NZ,CORRL4 + LD (HL),#E5 + JR CORRL4 +CORRL6 LD HL,DIR + LD A,(HL) + CP " " + JR NZ,CORRL4 + LD (HL),"." + LD BC,#0020 + ADD HL,BC + LD A,(HL) + CP " " + JR NZ,CORRL4 + LD (HL),"." + INC HL + LD (HL),"." +CORRL4 POP AF + OUT (PAGE3),A + AND A + RET + +ENTRYBF + DEFB #00 ;Entry lenght + DEFB #00 ;XAR in LBN +FCDSEC DEFW #00,#00 ;Start sector (Intel) + DEFW #00,#00 ;Start sector (Motorola) +FCDLEN DEFW #00,#00 ;Lenght file (Intel) + DEFW #00,#00 ;Lenght file (Motorola) +FCDYEAR DEFB #00 ;Year +FCDMOUN DEFB #00 ;Mount +FCDDAY DEFB #00 ;Day +FCDHOUR DEFB #00 ;Hour +FCDMIN DEFB #00 ;Minute +FCDSECN DEFB #00 ;Second + DEFB #00 ;Reserve +FCDFLAG DEFB #00 ;Flag + DEFB #00 ;Interlive size + DEFB #00 ;Interlive skip factor + DEFW #0000 ;Volume Set Sequence (Intel) + DEFW #0000 ;Volume Set Sequence (Motorola) +FCDFLEN DEFB #00 +DEFSA EQU $-ENTRYBF +FCDNAME DEFS #100-DEFSA + +ROOTDIR DEFW 0,0 +ROOTLEN DEFW 0,0 + + diff --git a/src/doc/SETUP.REV b/doc/SETUP.REV similarity index 98% rename from src/doc/SETUP.REV rename to doc/SETUP.REV index aea21a2..f14ed3b 100644 --- a/src/doc/SETUP.REV +++ b/doc/SETUP.REV @@ -1,30 +1,30 @@ -;--------------------------------------------------------------- -;Rev Date Name Description -;--------------------------------------------------------------- -;╚чьхэхэш  т build'e 2.53 -;R06 16-02-2002 DNS Add CMOS install routine. Disabled TRDOS install routine. -;╚чьхэхэш  т build'e 2.52 -;R05 28-01-2002 DNS Add new items to SETUP Utility for screen position. -;╚чьхэхэш  т build'e 2.51 -;R04 14-09-2001 DNS Added procedure GET_BOARD_NUMBER and - Removed 2 IDE (if with_2ide) -;╚чьхэхэш  т build'e 2.50 -;R03a 02-08-2001 DNS ADD BUILD-IN CD DRIVER (Not release) -;R03 30-07-2001 DNS Developed a new IDE DETECT routine and fixied any bugs -;R02 25-07-2001 DNS Add Secondary IDE -;╚чьхэхэш  т build'e 2.48 -;R01 23-04-2001 DNS Removed procedure GET_ID and make new which -; will be take Model Name. -;R00 xx-xx-2000 DNS New BIOS for Sp2000 build 2.48 -;--------------------------------------------------------------- -;Revisions: -;R01 - ╘єэъЎш  GET_ID эр яырЄрї Sprinter97, яюыєўрыр фрЄ√ ёючфрэш  ш -; яЁю°штъш ╧╟╙, эр яырЄрї Sp2000 с√ыю ттхфшэю яюэ Єшх ьюфхыш. -;R02 - └тЄюфхЄхъЄ 4ї єёЄЁющёЄт -;R03 - ─юсртыхэр ЁрсюЄр тёхї ЇєэъЎшщ ёю тЄюЁ√ь IDE ърэрырь, ЁрсюЄрхЄ -; эхёЄрсшы№эю, тючьюцэю цхыхчю, эрўрЄр ЁрсюЄр эрф ўЄхэшхь ё CD, -; шёяЁртыхэр ю°шсър (яЁш юяЁхфхыхэшш CDROMр эх єърч√трыё  яЁшчэръ -; MASTER/SLAVE т ярЁрьхЄЁрї IDE(#FE:#C1C0-#C1CF). -;R04 - ─юсртыхэ т√тюф эюьхЁр яырЄ√ (ЇєэъЎш  #ED) яЁш ёЄрЁЄх ъюья№■ЄхЁр, -; ЁрсюЄр ёю тЄюЁ√ь IDE яхЁхэхёхэр т єёыютэє■ ъюьяшы Ўш■ (if with_2ide) +;--------------------------------------------------------------- +;Rev Date Name Description +;--------------------------------------------------------------- +;╚чьхэхэш  т build'e 2.53 +;R06 16-02-2002 DNS Add CMOS install routine. Disabled TRDOS install routine. +;╚чьхэхэш  т build'e 2.52 +;R05 28-01-2002 DNS Add new items to SETUP Utility for screen position. +;╚чьхэхэш  т build'e 2.51 +;R04 14-09-2001 DNS Added procedure GET_BOARD_NUMBER and + Removed 2 IDE (if with_2ide) +;╚чьхэхэш  т build'e 2.50 +;R03a 02-08-2001 DNS ADD BUILD-IN CD DRIVER (Not release) +;R03 30-07-2001 DNS Developed a new IDE DETECT routine and fixied any bugs +;R02 25-07-2001 DNS Add Secondary IDE +;╚чьхэхэш  т build'e 2.48 +;R01 23-04-2001 DNS Removed procedure GET_ID and make new which +; will be take Model Name. +;R00 xx-xx-2000 DNS New BIOS for Sp2000 build 2.48 +;--------------------------------------------------------------- +;Revisions: +;R01 - ╘єэъЎш  GET_ID эр яырЄрї Sprinter97, яюыєўрыр фрЄ√ ёючфрэш  ш +; яЁю°штъш ╧╟╙, эр яырЄрї Sp2000 с√ыю ттхфшэю яюэ Єшх ьюфхыш. +;R02 - └тЄюфхЄхъЄ 4ї єёЄЁющёЄт +;R03 - ─юсртыхэр ЁрсюЄр тёхї ЇєэъЎшщ ёю тЄюЁ√ь IDE ърэрырь, ЁрсюЄрхЄ +; эхёЄрсшы№эю, тючьюцэю цхыхчю, эрўрЄр ЁрсюЄр эрф ўЄхэшхь ё CD, +; шёяЁртыхэр ю°шсър (яЁш юяЁхфхыхэшш CDROMр эх єърч√трыё  яЁшчэръ +; MASTER/SLAVE т ярЁрьхЄЁрї IDE(#FE:#C1C0-#C1CF). +;R04 - ─юсртыхэ т√тюф эюьхЁр яырЄ√ (ЇєэъЎш  #ED) яЁш ёЄрЁЄх ъюья№■ЄхЁр, +; ЁрсюЄр ёю тЄюЁ√ь IDE яхЁхэхёхэр т єёыютэє■ ъюьяшы Ўш■ (if with_2ide) ;---------------------------------------------------------------- \ No newline at end of file diff --git a/src/doc/_BIOS.REV b/doc/_BIOS.REV similarity index 98% rename from src/doc/_BIOS.REV rename to doc/_BIOS.REV index 7f08748..718e1e0 100644 --- a/src/doc/_BIOS.REV +++ b/doc/_BIOS.REV @@ -1,121 +1,121 @@ -;--------------------------------------------------------------- -;Rev Date Name Description -;--------------------------------------------------------------- -;Версия 3.04 -;R0046 16.06.2003 IM Исправления для совместимости video с Sp2000 -;R0046 13.06.2003 IM Исправления глюков в режиме ZX -;R0046 02.06.2003 IM Исправления для видео-ОЗУ AS7C1024A-JC12 -;Версия 3.03 -;R0045 05.02.2003 IM Исправления для видео-ОЗУ AS7C1024-JC12 -;Версия 3.02 -;R0044 01.10.2002 IM Добавления в прошивке -;Версия 3.00.253 (10.04.2002) UPDATE01 -;R0043 01.04.2002 IM Перекомпилена прошивка для ПЛМ для SIMM -;R0042 10.03.2002 DNS Setup 253 -;Версия 2.17.252 (03.03.2002) UPDATE-beta-version -;R0041 03-03-2002 IM Подправлены цвета в функции CGA палитры -;R0040 02-03-2002 IM Исправлен глюк функции выдачи портов -;R0039 02-03-2002 IM Добавлены чтение палитры и текстовая CGA палитра -;Версия 2.16.252 (27.02.2002) WORK -;R0038 27-02-2002 IM Сообщение об отсутствии Spectrum-ROM -;R0037 26-02-2002 IM Жестко закреплены страницы 41h..47h за Spectrum.ROM -;R0036 25-02-2002 IM Добавлен внутренний порт для возврата в ZX/FN -;R0035 22-02-2002 IM В BIOS добавлена функция установки Original-INT -;R0034 21-02-2002 IM Добавлена функция BIOS, переключающая 720/1.44 -;Версия 2.15.252 (18.02.2002) WORK -;R0033 18-02-2002 IM Исправление для ISA -;R0032 12-02-2002 IM Добавлена функция чтения ROM-Disk-а -;R0031 12-02-2002 IM Исправлена функция BIOS чтения/записи RAM-Disk-ов -;R0030 12-02-2002 IM Исправлена схема COVOX-Blaster-а -;R0029 08-02-2002 IM Полностью измененa схема доступа к ПЗУ/Fast-RAM/ISA -;Версия 2.14.252 (01.02.2002) WORK -;R0028 01-02-2002 DNS Добавлен сдвиг экрана в setup -;Версия 2.13.251 (10.11.2002) WORK -;R0027 23-01-2002 IM COVOX-Blaster 16bit, 110khz, stereo -;R0026 17-01-2002 IM Исправлена ошибка в функции FN_PIC1 -;Версия 2.12.251 (10.11.2002) RELEASE -;R0025 10-01-2002 IM Смещен экран на 1 знакоместо влево -;Версия 2.11.251 (08.01.2002) WORK -;R0024 10-01-2002 IM Исправление предыдущего исправления -;R0023 08-01-2002 IM Исправления в BIOS-е (перезагрузка ПЛМ) -;R0022 08-01-2002 IM разборки с FDD -;Версия 2.10.251 (25.12.2001) RELEASE -;R0020 23-12-2001 IM коррекция синхронизации в ПЛМ -;R0019 20-12-2001 IM убрано R0018 - NMI -;Версия 2.09.251 (18.12.2001) WORK (for Denis only!) -;R0018 18-12-2001 IM изменена прошивка ПЛМ (добавлен NMI) -;R0017 17-12-2001 IM изменена прошивка ПЛМ (исправления для SIMM) -;R0016 15-12-2001 IM изменена прошивка ПЛМ (исправления SINC) -;R0015 14-12-2001 IM добавлен пункт "L" в Post -;R0014 19-11-2001 IM обезглюченая прошивка для Winbond -;R0013 18-11-2001 IM возвращен старый copyright в Basic128 -;Версия 2.08.251 (17.11.2001) WORK -;R0012 17-11-2001 IM изменена прошивка ПЛМ от 17-ноя-2001 -;Версия 2.07.251 (11.11.2001) WORK -;R0011 11-11-2001 IM изменена прошивка ПЛМ от 11-ноя-2001 -;Версия 2.06.251 (07.11.2001) WORK -;R0010 07-11-2001 IM изменена прошивка ПЛМ от 07-ноя-2001 -;Версия 2.06.251 (05.11.2001) WORK -;R0009 05-11-2001 IM изменена прошивка ПЛМ от 05-ноя-2001 -;Версия 2.05.251 (xx.xx.2001) WORK -;R0008 xx-xx-2001 IM -- описание изменений -- -;Версия 2.04.251 (27.10.2001) RELEASE -;R0007 27-10-2001 IM изменена прошивка ПЛМ от 27-окт-2001 -;R0006 12-10-2001 IM перекопана прошивка ПЛМ от 12-окт-2001 -;Версия 2.04.250 (04.10.2001) WORK -;R0005 04-10-2001 DNS вставлен новый ROM.BIN от 4-окт-2001 -;Версия 2.04.249 (22.09.2001) WORK -;R0004 22-09-2001 DNS вставлен новый ROM.BIN от ...хм.. не помню.. -;R0003 22-09-2001 IM исправление названий в меню "Hardware" -;R0002 22-09-2001 IM вставлен номер ПЗУ и функция биоса для него 0EDh -;R0001 22-09-2001 IM добавлена функция GOTO Spectrum 0FBh -;Версия 2.03.248 (08.06.2001) WORK -;--------------------------------------------------------------- -;Revisions: -;R0044 - Введены биты порта управления управления: -; бит выключения RESET -; бит включения NMI по + -; бит отключения ZX-screen (совмещен с битом Sprinter/Spectrum) -;R0036 - Спец-функция для sprinter.exe Установка внутреннего порта EE -; в не 0 приводит к переходу в установленную страницу и продолжению -; работы программы, установившей перехват -;R0033 - В режиме Sprinter введен старый доступ к ISA через порт 1FFD и -; PAGE3=D0..DF -;R0031 - В функции чтения/записи RAM-Disk-ов был жестокий глюк... -; она вообще не работала -;R0030 - Убраны сбои при проигрывании в режиме с прерываниями, когда -; в CBL записываются лишние или недозаписываются байты... -; по прерыванию CBL внутренний счетчик устанавливается на 00h или 80h -;R0029 - Введено разделение Sprinter и Spectrum режимов. -; В режиме Spectrum и Sprinter-ZX все ПЗУ находятся в ОЗУ -; Изменен доступ к ПЗУ и Fast-RAM доступ стал быстрее. Изменилась -; адресация страниц Fast-RAM и ROM. Адресуются через порт 5F в режиме -; SYSTEM-on. Введен полный запрет доступа к RAM во время работы с ПЗУ -; ОЗУ в этот момент свободно для других функций (потребуется для DMA) -; Скорость работы в Fast-RAM выведена на максимум (без вайтов). -; Выкинуты ПЗУ Spectrum-а из BIOS. -;R0026 - Исправлена ошибка в функции FN_PIC1. Были неверная отработка -; номера окна и несохранение порта RGADR. -;R0024 - последствия R0023, в Турбо возникло занижение скорости из-за -; переключения управляющего регистра на boundary вместо wait -;R0023 - обнаружена и устранена ошибка в программе перезагрузки ПЛМ извне -; (через КЭШ) был неверно инициализирован boundary-регистр Z84C15 -;R0022 - убран глюк работы с FDD, возникший после корректировки работы с -; SIMM-ами (подаваемые на FDD данные обрывались раньше времени) -;R0020 - убран глюк несовместимости прошивки "старой" и "новой" партий плат -;R0018 - "дикий" NMI - по alt+F12 просто подается NMI, ничего более не -; отслеживается -;R0017 - введены задержки (input delay in MAX+) для ввода данных с SIMM-а, -; изменена времянка сигнала /WE на SIMM -;R0016 - Добавлена схема подавления джиттера строчной синхронизации -; давится джиттер +/- 0.25мкс -;R0015 - Перед загрузкой ПЛМ зажигается "L" на индикаторе Post-Tester-a -;R0014 - убран глюк под меню help на Winbond-ах (проверить!) -;R0012 - закреплено исправление для ISA, видео-ОЗУ улучшение для UMC -;R0011 - закреплено исправление для ISA, по видео-ОЗУ откат до 2.04 версии -;R0010 - дополнительное удаление глюков с видео-ОЗУ -;R0009 - частичное удаление глюков с видео-ОЗУ -;R0007 - исправление множественных глюков при работе с SIMM методом -; перекомпиляции с новыми опциями MAX-Plus. -;R0006 - дополнительное исправление глюков при работе с SIMM. -; +;--------------------------------------------------------------- +;Rev Date Name Description +;--------------------------------------------------------------- +;Версия 3.04 +;R0046 16.06.2003 IM Исправления для совместимости video с Sp2000 +;R0046 13.06.2003 IM Исправления глюков в режиме ZX +;R0046 02.06.2003 IM Исправления для видео-ОЗУ AS7C1024A-JC12 +;Версия 3.03 +;R0045 05.02.2003 IM Исправления для видео-ОЗУ AS7C1024-JC12 +;Версия 3.02 +;R0044 01.10.2002 IM Добавления в прошивке +;Версия 3.00.253 (10.04.2002) UPDATE01 +;R0043 01.04.2002 IM Перекомпилена прошивка для ПЛМ для SIMM +;R0042 10.03.2002 DNS Setup 253 +;Версия 2.17.252 (03.03.2002) UPDATE-beta-version +;R0041 03-03-2002 IM Подправлены цвета в функции CGA палитры +;R0040 02-03-2002 IM Исправлен глюк функции выдачи портов +;R0039 02-03-2002 IM Добавлены чтение палитры и текстовая CGA палитра +;Версия 2.16.252 (27.02.2002) WORK +;R0038 27-02-2002 IM Сообщение об отсутствии Spectrum-ROM +;R0037 26-02-2002 IM Жестко закреплены страницы 41h..47h за Spectrum.ROM +;R0036 25-02-2002 IM Добавлен внутренний порт для возврата в ZX/FN +;R0035 22-02-2002 IM В BIOS добавлена функция установки Original-INT +;R0034 21-02-2002 IM Добавлена функция BIOS, переключающая 720/1.44 +;Версия 2.15.252 (18.02.2002) WORK +;R0033 18-02-2002 IM Исправление для ISA +;R0032 12-02-2002 IM Добавлена функция чтения ROM-Disk-а +;R0031 12-02-2002 IM Исправлена функция BIOS чтения/записи RAM-Disk-ов +;R0030 12-02-2002 IM Исправлена схема COVOX-Blaster-а +;R0029 08-02-2002 IM Полностью измененa схема доступа к ПЗУ/Fast-RAM/ISA +;Версия 2.14.252 (01.02.2002) WORK +;R0028 01-02-2002 DNS Добавлен сдвиг экрана в setup +;Версия 2.13.251 (10.11.2002) WORK +;R0027 23-01-2002 IM COVOX-Blaster 16bit, 110khz, stereo +;R0026 17-01-2002 IM Исправлена ошибка в функции FN_PIC1 +;Версия 2.12.251 (10.11.2002) RELEASE +;R0025 10-01-2002 IM Смещен экран на 1 знакоместо влево +;Версия 2.11.251 (08.01.2002) WORK +;R0024 10-01-2002 IM Исправление предыдущего исправления +;R0023 08-01-2002 IM Исправления в BIOS-е (перезагрузка ПЛМ) +;R0022 08-01-2002 IM разборки с FDD +;Версия 2.10.251 (25.12.2001) RELEASE +;R0020 23-12-2001 IM коррекция синхронизации в ПЛМ +;R0019 20-12-2001 IM убрано R0018 - NMI +;Версия 2.09.251 (18.12.2001) WORK (for Denis only!) +;R0018 18-12-2001 IM изменена прошивка ПЛМ (добавлен NMI) +;R0017 17-12-2001 IM изменена прошивка ПЛМ (исправления для SIMM) +;R0016 15-12-2001 IM изменена прошивка ПЛМ (исправления SINC) +;R0015 14-12-2001 IM добавлен пункт "L" в Post +;R0014 19-11-2001 IM обезглюченая прошивка для Winbond +;R0013 18-11-2001 IM возвращен старый copyright в Basic128 +;Версия 2.08.251 (17.11.2001) WORK +;R0012 17-11-2001 IM изменена прошивка ПЛМ от 17-ноя-2001 +;Версия 2.07.251 (11.11.2001) WORK +;R0011 11-11-2001 IM изменена прошивка ПЛМ от 11-ноя-2001 +;Версия 2.06.251 (07.11.2001) WORK +;R0010 07-11-2001 IM изменена прошивка ПЛМ от 07-ноя-2001 +;Версия 2.06.251 (05.11.2001) WORK +;R0009 05-11-2001 IM изменена прошивка ПЛМ от 05-ноя-2001 +;Версия 2.05.251 (xx.xx.2001) WORK +;R0008 xx-xx-2001 IM -- описание изменений -- +;Версия 2.04.251 (27.10.2001) RELEASE +;R0007 27-10-2001 IM изменена прошивка ПЛМ от 27-окт-2001 +;R0006 12-10-2001 IM перекопана прошивка ПЛМ от 12-окт-2001 +;Версия 2.04.250 (04.10.2001) WORK +;R0005 04-10-2001 DNS вставлен новый ROM.BIN от 4-окт-2001 +;Версия 2.04.249 (22.09.2001) WORK +;R0004 22-09-2001 DNS вставлен новый ROM.BIN от ...хм.. не помню.. +;R0003 22-09-2001 IM исправление названий в меню "Hardware" +;R0002 22-09-2001 IM вставлен номер ПЗУ и функция биоса для него 0EDh +;R0001 22-09-2001 IM добавлена функция GOTO Spectrum 0FBh +;Версия 2.03.248 (08.06.2001) WORK +;--------------------------------------------------------------- +;Revisions: +;R0044 - Введены биты порта управления управления: +; бит выключения RESET +; бит включения NMI по + +; бит отключения ZX-screen (совмещен с битом Sprinter/Spectrum) +;R0036 - Спец-функция для sprinter.exe Установка внутреннего порта EE +; в не 0 приводит к переходу в установленную страницу и продолжению +; работы программы, установившей перехват +;R0033 - В режиме Sprinter введен старый доступ к ISA через порт 1FFD и +; PAGE3=D0..DF +;R0031 - В функции чтения/записи RAM-Disk-ов был жестокий глюк... +; она вообще не работала +;R0030 - Убраны сбои при проигрывании в режиме с прерываниями, когда +; в CBL записываются лишние или недозаписываются байты... +; по прерыванию CBL внутренний счетчик устанавливается на 00h или 80h +;R0029 - Введено разделение Sprinter и Spectrum режимов. +; В режиме Spectrum и Sprinter-ZX все ПЗУ находятся в ОЗУ +; Изменен доступ к ПЗУ и Fast-RAM доступ стал быстрее. Изменилась +; адресация страниц Fast-RAM и ROM. Адресуются через порт 5F в режиме +; SYSTEM-on. Введен полный запрет доступа к RAM во время работы с ПЗУ +; ОЗУ в этот момент свободно для других функций (потребуется для DMA) +; Скорость работы в Fast-RAM выведена на максимум (без вайтов). +; Выкинуты ПЗУ Spectrum-а из BIOS. +;R0026 - Исправлена ошибка в функции FN_PIC1. Были неверная отработка +; номера окна и несохранение порта RGADR. +;R0024 - последствия R0023, в Турбо возникло занижение скорости из-за +; переключения управляющего регистра на boundary вместо wait +;R0023 - обнаружена и устранена ошибка в программе перезагрузки ПЛМ извне +; (через КЭШ) был неверно инициализирован boundary-регистр Z84C15 +;R0022 - убран глюк работы с FDD, возникший после корректировки работы с +; SIMM-ами (подаваемые на FDD данные обрывались раньше времени) +;R0020 - убран глюк несовместимости прошивки "старой" и "новой" партий плат +;R0018 - "дикий" NMI - по alt+F12 просто подается NMI, ничего более не +; отслеживается +;R0017 - введены задержки (input delay in MAX+) для ввода данных с SIMM-а, +; изменена времянка сигнала /WE на SIMM +;R0016 - Добавлена схема подавления джиттера строчной синхронизации +; давится джиттер +/- 0.25мкс +;R0015 - Перед загрузкой ПЛМ зажигается "L" на индикаторе Post-Tester-a +;R0014 - убран глюк под меню help на Winbond-ах (проверить!) +;R0012 - закреплено исправление для ISA, видео-ОЗУ улучшение для UMC +;R0011 - закреплено исправление для ISA, по видео-ОЗУ откат до 2.04 версии +;R0010 - дополнительное удаление глюков с видео-ОЗУ +;R0009 - частичное удаление глюков с видео-ОЗУ +;R0007 - исправление множественных глюков при работе с SIMM методом +; перекомпиляции с новыми опциями MAX-Plus. +;R0006 - дополнительное исправление глюков при работе с SIMM. +; diff --git a/src/doc/changes.txt b/doc/changes.txt similarity index 97% rename from src/doc/changes.txt rename to doc/changes.txt index 851f7c5..ed514b5 100644 --- a/src/doc/changes.txt +++ b/doc/changes.txt @@ -1,154 +1,154 @@ -TODO: --? пункт в сетапе "сохранять страницы спектрума при перезагрузке" -- чистить буфер клавы не втупую, а какими-нибудь командами для этих всяких SIO/PIO, если есть - - -Done: -+ немного доработана система перехвата ресета для устранения некоторых глюков и на будущее -+ в сетап работает сохранение настроек HDD "Setup" после первого удачного автодетекта -+ Сделан универсальный загрузчик битстрима для 1k30 и 1k50 -+ Активирован второй канал IDE -+ Нумерация устройств IDE переделана с последовательной на физическую -+ Выбор загрузочного IDE изменён с последовательного на физический -+ Добавлена возможность установки IDE со второго канала в качестве основного и альтернативного загрузочного диска -+ Убрано залипание клавиш при ресете по Ctrl+Alt+Del -+ При некорректных значениях даты и времени в CMOS данные заменяются на дефолтные значения, выводится сообщение об ошибке -+ В Setup добавлен выбор режима развёртки (--------/Scorpion/Pentagon/Spectrum) -+ В Setup добавлен выбор вертикальной синхронизации (--------/312 50Гц/320 49Гц) -+ Добавлена загрузка системы с RAM Disk -+ Исправлен баг со стеком в BLK_TO_RAMD и ещё несколько багов в процедурах чтения с РАМ-ДИСКА -+ Добавлена загрузка RECOVERY с ROM-Disk в ПЗУ -+ При холодном старте устанавливается инт пентагона (а не скорпиона), если в CMOS не задано иное -+ Функция БИОС FN_SINC (#F2) при удачном завершении не сбрасывала флаг CF на выходе - исправлено -+ Новая функция GET_RAMD_NUM -+ Добавленые дополнительные опции в функцию БИОС FN_SINC (#F2), bit7 регистра A теперь отвечает за переключение старого/нового - варианта работы функции (для сохранения совместимости со старыми программами) -+ Новое лого при старте, разрешение изменено с 256х64 16 цветов на 128х72 256 цветов -+ Изменена процедура вывода логотипа, логотип перенесён в другую страницу ПЗУ -+ Смена языка, развёртки и инта происходит в Setup сразу -+ Изменены некоторые надписи и поправлена структура SETUP -+ Доделана функция FN_RESET -+ Доделана функция DCP_CONFIG - функция управления дешифратором портов -+ Убрано задвоение функций 4х -+ Функции 5х перенесены из 0 в 8 страницу ПЗУ -+ Изменена функция инициализации DCP, освободилось около 4,5 кб -+ Теперь зарезервированные под режим спектрума страницы можно легко освободить, номер блока - 1 -+ Добавлены образы ПЗУ ZX-Sprinter для запуска режима спектрума без загрузки DSS -+ Страница BIOS совместима с адаптированными образами ПЗУ спектрума. Теперь отдельные страницы оригинальных SP_EXP и SP_EXP2 - не требуются. -+ Исправлен баг в режиме спектрума. При выборе Clear RAM в меню и последующим выходом в ДОС по CAD зависало, - потому что вызывалась процедура FullInit для очистки памяти. Теперь вместе с очисткой памяти сбрасывается перехват ресета -+ Поправлены буферы, оптимизированы некоторые процедуры, освобождено ббольше 1,5 кб ОЗУ для работы BIOS во время старта -+ Найдено несколько древних мелких огрехов copy/paste, при работе было незаметно, но приятно, что нашлись -+ Поправлен маловероятный, но возможный глюк с переполнением стека при входе-выходе из SETUP -+ Постепенный рефакторинг кода))) -+ Всего и не вспомнить уже... -==================================================================================================================================================================================================================== - -Новое описание функции БИОС FN_SINC (#F2) -LD A,sync_mode ; режим синхронизации - ; Reg A bit7 = 0 - режим очистки экрана и установки INT - ; A=0 режим по умолчанию - используется для очистки - ; страниц режима (отключения вывода всех окон) - ; установка INT из системной переменной - ; A=1 режим Scorpion - ; положение INT-а, как в Scorpion-256 - ; A=2 режим Pentagon - ; положение INT-a как в Pentagon-128 - ; A=3 режим Spectrum - ; положение INT-a как в оригинальном ZX Spectrum - ; A=4 установка INT из настроек пользователя в CMOS - ; - ; Reg A bit7 = 1 - режим установки вертикальной синхронизации и/или wait - ; bit1,bit0: - ; %00 - синхра выставляется из системной переменной - ; %01 - синхра выставляется из CMOS - ; %10 - синхра 320 lines 49 Hz - ; %11 - синхра 312 lines 50 Hz - ; bit2: - ; %0 - игнорировать bit1..bit0 - ; %1 - не игнорировать bit1..bit0 - ; - ; bit3: - ; %0 - no waits (port all_mode bit2 set) - ; %1 - original waits (port all_mode bit2 res) - ; bit4: - ; %0 - игнорировать bit3 - ; %1 - не игнорировать bit3 - ; - ; bit5,bit6 - reserved -; - -DRV_GET_PAR: ; получить параметры носителя - LD A,drv_type ; бит 0..3 - номер устройства - ; бит 4..7 - тип устройства - ; 0 - дисковод - ; 6 - ram-disk - ; 8 - HDD - ; C - CD-ROM - LD C,#58 ; - RST ToBIOS ; NC - нормальное завершение - ; L - число секторов (на целиндр) - ; H - число головок - ; DE - количество цилиндров - ; IX - размер сектора в байтах - ; B - доп. параметры: - ; FDD: - ; бит7 - тип 1.44/720 - ; HDD: - ; бит0 - канал IDE 0/1 - ; бит6 - CHS/LBA -;++++++++ ; RMD: ramdrive block id - ; если в HL,DE все FF - устройства нет - ; CF - нет устройства -; - - -Новое описание функции БИОС FN_RESET -FN_RESET: ; Сброс или перезагрузка - LD B,res_type ; 1 - рестарт, 2 - soft reset, 3 - hard reset, 4 - Reinit spectrum pages - LD C,#FD ; номер функции - RST ToBIOS ; CF -> функция не исполнена, возможные причины: - ; некорректное значение res_type - ; одна из ZX страниц занята (при res_type=4), тогда под zx отдастся только часть страниц - ; старая версия BIOS -; - - -Новое описание функции GET_RAMD_NUM (#9B) -GET_RAMD_NUM: ; получить номер RAM-Disk-а (0..15) по его block id - LD A,id_blk ; идентификатор блока - LD C,#9B ; номер функции - RST ToBIOS ; NC -> A - номер RAM-Disk-а (0..15). - ; CF -> ошибка в идентификаторе блока или биос ниже 2.55 -; - - -Новое описание функции БИОС BLK_RD_WR (#C8) -BLK_RD_WR: ; чтение/запись из/в блок(а) памяти секторами - ; по 256 байт -LD HL,bufer ; адрес буфера данных -LD DE,sector ; абсолютный номер сектора (256b) -LD B,sec_num ; число секторов -LD A,id_blk ; идентификатор блока ИЛИ размер сектора (1 - 256b, 2 - 512b) при command = #46 -LD A',command ; команда 0 - чтение, #FF - запись, #46 чтение из ROM-Disk -LD C,#C8 ; номер функции -; - -s_line_def equ 4 -s_line_cmos equ 5 -s_lines320 equ 6 -s_lines312 equ 7 - -s_wait_orig equ #18 -s_wait_def equ #10 - - -DCP_CONFIG: ; [x] функция управления дешифратором портов. - ;A - если ноль, то вызов функции переинициализации портов PORTS_INIT - ;HL - адрес - ;DE - маска - 0 изменяемые биты, 1 неизменяемые - ;B - порт - ;C - #F4 номер функции -; !FIXIT Функция позволяет открывать/закрывать дополнительные порты компьютера. +TODO: +-? пункт в сетапе "сохранять страницы спектрума при перезагрузке" +- чистить буфер клавы не втупую, а какими-нибудь командами для этих всяких SIO/PIO, если есть + + +Done: ++ немного доработана система перехвата ресета для устранения некоторых глюков и на будущее ++ в сетап работает сохранение настроек HDD "Setup" после первого удачного автодетекта ++ Сделан универсальный загрузчик битстрима для 1k30 и 1k50 ++ Активирован второй канал IDE ++ Нумерация устройств IDE переделана с последовательной на физическую ++ Выбор загрузочного IDE изменён с последовательного на физический ++ Добавлена возможность установки IDE со второго канала в качестве основного и альтернативного загрузочного диска ++ Убрано залипание клавиш при ресете по Ctrl+Alt+Del ++ При некорректных значениях даты и времени в CMOS данные заменяются на дефолтные значения, выводится сообщение об ошибке ++ В Setup добавлен выбор режима развёртки (--------/Scorpion/Pentagon/Spectrum) ++ В Setup добавлен выбор вертикальной синхронизации (--------/312 50Гц/320 49Гц) ++ Добавлена загрузка системы с RAM Disk ++ Исправлен баг со стеком в BLK_TO_RAMD и ещё несколько багов в процедурах чтения с РАМ-ДИСКА ++ Добавлена загрузка RECOVERY с ROM-Disk в ПЗУ ++ При холодном старте устанавливается инт пентагона (а не скорпиона), если в CMOS не задано иное ++ Функция БИОС FN_SINC (#F2) при удачном завершении не сбрасывала флаг CF на выходе - исправлено ++ Новая функция GET_RAMD_NUM ++ Добавленые дополнительные опции в функцию БИОС FN_SINC (#F2), bit7 регистра A теперь отвечает за переключение старого/нового + варианта работы функции (для сохранения совместимости со старыми программами) ++ Новое лого при старте, разрешение изменено с 256х64 16 цветов на 128х72 256 цветов ++ Изменена процедура вывода логотипа, логотип перенесён в другую страницу ПЗУ ++ Смена языка, развёртки и инта происходит в Setup сразу ++ Изменены некоторые надписи и поправлена структура SETUP ++ Доделана функция FN_RESET ++ Доделана функция DCP_CONFIG - функция управления дешифратором портов ++ Убрано задвоение функций 4х ++ Функции 5х перенесены из 0 в 8 страницу ПЗУ ++ Изменена функция инициализации DCP, освободилось около 4,5 кб ++ Теперь зарезервированные под режим спектрума страницы можно легко освободить, номер блока - 1 ++ Добавлены образы ПЗУ ZX-Sprinter для запуска режима спектрума без загрузки DSS ++ Страница BIOS совместима с адаптированными образами ПЗУ спектрума. Теперь отдельные страницы оригинальных SP_EXP и SP_EXP2 + не требуются. ++ Исправлен баг в режиме спектрума. При выборе Clear RAM в меню и последующим выходом в ДОС по CAD зависало, + потому что вызывалась процедура FullInit для очистки памяти. Теперь вместе с очисткой памяти сбрасывается перехват ресета ++ Поправлены буферы, оптимизированы некоторые процедуры, освобождено ббольше 1,5 кб ОЗУ для работы BIOS во время старта ++ Найдено несколько древних мелких огрехов copy/paste, при работе было незаметно, но приятно, что нашлись ++ Поправлен маловероятный, но возможный глюк с переполнением стека при входе-выходе из SETUP ++ Постепенный рефакторинг кода))) ++ Всего и не вспомнить уже... +==================================================================================================================================================================================================================== + +Новое описание функции БИОС FN_SINC (#F2) +LD A,sync_mode ; режим синхронизации + ; Reg A bit7 = 0 - режим очистки экрана и установки INT + ; A=0 режим по умолчанию - используется для очистки + ; страниц режима (отключения вывода всех окон) + ; установка INT из системной переменной + ; A=1 режим Scorpion + ; положение INT-а, как в Scorpion-256 + ; A=2 режим Pentagon + ; положение INT-a как в Pentagon-128 + ; A=3 режим Spectrum + ; положение INT-a как в оригинальном ZX Spectrum + ; A=4 установка INT из настроек пользователя в CMOS + ; + ; Reg A bit7 = 1 - режим установки вертикальной синхронизации и/или wait + ; bit1,bit0: + ; %00 - синхра выставляется из системной переменной + ; %01 - синхра выставляется из CMOS + ; %10 - синхра 320 lines 49 Hz + ; %11 - синхра 312 lines 50 Hz + ; bit2: + ; %0 - игнорировать bit1..bit0 + ; %1 - не игнорировать bit1..bit0 + ; + ; bit3: + ; %0 - no waits (port all_mode bit2 set) + ; %1 - original waits (port all_mode bit2 res) + ; bit4: + ; %0 - игнорировать bit3 + ; %1 - не игнорировать bit3 + ; + ; bit5,bit6 - reserved +; + +DRV_GET_PAR: ; получить параметры носителя + LD A,drv_type ; бит 0..3 - номер устройства + ; бит 4..7 - тип устройства + ; 0 - дисковод + ; 6 - ram-disk + ; 8 - HDD + ; C - CD-ROM + LD C,#58 ; + RST ToBIOS ; NC - нормальное завершение + ; L - число секторов (на целиндр) + ; H - число головок + ; DE - количество цилиндров + ; IX - размер сектора в байтах + ; B - доп. параметры: + ; FDD: + ; бит7 - тип 1.44/720 + ; HDD: + ; бит0 - канал IDE 0/1 + ; бит6 - CHS/LBA +;++++++++ ; RMD: ramdrive block id + ; если в HL,DE все FF - устройства нет + ; CF - нет устройства +; + + +Новое описание функции БИОС FN_RESET +FN_RESET: ; Сброс или перезагрузка + LD B,res_type ; 1 - рестарт, 2 - soft reset, 3 - hard reset, 4 - Reinit spectrum pages + LD C,#FD ; номер функции + RST ToBIOS ; CF -> функция не исполнена, возможные причины: + ; некорректное значение res_type + ; одна из ZX страниц занята (при res_type=4), тогда под zx отдастся только часть страниц + ; старая версия BIOS +; + + +Новое описание функции GET_RAMD_NUM (#9B) +GET_RAMD_NUM: ; получить номер RAM-Disk-а (0..15) по его block id + LD A,id_blk ; идентификатор блока + LD C,#9B ; номер функции + RST ToBIOS ; NC -> A - номер RAM-Disk-а (0..15). + ; CF -> ошибка в идентификаторе блока или биос ниже 2.55 +; + + +Новое описание функции БИОС BLK_RD_WR (#C8) +BLK_RD_WR: ; чтение/запись из/в блок(а) памяти секторами + ; по 256 байт +LD HL,bufer ; адрес буфера данных +LD DE,sector ; абсолютный номер сектора (256b) +LD B,sec_num ; число секторов +LD A,id_blk ; идентификатор блока ИЛИ размер сектора (1 - 256b, 2 - 512b) при command = #46 +LD A',command ; команда 0 - чтение, #FF - запись, #46 чтение из ROM-Disk +LD C,#C8 ; номер функции +; + +s_line_def equ 4 +s_line_cmos equ 5 +s_lines320 equ 6 +s_lines312 equ 7 + +s_wait_orig equ #18 +s_wait_def equ #10 + + +DCP_CONFIG: ; [x] функция управления дешифратором портов. + ;A - если ноль, то вызов функции переинициализации портов PORTS_INIT + ;HL - адрес + ;DE - маска - 0 изменяемые биты, 1 неизменяемые + ;B - порт + ;C - #F4 номер функции +; !FIXIT Функция позволяет открывать/закрывать дополнительные порты компьютера. ; \ No newline at end of file diff --git a/src/doc/╨┐╨╡╤А╨╡╤Е╨▓╨░╤В╤Л ╤А╨╡╤Б╨╡╤В╨░.txt b/doc/╨┐╨╡╤А╨╡╤Е╨▓╨░╤В╤Л ╤А╨╡╤Б╨╡╤В╨░.txt similarity index 96% rename from src/doc/╨┐╨╡╤А╨╡╤Е╨▓╨░╤В╤Л ╤А╨╡╤Б╨╡╤В╨░.txt rename to doc/╨┐╨╡╤А╨╡╤Е╨▓╨░╤В╤Л ╤А╨╡╤Б╨╡╤В╨░.txt index 7cf0991..19f8d7c 100644 --- a/src/doc/╨┐╨╡╤А╨╡╤Е╨▓╨░╤В╤Л ╤А╨╡╤Б╨╡╤В╨░.txt +++ b/doc/╨┐╨╡╤А╨╡╤Е╨▓╨░╤В╤Л ╤А╨╡╤Б╨╡╤В╨░.txt @@ -1,37 +1,37 @@ -Сейчас при старте BIOS обрабатываются три варианта перехвата Reset: - --------------------------------[Вариант 1]------------------------------ -Почти сразу после ресета специальная процедура проверяет в странице #40 -в банке 3 по смещению #FFE0 (RESTARTS) наличие программы перехватчика. -Первые 12 байт программы должны быть такими для перехвата: - ORG #FFE0 -RESTARTS_PROG: - LD HL,RESTARTS ; 3 - LD B,16 ; 2 -.loop: - LD (HL),0 ; 2 - INC HL ; 1 - DJNZ .loop ; 2 - NOP ; 1 - NOP ; 1 -; ORG #FFEC тут размещается программа перехватчик пользователя -; остаётся 20 байтов на программу. - -При данном варианте загрузки железо Спринтера не проинициализировано, -не работает ещё даже карта портов. Скорее всего, такой вариант -перехвата - это наследие Sp97. Как вариант, его можно использовать в случае -запуска конфы сильно отличающейся от той, что ожидает BIOS. Для этого нужно, -чтоб при старте альтеры конфа подключала следующие страницы по банкам: -BANK0 - ROM #08 -BANK1 - RAM #05 -BANK2 - RAM #02 -BANK3 - RAM #40 ------------------------------------------------------------------------- - --------------------------------[Вариант 2]------------------------------ - ------------------------------------------------------------------------- - --------------------------------[Вариант 3]------------------------------ - +Сейчас при старте BIOS обрабатываются три варианта перехвата Reset: + +-------------------------------[Вариант 1]------------------------------ +Почти сразу после ресета специальная процедура проверяет в странице #40 +в банке 3 по смещению #FFE0 (RESTARTS) наличие программы перехватчика. +Первые 12 байт программы должны быть такими для перехвата: + ORG #FFE0 +RESTARTS_PROG: + LD HL,RESTARTS ; 3 + LD B,16 ; 2 +.loop: + LD (HL),0 ; 2 + INC HL ; 1 + DJNZ .loop ; 2 + NOP ; 1 + NOP ; 1 +; ORG #FFEC тут размещается программа перехватчик пользователя +; остаётся 20 байтов на программу. + +При данном варианте загрузки железо Спринтера не проинициализировано, +не работает ещё даже карта портов. Скорее всего, такой вариант +перехвата - это наследие Sp97. Как вариант, его можно использовать в случае +запуска конфы сильно отличающейся от той, что ожидает BIOS. Для этого нужно, +чтоб при старте альтеры конфа подключала следующие страницы по банкам: +BANK0 - ROM #08 +BANK1 - RAM #05 +BANK2 - RAM #02 +BANK3 - RAM #40 +------------------------------------------------------------------------ + +-------------------------------[Вариант 2]------------------------------ + +------------------------------------------------------------------------ + +-------------------------------[Вариант 3]------------------------------ + ------------------------------------------------------------------------ \ No newline at end of file diff --git a/src/altera/acex/k30/ACCELER.ACF b/src/altera/acex/k30/ACCELER.ACF deleted file mode 100644 index 5480845..0000000 --- a/src/altera/acex/k30/ACCELER.ACF +++ /dev/null @@ -1,568 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP acceler -BEGIN - DEVICE = EP1K30QC208-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 200MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - DEVICE_FAMILY = ACEX1K; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 5.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN = AUTO; - MINIMIZATION = FULL; - IGNORE_SOFT_BUFFERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/acex/k30/ACCELER.INC b/src/altera/acex/k30/ACCELER.INC deleted file mode 100644 index 8610479..0000000 --- a/src/altera/acex/k30/ACCELER.INC +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Fri Jan 25 12:59:19 2002 - -FUNCTION acceler (clk42, /reset, ct[2..0], ras, cas, clk_z80, mc_end, mc_begin, mc_type, mc_write, ai[15..0], di[7..0], /io, /rd, /wr, /mr, /rf, /m1, /iom, dcp[7..0], mdi[15..0], acc_ena, hddr[7..0], hdd_flip) - RETURNS (continue, ao[15..0], do[7..0], mdo[15..0], md[7..0], g_line[7..0], glisser, acc_on, double_cas, acc_dir[7..0]); diff --git a/src/altera/acex/k30/ACCELER.TDF b/src/altera/acex/k30/ACCELER.TDF deleted file mode 100644 index 45ccc00..0000000 --- a/src/altera/acex/k30/ACCELER.TDF +++ /dev/null @@ -1,374 +0,0 @@ - - TITLE "ACCELERATOR"; - -INCLUDE "lpm_ram_dp"; - -SUBDESIGN acceler - ( - CLK42 : INPUT; - /RESET : INPUT; - CT[2..0] : INPUT; - - RAS : INPUT; - CAS : INPUT; - CLK_Z80 : INPUT; - - CONTINUE : OUTPUT; - - MC_END : INPUT; - MC_BEGIN : INPUT; - MC_TYPE : INPUT; - MC_WRITE : INPUT; --- MCA[1..0] : INPUT; - - AI[15..0] : INPUT; - DI[7..0] : INPUT; - - AO[15..0] : OUTPUT; - DO[7..0] : OUTPUT; - - /IO : INPUT; - /RD : INPUT; - /WR : INPUT; - /MR : INPUT; - /RF : INPUT; - /M1 : INPUT; - /IOM : INPUT; - - DCP[7..0] : INPUT; - - MDI[15..0] : INPUT; - MDO[15..0] : OUTPUT; - MD[7..0] : OUTPUT; - - G_LINE[7..0]: OUTPUT; - - GLISSER : OUTPUT; - - ACC_ON : OUTPUT; - - ACC_ENA : INPUT; - - DOUBLE_CAS : OUTPUT; - - HDDR[7..0] : INPUT; - HDD_FLIP : INPUT; - - ACC_DIR[7..0] : OUTPUT; - - ) -VARIABLE - - RAM : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8); - - DO[7..0] : DFFE; - MDO[15..0] : DFFE; - - PRF_CMD : DFFE; - ED_CMD : DFFE; - CB_CMD : DFFE; - ID_CMD : DFFE; - IN_OUT_CMD : DFFE; - - CORRECT_1F : NODE; - - ACC_BLK : DFF; - - RETI : DFFE; - RETN : DFFE; - - AA[15..0] : DFFE; - - RGACC[7..0] : DFFE; - AGR[7..0] : DFFE; - ACC_CNT[7..0] : DFFE; - - START_ACC : NODE; - ACC_END : DFFE; - FN_ACC[2..0]: DFFE; - ACC_MODE[3..0] : DFFE; - - MD[7..0] : LCELL; - XMD[7..0] : DFF; - XMDH[7..0] : DFF; - - ACC_DIR[7..0] : LCELL; - - /M1M : NODE; - - ACC_GO : NODE; - ACC_GO_1 : NODE; - - RAM_WR : NODE; - - STATE_EI : DFFE; - --- HDDR[7..0] : DFFE; - - XAGR[7..0] : DFFE; - AAGR[9..0] : DFFE; - XCNT[7..0] : DFFE; - ALT_ACC : NODE; - - RAM_ADR[7..0] : NODE; - ACC_C : NODE; - WR_C7 : NODE; - - XCNT_AGR[15..0] : NODE; - - MDOX[7..0] : DFF; - MDOY[7..0] : DFF; - - GLISS_R : DFF; - - ACC_TIME : NODE; - -BEGIN - - ACC_ON = ACC_DIR0; - - /M1M = DFF(!/M1,CLK_Z80,/RESET,); - - PRF_CMD.clk = /MR; - PRF_CMD.ena = /M1M; - PRF_CMD.d = (DI[] == B"11XX1XX1") & - ((DI[] == B"XX00X01X") or -- CB - (DI[] == B"XX01X10X") or -- DD - (DI[] == B"XX10X10X") or -- ED - (DI[] == B"XX11X10X")); -- FD - --- === interrupt === 0 - disable; 1 - enable - - STATE_EI.clk = /MR; - STATE_EI.ena = /M1M & !PRF_CMD & (DI[] == B"1111X011"); - STATE_EI.d = DI3; - --- RETI comand - - ED_CMD.clk = /MR; - ED_CMD.ena = /M1M; - ED_CMD.d = (DI[] == H"ED"); - - RETI.clk = /MR; - RETI.ena = /M1M; - RETI.d = ED_CMD & (DI[] == H"4D"); - --- "1" on the RETI triger is the end of interupt sycle. - - RETN.clk = /MR; - RETN.ena = /M1M; - RETN.d = ED_CMD & (DI[] == H"45"); - --- The end of NMI sycle. - - ACC_BLK.clk = /M1; - ACC_BLK.d = DFF(((/IO & ACC_BLK) or (!ACC_BLK & RETI)),CLK_Z80,,); - ACC_BLK.prn = /RESET & ACC_MODE3; - - CB_CMD.clk = /MR; - ID_CMD.clk = /MR; - CB_CMD.ena = /M1M; - ID_CMD.ena = /M1M; - - CB_CMD.d = (DI[] == H"CB"); - ID_CMD.d = (DI[] == B"11X11101"); - - IN_OUT_CMD.clk = /MR; - IN_OUT_CMD.ena = /M1M; - IN_OUT_CMD.d = (DI[] == B"1101X011") & !PRF_CMD; -- D3/DB - IN_OUT_CMD.clrn = /IO; - - CORRECT_1F = LCELL(IN_OUT_CMD & (DO[] == H"1F") & !/MR & !/RD); - DO[4..3].clrn = !CORRECT_1F; - - ACC_GO = DFFE((CAS or START_ACC),CLK42,,(!/MR & /M1),CT1); - ACC_GO_1 = DFF(ACC_GO,CLK42,,); - --- == accelerator number == - - RGACC[].clk = /MR; - RGACC[].ena = DFF((/M1 & /RF & ACC_DIR3),CLK_Z80,,); - RGACC[].d = DI[]; - --- == accelerator grafic line == - - AGR[].clk = CLK42; - AGR[].ena = !DFF((/IOM or /WR or !DFF((DCP[] == B"1100X100"),CLK42,,)),CLK42,,) or - !(!ACC_DIR4 or ACC_GO or !ACC_GO_1); - - CASE DFF(START_ACC,CLK42,,) IS - WHEN 0 => AGR[].d = AGR[] + 1; - WHEN 1 => AGR[].d = DI[]; - END CASE; - - AGR[].clrn = /RESET; - - G_LINE[] = AGR[]; - --- == accelerator counter == - - ACC_C = (!ACC_GO & DFF(((CT0 & !/RD) or (CT1 & !/WR)),CLK42,,)); - ACC_CNT[].clk = CLK42; --- ACC_CNT[].ena = START_ACC or (ACC_C & ACC_DIR2); - ACC_CNT[].ena = LCELL(START_ACC or (ACC_C & ACC_DIR2)); - - CASE DFF(START_ACC,CLK42,,) IS - WHEN 1 => ACC_CNT[].d = RGACC[]; - WHEN 0 => ACC_CNT[].d = ACC_CNT[] - 1; - END CASE; - - WR_C7 = DFF((/IOM or DFF(!/IOM,CLK42,,) or /WR or DFF(!(DCP[] == B"1100X111"),CLK42,,)),CLK42,,); - ALT_ACC = DFF(VCC,WR_C7,/RESET,); - - (AAGR[].ena,XCNT[].ena,XAGR[].ena) = LCELL(!WR_C7 or (ACC_DIR1 & ACC_C)); - (AAGR[].clk,XCNT[].clk,XAGR[].clk) = CLK42; - - XCNT_AGR[15..0] = (XCNT[],XAGR[]) + (B"000000",AAGR[]); - - CASE !DFF(START_ACC,CLK42,,) IS - WHEN 1 => AAGR[].d = AAGR[]; - (XCNT[].d,XAGR[].d) = XCNT_AGR[15..0]; - WHEN 0 => AAGR[].d = (AI9,AI8,DI[]); - (XCNT[].d,XAGR[].d) = (B"00",AI[15..10],B"00000000"); - END CASE; - --- == accelerator dir == - - START_ACC = LCELL(LCELL(/MR or !/M1 or !/RF or !ACC_BLK) or (!ACC_DIR0 or MC_TYPE)); - - DOUBLE_CAS= LCELL(ACC_DIR6 & !START_ACC); - - ACC_END.clk = CLK42; - ACC_END.ena = !ACC_GO & ACC_GO_1; - ACC_END.prn = /M1; - ACC_END.d = (ACC_CNT[] == 1) or !ACC_DIR2; - - CONTINUE = ACC_END; - - CASE ACC_MODE[2..0] IS - WHEN 0 => ACC_DIR[] = B"00000000"; % LD B,B % - WHEN 1 => ACC_DIR[] = B"00100101"; % LD C,C % % fill by constant % - WHEN 2 => ACC_DIR[] = B"00001001"; % LD D,D % % load count accelerator % - WHEN 3 => ACC_DIR[] = B"00010101"; % LD E,E % % fill by constant VERTICAL % - WHEN 4 => ACC_DIR[] = B"01000001"; % LD H,H % % duble byte fn % - WHEN 5 => ACC_DIR[] = B"00100111"; % LD L,L % % copy line % - WHEN 6 => ACC_DIR[] = B"00000000"; % HALT % - WHEN 7 => ACC_DIR[] = B"00010111"; % LD A,A % % copy line VERTICAL % - END CASE; - --- == accelerator mode == - - ACC_MODE[].clk = /MR; - ACC_MODE[].ena = DFF((!/M1 & !PRF_CMD & - LCELL((DI[] == B"XXX00X00") or - (DI[] == B"XXX01X01") or - (DI[] == B"XXX10X10") or - (DI[] == B"XXX11X11")) & - LCELL((DI[] == B"010XX0XX") or - (DI[] == B"011XX1XX"))),CLK_Z80,,); - ACC_MODE[].d = (VCC,DI[2..0]); - ACC_MODE[2..0].clrn = /RESET & ACC_ENA; - ACC_MODE[3].clrn = /RESET & !DFF(ACC_MODE3,CLK_Z80,,); - --- == accelerator datas == - - CASE DFFE(AA0,CLK42,,,(CT2 & CT1)) IS - WHEN 0 => MD[] = MDI[7..0]; --- GLISSER = DFF((MDO[7..0] == H"FF"),CLK42,,); - WHEN 1 => MD[] = MDI[15..8]; --- GLISSER = DFF((MDO[15..8] == H"FF"),CLK42,,); - END CASE; - - GLISS_R.clk = CLK42; - CASE ACC_DIR1 IS - WHEN 0 => GLISS_R = LCELL(DI[] == H"FF"); - WHEN 1 => GLISS_R = LCELL(RAM.q[7..4] == H"F") & LCELL(RAM.q[3..0] == H"F"); - END CASE; - GLISSER = GLISS_R; - --- MDO[].clk = !CLK42; - MDO[].clk = CLK42; - - MDO[].ena = CAS; - - MDOX[].clk = CLK42; - MDOY[].clk = CLK42; - - CASE LCELL(MC_END & HDD_FLIP) IS - WHEN 0 => MDOX[7..0] = DI[]; - WHEN 1 => MDOX[7..0] = HDDR[]; - END CASE; - - CASE ACC_DIR6 IS - WHEN 0 => MDOY[7..0] = DI[]; - WHEN 1 => MDOY[7..0] = HDDR[]; - END CASE; - - CASE LCELL(/IO & ACC_DIR1) IS - WHEN 0 => MDO[].d = (MDOY[],MDOX[]); - WHEN 1 => MDO[].d = (RAM.q[7..0],RAM.q[7..0]); - END CASE; - - DO[].clk = DFF(MC_END,!CLK42,,); --- DO[].clk = !CLK42; - DO[].ena = VCC; --- DO[].ena = DFF(!MC_END,CLK42,,); - DO[].d = MD[]; - --- == accelerator functions == - - FN_ACC[].clk = /MR; - FN_ACC[].ena = /M1M; - FN_ACC[].d = LCELL(DI7 & !DI6 & !PRF_CMD) & !(DI[5..3]); - - XMDH[].clk = !CLK42; - XMDH[] = MDI[15..8]; - - XMD[].clk = !CLK42; - CASE FN_ACC[1..0] IS - WHEN 0 => - XMD[] = MD[]; % BE % - WHEN 1 => - XMD[] = MD[] or RAM.q[7..0]; % B6 % - WHEN 2 => - XMD[] = MD[] xor RAM.q[7..0]; % AE % - WHEN 3 => - XMD[] = MD[] & RAM.q[7..0]; % A6 % - END CASE; - - CASE ALT_ACC IS - WHEN 0 => RAM_ADR[] = ACC_CNT[]; - WHEN 1 => RAM_ADR[] = XCNT[]; - END CASE; - - ACC_TIME = LCELL((!ACC_END or !DFFE(ACC_END,CLK42,,,(CT1 & CT2)))); - --- RAM_WR = DFF((!/RD & (!ACC_GO & CT0) & ACC_TIME),CLK42,,); - RAM_WR = DFF((!/RD & (!ACC_GO & CT0) & ACC_DIR1),CLK42,,); - - RAM.wren = RAM_WR; - RAM.data[] = (XMD[],XMD[]); --- RAM.wraddress[] = ACC_CNT[]; - RAM.wraddress[] = RAM_ADR[]; - RAM.wrclock = CLK42; - RAM.wrclken = VCC; - RAM.rden = VCC; --- RAM.rdaddress[] = ACC_CNT[]; - RAM.rdaddress[] = RAM_ADR[]; - RAM.rdclock = CLK42; - RAM.rdclken = VCC; - - AA[].clk = CLK42; --- AA[].ena = START_ACC or (ACC_DIR5 & !ACC_GO & ACC_GO_1); - AA[].ena = LCELL(START_ACC or (ACC_DIR5 & !(CAS or START_ACC) & (ACC_GO or (ACC_GO_1 & ACC_DIR6)))); - - CASE DFF(START_ACC,CLK42,,) IS - WHEN 1 => AA[].d = AI[]; --- WHEN 0 => AA[].d = AA[] + (B"00000000000000",ACC_DIR6,!ACC_DIR6); - WHEN 0 => AA[].d = AA[] + 1; - END CASE; - - AO[] = (AA[15..0]); - -END; - diff --git a/src/altera/acex/k30/AY.ACF b/src/altera/acex/k30/AY.ACF deleted file mode 100644 index 2f068ab..0000000 --- a/src/altera/acex/k30/AY.ACF +++ /dev/null @@ -1,578 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP ay -BEGIN - DEVICE = EP1K30QC208-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - AUTO_DEVICE = EP1K10FC256-1; - AUTO_DEVICE = EP1K10QC208-1; - AUTO_DEVICE = EP1K10TC144-1; - AUTO_DEVICE = EP1K10TC100-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = ON; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - DEVICE_FAMILY = ACEX1K; - STYLE = NORMAL; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL93; - VHDL_READER_VERSION = VHDL93; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - BIDIR_PIN = STRONG; - END_TIME = 0.0ns; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - LAST_MAXPLUS2_VERSION = 10.0; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 10.0; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/acex/k30/AY.INC b/src/altera/acex/k30/AY.INC deleted file mode 100644 index aec944a..0000000 --- a/src/altera/acex/k30/AY.INC +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Sat May 26 07:09:40 2001 - -FUNCTION ay (/reset, clk42, ay_t[8..0], ay_d_wr, ay_a_wr, d[7..0], beeper) - RETURNS (do[7..0], ay_ch_a[3..0], ay_ch_b[3..0], ay_ch_c[3..0], ay_ch_l[9..0], ay_ch_r[9..0], ay_ch_val); diff --git a/src/altera/acex/k30/AY.MIF b/src/altera/acex/k30/AY.MIF deleted file mode 100644 index 1ed1d5e..0000000 --- a/src/altera/acex/k30/AY.MIF +++ /dev/null @@ -1,154 +0,0 @@ -DEPTH = 256; % Memory depth and width are required % -WIDTH = 8; % Enter a decimal number % - -ADDRESS_RADIX = HEX; % Address and value radixes are optional % -DATA_RADIX = BIN; % Enter BIN, DEC, HEX, or OCT; unless % - % otherwise specified, radixes = HEX % - --- Specify values for addresses, which can be single address or range - -CONTENT -BEGIN - [0..7F] : 00000000; - 0 : 00000000 00000000 - 00000000 00000000 - 00000000 00000000 - 00000000 11111111 - 00000000 00000000 - 00000000 00000000 - 00000000 00000000 - 00000000 00000000 - - 11111111 11111111 - 11111111 11111111 - 11111111 11111111 - 11111111 11111111 - 11111111 11111111 - 11111111 11111111 - 11111111 00000001 - 00000000 11111111 - ; - 1E : 00000000; - 1F : 11111111; - - 30 : 00000000 - 00000010 - 00000011 - 00000100 - 00000110 - 00001000 - 00001011 - 00010000 - 00010110 - 00100000 - 00101101 - 01000000 - 01011010 - 10000000 - 10110100 - 11111111; - - [80..FF]: 00000000; - -% - 000 - set CX, load & sub 1 - 001 - load - 010 - save, if NZ,reset CX - 011 - bit_out - 100 - load & sub 1 - 101 - load & sub C - 110 - if CX, save - 111 - read states /RESET, AY_F_RES -% - - 80 : - 00010000 -- set C,CX load reg10 & sub C - 01010000 -- save reg10 & reset CX if NZ - 10110001 -- load reg11 & sub C - 01010001 -- save reg11 & reset CX if NZ - - 00100000 -- set C load reg00 & sub C - 11010000 -- save reg10 if CX - 00100001 -- load reg01 & sub C - 11010001 -- save reg11 if CX - - 00101000 -- load reg08 - 01100001 -- set AY_OUT1 - - - 00010010 -- set C,CX load reg12 & sub C - 01010010 -- save reg12 & reset CX if NZ - 10110011 -- load reg13 & sub C - 01010011 -- save reg13 & reset CX if NZ - - 00100010 -- set C load reg02 & sub C - 11010010 -- save reg12 if CX - 00100011 -- load reg03 & reset CX if NZ - 11010011 -- save reg13 if CX - - 00101001 -- load reg09 - 01100010 -- set AY_OUT2 - - - 00010100 -- set C,CX load reg14 & sub C - 01010100 -- save reg14 & reset CX if NZ - 10110101 -- load reg15 & sub C - 01010101 -- save reg15 & reset CX if NZ - - 00100100 -- set C load reg04 & sub C - 11010100 -- save reg14 if CX - 00100101 -- load reg05 & reset CX if NZ - 11010101 -- save reg15 if CX - - 00101010 -- load reg0A - 01100011 -- set AY_OUT3 - - - 00010111 -- set C,CX load reg17 & dec 1 - 01010111 -- save reg17 & reset CX if NZ - 00100110 -- load reg06 dec 1 *********** - 11010111 -- save reg17 if CX - - 01100100 -- set AY_SH - 00000000 -- NOP - - 00011000 -- set C,CX load reg18 & sub C - 01011000 -- save reg18 & reset CX if NZ - 10111001 -- load reg19 & sub C - 01011001 -- save reg19 & reset CX if NZ - - 00101011 -- load reg0B & sub 1 - 11011000 -- save reg18 if CX - 00101100 -- load reg0C & sub C - 11011001 -- save reg19 if CX - - 01100101 -- set FORM_CLK - - 11100000 -- set CX = AY_F_RES - --- 00101011 -- load reg0B & sub 1 --- 11011000 -- save reg18 if CX --- 00101100 -- load reg0C & sub C --- 11011001 -- save reg19 if CX - - 11100001 -- set CX = /RESET - - 00111111 -- load reg1F - FF *********** - 11000111 -- save reg07 if CX - 00111110 -- load reg1E - 00 *********** - - 11001101 -- save reg0D if CX - 11001000 -- save reg08 if CX - 11001001 -- save reg09 if CX - 11001010 -- save reg0a if CX - - 00100111 -- load reg07 *********** - 01100110 -- set keys_bits - - 00101101 -- load reg0D *********** - 01100111 -- set keys_bits SET-FORM-bits - --- 01100000 -- set AY_OUT_ALL - - ; -END ; diff --git a/src/altera/acex/k30/AY.TDF b/src/altera/acex/k30/AY.TDF deleted file mode 100644 index c090bef..0000000 --- a/src/altera/acex/k30/AY.TDF +++ /dev/null @@ -1,368 +0,0 @@ - - TITLE "AY-3-8910"; - -include "lpm_ram_dq"; -include "lpm_add_sub"; - -SUBDESIGN ay - ( - /RESET : INPUT; - CLK42 : INPUT; -- такты 42 - AY_T[8..0] : INPUT; -- внешний счетчик тактов - - AY_D_WR : INPUT; - AY_A_WR : INPUT; - - D[7..0] : INPUT; - DO[7..0] : OUTPUT; - - AY_CH_A[3..0] : OUTPUT; - AY_CH_B[3..0] : OUTPUT; - AY_CH_C[3..0] : OUTPUT; - - AY_CH_L[9..0] : OUTPUT; - AY_CH_R[9..0] : OUTPUT; - - AY_CH_VAL : OUTPUT; -- chanels data valid - BEEPER : INPUT; - - ) -VARIABLE - - BD[7..0] : DFFE; - BWR : DFFE; - AWR : DFFE; - - AY_DI[7..0] : NODE; - AY_DO[7..0] : NODE; - - AY_F_RES : NODE; - AY_F_R1 : NODE; - - AY_ADR[7..0] : DFF; - AY_AAX[1..0] : DFF; - - AY_X_[5..0] : DFFE; - AY_GF[3..0] : DFFE; - - AY_OUT[3..1] : DFFE; - AY_OUTS[3..1] : NODE; - - AY_CLK1 : NODE; - AY_SH[16..0] : DFFE; - AY_AA[3..0] : DFF; - AY_SH_Q : NODE; - - AY_ABLK : NODE; - AY_BBLK : NODE; - AY_AINV : NODE; - AY_BINV : NODE; - - AY_ADRX[7..0] : NODE; - AY_CCC[8..0] : DFF; - AY_AX[7..0] : NODE; - AY_C : DFFE; - AY_CX : DFFE; - AY_CXX : DFFE; - AY_WR : NODE; - AY_VA[3..0] : DFFE; - AY_VAR : DFFE; - AY_VX : DFFE; - - AY_DAT_WR : DFF; - AY_DAT[7..0] : DFFE; - - AY_DQ1[3..0] : DFFE; - AY_DQ2[3..0] : DFFE; - AY_DQ3[3..0] : DFFE; - - AY_DQX[3..0] : DFFE; - AY_OUTSX : NODE; - AY_CH_MIX : DFF; - - AY_AMP[3..0] : DFF; - - AY_DD[7..0] : DFFE; - - AY_CH_A[3..0] : DFF; - AY_CH_B[3..0] : DFF; - AY_CH_C[3..0] : DFF; - - AY_CH_CS[8..0] : DFF; - AY_CH_LX[10..0] : DFFE; - AY_CH_RX[10..0] : DFFE; - --- AY_CH_L[9..0] : DFF; --- AY_CH_R[9..0] : DFF; - - AY_CH_DIR[7..0] : DFFE; - - AY_OUTS1X : NODE; - AY_OUTS2X : NODE; - AY_OUTS3X : NODE; - - AY_OUTS1Y : NODE; --- AY_OUTS2Y : NODE; - AY_OUTS3Y : NODE; - -BEGIN - --- ====== AY8910 III version ========= - - BD[].clk = CLK42; - AWR.clk = CLK42; - BWR.clk = CLK42; - - BD[].ena = AY_CCC1; - BWR.ena = AY_CCC1; - AWR.ena = AY_CCC1; - - BD[7..5].clrn = !((AY_ADR[3..0] == B"00X1") or -- ch 1,2 - (AY_ADR[3..0] == B"0101") or -- ch 3 - (AY_ADR[3..0] == B"0110") -- ch shum - ); - BD4.clrn = !((AY_ADR[3..0] == B"00X1") or -- ch 1,2 - (AY_ADR[3..0] == B"0101") -- ch 3 - ); - - BD[] = D[]; - - AWR = AY_A_WR; --- BWR = (AY_D_WR or !(AY_ADR[5..4] == 0)); - BWR = AY_D_WR; - - AY_CH_DIR[].clk = AY_D_WR; - AY_CH_DIR[].ena = (AY_ADR[] == B"XXX10000"); - AY_CH_DIR[].d = D[]; - AY_CH_DIR[].clrn= /RESET; - - AY_CCC[].clk = CLK42; - AY_CCC[8..0].d = AY_T[]; - - (AY_AAX[].clk,AY_ADR[].clk) = AY_A_WR; - AY_ADR[].d = D[]; - - -- Write to 0D register - AY_AAX0.d = (D[3..0] == B"1101"); - -- Write to AMP registers 08,09,0A - AY_AAX1.d = (D[3..0] == B"1000") or (D[3..0] == B"1001") or (D[3..0] == B"1010"); - - -- reset signal for form generator --- AY_F_RES = DFF(VCC,DFF((!((AY_DO[7..5] == B"111") & AY_CCC1 & !AY_DO0) or AY_F_RES),CLK42,,),LCELL(!(AY_AAX0 or (AY_AAX1 & BD4)) or BWR),); - --- AY_F_R1 = DFF((!(AY_AAX0 or (AY_AAX1)) or BWR),CLK42,,); - AY_F_R1 = DFF((!AY_AAX0 or BWR),CLK42,,); - AY_F_RES = DFF(DFF(VCC,AY_CCC7,AY_F_R1,),AY_CCC7,AY_F_R1,); - - AY_X_[].prn = VCC; - --- AY_GF[3..0].clrn = /RESET; --- AY_GF[3..0].clk = AY_D_WR; --- AY_GF[3..0].ena = AY_ADR[] == B"XXXX1101"; --- AY_GF[3..0].d = D[3..0]; - - AY_DAT_WR.clk = CLK42; - - CASE AY_CCC[1..0] IS - WHEN B"00" => - AY_AX[] = (VCC,GND,AY_CCC[7..2]); -- CMD adress - AY_WR = GND; - AY_DI[] = AY_DAT[]; - - AY_DAT_WR = VCC; - - WHEN B"01" => - AY_AX[] = (B"0000",AY_ADR[3..0]); - AY_WR = !BWR; - AY_DI[] = BD[]; - - AY_DAT_WR = VCC; - - WHEN B"1X" => - AY_AX[] = (GND,GND,GND,AY_DO[4..0]); - AY_DAT_WR = AY_DO6; - AY_WR = !LCELL(!(AY_DO[7..5] == B"010") & - !((AY_DO[7..5] == B"110") & AY_CXX)); --- !((AY_DO[7..5] == B"110") & AY_CX)); - AY_DI[] = AY_DAT[]; - END CASE; - - AY_DD[].clk = CLK42; - AY_DD[].ena = !AY_CCC1 & !AY_CCC0; - AY_DD[] = AY_DO[]; - - AY_DO[] = lpm_ram_dq(AY_DI[],AY_AX[],AY_WR,CLK42,CLK42) - WITH (lpm_width=8,lpm_widthad=8,lpm_file="AY.MIF"); - --- AY_CX.prn = !DFF((((AY_DO[7..5] == B"00X") & AY_CCC1) & (!AY_DO5 or AY_C)),CLK42,,); - AY_CX.prn = !DFF(((AY_DO[7..5] == B"000") & AY_CCC1),CLK42,,); - AY_CXX.prn = !DFF(((AY_DO[7..5] == B"000") & AY_CCC1),CLK42,,); - AY_C.prn = VCC; - - AY_CX.clk = CLK42; - AY_CXX.clk = CLK42; - (AY_CXX.ena,AY_CX.ena) = DFF((((AY_DO[7..5] == B"010") or (AY_DO[7..5] == B"111")) & AY_CCC1),CLK42,,); - - IF DFF(((AY_DO[7..5] == B"010")),CLK42,,) THEN - AY_CX = (LCELL(AY_DAT[] == 0) & AY_CX); --- AY_CXX = (LCELL(AY_DAT[] == 0) & AY_CXX); --- AY_CX = (LCELL(AY_DAT[] == 0) & AY_CX) or (AY_C & DFF(AY_DO0,CLK42,,)); - AY_CXX = (LCELL(AY_DAT[] == 0) & AY_CXX) or (AY_C & DFF(AY_DO0,CLK42,,)); - ELSE - AY_CXX = DFF(((!/RESET & AY_DO0) or (!AY_F_RES & !AY_DO0)),CLK42,,); - AY_CX = DFF(((!/RESET & AY_DO0) or (!AY_F_RES & !AY_DO0)),CLK42,,); - END IF; - - (AY_C.clk,AY_DAT[].clk) = CLK42; - (AY_C.ena,AY_DAT[].ena) = !DFF(AY_DAT_WR,CLK42,,); - (AY_C,AY_DAT[]) = (GND,AY_DO[]) - (B"00000000",DFF((DFF(!AY_DO5,CLK42,,) or (AY_C & DFF(AY_DO7,CLK42,,))),CLK42,,)); - - AY_OUT[].clk = CLK42; - - AY_AMP[].clk = CLK42; - AY_AMP[] = ((AY_DAT[3..0] or AY_DAT[4]) & (AY_AA[] or !AY_DAT[4])); - - AY_DQ1[].clk = CLK42; - AY_OUTS1 = DFF(((AY_DO[7..0] == B"011XX001") & AY_CCC1),CLK42,,); - AY_OUT1.ena = AY_OUTS1; - AY_OUT1 = AY_CX xor AY_OUT1; - AY_DQ1[].ena = AY_OUTS1; - AY_DQ1[] = AY_AMP[] & LCELL((AY_OUT1 or AY_X_0) & (AY_X_3 or AY_SH0)); - - AY_DQ2[].clk = CLK42; - AY_OUTS2 = DFF(((AY_DO[7..0] == B"011XX010") & AY_CCC1),CLK42,,); - AY_OUT2.ena = AY_OUTS2; - AY_OUT2 = AY_CX xor AY_OUT2; - AY_DQ2[].ena = AY_OUTS2; - AY_DQ2[] = AY_AMP[] & LCELL((AY_OUT2 or AY_X_1) & (AY_X_4 or AY_SH0)); - - AY_DQ3[].clk = CLK42; - AY_OUTS3 = DFF(((AY_DO[7..0] == B"011XX011") & AY_CCC1),CLK42,,); - AY_OUT3.ena = AY_OUTS3; - AY_OUT3 = AY_CX xor AY_OUT3; - AY_DQ3[].ena = AY_OUTS3; - AY_DQ3[] = AY_AMP[] & LCELL((AY_OUT3 or AY_X_2) & (AY_X_5 or AY_SH0)); - - AY_OUTSX = DFF((((AY_DO[7..0] == B"011XX01X") or - (AY_DO[7..0] == B"011XX0X1")) & AY_CCC1),CLK42,,); - AY_DQX[].clk = CLK42; - AY_DQX[].ena = AY_OUTSX; - AY_DQX[] = AY_AMP[] & AY_CH_MIX; - - AY_DQX[].clrn = !AY_SH_Q; - AY_DQX[].prn = (B"0010") or !DFF((AY_SH_Q & BEEPER),CLK42,,); - - AY_CH_MIX.clk = CLK42; - CASE AY_DO[1..0] IS - WHEN 0,1 => AY_CH_MIX = LCELL((AY_OUT1 or AY_X_0) & (AY_X_3 or AY_SH0)); - WHEN 2 => AY_CH_MIX = LCELL((AY_OUT2 or AY_X_1) & (AY_X_4 or AY_SH0)); - WHEN 3 => AY_CH_MIX = LCELL((AY_OUT3 or AY_X_2) & (AY_X_5 or AY_SH0)); - END CASE; - - AY_SH_Q = DFF(((AY_DO[7..0] == B"011XX100") & AY_CCC1),CLK42,,); - - AY_SH[].clk = CLK42; - AY_SH[].prn = /RESET; - AY_SH[].ena = AY_SH_Q & AY_CXX; - AY_SH[] = ((AY_SH3 xor AY_SH0),AY_SH[16..1]); - - AY_VAR.clk = CLK42; - AY_VX.clk = CLK42; - AY_VA[].clk = CLK42; - - (AY_VAR.clrn,AY_VA[].clrn) = AY_F_RES; - AY_VX.clrn = AY_F_RES; - - (AY_VX.ena,AY_VA[].ena,AY_VAR.ena) = DFF(((AY_DO[7..0] == B"011XX101") & AY_CCC1 & !AY_BBLK & AY_CX),CLK42,,); - (AY_VX,AY_VA[],AY_VAR) = (AY_VX,AY_VA[],AY_VAR) + 1; - - AY_X_[].clk = CLK42; - AY_X_[].ena = DFF(((AY_DO[7..0] == B"011XX110") & AY_CCC1),CLK42,,); - AY_X_[] = AY_DAT[5..0]; - - AY_GF[].clk = CLK42; - AY_GF[].ena = DFF(((AY_DO[7..0] == B"011XX111") & AY_CCC1),CLK42,,); - AY_GF[] = AY_DAT[3..0]; - - -- block count when 1-st period end - AY_BBLK = DFF((AY_VX & (AY_GF0 or !AY_GF3)),CLK42,,); -- VA_COUNT_STOP - - -- set ALL ZERO when 1-st period end - AY_ABLK = DFF((!AY_GF3 & AY_VX),CLK42,,); - - -- inverse 2-nd-s periods - AY_BINV = DFF((AY_VX & ((AY_GF[] == B"1X10") or (AY_GF == B"1X01"))),CLK42,,); - - -- inverse ALL - AY_AINV = AY_GF2; - - AY_AA[].clrn= VCC; - AY_AA[].clk = CLK42; - AY_AA[].d = (AY_VA[] xor AY_BINV xor !AY_AINV) & !AY_ABLK; - -% - AY_AA[].clrn= VCC; - AY_AA[].prn = GND; - AY_AA[].clk = CLK42; - AY_AA[] = VCC; -% - - AY_CH_A[3..0].clk = AY_CCC7; - AY_CH_B[3..0].clk = AY_CCC7; - AY_CH_C[3..0].clk = AY_CCC7; - - AY_CH_A[3..0] = AY_DQ1[3..0]; - AY_CH_B[3..0] = AY_DQ2[3..0]; - AY_CH_C[3..0] = AY_DQ3[3..0]; - - DO[7..0] = AY_DD[]; - - AY_CH_CS[].clk = CLK42; - CASE AY_DQX[] IS - WHEN 15 => AY_CH_CS[] = 360 ; - WHEN 14 => AY_CH_CS[] = 255 ; - WHEN 13 => AY_CH_CS[] = 180 ; - WHEN 12 => AY_CH_CS[] = 127 ; - WHEN 11 => AY_CH_CS[] = 90 ; - WHEN 10 => AY_CH_CS[] = 64 ; - WHEN 9 => AY_CH_CS[] = 45 ; - WHEN 8 => AY_CH_CS[] = 32 ; - WHEN 7 => AY_CH_CS[] = 22 ; - WHEN 6 => AY_CH_CS[] = 16 ; - WHEN 5 => AY_CH_CS[] = 11 ; - WHEN 4 => AY_CH_CS[] = 8 ; - WHEN 3 => AY_CH_CS[] = 6 ; - WHEN 2 => AY_CH_CS[] = 4 ; - WHEN 1 => AY_CH_CS[] = 2 ; - WHEN 0 => AY_CH_CS[] = 0 ; - END CASE; - - AY_OUTS1X = DFF(AY_OUTS1,CLK42,,); - AY_OUTS2X = DFF((AY_OUTS2 or AY_SH_Q),CLK42,,); - AY_OUTS3X = DFF(AY_OUTS3,CLK42,,); - - AY_OUTS1Y = DFF(AY_OUTS1 or AY_OUTS1X,CLK42,,); --- AY_OUTS2Y = DFF(AY_OUTS2 or AY_OUTS2X,CLK42,,); - AY_OUTS3Y = DFF(AY_OUTS3 or AY_OUTS3X,CLK42,,); - - (AY_CH_LX[].clrn,AY_CH_RX[].clrn) = !DFF((AY_CCC[7..2] == 0),CLK42,,); - - (AY_CH_LX[],,) = LPM_ADD_SUB (,AY_CH_LX[],(B"00",AY_CH_CS[]),,,,) - WITH(LPM_WIDTH=11,LPM_REPRESENTATION="UNSIGNED"); - (AY_CH_RX[],,) = LPM_ADD_SUB (,AY_CH_RX[],(B"00",AY_CH_CS[]),,,,) - WITH (LPM_WIDTH=11,LPM_REPRESENTATION="UNSIGNED"); - - AY_CH_LX[].clk = CLK42; - AY_CH_RX[].clk = CLK42; - AY_CH_LX[].ena = DFF(DFF((AY_OUTS1 or AY_OUTS1Y or AY_OUTS2X or AY_OUTS2),CLK42,,),CLK42,,); - AY_CH_RX[].ena = DFF(DFF((AY_OUTS3 or AY_OUTS3Y or AY_OUTS2X or AY_OUTS2),CLK42,,),CLK42,,); - - AY_CH_VAL = DFF((AY_CCC[7..2] == B"111100"),CLK42,,); - --- AY_CH_L[].clk = AY_CH_VAL; --- AY_CH_R[].clk = AY_CH_VAL; - AY_CH_L[] = AY_CH_LX[10..1]; - AY_CH_R[] = AY_CH_RX[10..1]; - -END; - diff --git a/src/altera/acex/k30/DCP.ACF b/src/altera/acex/k30/DCP.ACF deleted file mode 100644 index b8616b1..0000000 --- a/src/altera/acex/k30/DCP.ACF +++ /dev/null @@ -1,568 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP dcp -BEGIN - DEVICE = EP1K30FC256-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30FC256-3; - FREQUENCY = 200MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - DEVICE_FAMILY = ACEX1K; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 5.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - EXPLICIT_FAMILY = 1; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/acex/k30/DCP.INC b/src/altera/acex/k30/DCP.INC deleted file mode 100644 index 12ce88f..0000000 --- a/src/altera/acex/k30/DCP.INC +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Thu Feb 07 21:14:23 2002 - -FUNCTION dcp (clk42, /reset, ct[2..0], continue, a[15..0], di[7..0], turbo_hand, /io, /rd, /wr, /mr, /rf, /m1, md[7..0], dos, refresh, g_line[9..0], test_r, acc_on, double_cas, blk_mem) - WITH (UPDATE) - RETURNS (/res, ras, cas, mc_end, mc_begin, mc_type, mc_write, do[7..0], ma[11..0], mca[1..0], clk_z80, turbo, /wait, /iom, /iomm, ra[17..14], page[11..0], type[3..0], cs_rom, cs_ram, v_ram, port, wr_dwg, wr_tm9, wr_awg, rd_kp11, kp11_mix, ga[9..0], graf, sp_scr, sp_sa, scr128, hdd_data, hdd_flip, ram, blk_r, pn4q, dcpp[7..0]); diff --git a/src/altera/acex/k30/DCP.MIF b/src/altera/acex/k30/DCP.MIF deleted file mode 100644 index aee8502..0000000 --- a/src/altera/acex/k30/DCP.MIF +++ /dev/null @@ -1,119 +0,0 @@ -DEPTH = 256; % Memory depth and width are required % -WIDTH = 16; % Enter a decimal number % - -ADDRESS_RADIX = HEX; % Address and value radixes are optional % -DATA_RADIX = HEX; % Enter BIN, DEC, HEX, or OCT; unless % - % otherwise specified, radixes = HEX % - --- Specify values for addresses, which can be single address or range - -CONTENT -BEGIN - [0..FF] : 1000; - - 0 : 1040 % DCP PAGE %; - -% - MA[11..0] bit0 - WG_A5 - bit1 - WG_A6 - - bit2 - MUX_KP11, 0 - WG,CMOS 1 - KMPS,TM9 - bit3 - RD/WR 0 - WRITE 1 - READ - bit4 - CS_WG93 or WR_TM9 - - bit5 - HDD/CMOS strobe - bit6,7 - 00 - FDD/Scr switches - 01 - HDD Switch/ Reset - 10 - HDD1/HDD2 - 11 - CMOS - bit8 - HDD CS1/CS3 or CMOS data/adr - bit9,10,11 - HDD_A[2..0] -% - 10 : - 7018 % RD WG93 1F,0F % - 7019 % RD WG93 3F % - 701A % RD WG93 5F % - 701B % RD WG93 7F % - - 7017 % WR_PDOS FF % - 701F % RD_KEYS/ WR_A20 % - - 7023 % Set 720 % - 7027 % Set 1440 %; - --- 18 : --- 1000 % No_function % - --- 1B : 1000; % ISA_A20 WR % - - 1C : 71D8 % CMOS_DAT_RD %; - 1D : 70D4 % CMOS_ADR_WR %; - 1E : 71D4 % CMOS_DAT_WR %; - - 20 : - 60A8 % HD_CS1 ports % - 62A8 - 64A8 - 66A8 - 68A8 - 6AA8 - 6CA8 - 6EA8 - - 6DA8 % HD_CS3 3F6 port % - 6FA8 % HD_CS3 3F7 port % - - 7060 % Set HDD1 % - 7064 % Set HDD2 % - - 7120 % Set 320 Lines % - 7124 % Set 312 Lines % - - 7160 % Soft Reset % - 7164 % ??? %; - - - 30 : - 7000 % slot 1 ports % - 7001 % slot 2 ports % - 7002 % slot 1 mem % - 7003 % slot 2 mem % - ; - - 40 : 4000; % kb read % - - 52 : 3000; -- AY_D READ - - 58 : 5000; -- KEMPSTON-Mouse - - [80..FF]: C000; - - 88 : 2000; -- COVOX - 89 : 2000; -- COVOX-Mode - - 8C : 3000; -- AY_D READ - 8D : 2000; -- AY_A WRITE - 8E : 2000; -- AY_D WRITE - - 8F : 2000; -- port for ROM_WRITE - --- 80 : 7F 7F 7F 7F 7F 7F 7F 7F % KBD_DAT %; --- 90 : 7F % PORT FF %; - - 90 : 3030 3031 2032 2033 2034 2035 2036 2037 - 2038 2039 203A 203B 203C 203D 203E 203F; % RAM PAGES % - - B0 : 2020 2021 2022 2023 2024 2025 2026 2027 - 2028 2029 202A 202B 202C 202D 202E 202F; % RAM PAGES % - - [C0..CF]: 2000 % SYS PORTS COPYES %; - - D0 : 2010 2011 2012 2013 2014 2015 2016 2017 - 2018 2019 201A 201B 201C 201D 201E 201F; % RAM PAGES % - E0 : 2041 2041 2041 2041 2041 2041 2041 2041 - 2000 2005 2002 2041 20FF 2000 2000 2041; % ROM PAGES % --- E0 : 41 42 43 44 45 46 47 48 00 05 02 E0 F0 00 00 E8; % ROM PAGES % - F0 : 2000 2001 2002 2003 2004 2005 2006 2007 - 2008 2009 200A 200B 200C 200D 200E 200F; % RAM PAGES % - -END ; diff --git a/src/altera/acex/k30/DCP.TDF b/src/altera/acex/k30/DCP.TDF deleted file mode 100644 index 2a1f2cf..0000000 --- a/src/altera/acex/k30/DCP.TDF +++ /dev/null @@ -1,750 +0,0 @@ - - TITLE "DCP"; - -PARAMETERS - ( - UPDATE = 1 - ); - -INCLUDE "lpm_ram_dp"; --- INCLUDE "DC_PORT2"; - -SUBDESIGN dcp - ( - CLK42 : INPUT; - /RESET : INPUT; - - /RES : OUTPUT; - - CT[2..0] : INPUT; - - CONTINUE : INPUT; - RAS : OUTPUT; - CAS : OUTPUT; - MC_END : OUTPUT; - MC_BEGIN : OUTPUT; - MC_TYPE : OUTPUT; - MC_WRITE : OUTPUT; - - A[15..0] : INPUT; - DI[7..0] : INPUT; - DO[7..0] : OUTPUT; - MA[11..0] : OUTPUT; - MCA[1..0] : OUTPUT; - - TURBO_HAND : INPUT; - CLK_Z80 : OUTPUT; - TURBO : OUTPUT; - - /IO : INPUT; - /RD : INPUT; - /WR : INPUT; - /MR : INPUT; - /RF : INPUT; - /M1 : INPUT; - - /WAIT : OUTPUT; - /IOM : OUTPUT; - /IOMM : OUTPUT; - - MD[7..0] : INPUT; - RA[17..14] : OUTPUT; - PAGE[11..0] : OUTPUT; - - TYPE[3..0] : OUTPUT; - - CS_ROM : OUTPUT; - CS_RAM : OUTPUT; - V_RAM : OUTPUT; - PORT : OUTPUT; --- DOS : OUTPUT; - DOS : INPUT; - - WR_DWG : OUTPUT; - - WR_TM9 : OUTPUT; - WR_AWG : OUTPUT; - RD_KP11 : OUTPUT; - KP11_MIX : OUTPUT; - - REFRESH : INPUT; - - G_LINE[9..0]: INPUT; - GA[9..0] : OUTPUT; - GRAF : OUTPUT; - - SP_SCR : OUTPUT; - SP_SA : OUTPUT; - SCR128 : OUTPUT; - - TEST_R : INPUT; - - HDD_DATA : OUTPUT; - HDD_FLIP : OUTPUT; - RAM : OUTPUT; - BLK_R : OUTPUT; - - PN4Q : OUTPUT; - - ACC_ON : INPUT; -- asselerator state - 1 - present - - DCPP[7..0] : OUTPUT; - - DOUBLE_CAS : INPUT; - - BLK_MEM : INPUT; - - ) -VARIABLE - - CLK21 : NODE; - --- DC : DC_PORT2; - - CLK84 : NODE; - CLK42X : NODE; - - CTZ[1..0] : DFF; - --- CT[2..0] : DFF; - - MEM : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8,LPM_FILE="DCP.MIF"); - - D[7..0] : NODE; - ADR8_MEM : NODE; - MEM_D[15..0]: NODE; - MEM_WR : NODE; - - DCP_CX : NODE; - SC_LCELL : NODE; - - PG3[5..0] : NODE; - PG0[5..0] : NODE; - MPGS[7..0] : LCELL; - PGS[7..0] : DFF; --- PGS[7..0] : NODE; - - PN[7..0] : DFFE; - SC[7..0] : DFFE; - SYS : DFFE; - CNF[7..0] : DFFE; - AROM16 : DFFE; - TB_SW : DFFE; - - CASH_ON : NODE; - NMI_ENA : NODE; - - DD[7..0] : DFFE; - STARTING : NODE; - --- DOS_ : NODE; --- DOS : NODE; --- DOS_ON_ : NODE; - - MC_RQ : NODE; - MC_END : DFFE; - MC_BEGIN : DFFE; - MC_TYPE : DFFE; - MC_WRITE : DFFE; - RAS : DFFE; - CAS : DFFE; - - MA_[11..0] : DFFE; - MCA[1..0] : DFFE; - - /IOM : DFFE; - /IOMM : DFFE; - /IOMX : DFFE; - /IOMY : DFFE; - - WT_CT[3..0] : DFFE; - W_TAB[3..0] : LCELL; - HDD_W[3..0] : NODE; - /IO_WAIT : NODE; - /MR_WAIT : NODE; - - MEM_RW : NODE; - IO_RW : NODE; - IO_RWM : NODE; - - MA_CT[1..0] : DFFE; - - WR_TM9 : DFFE; - RD_KP11 : DFFE; - - /RES : NODE; - - RFT : DFF; - RFC : DFFE; - - GRAF : DFFE; - GRAF_X : NODE; - GA[9..0] : LCELL; - - SP_SCR : LCELL; - SP_SA : LCELL; - - HDD_FLIP : DFFE; - /IOMZ : DFFE; - - HDD_DATA : NODE; - HDD_ENA : NODE; - - BLK_C : NODE; - /CASH : NODE; - - DCPP[7..0] : DFFE; - - PORTS_X : NODE; - - NO_IO_WAIT : NODE; - - DCP_RES : NODE; - - HDD_A[3..0] : DFF; - - X_ADR[11..0]: LCELL; - X_MA_[11..0]: LCELL; - - WR_AWGX : NODE; - - /IOWR : NODE; - - RA[17..14] : LCELL; - --- SPR_[1..0] : NODE; - SPR_[1..0] : LCELL; - - SYS_ENA : NODE; - -BEGIN - -% --- DC.CLK42 = CLK42; --- DC./RESET = /RESET; --- --- DC.A[15..0] = A[15..0]; --- --- DC./IO = /IO; --- DC./WR = /WR; --- DC./M1 = /M1; --- --- -- DC./IOM; --- -- DC./IOMM; --- -- DC.DCP[7..0]; --- --- DC.DOS = DOS; --- DC.CNF[1..0]= CNF[4..3]; --- --- DC.SYS = SYS; --- --- -- DC.PORT_X; -% - - --- ============================================================== -% --- CT[].clk = CLK42; --- --- IF CT1 THEN --- CT[1..0] = GND; --- CT2 = !CT2; --- ELSE --- CT[1..0] = CT[1..0]+1; --- CT2 = CT2; --- END IF; -% - - /RES = DFFE(VCC,CLK42,,,CT0); --- ============================================================== - --- TURBO = DFFE((TB_SW & TURBO_HAND),CLK42,,/RESET,CLK_Z80); - TURBO = DFF(DFFE((TB_SW & TURBO_HAND),CLK_Z80,,/RESET,!/RF),CLK42,,); - - CLK84 = CLK42 xor LCELL(CLK42X); - CLK42X = DFF(!CLK42X,CLK84,,); - - CTZ[].clk = CLK84 xor CTZ1; - CTZ[] = CTZ[]+1; - --- CLK_Z80 = CTZ1; - --- CLK_Z80 = DFF((!CLK21 & TURBO) or (TFF((CT2 & CT1),CLK42,,) & !TURBO),!CLK42,,); --- CLK_Z80 = DFF((CLK21 & TURBO) or (TFF((CT2 & CT1),CLK42,,) & !TURBO),!CLK42,,); - - CLK_Z80 = DFF((CLK21 & TURBO) or (TFF((!CT2 & CT1),CLK42,,) & !TURBO),!CLK42,,); --- CLK_Z80 = DFF((!CLK21 & TURBO) or (TFF((!CT2 & CT1),CLK42,,) & !TURBO),!CLK42,,); - --- ============================================================== - CLK21 = DFF((!CT0 xor CT2),CLK42,,); --- === Adress Multiplexer ======================================= - - MA_[].clk = CLK42; --- MA_[].ena = (CT2 xor CT0); - MA_[].ena = CLK21; - - WR_TM9.clk = CLK42; --- WR_TM9.ena = (CT2 xor CT0); - WR_TM9.ena = CLK21; - WR_TM9.prn = /RES; - - RD_KP11.clk = !CLK42; --- RD_KP11.ena = (CT2 xor CT0); - RD_KP11.ena = CLK21; - RD_KP11.prn = /RES; - RD_KP11.d = !(MA_CT[] == 0); - --- WR_AWGX = DFF((WR_TM9 or CLK21),!CLK42,,); - WR_AWGX = DFF(GND,!WR_TM9,,DFF(WR_AWGX,CLK42,,)); - --- WR_TM9 = (!MA_CT1 or (!IO_RW & !PORTS_X)); - WR_TM9 = (!MA_CT1 or (!/IO & !PORTS_X)); - - WR_AWG = WR_AWGX; - - KP11_MIX = TFF(VCC,RD_KP11,,); - - WR_DWG = !MC_BEGIN; --- WR_DWG = DFF(!MC_BEGIN,CLK42,,); --- WR_DWG = LCELL(!MC_BEGIN); - --- MA_CT[].ena = (CT2 xor CT0); - MA_CT[].ena = CLK21; - MA_CT[].clk = CLK42; - - IF !LCELL(CT2 & !CT1) THEN - MA_CT[] = MA_CT[]+1; - ELSE - MA_CT[] = GND; - END IF; - -% --- MA_[11..0] bit0 - WG_A5 --- bit1 - WG_A6 --- bit2 - MUX_KP11, 0 - WG,CMOS 1 - KMPS,TM9 --- bit3 - RD/WR 0 - WRITE 1 - READ --- bit4 - CS_WG93 or WR_TM9 --- bit5 - HDD/CMOS strobe --- bit7,6 - 00 - not --- 01 - ???? --- 10 - HDD1/2 --- 11 - CMOS --- bit8 - HDD CS1/CS3 or CMOS data/adr --- bit9,10,11 - HDD_A[2..0] -% - CASE A[15..14] IS - WHEN 0 => SP_SCR = GND; SP_SA = GND; - WHEN 1 => SP_SCR = !GRAF; SP_SA = GND; - WHEN 2 => SP_SCR = GND; SP_SA = PG3[1]; - WHEN 3 => SP_SCR = !GRAF & LCELL(PG3[] == B"1101X1"); SP_SA = PG3[1]; - END CASE; - - CASE GRAF IS - WHEN 0 => GA[] = (GND,GND,MEM.q[3..0],A[13..10]); --- WHEN 1 => GA[] = (VCC,(G_LINE[8..0] + (B"00000",A[13..10]))); - WHEN 1 => GA[] = (VCC,G_LINE[8..0]); - END CASE; - - CASE (IO_RW,MA_CT0) IS - WHEN 0 => X_ADR[] = (GND,CNF4,PN5,DOS,/WR,A15,A14,A[6..5],A13,A7,A[2]); - WHEN 1 => X_ADR[] = (GND,GND,CNF[4..3],B"01000000"); - WHEN 2 => X_ADR[] = (GND,GA3,GA[1..0],A[9..2]); - WHEN 3 => X_ADR[] = (GND,GND,GA[3..2],MEM.q[7..4],GA[7..4]); - END CASE; - - CASE IO_RW IS - WHEN 0 => X_MA_[] = (HDD_A[2..0],MEM.q[8..6],((MEM.q[5..4]) & (!/IOMZ,!/IOMY)),/WR,MEM.q2,A[6..5]); - WHEN 1 => X_MA_[] = (HDD_A[2..0],B"00000",/WR,VCC,A[6..5]); - END CASE; -% --- CASE MA_CT1 IS ----- WHEN 0 => MA_[] = X_ADR[]; --- WHEN 0 => MA_[] = (GND,X_ADR[10..0]); --- WHEN 1 => MA_[] = (HDD_A[2..0],X_MA_[8..4],/WR,X_MA_[3],A[6..5]); --- END CASE; -% - - CASE (IO_RW,MA_CT1) IS - WHEN B"00" => - MA_[] = (X_ADR[11..0]); - WHEN B"01" => - MA_[] = (HDD_A[2..0],MEM.q[8..6],((MEM.q[5..4]) & (!/IOMZ,!/IOMY)),/WR,MEM.q2,A[6..5]); - WHEN B"10" => - MA_[] = (X_ADR[11..0]); - WHEN B"11" => - MA_[] = (HDD_A[2..0],B"00000",/WR,VCC,A[6..5]); - END CASE; - - MA[] = MA_[]; - - MCA[].ena = CT2 & CT1; - MCA[].clk = CLK42; - MCA[] = A[1..0]; -- adress for CAS - - HDD_A[].clk = CLK42; - CASE (A[14],A[2..0]) IS - WHEN 0 => HDD_A[] = 0; - WHEN 1 => HDD_A[] = 1; - WHEN 2 => HDD_A[] = 2; - WHEN 3 => HDD_A[] = 3; - WHEN 4 => HDD_A[] = 4; - WHEN 5 => HDD_A[] = 5; - WHEN 6 => HDD_A[] = 0; - WHEN 7 => HDD_A[] = 0; - WHEN 8 => HDD_A[] = 0; - WHEN 9 => HDD_A[] = 0; - WHEN 10 => HDD_A[] = 6; - WHEN 11 => HDD_A[] = 7; - WHEN 12 => HDD_A[] = 14; - WHEN 13 => HDD_A[] = 15; - WHEN 14 => HDD_A[] = 0; - WHEN 15 => HDD_A[] = 0; - END CASE; - - --- === Memory Sinchronizer ====================================== - - -% RF | MEM | RF - ____ | | _______ -/MR \__________/ - | | - _____| | _______ -MC_BEGIN \________/ - | |__ -MC_END ____________/ \_______ - ______ |__________ -MC_TYPE \_____/ - | | -RAS __ _ ___ __ - \__/|\__/ | \__/ - ____ _ __ -CAS \__/ | \__/|\__/ - | | - -% - --- MC_RQ = DFF(((/MR & DFF(/IO,CLK42,,)) or (/RD & /WR)),CLK42,,); - --- MC_RQ = DFF(((/MR & DFFE(GND,!CLK42,,!/IO,CT0)) or (/RD & /WR)),!CLK42,,); - --- MC_RQ = DFF((((/MR or !/RF) & DFF(/IO,CLK42,,/M1)) or (/RD & /WR)),CLK42,,); - --- MC_RQ = DFF((((/MR or !/RF) & IO_RW) or (/RD & /WR)),CLK42,,); - --- MC_RQ = DFF(((MEM_RW & IO_RW) or (/RD & /WR)),CLK42,,); - - MC_RQ = DFF(((MEM_RW & DFF(DFF(IO_RW,CLK42,,!/IO),CLK42,,!/IO)) or (/RD & /WR)),!CLK42,,); - - MC_BEGIN.clk= CLK42; - MC_BEGIN.ena= CT1 & CT2; - MC_BEGIN.d = MC_RQ; - MC_BEGIN.prn= !(/MR & /IO); - - MC_END.clk = CLK42; - MC_END.d = VCC; - MC_END.ena = (CT0 & CT2) & !MC_BEGIN & CONTINUE & !BLK_C; - MC_END.clrn = !(/MR & /IO); - - MC_TYPE.clk = CLK42; - MC_TYPE.ena = CT1 & CT2; - MC_TYPE.d = MC_RQ or MC_END; - MC_TYPE.prn = /RES; - - MC_WRITE.clk= CLK42; - MC_WRITE.ena= CT1 & CT2; - MC_WRITE.d = MC_RQ or CS_RAM or /WR or MC_END; - MC_WRITE.prn= /RES; - - RFT.clk = REFRESH; - RFT.d = GND; - RFT.prn = RFC; --- RFT.prn = VCC; - - RFC.clk = CLK42; - RFC.d = !MC_RQ or RFT; --- RFC.d = !MC_RQ; - RFC.ena = CT1 & CT2; - - RAS.ena = (!(CT1 or (CT0 xor MC_TYPE))) & (!MC_TYPE or !RFC); - CAS.ena = (!(CT1 or (CT0 xor !MC_TYPE))) & (!MC_TYPE or !RFC); --- RAS.ena = (!(CT1 or (CT0 xor MC_TYPE))); --- CAS.ena = (!(CT1 or (CT0 xor !MC_TYPE))); - - RAS.clk = CLK42; CAS.clk = CLK42; - RAS.d = CT2; CAS.d = CT2 or BLK_C; - - RAS.prn = /RES; - CAS.prn = /RES; --- CAS.prn = !BLK_C; - --- /MR_WAIT = (MEM_RW or /CASH or DFF(MC_END,CLK42,!/MR,)) or (!TURBO & !ACC_ON); --- /MR_WAIT = MC_END or LCELL(MEM_RW or /CASH or (!TURBO & !ACC_ON)); - - /MR_WAIT = LCELL(MC_END or MEM_RW or /CASH or (!TURBO & !ACC_ON)); - --- MEM_RW = LCELL(/MR or !/RF); - - -- anti gluk! - MEM_RW = DFF((!/RF or BLK_MEM),!/MR,,LCELL(MEM_RW or !/MR)); - IO_RWM = DFF(!/M1,!/IO,,LCELL(IO_RW or !/IO)); - - IO_RW = DFF(/IO,CLK42,,/M1); - - /IOMM.clk = CLK42; --- /IOMM.ena = CT0 xor CT2; - /IOMM.ena = CLK21; - /IOMM.d = IO_RW or !MC_END or DFF((WT_CT[] == 0),CLK42,,); - /IOMM.prn = /RES; - - /IOMX.clk = CLK42; --- /IOMX.ena = CT0 xor CT2; - /IOMX.ena = CLK21; - /IOMX.d = /IOMM; - /IOMX.prn = /RES; - - /IOMY.clk = CLK42; --- /IOMY.ena = CT0 xor CT2; - /IOMY.ena = CLK21; - /IOMY.d = /IOMX or !MC_END or DFF((WT_CT[] == B"000X"),CLK42,,); --- /IOMY.prn = /RES; - /IOMY.prn = PORTS_X; - - PORTS_X = DFF(((DCPP[7..4] == B"0010") or (DCPP[7..4] == B"0001")),CLK42,,); - - /IOMZ.clk = CLK42; --- /IOMZ.ena = CT0 xor CT2; - /IOMZ.ena = CLK21; - /IOMZ.d = (A8 xor /RD) or /IOMX or !MC_END or DFF((WT_CT[] == B"000X"),CLK42,,); - /IOMZ.prn = PORTS_X; - - HDD_DATA = DFF((HDD_ENA & DFF((MEM.q[11..8] == 0),CLK42,,) & PORTS_X),CLK42,,); - HDD_ENA = (MEM.q[7..5] == B"101"); - - HDD_FLIP.clk = /IOM; - HDD_FLIP.ena = HDD_ENA & DFF((DCPP[] == B"0010XXXX"),CLK42,,); - HDD_FLIP.d = !HDD_FLIP & (MEM.q[11..8] == 0); - HDD_FLIP.clrn = /RESET & DFF(GND,!DOUBLE_CAS,,HDD_FLIP); - - /IOM.clk = CLK42; --- /IOM.ena = CT0 xor CT2; - /IOM.ena = CLK21; - /IOM.d = (/IOMX & /IOM); - /IOM.prn = !/IO & /M1; - --- /IO_WAIT = LCELL(/IO or !/M1 or DFF(DFFE((WT_CT[] == 0),CLK42,,,CLK21),CLK42,,NO_IO_WAIT)); - - /IO_WAIT = LCELL(IO_RWM or DFF(DFFE((WT_CT[] == 0),CLK42,,,CLK21),CLK42,,NO_IO_WAIT)); - - NO_IO_WAIT = !DFF(((A[7..0] == B"111XX1XX") & !TURBO & DOS),CLK42,,); --- NO_IO_WAIT = TURBO; - - WT_CT[].clk = CLK42; --- WT_CT[].ena = (CT2 xor CT0); - WT_CT[].ena = CLK21; --- WT_CT[].ena = CT1; - WT_CT[].prn = MC_END; - - CASE (/IOM,DFF((WT_CT[] == 0),CLK42,,)) IS - WHEN B"1X" => WT_CT[].d = W_TAB[]; - WHEN B"00" => WT_CT[].d = WT_CT[]-1; - WHEN B"01" => WT_CT[].d = GND; - END CASE; - - CASE (TURBO,MEM.q[14..12]) IS - WHEN 0 => W_TAB[] = 2; WHEN 8 => W_TAB[] = 2; - WHEN 1 => W_TAB[] = 2; WHEN 9 => W_TAB[] = 2; - WHEN 2 => W_TAB[] = 1; WHEN 10 => W_TAB[] = 4; - WHEN 3 => W_TAB[] = 1; WHEN 11 => W_TAB[] = 4; - WHEN 4 => W_TAB[] = 1; WHEN 12 => W_TAB[] = 7; - WHEN 5 => W_TAB[] = 2; WHEN 13 => W_TAB[] = 7; --- WHEN 6 => W_TAB[] = 10; WHEN 14 => W_TAB[] = 10; - WHEN 6 => W_TAB[] = 7; WHEN 14 => W_TAB[] = 7; --- WHEN 6 => W_TAB[] = 13; WHEN 14 => W_TAB[] = 13; - WHEN 7 => W_TAB[] = 10; WHEN 15 => W_TAB[] = 10; - END CASE; - - CASE LCELL(MEM.q[11..8] == 0) IS - WHEN 0 => HDD_W[] = 10; -- registers wait - WHEN 1 => HDD_W[] = 4; -- datas wait - END CASE; - - /WAIT = (/IO_WAIT & /MR_WAIT); - - --- === Other Devicese CASHE, ISA, ROM... === - - V_RAM = PN2; -- for ORIGINAL Waits - -IF UPDATE == 1 GENERATE - -- all ROM/RAM switches in main .tdf - BLK_R = SC4; - -- all cashes in main .tdf - /CASH = GND; - -- cashe dir in main .tdf - CASH_ON = GND; -ELSE GENERATE - -- for blk wait - /CASH = DFF((MEM.q[7..4] == 15),!CLK42,BLK_R,); --- when BLK_R = 1 => Other Devices stay Active! - BLK_R = DFF( (LCELL((MEM.q7 & MEM.q6 & RAM) or - (MEM.q7 & LCELL(A14 & A15 & SC4))) & - !DFF(DFF(MC_RQ,CLK42,,!/MR),CLK42,,!/MR)),!CLK42,!/MR,); - CASH_ON = DFFE(A7,(/IO or /RD),/RESET,,DFF((DCPP[] == H"88"),CLK42,,)); -END GENERATE; - - RAM = !LCELL(A14 or A15 or (SC0 & SYS)); - - CS_ROM = LCELL(/MR or !RAM or !/RF); - CS_RAM = LCELL(/MR or RAM or !/RF); - --- ============================================== - --- graf screen enable for pages - - GRAF_X = LCELL(MEM.q[7..4] == B"0101"); - - GRAF.clk = CLK42; - GRAF.ena = (CT0 & CT2); - GRAF.d = GRAF_X; - - BLK_C = LCELL((GRAF_X xor GRAF) & !MC_TYPE); - ------------------------------------------ - - SCR128 = PN3; - - D[] = DI[]; - -- when not IO - reset DCPP! - - DCP_RES = DFF((STARTING & !/IO & /M1),CLK42,,); - - DCPP[].clk = CLK42; - DCPP[].ena = !DFF(MC_END,CLK42,,); - DCPP[].clrn = MC_END & DCP_RES; -- not in/out when START - DCPP[].d = MD[]; - --- DD[].clk = !CLK42; --- DD[].ena = !DFF(MC_END,!CLK42,,); - - DD[].clk = CLK42; - DD[].ena = !DFF(MC_END,CLK42,,); - DD[].clrn = MC_END & DCP_RES; - - CASE LCELL(MD[7..4] == 15) IS - WHEN 0 => DD[].d = MD[]; - WHEN 1 => DD[].d = (VCC,VCC,PG3[]); - END CASE; - --- === Port Decoder ============================================= - - DCP_CX = (DCPP[] == B"1100XXXX"); - SYS_ENA = DFF((DCP_CX & (DCPP[] == B"XXXXX110")),CLK42,,); - --- /IOWR = DFF((/WR or /IO),CLK42,,!/IO); - /IOWR = LCELL(/IO or /WR or !/M1); - - CNF[].ena = SYS_ENA; CNF[].d = (DI[] & DI2) or (CNF[] & !DI2); - AROM16.ena = SYS_ENA; AROM16.d = (DI0 & !DI1) or (AROM16 & DI1); - TB_SW.ena = SYS_ENA; TB_SW.d = (DI0 & DI1) or (TB_SW & !DI1); - SYS.ena = SYS_ENA; SYS.d = !A6; - - SC[].ena = DFF((DCP_CX & (DCPP[] == B"XXXXX000")),CLK42,,) ;SC[].d = DI[]; - PN[].ena = DFF((DCP_CX & (DCPP[] == B"XXXXX001")),CLK42,,) ;PN[].d = DI[]; - - TB_SW.clk = /IOWR; - AROM16.clk = /IOWR; - PN[].clk = /IOWR; - SC[].clk = /IOWR; - SYS.clk = /IOWR; - CNF[].clk = /IOWR; - - AROM16.clrn = /RESET; - TB_SW.prn = /RESET; - SYS.clrn = /RESET; - CNF[].clrn = /RESET; - - SC[].clrn = /RESET & !CNF6; -- Scorpion-OFF - - PN[5..0].clrn = /RESET & !CNF5; -- reset PN5 - PN[7..6].clrn = /RESET & CNF7; -- set Pentagon-512 - - PN4Q = PN4; - --- ==================================== - --- ********** Pages decoder *********** - --- ==================================== - - PG3[] = (!PN7,VCC,LCELL((SC4 & !CNF7) or (CNF7 & PN6)),PN[2..0]); - --- SC0,SC1,SYS,DOS,PN4,AROM16,CASH_ON,NMI_ENA - PG0[] = (VCC,GND, - LCELL(SC0 or !SYS or CASH_ON or !NMI_ENA), - LCELL(((AROM16 & !(SC0 & SYS)) or (CASH_ON & NMI_ENA))), - LCELL((SPR_1 & SC_LCELL) or !SYS or !NMI_ENA), - LCELL((SPR_0 & SC_LCELL) or !SYS or !NMI_ENA)); - --- SC_LCELL = LCELL(!(SC0 & SYS) & !CASH_ON); - SC_LCELL = (!(SC0 & SYS) & !CASH_ON); - - NMI_ENA = VCC; - - SPR_[] = !SC1 & (DOS,(PN4 or !DOS)); -- expansion/dos/basic128/basic48 - - CASE (TEST_R,SYS) IS - WHEN B"X0" => RA[] = (!AROM16,B"000"); -- system 0/1 - WHEN B"01" => RA[] = (!AROM16,GND,SPR_[]); -- expansion/dos/basic - WHEN B"11" => RA[] = (B"001",SPR_0); -- test - END CASE; - --- ==================================== - - CASE A[15..14] IS - WHEN 0 => MPGS[5..0] = PG0[]; - WHEN 1 => MPGS[5..0] = B"101001"; %H"E9"% - WHEN 2 => MPGS[5..0] = B"101010"; %H"EA"% - WHEN 3 => MPGS[5..0] = PG3[]; - END CASE; - MPGS[7..6] = VCC; - --- STARTING = DFF(GND,VCC,/RESET,(/IO or /RD)); - STARTING = LCELL(/RESET & (STARTING or !(/IO or /RD))); - - PGS[].clk = !CLK42; - CASE (LCELL(/IO & !(A14 & A15 & !STARTING)),MC_END) IS - WHEN B"1X" => PGS[] = (VCC,VCC,MPGS[5..0]); - WHEN B"01" => PGS[] = DD[]; - WHEN B"00" => PGS[] = GND; - END CASE; - - MEM_WR = DFFE((DCPP[7] & DCPP[6] & STARTING & DFF(DFF((MC_END & !/WR),CLK42,,),CLK42,,)),CLK42,!/IO,,CT1); - - ADR8_MEM = GND; - - CASE ADR8_MEM IS - WHEN 1 => MEM_D[] = (DI[],MEM.q[7..0]); DO[] = MEM.q[15..8]; - WHEN 0 => MEM_D[] = (MEM.q[15..8],DI[]); DO[] = MEM.q[7..0]; - END CASE; - - MEM.wren = MEM_WR; - MEM.data[] = MEM_D[]; - MEM.wraddress[] = PGS[]; - MEM.wrclock = CLK42; - MEM.wrclken = VCC; - MEM.rden = VCC; - MEM.rdaddress[] = PGS[]; - MEM.rdclock = CLK42; - MEM.rdclken = VCC; --- = MEM.q[]; - - PAGE[] = MEM.q[11..0]; - TYPE[] = MEM.q[15..12]; - - - PORT = !(MEM.q[15..12] == 0) or /IO or (/RD & /WR); - -END; - - diff --git a/src/altera/acex/k30/KBD.ACF b/src/altera/acex/k30/KBD.ACF deleted file mode 100644 index 6ef977a..0000000 --- a/src/altera/acex/k30/KBD.ACF +++ /dev/null @@ -1,568 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP kbd -BEGIN - DEVICE = EP1K30QC208-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - DEVICE_FAMILY = ACEX1K; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - BIDIR_PIN = STRONG; - END_TIME = 0.0ns; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - EXPLICIT_FAMILY = 1; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/acex/k30/KBD.INC b/src/altera/acex/k30/KBD.INC deleted file mode 100644 index a6b7f8d..0000000 --- a/src/altera/acex/k30/KBD.INC +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Thu May 03 21:43:31 2001 - -FUNCTION kbd (clk42, clk_k, kbd_cc, kbd_dd, /rf, /io, /iom, /m1, a[15..8], ena, int_ena) - RETURNS (kbo[7..0], kb_reset, kb_f12, kb_ctrl, kb_alt, kb_sh, int); diff --git a/src/altera/acex/k30/KBD.TDF b/src/altera/acex/k30/KBD.TDF deleted file mode 100644 index 20e40be..0000000 --- a/src/altera/acex/k30/KBD.TDF +++ /dev/null @@ -1,180 +0,0 @@ - - TITLE "ZX-Keyboard"; - -INCLUDE "lpm_ram_dq"; - -SUBDESIGN kbd - ( - CLK42 : INPUT; -- full sinc 42MHz - CLK_K : INPUT; -- sinc input 15KHz - KBD_CC : INPUT; -- sinc KBD - KBD_DD : INPUT; -- data KBD - - /RF : INPUT; -- /rfsh - /IO : INPUT; -- /iorq - /IOM : INPUT; - /M1 : INPUT; - - A[15..8] : INPUT; - - KBO[7..0] : OUTPUT; -- output - - KB_RESET : OUTPUT; - - KB_F12 : OUTPUT; - KB_CTRL : OUTPUT; - KB_ALT : OUTPUT; - KB_SH : OUTPUT; - - ENA : INPUT; - INT_ENA : INPUT; - INT : OUTPUT; - ) -VARIABLE - - KB_CT[2..0] : DFF; - KB_D[10..0] : DFF; - KB_OFF : DFFE; - - KB_EXT : DFF; - KB_ALT : DFF; - KB_CTRL : DFF; - KB_SH : DFF; - - KB_CTRL_X : NODE; - KB_ALT_X : NODE; - KB_SH_X : NODE; - KB_XXX : NODE; - KB_RESET : DFF; - RXA[1..0] : DFFE; - - K_CLK : NODE; - KA[15..0] : NODE; - KB_MA[2..0] : DFF; - KB_MXA : NODE; - KDCA[2..0] : LCELL; - - KDD[7..0] : DFF; - KBD[5..0] : DFF; - KD[7..0] : NODE; - KDX[5..0] : DFF; - KDXX[5..0] : DFF; - WR_KBD : NODE; - KB_OFL : NODE; - -BEGIN - - INT = DFF((KB_CT[] == 0),CLK42,,INT_ENA); - --- KB_CT[].clk = DFF(CLK_K,CLK42,,); - KB_CT[].clk = CLK_K; - KB_CT[].prn = DFF(KBD_CC,CLK42,,); - - CASE KB_CT[] IS - WHEN 0 => KB_CT[].d = GND; - WHEN 1,2,3,4,5,6,7 => KB_CT[].d = KB_CT[] - 1; - END CASE; - - KB_D[].clk = DFF(!KBD_CC,CLK42,,); - KB_D[].d = (KBD_DD,KB_D[10..1]); - - KB_OFF.ena = !KB_EXT; - KB_OFF.clk = DFF((KB_CT[] == 0),CLK42,,); - KB_OFF.d = KB_D[] == B"XX11110000X"; - - KB_EXT.clk = DFF((KB_CT[] == 1),CLK42,,); - KB_EXT.d = KB_D[] == B"XX11100000X"; - - KB_CTRL.clk = !KB_CT2; - KB_ALT.clk = !KB_CT2; - KB_SH.clk = !KB_CT2; - - KB_CTRL_X = LCELL(KB_D[] == B"XXXXX1X100X"); - KB_ALT_X = LCELL(KB_D[] == B"XXXXX1X001X"); - KB_SH_X = LCELL(KB_D[] == B"XX0X01X0XXX") & - CASCADE((KB_D[] == B"XXX1XX1X01X") or (KB_D[] == B"XXX0XX0X10X")); - KB_XXX = LCELL(KB_D[] == B"XX000X0XXXX"); - - CASE KB_OFF IS - WHEN 0 => - KB_CTRL.d = (KB_CTRL_X & KB_XXX) or KB_CTRL; - KB_ALT.d = (KB_ALT_X & KB_XXX) or KB_ALT; - KB_SH.d = (KB_SH_X) or KB_SH; - WHEN 1 => - KB_CTRL.d = !(KB_CTRL_X & KB_XXX) & KB_CTRL; - KB_ALT.d = !(KB_ALT_X & KB_XXX) & KB_ALT; - KB_SH.d = !(KB_SH_X) & KB_SH; - END CASE; - - KB_F12 = DFF(!((KB_XXX & LCELL(KB_D[] == B"XXXXX0X111X")) & !KB_OFF), - !KB_CT2,,!(KB_CT[] == 1)); - - KB_RESET.clk = !KB_CT2; - KB_RESET.d = !(KB_ALT_X & (KB_D[] == B"XX011X0XXXX") & !KB_OFF & KB_CTRL & KB_ALT); - KB_RESET.prn = !DFF((KB_CT[] == 1),CLK42,,); - - K_CLK = DFF(/RF,CLK42,,); - - RXA[].ena = VCC; - RXA[].clk = K_CLK; - - CASE DFF((!(KB_CT[] == B"01X") & (RXA[] == 0)),CLK42,,) IS - WHEN B"1" => RXA[] = GND; - WHEN B"0" => RXA[] = (RXA0,!RXA1); - END CASE; - - CASE (DFF((/IO & (RXA[] == 0),CLK42,,)),LCELL(KDD7 & KDD6)) IS - WHEN B"0X" => KA[15..8] = (B"101",KDCA[],B"11"); - WHEN B"10" => KA[15..8] = (B"110000",KDD7,KDD6); - WHEN B"11" => KA[15..8] = KB_D[8..1]; - END CASE; - - KB_MA[].clk = CLK42; - KB_MA[].d = KB_MA[] + 1; - KB_MA[].clrn = !DFF(/IO,CLK42,,); - - KB_MXA = DFF(( (((KB_MA[] == 7) & A15) or ((KB_MA[] == 6) & A14)) - or (((KB_MA[] == 5) & A13) or ((KB_MA[] == 4) & A12)) - or (((KB_MA[] == 3) & A11) or ((KB_MA[] == 2) & A10)) - or (((KB_MA[] == 1) & A9 ) or ((KB_MA[] == 0) & A8 ))),CLK42,,); - - IF !DFF(/IO,CLK42,,) THEN - KDCA[] = KB_MA[]; - ELSE - KDCA[] = KDD[5..3]; - END IF; - - KDD[].clk = RXA0; - KDD[].d = KD[]; - KDD[7..6].prn = !KB_CT2; - - KDXX[].clk = RXA0; - KDXX[].d = !((KD[2..0] == 5),(KD[2..0] == 4), - (KD[2..0] == 3),(KD[2..0] == 2), - (KD[2..0] == 1),(KD[2..0] == 0)); - - KDX[].clk = RXA1; - - CASE KB_OFF IS - WHEN B"0" => KDX[].d = (KD[5..0] & KDXX[]); - WHEN B"1" => KDX[].d = (KD[5..0] or !KDXX[]); - END CASE; - --- ============================== - - WR_KBD = K_CLK or !DFF((KB_CT[] == 2),CLK42,,) or !(RXA[] == 3); - - KD[] = lpm_ram_dq((B"11",KDX[5..0]),KA[15..8],!WR_KBD,CLK42,) - WITH (lpm_width=8,lpm_widthad=8,lpm_file="KBD_INI2.MIF", - lpm_outdata="UNREGISTERED"); - - KBD[].clk = CLK42; - KBD[].prn = DFF(VCC,KB_MA2,(!/IO & ENA),); - --- KBD[].prn = DFF(!/IOM,CLK42,,); - KBD[].d = KBD[] & (KD[5..0] or KB_MXA); - - KBO[] = (VCC,VCC,KBD[]); - -END; - diff --git a/src/altera/acex/k30/KBD_INI2.MIF b/src/altera/acex/k30/KBD_INI2.MIF deleted file mode 100644 index 43e7390..0000000 --- a/src/altera/acex/k30/KBD_INI2.MIF +++ /dev/null @@ -1,167 +0,0 @@ -DEPTH = 256; % Memory depth and width are required % -WIDTH = 8; % Enter a decimal number % - -ADDRESS_RADIX = HEX; % Address and value radixes are optional % -DATA_RADIX = BIN; % Enter BIN, DEC, HEX, or OCT; unless % - % otherwise specified, radixes = HEX % - --- Specify values for addresses, which can be single address or range - -CONTENT - BEGIN -[0..FF] : 11111111; -0 : - 11111111 % .. % - 00100001 % F9 % - 11111111 % .. % - 00011100 % F5 % - 00011010 % F3 % - 00011000 % F1 % - 00011001 % F2 % - 11111111 % F12 % - 11111111 % .. % - 00100000 % F10 % - - 00100010 % F8 % - 00100100 % F6 % - 00011011 % F4 % - 01011000 % Tab % - 10001000 % ~` % - 11111111 % .. % - 11111111 % .. % - 01111001 % Alt % - 11000000 % Left Shift % - 11111111 % .. % - - 11111001 % Ctrl % - 11010000 % 'Q' % - 11011000 % '1' % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11000001 % 'Z' % - 11001001 % 'S' % - 11001000 % 'A' % - 11010001 % 'W' % - - 11011001 % '2' % - 01110000 % left WIN % - 11111111 % .. % - 11000011 % 'C' % - 11000010 % 'X' % - 11001010 % 'D' % - 11010010 % 'E' % - 11011011 % '4' % - 11011010 % '3' % - 10110000 % Right WIN % - - 11111111 % .. % - 11111000 % ' ' % - 11000100 % 'V' % - 11001011 % 'F' % - 11010100 % 'T' % - 11010011 % 'R' % - 11011100 % '5' % - 10111000 % Right Mouse % - 11111111 % .. % - 11111011 % 'N' % - - 11111100 % 'B' % - 11110100 % 'H' % - 11001100 % 'G' % - 11101100 % 'Y' % - 11100100 % '6' % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11111010 % 'M' % - 11110011 % 'J' % - - 11101011 % 'U' % - 11100011 % '7' % - 11100010 % '8' % - 11111111 % .. % - 11111111 % .. % - 10111011 % ',' % - 11110010 % 'K' % - 11101010 % 'I' % - 11101001 % 'O' % - 11100000 % '0' % - - 11100001 % '9' % - 11111111 % .. % - 11111111 % .. % - 10111010 % '.' % - 10000100 % '/' % - 11110001 % 'L' % - 10101001 % ';' % - 11101000 % 'P' % - 10110011 % '-' % - 11111111 % .. % - - 11111111 % .. % - 11111111 % .. % - 10101000 % "'" % - 11111111 % .. % - 10101100 % '[' % - 10110001 % '=' % - 11111111 % .. % - 11111111 % .. % - 01011001 % Caps Lock % - 11000000 % Right SHIFT % - - 11110000 % ENTER % - 10101011 % ']' % - 11111111 % .. % - 10001010 % '\' % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - - 11111111 % .. % - 11111111 % .. % - 01100000 % Back % - 11111111 % .. % - 11111111 % .. % - 10010010 % End % - 11111111 % .. % - 01011100 % <- % - 10010000 % Home % - 11111111 % .. % - - 11111111 % .. % - 11111111 % .. % - 10010001 % ins % - 01100001 % DEL % - 01100100 % Dn % - 10101010 % grey 5 ; ctrl + I % - 01100010 % -> % - 01100011 % Up % - 01111000 % ESC % - 00111111 % Num % - - 11111111 % F11 % - 10110010 % G+ % - 01011011 % PDn ; caps + 4 % - 10110011 % G- % - 10111100 % G* % - 01011010 % PUp ; caps + 3 % - 00000000 % Scrol Lock % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - - 11111111 % .. % - 00100011 % F7 % ; -% !! DATA FOR CAPS !! % -C0 : - 11111101 % Function shift % - 11000000 % Left Shift % - 11111001 % Ctrl % - 11111111 ; % no shift % -END ; - - diff --git a/src/altera/acex/k30/MOUSE.ACF b/src/altera/acex/k30/MOUSE.ACF deleted file mode 100644 index ba8c48d..0000000 --- a/src/altera/acex/k30/MOUSE.ACF +++ /dev/null @@ -1,571 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP mouse -BEGIN - DEVICE = EP1K30QC208-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - AUTO_DEVICE = EP1K10FC256-1; - AUTO_DEVICE = EP1K10QC208-1; - AUTO_DEVICE = EP1K10TC144-1; - AUTO_DEVICE = EP1K10TC100-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 200MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - DEVICE_FAMILY = ACEX1K; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL93; - VHDL_READER_VERSION = VHDL93; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 10.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; - ANALYSIS_MODE = DELAY_MATRIX; -END; - -OTHER_CONFIGURATION -BEGIN - EXPLICIT_FAMILY = 1; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - LAST_MAXPLUS2_VERSION = 10.0; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 10.0; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/acex/k30/MOUSE.INC b/src/altera/acex/k30/MOUSE.INC deleted file mode 100644 index 580ab4b..0000000 --- a/src/altera/acex/k30/MOUSE.INC +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Sat Jun 16 17:49:35 2001 - -FUNCTION mouse (mouse_d, clk) - RETURNS (out_x[9..0], out_y[9..0], out_k[1..0], int); diff --git a/src/altera/acex/k30/MOUSE.MIF b/src/altera/acex/k30/MOUSE.MIF deleted file mode 100644 index c6f96ef..0000000 --- a/src/altera/acex/k30/MOUSE.MIF +++ /dev/null @@ -1,65 +0,0 @@ -DEPTH = 256; % Memory depth and width are required % -WIDTH = 16; % Enter a decimal number % - -ADDRESS_RADIX = HEX; % Address and value radixes are optional % -DATA_RADIX = HEX; % Enter BIN, DEC, HEX, or OCT; unless % - % otherwise specified, radixes = HEX % - --- Specify values for addresses, which can be single address or range - -CONTENT -BEGIN - - [0..FF] : 0; - -% - 11 - 1211 - 122211 - 12222211 - 1222222211 - 122222222211 - 1222222211 - 12222221 - 12222221 - 121112221 - 11 12221 - 1 1221 - 111 - - - -% - - 00 : 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - 10 : 1 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0; - 20 : 1 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0; - 30 : 1 2 2 2 2 2 1 1 0 0 0 0 0 0 0 0; - 40 : 1 2 2 2 2 2 2 2 1 1 0 0 0 0 0 0; - 50 : 1 2 2 2 2 2 2 2 2 2 1 1 0 0 0 0; - 60 : 1 2 2 2 2 2 2 2 1 1 0 0 0 0 0 0; - E0 : 1 2 2 2 2 2 2 1 0 0 0 0 0 0 0 0; - 70 : 1 2 2 2 2 2 2 1 0 0 0 0 0 0 0 0; - 80 : 1 2 1 1 1 2 2 2 1 0 0 0 0 0 0 0; - 90 : 1 1 0 0 0 1 2 2 2 1 0 0 0 0 0 0; - A0 : 1 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0; - B0 : 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0; - C0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - D0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - E0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - F0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - -% - - 1110 0000 0000 0 00 0000 0000 0000 0000 - 1000 0000 0000 0100 0000 0100 0000 0000 - 1000 1100 1010 0000 1100 1110 0100 1010 - 1110 1010 1100 0100 1010 0100 1010 1100 - 0010 1010 1000 0100 1010 0100 1110 1000 - 0010 1100 1000 0100 1010 0100 1000 1000 - 1110 1000 1000 0100 1010 0010 0110 1000 - 0000 1000 0000 0000 0000 0000 0000 0000 - -% - -END; diff --git a/src/altera/acex/k30/MOUSE.TDF b/src/altera/acex/k30/MOUSE.TDF deleted file mode 100644 index bb5770d..0000000 --- a/src/altera/acex/k30/MOUSE.TDF +++ /dev/null @@ -1,76 +0,0 @@ - - TITLE "Sp-Mouse"; - -INCLUDE "lpm_add_sub"; - -SUBDESIGN mouse - ( - MOUSE_D : INPUT; - CLK : INPUT; - OUT_X[9..0] : OUTPUT; - OUT_Y[9..0] : OUTPUT; - OUT_K[1..0] : OUTPUT; - INT : OUTPUT; - ) -VARIABLE - - SUM_X[9..0] : DFFE; - SUM_Y[9..0] : DFFE; - - CT[3..0] : DFF; - RG[9..0] : DFFE; - STATE[1..0] : DFFE; - RGK[5..0] : DFFE; - - MOUSE_IMP : NODE; - - DDX[7..0] : NODE; - DDY[7..0] : NODE; - -BEGIN - - CT[].clk = CLK; - - MOUSE_IMP = MOUSE_D xor !DFF(MOUSE_D,CLK,,); - - CT[].clrn = MOUSE_IMP; - - IF CT[] == 12 THEN - CT[] = GND; - ELSE - CT[] = CT[]+1; - END IF; - - RG[].clk = CLK; - RG[].ena = (CT[] == 4) or !RG0; - RG[].d = ((MOUSE_D,RG[9..1]) or !RG0); - RG[].prn = VCC; - - STATE[].ena = !RG0; - STATE[].clk = CLK; - - STATE[].d = (STATE0,RG7); - - RGK[].clk = CLK; - RGK[].ena = (RG7 & !RG0); - RGK[].d = RG[6..1]; - - DDX[] = (RGK[1..0],RG[6..1]); - DDY[] = (RGK[3..2],RG[6..1]); - - SUM_X[].ena = LCELL(!RG7 & (STATE[] == 1) & !RG0); - SUM_Y[].ena = LCELL(!RG7 & (STATE[] == 2) & !RG0); - - SUM_X[].clk = CLK; - SUM_Y[].clk = CLK; - - SUM_X[] = SUM_X[] + (DDX7,DDX7,DDX[]); - SUM_Y[] = SUM_Y[] + (DDY7,DDY7,DDY[]); - - OUT_X[] = SUM_X[]; - OUT_Y[] = SUM_Y[]; - OUT_K[] = RGK[5..4]; - - INT = DFF(((STATE[] == 2) & !RG0),CLK,,); - -END; diff --git a/src/altera/acex/k30/SP2_ACEX.ACF b/src/altera/acex/k30/SP2_ACEX.ACF deleted file mode 100644 index 063fc3a..0000000 --- a/src/altera/acex/k30/SP2_ACEX.ACF +++ /dev/null @@ -1,1366 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP SP2_ACEX -BEGIN - DEVICE = EP1K30QC208-3; - |CASXE1 : LOCATION = LC8_B36; - |CASXE0 : LOCATION = LC7_B36; - |CASX_3 : LOCATION = LC6_B36; - |CASX_2 : LOCATION = LC2_B36; - |CASX_1 : LOCATION = LC5_B36; - |CASX_0 : LOCATION = LC1_B36; - "|video2:SVIDEO|V_WRM" : LOCATION = LC8_F18; - "|video2:SVIDEO|V_WEM2" : LOCATION = LC2_F20; - "|video2:SVIDEO|V_WE_R" : LOCATION = LC5_F11; - "|video2:SVIDEO|V_WEMMO" : LOCATION = LC3_F15; - "|video2:SVIDEO|V_WEM" : LOCATION = LC2_F18; - "|video2:SVIDEO|V_WRM2" : LOCATION = LC8_F20; - "|video2:SVIDEO|V_WEMMM" : LOCATION = LC3_F12; - "|video2:SVIDEO|V_WEMMN" : LOCATION = LC2_F12; - "|video2:SVIDEO|V_WE" : LOCATION = LC6_F12; - "|video2:SVIDEO|V_CSX2" : LOCATION = LC5_F4; - "|video2:SVIDEO|V_CSX1" : LOCATION = LC5_F5; - "|video2:SVIDEO|V_CSX0" : LOCATION = LC5_F3; - "|dcp:DECODE|WR_AWGX" : LOCATION = LC2_A15; - "|video2:SVIDEO|V_WEMM" : LOCATION = LC4_F17; - "|video2:SVIDEO|V_WEY2" : LOCATION = LC2_F19; - "|video2:SVIDEO|V_WEY3" : LOCATION = LC2_F14; - "|video2:SVIDEO|V_WEY1" : LOCATION = LC2_F16; - "|video2:SVIDEO|V_WEY0" : LOCATION = LC2_F17; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_0" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_1" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_2" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_3" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_4" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_5" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_6" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_7" : LOCATION = EAB_D; - |V_WRX3 : LOCATION = LC1_F14; - |V_WRX1 : LOCATION = LC1_F16; - |V_WRX0 : LOCATION = LC1_F17; - "|video2:SVIDEO|V_WR_1" : LOCATION = LC8_F16; - "|video2:SVIDEO|V_WR_0" : LOCATION = LC8_F17; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_0" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_1" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_2" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_3" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_4" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_5" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_6" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_7" : LOCATION = EAB_E; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_0" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_1" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_2" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_3" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_4" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_5" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_6" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_7" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_8" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_9" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_10" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_11" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_12" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_13" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_14" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_15" : LOCATION = EAB_C; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_0" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_1" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_2" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_3" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_4" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_5" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_6" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_7" : LOCATION = EAB_B; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_5" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_6" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_7" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_8" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_9" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_10" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_11" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_12" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_13" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_14" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_15" : LOCATION = EAB_A; - |V_WRX2 : LOCATION = LC1_F19; - "|video2:SVIDEO|V_WR_2" : LOCATION = LC8_F19; - "|video2:SVIDEO|V_WR_3" : LOCATION = LC8_F14; - "|dcp:DECODE|:285" : LOCATION = LC2_A32; - |RASX_0 : LOCATION = LC2_A35; - |RASX_1 : LOCATION = LC2_A34; - |XA3 : BIDIR_PIN = 17; - |XA1 : BIDIR_PIN = 9; - |XA2 : BIDIR_PIN = 200; - |XA0 : BIDIR_PIN = 180; - |VD30 : BIDIR_PIN = 114; - |VD31 : BIDIR_PIN = 136; - |VD32 : BIDIR_PIN = 144; - |VD33 : BIDIR_PIN = 148; - |VD34 : BIDIR_PIN = 149; - |VD35 : BIDIR_PIN = 143; - |VD36 : BIDIR_PIN = 139; - |VD37 : BIDIR_PIN = 128; - |VD20 : BIDIR_PIN = 150; - |VD21 : BIDIR_PIN = 115; - |VD22 : BIDIR_PIN = 135; - |VD23 : BIDIR_PIN = 140; - |VD24 : BIDIR_PIN = 141; - |VD25 : BIDIR_PIN = 147; - |VD26 : BIDIR_PIN = 142; - |VD27 : BIDIR_PIN = 131; - |VD10 : BIDIR_PIN = 104; - |VD11 : BIDIR_PIN = 111; - |VD12 : BIDIR_PIN = 120; - |VD13 : BIDIR_PIN = 127; - |VD14 : BIDIR_PIN = 132; - |VD15 : BIDIR_PIN = 134; - |VD16 : BIDIR_PIN = 133; - |VD17 : BIDIR_PIN = 122; - |VD00 : BIDIR_PIN = 103; - |VD01 : BIDIR_PIN = 113; - |VD02 : BIDIR_PIN = 116; - |VD03 : BIDIR_PIN = 121; - |VD04 : BIDIR_PIN = 126; - |VD05 : BIDIR_PIN = 125; - |VD06 : BIDIR_PIN = 119; - |VD07 : BIDIR_PIN = 112; - |/RESET : BIDIR_PIN = 19; - |MD15 : BIDIR_PIN = 179; - |MD14 : BIDIR_PIN = 187; - |MD12 : BIDIR_PIN = 192; - |MD11 : BIDIR_PIN = 198; - |MD10 : BIDIR_PIN = 204; - |MD9 : BIDIR_PIN = 208; - |MD8 : BIDIR_PIN = 8; - |MD7 : BIDIR_PIN = 161; - |MD6 : BIDIR_PIN = 162; - |MD5 : BIDIR_PIN = 163; - |MD4 : BIDIR_PIN = 164; - |MD3 : BIDIR_PIN = 186; - |MD2 : BIDIR_PIN = 190; - |MD1 : BIDIR_PIN = 193; - |MD0 : BIDIR_PIN = 196; - |D7 : BIDIR_PIN = 61; - |D6 : BIDIR_PIN = 60; - |D5 : BIDIR_PIN = 58; - |D4 : BIDIR_PIN = 57; - |D3 : BIDIR_PIN = 56; - |D2 : BIDIR_PIN = 55; - |D1 : BIDIR_PIN = 54; - |D0 : BIDIR_PIN = 53; - |XACS : OUTPUT_PIN = 169; - |WR_DWG : OUTPUT_PIN = 11; - |WR_COL : OUTPUT_PIN = 157; - |WR_AWG : OUTPUT_PIN = 176; - |/WE : OUTPUT_PIN = 16; - |V_WR3 : OUTPUT_PIN = 88; - |V_WR2 : OUTPUT_PIN = 75; - |V_WR1 : OUTPUT_PIN = 85; - |V_WR0 : OUTPUT_PIN = 83; - |V_CS0 : OUTPUT_PIN = 101; - |V_CS1 : OUTPUT_PIN = 70; - |VA15 : OUTPUT_PIN = 71; - |VA14 : OUTPUT_PIN = 73; - |VA13 : OUTPUT_PIN = 87; - |VA12 : OUTPUT_PIN = 74; - |VA11 : OUTPUT_PIN = 95; - |VA10 : OUTPUT_PIN = 99; - |VA9 : OUTPUT_PIN = 93; - |VA4 : OUTPUT_PIN = 94; - |VA5 : OUTPUT_PIN = 92; - |VA8 : OUTPUT_PIN = 90; - |VA7 : OUTPUT_PIN = 86; - |VA6 : OUTPUT_PIN = 89; - |VA3 : OUTPUT_PIN = 96; - |VA2 : OUTPUT_PIN = 97; - |VA1 : OUTPUT_PIN = 100; - |VA0 : OUTPUT_PIN = 102; - |SXA : OUTPUT_PIN = 7; - |RDXA : OUTPUT_PIN = 173; - |RD_KMPS : OUTPUT_PIN = 10; - |RA17 : OUTPUT_PIN = 67; - |RA16 : OUTPUT_PIN = 68; - |RA15 : OUTPUT_PIN = 69; - |RA14 : OUTPUT_PIN = 65; - |RAS_1 : OUTPUT_PIN = 205; - |RAS_0 : OUTPUT_PIN = 207; - |MA14 : OUTPUT_PIN = 191; - |MA13 : OUTPUT_PIN = 195; - |MA12 : OUTPUT_PIN = 206; - |MA11 : OUTPUT_PIN = 199; - |MA10 : OUTPUT_PIN = 177; - |MA9 : OUTPUT_PIN = 203; - |MA8 : OUTPUT_PIN = 202; - |MA7 : OUTPUT_PIN = 197; - |MA6 : OUTPUT_PIN = 175; - |MA5 : OUTPUT_PIN = 174; - |MA4 : OUTPUT_PIN = 172; - |MA3 : OUTPUT_PIN = 170; - |MA2 : OUTPUT_PIN = 168; - |MA1 : OUTPUT_PIN = 167; - |MA0 : OUTPUT_PIN = 166; - |DAC_WS : OUTPUT_PIN = 159; - |DAC_DATA : OUTPUT_PIN = 158; - |DAC_BCK : OUTPUT_PIN = 160; - |CS_CASH : OUTPUT_PIN = 64; - |CS_ROM : OUTPUT_PIN = 63; - |CLKZ1 : OUTPUT_PIN = 62; - |CAS_3 : OUTPUT_PIN = 15; - |CAS_2 : OUTPUT_PIN = 13; - |CAS_1 : OUTPUT_PIN = 14; - |CAS_0 : OUTPUT_PIN = 12; - |/WAIT : BIDIR_PIN = 18; - |/RF : INPUT_PIN = 25; - |/M1 : INPUT_PIN = 24; - |/WR : INPUT_PIN = 79; - |TG42 : INPUT_PIN = 183; - |/RD : INPUT_PIN = 80; - |/IO : INPUT_PIN = 78; - |/MR : INPUT_PIN = 184; - |/HALT : INPUT_PIN = 182; - |A15 : INPUT_PIN = 47; - |A14 : INPUT_PIN = 46; - |A13 : INPUT_PIN = 45; - |A12 : INPUT_PIN = 44; - |A11 : INPUT_PIN = 41; - |A10 : INPUT_PIN = 40; - |A9 : INPUT_PIN = 39; - |A8 : INPUT_PIN = 38; - |A7 : INPUT_PIN = 37; - |A6 : INPUT_PIN = 36; - |A5 : INPUT_PIN = 31; - |A4 : INPUT_PIN = 30; - |A3 : INPUT_PIN = 29; - |A2 : INPUT_PIN = 28; - |A1 : INPUT_PIN = 27; - |A0 : INPUT_PIN = 26; - |MD13 : BIDIR_PIN = 189; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -LOGIC_OPTIONS -BEGIN - |/wait : SLOW_SLEW_RATE = ON; - |wr_dwg : SLOW_SLEW_RATE = ON; - |wr_dwg : INCREASE_INPUT_DELAY = ON; - |wr_dwg : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |RDXA : FAST_IO = ON; - |SXA : FAST_IO = ON; - |VD00 : INCREASE_INPUT_DELAY = ON; - |VD01 : INCREASE_INPUT_DELAY = ON; - |VD02 : INCREASE_INPUT_DELAY = ON; - |VD03 : INCREASE_INPUT_DELAY = ON; - |VD04 : INCREASE_INPUT_DELAY = ON; - |VD05 : INCREASE_INPUT_DELAY = ON; - |VD06 : INCREASE_INPUT_DELAY = ON; - |VD07 : INCREASE_INPUT_DELAY = ON; - |VD10 : INCREASE_INPUT_DELAY = ON; - |VD11 : INCREASE_INPUT_DELAY = ON; - |VD12 : INCREASE_INPUT_DELAY = ON; - |VD13 : INCREASE_INPUT_DELAY = ON; - |VD14 : INCREASE_INPUT_DELAY = ON; - |VD15 : INCREASE_INPUT_DELAY = ON; - |VD16 : INCREASE_INPUT_DELAY = ON; - |VD17 : INCREASE_INPUT_DELAY = ON; - |VD20 : INCREASE_INPUT_DELAY = ON; - |VD21 : INCREASE_INPUT_DELAY = ON; - |VD22 : INCREASE_INPUT_DELAY = ON; - |VD23 : INCREASE_INPUT_DELAY = ON; - |VD24 : INCREASE_INPUT_DELAY = ON; - |VD25 : INCREASE_INPUT_DELAY = ON; - |VD26 : INCREASE_INPUT_DELAY = ON; - |VD27 : INCREASE_INPUT_DELAY = ON; - |VD30 : INCREASE_INPUT_DELAY = ON; - |VD31 : INCREASE_INPUT_DELAY = ON; - |VD32 : INCREASE_INPUT_DELAY = ON; - |VD33 : INCREASE_INPUT_DELAY = ON; - |VD34 : INCREASE_INPUT_DELAY = ON; - |VD35 : INCREASE_INPUT_DELAY = ON; - |VD36 : INCREASE_INPUT_DELAY = ON; - |VD37 : INCREASE_INPUT_DELAY = ON; - |RAS_0 : INCREASE_INPUT_DELAY = ON; - |RAS_1 : INCREASE_INPUT_DELAY = ON; - |CAS_0 : INCREASE_INPUT_DELAY = ON; - |CAS_0 : SLOW_SLEW_RATE = ON; - |CAS_1 : INCREASE_INPUT_DELAY = ON; - |CAS_1 : SLOW_SLEW_RATE = ON; - |CAS_2 : INCREASE_INPUT_DELAY = ON; - |CAS_2 : SLOW_SLEW_RATE = ON; - |CAS_3 : INCREASE_INPUT_DELAY = ON; - |CAS_3 : SLOW_SLEW_RATE = ON; - |RAS_0 : SLOW_SLEW_RATE = ON; - |RAS_1 : SLOW_SLEW_RATE = ON; - |XACS : INCREASE_INPUT_DELAY = ON; - |/wr : INCREASE_INPUT_DELAY = ON; - |/WE : INCREASE_INPUT_DELAY = ON; - |/wait : INCREASE_INPUT_DELAY = ON; - |VA0 : INCREASE_INPUT_DELAY = ON; - |VA1 : INCREASE_INPUT_DELAY = ON; - |VA2 : INCREASE_INPUT_DELAY = ON; - |VA3 : INCREASE_INPUT_DELAY = ON; - |VA4 : INCREASE_INPUT_DELAY = ON; - |VA5 : INCREASE_INPUT_DELAY = ON; - |VA6 : INCREASE_INPUT_DELAY = ON; - |VA7 : INCREASE_INPUT_DELAY = ON; - |VA8 : INCREASE_INPUT_DELAY = ON; - |VA9 : INCREASE_INPUT_DELAY = ON; - |VA10 : INCREASE_INPUT_DELAY = ON; - |VA11 : INCREASE_INPUT_DELAY = ON; - |VA12 : INCREASE_INPUT_DELAY = ON; - |VA13 : INCREASE_INPUT_DELAY = ON; - |VA14 : INCREASE_INPUT_DELAY = ON; - |VA15 : INCREASE_INPUT_DELAY = ON; - |/rf : INCREASE_INPUT_DELAY = ON; - |/reset : INCREASE_INPUT_DELAY = ON; - |/rd : INCREASE_INPUT_DELAY = ON; - |ra14 : INCREASE_INPUT_DELAY = ON; - |ra14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ra15 : INCREASE_INPUT_DELAY = ON; - |ra15 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ra16 : INCREASE_INPUT_DELAY = ON; - |ra16 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ra17 : INCREASE_INPUT_DELAY = ON; - |ra17 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/mr : INCREASE_INPUT_DELAY = ON; - |/m1 : INCREASE_INPUT_DELAY = ON; - |ma12 : INCREASE_INPUT_DELAY = ON; - |ma13 : INCREASE_INPUT_DELAY = ON; - |ma14 : INCREASE_INPUT_DELAY = ON; - |ma0 : INCREASE_INPUT_DELAY = ON; - |ma1 : INCREASE_INPUT_DELAY = ON; - |ma2 : INCREASE_INPUT_DELAY = ON; - |ma3 : INCREASE_INPUT_DELAY = ON; - |ma4 : INCREASE_INPUT_DELAY = ON; - |ma5 : INCREASE_INPUT_DELAY = ON; - |ma6 : INCREASE_INPUT_DELAY = ON; - |ma7 : INCREASE_INPUT_DELAY = ON; - |ma8 : INCREASE_INPUT_DELAY = ON; - |ma9 : INCREASE_INPUT_DELAY = ON; - |ma10 : INCREASE_INPUT_DELAY = ON; - |ma11 : INCREASE_INPUT_DELAY = ON; - |/io : INCREASE_INPUT_DELAY = ON; - |/HALT : INCREASE_INPUT_DELAY = ON; - |d0 : INCREASE_INPUT_DELAY = ON; - |d1 : INCREASE_INPUT_DELAY = ON; - |d2 : INCREASE_INPUT_DELAY = ON; - |d3 : INCREASE_INPUT_DELAY = ON; - |d4 : INCREASE_INPUT_DELAY = ON; - |d5 : INCREASE_INPUT_DELAY = ON; - |d6 : INCREASE_INPUT_DELAY = ON; - |d7 : INCREASE_INPUT_DELAY = ON; - |CS_CASH : PCI_IO = OFF; - |CS_CASH : INCREASE_INPUT_DELAY = ON; - |CS_CASH : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |cs_rom : PCI_IO = OFF; - |cs_rom : INCREASE_INPUT_DELAY = ON; - |cs_rom : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |a0 : INCREASE_INPUT_DELAY = ON; - |a1 : INCREASE_INPUT_DELAY = ON; - |a2 : INCREASE_INPUT_DELAY = ON; - |a3 : INCREASE_INPUT_DELAY = ON; - |a4 : INCREASE_INPUT_DELAY = ON; - |a5 : INCREASE_INPUT_DELAY = ON; - |a6 : INCREASE_INPUT_DELAY = ON; - |a7 : INCREASE_INPUT_DELAY = ON; - |A8 : INCREASE_INPUT_DELAY = ON; - |a9 : INCREASE_INPUT_DELAY = ON; - |A10 : INCREASE_INPUT_DELAY = ON; - |a11 : INCREASE_INPUT_DELAY = ON; - |A12 : INCREASE_INPUT_DELAY = ON; - |A13 : INCREASE_INPUT_DELAY = ON; - |A14 : INCREASE_INPUT_DELAY = ON; - |A15 : INCREASE_INPUT_DELAY = ON; - |md0 : INCREASE_INPUT_DELAY = ON; - |md1 : INCREASE_INPUT_DELAY = ON; - |md2 : INCREASE_INPUT_DELAY = ON; - |md3 : INCREASE_INPUT_DELAY = ON; - |md4 : INCREASE_INPUT_DELAY = ON; - |md5 : INCREASE_INPUT_DELAY = ON; - |md6 : INCREASE_INPUT_DELAY = ON; - |md7 : INCREASE_INPUT_DELAY = ON; - |md8 : INCREASE_INPUT_DELAY = ON; - |md9 : INCREASE_INPUT_DELAY = ON; - |md10 : INCREASE_INPUT_DELAY = ON; - |md11 : INCREASE_INPUT_DELAY = ON; - |md12 : INCREASE_INPUT_DELAY = ON; - |md13 : INCREASE_INPUT_DELAY = ON; - |md14 : INCREASE_INPUT_DELAY = ON; - |md15 : INCREASE_INPUT_DELAY = ON; - |wr_awg : SLOW_SLEW_RATE = OFF; - |XA0 : INCREASE_INPUT_DELAY = ON; - |XA1 : INCREASE_INPUT_DELAY = ON; - |XA2 : INCREASE_INPUT_DELAY = ON; - |XA3 : INCREASE_INPUT_DELAY = ON; - |ma0 : SLOW_SLEW_RATE = ON; - |ma1 : SLOW_SLEW_RATE = ON; - |ma2 : SLOW_SLEW_RATE = ON; - |ma3 : SLOW_SLEW_RATE = ON; - |ma4 : SLOW_SLEW_RATE = ON; - |ma5 : SLOW_SLEW_RATE = ON; - |ma6 : SLOW_SLEW_RATE = ON; - |ma7 : SLOW_SLEW_RATE = ON; - |ma8 : SLOW_SLEW_RATE = ON; - |ma9 : SLOW_SLEW_RATE = ON; - |ma10 : SLOW_SLEW_RATE = ON; - |ma11 : SLOW_SLEW_RATE = ON; - |VD00 : SLOW_SLEW_RATE = OFF; - |VD01 : SLOW_SLEW_RATE = OFF; - |VD02 : SLOW_SLEW_RATE = OFF; - |VD03 : SLOW_SLEW_RATE = OFF; - |VD04 : SLOW_SLEW_RATE = OFF; - |VD05 : SLOW_SLEW_RATE = OFF; - |VD06 : SLOW_SLEW_RATE = OFF; - |VD07 : SLOW_SLEW_RATE = OFF; - |VD10 : SLOW_SLEW_RATE = OFF; - |VD11 : SLOW_SLEW_RATE = OFF; - |VD12 : SLOW_SLEW_RATE = OFF; - |VD13 : SLOW_SLEW_RATE = OFF; - |VD14 : SLOW_SLEW_RATE = OFF; - |VD15 : SLOW_SLEW_RATE = OFF; - |VD16 : SLOW_SLEW_RATE = OFF; - |VD17 : SLOW_SLEW_RATE = OFF; - |VD20 : SLOW_SLEW_RATE = OFF; - |VD21 : SLOW_SLEW_RATE = OFF; - |VD22 : SLOW_SLEW_RATE = OFF; - |VD23 : SLOW_SLEW_RATE = OFF; - |VD24 : SLOW_SLEW_RATE = OFF; - |VD25 : SLOW_SLEW_RATE = OFF; - |VD26 : SLOW_SLEW_RATE = OFF; - |VD27 : SLOW_SLEW_RATE = OFF; - |VD30 : SLOW_SLEW_RATE = OFF; - |VD31 : SLOW_SLEW_RATE = OFF; - |VD32 : SLOW_SLEW_RATE = OFF; - |VD33 : SLOW_SLEW_RATE = OFF; - |VD34 : SLOW_SLEW_RATE = OFF; - |VD35 : SLOW_SLEW_RATE = OFF; - |VD36 : SLOW_SLEW_RATE = OFF; - |VD37 : SLOW_SLEW_RATE = OFF; - |VA0 : PCI_IO = OFF; - |VA1 : PCI_IO = OFF; - |VA2 : PCI_IO = OFF; - |VA3 : PCI_IO = OFF; - |VA4 : PCI_IO = OFF; - |VA6 : PCI_IO = OFF; - |VA5 : PCI_IO = OFF; - |VA7 : PCI_IO = OFF; - |VA8 : PCI_IO = OFF; - |VA9 : PCI_IO = OFF; - |VA10 : PCI_IO = OFF; - |VA11 : PCI_IO = OFF; - |VA12 : PCI_IO = OFF; - |VA13 : PCI_IO = OFF; - |VA14 : PCI_IO = OFF; - |VA15 : PCI_IO = OFF; - |VD00 : PCI_IO = OFF; - |VD01 : PCI_IO = OFF; - |VD02 : PCI_IO = OFF; - |VD03 : PCI_IO = OFF; - |VD04 : PCI_IO = OFF; - |VD05 : PCI_IO = OFF; - |VD06 : PCI_IO = OFF; - |VD07 : PCI_IO = OFF; - |VD10 : PCI_IO = OFF; - |VD11 : PCI_IO = OFF; - |VD12 : PCI_IO = OFF; - |VD13 : PCI_IO = OFF; - |VD14 : PCI_IO = OFF; - |VD15 : PCI_IO = OFF; - |VD16 : PCI_IO = OFF; - |VD17 : PCI_IO = OFF; - |VD20 : PCI_IO = OFF; - |VD21 : PCI_IO = OFF; - |VD22 : PCI_IO = OFF; - |VD23 : PCI_IO = OFF; - |VD24 : PCI_IO = OFF; - |VD25 : PCI_IO = OFF; - |VD26 : PCI_IO = OFF; - |VD27 : PCI_IO = OFF; - |VD30 : PCI_IO = OFF; - |VD31 : PCI_IO = OFF; - |VD32 : PCI_IO = OFF; - |VD33 : PCI_IO = OFF; - |VD34 : PCI_IO = OFF; - |VD35 : PCI_IO = OFF; - |VD36 : PCI_IO = OFF; - |VD37 : PCI_IO = OFF; - |WR_COL : SLOW_SLEW_RATE = ON; - |VA0 : SLOW_SLEW_RATE = ON; - |VA1 : SLOW_SLEW_RATE = ON; - |VA2 : SLOW_SLEW_RATE = ON; - |VA3 : SLOW_SLEW_RATE = ON; - |VA4 : SLOW_SLEW_RATE = ON; - |VA5 : SLOW_SLEW_RATE = ON; - |VA6 : SLOW_SLEW_RATE = ON; - |VA7 : SLOW_SLEW_RATE = ON; - |VA8 : SLOW_SLEW_RATE = ON; - |VA9 : SLOW_SLEW_RATE = ON; - |VA10 : SLOW_SLEW_RATE = ON; - |VA11 : SLOW_SLEW_RATE = ON; - |VA12 : SLOW_SLEW_RATE = ON; - |VA13 : SLOW_SLEW_RATE = ON; - |VA14 : SLOW_SLEW_RATE = ON; - |VA15 : SLOW_SLEW_RATE = ON; - |V_WR0 : SLOW_SLEW_RATE = OFF; - |V_WR1 : SLOW_SLEW_RATE = OFF; - |V_WR2 : SLOW_SLEW_RATE = OFF; - |V_WR3 : SLOW_SLEW_RATE = OFF; - |XA0 : SLOW_SLEW_RATE = ON; - |XA1 : SLOW_SLEW_RATE = ON; - |XA2 : SLOW_SLEW_RATE = ON; - |XA3 : SLOW_SLEW_RATE = ON; - |XACS : SLOW_SLEW_RATE = ON; - |/wait : PCI_IO = OFF; - |SXA : SLOW_SLEW_RATE = ON; - |/rf : PCI_IO = OFF; - |/reset : PCI_IO = OFF; - |RDXA : SLOW_SLEW_RATE = ON; - |/rd : PCI_IO = OFF; - |/m1 : PCI_IO = OFF; - |/mr : PCI_IO = OFF; - |/io : PCI_IO = OFF; - |/HALT : PCI_IO = OFF; - |/WE : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/WE : SLOW_SLEW_RATE = ON; - |RAS_0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |RAS_1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CAS_0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CAS_1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CAS_2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CAS_3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma0 : PCI_IO = OFF; - |ma1 : FAST_IO = ON; - |ma2 : FAST_IO = ON; - |ma3 : FAST_IO = ON; - |ma4 : FAST_IO = ON; - |ma5 : FAST_IO = ON; - |ma6 : FAST_IO = ON; - |ma7 : FAST_IO = ON; - |ma8 : FAST_IO = ON; - |ma9 : FAST_IO = ON; - |ma10 : FAST_IO = ON; - |ma11 : FAST_IO = ON; - |ma1 : PCI_IO = OFF; - |ma2 : PCI_IO = OFF; - |ma3 : PCI_IO = OFF; - |ma4 : PCI_IO = OFF; - |ma5 : PCI_IO = OFF; - |ma6 : PCI_IO = OFF; - |ma7 : PCI_IO = OFF; - |ma8 : PCI_IO = OFF; - |ma9 : PCI_IO = OFF; - |ma10 : PCI_IO = OFF; - |ma11 : PCI_IO = OFF; - |ma12 : PCI_IO = OFF; - |ma12 : SLOW_SLEW_RATE = ON; - |ma13 : PCI_IO = OFF; - |ma13 : SLOW_SLEW_RATE = ON; - |ma14 : PCI_IO = OFF; - |ma14 : SLOW_SLEW_RATE = ON; - |SXA : PCI_IO = OFF; - |RDXA : PCI_IO = OFF; - |RDXA : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/mr : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/m1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/rd : SLOW_SLEW_RATE = ON; - |wr_awg : PCI_IO = OFF; - |wr_awg : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ra14 : PCI_IO = OFF; - |ra14 : SLOW_SLEW_RATE = ON; - |ra15 : PCI_IO = OFF; - |ra15 : SLOW_SLEW_RATE = ON; - |ra16 : PCI_IO = OFF; - |ra16 : SLOW_SLEW_RATE = ON; - |ra17 : PCI_IO = OFF; - |ra17 : SLOW_SLEW_RATE = ON; - |CS_CASH : SLOW_SLEW_RATE = ON; - |cs_rom : SLOW_SLEW_RATE = ON; - |/WE : PCI_IO = OFF; - |RAS_0 : PCI_IO = OFF; - |RAS_1 : PCI_IO = OFF; - |CAS_0 : PCI_IO = OFF; - |CAS_1 : PCI_IO = OFF; - |CAS_2 : PCI_IO = OFF; - |CAS_3 : PCI_IO = OFF; - |V_WR0 : PCI_IO = OFF; - |V_WR1 : PCI_IO = OFF; - |V_WR2 : PCI_IO = OFF; - |V_WR3 : PCI_IO = OFF; - |v_cs0 : PCI_IO = OFF; - |v_cs1 : PCI_IO = OFF; - |XACS : PCI_IO = OFF; - |/wr : PCI_IO = OFF; - |XA0 : PCI_IO = OFF; - |XA1 : PCI_IO = OFF; - |XA2 : PCI_IO = OFF; - |XA3 : PCI_IO = OFF; - |TG42 : PCI_IO = OFF; - |d0 : PCI_IO = OFF; - |d1 : PCI_IO = OFF; - |d2 : PCI_IO = OFF; - |d3 : PCI_IO = OFF; - |d4 : PCI_IO = OFF; - |d5 : PCI_IO = OFF; - |d6 : PCI_IO = OFF; - |d7 : PCI_IO = OFF; - |md0 : PCI_IO = OFF; - |md1 : PCI_IO = OFF; - |md2 : PCI_IO = OFF; - |md3 : PCI_IO = OFF; - |md4 : PCI_IO = OFF; - |md5 : PCI_IO = OFF; - |md6 : PCI_IO = OFF; - |md7 : PCI_IO = OFF; - |md8 : PCI_IO = OFF; - |md9 : PCI_IO = OFF; - |md10 : PCI_IO = OFF; - |md11 : PCI_IO = OFF; - |md12 : PCI_IO = OFF; - |md13 : PCI_IO = OFF; - |md14 : PCI_IO = OFF; - |md15 : PCI_IO = OFF; - |a0 : PCI_IO = OFF; - |a1 : PCI_IO = OFF; - |a2 : PCI_IO = OFF; - |a3 : PCI_IO = OFF; - |a4 : PCI_IO = OFF; - |a5 : PCI_IO = OFF; - |a6 : PCI_IO = OFF; - |A8 : PCI_IO = OFF; - |a7 : PCI_IO = OFF; - |A10 : PCI_IO = OFF; - |a9 : PCI_IO = OFF; - |a11 : PCI_IO = OFF; - |A12 : PCI_IO = OFF; - |A13 : PCI_IO = OFF; - |A14 : PCI_IO = OFF; - |A15 : PCI_IO = OFF; - |/reset : SLOW_SLEW_RATE = ON; - |/rf : SLOW_SLEW_RATE = ON; - |a0 : SLOW_SLEW_RATE = ON; - |a1 : SLOW_SLEW_RATE = ON; - |a2 : SLOW_SLEW_RATE = ON; - |a3 : SLOW_SLEW_RATE = ON; - |a4 : SLOW_SLEW_RATE = ON; - |a5 : SLOW_SLEW_RATE = ON; - |a6 : SLOW_SLEW_RATE = ON; - |a7 : SLOW_SLEW_RATE = ON; - |a8 : SLOW_SLEW_RATE = ON; - |a9 : SLOW_SLEW_RATE = ON; - |a10 : SLOW_SLEW_RATE = ON; - |a11 : SLOW_SLEW_RATE = ON; - |A12 : SLOW_SLEW_RATE = ON; - |A13 : SLOW_SLEW_RATE = ON; - |A14 : SLOW_SLEW_RATE = ON; - |A15 : SLOW_SLEW_RATE = ON; - |/mr : SLOW_SLEW_RATE = ON; - |/m1 : SLOW_SLEW_RATE = ON; - |/HALT : SLOW_SLEW_RATE = ON; - |/io : SLOW_SLEW_RATE = ON; - |d0 : SLOW_SLEW_RATE = ON; - |d1 : SLOW_SLEW_RATE = ON; - |d2 : SLOW_SLEW_RATE = ON; - |d3 : SLOW_SLEW_RATE = ON; - |d4 : SLOW_SLEW_RATE = ON; - |d5 : SLOW_SLEW_RATE = ON; - |d6 : SLOW_SLEW_RATE = ON; - |d7 : SLOW_SLEW_RATE = ON; - |DAC_BCK : SLOW_SLEW_RATE = ON; - |DAC_DATA : SLOW_SLEW_RATE = ON; - |DAC_WS : SLOW_SLEW_RATE = ON; - |WR_COL : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |WR_COL : FAST_IO = ON; - |v_cs0 : SLOW_SLEW_RATE = ON; - |v_cs1 : SLOW_SLEW_RATE = ON; - |ma0 : FAST_IO = ON; - |ma0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma4 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma5 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma6 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma7 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma8 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma9 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma10 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma11 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma12 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma13 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md0 : SLOW_SLEW_RATE = ON; - |md1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md1 : SLOW_SLEW_RATE = ON; - |md2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md2 : SLOW_SLEW_RATE = ON; - |md3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md3 : SLOW_SLEW_RATE = ON; - |md4 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md4 : SLOW_SLEW_RATE = ON; - |md5 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md5 : SLOW_SLEW_RATE = ON; - |md6 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md6 : SLOW_SLEW_RATE = ON; - |md7 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md7 : SLOW_SLEW_RATE = ON; - |md8 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md8 : SLOW_SLEW_RATE = ON; - |md9 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md9 : SLOW_SLEW_RATE = ON; - |md10 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md10 : SLOW_SLEW_RATE = ON; - |md11 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md11 : SLOW_SLEW_RATE = ON; - |md12 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md12 : SLOW_SLEW_RATE = ON; - |md13 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md13 : SLOW_SLEW_RATE = ON; - |md14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md14 : SLOW_SLEW_RATE = ON; - |md15 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md15 : SLOW_SLEW_RATE = ON; - "|video2:SVIDEO|SVA12" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA11" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA10" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA0" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA1" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA2" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA3" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA4" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA5" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - |v_cs0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |v_cs1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD00 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD01 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD02 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD03 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD04 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD05 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD06 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD07 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD10 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD11 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD12 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD13 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD15 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD16 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD17 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD20 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD21 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD22 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD23 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD24 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD25 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD26 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD27 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD30 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD31 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD32 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD33 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD34 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD35 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD36 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD37 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CLKZ1 : SLOW_SLEW_RATE = OFF; - "|video2:SVIDEO|D_PIC00" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC01" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC02" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC03" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC04" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC05" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC06" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC07" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA0 : FAST_IO = ON; - |VA1 : FAST_IO = ON; - |VA2 : FAST_IO = ON; - |VA3 : FAST_IO = ON; - |VA4 : FAST_IO = ON; - |VA5 : FAST_IO = ON; - |VA6 : FAST_IO = ON; - |VA7 : FAST_IO = ON; - |VA8 : FAST_IO = ON; - |VA9 : FAST_IO = ON; - |VA10 : FAST_IO = ON; - |VA11 : FAST_IO = ON; - |VA12 : FAST_IO = ON; - |VA13 : FAST_IO = ON; - |VA14 : FAST_IO = ON; - |VA15 : FAST_IO = ON; - |V_WR0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |V_WR1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |V_WR2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |V_WR3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA4 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA5 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA6 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA7 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA8 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA9 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA10 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA11 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA12 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA13 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA15 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MULTIVOLT_IO = ON; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - RELEASE_CLEARS = ON; - AUTO_RESTART = ON; - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - OPTIMIZE_FOR_SPEED = 5; - DEVICE_FAMILY = ACEX1K; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - SMART_RECOMPILE = OFF; - FITTER_SETTINGS = CUSTOM; - USE_QUARTUS_FITTER = OFF; - DESIGN_DOCTOR_RULES = CUSTOM; - RPT_FILE_LCELL_INTERCONNECT = OFF; - RPT_FILE_HIERARCHY = OFF; - DESIGN_DOCTOR = OFF; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - EXPANDER_NETWORKS = OFF; - ASYNCHRONOUS_INPUTS = OFF; - PRESET_CLEAR_NETWORKS = OFF; - MULTI_CLOCK_NETWORKS = OFF; - MASTER_RESET = OFF; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 12.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - CARRY_OUT_PINS_LCELL_INSERT = ON; - ROW_PINS_LCELL_INSERT = ON; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - CARRY_CHAIN = AUTO; - CASCADE_CHAIN = AUTO; - SLOW_SLEW_RATE = ON; - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - USE_LPM_FOR_AHDL_OPERATORS = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - IGNORE_SOFT_BUFFERS = ON; - REGISTER_OPTIMIZATION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SLOW_SLEW_RATE = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - NOT_GATE_PUSH_BACK = ON; - SOFT_BUFFER_INSERTION = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/acex/k30/SP2_ACEX.TDF b/src/altera/acex/k30/SP2_ACEX.TDF deleted file mode 100644 index dfa3d6e..0000000 --- a/src/altera/acex/k30/SP2_ACEX.TDF +++ /dev/null @@ -1,1227 +0,0 @@ - - TITLE "Main"; - -PARAMETERS - ( - UPDATE = 1, -- 1 for UPDATE sheet - MODE = "SPRINTER", -- or MODE = "SPECTRUM" - NMI_ON = "OFF", -- "ON" - for use NMI - SCREEN_OFF = "NOT_USE" -- "USE" - for use screen on/off - ); - -INCLUDE "lpm_ram_dp"; -INCLUDE "kbd"; ---INCLUDE "video"; -INCLUDE "video2"; - -INCLUDE "dcp"; ---INCLUDE "dcp2"; - -INCLUDE "acceler"; -INCLUDE "ay"; -INCLUDE "mouse"; - -SUBDESIGN SP2_ACEX - ( - TG42 : INPUT; - CLKZ1 : OUTPUT; - - /WAIT : BIDIR; - /RESET : BIDIR; - /M1 : INPUT; - /RF : INPUT; - /IO : INPUT; - /WR : INPUT; - /RD : INPUT; - /HALT : INPUT; - /MR : INPUT; - A[15..0] : INPUT; - D[7..0] : BIDIR; - - CS_ROM : OUTPUT; - CS_CASH : OUTPUT; - RA[17..14] : OUTPUT; - - V_CS[1..0] : OUTPUT; - VA[15..0] : OUTPUT; - V_WR[3..0] : OUTPUT; - VD3[7..0] : BIDIR; - VD2[7..0] : BIDIR; - VD1[7..0] : BIDIR; - VD0[7..0] : BIDIR; - - WR_COL : OUTPUT; - - DAC_DATA : OUTPUT; - DAC_WS : OUTPUT; - DAC_BCK : OUTPUT; - - MD[15..0] : BIDIR; - MA[14..0] : OUTPUT; - RAS_[1..0] : OUTPUT; - CAS_[3..0] : OUTPUT; - /WE : OUTPUT; - - XACS : OUTPUT; -- ROM_WE - XA[3..0] : BIDIR; - SXA : OUTPUT; - - RDXA : OUTPUT; - WR_AWG : OUTPUT; - RD_KMPS : OUTPUT; - WR_DWG : OUTPUT; - - - - ) -VARIABLE - - MS : MOUSE; - KEYS : KBD; - SVIDEO : VIDEO2 WITH (MODE=MODE); - - DECODE : DCP WITH (UPDATE=UPDATE); --- DECODE : DCP2; - - ACC : ACCELER; - AY3 : AY; - - CBL : lpm_ram_dp WITH (lpm_width=16,lpm_widthad=8); - - CT[5..0] : NODE; - CTH[5..0] : NODE; - CTV[8..0] : NODE; - CTF[6..0] : NODE; - - CLK42 : NODE; - - DD[7..0] : NODE; - D_OUT : NODE; - RD_RAM : NODE; - - MCA[1..0] : NODE; - - DVD3[7..0] : NODE; - DVD2[7..0] : NODE; - DVD1[7..0] : NODE; - DVD0[7..0] : NODE; - - DMD[15..0] : NODE; - DMDX[7..0] : NODE; - - COPY_SINC_H : NODE; - COPY_SINC_V : NODE; - - START_UP : NODE; - - BLANK : NODE; - --- WGA[1..0] : NODE; -- to MA[1..0] / WR_AWG^ --- FDD_C[2..0] : NODE; -- to MA[4..2] / WR_AWG^ --- HDD_C[3..0] : NODE; -- to MA[8..5] / WR_AWG^ --- HD_A[2..0] : NODE; -- to MA[11..9] / WR_AWG^ - NMI_X : NODE; -- to MA12 / WR_AWG^ - INT_X : NODE; -- to MA13 / WR_AWG^ - TURBO : NODE; -- to MA14 / WR_AWG^ - KBD_CX : NODE; -- to XA0 / WR_AWG^ - KBD_DX : NODE; -- to XA1 / WR_AWG^ - TAPE_OUT : NODE; -- to XA2 / WR_AWG^ - - KBD_CC : NODE; -- from XA0 / SXA=0 / RD_XA=0 - KBD_DD : NODE; -- from XA1 / SXA=0 / RD_XA=0 - TAPE_IN : NODE; -- from XA2 / SXA=0 / RD_XA=0 - MOUSE_D : NODE; -- from XA3 / SXA=0 / RD_XA=0 - - FDD_CH : NODE; -- from XA0 / SXA=1 / RD_XA=0 - FDD_W : NODE; -- from XA1 / SXA=1 / RD_XA=0 - SINC_1 : NODE; -- from XA2 / SXA=1 / RD_XA=0 - SINC_2 : NODE; -- from XA3 / SXA=1 / RD_XA=0 - SINC_1M : NODE; - SINC_2M : NODE; - - WR_TM9 : NODE; - --- ==================== - TEST_SWITCH : NODE; - - T_SIGNAL : NODE; --- TEST_1 : LCELL; --- KTA[7..0] : LCELL; --- KTD[7..0] : DFF; --- KTT : LCELL; - - K_DATA[10..0] : NODE; - KEY_D[10..0] : DFF; - KEY_WRITE : NODE; - KD[7..0] : DFF; - K_XOR : NODE; - NEXT_K : NODE; - - RED[7..0] : NODE; - GREEN[7..0] : NODE; - BLUE[7..0] : NODE; - - BORDER[7..0] : DFFE; - KBD_BLK : NODE; - - DOS : NODE; - DOS_ : NODE; - - MDR[7..0] : NODE; - DCPP[7..0] : NODE; - - MDP[7..0] : DFFE; --- MDP[7..0] : LCELL; - - PDD[7..0] : LCELL; - WR_PORT : NODE; - - RGMOD[7..0] : DFFE; - - HDDR[7..0] : DFFE; - - GLISSER : NODE; - BLK_MR : NODE; - VIDEO_PG : NODE; - - AUDIO_CH : NODE; - - CBL_MODE : NODE; - CBL_STEREO : NODE; - CBL_MODE16 : NODE; - CBL_INT_ENA : NODE; - CBL_INT : NODE; - CBL_WR : NODE; - CBL_XX[7..0] : DFFE; - CBL_CNT[7..0] : DFF; - CBL_CTX[4..0] : DFFE; - CBL_WA[7..0] : DFFE; - CBL_WAE : NODE; - CBL_IND : NODE; - - CBL_TAB[4..0] : LCELL; - - CBL_R[15..0] : DFFE; - CBD[7..0] : DFFE; - - AUDIO_R[15..0] : DFFE; - - - /WAIT_ALL : NODE; - - BLK_MEM : NODE; - - SYS_ENA : NODE; - SYS_ENA2 : NODE; - - /SYS : NODE; - SYS_PG : NODE; - - CS_ISA : NODE; - - ISA_CASH : NODE; - ISA_A[3..0] : NODE; - - PRE_ISA : NODE; - PRE_ROM : NODE; - PRE_CASH : NODE; - - WAIT_ORIG : NODE; - WAIT_ROM : NODE; - WAIT_ROMX : NODE; - WT_R[2..0] : DFF; - --- BLK_WAIT : NODE; - - ISA_A20 : NODE; - CASH_ON : NODE; - BLK_MWR2 : NODE; - - ROM_RG[7..0]: DFFE; - ROM_WRITE_MODE : NODE; - - AY_CHS[15..0] : DFFE; - - SOFT_RESET : NODE; - SOFT_RES[1..0] : DFF; - - AY_FULL[10..0] : DFF; - - ALL_MODE[7..0] : DFFE; - - DOUBLE_CAS : NODE; - - XACS : DFF; - - KEMPS[7..0] : LCELL; - - KEY/KEMS[7..0] : LCELL; - AY/PORTS[7..0] : LCELL; - - V_WRXX[3..0]: LCELL; - V_WRX[3..0] : LCELL; --- V_WRX[3..0] : NODE; - - KEY_IO : NODE; - - /IOWR : NODE; - /IORD : NODE; - - RASX_[1..0] : NODE; - CASX_[3..0] : NODE; - CASXE[1..0] : NODE; - CAS_A : NODE; - --- ISA_CELL[1..0] : LCELL; - - T_RDXA : NODE; - - /WE_OUT : NODE; - - SINC_HOLD[8..0] : DFF; - - HOLD[7..0] : DFFE; - - CS_ROMT : NODE; - CS_CASHT : NODE; - - ISA_PORT[7..0] : DFFE; - -BEGIN - - CLK42 = TG42; - --- /RESET = TRI(GND,!DFF((KEYS.kb_reset & START_UP & SOFT_RESET),CLK42,,)); - -- start_up from SOFT_RESET - /RESET = TRI(GND,!DFF((KEYS.kb_reset & SOFT_RESET),CLK42,,)); - --- SOFT_RES[].prn = DFF((!DECODE.BLK_R or /WR or !(DECODE.PAGE[7..0] == H"A0")),CLK42,,); - - SOFT_RES[].clk = !CT4; - CASE SOFT_RES[] IS - WHEN 0,1 => SOFT_RES[] = GND; - WHEN 2 => SOFT_RES[] = 1; - WHEN 3 => SOFT_RES[] = 2; - END CASE; - SOFT_RESET = (SOFT_RES[] == 0); -- when no_Z - RESET! - --- ===== Spectrum-Ports =================== - - /IOWR = DFF((/WR or /IO),CLK42,,!/IO); - /IORD = DFF((/RD or /IO),CLK42,,!/IO); - - BORDER[].clk = /IOWR; - BORDER[].ena = DFF((DCPP[] == B"1100X010"),CLK42,,); -- C2/C8 - BORDER[].d = D[]; - --- ===== keyboard ========================= - --- ======================================== --- NEW 30.06.2022 --- KEYS.int_ena = ALL_MODE0; -- int in all keys --- KEYS.ena = !ALL_MODE0; -- ZX-Keyboard --- new bit3 in ALL_MODE, disables keyboard interruptions w/o accellerator affected - KEYS.int_ena = LCELL(ALL_MODE0 & ALL_MODE3); - KEYS.ena = VCC; -- ZX-Keyboard always enabled --- ======================================== - - KEYS.clk42 = CLK42; - KEYS.clk_k = DFF(CTH5,CLK42,,); - KEYS.kbd_cc = KBD_CC or !KBD_BLK; - KEYS.kbd_dd = KBD_DD; - - KD[].clk = CLK42; - NEXT_K = TFF(VCC,KEY_WRITE,,); - - CASE (NEXT_K) IS - WHEN 0 => KD[] = H"ED"; - WHEN 1 => KD[] = (B"00000",CTF[6..4]); - END CASE; - - K_XOR = !(KD7 xor KD6 xor KD5 xor KD4 xor KD3 xor KD2 xor KD1 xor KD0); - K_DATA[] = (VCC,K_XOR,KD[],GND); - - KEY_D[].clk = KBD_CC; - KEY_D[].d = (GND,KEY_D[10..1]); - - FOR i in 0 to 10 GENERATE - KEY_D[i].prn = K_DATA[i] or KEY_WRITE; - END GENERATE; - KEY_D[].clrn = /RESET; - - KEY_WRITE = DFF((!DFF(CTF1,CLK42,,) or CTF1),CLK42,,); - --- KBD_DX = KEY_D0; --- KBD_BLK = DFF(VCC,CTV7,KEY_WRITE,); - - KBD_BLK = VCC; - KBD_DX = GND; - --- ======================================== --- == Data Paths ========================== --- ======================================== - - MDP[].clk = DECODE./IOMM; - - CASE (DECODE.TYPE[0],(DECODE.HDD_FLIP & DECODE.HDD_DATA)) IS - WHEN B"00" => MDP[] = MD[7..0]; - WHEN B"01" => MDP[] = HDDR[7..0]; - WHEN B"1X" => MDP[] = MD[15..8]; - END CASE; - --- HDDR[].clk = DECODE./IOM; - - HDDR[].clk = LCELL(/WR & (/RD or DECODE./IOMM)); - HDDR[].ena = (DECODE.HDD_DATA & !DECODE./IOM); - - CASE DFF(/WR,DECODE.RAS,,) IS - WHEN 0 => HDDR[].d = D[]; - WHEN 1 => HDDR[].d = MD[15..8]; - END CASE; -% - CASE (DECODE.MC_END & DECODE.HDD_FLIP) IS - WHEN 0 => DMDX[] = (ACC.MDO[7..0]); - WHEN 1 => DMDX[] = (HDDR[]); - END CASE; -% - DMDX[] = (ACC.MDO[7..0]); - - ACC.HDDR[] = HDDR[]; - ACC.HDD_FLIP = DECODE.HDD_FLIP; - - CASE DECODE.TYPE0 IS - WHEN 0 => - KEY/KEMS[] = (LCELL((KEYS.kbo5 & !CBL_MODE) or (CBL_IND & CBL_MODE)),TAPE_IN,LCELL(CBL_MODE & CTV8),KEYS.kbo[4..0]); - AY/PORTS[] = DECODE.DO[]; - WHEN 1 => - KEY/KEMS[] = KEMPS[]; - AY/PORTS[] = AY3.DO[]; - END CASE; - - CASE DECODE.TYPE[2..1] IS - WHEN B"11" => PDD[] = MDP[]; - WHEN B"10" => PDD[] = KEY/KEMS[]; - WHEN B"01" => PDD[] = AY/PORTS[]; - WHEN B"00" => PDD[] = VCC; - END CASE; - - CASE /IO IS - WHEN 1 => DD[] = ACC.DO[]; - WHEN 0 => DD[] = PDD[]; - END CASE; - --- D_OUT = !(/IO or /RD or LCELL((DCPP[7..4] == 0) or (DCPP[7..4] == 3))) or RD_RAM; - D_OUT = !(/IORD or LCELL((DCPP[7..4] == 0) or (DCPP[7..4] == 3))) or RD_RAM; - - V_WRXX[] = !SVIDEO.V_WEN[]; - - V_WRX3 = !SVIDEO.V_WEN3; - V_WRX2 = !SVIDEO.V_WEN2; - V_WRX1 = !SVIDEO.V_WEN1; - V_WRX0 = !SVIDEO.V_WEN0; - - FOR i IN 0 TO 7 GENERATE - D[i] = TRI(DD[i],D_OUT); - VD3[i] = TRI(DVD3[i],V_WRX3); - VD2[i] = TRI(DVD2[i],V_WRX2); - VD1[i] = TRI(DVD1[i],V_WRX1); - VD0[i] = TRI(DVD0[i],V_WRX0); - MD[i] = TRI(DMDX[i],!/WE_OUT or WR_PORT); - MD[i+8] = TRI(ACC.MDO[i+8],!/WE_OUT or WR_PORT); --- MD[i+8] = TRI(DMDY[i],!/WE or WR_PORT); - END GENERATE; - --- ======================================== --- ======================================== --- ======================================== --- ======================================== -% -IF MODE == "SPECTRUM" GENERATE - - TEST_SWITCH = TFF((!KEYS.kb_sh & !KEYS.kb_ctrl),KEYS.kb_F12,,); - - CASE TEST_SWITCH IS - WHEN 0 => - KEYS./rf = /RF; - KEYS./io = /IO; - KEYS.a[15..8] = A[15..8]; - KEYS./iom = /IO; - - WHEN 1 => - - KEYS./rf = DFF((CT4 or CT5),CT2,,); - KEYS./io = DFF((CT4 or !CT5),CT2,,); - KEYS.a[15..8] = !KTA[]; - KEYS./iom = DFF((CT4 or !CT5),CT2,,); - - END CASE; - - CASE TEST_SWITCH IS - WHEN 0 => - RED[] = (SVIDEO.zx_color1 & (VCC,SVIDEO.zx_color3,B"000000")); - GREEN[] = (SVIDEO.zx_color2 & (VCC,SVIDEO.zx_color3,B"000000")); - BLUE[] = (SVIDEO.zx_color0 & (VCC,SVIDEO.zx_color3,B"000000")); - WHEN 1 => - RED[] = (CTH[4..0],CT[5..3]) & CTV[4] & BLANK & T_SIGNAL or TEST_1; - GREEN[] = (CTH[4..0],CT[5..3]) & CTV[5] & BLANK & T_SIGNAL or TEST_1; - BLUE[] = (CTH[4..0],CT[5..3]) & CTV[6] & BLANK & T_SIGNAL or TEST_1; - END CASE; - - DVD0[] = SVIDEO.vdo0[]; - DVD3[] = RED[]; - DVD2[] = GREEN[]; - DVD1[] = BLUE[]; - - V_WR0 = SVIDEO.v_wr0; - V_WR[3..1] = WR_COL; - - DECODE.TURBO_HAND = VCC; - --- ===== TEST CODES ============================================ - - KTD[].clk = DFF((CT4 or !CT5),CT2,,); - KTD[] = KEYS.kbo[]; - - KTA0 = (CTV[5..3] == 0); - KTA1 = (CTV[5..3] == 1); - KTA2 = (CTV[5..3] == 2); - KTA3 = (CTV[5..3] == 3); - KTA4 = (CTV[5..3] == 4); - KTA5 = (CTV[5..3] == 5); - KTA6 = (CTV[5..3] == 6); - KTA7 = (CTV[5..3] == 7); - - CASE CTH[2..0] IS - WHEN 0 => KTT = KTD0; - WHEN 1 => KTT = KTD1; - WHEN 2 => KTT = KTD2; - WHEN 3 => KTT = KTD3; - WHEN 4 => KTT = KTD4; - WHEN 5 => KTT = KTD5; - WHEN 6 => KTT = KTD6; - WHEN 7 => KTT = KTD7; - END CASE; - - T_SIGNAL = DFF(((!CTH5 or TAPE_IN) & (CTH5 or MOUSE_D) & KBD_CC),CLK42,,); - - CASE (CTH[5..3],CTV[8..6]) IS - WHEN B"1XXXXX" => TEST_1 = GND; - WHEN B"XXX100" => TEST_1 = GND; - WHEN B"XXXX11" => TEST_1 = GND; - WHEN B"000000" => TEST_1 = TFF(VCC,KEYS.kb_ctrl,,); - WHEN B"001000" => TEST_1 = GND; - WHEN B"010000" => TEST_1 = GND; - WHEN B"011000" => TEST_1 = KTT; - WHEN B"000001" => TEST_1 = TFF(VCC,KEYS.kb_alt,,); - WHEN B"001001" => TEST_1 = GND; - WHEN B"010001" => TEST_1 = GND; - WHEN B"011001" => TEST_1 = GND; - WHEN B"000010" => TEST_1 = TFF(VCC,KEYS.kb_sh,,); - WHEN B"001010" => TEST_1 = GND; - WHEN B"010010" => TEST_1 = GND; - WHEN B"011010" => TEST_1 = GND; - END CASE; - -ELSE GENERATE -% - TEST_SWITCH = TFF((!KEYS.kb_sh & !KEYS.kb_ctrl & !KEYS.kb_alt),KEYS.kb_F12,,/RESET); - - DECODE.TURBO_HAND = TEST_SWITCH; - - KEY_IO = DFFE((/IO or !/M1),CLK42,,,(CT1 & CT2)); - KEYS./rf = DFFE((CT2 or !KEY_IO),CLK42,,,CT0); - KEYS./iom = KEY_IO; - KEYS./io = KEY_IO; - KEYS./m1 = VCC; - - KEYS.a[15..8] = A[15..8]; - - DVD0[] = SVIDEO.vdo0[]; - DVD1[] = SVIDEO.vdo1[]; - DVD2[] = SVIDEO.vdo2[]; - DVD3[] = SVIDEO.vdo3[]; - - V_WR[3..0] = SVIDEO.V_WR[]; -% -END GENERATE; -% --- ===================================================== --- ===================================================== - - SYS_ENA = (!/SYS or ROM_RG4) or - (A[15..4] == B"001111111111") or - (A[15..4] == B"00000000000X"); - --- SYS_ENA2 = DFFE(SYS_ENA,/MR,,,/RF) & DFF((A[7..0] == B"0X111100"),CLK42,,); - SYS_ENA2 = DFF((A[7..0] == B"0X111100"),CLK42,,); - - ISA_PORT[].clk = /IOWR; - ISA_PORT[].d = D[]; - ISA_PORT[].ena = DECODE.BLK_R & DFF((DCPP[] == B"1111XXXX"),CLK42,,); - -IF (UPDATE == 1) GENERATE - - WAIT_ORIG = LCELL(/MR or CT5 or ALL_MODE2 or - LCELL((!(DECODE.V_RAM & (A14 & A15)) & !(A14 & !A15)) or TURBO)); - - - SOFT_RES[].prn = !DFF(DFF((LCELL(DECODE.BLK_R & A14 & A15) & - LCELL(DECODE.PAGE[7..4] == H"A")),CLK42,,),(/WR or /MR),/RESET,); - - -- /SYS=0 - system ROM on - /SYS = DFFE(!A6,/IOWR,/RESET,,SYS_ENA2); - - -- SYS_PG - system ROM0/ROM1 switch - SYS_PG = DFFE(D0,/IOWR,/RESET,!ROM_RG4,(SYS_ENA2 & !D1)); - - -- 0 - write A20 for ISA - ISA_A20 = (/IOWR or !DFF((DCPP[] == B"00011011"),CLK42,,)); -- 1B --- ISA_A20 = VCC; - - -- 1 - CASHE on IN A,(0FBh/07Bh) --- CASH_ON = DFFE(A7,/IORD,/RESET,,DFF((DCPP[] == H"88"),CLK42,,));-- 88 - CASH_ON = DFFE(A7,/IORD,/RESET,,DFF((A[7..0] == B"X1111011"),CLK42,,)); - - -- 0 - CS_ISA - - PRE_ISA = LCELL(!LCELL(ISA_PORT[] == B"1101XXXX") or !DECODE.BLK_R or !A14 or !A15); - PRE_ROM = LCELL(/SYS or A14 or A15 or CASH_ON); - PRE_CASH = LCELL(A14 or A15 or !CASH_ON); - --- BLK_WAIT = LCELL(LCELL(PRE_CASH or !PRE_ROM) or (/RD & /WR) or /MR); - - WAIT_ROMX = LCELL(CS_ROM & CS_ISA); - WAIT_ROM = (WAIT_ROMX or DFF((WT_R[] == 0),CLK42,!WAIT_ROMX,)); - WT_R[].clk = CLK42; - CASE (WAIT_ROMX,WT_R[]) IS - WHEN 0 => WT_R[] = 0; - WHEN B"0001" => WT_R[] = WT_R[] - 1; - WHEN B"001X" => WT_R[] = WT_R[] - 1; - WHEN B"01XX" => WT_R[] = WT_R[] - 1; - WHEN B"1XXX" => WT_R[] = 4; - END CASE; - - CS_ISA = DFF((!/RF or PRE_ISA),!/MR,,LCELL(CS_ISA or !/MR)); - CS_ROMT = DFF((!/RF or PRE_ROM or !PRE_CASH),!/MR,,LCELL(CS_ROMT or !/MR)); - CS_CASHT = DFF((!/RF or !PRE_ROM or PRE_CASH),!/MR,,LCELL(CS_CASHT or !/MR)); - - CS_ROM = CS_ROMT; - - CS_CASH = CS_CASHT & CS_ISA & ISA_A20; - --- CS_ROM = LCELL(LCELL(PRE_ROM or !PRE_CASH) or (/RD & /WR) or /MR); - --- CS_CASH = LCELL(LCELL(PRE_CASH or !PRE_ROM) or (/RD & /WR) or /MR) & --- CS_ISA & ISA_A20; - - CASE (PRE_ROM,PRE_CASH) IS - WHEN B"00" => ISA_A[] = B"1000"; -- error -> ISA - WHEN B"01" => ISA_A[] = ((ROM_RG3 xor !SYS_PG),ROM_RG[2..0]); -- ROM_ADRESS - WHEN B"10" => ISA_A[] = (B"01",ROM_RG[1..0]); -- CASHE_ADRESS - WHEN B"11" => ISA_A[] = (!PRE_ISA,GND,ISA_PORT[2..1]); -- for ISA_A20 - END CASE; - RA[] = ISA_A[3..0]; - - XACS.clk = !(/MR or /WR); - XACS.d = (!ROM_RG4 or A14 or A15); - XACS.prn = (XACS or (!/MR & ROM_RG4)); - --- XACS.clk = CLK42; --- XACS = (WAIT_ROM or /WR or A14 or A15); --- XACS.prn = !/MR & ROM_RG4; - - BLK_MEM = LCELL(!PRE_ROM or !PRE_CASH or !PRE_ISA); - - RD_RAM = !(/MR or /RD or BLK_MEM); - - BLK_MWR2 = DECODE.RAM or BLK_MEM; - - DECODE.BLK_MEM = BLK_MEM; - - ROM_RG[].clk = /IOWR; - ROM_RG[].d = D[]; - ROM_RG[].ena = DFF((DCPP[] == H"8F"),CLK42,,) or - (!/SYS & DFF((A[7..0] == B"01011100"),CLK42,,)); -- 5C - ROM_RG[].clrn = /RESET; - -ELSE GENERATE - - SOFT_RES[].prn = DFF((!DFF(DECODE.BLK_R,CLK42,,) or /WR or !(DECODE.PAGE[7..4] == H"A")),CLK42,,!/MR); - - WT_R[].clk = GND; - WT_R[] = 0; - - WAIT_ROM = VCC; - - DECODE.BLK_MEM = GND; - - BLK_MWR2 = DECODE.BLK_R; - - XACS.clk = CLK42; - CASE ROM_WRITE_MODE IS - WHEN 0 => - CS_ROM = ROM_RG[4] or !/RF or LCELL(DECODE.CS_ROM or /RD or (DECODE.BLK_R & !LCELL(DECODE.PAGE[7..4] == 14))); - XACS = VCC; - WHEN 1 => - CS_ROM = /MR or !/RF or DFF((/RD & /WR),CLK42,,); --- XACS = /MR or DFF((/WR or DECODE.MC_END),!CLK42,,); - XACS = /MR or DFF(/WR or !DFF(/WR,!CT2,,!/WR),!CT2,,!/WR); - END CASE; - --- CS_CASH = !DECODE.BLK_R or !(DECODE.PAGE[7..4] == 15); - --- CS for CASHE & ISA-Slots - - CS_CASH = (DFF(!(DECODE.PAGE[7..4] == B"11X1"),CLK42,,DECODE.BLK_R) & - --- CS for ISA_A20 signal - - LCELL(DECODE./IOM or /WR or !(DCPP[] == B"00011011")) -- 1B - - ); - --- Switcher for ISA/CASHE adress - - ISA_CASH = LCELL(DECODE.BLK_R & (DECODE.PAGE[7..4] == B"11X1")) or !/IOWR; - - CASE /IO IS - WHEN 0 => ISA_A[3..2] = B"00"; -- for Write to A20 port - ISA_A[1..0] = DECODE.PAGE[1..0]; -- ANY - - WHEN 1 => --- ISA_A[3..2] = B"10"; -- for ISA Slots - ISA_A[3..2] = (!DECODE.PAGE5,DECODE.PAGE5); - --- ISA_A[1..0] = DECODE.PAGE[1..0]; -- ISA select - ISA_A[1..0] = (DECODE.PAGE2,DECODE.PAGE1); -- ISA select - END CASE; - - RD_RAM = !(DECODE.CS_RAM or /RD or DECODE.BLK_R); - - CASE ROM_WRITE_MODE IS - WHEN 0 => - CASE (ISA_CASH,DECODE.RAM) IS - WHEN 0 => RA[] = (B"01",A[15..14]); -- for CASHE in RAM - WHEN 1 => RA[] = DECODE.RA[]; -- ROM Adresses - WHEN 2,3 => RA[] = ISA_A[3..0]; -- CASHE & ISA - END CASE; - WHEN 1 => - RA[] = ROM_RG[3..0]; - END CASE; - ROM_WRITE_MODE = DFF((ROM_RG[4] & !(A14 or A14)),CLK42,,); - - ROM_RG[].clk = /IOWR; - ROM_RG[].d = D[]; - ROM_RG[].ena = DFF((DCPP[] == H"8F"),CLK42,,); - ROM_RG[].clrn = /RESET; - -END GENERATE; - - --- ===================================================== --- ===================================================== - - RD_KMPS = DECODE./IOM or /RD or !(DECODE.TYPE[] == 7); - --- WR_PORT = !(/IO or DFF(!DECODE.MC_END,CLK42,,) or /WR) or !(DECODE.WR_DWG or /IO or /WR); - - WR_PORT = (!(/IO or /WR) & LCELL(DFF(DECODE.MC_TYPE,CLK42,,))); - --- WR_PORT = DFF((!(/IO or /WR) & DECODE.MC_TYPE),CLK42,,); - - WR_DWG = DECODE.WR_DWG; - --- (NMI_X,KBD_CX) = GND; - (KBD_CX) = GND; - - IF (NMI_ON == "ON") GENERATE - NMI_X = (!KEYS.kb_f12 & KEYS.kb_alt); - ELSE GENERATE - NMI_X = GND; - END GENERATE; - --- TFF(KEYS.kb_ctrl,KEYS.kb_f12,,); - --- INT_X = !DFF(GND,CTV8,,((/IO or /M1) & DFF(!INT_X,CTH3,,))); - --- INT_X = !DFF(GND,SVIDEO.INTT,,((/IO or /M1) & DFF(!INT_X,CTH3,,))); - --- INT_X = !DFF(GND,(SVIDEO.INTT & KEYS.int),,((/IO or /M1) & DFF(!INT_X,CTH3,,))); - INT_X = !DFF(GND,(SVIDEO.INTT & KEYS.int),,((/IO or /M1) & DFF(DFF(!INT_X,CTH2,,),CTH2,,))) - or !CBL_INT; - - TAPE_OUT = LCELL(BORDER3); - --- *************************************** - --- RDXA = LCELL(DECODE.RD_KP11); --- T_RDXA = DFF(GND,DECODE.RD_KP11,,DFF((T_RDXA),CLK42,,)); - --- WR_TM9 = !DFF(VCC,!CLK42,DECODE.WR_TM9,); --- WR_TM9 = LCELL(DFF(DECODE.RD_KP11,CLK42,,)); - --- RDXA = LCELL(CT2 or DFFE(!CT2,!CLK42,,,CT1)); - - RDXA = DFF(!((CT[2..0] == B"11X") or (CT[2..0] == 0)),CLK42,,); - --- T_RDXA = CT2; - T_RDXA = LCELL(RDXA); - --- WR_TM9 = DFF(CT2,!CLK42,,); - WR_TM9 = LCELL(CT2); - - --- SXA = TFF(VCC,T_RDXA,,); --- SXA = DFF((CT3 xor (CT2 & CT1)),CLK42,,); - SXA = DFF((CT3 xor CT2),CLK42,,); - --- WR_AWG = LCELL(LCELL(DECODE.WR_AWG)); --- WR_AWG = LCELL(DECODE.WR_AWG); - WR_AWG = DECODE.WR_AWG; - --- WR_AWG = DFF(DECODE.WR_AWG,CLK42,,); - --- SXA = DFF(DECODE.KP11_MIX,CLK42,,); - - XA0 = TRI(KBD_CX,WR_TM9); - XA1 = TRI(KBD_DX,WR_TM9); - XA2 = TRI(TAPE_OUT,WR_TM9); - XA3 = TRI(GND,GND); - - KBD_DD = DFFE(XA1,T_RDXA,,,!SXA); - KBD_CC = DFFE(XA0,T_RDXA,,,!SXA); - TAPE_IN = DFFE(XA2,T_RDXA,,,!SXA); - MOUSE_D = DFFE(XA3,T_RDXA,,,!SXA); - - FDD_CH = DFFE(XA1,T_RDXA,,,SXA); - FDD_W = DFFE(XA0,T_RDXA,,,SXA); - SINC_1 = DFFE(XA2,T_RDXA,DECODE./RES,,SXA); - SINC_2 = DFFE(XA3,T_RDXA,DECODE./RES,,SXA); - - SINC_HOLD[3..0].clk = CT4; - SINC_HOLD[8..4].clk = CTH5; - - SINC_1M = DFF(!(SINC_HOLD[3..0] == 15),CLK42,,); - - CASE !SINC_1 IS - WHEN 0 => SINC_HOLD[3..0] = HOLD[3..0]; - WHEN 1 => SINC_HOLD[3..0] = (SINC_HOLD[3..0] + 1) or !SINC_1M; - END CASE; - - SINC_2M = DFF(!(SINC_HOLD[8..4] == B"1111X"),CLK42,,); - --- CASE DFF((SINC_2 & DFF(SINC_2,CTV0,,)),CLK42,,) IS - - CASE SINC_2 IS - WHEN 1 => SINC_HOLD[8..4] = (HOLD[7..4],GND); - WHEN 0 => SINC_HOLD[8..4] = (SINC_HOLD[8..4] + 1) or !SINC_2M; - END CASE; - - COPY_SINC_H = DFF((!SINC_1M & DFF(SINC_1M,CLK42,,)),CLK42,,); - COPY_SINC_V = DFF((!SINC_2M & DFF(SINC_2M,CLK42,,)),CLK42,,); - --- COPY_SINC_H = DFF(DFF(!SINC_1 & DFF(SINC_1,!CLK42,,),!CLK42,,),CLK42,,); --- COPY_SINC_V = DFF(DFF(!SINC_2 & DFF(SINC_2,!CLK42,,),!CLK42,,),CLK42,,); - --- START_UP = DFFE(DFFE(DFFE(VCC,CLK42,,,COPY_SINC_H),CLK42,,,COPY_SINC_V),CLK42,,,COPY_SINC_V); - START_UP = DFFE(DFFE(DFFE(VCC,CLK42,,,COPY_SINC_H),CLK42,,,COPY_SINC_H),CLK42,,,COPY_SINC_H); - - HOLD[].clk = /IOWR; - HOLD[].ena = DFF((DCPP[] == B"11001011"),CLK42,,); -- CB - HOLD[].d = D[]; - - HOLD[2..0].prn = DECODE./RES; - HOLD[3].clrn = DECODE./RES; - HOLD[6..4].prn = DECODE./RES; - HOLD[7].clrn = DECODE./RES; - --- ===================================================== --- ===== DCP =========================================== --- ===================================================== - - DOS_ = (!((DECODE.PN4Q & A13 & A12) & (A[11..8] == B"1101")) & DOS) or (A14 or A15); - DOS = DFF(DOS_,!(/M1 or /MR),,/RESET); - DECODE.DOS = DOS; - - DECODE.REFRESH = CT4; - - DCPP[] = DECODE.DCPP[]; - - DECODE.CLK42 = CLK42; - DECODE./RESET = /RESET; - - DECODE.ACC_ON = ACC.ACC_ON; - - DECODE.CT[2..0] = CT[2..0]; - - RASX_[1..0] = (LCELL(DECODE.RAS),LCELL(DECODE.RAS)); - - RAS_[] = RASX_[]; - - MCA[] = DECODE.MCA[1..0]; - - DOUBLE_CAS = ACC.DOUBLE_CAS; - - CAS_A = LCELL(DECODE.CAS); --- CAS_A = (DECODE.CAS); - - CASXE0 = LCELL((MCA0 == 0) or ((MCA0 == 1) & DOUBLE_CAS)); - CASXE1 = LCELL((MCA0 == 1) or ((MCA0 == 0) & DOUBLE_CAS)); - - CASX_0 = LCELL(CAS_A or !((!MCA1 & CASXE0) or DECODE.MC_TYPE)); - CASX_1 = LCELL(CAS_A or !((!MCA1 & CASXE1) or DECODE.MC_TYPE)); - CASX_2 = LCELL(CAS_A or !(( MCA1 & CASXE0) or DECODE.MC_TYPE)); - CASX_3 = LCELL(CAS_A or !(( MCA1 & CASXE1) or DECODE.MC_TYPE)); - - CAS_[] = CASX_[]; - --- /WE = DFFE((/WE_OUT or DECODE.RAS),CLK42,,/RESET,); - /WE = DFFE((/WE_OUT or DECODE.RAS),CLK42,,/RESET,); - --- /WE = LCELL(DFFE((/WE_OUT or DECODE.RAS),CLK42,,/RESET,)); --- /WE = LCELL(/WE_OUT or CAS_A); - - /WE_OUT = LCELL(DECODE.MC_WRITE or BLK_MR or BLK_MWR2); - - DECODE.DOUBLE_CAS = DOUBLE_CAS; --- DECODE.A[15..0] = A[]; - DECODE.A[15..0] = ACC.AO[]; - DECODE.DI[7..0] = D[]; - - MA[11..0] = DECODE.MA[11..0]; - MA[14..12] = (!TURBO,INT_X,NMI_X); - - CLKZ1 = DECODE.CLK_Z80; - - TURBO = DECODE.TURBO; - - DECODE./IO = /IO; - DECODE./RD = /RD; - DECODE./WR = /WR; - DECODE./MR = /MR; - DECODE./RF = /RF; - DECODE./M1 = /M1; - - /WAIT_ALL = (DECODE./WAIT & WAIT_ROM & WAIT_ORIG); - --- /WAIT = TRI(DECODE./WAIT,LCELL(!(DECODE./WAIT & DFF(DECODE./WAIT,CLK42,,)))); - - /WAIT = TRI(/WAIT_ALL,LCELL(!/WAIT_ALL)); - - DECODE.TEST_R = TFF(KEYS.kb_ctrl,KEYS.kb_f12,,); - --- DECODE.MD[7..0] = ACC.MD[]; - DECODE.MD[7..0] = ACC.DO[]; - --- ===================================================== --- == Accelerator ====================================== --- ===================================================== - - ACC.ACC_ENA = ALL_MODE0; - - ACC.CLK42 = CLK42; - ACC./RESET = /RESET; - ACC.CT[2..0]= CT[2..0]; - ACC.CLK_Z80 = DECODE.CLK_Z80; - - ACC.RAS = DECODE.RAS; - ACC.CAS = DECODE.CAS; - - DECODE.CONTINUE = ACC.CONTINUE; --- DECODE.CONTINUE = VCC; - - ACC.MC_END = DECODE.MC_END; - ACC.MC_BEGIN= DECODE.MC_BEGIN; - ACC.MC_TYPE = DECODE.MC_TYPE; - ACC.MC_WRITE= DECODE.MC_WRITE; --- ACC.MCA[] = DECODE.MCA[]; - - ACC.AI[15..0] = A[]; - ACC.DI[7..0] = D[]; - - ACC./IO = /IO; - ACC./RD = /RD; - ACC./WR = /WR; - ACC./MR = /MR; - ACC./RF = /RF; - ACC./M1 = /M1; - ACC./IOM = DECODE./IOM; - - ACC.DCP[7..0] = DCPP[]; - - ACC.MDI[15..0] = MD[]; - --- ACC.MDO[15..0]; - --- ===================================================== --- ===== Graf-Mode ===================================== --- ===================================================== - - RGMOD[].clk = /IOWR; - RGMOD[].ena = DFF((DCPP[] == B"1100X101"),CLK42,,); --- (DCPP[] == B"1100X101"); - RGMOD[].d = D[]; - RGMOD[].clrn= /RESET; - - DECODE.G_LINE[] = (GND,GND,ACC.G_LINE[7..0]); - --- ===================================================== --- ===== VIDEO ========================================= --- ===================================================== - - VIDEO_PG = LCELL(DECODE.PAGE[7..4] == B"0101"); - BLK_MR = LCELL((VIDEO_PG & - (DECODE.PAGE2 or (DECODE.PAGE3 & ACC.GLISSER)))); - - GLISSER = LCELL(ACC.GLISSER & DECODE.PAGE[3] & VIDEO_PG); - - SVIDEO.clk42 = CLK42; - - CT[5..0] = SVIDEO.ct[5..0]; - CTH[5..0] = SVIDEO.cth[5..0]; - CTV[8..0] = SVIDEO.ctv[8..0]; - CTF[6..0] = SVIDEO.ctf[6..0]; - - BLANK = SVIDEO.blank; - - SVIDEO.start_up = VCC; - SVIDEO.copy_sinc_h = COPY_SINC_H; - SVIDEO.copy_sinc_v = COPY_SINC_V; - --- SVIDEO.wr = (DECODE.MC_WRITE or DECODE.CAS or GLISSER); --- SVIDEO.wr = DFF((DECODE.MC_WRITE or GLISSER or DECODE.RAS),CLK42,,/RESET); - SVIDEO.wr = DFF((DECODE.MC_WRITE or GLISSER or DECODE.CAS),!CLK42,,/RESET); - --- SVIDEO.vai[] = (DECODE.GA[],A[9..0]); - SVIDEO.vai[] = (DECODE.GA[],ACC.AO[9..0]); - - VA[] = SVIDEO.vao[]; - - SVIDEO.D[] = D[]; - SVIDEO.MDI[] = ACC.MDO[]; - SVIDEO.DOUBLE_CAS = DOUBLE_CAS; - - SVIDEO.VDM0[7..0] = VD0[]; - SVIDEO.VDM1[7..0] = VD1[]; - SVIDEO.VDM2[7..0] = VD2[]; - SVIDEO.VDM3[7..0] = VD3[]; - - V_CS[1..0] = SVIDEO.v_cs[]; - WR_COL = SVIDEO.WR_PIX; - --- ZX_COLOR[3..0] - - SVIDEO.ZX_PORT[5..0] = (ACC.G_LINE[5..0]); --- SVIDEO.ZX_PORT[7..6] = (DECODE.SP_SA,LCELL(DECODE.SP_SCR & !(A13 & !ACC.G_LINE7) & !ACC.G_LINE6)); - --- NEW 25.08.2022 --- disable zx adressing due accelerator is on - SVIDEO.ZX_PORT[7..6] = (DECODE.SP_SA,LCELL(DECODE.SP_SCR & !(A13 & !ACC.G_LINE7) & !ACC.G_LINE6 & !ALL_MODE0)); - - SVIDEO.DIR_PORT[0] = DECODE.SCR128; - - SVIDEO.DIR_PORT[3] = RGMOD0; - - IF (SCREEN_OFF == "USE") GENERATE - SVIDEO.DIR_PORT[4] = RGMOD1; -- 1 screen off, 0 - screen on - ELSE GENERATE - SVIDEO.DIR_PORT[4] = GND; -- 1 screen off, 0 - screen on - END GENERATE; - - SVIDEO.DIR_PORT[2..1] = GND; - SVIDEO.DIR_PORT[7..5] = BORDER[2..0]; --- SVIDEO.DIR_PORT[7..5] = MS.OUT_X[7..5]; - - SVIDEO.MOUSE_X[] = MS.OUT_X[]; - SVIDEO.MOUSE_Y[] = MS.OUT_Y[]; - -% - bit0 - Spectrum SCREEN Switch - bit1 - Spectrum Adress MODE - bit2 - Write to Spectrum Screen OFF - - bit7..5 - Border -% - --- ===================================================== - - ALL_MODE[7..0].clk = /IOWR; - ALL_MODE[7..0].ena = DFF((DCPP[] == B"11000011"),CLK42,,); -- C3 - ALL_MODE[].d = D[]; - ALL_MODE[].prn = /RESET; - --- ===================================================== --- === AUDIO OUT ======================================= --- ===================================================== - - DAC_DATA = DFFE(DFF(AUDIO_R15,CT2,,),!CT2,,,); - --- DAC_DATA = DFF(AUDIO_R15,CLK42,,); --- DAC_DATA = AUDIO_R15; - - DAC_WS = DFF(CTH1,CLK42,,); - DAC_BCK = DFF(CT2,CLK42,,); - - AUDIO_R[15..0].clk = CLK42; - AUDIO_R[15..0].ena = !CT2 & DFF(CT2,CLK42,,); - - AUDIO_CH = DFF(((CTH0,CT[5..3]) == 15),CT2,,); - - IF AUDIO_CH THEN - AUDIO_R[15..0].d = AY_CHS[15..0]; - ELSE - AUDIO_R[15..0].d = (AUDIO_R[14..0],GND); - END IF; - --- ====== COVOX ========== - - CBL_MODE = CBL_XX7; - CBL_STEREO = CBL_XX6; - CBL_MODE16 = CBL_XX5; - CBL_INT_ENA = CBL_XX4; - - CBL_INT = DFF(GND,!CBL_CNT6,,(CBL_INT_ENA & (/IO or /M1))); - - CBL_XX[].clk = /IOWR; - CBL_XX[].ena = DFF((DCPP[] == B"10001001"),CLK42,,); -- 89 - CBL_XX[] = D[]; - - CBL_CTX[].clk = !CTH1; - CBL_CNT[].clk = !CTH1; - - CASE CBL_XX[3..0] IS - WHEN 0 => CBL_TAB[] = 13; -- 16khz -- mono/stereo - WHEN 1 => CBL_TAB[] = 9; -- 22khz -- mono/stereo - WHEN 2 => CBL_TAB[] = 0; -- reserved - WHEN 3 => CBL_TAB[] = 0; -- reserved - WHEN 4 => CBL_TAB[] = 0; -- reserved - WHEN 5 => CBL_TAB[] = 0; -- reserved - WHEN 6 => CBL_TAB[] = 0; -- reserved - WHEN 7 => CBL_TAB[] = 0; -- reserved - - WHEN 8 => CBL_TAB[] = 27; -- 7.8125 KHz -- mono/stereo 8/16 bit - WHEN 9 => CBL_TAB[] = 19; -- 10.9375 KHz -- mono/stereo 8/16 bit - WHEN 10=> CBL_TAB[] = 13; -- 15.625 KHz -- mono/stereo 8/16 bit - WHEN 11=> CBL_TAB[] = 9; -- 21.875 KHz -- mono/stereo 8/16 bit - WHEN 12=> CBL_TAB[] = 6; -- 31.25 KHz -- mono/stereo 8/16 bit - WHEN 13=> CBL_TAB[] = 4; -- 43.75 KHz -- mono/stereo 8/16 bit - WHEN 14=> CBL_TAB[] = 3; -- 54.6875 KHz -- mono/stereo 8/16 bit - WHEN 15=> CBL_TAB[] = 1; -- 109.375 KHz -- mono/stereo 8/16 bit --- WHEN 15=> CBL_TAB[] = 0; -- (218.75)KHz -- stereo 110 only - END CASE; - - IF (CBL_CTX[] == 0) THEN - CBL_CTX[].d = CBL_TAB[]; - ELSE - CBL_CTX[].d = CBL_CTX[] - 1; - END IF; - - CASE (CBL_STEREO,LCELL(CBL_CTX[] == 0)) IS - WHEN 0,2 => CBL_CNT[].d = CBL_CNT[]; - WHEN 1 => CBL_CNT[].d = CBL_CNT[]+1; - WHEN 3 => CBL_CNT[].d = CBL_CNT[]+2; - END CASE; - - CBL_CNT[].clrn = CBL_MODE; - - CBL_IND = CBL_CNT7 xor CBL_WA7; - --- CBL_WR = DFF((DCPP[] == B"10001000"),CLK42,,) & !/IOWR; -- 88 - - CBL_WR = (DFF((DCPP[] == B"10001000"),CLK42,,) & !/IOWR) or - (DFF((DECODE.PAGE[7..0] == B"11111101"),CLK42,(CBL_INT_ENA & ACC.ACC_DIR1),) & - !DFF((DECODE.MC_WRITE or DECODE.CAS),CLK42,,/RESET)); - - - CBL_WAE = CBL_MODE16 & DFF(!CBL_WAE,!CBL_WR,,CBL_INT); - - CBL_WA[].clk = !CBL_WR; - CBL_WA[].ena = !CBL_WAE; - - CBL_WA[7].clrn = CBL_MODE & CBL_INT_ENA & (CBL_INT or !CBL_CNT7); - CBL_WA[7].prn = (CBL_INT or CBL_CNT7); - - CBL_WA[6..0].clrn = CBL_MODE & CBL_INT_ENA & CBL_INT; - - CBL_WA[].d = CBL_WA[] + 1; - - CBD[].clk = !CBL_WR; - CBD[].ena = CBL_WAE; --- CBD[].d = D[]; - CBD[].d = ACC.MDO[7..0]; - CBD[].clrn = CBL_MODE16; - - CBL.wren = (CBL_WR & !CBL_WAE); - --- CBL.data[] = ((D7 xor CBL_MODE16),D[6..0],CBD[]); - CBL.data[] = ((ACC.MDO15 xor CBL_MODE16),ACC.MDO[14..8],CBD[]); - - CBL.wraddress[] = ((!A[15..8]) & !CBL_INT_ENA) xor CBL_WA[]; - - CBL.wrclock = CLK42; - CBL.wrclken = VCC; - CBL.rden = VCC; - CBL.rdaddress[] = (CBL_CNT[7..1],LCELL((CBL_CNT0 & !CBL_STEREO) or (AUDIO_CH & CBL_STEREO))); - CBL.rdclock = CLK42; - CBL.rdclken = VCC; - - CBL_R[].ena = DFF((CBL_MODE or (CBL_WR)),CLK42,,); - - CBL_R[].CLK = CLK42; - CBL_R[15].prn = /RESET; - CBL_R[14..0].clrn = /RESET; - CASE CBL_MODE IS - WHEN 0 => CBL_R[] = (D[7..0],B"00000000"); - WHEN 1 => CBL_R[] = CBL.q[]; - END CASE; - --- ====== AY-3-8910 ======== - - AY3.CLK42 = CLK42; - - AY3./RESET = /RESET; - AY3.AY_T[8..0] = (CTH[2..0],CT[5..0]); - - AY3.AY_D_WR = DFF((DECODE./IOM or /WR) or !DFF((DCPP[] == H"91"),CLK42,,),CLK42,,); - AY3.AY_A_WR = DFF((DECODE./IOM or /WR) or !DFF((DCPP[] == H"90"),CLK42,,),CLK42,,); - - AY3.D[7..0] = D[]; - AY3.BEEPER = BORDER4; - --- AY3.DO[7..0] : OUTPUT; - --- AY3.AY_CH_A[3..0] : OUTPUT; --- AY3.AY_CH_B[3..0] : OUTPUT; --- AY3.AY_CH_C[3..0] : OUTPUT; - - AY_FULL[].clk = CLK42; - --- AY_CHS[].clk = !CTH0; - AY_CHS[].clk = !DFF((CTH1 & (CTH0 or !CT5)),CLK42,,); - AY_CHS[].ena = VCC; - --- AY_FULL[] = (GND,AY_CH_L[]) + (GND,AY_CH_R[]); - - CASE DFF(CTH0,CLK42,,) IS - WHEN 0 => AY_FULL[] = (AY3.AY_CH_L[],GND); - WHEN 1 => AY_FULL[] = (AY3.AY_CH_R[],GND); - END CASE; - --- AY_CHS[].d = (((GND,AY_FULL[]) + (VCC,CBL.q[15..5])),B"0000"); - --- AY_CHS[].d = (((GND,AY_FULL[]) + (VCC,CBL.q[15..8],B"000")),B"0000"); - AY_CHS[].d = (((GND,AY_FULL[]) + (VCC,CBL_R[15..5])),CBL_R[4..1]); - --- ===== MOUSE ========================= - - MS.clk = DFF(CTH5,CLK42,,); - MS.mouse_d = MOUSE_D; - - CASE (A10,A8) IS - WHEN 0,2 => KEMPS[] = (B"111111",!MS.OUT_K0,!MS.OUT_K1); - WHEN 1 => KEMPS[] = (MS.OUT_X[7..0]); - WHEN 3 => KEMPS[] = !(MS.OUT_Y[7..0]); - END CASE; - -END; - diff --git a/src/altera/acex/k30/VIDEO2.ACF b/src/altera/acex/k30/VIDEO2.ACF deleted file mode 100644 index 57d4f1c..0000000 --- a/src/altera/acex/k30/VIDEO2.ACF +++ /dev/null @@ -1,588 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP video2 -BEGIN - DEVICE = AUTO; -END; - -DEFAULT_DEVICES -BEGIN - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; - AUTO_DEVICE = EP1K30TC144-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100FC484-1; -END; - -TIMING_POINT -BEGIN - MAINTAIN_STABLE_SYNTHESIS = ON; - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30FC256-3; - CUT_ALL_BIDIR = ON; - CUT_ALL_CLEAR_PRESET = ON; - FREQUENCY = 200MHz; -END; - -IGNORED_ASSIGNMENTS -BEGIN - IGNORE_CLIQUE_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - FIT_IGNORE_TIMING = OFF; -END; - -LOGIC_OPTIONS -BEGIN - |VAO15 : FAST_IO = ON; - |VAO14 : FAST_IO = ON; - |VAO13 : FAST_IO = ON; - |VAO12 : FAST_IO = ON; - |VAO11 : FAST_IO = ON; - |VAO10 : FAST_IO = ON; - |VAO9 : FAST_IO = ON; - |VAO8 : FAST_IO = ON; - |VAO7 : FAST_IO = ON; - |VAO6 : FAST_IO = ON; - |VAO5 : FAST_IO = ON; - |VAO4 : FAST_IO = ON; - |VAO3 : FAST_IO = ON; - |VAO2 : FAST_IO = ON; - |VAO1 : FAST_IO = ON; - |VAO0 : FAST_IO = ON; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - RESERVED_LCELLS_PERCENT = 0; - RESERVED_PINS_PERCENT = 0; - SECURITY_BIT = OFF; - USER_CLOCK = OFF; - AUTO_RESTART = OFF; - RELEASE_CLEARS = OFF; - ENABLE_DCLK_OUTPUT = OFF; - DISABLE_TIME_OUT = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - FLEX8000_ENABLE_JTAG = OFF; - DATA0 = RESERVED_TRI_STATED; - DATA1_TO_DATA7 = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - RDYnBUSY = UNRESERVED; - RDCLK = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - ADD0_TO_ADD12 = UNRESERVED; - ADD13 = UNRESERVED; - ADD14 = UNRESERVED; - ADD15 = UNRESERVED; - ADD16 = UNRESERVED; - ADD17 = UNRESERVED; - CLKUSR = UNRESERVED; - nCEO = UNRESERVED; - ENABLE_CHIP_WIDE_RESET = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_INIT_DONE_OUTPUT = OFF; - FLEX10K_JTAG_USER_CODE = 7F; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - MAX7000S_USER_CODE = FFFF; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_ENABLE_JTAG = ON; - MULTIVOLT_IO = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - FLEX6000_ENABLE_JTAG = OFF; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - MAX7000AE_USER_CODE = FFFFFFFF; - MAX7000AE_ENABLE_JTAG = ON; - FLEX_CONFIGURATION_EPROM = AUTO; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_ENABLE_VREFB = OFF; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - OPTIMIZE_FOR_SPEED = 5; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - AUTO_GLOBAL_CLOCK = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_OE = ON; - AUTO_FAST_IO = OFF; - DEVICE_FAMILY = ACEX1K; - AUTO_REGISTER_PACKING = OFF; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - STYLE = FAST; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - DESIGN_DOCTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - TIMING_SNF_EXTRACTOR = ON; - OPTIMIZE_TIMING_SNF = OFF; - LINKED_SNF_EXTRACTOR = OFF; - RPT_FILE_EQUATIONS = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_USER_ASSIGNMENTS = ON; - GENERATE_AHDL_TDO_FILE = OFF; - SMART_RECOMPILE = OFF; - FITTER_SETTINGS = NORMAL; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - EDIF_NETLIST_WRITER = OFF; - EDIF_OUTPUT_VERSION = 200; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_GENERATE_AHDL_TDX_FILE = ON; - VERILOG_NETLIST_WRITER = OFF; - VHDL_NETLIST_WRITER = OFF; - USE_SYNOPSYS_SYNTHESIS = OFF; - SYNOPSYS_COMPILER = DESIGN; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - VHDL_READER_VERSION = VHDL87; - VHDL_WRITER_VERSION = VHDL87; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_FLATTEN_BUS = OFF; - VHDL_FLATTEN_BUS = OFF; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - EDIF_INPUT_LMF1 = *.lmf; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_OUTPUT_GND = GND; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_FLATTEN_BUS = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - RIPPLE_CLOCKS = ON; - GATED_CLOCKS = ON; - MULTI_LEVEL_CLOCKS = ON; - MULTI_CLOCK_NETWORKS = ON; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - PRESET_CLEAR_NETWORKS = ON; - ASYNCHRONOUS_INPUTS = ON; - DELAY_CHAINS = ON; - RACE_CONDITIONS = ON; - EXPANDER_NETWORKS = ON; - MASTER_RESET = OFF; -END; - -SIMULATOR_CONFIGURATION -BEGIN - CHECK_OUTPUTS = OFF; - USE_DEVICE = OFF; - SETUP_HOLD = OFF; - OSCILLATION = OFF; - OSCILLATION_TIME = 0.0ns; - GLITCH = OFF; - GLITCH_TIME = 0.0ns; - START_TIME = 0.0ns; - BIDIR_PIN = STRONG; - END_TIME = 10.0us; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - AUTO_RECALCULATE = OFF; - CUT_OFF_IO_PIN_FEEDBACK = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - LIST_ONLY_LONGEST_PATH = ON; - CELL_WIDTH = 18; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - INCLUDE_PATHS_GREATER_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - LIST_PATH_COUNT = 10; - LIST_PATH_FREQUENCY = 10MHz; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - EXPLICIT_FAMILY = 1; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - ROW_PINS_PERCENT = 50; - EXP_PER_LCELL_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - FLEX_10K_52_COLUMNS = 40; - NORMAL_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - ROW_PINS_LCELL_INSERT = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = FULL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = ON; - SUBFACTOR_EXTRACTION = ON; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = FULL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = ON; - SUBFACTOR_EXTRACTION = ON; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = FULL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = 32; - MINIMIZATION = FULL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = ON; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = ON; - SUBFACTOR_EXTRACTION = ON; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - MINIMIZATION = FULL; - CASCADE_CHAIN = IGNORE; - CARRY_CHAIN = IGNORE; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - MINIMIZATION = FULL; - CASCADE_CHAIN = IGNORE; - CARRY_CHAIN = IGNORE; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - MINIMIZATION = FULL; - CASCADE_CHAIN = IGNORE; - CARRY_CHAIN = IGNORE; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = ON; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - IGNORE_SOFT_BUFFERS = ON; - MINIMIZATION = FULL; - CASCADE_CHAIN = AUTO; - CARRY_CHAIN = AUTO; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = ON; - SUBFACTOR_EXTRACTION = ON; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - REGISTER_OPTIMIZATION = ON; - CASCADE_CHAIN_LENGTH = 2; - CARRY_CHAIN_LENGTH = 32; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = PARTIAL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = OFF; - DECOMPOSE_GATES = OFF; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = PARTIAL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = OFF; - DECOMPOSE_GATES = OFF; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = PARTIAL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = OFF; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - CASCADE_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CARRY_CHAIN = MANUAL; - CARRY_CHAIN_LENGTH = 32; - MINIMIZATION = PARTIAL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = ON; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = OFF; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - diff --git a/src/altera/acex/k30/VIDEO2.INC b/src/altera/acex/k30/VIDEO2.INC deleted file mode 100644 index 1c5f796..0000000 --- a/src/altera/acex/k30/VIDEO2.INC +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Mon Nov 19 00:36:42 2001 - -FUNCTION video2 (clk42, start_up, copy_sinc_h, copy_sinc_v, wr, vai[19..0], d[7..0], mdi[15..0], vdm0[7..0], vdm1[7..0], vdm2[7..0], vdm3[7..0], zx_port[7..0], dir_port[7..0], double_cas, mouse_x[9..0], mouse_y[9..0]) - WITH (MODE, MOUSE) - RETURNS (ct[5..0], cth[5..0], ctv[8..0], ctf[6..0], blank, vao[15..0], vdo0[7..0], vdo1[7..0], vdo2[7..0], vdo3[7..0], v_wr[3..0], v_wen[3..0], v_cs[1..0], wr_pix, intt); diff --git a/src/altera/acex/k30/VIDEO2.TDF b/src/altera/acex/k30/VIDEO2.TDF deleted file mode 100644 index ea1e862..0000000 --- a/src/altera/acex/k30/VIDEO2.TDF +++ /dev/null @@ -1,783 +0,0 @@ - - TITLE "Video-controller"; - -INCLUDE "lpm_ram_dp"; - -PARAMETERS - ( - MODE = "SPRINTER", - MOUSE = "NO", - HOR_PLACE = H"50", - VER_PLACE = H"91" -- 122h/2 - ); - -SUBDESIGN video2 - ( - CLK42 : INPUT; - - CT[5..0] : OUTPUT; - CTH[5..0] : OUTPUT; - CTV[8..0] : OUTPUT; - CTF[6..0] : OUTPUT; - - BLANK : OUTPUT; - - START_UP : INPUT; - COPY_SINC_H : INPUT; - COPY_SINC_V : INPUT; - - WR : INPUT; - - VAI[19..0] : INPUT; -- input screen adress - - VAO[15..0] : OUTPUT; - - D[7..0] : INPUT; - MDI[15..0] : INPUT; - - VDO0[7..0] : OUTPUT; - VDO1[7..0] : OUTPUT; - VDO2[7..0] : OUTPUT; - VDO3[7..0] : OUTPUT; - - VDM0[7..0] : INPUT; - VDM1[7..0] : INPUT; - VDM2[7..0] : INPUT; - VDM3[7..0] : INPUT; - - V_WR[3..0] : OUTPUT; - V_WEN[3..0] : OUTPUT; - - V_CS[1..0] : OUTPUT; - WR_PIX : OUTPUT; - --- ZX_COLOR[3..0] : OUTPUT; - - ZX_PORT[7..0] : INPUT; - DIR_PORT[7..0] : INPUT; - -% - bit0 - Spectrum SCREEN Switch - bit1 - Spectrum Adress MODE - bit2 - Write to Spectrum Screen OFF - bit3 - MODE page 0/1 - bit4 - MODE on/off screen - - bit7..5 - Border -% - - INTT : OUTPUT; - - DOUBLE_CAS : INPUT; - - MOUSE_X[9..0] : INPUT; - MOUSE_Y[9..0] : INPUT; - - - ) -VARIABLE - --- CLK84 : NODE; --- CLK84_X : NODE; --- CLK84_Y : NODE; - - ZX_COLOR[3..0] : NODE; - - CT[5..0] : DFFE; - CTH[5..0] : DFFE; - CTV[8..0] : DFFE; - CTF[6..0] : DFF; - - VXA[19..0] : DFFE; - - VXD0[7..0] : DFFE; - VXD1[7..0] : DFFE; - VXD2[7..0] : DFFE; - VXD3[7..0] : DFFE; - - E_WR : NODE; - E_WRD : NODE; - - BLANK : NODE; - BORD : NODE; --- INTT_T : NODE; - INTTX : NODE; - - VLA[17..0] : DFF; --- SVA[17..0] : NODE; - SVA[17..0] : DFF; --- RSVA[8..0] : LCELL; - RSVA[8..0] : NODE; --- RSVA[8..0] : DFF; - - V_CST[1..0] : DFF; - VCM[2..0] : DFF; - TSN_W3 : DFF; - V_WE : DFF; - V_WEX : DFF; - - V_WEM : NODE; - V_WEM2 : NODE; - V_WRM : NODE; - V_WRM2 : NODE; -% - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; -% - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; - V_WEMMP : NODE; - V_WEMMQ : NODE; - V_WEMMR : NODE; - V_WEMMS : NODE; - V_WEMMT : NODE; - V_WEMMU : NODE; - V_WEMMV : NODE; - V_WEMMW : NODE; - V_WEMMX : NODE; - V_WEMMY : NODE; - V_WEMMZ : NODE; - - - - V_WET[3..0] : DFF; - - D_PIC0[7..0] : DFFE; --- D_PIC0_[7..0] : LCELL; - - D_PIC0_[7..0] : DFFE; - D_PIC1_[7..0] : DFFE; - D_PIC2_[7..0] : DFFE; - D_PIC3_[7..0] : DFFE; - - D_PICX_[7..0] : NODE; - - LWR_PIC : NODE; - LWR_COL : NODE; - - WR_PIC : DFF; - WR_COL : DFF; - LD_PIC : NODE; -MXL: NODE; -MXR: NODE; - - RBRVA[10..8]: DFF; - BRVA[7..0] : DFF; - DCOL[7..0] : DFFE; - - MXWE : NODE; --- MXCE : NODE; - - AX128 : NODE; - - BRD[2..0] : NODE; - - ZX_COL[3..0] : LCELL; - - ZXA15 : NODE; - ZXS[5..0] : NODE; - ZX_SCREEN : NODE; - SCR128 : NODE; - - MODE0[7..0] : DFFE; - MODE1[7..0] : DFFE; - MODE2[7..0] : DFFE; --- MODE3[7..0] : DFF; - - WR_MODE : DFF; - LWR_MODE : NODE; - X_MODE[7..4]: NODE; - X_MODE_BOND : NODE; - --- M_CTV[2..0] : DFF; --- M_CT[5..3] : DFF; - M_CTV[2..0] : LCELL; - M_CT[5..3] : LCELL; - - DOUBLE : DFFE; - - PIC_CLK : NODE; - - MS_X[9..0] : DFF; - MS_Y[9..0] : DFF; - - MS_POINT : NODE; - MS_POINT2 : NODE; - MS_PNT : NODE; - - MS_DAT : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8,LPM_FILE="MOUSE.MIF"); - - SCR_ENA : DFFE; - V_WR_[3..0] : LCELL; - V_WEY[3..0] : LCELL; - - V_WE_R : NODE; - - V_CSX[3..0] : NODE; - - V_EN[3..0] : NODE; - - F_WR : NODE; - -BEGIN - - DEFAULTS - WR_MODE.d = VCC; -- WR_MODE2.d = VCC; -- WR_MODE2X.d = VCC; - V_CST[].d = VCC; V_WR[] = VCC; TSN_W3.d = VCC; - V_WE.d = VCC; WR_COL.d = VCC; WR_PIC.d = VCC; - V_WET[].d = VCC; - END DEFAULTS; - - ZX_COLOR[] = ZX_COL[]; - --- === MOUSE counters ======== - - MS_X[].clk = !CT1; - CASE LCELL(CTH[5..2] == 12) IS - WHEN 0 => MS_X[] = MS_X[] + 1; - WHEN 1 => MS_X[] = (!MOUSE_X[9..0]); - END CASE; - - MS_Y[].clk = !CTH5; - CASE LCELL(CTV8 & !CTV5 & CTV4) IS - WHEN 0 => MS_Y[] = MS_Y[] + 1; - WHEN 1 => MS_Y[] = (GND,!MOUSE_Y[8..0]); - END CASE; - - MS_PNT = DFF(((MS_X[] == B"100000XXXX") & (MS_Y[] == B"100000XXXX")),CLK42,,); - - MS_DAT.wren = GND; - MS_DAT.data[] = GND; - MS_DAT.wraddress[] = GND; - MS_DAT.wrclock = CLK42; - MS_DAT.wrclken = GND; - MS_DAT.rden = VCC; - MS_DAT.rdaddress[] = (MS_Y[3..0],MS_X[3..0]); - MS_DAT.rdclock = CLK42; - MS_DAT.rdclken = VCC; - - IF MOUSE == "NO" GENERATE - MS_POINT = GND; - MS_POINT2 = GND; - ELSE GENERATE - MS_POINT = DFF((MS_PNT & MS_DAT.q0),CLK42,,); - MS_POINT2 = DFF((MS_PNT & MS_DAT.q1),CLK42,,); - END GENERATE; - --- === Sinc-counts GENERATOR ============================================ - --- CT[].clrn = START_UP; - --- (,CTH[5..0].clrn,CT[5].clrn) = !COPY_SINC_H or HOR_PLACE; --- (,CTH[5..0].prn ,CT[5].prn ) = !COPY_SINC_H or !HOR_PLACE; - --- CTV[].clrn = !COPY_SINC_V or VER_PLACE; --- CTV[].prn = !COPY_SINC_V or !VER_PLACE; - - CT[5].clrn = !COPY_SINC_H; - - -- set CTH to 50 (32h) - CTH[0].clrn = !COPY_SINC_H; - CTH[1].prn = !COPY_SINC_H; - CTH[2].clrn = !COPY_SINC_H; - CTH[3].clrn = !COPY_SINC_H; - CTH[4].prn = !COPY_SINC_H; - CTH[5].prn = !COPY_SINC_H; - - -- set CTV to 122h - CTV[0].clrn = !COPY_SINC_V; - CTV[1].prn = !COPY_SINC_V; - CTV[3..2].clrn = !COPY_SINC_V; - - CTV[4].clrn = !COPY_SINC_V; - CTV[5].prn = !COPY_SINC_V; - CTV[7..6].clrn = !COPY_SINC_V; - CTV[8].prn = !COPY_SINC_V; - - CT[5..0].clk = CLK42; - CTH[5..0].clk = CLK42; - CTV[8..0].clk = CLK42; - - CT[2..0].ena = VCC; - - CASE CT[2..0] IS - WHEN 0 => CT[2..0] = 1; - WHEN 1 => CT[2..0] = 2; - WHEN 2 => CT[2..0] = 4; - WHEN 3 => CT[2..0] = 4; - WHEN 4 => CT[2..0] = 5; - WHEN 5 => CT[2..0] = 6; - WHEN 6 => CT[2..0] = 0; - WHEN 7 => CT[2..0] = 0; - END CASE; - - -- for remove sinc jitter --- CT[5..3].ena = DFF(((CT0 & CT2) or (COPY_SINC_H & !CT4)),CLK42,,); - CT[5..3].ena = DFF((CT0 & CT2),CLK42,,); - CT[5..3] = CT[5..3]+1; -% - CASE CT[4..3] IS - WHEN 0 => CT[5..3] = CT[5..3]+1; - WHEN 1 => CT[5..3] = CT[5..3]+1; - WHEN 2 => CT[5..3] = CT[5..3]+1; - WHEN 3 => CT[5..3] = CT[5..3]+1; - END CASE; -% - CTH[].ena = DFF(((CT[5..2] == 15) & CT0),CLK42,,); - CTV[].ena = DFF(((CT[5..2] == 15) & CT0 & (CTH[] == 48)),CLK42,,); - - IF CTH[] == 55 THEN - CTH[] = GND; - ELSE - CTH[] = CTH[] + 1; - END IF; - - IF CTV[] == 319 THEN - CTV[] = GND; - ELSE - CTV[] = CTV[] + 1; - END IF; - - CTF[].clk = CTV8; - CTF[] = CTF[]+1; - --- ==== Video ========================================================== - - ZXS[] = ZX_PORT[5..0]; -- pages ZX Screens - ZX_SCREEN = ZX_PORT6; -- enable ZX Screen write - ZXA15 = ZX_PORT7; -- ZX A15' line - - SCR128 = DIR_PORT0; - --- WR_PIX = LCELL(TSN_W3); - WR_PIX = TSN_W3; - - DOUBLE.clk = CLK42; DOUBLE.ena = !E_WR; DOUBLE = DOUBLE_CAS; - VXA[].clk = CLK42; VXA[].ena = !E_WR; - - VXD0[].clk = CLK42; VXD0[].ena = !E_WRD; VDO0[] = VXD0[]; - VXD1[].clk = CLK42; VXD1[].ena = !E_WRD; VDO1[] = VXD1[]; - VXD2[].clk = CLK42; VXD2[].ena = !E_WRD; VDO2[] = VXD2[]; - VXD3[].clk = CLK42; VXD3[].ena = !E_WRD; VDO3[] = VXD3[]; - --- VXD0[] = D[]; --- VXD1[] = D[]; --- VXD2[] = D[]; --- VXD3[] = D[]; - - (VXD0[],VXD1[]) = MDI[]; - (VXD2[],VXD3[]) = MDI[]; - - BRD[] = DIR_PORT[7..5]; - - VCM[].clk = CLK42; - TSN_W3.clk = CLK42; - V_CST[].clk = CLK42; - V_WE.clk = CLK42; - V_WET[].clk = CLK42; - VLA[].clk = CLK42; - - SCR_ENA.clk = CLK42; - SCR_ENA.ena = !E_WR; - SCR_ENA.d = !(VAI19 or ZX_SCREEN); - - E_WRD = DFF(E_WR,CLK42,,); - E_WR = LCELL(WR or !(VAI19 or ZX_SCREEN) or !DFF(WR,CLK42,,)); --- E_WR = LCELL(WR or !DFF(WR,CLK42,,)); - --- **************************************************** - -IF MODE == "SPRINTER" GENERATE - --- VAI[19] - switch adress mode 1 - graf mode, 0 - spectrum mode - --- MXWE = DFF(((DFF(E_WR,CLK42,,) or SCR_ENA) & MXWE),CLK42,,V_WE); - MXWE = DFF(MXWE,CLK42,E_WR,V_WE); - - IF VAI[19] THEN - -- in graf mode all 256k(512k) range - VXA[] = VAI[]; - ELSE - -- in spectrum mode 8k/16k range pages - VXA[] = (GND,GND,VAI[7..0],ZXS[4..1],LCELL(ZXS0 xor ZXA15 xor VAI13),VAI[12..8]); - END IF; - --- BORD = DFF((MODE0[7..4] == 15),WR_PIC,,); --- BLANK = DFF((BORD & MODE03 & MODE02),WR_PIC,,); --- INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),WR_PIC,,); - - BORD = DFF((MODE0[7..4] == 15),LWR_COL,,); - BLANK = DFF(((BORD & MODE03 & MODE02) or DIR_PORT4),LWR_COL,,); - INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),LWR_COL,,); - - INTT = DFF(!(INTTX & (CTV[2..0] == 7)),CT5,,); - --- INTT = DFF((INTTX or DFF(INTTX,CT5,,)),CT5,,); --- INTT = DFF(!(BLANK & (CTV[2..0] == 7)),CLK42,,MODE0[0]); - - CASE CT[2..0] IS - WHEN B"110" => VCM[2..0].d = 5; -- 110 -> 101 6 -> 5 - WHEN B"000" => VCM[2..0].d = 1; -- 000 -> 001 0 -> 1 - WHEN B"001" => VCM[2..0].d = 4; -- 001 -> 100 1 -> 4 - WHEN B"010" => VCM[2..0].d = 3; -- 010 -> 011 2 -> 3 - WHEN B"100" => VCM[2..0].d = 2; -- 100 -> 010 4 -> 2 - WHEN B"101" => VCM[2..0].d = 0; -- 101 -> 000 5 -> 0 - END CASE; - - CASE VCM[1..0] IS - WHEN 0 => - VLA[].d = (BRVA[7..0],VCC,VCC,VCC,VCC,VCC,RBRVA[10..8],GND,GND); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - -TSN_W3.d = X_MODE_BOND; -% - IF VCM2 THEN --- TSN_W3.d = X_MODE5; - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE5); - ELSE - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE_BOND); - END IF; -% - - WHEN 1 => - WR_PIC.d = !VCM2; - WR_COL.d = VCM2; - VLA[].d = SVA[]; - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - WHEN 2 => - VLA[].d = VXA[17..0]; - V_CST[].d = (!VXA18,VXA18) or MXWE; - V_WE.d = MXWE; - V_WEX.d = GND; - V_WET[].d = MXWE or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - WHEN 3 => --- WR_PIC.d = X_MODE5; --- NEW 26.08.2022, fix bug with first column --- it was reproducing when changes mode 320 -> 640, like any 320px screen squares -> text mode squares - WR_PIC.d = MODE0[5]; - VLA[].d = (DIR_PORT3,CTH[5..0],CT5,VCC,VCC,CTV[8..3],GND,GND); - WR_MODE.d = !(CT[5..3] == B"111") & !(CT4 & CT3 & !MODE0[5]); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - END CASE; - --- choose V-RAM komplect - - V_CST1.prn = GND; --- V_CS0.clrn = GND; - V_CST0.prn = (LCELL(DFF(GND,!CLK42,,!V_CST0))); - V_CS1 = VCC; --- V_CS0 = LCELL(V_CST0); - - V_CSX0 = LCELL(!CLK42); - V_CSX1 = LCELL(V_CSX0); - V_CSX2 = LCELL(V_CSX1 & V_CSX0); - V_CSX3 = LCELL(V_CSX2); - --- V_CS0 = V_CSX3; - V_CS0 = GND; - --- ===================== - - SVA[].clk = CLK42; - SVA[9..6] = MODE0[3..0]; --- RSVA[].clk = CLK42; - (SVA[12..10],SVA[5..0]) = RSVA[]; - --- M_CTV[2..0].clk = CLK42; --- M_CT[5..3].clk = CLK42; - M_CTV[2..0] = (!MODE2[2] & CTV[2..0]) or MODE2[2] & (MODE2[1],CTV[2..1]); - M_CT[5..3] = (!MODE2[2] & (CT[5],!CT[4..3])) or MODE2[2] & (MODE2[0],!CT[5..4]); - - CASE (!VCM2,MODE0[4]) IS --- CASE (!VCM1,MODE0[4]) IS - WHEN B"X0" => - -- Graf adress -- - RSVA[] = (M_CTV[2..0],MODE1[2..0],M_CT[5..3]); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = CTV[2..0]; --- SVA[5..0] = (MODE1[2..0],CT5,!CT[4..3]); - WHEN B"01" => - -- ZX-atr adress -- - RSVA[] = (MODE2[2..0],SCR128,VCC,VCC,GND,!MODE0[7..6]); - SVA[17..13] = MODE2[7..3]; - --- SVA[12..10] = MODE2[2..0]; --- SVA[5..0] = (SCR128,VCC,VCC,GND,!MODE0[7..6]); - WHEN B"11" => - -- ZX-pic adress -- - RSVA[] = (MODE1[2..0],SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = MODE1[2..0]; --- SVA[5..0] = (SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - END CASE; - --- X_MODE_BOND = LCELL(LCELL(DCOL[7..4] == 15) & LCELL(DCOL[3..0] == 15) & DFF((MODE0[7] & MODE0[5] & !MODE0[4]),LWR_COL,VCC,VCC)); - X_MODE_BOND = GND; - --- LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - - --- CASE (DFF(VLA1,!CLK42,,),DFF(VLA0,!CLK42,,)) IS - --- D_PIC0_[].clk = !CLK42; --- D_PIC1_[].clk = !CLK42; --- D_PIC2_[].clk = !CLK42; --- D_PIC3_[].clk = !CLK42; - --- PIC_CLK = LCELL(LCELL(CLK42)); - PIC_CLK = !CLK42; - - D_PIC0_[].clk = PIC_CLK; - D_PIC1_[].clk = PIC_CLK; - D_PIC2_[].clk = PIC_CLK; - D_PIC3_[].clk = PIC_CLK; - - D_PIC0_[] = VDM0[]; - D_PIC1_[] = VDM1[]; - D_PIC2_[] = VDM2[]; - D_PIC3_[] = VDM3[]; - - CASE (DFF(VLA1,CLK42,,),DFF(VLA0,CLK42,,)) IS - WHEN 0 => D_PICX_[] = D_PIC0_[]; - WHEN 1 => D_PICX_[] = D_PIC1_[]; - WHEN 2 => D_PICX_[] = D_PIC2_[]; - WHEN 3 => D_PICX_[] = D_PIC3_[]; - END CASE; - - MODE0[].ena = VCC; - MODE1[].ena = VCC; - MODE2[].ena = VCC; - MODE0[].clk = LWR_MODE; - MODE1[].clk = LWR_MODE; - MODE2[].clk = LWR_MODE; - MODE0[].d = VDM3[]; - MODE1[].d = VDM2[]; - MODE2[].d = VDM1[]; - LWR_MODE = LCELL(LCELL(WR_MODE)); -% - MODE0[].ena = LWR_MODE; - MODE1[].ena = LWR_MODE; - MODE2[].ena = LWR_MODE; - MODE0[].clk = CLK42; - MODE1[].clk = CLK42; - MODE2[].clk = CLK42; - MODE0[].d = D_PIC3_[]; - MODE1[].d = D_PIC2_[]; - MODE2[].d = D_PIC1_[]; - LWR_MODE = DFF(!WR_MODE,CLK42,,); -% - X_MODE7 = DFF(MODE0[7],LWR_COL,,); - X_MODE6 = DFF(MODE0[6],LWR_COL,,); - X_MODE5 = DFF(MODE0[5],LWR_COL,,); - X_MODE4 = DFF(MODE0[4],LWR_COL,,); - - VAO[] = VLA[17..2]; - - WR_PIC.clk = CLK42; - WR_COL.clk = CLK42; - WR_MODE.clk = CLK42; - --- LWR_PIC = LCELL(LCELL(WR_PIC)); --- LWR_COL = LCELL(LCELL(WR_COL)); --- LWR_PIC = LCELL(WR_PIC); --- LWR_COL = LCELL(WR_COL); - LWR_PIC = DFF(WR_PIC,CLK42,,); - LWR_COL = DFF(WR_COL,CLK42,,); - --- D_PIC0[].ena = VCC; --- D_PIC0[].clk = (LWR_PIC); - D_PIC0[].ena = !LWR_PIC; - D_PIC0[].clk = CLK42; - - - - - IF LD_PIC THEN --- D_PIC0[] = D_PIC0_[]; - D_PIC0[] = D_PICX_[]; - ELSE - D_PIC0[] = (D_PIC0[6..0],GND); - END IF; - - --- DCOL[].clk = (LWR_COL); - DCOL[].ena = !LWR_COL; - DCOL[].clk = CLK42; - - IF DFF((MODE0[7..4] == 15),WR_PIC,,) THEN - DCOL[].d = (B"00",BRD[2..0],BRD[2..0]); - ELSE --- DCOL[].d = D_PIC0_[]; - DCOL[].d = D_PICX_[]; - END IF; - - DCOL[].clrn = !BLANK; - - BRVA[].clk = CLK42; - BRVA[].clrn = !MS_POINT; - BRVA[].prn = !MS_POINT2; - --- MODE0[4] - graph / text --- MODE0[5] - 320 / 640 resolution - --- CASE (LCELL(X_MODE4 or X_MODE5),CT2) IS - CASE (DFF((MODE0[4] or MODE0[5]),LWR_COL,,),CT2) IS - WHEN B"1X" => BRVA[7..0] = DCOL[]; - WHEN B"01" => BRVA[7..0] = (B"0000",DCOL[7..4]); - WHEN B"00" => BRVA[7..0] = (B"0000",DCOL[3..0]); - END CASE; - --- BRVA[10..8] = (x_mode4,RBRVA[9..8]); - RBRVA[].clk = CLK42; - - CASE (BORD,X_MODE4) IS - WHEN B"X0" => RBRVA[10..8].d = (GND,X_MODE[7..6]); - WHEN B"X1" => RBRVA[10..8].d = (VCC,(CTF4 & !BLANK),D_PIC0[7]); - END CASE; - - RBRVA[9..8].clrn = !BORD; - RBRVA[10].prn = !BORD; - - CASE (RBRVA[9..8],BRVA7) IS - WHEN 0,1,4,7 => ZX_COL[] = (BRVA[6],BRVA[5..3]); - WHEN 2,3,6,5 => ZX_COL[] = (BRVA[6],BRVA[2..0]); - END CASE; - --- V_WET[].prn = LCELL(DFF(GND,!CLK42,,!V_WE)); --- V_WE.prn = LCELL(DFF(GND,!CLK42,,!V_WE)); - - V_WE_R = DFF(GND,!CLK42,,!V_WE); - V_WE.prn = V_WE_R; - V_WET[].prn = V_WE_R; - --- V_WR[] = LCELL(V_WE) or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - --- V_WR[] = (V_WE) or !( - - V_WEX.clk = CLK42; --- V_WEX.d = V_WE; --- V_WEX.prn = (DFF(GND,CLK42,,!V_WEX)); - - - - - V_WEMMM = LCELL(V_WE); --- V_WEMMN = LCELL(V_WEMMM); -- bios ok, fn ok, fnf1 failed, zx almost ok --- V_WEMMO = LCELL(V_WEMMN); -- green arts --- V_WEMMP = LCELL(V_WEMMO); -- blue + pink arts --- V_WEMMR = LCELL(V_WEMMP); -- no F1 issue, but red arts (fix by finger, not enough capacity??) --- V_WEMMS = LCELL(V_WEMMR); --- V_WEMMT = LCELL(V_WEMMS); --- V_WEMMU = LCELL(V_WEMMT); --- V_WEMMV = LCELL(V_WEMMU); --- V_WEMMW = LCELL(V_WEMMV); --- V_WEMMX = LCELL(V_WEMMW); --- V_WEMMY = LCELL(V_WEMMX); --- V_WEMMZ = LCELL(V_WEMMY); - - V_WRM = LCELL(V_WE or V_WEMMM); - - --- V_WRM = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMR); --- V_WRM = LCELL(V_WEMMM or V_WEMMN); --- V_WRM2 = LCELL(V_WEMMM or V_WEMMN); - - V_WEM = (V_WE); - --- V_WEM2 = LCELL(V_WE); --- V_WEM = LCELL(V_WEMMM & V_WEMMN); --- V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - ---- LWR_COL = DFF(WR_COL,CLK42,,); - F_WR = ((LCELL(LCELL(LCELL(DFF(VCC,V_WE,,)))))); ---- F_WR = DFF(V_WE,CLK42,,); --- V_WEMMZ = LCELL(CLK42); - V_EN3 = (DFF(!(!VXA1 & (!VXA0 or DOUBLE)), CLK42, F_WR,)); - V_EN2 = (DFF(!(!VXA1 & (VXA0 or DOUBLE)), CLK42, F_WR,)); - V_EN1 = (DFF(!(VXA1 & (!VXA0 or DOUBLE)), CLK42, F_WR,)); - V_EN0 = (DFF(!(VXA1 & (VXA0 or DOUBLE)), CLK42, F_WR,)); - - --- V_WR_3 = LCELL(V_WRM or V_EN3); --- V_WR_2 = LCELL(V_WRM or V_EN2); --- V_WR_1 = LCELL(V_WRM or V_EN1); --- V_WR_0 = LCELL(V_WRM or V_EN0); - V_WR_3 = (LCELL(LCELL(LCELL(V_WRM or V_EN3)))); - V_WR_2 = (LCELL(LCELL(LCELL(V_WRM or V_EN2)))); - V_WR_1 = (LCELL(LCELL(LCELL(V_WRM or V_EN1)))); - V_WR_0 = (LCELL(LCELL(LCELL(V_WRM or V_EN0)))); - - V_WEY3 = LCELL(V_WE or V_EN3); - V_WEY2 = LCELL(V_WE or V_EN2); - V_WEY1 = LCELL(V_WE or V_EN1); - V_WEY0 = LCELL(V_WE or V_EN0); - - V_WR[] = V_WR_[]; -- V_WR0-3 - V_WEN[] = V_WEY[]; -- VD0-3 - - - - - -% - V_WEMMM = LCELL(V_WE); - V_WEMMN = LCELL(V_WEMMM); - V_WEMMO = LCELL(V_WEMMN); - V_WEMM = LCELL(V_WEMMO); - - V_WRM = LCELL(V_WEMMN & V_WEMMM); - V_WRM2 = LCELL(V_WEMMN & V_WEMMM); - - V_WEM = LCELL(V_WEMMM & V_WEMMO); - V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - - V_EN3 = DFF(!(!VXA1 & (!VXA0 or DOUBLE)),CLK42,F_WR,); - V_EN2 = DFF(!(!VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN1 = DFF(!(VXA1 & (!VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN0 = DFF(!(VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - - F_WR = DFF(VCC,V_WE,,); - - V_WR_3 = V_WRM or V_EN3; - V_WR_2 = V_WRM2 or V_EN2; - V_WR_1 = V_WRM or V_EN1; - V_WR_0 = V_WRM or V_EN0; - - V_WEY3 = V_WEM or V_EN3; - V_WEY2 = V_WEM2 or V_EN2; - V_WEY1 = V_WEM or V_EN1; - V_WEY0 = V_WEM or V_EN0; - - V_WR[] = V_WR_[]; - V_WEN[] = V_WEY[]; -% - - - - - --- CLK84 = LCELL(CLK42 xor CLK84_X); --- CLK84_X = DFF(!CLK84_X,CLK84,,); --- CLK84_Y = CLK84; - -END GENERATE; -- end "sprinter" mode - - -END; diff --git a/src/altera/acex/k30/VIDEO2_T1.TDF b/src/altera/acex/k30/VIDEO2_T1.TDF deleted file mode 100644 index 8e3bb3e..0000000 --- a/src/altera/acex/k30/VIDEO2_T1.TDF +++ /dev/null @@ -1,708 +0,0 @@ - - TITLE "Video-controller"; - -INCLUDE "lpm_ram_dp"; - -PARAMETERS - ( - MODE = "SPRINTER", - MOUSE = "NO", - HOR_PLACE = H"50", - VER_PLACE = H"91" -- 122h/2 - ); - -SUBDESIGN video2 - ( - CLK42 : INPUT; - - CT[5..0] : OUTPUT; - CTH[5..0] : OUTPUT; - CTV[8..0] : OUTPUT; - CTF[6..0] : OUTPUT; - - BLANK : OUTPUT; - - START_UP : INPUT; - COPY_SINC_H : INPUT; - COPY_SINC_V : INPUT; - - WR : INPUT; - - VAI[19..0] : INPUT; -- input screen adress - - VAO[15..0] : OUTPUT; - - D[7..0] : INPUT; - MDI[15..0] : INPUT; - - VDO0[7..0] : OUTPUT; - VDO1[7..0] : OUTPUT; - VDO2[7..0] : OUTPUT; - VDO3[7..0] : OUTPUT; - - VDM0[7..0] : INPUT; - VDM1[7..0] : INPUT; - VDM2[7..0] : INPUT; - VDM3[7..0] : INPUT; - - V_WR[3..0] : OUTPUT; - V_WEN[3..0] : OUTPUT; - - V_CS[1..0] : OUTPUT; - WR_PIX : OUTPUT; - --- ZX_COLOR[3..0] : OUTPUT; - - ZX_PORT[7..0] : INPUT; - DIR_PORT[7..0] : INPUT; - -% - bit0 - Spectrum SCREEN Switch - bit1 - Spectrum Adress MODE - bit2 - Write to Spectrum Screen OFF - bit3 - MODE page 0/1 - bit4 - MODE on/off screen - - bit7..5 - Border -% - - INTT : OUTPUT; - - DOUBLE_CAS : INPUT; - - MOUSE_X[9..0] : INPUT; - MOUSE_Y[9..0] : INPUT; - - - ) -VARIABLE - - CLK84 : NODE; - CLK84_X : NODE; - CLK84_Y : NODE; - - ZX_COLOR[3..0] : NODE; - - CT[5..0] : DFFE; - CTH[5..0] : DFFE; - CTV[8..0] : DFFE; - CTF[6..0] : DFF; - - VXA[19..0] : DFFE; - - VXD0[7..0] : DFFE; - VXD1[7..0] : DFFE; - VXD2[7..0] : DFFE; - VXD3[7..0] : DFFE; - - E_WR : NODE; - E_WRD : NODE; - - BLANK : NODE; - BORD : NODE; --- INTT_T : NODE; - INTTX : NODE; - - VLA[17..0] : DFF; --- SVA[17..0] : NODE; - SVA[17..0] : DFF; --- RSVA[8..0] : LCELL; - RSVA[8..0] : NODE; --- RSVA[8..0] : DFF; - - V_CST[1..0] : DFF; - VCM[2..0] : DFF; - TSN_W3 : DFF; - V_WE : DFF; - V_WEX : DFF; - - V_WEM : NODE; - V_WEM1 : NODE; - V_WEM2 : NODE; - V_WEM3 : NODE; - V_WRM : NODE; - V_WRM1 : NODE; - V_WRM2 : NODE; - V_WRM3 : NODE; - - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; - V_WEMMP : NODE; - V_WEMMQ : NODE; - V_WEMMR : NODE; - V_WEMMS : NODE; - V_WEMMT : NODE; - V_WEMMU : NODE; - V_WEMMV : NODE; - V_WEMMW : NODE; - V_WEMMX : NODE; - V_WEMMY : NODE; - V_WEMMZ : NODE; - - V_WET[3..0] : DFF; - - D_PIC0[7..0] : DFFE; --- D_PIC0_[7..0] : LCELL; - - D_PIC0_[7..0] : DFFE; - D_PIC1_[7..0] : DFFE; - D_PIC2_[7..0] : DFFE; - D_PIC3_[7..0] : DFFE; - - D_PICX_[7..0] : NODE; - - LWR_PIC : NODE; - LWR_COL : NODE; - - WR_PIC : DFF; - WR_COL : DFF; - LD_PIC : NODE; - - RBRVA[10..8]: DFF; - BRVA[7..0] : DFF; - DCOL[7..0] : DFFE; - - MXWE : NODE; --- MXCE : NODE; - - AX128 : NODE; - - BRD[2..0] : NODE; - - ZX_COL[3..0] : LCELL; - - ZXA15 : NODE; - ZXS[5..0] : NODE; - ZX_SCREEN : NODE; - SCR128 : NODE; - - MODE0[7..0] : DFFE; - MODE1[7..0] : DFFE; - MODE2[7..0] : DFFE; --- MODE3[7..0] : DFF; - - WR_MODE : DFF; - LWR_MODE : NODE; - X_MODE[7..4]: NODE; - X_MODE_BOND : NODE; - --- M_CTV[2..0] : DFF; --- M_CT[5..3] : DFF; - M_CTV[2..0] : LCELL; - M_CT[5..3] : LCELL; - - DOUBLE : DFFE; - - PIC_CLK : NODE; - - MS_X[9..0] : DFF; - MS_Y[9..0] : DFF; - - MS_POINT : NODE; - MS_POINT2 : NODE; - MS_PNT : NODE; - - MS_DAT : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8,LPM_FILE="MOUSE.MIF"); - - SCR_ENA : DFFE; - V_WR_[3..0] : LCELL; - V_WEY[3..0] : LCELL; - - V_WE_R : NODE; - - V_CSX[3..0] : NODE; - - V_EN[3..0] : NODE; - - F_WR : NODE; - -BEGIN - - DEFAULTS - WR_MODE.d = VCC; -- WR_MODE2.d = VCC; -- WR_MODE2X.d = VCC; - V_CST[].d = VCC; V_WR[] = VCC; TSN_W3.d = VCC; - V_WE.d = VCC; WR_COL.d = VCC; WR_PIC.d = VCC; - V_WET[].d = VCC; - END DEFAULTS; - - ZX_COLOR[] = ZX_COL[]; - --- === MOUSE counters ======== - - MS_X[].clk = !CT1; - CASE LCELL(CTH[5..2] == 12) IS - WHEN 0 => MS_X[] = MS_X[] + 1; - WHEN 1 => MS_X[] = (!MOUSE_X[9..0]); - END CASE; - - MS_Y[].clk = !CTH5; - CASE LCELL(CTV8 & !CTV5 & CTV4) IS - WHEN 0 => MS_Y[] = MS_Y[] + 1; - WHEN 1 => MS_Y[] = (GND,!MOUSE_Y[8..0]); - END CASE; - - MS_PNT = DFF(((MS_X[] == B"100000XXXX") & (MS_Y[] == B"100000XXXX")),CLK42,,); - - MS_DAT.wren = GND; - MS_DAT.data[] = GND; - MS_DAT.wraddress[] = GND; - MS_DAT.wrclock = CLK42; - MS_DAT.wrclken = GND; - MS_DAT.rden = VCC; - MS_DAT.rdaddress[] = (MS_Y[3..0],MS_X[3..0]); - MS_DAT.rdclock = CLK42; - MS_DAT.rdclken = VCC; - - IF MOUSE == "NO" GENERATE - MS_POINT = GND; - MS_POINT2 = GND; - ELSE GENERATE - MS_POINT = DFF((MS_PNT & MS_DAT.q0),CLK42,,); - MS_POINT2 = DFF((MS_PNT & MS_DAT.q1),CLK42,,); - END GENERATE; - --- === Sinc-counts GENERATOR ============================================ - --- CT[].clrn = START_UP; - --- (,CTH[5..0].clrn,CT[5].clrn) = !COPY_SINC_H or HOR_PLACE; --- (,CTH[5..0].prn ,CT[5].prn ) = !COPY_SINC_H or !HOR_PLACE; - --- CTV[].clrn = !COPY_SINC_V or VER_PLACE; --- CTV[].prn = !COPY_SINC_V or !VER_PLACE; - - CT[5].clrn = !COPY_SINC_H; - - -- set CTH to 50 (32h) - CTH[0].clrn = !COPY_SINC_H; - CTH[1].prn = !COPY_SINC_H; - CTH[2].clrn = !COPY_SINC_H; - CTH[3].clrn = !COPY_SINC_H; - CTH[4].prn = !COPY_SINC_H; - CTH[5].prn = !COPY_SINC_H; - - -- set CTV to 122h - CTV[0].clrn = !COPY_SINC_V; - CTV[1].prn = !COPY_SINC_V; - CTV[3..2].clrn = !COPY_SINC_V; - - CTV[4].clrn = !COPY_SINC_V; - CTV[5].prn = !COPY_SINC_V; - CTV[7..6].clrn = !COPY_SINC_V; - CTV[8].prn = !COPY_SINC_V; - - CT[5..0].clk = CLK42; - CTH[5..0].clk = CLK42; - CTV[8..0].clk = CLK42; - - CT[2..0].ena = VCC; - CASE CT[2..0] IS - WHEN 0 => CT[2..0] = 1; - WHEN 1 => CT[2..0] = 2; - WHEN 2 => CT[2..0] = 4; - WHEN 3 => CT[2..0] = 4; - WHEN 4 => CT[2..0] = 5; - WHEN 5 => CT[2..0] = 6; - WHEN 6 => CT[2..0] = 0; - WHEN 7 => CT[2..0] = 0; - END CASE; - -- for remove sinc jitter --- CT[5..3].ena = DFF(((CT0 & CT2) or (COPY_SINC_H & !CT4)),CLK42,,); - CT[5..3].ena = DFF((CT0 & CT2),CLK42,,); - CT[5..3] = CT[5..3]+1; -% - CASE CT[4..3] IS - WHEN 0 => CT[5..3] = CT[5..3]+1; - WHEN 1 => CT[5..3] = CT[5..3]+1; - WHEN 2 => CT[5..3] = CT[5..3]+1; - WHEN 3 => CT[5..3] = CT[5..3]+1; - END CASE; -% - CTH[].ena = DFF(((CT[5..2] == 15) & CT0),CLK42,,); - CTV[].ena = DFF(((CT[5..2] == 15) & CT0 & (CTH[] == 48)),CLK42,,); - - IF CTH[] == 55 THEN - CTH[] = GND; - ELSE - CTH[] = CTH[] + 1; - END IF; - - IF CTV[] == 319 THEN - CTV[] = GND; - ELSE - CTV[] = CTV[] + 1; - END IF; - - CTF[].clk = CTV8; - CTF[] = CTF[]+1; - --- ==== Video ========================================================== - - ZXS[] = ZX_PORT[5..0]; -- pages ZX Screens - ZX_SCREEN = ZX_PORT6; -- enable ZX Screen write - ZXA15 = ZX_PORT7; -- ZX A15' line - - SCR128 = DIR_PORT0; - --- WR_PIX = LCELL(TSN_W3); - WR_PIX = (TSN_W3); - - DOUBLE.clk = CLK42; DOUBLE.ena = !E_WR; DOUBLE = DOUBLE_CAS; - VXA[].clk = CLK42; VXA[].ena = !E_WR; - - VXD0[].clk = CLK42; VXD0[].ena = !E_WRD; VDO0[] = VXD0[]; - VXD1[].clk = CLK42; VXD1[].ena = !E_WRD; VDO1[] = VXD1[]; - VXD2[].clk = CLK42; VXD2[].ena = !E_WRD; VDO2[] = VXD2[]; - VXD3[].clk = CLK42; VXD3[].ena = !E_WRD; VDO3[] = VXD3[]; - --- VXD0[] = D[]; --- VXD1[] = D[]; --- VXD2[] = D[]; --- VXD3[] = D[]; - - (VXD0[],VXD1[]) = MDI[]; - (VXD2[],VXD3[]) = MDI[]; - - BRD[] = DIR_PORT[7..5]; - - VCM[].clk = CLK42; - TSN_W3.clk = CLK42; - V_CST[].clk = CLK42; - V_WE.clk = CLK42; - V_WET[].clk = CLK42; - VLA[].clk = CLK42; - - SCR_ENA.clk = CLK42; - SCR_ENA.ena = !E_WR; - SCR_ENA.d = !(VAI19 or ZX_SCREEN); - - E_WRD = DFF(E_WR,CLK42,,); - E_WR = LCELL(WR or !(VAI19 or ZX_SCREEN) or !DFF(WR,CLK42,,)); --- E_WR = LCELL(WR or !DFF(WR,CLK42,,)); - --- **************************************************** - -IF MODE == "SPRINTER" GENERATE - --- VAI[19] - switch adress mode 1 - graf mode, 0 - spectrum mode - --- MXWE = DFF(((DFF(E_WR,CLK42,,) or SCR_ENA) & MXWE),CLK42,,V_WE); - MXWE = DFF(MXWE,CLK42,E_WR,V_WE); - - IF VAI[19] THEN - -- in graf mode all 256k(512k) range - VXA[] = VAI[]; - ELSE - -- in spectrum mode 8k/16k range pages - VXA[] = (GND,GND,VAI[7..0],ZXS[4..1],LCELL(ZXS0 xor ZXA15 xor VAI13),VAI[12..8]); - END IF; - --- BORD = DFF((MODE0[7..4] == 15),WR_PIC,,); --- BLANK = DFF((BORD & MODE03 & MODE02),WR_PIC,,); --- INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),WR_PIC,,); - - BORD = DFF((MODE0[7..4] == 15),LWR_COL,,); - BLANK = DFF(((BORD & MODE03 & MODE02) or DIR_PORT4),LWR_COL,,); - INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),LWR_COL,,); - - INTT = DFF(!(INTTX & (CTV[2..0] == 7)),CT5,,); - --- INTT = DFF((INTTX or DFF(INTTX,CT5,,)),CT5,,); --- INTT = DFF(!(BLANK & (CTV[2..0] == 7)),CLK42,,MODE0[0]); - - CASE CT[2..0] IS - WHEN B"110" => VCM[2..0].d = 5; -- 101 - WHEN B"000" => VCM[2..0].d = 1; -- 001 - WHEN B"001" => VCM[2..0].d = 4; -- 100 - WHEN B"010" => VCM[2..0].d = 3; -- 011 - WHEN B"100" => VCM[2..0].d = 2; -- 010 - WHEN B"101" => VCM[2..0].d = 0; -- 000 - END CASE; - - CASE VCM[1..0] IS - WHEN 0 => - VLA[].d = (BRVA[7..0],VCC,VCC,VCC,VCC,VCC,RBRVA[10..8],GND,GND); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - IF VCM2 THEN --- TSN_W3.d = X_MODE5; - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE5); - ELSE - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE_BOND); - END IF; - WHEN 1 => - WR_PIC.d = !VCM2; - WR_COL.d = VCM2; - VLA[].d = SVA[]; - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - WHEN 2 => - VLA[].d = VXA[17..0]; - V_CST[].d = (!VXA18,VXA18) or MXWE; - V_WE.d = MXWE; - V_WEX.d = GND; - V_WET[].d = MXWE or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - WHEN 3 => - WR_PIC.d = X_MODE5; - VLA[].d = (DIR_PORT3,CTH[5..0],CT5,VCC,VCC,CTV[8..3],GND,GND); - WR_MODE.d = !(CT[5..3] == B"111") & !(CT4 & CT3 & !MODE0[5]); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - END CASE; - --- choose V-RAM komplect - - V_CST1.prn = GND; --- V_CS0.clrn = GND; - V_CST0.prn = (LCELL(DFF(GND,!CLK42,,!V_CST0))); - V_CS1 = VCC; --- V_CS0 = LCELL(V_CST0); - - V_CSX0 = LCELL(!CLK42); - V_CSX1 = LCELL(V_CSX0); - V_CSX2 = LCELL(V_CSX1 & V_CSX0); - V_CSX3 = LCELL(V_CSX2); - --- V_CS0 = V_CSX3; - V_CS0 = GND; - --- ===================== - - SVA[].clk = CLK42; - SVA[9..6] = MODE0[3..0]; --- RSVA[].clk = CLK42; - (SVA[12..10],SVA[5..0]) = RSVA[]; - --- M_CTV[2..0].clk = CLK42; --- M_CT[5..3].clk = CLK42; - M_CTV[2..0] = (!MODE2[2] & CTV[2..0]) or MODE2[2] & (MODE2[1],CTV[2..1]); - M_CT[5..3] = (!MODE2[2] & (CT[5],!CT[4..3])) or MODE2[2] & (MODE2[0],!CT[5..4]); - - CASE (!VCM2,MODE0[4]) IS --- CASE (!VCM1,MODE0[4]) IS - WHEN B"X0" => - -- Graf adress -- - RSVA[] = (M_CTV[2..0],MODE1[2..0],M_CT[5..3]); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = CTV[2..0]; --- SVA[5..0] = (MODE1[2..0],CT5,!CT[4..3]); - WHEN B"01" => - -- ZX-atr adress -- - RSVA[] = (MODE2[2..0],SCR128,VCC,VCC,GND,!MODE0[7..6]); - SVA[17..13] = MODE2[7..3]; - --- SVA[12..10] = MODE2[2..0]; --- SVA[5..0] = (SCR128,VCC,VCC,GND,!MODE0[7..6]); - WHEN B"11" => - -- ZX-pic adress -- - RSVA[] = (MODE1[2..0],SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = MODE1[2..0]; --- SVA[5..0] = (SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - END CASE; - --- X_MODE_BOND = LCELL(LCELL(DCOL[7..4] == 15) & LCELL(DCOL[3..0] == 15) & DFF((MODE0[7] & MODE0[5] & !MODE0[4]),LWR_COL,VCC,VCC)); - X_MODE_BOND = GND; - --- LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - --- CASE (DFF(VLA1,!CLK42,,),DFF(VLA0,!CLK42,,)) IS - --- D_PIC0_[].clk = !CLK42; --- D_PIC1_[].clk = !CLK42; --- D_PIC2_[].clk = !CLK42; --- D_PIC3_[].clk = !CLK42; - --- PIC_CLK = LCELL(LCELL(CLK42)); - PIC_CLK = !CLK42; - - D_PIC0_[].clk = PIC_CLK; - D_PIC1_[].clk = PIC_CLK; - D_PIC2_[].clk = PIC_CLK; - D_PIC3_[].clk = PIC_CLK; - - D_PIC0_[] = VDM0[]; - D_PIC1_[] = VDM1[]; - D_PIC2_[] = VDM2[]; - D_PIC3_[] = VDM3[]; - - CASE (DFF(VLA1,CLK42,,),DFF(VLA0,CLK42,,)) IS - WHEN 0 => D_PICX_[] = D_PIC0_[]; - WHEN 1 => D_PICX_[] = D_PIC1_[]; - WHEN 2 => D_PICX_[] = D_PIC2_[]; - WHEN 3 => D_PICX_[] = D_PIC3_[]; - END CASE; - - MODE0[].ena = VCC; - MODE1[].ena = VCC; - MODE2[].ena = VCC; - MODE0[].clk = LWR_MODE; - MODE1[].clk = LWR_MODE; - MODE2[].clk = LWR_MODE; - MODE0[].d = VDM3[]; - MODE1[].d = VDM2[]; - MODE2[].d = VDM1[]; - LWR_MODE = LCELL(LCELL(WR_MODE)); -% - MODE0[].ena = LWR_MODE; - MODE1[].ena = LWR_MODE; - MODE2[].ena = LWR_MODE; - MODE0[].clk = CLK42; - MODE1[].clk = CLK42; - MODE2[].clk = CLK42; - MODE0[].d = D_PIC3_[]; - MODE1[].d = D_PIC2_[]; - MODE2[].d = D_PIC1_[]; - LWR_MODE = DFF(!WR_MODE,CLK42,,); -% - X_MODE7 = DFF(MODE0[7],LWR_COL,,); - X_MODE6 = DFF(MODE0[6],LWR_COL,,); - X_MODE5 = DFF(MODE0[5],LWR_COL,,); - X_MODE4 = DFF(MODE0[4],LWR_COL,,); - - VAO[] = VLA[17..2]; - - WR_PIC.clk = CLK42; - WR_COL.clk = CLK42; - WR_MODE.clk = CLK42; - --- LWR_PIC = LCELL(LCELL(WR_PIC)); --- LWR_COL = LCELL(LCELL(WR_COL)); --- LWR_PIC = LCELL(WR_PIC); --- LWR_COL = LCELL(WR_COL); - LWR_PIC = DFF(WR_PIC,CLK42,,); - LWR_COL = DFF(WR_COL,CLK42,,); - --- D_PIC0[].ena = VCC; --- D_PIC0[].clk = (LWR_PIC); - D_PIC0[].ena = !LWR_PIC; - D_PIC0[].clk = CLK42; - - IF LD_PIC THEN --- D_PIC0[] = D_PIC0_[]; - D_PIC0[] = D_PICX_[]; - ELSE - D_PIC0[] = (D_PIC0[6..0],GND); - END IF; - --- DCOL[].clk = (LWR_COL); - DCOL[].ena = !LWR_COL; - DCOL[].clk = CLK42; - - IF DFF((MODE0[7..4] == 15),WR_PIC,,) THEN - DCOL[].d = (B"00",BRD[2..0],BRD[2..0]); - ELSE --- DCOL[].d = D_PIC0_[]; - DCOL[].d = D_PICX_[]; - END IF; - - DCOL[].clrn = !BLANK; - - BRVA[].clk = CLK42; - BRVA[].clrn = !MS_POINT; - BRVA[].prn = !MS_POINT2; - --- CASE (LCELL(X_MODE4 or X_MODE5),CT2) IS - CASE (DFF((MODE0[4] or MODE0[5]),LWR_COL,,),CT2) IS - WHEN B"1X" => BRVA[7..0] = DCOL[]; - WHEN B"01" => BRVA[7..0] = (B"0000",DCOL[7..4]); - WHEN B"00" => BRVA[7..0] = (B"0000",DCOL[3..0]); - END CASE; - --- BRVA[10..8] = (x_mode4,RBRVA[9..8]); - RBRVA[].clk = CLK42; - - CASE (BORD,X_MODE4) IS - WHEN B"X0" => RBRVA[10..8].d = (GND,X_MODE[7..6]); - WHEN B"X1" => RBRVA[10..8].d = (VCC,(CTF4 & !BLANK),D_PIC0[7]); - END CASE; - - RBRVA[9..8].clrn = !BORD; - RBRVA[10].prn = !BORD; - - CASE (RBRVA[9..8],BRVA7) IS - WHEN 0,1,4,7 => ZX_COL[] = (BRVA[6],BRVA[5..3]); - WHEN 2,3,6,5 => ZX_COL[] = (BRVA[6],BRVA[2..0]); - END CASE; - --- V_WET[].prn = LCELL(DFF(GND,!CLK42,,!V_WE)); --- V_WE.prn = LCELL(DFF(GND,!CLK42,,!V_WE)); - - V_WE_R = DFF(GND,!CLK42,,!V_WE); - V_WE.prn = V_WE_R; - V_WET[].prn = V_WE_R; - --- V_WR[] = LCELL(V_WE) or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - --- V_WR[] = (V_WE) or !( - - V_WEX.clk = CLK42; --- V_WEX.d = V_WE; --- V_WEX.prn = (DFF(GND,CLK42,,!V_WEX)); - - --- V_WE_R1 = LCELL(V_WE); --- V_WEMMM = LCELL(V_WE_R1); - - V_WEMMM = LCELL(V_WE); - V_WEMMN = LCELL(V_WEMMM); -- bios ok, fn ok, fnf1 failed, zx almost ok - V_WEMMO = LCELL(V_WEMMN); -- green arts - V_WEMMP = LCELL(V_WEMMO); -- blue + pink arts - V_WEMMR = LCELL(V_WEMMP); -- no F1 issue, but red arts (fix by finger, not enough capacity??) - V_WEMMS = LCELL(V_WEMMR); --- V_WEMMT = LCELL(V_WEMMS); --- V_WEMMU = LCELL(V_WEMMT); --- V_WEMMV = LCELL(V_WEMMU); --- V_WEMMW = LCELL(V_WEMMV); --- V_WEMMX = LCELL(V_WEMMW); --- V_WEMMY = LCELL(V_WEMMX); --- V_WEMMZ = LCELL(V_WEMMY); - - V_WRM = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMR); --- V_WRM = LCELL(V_WEMMM or V_WEMMN); --- V_WRM2 = LCELL(V_WEMMM or V_WEMMN); - - V_WEM = LCELL(V_WE); --- V_WEM2 = LCELL(V_WE); --- V_WEM = LCELL(V_WEMMM & V_WEMMN); --- V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - - F_WR = DFF(VCC,V_WE,,); - V_EN3 = DFF(!(!VXA1 & (!VXA0 or DOUBLE)), CLK42, F_WR,); - V_EN2 = DFF(!(!VXA1 & (VXA0 or DOUBLE)), CLK42, F_WR,); - V_EN1 = DFF(!(VXA1 & (!VXA0 or DOUBLE)), CLK42, F_WR,); - V_EN0 = DFF(!(VXA1 & (VXA0 or DOUBLE)), CLK42, F_WR,); - - - V_WR_3 = (V_WRM or V_EN3); - V_WR_2 = (V_WRM or V_EN2); - V_WR_1 = (V_WRM or V_EN1); - V_WR_0 = (V_WRM or V_EN0); - - V_WEY3 = V_WEM or V_EN3; - V_WEY2 = V_WEM or V_EN2; - V_WEY1 = V_WEM or V_EN1; - V_WEY0 = V_WEM or V_EN0; - - V_WR[] = V_WR_[]; - V_WEN[] = V_WEY[]; - --- CLK84 = LCELL(CLK42 xor CLK84_X); --- CLK84_X = DFF(!CLK84_X,CLK84,,); --- CLK84_Y = CLK84; - -END GENERATE; -- end "sprinter" mode - - -END; diff --git a/src/altera/acex/k30/VIDEO2_T2.TDF b/src/altera/acex/k30/VIDEO2_T2.TDF deleted file mode 100644 index 61f62e3..0000000 --- a/src/altera/acex/k30/VIDEO2_T2.TDF +++ /dev/null @@ -1,773 +0,0 @@ - - TITLE "Video-controller"; - -INCLUDE "lpm_ram_dp"; - -PARAMETERS - ( - MODE = "SPRINTER", - MOUSE = "NO", - HOR_PLACE = H"50", - VER_PLACE = H"91" -- 122h/2 - ); - -SUBDESIGN video2 - ( - CLK42 : INPUT; - - CT[5..0] : OUTPUT; - CTH[5..0] : OUTPUT; - CTV[8..0] : OUTPUT; - CTF[6..0] : OUTPUT; - - BLANK : OUTPUT; - - START_UP : INPUT; - COPY_SINC_H : INPUT; - COPY_SINC_V : INPUT; - - WR : INPUT; - - VAI[19..0] : INPUT; -- input screen adress - - VAO[15..0] : OUTPUT; - - D[7..0] : INPUT; - MDI[15..0] : INPUT; - - VDO0[7..0] : OUTPUT; - VDO1[7..0] : OUTPUT; - VDO2[7..0] : OUTPUT; - VDO3[7..0] : OUTPUT; - - VDM0[7..0] : INPUT; - VDM1[7..0] : INPUT; - VDM2[7..0] : INPUT; - VDM3[7..0] : INPUT; - - V_WR[3..0] : OUTPUT; - V_WEN[3..0] : OUTPUT; - - V_CS[1..0] : OUTPUT; - WR_PIX : OUTPUT; - --- ZX_COLOR[3..0] : OUTPUT; - - ZX_PORT[7..0] : INPUT; - DIR_PORT[7..0] : INPUT; - -% - bit0 - Spectrum SCREEN Switch - bit1 - Spectrum Adress MODE - bit2 - Write to Spectrum Screen OFF - bit3 - MODE page 0/1 - bit4 - MODE on/off screen - - bit7..5 - Border -% - - INTT : OUTPUT; - - DOUBLE_CAS : INPUT; - - MOUSE_X[9..0] : INPUT; - MOUSE_Y[9..0] : INPUT; - - - ) -VARIABLE - --- CLK84 : NODE; --- CLK84_X : NODE; --- CLK84_Y : NODE; - - ZX_COLOR[3..0] : NODE; - - CT[5..0] : DFFE; - CTH[5..0] : DFFE; - CTV[8..0] : DFFE; - CTF[6..0] : DFF; - - VXA[19..0] : DFFE; - - VXD0[7..0] : DFFE; - VXD1[7..0] : DFFE; - VXD2[7..0] : DFFE; - VXD3[7..0] : DFFE; - - E_WR : NODE; - E_WRD : NODE; - - BLANK : NODE; - BORD : NODE; --- INTT_T : NODE; - INTTX : NODE; - - VLA[17..0] : DFF; --- SVA[17..0] : NODE; - SVA[17..0] : DFF; --- RSVA[8..0] : LCELL; - RSVA[8..0] : NODE; --- RSVA[8..0] : DFF; - - V_CST[1..0] : DFF; - VCM[2..0] : DFF; - TSN_W3 : DFF; - V_WE : DFF; - V_WEX : DFF; - - V_WEM : NODE; - V_WEM2 : NODE; - V_WRM : NODE; - V_WRM2 : NODE; -% - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; -% - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; - V_WEMMP : NODE; - V_WEMMQ : NODE; - V_WEMMR : NODE; - V_WEMMS : NODE; - V_WEMMT : NODE; - V_WEMMU : NODE; - V_WEMMV : NODE; - V_WEMMW : NODE; - V_WEMMX : NODE; - V_WEMMY : NODE; - V_WEMMZ : NODE; - - - - V_WET[3..0] : DFF; - - D_PIC0[7..0] : DFFE; --- D_PIC0_[7..0] : LCELL; - - D_PIC0_[7..0] : DFFE; - D_PIC1_[7..0] : DFFE; - D_PIC2_[7..0] : DFFE; - D_PIC3_[7..0] : DFFE; - - D_PICX_[7..0] : NODE; - - LWR_PIC : NODE; - LWR_COL : NODE; - - WR_PIC : DFF; - WR_COL : DFF; - LD_PIC : NODE; -MXL: NODE; -MXR: NODE; - - RBRVA[10..8]: DFF; - BRVA[7..0] : DFF; - DCOL[7..0] : DFFE; - - MXWE : NODE; --- MXCE : NODE; - - AX128 : NODE; - - BRD[2..0] : NODE; - - ZX_COL[3..0] : LCELL; - - ZXA15 : NODE; - ZXS[5..0] : NODE; - ZX_SCREEN : NODE; - SCR128 : NODE; - - MODE0[7..0] : DFFE; - MODE1[7..0] : DFFE; - MODE2[7..0] : DFFE; --- MODE3[7..0] : DFF; - - WR_MODE : DFF; - LWR_MODE : NODE; - X_MODE[7..4]: NODE; - X_MODE_BOND : NODE; - --- M_CTV[2..0] : DFF; --- M_CT[5..3] : DFF; - M_CTV[2..0] : LCELL; - M_CT[5..3] : LCELL; - - DOUBLE : DFFE; - - PIC_CLK : NODE; - - MS_X[9..0] : DFF; - MS_Y[9..0] : DFF; - - MS_POINT : NODE; - MS_POINT2 : NODE; - MS_PNT : NODE; - - MS_DAT : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8,LPM_FILE="MOUSE.MIF"); - - SCR_ENA : DFFE; - V_WR_[3..0] : LCELL; - V_WEY[3..0] : LCELL; - - V_WE_R : NODE; - - V_CSX[3..0] : NODE; - - V_EN[3..0] : NODE; - - F_WR : NODE; - -BEGIN - - DEFAULTS - WR_MODE.d = VCC; -- WR_MODE2.d = VCC; -- WR_MODE2X.d = VCC; - V_CST[].d = VCC; V_WR[] = VCC; TSN_W3.d = VCC; - V_WE.d = VCC; WR_COL.d = VCC; WR_PIC.d = VCC; - V_WET[].d = VCC; - END DEFAULTS; - - ZX_COLOR[] = ZX_COL[]; - --- === MOUSE counters ======== - - MS_X[].clk = !CT1; - CASE LCELL(CTH[5..2] == 12) IS - WHEN 0 => MS_X[] = MS_X[] + 1; - WHEN 1 => MS_X[] = (!MOUSE_X[9..0]); - END CASE; - - MS_Y[].clk = !CTH5; - CASE LCELL(CTV8 & !CTV5 & CTV4) IS - WHEN 0 => MS_Y[] = MS_Y[] + 1; - WHEN 1 => MS_Y[] = (GND,!MOUSE_Y[8..0]); - END CASE; - - MS_PNT = DFF(((MS_X[] == B"100000XXXX") & (MS_Y[] == B"100000XXXX")),CLK42,,); - - MS_DAT.wren = GND; - MS_DAT.data[] = GND; - MS_DAT.wraddress[] = GND; - MS_DAT.wrclock = CLK42; - MS_DAT.wrclken = GND; - MS_DAT.rden = VCC; - MS_DAT.rdaddress[] = (MS_Y[3..0],MS_X[3..0]); - MS_DAT.rdclock = CLK42; - MS_DAT.rdclken = VCC; - - IF MOUSE == "NO" GENERATE - MS_POINT = GND; - MS_POINT2 = GND; - ELSE GENERATE - MS_POINT = DFF((MS_PNT & MS_DAT.q0),CLK42,,); - MS_POINT2 = DFF((MS_PNT & MS_DAT.q1),CLK42,,); - END GENERATE; - --- === Sinc-counts GENERATOR ============================================ - --- CT[].clrn = START_UP; - --- (,CTH[5..0].clrn,CT[5].clrn) = !COPY_SINC_H or HOR_PLACE; --- (,CTH[5..0].prn ,CT[5].prn ) = !COPY_SINC_H or !HOR_PLACE; - --- CTV[].clrn = !COPY_SINC_V or VER_PLACE; --- CTV[].prn = !COPY_SINC_V or !VER_PLACE; - - CT[5].clrn = !COPY_SINC_H; - - -- set CTH to 50 (32h) - CTH[0].clrn = !COPY_SINC_H; - CTH[1].prn = !COPY_SINC_H; - CTH[2].clrn = !COPY_SINC_H; - CTH[3].clrn = !COPY_SINC_H; - CTH[4].prn = !COPY_SINC_H; - CTH[5].prn = !COPY_SINC_H; - - -- set CTV to 122h - CTV[0].clrn = !COPY_SINC_V; - CTV[1].prn = !COPY_SINC_V; - CTV[3..2].clrn = !COPY_SINC_V; - - CTV[4].clrn = !COPY_SINC_V; - CTV[5].prn = !COPY_SINC_V; - CTV[7..6].clrn = !COPY_SINC_V; - CTV[8].prn = !COPY_SINC_V; - - CT[5..0].clk = CLK42; - CTH[5..0].clk = CLK42; - CTV[8..0].clk = CLK42; - - CT[2..0].ena = VCC; - - CASE CT[2..0] IS - WHEN 0 => CT[2..0] = 1; - WHEN 1 => CT[2..0] = 2; - WHEN 2 => CT[2..0] = 4; - WHEN 3 => CT[2..0] = 4; - WHEN 4 => CT[2..0] = 5; - WHEN 5 => CT[2..0] = 6; - WHEN 6 => CT[2..0] = 0; - WHEN 7 => CT[2..0] = 0; - END CASE; - - -- for remove sinc jitter --- CT[5..3].ena = DFF(((CT0 & CT2) or (COPY_SINC_H & !CT4)),CLK42,,); - CT[5..3].ena = DFF((CT0 & CT2),CLK42,,); - CT[5..3] = CT[5..3]+1; -% - CASE CT[4..3] IS - WHEN 0 => CT[5..3] = CT[5..3]+1; - WHEN 1 => CT[5..3] = CT[5..3]+1; - WHEN 2 => CT[5..3] = CT[5..3]+1; - WHEN 3 => CT[5..3] = CT[5..3]+1; - END CASE; -% - CTH[].ena = DFF(((CT[5..2] == 15) & CT0),CLK42,,); - CTV[].ena = DFF(((CT[5..2] == 15) & CT0 & (CTH[] == 48)),CLK42,,); - - IF CTH[] == 55 THEN - CTH[] = GND; - ELSE - CTH[] = CTH[] + 1; - END IF; - - IF CTV[] == 319 THEN - CTV[] = GND; - ELSE - CTV[] = CTV[] + 1; - END IF; - - CTF[].clk = CTV8; - CTF[] = CTF[]+1; - --- ==== Video ========================================================== - - ZXS[] = ZX_PORT[5..0]; -- pages ZX Screens - ZX_SCREEN = ZX_PORT6; -- enable ZX Screen write - ZXA15 = ZX_PORT7; -- ZX A15' line - - SCR128 = DIR_PORT0; - --- WR_PIX = LCELL(TSN_W3); - WR_PIX = (TSN_W3); - - DOUBLE.clk = CLK42; DOUBLE.ena = !E_WR; DOUBLE = DOUBLE_CAS; - VXA[].clk = CLK42; VXA[].ena = !E_WR; - - VXD0[].clk = CLK42; VXD0[].ena = !E_WRD; VDO0[] = VXD0[]; - VXD1[].clk = CLK42; VXD1[].ena = !E_WRD; VDO1[] = VXD1[]; - VXD2[].clk = CLK42; VXD2[].ena = !E_WRD; VDO2[] = VXD2[]; - VXD3[].clk = CLK42; VXD3[].ena = !E_WRD; VDO3[] = VXD3[]; - --- VXD0[] = D[]; --- VXD1[] = D[]; --- VXD2[] = D[]; --- VXD3[] = D[]; - - (VXD0[],VXD1[]) = MDI[]; - (VXD2[],VXD3[]) = MDI[]; - - BRD[] = DIR_PORT[7..5]; - - VCM[].clk = CLK42; - TSN_W3.clk = CLK42; - V_CST[].clk = CLK42; - V_WE.clk = CLK42; - V_WET[].clk = CLK42; - VLA[].clk = CLK42; - - SCR_ENA.clk = CLK42; - SCR_ENA.ena = !E_WR; - SCR_ENA.d = !(VAI19 or ZX_SCREEN); - - E_WRD = DFF(E_WR,CLK42,,); - E_WR = LCELL(WR or !(VAI19 or ZX_SCREEN) or !DFF(WR,CLK42,,)); --- E_WR = LCELL(WR or !DFF(WR,CLK42,,)); - --- **************************************************** - -IF MODE == "SPRINTER" GENERATE - --- VAI[19] - switch adress mode 1 - graf mode, 0 - spectrum mode - --- MXWE = DFF(((DFF(E_WR,CLK42,,) or SCR_ENA) & MXWE),CLK42,,V_WE); - MXWE = DFF(MXWE,CLK42,E_WR,V_WE); - - IF VAI[19] THEN - -- in graf mode all 256k(512k) range - VXA[] = VAI[]; - ELSE - -- in spectrum mode 8k/16k range pages - VXA[] = (GND,GND,VAI[7..0],ZXS[4..1],LCELL(ZXS0 xor ZXA15 xor VAI13),VAI[12..8]); - END IF; - --- BORD = DFF((MODE0[7..4] == 15),WR_PIC,,); --- BLANK = DFF((BORD & MODE03 & MODE02),WR_PIC,,); --- INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),WR_PIC,,); - - BORD = DFF((MODE0[7..4] == 15),LWR_COL,,); - BLANK = DFF(((BORD & MODE03 & MODE02) or DIR_PORT4),LWR_COL,,); - INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),LWR_COL,,); - - INTT = DFF(!(INTTX & (CTV[2..0] == 7)),CT5,,); - --- INTT = DFF((INTTX or DFF(INTTX,CT5,,)),CT5,,); --- INTT = DFF(!(BLANK & (CTV[2..0] == 7)),CLK42,,MODE0[0]); - - CASE CT[2..0] IS - WHEN B"110" => VCM[2..0].d = 5; -- 110 -> 101 6 -> 5 - WHEN B"000" => VCM[2..0].d = 1; -- 000 -> 001 0 -> 1 - WHEN B"001" => VCM[2..0].d = 4; -- 001 -> 100 1 -> 4 - WHEN B"010" => VCM[2..0].d = 3; -- 010 -> 011 2 -> 3 - WHEN B"100" => VCM[2..0].d = 2; -- 100 -> 010 4 -> 2 - WHEN B"101" => VCM[2..0].d = 0; -- 101 -> 000 5 -> 0 - END CASE; - - CASE VCM[1..0] IS - WHEN 0 => - VLA[].d = (BRVA[7..0],VCC,VCC,VCC,VCC,VCC,RBRVA[10..8],GND,GND); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - IF VCM2 THEN --- TSN_W3.d = X_MODE5; - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE5); - ELSE - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE_BOND); - END IF; - WHEN 1 => - WR_PIC.d = !VCM2; - WR_COL.d = VCM2; - VLA[].d = SVA[]; - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - WHEN 2 => - VLA[].d = VXA[17..0]; - V_CST[].d = (!VXA18,VXA18) or MXWE; - V_WE.d = MXWE; - V_WEX.d = GND; - V_WET[].d = MXWE or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - WHEN 3 => --- WR_PIC.d = X_MODE5; --- NEW 26.08.2022, fix bug with first column --- it was reproducing when changes mode 320 -> 640, like any 320px screen squares -> text mode squares - WR_PIC.d = MODE0[5]; - VLA[].d = (DIR_PORT3,CTH[5..0],CT5,VCC,VCC,CTV[8..3],GND,GND); - WR_MODE.d = !(CT[5..3] == B"111") & !(CT4 & CT3 & !MODE0[5]); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - END CASE; - --- choose V-RAM komplect - - V_CST1.prn = GND; --- V_CS0.clrn = GND; - V_CST0.prn = (LCELL(DFF(GND,!CLK42,,!V_CST0))); - V_CS1 = VCC; --- V_CS0 = LCELL(V_CST0); - - V_CSX0 = LCELL(!CLK42); - V_CSX1 = LCELL(V_CSX0); - V_CSX2 = LCELL(V_CSX1 & V_CSX0); - V_CSX3 = LCELL(V_CSX2); - --- V_CS0 = V_CSX3; - V_CS0 = GND; - --- ===================== - - SVA[].clk = CLK42; - SVA[9..6] = MODE0[3..0]; --- RSVA[].clk = CLK42; - (SVA[12..10],SVA[5..0]) = RSVA[]; - --- M_CTV[2..0].clk = CLK42; --- M_CT[5..3].clk = CLK42; - M_CTV[2..0] = (!MODE2[2] & CTV[2..0]) or MODE2[2] & (MODE2[1],CTV[2..1]); - M_CT[5..3] = (!MODE2[2] & (CT[5],!CT[4..3])) or MODE2[2] & (MODE2[0],!CT[5..4]); - - CASE (!VCM2,MODE0[4]) IS --- CASE (!VCM1,MODE0[4]) IS - WHEN B"X0" => - -- Graf adress -- - RSVA[] = (M_CTV[2..0],MODE1[2..0],M_CT[5..3]); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = CTV[2..0]; --- SVA[5..0] = (MODE1[2..0],CT5,!CT[4..3]); - WHEN B"01" => - -- ZX-atr adress -- - RSVA[] = (MODE2[2..0],SCR128,VCC,VCC,GND,!MODE0[7..6]); - SVA[17..13] = MODE2[7..3]; - --- SVA[12..10] = MODE2[2..0]; --- SVA[5..0] = (SCR128,VCC,VCC,GND,!MODE0[7..6]); - WHEN B"11" => - -- ZX-pic adress -- - RSVA[] = (MODE1[2..0],SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = MODE1[2..0]; --- SVA[5..0] = (SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - END CASE; - --- X_MODE_BOND = LCELL(LCELL(DCOL[7..4] == 15) & LCELL(DCOL[3..0] == 15) & DFF((MODE0[7] & MODE0[5] & !MODE0[4]),LWR_COL,VCC,VCC)); - X_MODE_BOND = GND; - --- LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); --- LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - LD_PIC = LCELL((MODE0[5] & DFF((CT[5..2] == B"0000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - - --- CASE (DFF(VLA1,!CLK42,,),DFF(VLA0,!CLK42,,)) IS - --- D_PIC0_[].clk = !CLK42; --- D_PIC1_[].clk = !CLK42; --- D_PIC2_[].clk = !CLK42; --- D_PIC3_[].clk = !CLK42; - --- PIC_CLK = LCELL(LCELL(CLK42)); - PIC_CLK = !CLK42; - - D_PIC0_[].clk = PIC_CLK; - D_PIC1_[].clk = PIC_CLK; - D_PIC2_[].clk = PIC_CLK; - D_PIC3_[].clk = PIC_CLK; - - D_PIC0_[] = VDM0[]; - D_PIC1_[] = VDM1[]; - D_PIC2_[] = VDM2[]; - D_PIC3_[] = VDM3[]; - - CASE (DFF(VLA1,CLK42,,),DFF(VLA0,CLK42,,)) IS - WHEN 0 => D_PICX_[] = D_PIC0_[]; - WHEN 1 => D_PICX_[] = D_PIC1_[]; - WHEN 2 => D_PICX_[] = D_PIC2_[]; - WHEN 3 => D_PICX_[] = D_PIC3_[]; - END CASE; - - MODE0[].ena = VCC; - MODE1[].ena = VCC; - MODE2[].ena = VCC; - MODE0[].clk = LWR_MODE; - MODE1[].clk = LWR_MODE; - MODE2[].clk = LWR_MODE; - MODE0[].d = VDM3[]; - MODE1[].d = VDM2[]; - MODE2[].d = VDM1[]; - LWR_MODE = LCELL(LCELL(WR_MODE)); -% - MODE0[].ena = LWR_MODE; - MODE1[].ena = LWR_MODE; - MODE2[].ena = LWR_MODE; - MODE0[].clk = CLK42; - MODE1[].clk = CLK42; - MODE2[].clk = CLK42; - MODE0[].d = D_PIC3_[]; - MODE1[].d = D_PIC2_[]; - MODE2[].d = D_PIC1_[]; - LWR_MODE = DFF(!WR_MODE,CLK42,,); -% - X_MODE7 = DFF(MODE0[7],LWR_COL,,); - X_MODE6 = DFF(MODE0[6],LWR_COL,,); - X_MODE5 = DFF(MODE0[5],LWR_COL,,); - X_MODE4 = DFF(MODE0[4],LWR_COL,,); - - VAO[] = VLA[17..2]; - - WR_PIC.clk = CLK42; - WR_COL.clk = CLK42; - WR_MODE.clk = CLK42; - --- LWR_PIC = LCELL(LCELL(WR_PIC)); --- LWR_COL = LCELL(LCELL(WR_COL)); --- LWR_PIC = LCELL(WR_PIC); --- LWR_COL = LCELL(WR_COL); - LWR_PIC = DFF(WR_PIC,CLK42,,); - LWR_COL = DFF(WR_COL,CLK42,,); - --- D_PIC0[].ena = VCC; --- D_PIC0[].clk = (LWR_PIC); - D_PIC0[].ena = !LWR_PIC; - D_PIC0[].clk = CLK42; - - - - - IF LD_PIC THEN --- D_PIC0[] = D_PIC0_[]; - D_PIC0[] = D_PICX_[]; - ELSE - D_PIC0[] = (D_PIC0[6..0],GND); - END IF; - - --- DCOL[].clk = (LWR_COL); - DCOL[].ena = !LWR_COL; - DCOL[].clk = CLK42; - - IF DFF((MODE0[7..4] == 15),WR_PIC,,) THEN - DCOL[].d = (B"00",BRD[2..0],BRD[2..0]); - ELSE --- DCOL[].d = D_PIC0_[]; - DCOL[].d = D_PICX_[]; - END IF; - - DCOL[].clrn = !BLANK; - - BRVA[].clk = CLK42; - BRVA[].clrn = !MS_POINT; - BRVA[].prn = !MS_POINT2; - --- MODE0[4] - graph / text --- MODE0[5] - 320 / 640 resolution - --- CASE (LCELL(X_MODE4 or X_MODE5),CT2) IS - CASE (DFF((MODE0[4] or MODE0[5]),LWR_COL,,),CT2) IS - WHEN B"1X" => BRVA[7..0] = DCOL[]; - WHEN B"01" => BRVA[7..0] = (B"0000",DCOL[7..4]); - WHEN B"00" => BRVA[7..0] = (B"0000",DCOL[3..0]); - END CASE; - --- BRVA[10..8] = (x_mode4,RBRVA[9..8]); - RBRVA[].clk = CLK42; - - CASE (BORD,X_MODE4) IS - WHEN B"X0" => RBRVA[10..8].d = (GND,X_MODE[7..6]); - WHEN B"X1" => RBRVA[10..8].d = (VCC,(CTF4 & !BLANK),D_PIC0[7]); - END CASE; - - RBRVA[9..8].clrn = !BORD; - RBRVA[10].prn = !BORD; - - CASE (RBRVA[9..8],BRVA7) IS - WHEN 0,1,4,7 => ZX_COL[] = (BRVA[6],BRVA[5..3]); - WHEN 2,3,6,5 => ZX_COL[] = (BRVA[6],BRVA[2..0]); - END CASE; - --- V_WET[].prn = LCELL(DFF(GND,!CLK42,,!V_WE)); --- V_WE.prn = LCELL(DFF(GND,!CLK42,,!V_WE)); - - V_WE_R = DFF(GND,!CLK42,,!V_WE); - V_WE.prn = V_WE_R; - V_WET[].prn = V_WE_R; - --- V_WR[] = LCELL(V_WE) or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - --- V_WR[] = (V_WE) or !( - - V_WEX.clk = CLK42; --- V_WEX.d = V_WE; --- V_WEX.prn = (DFF(GND,CLK42,,!V_WEX)); - - - - - V_WEMMM = LCELL(V_WE); - V_WEMMN = LCELL(V_WEMMM); -- bios ok, fn ok, fnf1 failed, zx almost ok - V_WEMMO = LCELL(V_WEMMN); -- green arts - V_WEMMP = LCELL(V_WEMMO); -- blue + pink arts - V_WEMMR = LCELL(V_WEMMP); -- no F1 issue, but red arts (fix by finger, not enough capacity??) - V_WEMMS = LCELL(V_WEMMR); --- V_WEMMT = LCELL(V_WEMMS); --- V_WEMMU = LCELL(V_WEMMT); --- V_WEMMV = LCELL(V_WEMMU); --- V_WEMMW = LCELL(V_WEMMV); --- V_WEMMX = LCELL(V_WEMMW); --- V_WEMMY = LCELL(V_WEMMX); --- V_WEMMZ = LCELL(V_WEMMY); - - V_WRM = LCELL(V_WE or V_WEMMM); --- V_WRM = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMR); --- V_WRM = LCELL(V_WEMMM or V_WEMMN); --- V_WRM2 = LCELL(V_WEMMM or V_WEMMN); - - V_WEM = (V_WE); --- V_WEM2 = LCELL(V_WE); --- V_WEM = LCELL(V_WEMMM & V_WEMMN); --- V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - - F_WR = DFF(VCC,V_WE,,); - V_EN3 = DFF(!(!VXA1 & (!VXA0 or DOUBLE)), CLK42, F_WR,); - V_EN2 = DFF(!(!VXA1 & (VXA0 or DOUBLE)), CLK42, F_WR,); - V_EN1 = DFF(!(VXA1 & (!VXA0 or DOUBLE)), CLK42, F_WR,); - V_EN0 = DFF(!(VXA1 & (VXA0 or DOUBLE)), CLK42, F_WR,); - - --- V_WR_3 = LCELL(V_WRM or V_EN3); --- V_WR_2 = LCELL(V_WRM or V_EN2); --- V_WR_1 = LCELL(V_WRM or V_EN1); --- V_WR_0 = LCELL(V_WRM or V_EN0); - V_WR_3 = LCELL(LCELL(LCELL(V_WRM or V_EN3))); - V_WR_2 = LCELL(LCELL(LCELL(V_WRM or V_EN2))); - V_WR_1 = LCELL(LCELL(LCELL(V_WRM or V_EN1))); - V_WR_0 = LCELL(LCELL(LCELL(V_WRM or V_EN0))); - - V_WEY3 = LCELL(V_WEM or V_EN3); - V_WEY2 = LCELL(V_WEM or V_EN2); - V_WEY1 = LCELL(V_WEM or V_EN1); - V_WEY0 = LCELL(V_WEM or V_EN0); - - V_WR[] = V_WR_[]; -- V_WR0-3 - V_WEN[] = V_WEY[]; -- VD0-3 - - - - - -% - V_WEMMM = LCELL(V_WE); - V_WEMMN = LCELL(V_WEMMM); - V_WEMMO = LCELL(V_WEMMN); - V_WEMM = LCELL(V_WEMMO); - - V_WRM = LCELL(V_WEMMN & V_WEMMM); - V_WRM2 = LCELL(V_WEMMN & V_WEMMM); - - V_WEM = LCELL(V_WEMMM & V_WEMMO); - V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - - V_EN3 = DFF(!(!VXA1 & (!VXA0 or DOUBLE)),CLK42,F_WR,); - V_EN2 = DFF(!(!VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN1 = DFF(!(VXA1 & (!VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN0 = DFF(!(VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - - F_WR = DFF(VCC,V_WE,,); - - V_WR_3 = V_WRM or V_EN3; - V_WR_2 = V_WRM2 or V_EN2; - V_WR_1 = V_WRM or V_EN1; - V_WR_0 = V_WRM or V_EN0; - - V_WEY3 = V_WEM or V_EN3; - V_WEY2 = V_WEM2 or V_EN2; - V_WEY1 = V_WEM or V_EN1; - V_WEY0 = V_WEM or V_EN0; - - V_WR[] = V_WR_[]; - V_WEN[] = V_WEY[]; -% - - - - - --- CLK84 = LCELL(CLK42 xor CLK84_X); --- CLK84_X = DFF(!CLK84_X,CLK84,,); --- CLK84_Y = CLK84; - -END GENERATE; -- end "sprinter" mode - - -END; diff --git a/src/altera/acex/k30/VIDEO2_T2_51mhz.TDF b/src/altera/acex/k30/VIDEO2_T2_51mhz.TDF deleted file mode 100644 index baba4fa..0000000 --- a/src/altera/acex/k30/VIDEO2_T2_51mhz.TDF +++ /dev/null @@ -1,783 +0,0 @@ - - TITLE "Video-controller"; - -INCLUDE "lpm_ram_dp"; - -PARAMETERS - ( - MODE = "SPRINTER", - MOUSE = "NO", - HOR_PLACE = H"50", - VER_PLACE = H"91" -- 122h/2 - ); - -SUBDESIGN video2 - ( - CLK42 : INPUT; - - CT[5..0] : OUTPUT; - CTH[5..0] : OUTPUT; - CTV[8..0] : OUTPUT; - CTF[6..0] : OUTPUT; - - BLANK : OUTPUT; - - START_UP : INPUT; - COPY_SINC_H : INPUT; - COPY_SINC_V : INPUT; - - WR : INPUT; - - VAI[19..0] : INPUT; -- input screen adress - - VAO[15..0] : OUTPUT; - - D[7..0] : INPUT; - MDI[15..0] : INPUT; - - VDO0[7..0] : OUTPUT; - VDO1[7..0] : OUTPUT; - VDO2[7..0] : OUTPUT; - VDO3[7..0] : OUTPUT; - - VDM0[7..0] : INPUT; - VDM1[7..0] : INPUT; - VDM2[7..0] : INPUT; - VDM3[7..0] : INPUT; - - V_WR[3..0] : OUTPUT; - V_WEN[3..0] : OUTPUT; - - V_CS[1..0] : OUTPUT; - WR_PIX : OUTPUT; - --- ZX_COLOR[3..0] : OUTPUT; - - ZX_PORT[7..0] : INPUT; - DIR_PORT[7..0] : INPUT; - -% - bit0 - Spectrum SCREEN Switch - bit1 - Spectrum Adress MODE - bit2 - Write to Spectrum Screen OFF - bit3 - MODE page 0/1 - bit4 - MODE on/off screen - - bit7..5 - Border -% - - INTT : OUTPUT; - - DOUBLE_CAS : INPUT; - - MOUSE_X[9..0] : INPUT; - MOUSE_Y[9..0] : INPUT; - - - ) -VARIABLE - --- CLK84 : NODE; --- CLK84_X : NODE; --- CLK84_Y : NODE; - - ZX_COLOR[3..0] : NODE; - - CT[5..0] : DFFE; - CTH[5..0] : DFFE; - CTV[8..0] : DFFE; - CTF[6..0] : DFF; - - VXA[19..0] : DFFE; - - VXD0[7..0] : DFFE; - VXD1[7..0] : DFFE; - VXD2[7..0] : DFFE; - VXD3[7..0] : DFFE; - - E_WR : NODE; - E_WRD : NODE; - - BLANK : NODE; - BORD : NODE; --- INTT_T : NODE; - INTTX : NODE; - - VLA[17..0] : DFF; --- SVA[17..0] : NODE; - SVA[17..0] : DFF; --- RSVA[8..0] : LCELL; - RSVA[8..0] : NODE; --- RSVA[8..0] : DFF; - - V_CST[1..0] : DFF; - VCM[2..0] : DFF; - TSN_W3 : DFF; - V_WE : DFF; - V_WEX : DFF; - - V_WEM : NODE; - V_WEM2 : NODE; - V_WRM : NODE; - V_WRM2 : NODE; -% - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; -% - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; - V_WEMMP : NODE; - V_WEMMQ : NODE; - V_WEMMR : NODE; - V_WEMMS : NODE; - V_WEMMT : NODE; - V_WEMMU : NODE; - V_WEMMV : NODE; - V_WEMMW : NODE; - V_WEMMX : NODE; - V_WEMMY : NODE; - V_WEMMZ : NODE; - - - - V_WET[3..0] : DFF; - - D_PIC0[7..0] : DFFE; --- D_PIC0_[7..0] : LCELL; - - D_PIC0_[7..0] : DFFE; - D_PIC1_[7..0] : DFFE; - D_PIC2_[7..0] : DFFE; - D_PIC3_[7..0] : DFFE; - - D_PICX_[7..0] : NODE; - - LWR_PIC : NODE; - LWR_COL : NODE; - - WR_PIC : DFF; - WR_COL : DFF; - LD_PIC : NODE; -MXL: NODE; -MXR: NODE; - - RBRVA[10..8]: DFF; - BRVA[7..0] : DFF; - DCOL[7..0] : DFFE; - - MXWE : NODE; --- MXCE : NODE; - - AX128 : NODE; - - BRD[2..0] : NODE; - - ZX_COL[3..0] : LCELL; - - ZXA15 : NODE; - ZXS[5..0] : NODE; - ZX_SCREEN : NODE; - SCR128 : NODE; - - MODE0[7..0] : DFFE; - MODE1[7..0] : DFFE; - MODE2[7..0] : DFFE; --- MODE3[7..0] : DFF; - - WR_MODE : DFF; - LWR_MODE : NODE; - X_MODE[7..4]: NODE; - X_MODE_BOND : NODE; - --- M_CTV[2..0] : DFF; --- M_CT[5..3] : DFF; - M_CTV[2..0] : LCELL; - M_CT[5..3] : LCELL; - - DOUBLE : DFFE; - - PIC_CLK : NODE; - - MS_X[9..0] : DFF; - MS_Y[9..0] : DFF; - - MS_POINT : NODE; - MS_POINT2 : NODE; - MS_PNT : NODE; - - MS_DAT : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8,LPM_FILE="MOUSE.MIF"); - - SCR_ENA : DFFE; - V_WR_[3..0] : LCELL; - V_WEY[3..0] : LCELL; - - V_WE_R : NODE; - - V_CSX[3..0] : NODE; - - V_EN[3..0] : NODE; - - F_WR : NODE; - -BEGIN - - DEFAULTS - WR_MODE.d = VCC; -- WR_MODE2.d = VCC; -- WR_MODE2X.d = VCC; - V_CST[].d = VCC; V_WR[] = VCC; TSN_W3.d = VCC; - V_WE.d = VCC; WR_COL.d = VCC; WR_PIC.d = VCC; - V_WET[].d = VCC; - END DEFAULTS; - - ZX_COLOR[] = ZX_COL[]; - --- === MOUSE counters ======== - - MS_X[].clk = !CT1; - CASE LCELL(CTH[5..2] == 12) IS - WHEN 0 => MS_X[] = MS_X[] + 1; - WHEN 1 => MS_X[] = (!MOUSE_X[9..0]); - END CASE; - - MS_Y[].clk = !CTH5; - CASE LCELL(CTV8 & !CTV5 & CTV4) IS - WHEN 0 => MS_Y[] = MS_Y[] + 1; - WHEN 1 => MS_Y[] = (GND,!MOUSE_Y[8..0]); - END CASE; - - MS_PNT = DFF(((MS_X[] == B"100000XXXX") & (MS_Y[] == B"100000XXXX")),CLK42,,); - - MS_DAT.wren = GND; - MS_DAT.data[] = GND; - MS_DAT.wraddress[] = GND; - MS_DAT.wrclock = CLK42; - MS_DAT.wrclken = GND; - MS_DAT.rden = VCC; - MS_DAT.rdaddress[] = (MS_Y[3..0],MS_X[3..0]); - MS_DAT.rdclock = CLK42; - MS_DAT.rdclken = VCC; - - IF MOUSE == "NO" GENERATE - MS_POINT = GND; - MS_POINT2 = GND; - ELSE GENERATE - MS_POINT = DFF((MS_PNT & MS_DAT.q0),CLK42,,); - MS_POINT2 = DFF((MS_PNT & MS_DAT.q1),CLK42,,); - END GENERATE; - --- === Sinc-counts GENERATOR ============================================ - --- CT[].clrn = START_UP; - --- (,CTH[5..0].clrn,CT[5].clrn) = !COPY_SINC_H or HOR_PLACE; --- (,CTH[5..0].prn ,CT[5].prn ) = !COPY_SINC_H or !HOR_PLACE; - --- CTV[].clrn = !COPY_SINC_V or VER_PLACE; --- CTV[].prn = !COPY_SINC_V or !VER_PLACE; - - CT[5].clrn = !COPY_SINC_H; - - -- set CTH to 50 (32h) - CTH[0].clrn = !COPY_SINC_H; - CTH[1].prn = !COPY_SINC_H; - CTH[2].clrn = !COPY_SINC_H; - CTH[3].clrn = !COPY_SINC_H; - CTH[4].prn = !COPY_SINC_H; - CTH[5].prn = !COPY_SINC_H; - - -- set CTV to 122h - CTV[0].clrn = !COPY_SINC_V; - CTV[1].prn = !COPY_SINC_V; - CTV[3..2].clrn = !COPY_SINC_V; - - CTV[4].clrn = !COPY_SINC_V; - CTV[5].prn = !COPY_SINC_V; - CTV[7..6].clrn = !COPY_SINC_V; - CTV[8].prn = !COPY_SINC_V; - - CT[5..0].clk = CLK42; - CTH[5..0].clk = CLK42; - CTV[8..0].clk = CLK42; - - CT[2..0].ena = VCC; - - CASE CT[2..0] IS - WHEN 0 => CT[2..0] = 1; - WHEN 1 => CT[2..0] = 2; - WHEN 2 => CT[2..0] = 4; - WHEN 3 => CT[2..0] = 4; - WHEN 4 => CT[2..0] = 5; - WHEN 5 => CT[2..0] = 6; - WHEN 6 => CT[2..0] = 0; - WHEN 7 => CT[2..0] = 0; - END CASE; - - -- for remove sinc jitter --- CT[5..3].ena = DFF(((CT0 & CT2) or (COPY_SINC_H & !CT4)),CLK42,,); - CT[5..3].ena = DFF((CT0 & CT2),CLK42,,); - CT[5..3] = CT[5..3]+1; -% - CASE CT[4..3] IS - WHEN 0 => CT[5..3] = CT[5..3]+1; - WHEN 1 => CT[5..3] = CT[5..3]+1; - WHEN 2 => CT[5..3] = CT[5..3]+1; - WHEN 3 => CT[5..3] = CT[5..3]+1; - END CASE; -% - CTH[].ena = DFF(((CT[5..2] == 15) & CT0),CLK42,,); - CTV[].ena = DFF(((CT[5..2] == 15) & CT0 & (CTH[] == 48)),CLK42,,); - - IF CTH[] == 55 THEN - CTH[] = GND; - ELSE - CTH[] = CTH[] + 1; - END IF; - - IF CTV[] == 319 THEN - CTV[] = GND; - ELSE - CTV[] = CTV[] + 1; - END IF; - - CTF[].clk = CTV8; - CTF[] = CTF[]+1; - --- ==== Video ========================================================== - - ZXS[] = ZX_PORT[5..0]; -- pages ZX Screens - ZX_SCREEN = ZX_PORT6; -- enable ZX Screen write - ZXA15 = ZX_PORT7; -- ZX A15' line - - SCR128 = DIR_PORT0; - --- WR_PIX = LCELL(TSN_W3); - WR_PIX = TSN_W3; - - DOUBLE.clk = CLK42; DOUBLE.ena = !E_WR; DOUBLE = DOUBLE_CAS; - VXA[].clk = CLK42; VXA[].ena = !E_WR; - - VXD0[].clk = CLK42; VXD0[].ena = !E_WRD; VDO0[] = VXD0[]; - VXD1[].clk = CLK42; VXD1[].ena = !E_WRD; VDO1[] = VXD1[]; - VXD2[].clk = CLK42; VXD2[].ena = !E_WRD; VDO2[] = VXD2[]; - VXD3[].clk = CLK42; VXD3[].ena = !E_WRD; VDO3[] = VXD3[]; - --- VXD0[] = D[]; --- VXD1[] = D[]; --- VXD2[] = D[]; --- VXD3[] = D[]; - - (VXD0[],VXD1[]) = MDI[]; - (VXD2[],VXD3[]) = MDI[]; - - BRD[] = DIR_PORT[7..5]; - - VCM[].clk = CLK42; - TSN_W3.clk = CLK42; - V_CST[].clk = CLK42; - V_WE.clk = CLK42; - V_WET[].clk = CLK42; - VLA[].clk = CLK42; - - SCR_ENA.clk = CLK42; - SCR_ENA.ena = !E_WR; - SCR_ENA.d = !(VAI19 or ZX_SCREEN); - - E_WRD = DFF(E_WR,CLK42,,); - E_WR = LCELL(WR or !(VAI19 or ZX_SCREEN) or !DFF(WR,CLK42,,)); --- E_WR = LCELL(WR or !DFF(WR,CLK42,,)); - --- **************************************************** - -IF MODE == "SPRINTER" GENERATE - --- VAI[19] - switch adress mode 1 - graf mode, 0 - spectrum mode - --- MXWE = DFF(((DFF(E_WR,CLK42,,) or SCR_ENA) & MXWE),CLK42,,V_WE); - MXWE = DFF(MXWE,CLK42,E_WR,V_WE); - - IF VAI[19] THEN - -- in graf mode all 256k(512k) range - VXA[] = VAI[]; - ELSE - -- in spectrum mode 8k/16k range pages - VXA[] = (GND,GND,VAI[7..0],ZXS[4..1],LCELL(ZXS0 xor ZXA15 xor VAI13),VAI[12..8]); - END IF; - --- BORD = DFF((MODE0[7..4] == 15),WR_PIC,,); --- BLANK = DFF((BORD & MODE03 & MODE02),WR_PIC,,); --- INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),WR_PIC,,); - - BORD = DFF((MODE0[7..4] == 15),LWR_COL,,); - BLANK = DFF(((BORD & MODE03 & MODE02) or DIR_PORT4),LWR_COL,,); - INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),LWR_COL,,); - - INTT = DFF(!(INTTX & (CTV[2..0] == 7)),CT5,,); - --- INTT = DFF((INTTX or DFF(INTTX,CT5,,)),CT5,,); --- INTT = DFF(!(BLANK & (CTV[2..0] == 7)),CLK42,,MODE0[0]); - - CASE CT[2..0] IS - WHEN B"110" => VCM[2..0].d = 5; -- 110 -> 101 6 -> 5 - WHEN B"000" => VCM[2..0].d = 1; -- 000 -> 001 0 -> 1 - WHEN B"001" => VCM[2..0].d = 4; -- 001 -> 100 1 -> 4 - WHEN B"010" => VCM[2..0].d = 3; -- 010 -> 011 2 -> 3 - WHEN B"100" => VCM[2..0].d = 2; -- 100 -> 010 4 -> 2 - WHEN B"101" => VCM[2..0].d = 0; -- 101 -> 000 5 -> 0 - END CASE; - - CASE VCM[1..0] IS - WHEN 0 => - VLA[].d = (BRVA[7..0],VCC,VCC,VCC,VCC,VCC,RBRVA[10..8],GND,GND); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - -TSN_W3.d = X_MODE_BOND; -% - IF VCM2 THEN --- TSN_W3.d = X_MODE5; - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE5); - ELSE - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE_BOND); - END IF; -% - - WHEN 1 => - WR_PIC.d = !VCM2; - WR_COL.d = VCM2; - VLA[].d = SVA[]; - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - WHEN 2 => - VLA[].d = VXA[17..0]; - V_CST[].d = (!VXA18,VXA18) or MXWE; - V_WE.d = MXWE; - V_WEX.d = GND; - V_WET[].d = MXWE or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - WHEN 3 => --- WR_PIC.d = X_MODE5; --- NEW 26.08.2022, fix bug with first column --- it was reproducing when changes mode 320 -> 640, like any 320px screen squares -> text mode squares - WR_PIC.d = MODE0[5]; - VLA[].d = (DIR_PORT3,CTH[5..0],CT5,VCC,VCC,CTV[8..3],GND,GND); - WR_MODE.d = !(CT[5..3] == B"111") & !(CT4 & CT3 & !MODE0[5]); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - END CASE; - --- choose V-RAM komplect - - V_CST1.prn = GND; --- V_CS0.clrn = GND; - V_CST0.prn = (LCELL(DFF(GND,!CLK42,,!V_CST0))); - V_CS1 = VCC; --- V_CS0 = LCELL(V_CST0); - - V_CSX0 = LCELL(!CLK42); - V_CSX1 = LCELL(V_CSX0); - V_CSX2 = LCELL(V_CSX1 & V_CSX0); - V_CSX3 = LCELL(V_CSX2); - --- V_CS0 = V_CSX3; - V_CS0 = GND; - --- ===================== - - SVA[].clk = CLK42; - SVA[9..6] = MODE0[3..0]; --- RSVA[].clk = CLK42; - (SVA[12..10],SVA[5..0]) = RSVA[]; - --- M_CTV[2..0].clk = CLK42; --- M_CT[5..3].clk = CLK42; - M_CTV[2..0] = (!MODE2[2] & CTV[2..0]) or MODE2[2] & (MODE2[1],CTV[2..1]); - M_CT[5..3] = (!MODE2[2] & (CT[5],!CT[4..3])) or MODE2[2] & (MODE2[0],!CT[5..4]); - - CASE (!VCM2,MODE0[4]) IS --- CASE (!VCM1,MODE0[4]) IS - WHEN B"X0" => - -- Graf adress -- - RSVA[] = (M_CTV[2..0],MODE1[2..0],M_CT[5..3]); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = CTV[2..0]; --- SVA[5..0] = (MODE1[2..0],CT5,!CT[4..3]); - WHEN B"01" => - -- ZX-atr adress -- - RSVA[] = (MODE2[2..0],SCR128,VCC,VCC,GND,!MODE0[7..6]); - SVA[17..13] = MODE2[7..3]; - --- SVA[12..10] = MODE2[2..0]; --- SVA[5..0] = (SCR128,VCC,VCC,GND,!MODE0[7..6]); - WHEN B"11" => - -- ZX-pic adress -- - RSVA[] = (MODE1[2..0],SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = MODE1[2..0]; --- SVA[5..0] = (SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - END CASE; - --- X_MODE_BOND = LCELL(LCELL(DCOL[7..4] == 15) & LCELL(DCOL[3..0] == 15) & DFF((MODE0[7] & MODE0[5] & !MODE0[4]),LWR_COL,VCC,VCC)); - X_MODE_BOND = GND; - --- LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - - --- CASE (DFF(VLA1,!CLK42,,),DFF(VLA0,!CLK42,,)) IS - --- D_PIC0_[].clk = !CLK42; --- D_PIC1_[].clk = !CLK42; --- D_PIC2_[].clk = !CLK42; --- D_PIC3_[].clk = !CLK42; - --- PIC_CLK = LCELL(LCELL(CLK42)); - PIC_CLK = !CLK42; - - D_PIC0_[].clk = PIC_CLK; - D_PIC1_[].clk = PIC_CLK; - D_PIC2_[].clk = PIC_CLK; - D_PIC3_[].clk = PIC_CLK; - - D_PIC0_[] = VDM0[]; - D_PIC1_[] = VDM1[]; - D_PIC2_[] = VDM2[]; - D_PIC3_[] = VDM3[]; - - CASE (DFF(VLA1,CLK42,,),DFF(VLA0,CLK42,,)) IS - WHEN 0 => D_PICX_[] = D_PIC0_[]; - WHEN 1 => D_PICX_[] = D_PIC1_[]; - WHEN 2 => D_PICX_[] = D_PIC2_[]; - WHEN 3 => D_PICX_[] = D_PIC3_[]; - END CASE; - - MODE0[].ena = VCC; - MODE1[].ena = VCC; - MODE2[].ena = VCC; - MODE0[].clk = LWR_MODE; - MODE1[].clk = LWR_MODE; - MODE2[].clk = LWR_MODE; - MODE0[].d = VDM3[]; - MODE1[].d = VDM2[]; - MODE2[].d = VDM1[]; - LWR_MODE = LCELL(LCELL(WR_MODE)); -% - MODE0[].ena = LWR_MODE; - MODE1[].ena = LWR_MODE; - MODE2[].ena = LWR_MODE; - MODE0[].clk = CLK42; - MODE1[].clk = CLK42; - MODE2[].clk = CLK42; - MODE0[].d = D_PIC3_[]; - MODE1[].d = D_PIC2_[]; - MODE2[].d = D_PIC1_[]; - LWR_MODE = DFF(!WR_MODE,CLK42,,); -% - X_MODE7 = DFF(MODE0[7],LWR_COL,,); - X_MODE6 = DFF(MODE0[6],LWR_COL,,); - X_MODE5 = DFF(MODE0[5],LWR_COL,,); - X_MODE4 = DFF(MODE0[4],LWR_COL,,); - - VAO[] = VLA[17..2]; - - WR_PIC.clk = CLK42; - WR_COL.clk = CLK42; - WR_MODE.clk = CLK42; - --- LWR_PIC = LCELL(LCELL(WR_PIC)); --- LWR_COL = LCELL(LCELL(WR_COL)); --- LWR_PIC = LCELL(WR_PIC); --- LWR_COL = LCELL(WR_COL); - LWR_PIC = DFF(WR_PIC,CLK42,,); - LWR_COL = DFF(WR_COL,CLK42,,); - --- D_PIC0[].ena = VCC; --- D_PIC0[].clk = (LWR_PIC); - D_PIC0[].ena = !LWR_PIC; - D_PIC0[].clk = CLK42; - - - - - IF LD_PIC THEN --- D_PIC0[] = D_PIC0_[]; - D_PIC0[] = D_PICX_[]; - ELSE - D_PIC0[] = (D_PIC0[6..0],GND); - END IF; - - --- DCOL[].clk = (LWR_COL); - DCOL[].ena = !LWR_COL; - DCOL[].clk = CLK42; - - IF DFF((MODE0[7..4] == 15),WR_PIC,,) THEN - DCOL[].d = (B"00",BRD[2..0],BRD[2..0]); - ELSE --- DCOL[].d = D_PIC0_[]; - DCOL[].d = D_PICX_[]; - END IF; - - DCOL[].clrn = !BLANK; - - BRVA[].clk = CLK42; - BRVA[].clrn = !MS_POINT; - BRVA[].prn = !MS_POINT2; - --- MODE0[4] - graph / text --- MODE0[5] - 320 / 640 resolution - --- CASE (LCELL(X_MODE4 or X_MODE5),CT2) IS - CASE (DFF((MODE0[4] or MODE0[5]),LWR_COL,,),CT2) IS - WHEN B"1X" => BRVA[7..0] = DCOL[]; - WHEN B"01" => BRVA[7..0] = (B"0000",DCOL[7..4]); - WHEN B"00" => BRVA[7..0] = (B"0000",DCOL[3..0]); - END CASE; - --- BRVA[10..8] = (x_mode4,RBRVA[9..8]); - RBRVA[].clk = CLK42; - - CASE (BORD,X_MODE4) IS - WHEN B"X0" => RBRVA[10..8].d = (GND,X_MODE[7..6]); - WHEN B"X1" => RBRVA[10..8].d = (VCC,(CTF4 & !BLANK),D_PIC0[7]); - END CASE; - - RBRVA[9..8].clrn = !BORD; - RBRVA[10].prn = !BORD; - - CASE (RBRVA[9..8],BRVA7) IS - WHEN 0,1,4,7 => ZX_COL[] = (BRVA[6],BRVA[5..3]); - WHEN 2,3,6,5 => ZX_COL[] = (BRVA[6],BRVA[2..0]); - END CASE; - --- V_WET[].prn = LCELL(DFF(GND,!CLK42,,!V_WE)); --- V_WE.prn = LCELL(DFF(GND,!CLK42,,!V_WE)); - - V_WE_R = DFF(GND,!CLK42,,!V_WE); - V_WE.prn = V_WE_R; - V_WET[].prn = V_WE_R; - --- V_WR[] = LCELL(V_WE) or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - --- V_WR[] = (V_WE) or !( - - V_WEX.clk = CLK42; --- V_WEX.d = V_WE; --- V_WEX.prn = (DFF(GND,CLK42,,!V_WEX)); - - - - - V_WEMMM = LCELL(V_WE); --- V_WEMMN = LCELL(V_WEMMM); -- bios ok, fn ok, fnf1 failed, zx almost ok --- V_WEMMO = LCELL(V_WEMMN); -- green arts --- V_WEMMP = LCELL(V_WEMMO); -- blue + pink arts --- V_WEMMR = LCELL(V_WEMMP); -- no F1 issue, but red arts (fix by finger, not enough capacity??) --- V_WEMMS = LCELL(V_WEMMR); --- V_WEMMT = LCELL(V_WEMMS); --- V_WEMMU = LCELL(V_WEMMT); --- V_WEMMV = LCELL(V_WEMMU); --- V_WEMMW = LCELL(V_WEMMV); --- V_WEMMX = LCELL(V_WEMMW); --- V_WEMMY = LCELL(V_WEMMX); --- V_WEMMZ = LCELL(V_WEMMY); - - V_WRM = LCELL(V_WE or V_WEMMM); - - --- V_WRM = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMR); --- V_WRM = LCELL(V_WEMMM or V_WEMMN); --- V_WRM2 = LCELL(V_WEMMM or V_WEMMN); - - V_WEM = (V_WE); - --- V_WEM2 = LCELL(V_WE); --- V_WEM = LCELL(V_WEMMM & V_WEMMN); --- V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - ---- LWR_COL = DFF(WR_COL,CLK42,,); - F_WR = (LCELL(LCELL(LCELL(LCELL(DFF(VCC,V_WE,,)))))); ---- F_WR = DFF(V_WE,CLK42,,); - V_WEMMZ = LCELL(CLK42); - V_EN3 = (DFF(!(!VXA1 & LCELL(!VXA0 or DOUBLE)), V_WEMMZ, F_WR,)); - V_EN2 = (DFF(!(!VXA1 & LCELL(VXA0 or DOUBLE)), V_WEMMZ, F_WR,)); - V_EN1 = (DFF(!(VXA1 & LCELL(!VXA0 or DOUBLE)), V_WEMMZ, F_WR,)); - V_EN0 = (DFF(!(VXA1 & LCELL(VXA0 or DOUBLE)), V_WEMMZ, F_WR,)); - - --- V_WR_3 = LCELL(V_WRM or V_EN3); --- V_WR_2 = LCELL(V_WRM or V_EN2); --- V_WR_1 = LCELL(V_WRM or V_EN1); --- V_WR_0 = LCELL(V_WRM or V_EN0); - V_WR_3 = LCELL(LCELL(LCELL(LCELL(V_WE or V_EN3)))); - V_WR_2 = LCELL(LCELL(LCELL(LCELL(V_WE or V_EN2)))); - V_WR_1 = LCELL(LCELL(LCELL(LCELL(V_WE or V_EN1)))); - V_WR_0 = LCELL(LCELL(LCELL(LCELL(V_WE or V_EN0)))); - - V_WEY3 = LCELL(V_WE or V_EN3); - V_WEY2 = LCELL(V_WE or V_EN2); - V_WEY1 = LCELL(V_WE or V_EN1); - V_WEY0 = LCELL(V_WE or V_EN0); - - V_WR[] = V_WR_[]; -- V_WR0-3 - V_WEN[] = V_WEY[]; -- VD0-3 - - - - - -% - V_WEMMM = LCELL(V_WE); - V_WEMMN = LCELL(V_WEMMM); - V_WEMMO = LCELL(V_WEMMN); - V_WEMM = LCELL(V_WEMMO); - - V_WRM = LCELL(V_WEMMN & V_WEMMM); - V_WRM2 = LCELL(V_WEMMN & V_WEMMM); - - V_WEM = LCELL(V_WEMMM & V_WEMMO); - V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - - V_EN3 = DFF(!(!VXA1 & (!VXA0 or DOUBLE)),CLK42,F_WR,); - V_EN2 = DFF(!(!VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN1 = DFF(!(VXA1 & (!VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN0 = DFF(!(VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - - F_WR = DFF(VCC,V_WE,,); - - V_WR_3 = V_WRM or V_EN3; - V_WR_2 = V_WRM2 or V_EN2; - V_WR_1 = V_WRM or V_EN1; - V_WR_0 = V_WRM or V_EN0; - - V_WEY3 = V_WEM or V_EN3; - V_WEY2 = V_WEM2 or V_EN2; - V_WEY1 = V_WEM or V_EN1; - V_WEY0 = V_WEM or V_EN0; - - V_WR[] = V_WR_[]; - V_WEN[] = V_WEY[]; -% - - - - - --- CLK84 = LCELL(CLK42 xor CLK84_X); --- CLK84_X = DFF(!CLK84_X,CLK84,,); --- CLK84_Y = CLK84; - -END GENERATE; -- end "sprinter" mode - - -END; diff --git a/src/altera/acex/k30/VIDEO2_T2_dip_stable.TDF b/src/altera/acex/k30/VIDEO2_T2_dip_stable.TDF deleted file mode 100644 index ea1e862..0000000 --- a/src/altera/acex/k30/VIDEO2_T2_dip_stable.TDF +++ /dev/null @@ -1,783 +0,0 @@ - - TITLE "Video-controller"; - -INCLUDE "lpm_ram_dp"; - -PARAMETERS - ( - MODE = "SPRINTER", - MOUSE = "NO", - HOR_PLACE = H"50", - VER_PLACE = H"91" -- 122h/2 - ); - -SUBDESIGN video2 - ( - CLK42 : INPUT; - - CT[5..0] : OUTPUT; - CTH[5..0] : OUTPUT; - CTV[8..0] : OUTPUT; - CTF[6..0] : OUTPUT; - - BLANK : OUTPUT; - - START_UP : INPUT; - COPY_SINC_H : INPUT; - COPY_SINC_V : INPUT; - - WR : INPUT; - - VAI[19..0] : INPUT; -- input screen adress - - VAO[15..0] : OUTPUT; - - D[7..0] : INPUT; - MDI[15..0] : INPUT; - - VDO0[7..0] : OUTPUT; - VDO1[7..0] : OUTPUT; - VDO2[7..0] : OUTPUT; - VDO3[7..0] : OUTPUT; - - VDM0[7..0] : INPUT; - VDM1[7..0] : INPUT; - VDM2[7..0] : INPUT; - VDM3[7..0] : INPUT; - - V_WR[3..0] : OUTPUT; - V_WEN[3..0] : OUTPUT; - - V_CS[1..0] : OUTPUT; - WR_PIX : OUTPUT; - --- ZX_COLOR[3..0] : OUTPUT; - - ZX_PORT[7..0] : INPUT; - DIR_PORT[7..0] : INPUT; - -% - bit0 - Spectrum SCREEN Switch - bit1 - Spectrum Adress MODE - bit2 - Write to Spectrum Screen OFF - bit3 - MODE page 0/1 - bit4 - MODE on/off screen - - bit7..5 - Border -% - - INTT : OUTPUT; - - DOUBLE_CAS : INPUT; - - MOUSE_X[9..0] : INPUT; - MOUSE_Y[9..0] : INPUT; - - - ) -VARIABLE - --- CLK84 : NODE; --- CLK84_X : NODE; --- CLK84_Y : NODE; - - ZX_COLOR[3..0] : NODE; - - CT[5..0] : DFFE; - CTH[5..0] : DFFE; - CTV[8..0] : DFFE; - CTF[6..0] : DFF; - - VXA[19..0] : DFFE; - - VXD0[7..0] : DFFE; - VXD1[7..0] : DFFE; - VXD2[7..0] : DFFE; - VXD3[7..0] : DFFE; - - E_WR : NODE; - E_WRD : NODE; - - BLANK : NODE; - BORD : NODE; --- INTT_T : NODE; - INTTX : NODE; - - VLA[17..0] : DFF; --- SVA[17..0] : NODE; - SVA[17..0] : DFF; --- RSVA[8..0] : LCELL; - RSVA[8..0] : NODE; --- RSVA[8..0] : DFF; - - V_CST[1..0] : DFF; - VCM[2..0] : DFF; - TSN_W3 : DFF; - V_WE : DFF; - V_WEX : DFF; - - V_WEM : NODE; - V_WEM2 : NODE; - V_WRM : NODE; - V_WRM2 : NODE; -% - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; -% - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; - V_WEMMP : NODE; - V_WEMMQ : NODE; - V_WEMMR : NODE; - V_WEMMS : NODE; - V_WEMMT : NODE; - V_WEMMU : NODE; - V_WEMMV : NODE; - V_WEMMW : NODE; - V_WEMMX : NODE; - V_WEMMY : NODE; - V_WEMMZ : NODE; - - - - V_WET[3..0] : DFF; - - D_PIC0[7..0] : DFFE; --- D_PIC0_[7..0] : LCELL; - - D_PIC0_[7..0] : DFFE; - D_PIC1_[7..0] : DFFE; - D_PIC2_[7..0] : DFFE; - D_PIC3_[7..0] : DFFE; - - D_PICX_[7..0] : NODE; - - LWR_PIC : NODE; - LWR_COL : NODE; - - WR_PIC : DFF; - WR_COL : DFF; - LD_PIC : NODE; -MXL: NODE; -MXR: NODE; - - RBRVA[10..8]: DFF; - BRVA[7..0] : DFF; - DCOL[7..0] : DFFE; - - MXWE : NODE; --- MXCE : NODE; - - AX128 : NODE; - - BRD[2..0] : NODE; - - ZX_COL[3..0] : LCELL; - - ZXA15 : NODE; - ZXS[5..0] : NODE; - ZX_SCREEN : NODE; - SCR128 : NODE; - - MODE0[7..0] : DFFE; - MODE1[7..0] : DFFE; - MODE2[7..0] : DFFE; --- MODE3[7..0] : DFF; - - WR_MODE : DFF; - LWR_MODE : NODE; - X_MODE[7..4]: NODE; - X_MODE_BOND : NODE; - --- M_CTV[2..0] : DFF; --- M_CT[5..3] : DFF; - M_CTV[2..0] : LCELL; - M_CT[5..3] : LCELL; - - DOUBLE : DFFE; - - PIC_CLK : NODE; - - MS_X[9..0] : DFF; - MS_Y[9..0] : DFF; - - MS_POINT : NODE; - MS_POINT2 : NODE; - MS_PNT : NODE; - - MS_DAT : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8,LPM_FILE="MOUSE.MIF"); - - SCR_ENA : DFFE; - V_WR_[3..0] : LCELL; - V_WEY[3..0] : LCELL; - - V_WE_R : NODE; - - V_CSX[3..0] : NODE; - - V_EN[3..0] : NODE; - - F_WR : NODE; - -BEGIN - - DEFAULTS - WR_MODE.d = VCC; -- WR_MODE2.d = VCC; -- WR_MODE2X.d = VCC; - V_CST[].d = VCC; V_WR[] = VCC; TSN_W3.d = VCC; - V_WE.d = VCC; WR_COL.d = VCC; WR_PIC.d = VCC; - V_WET[].d = VCC; - END DEFAULTS; - - ZX_COLOR[] = ZX_COL[]; - --- === MOUSE counters ======== - - MS_X[].clk = !CT1; - CASE LCELL(CTH[5..2] == 12) IS - WHEN 0 => MS_X[] = MS_X[] + 1; - WHEN 1 => MS_X[] = (!MOUSE_X[9..0]); - END CASE; - - MS_Y[].clk = !CTH5; - CASE LCELL(CTV8 & !CTV5 & CTV4) IS - WHEN 0 => MS_Y[] = MS_Y[] + 1; - WHEN 1 => MS_Y[] = (GND,!MOUSE_Y[8..0]); - END CASE; - - MS_PNT = DFF(((MS_X[] == B"100000XXXX") & (MS_Y[] == B"100000XXXX")),CLK42,,); - - MS_DAT.wren = GND; - MS_DAT.data[] = GND; - MS_DAT.wraddress[] = GND; - MS_DAT.wrclock = CLK42; - MS_DAT.wrclken = GND; - MS_DAT.rden = VCC; - MS_DAT.rdaddress[] = (MS_Y[3..0],MS_X[3..0]); - MS_DAT.rdclock = CLK42; - MS_DAT.rdclken = VCC; - - IF MOUSE == "NO" GENERATE - MS_POINT = GND; - MS_POINT2 = GND; - ELSE GENERATE - MS_POINT = DFF((MS_PNT & MS_DAT.q0),CLK42,,); - MS_POINT2 = DFF((MS_PNT & MS_DAT.q1),CLK42,,); - END GENERATE; - --- === Sinc-counts GENERATOR ============================================ - --- CT[].clrn = START_UP; - --- (,CTH[5..0].clrn,CT[5].clrn) = !COPY_SINC_H or HOR_PLACE; --- (,CTH[5..0].prn ,CT[5].prn ) = !COPY_SINC_H or !HOR_PLACE; - --- CTV[].clrn = !COPY_SINC_V or VER_PLACE; --- CTV[].prn = !COPY_SINC_V or !VER_PLACE; - - CT[5].clrn = !COPY_SINC_H; - - -- set CTH to 50 (32h) - CTH[0].clrn = !COPY_SINC_H; - CTH[1].prn = !COPY_SINC_H; - CTH[2].clrn = !COPY_SINC_H; - CTH[3].clrn = !COPY_SINC_H; - CTH[4].prn = !COPY_SINC_H; - CTH[5].prn = !COPY_SINC_H; - - -- set CTV to 122h - CTV[0].clrn = !COPY_SINC_V; - CTV[1].prn = !COPY_SINC_V; - CTV[3..2].clrn = !COPY_SINC_V; - - CTV[4].clrn = !COPY_SINC_V; - CTV[5].prn = !COPY_SINC_V; - CTV[7..6].clrn = !COPY_SINC_V; - CTV[8].prn = !COPY_SINC_V; - - CT[5..0].clk = CLK42; - CTH[5..0].clk = CLK42; - CTV[8..0].clk = CLK42; - - CT[2..0].ena = VCC; - - CASE CT[2..0] IS - WHEN 0 => CT[2..0] = 1; - WHEN 1 => CT[2..0] = 2; - WHEN 2 => CT[2..0] = 4; - WHEN 3 => CT[2..0] = 4; - WHEN 4 => CT[2..0] = 5; - WHEN 5 => CT[2..0] = 6; - WHEN 6 => CT[2..0] = 0; - WHEN 7 => CT[2..0] = 0; - END CASE; - - -- for remove sinc jitter --- CT[5..3].ena = DFF(((CT0 & CT2) or (COPY_SINC_H & !CT4)),CLK42,,); - CT[5..3].ena = DFF((CT0 & CT2),CLK42,,); - CT[5..3] = CT[5..3]+1; -% - CASE CT[4..3] IS - WHEN 0 => CT[5..3] = CT[5..3]+1; - WHEN 1 => CT[5..3] = CT[5..3]+1; - WHEN 2 => CT[5..3] = CT[5..3]+1; - WHEN 3 => CT[5..3] = CT[5..3]+1; - END CASE; -% - CTH[].ena = DFF(((CT[5..2] == 15) & CT0),CLK42,,); - CTV[].ena = DFF(((CT[5..2] == 15) & CT0 & (CTH[] == 48)),CLK42,,); - - IF CTH[] == 55 THEN - CTH[] = GND; - ELSE - CTH[] = CTH[] + 1; - END IF; - - IF CTV[] == 319 THEN - CTV[] = GND; - ELSE - CTV[] = CTV[] + 1; - END IF; - - CTF[].clk = CTV8; - CTF[] = CTF[]+1; - --- ==== Video ========================================================== - - ZXS[] = ZX_PORT[5..0]; -- pages ZX Screens - ZX_SCREEN = ZX_PORT6; -- enable ZX Screen write - ZXA15 = ZX_PORT7; -- ZX A15' line - - SCR128 = DIR_PORT0; - --- WR_PIX = LCELL(TSN_W3); - WR_PIX = TSN_W3; - - DOUBLE.clk = CLK42; DOUBLE.ena = !E_WR; DOUBLE = DOUBLE_CAS; - VXA[].clk = CLK42; VXA[].ena = !E_WR; - - VXD0[].clk = CLK42; VXD0[].ena = !E_WRD; VDO0[] = VXD0[]; - VXD1[].clk = CLK42; VXD1[].ena = !E_WRD; VDO1[] = VXD1[]; - VXD2[].clk = CLK42; VXD2[].ena = !E_WRD; VDO2[] = VXD2[]; - VXD3[].clk = CLK42; VXD3[].ena = !E_WRD; VDO3[] = VXD3[]; - --- VXD0[] = D[]; --- VXD1[] = D[]; --- VXD2[] = D[]; --- VXD3[] = D[]; - - (VXD0[],VXD1[]) = MDI[]; - (VXD2[],VXD3[]) = MDI[]; - - BRD[] = DIR_PORT[7..5]; - - VCM[].clk = CLK42; - TSN_W3.clk = CLK42; - V_CST[].clk = CLK42; - V_WE.clk = CLK42; - V_WET[].clk = CLK42; - VLA[].clk = CLK42; - - SCR_ENA.clk = CLK42; - SCR_ENA.ena = !E_WR; - SCR_ENA.d = !(VAI19 or ZX_SCREEN); - - E_WRD = DFF(E_WR,CLK42,,); - E_WR = LCELL(WR or !(VAI19 or ZX_SCREEN) or !DFF(WR,CLK42,,)); --- E_WR = LCELL(WR or !DFF(WR,CLK42,,)); - --- **************************************************** - -IF MODE == "SPRINTER" GENERATE - --- VAI[19] - switch adress mode 1 - graf mode, 0 - spectrum mode - --- MXWE = DFF(((DFF(E_WR,CLK42,,) or SCR_ENA) & MXWE),CLK42,,V_WE); - MXWE = DFF(MXWE,CLK42,E_WR,V_WE); - - IF VAI[19] THEN - -- in graf mode all 256k(512k) range - VXA[] = VAI[]; - ELSE - -- in spectrum mode 8k/16k range pages - VXA[] = (GND,GND,VAI[7..0],ZXS[4..1],LCELL(ZXS0 xor ZXA15 xor VAI13),VAI[12..8]); - END IF; - --- BORD = DFF((MODE0[7..4] == 15),WR_PIC,,); --- BLANK = DFF((BORD & MODE03 & MODE02),WR_PIC,,); --- INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),WR_PIC,,); - - BORD = DFF((MODE0[7..4] == 15),LWR_COL,,); - BLANK = DFF(((BORD & MODE03 & MODE02) or DIR_PORT4),LWR_COL,,); - INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),LWR_COL,,); - - INTT = DFF(!(INTTX & (CTV[2..0] == 7)),CT5,,); - --- INTT = DFF((INTTX or DFF(INTTX,CT5,,)),CT5,,); --- INTT = DFF(!(BLANK & (CTV[2..0] == 7)),CLK42,,MODE0[0]); - - CASE CT[2..0] IS - WHEN B"110" => VCM[2..0].d = 5; -- 110 -> 101 6 -> 5 - WHEN B"000" => VCM[2..0].d = 1; -- 000 -> 001 0 -> 1 - WHEN B"001" => VCM[2..0].d = 4; -- 001 -> 100 1 -> 4 - WHEN B"010" => VCM[2..0].d = 3; -- 010 -> 011 2 -> 3 - WHEN B"100" => VCM[2..0].d = 2; -- 100 -> 010 4 -> 2 - WHEN B"101" => VCM[2..0].d = 0; -- 101 -> 000 5 -> 0 - END CASE; - - CASE VCM[1..0] IS - WHEN 0 => - VLA[].d = (BRVA[7..0],VCC,VCC,VCC,VCC,VCC,RBRVA[10..8],GND,GND); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - -TSN_W3.d = X_MODE_BOND; -% - IF VCM2 THEN --- TSN_W3.d = X_MODE5; - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE5); - ELSE - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE_BOND); - END IF; -% - - WHEN 1 => - WR_PIC.d = !VCM2; - WR_COL.d = VCM2; - VLA[].d = SVA[]; - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - WHEN 2 => - VLA[].d = VXA[17..0]; - V_CST[].d = (!VXA18,VXA18) or MXWE; - V_WE.d = MXWE; - V_WEX.d = GND; - V_WET[].d = MXWE or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - WHEN 3 => --- WR_PIC.d = X_MODE5; --- NEW 26.08.2022, fix bug with first column --- it was reproducing when changes mode 320 -> 640, like any 320px screen squares -> text mode squares - WR_PIC.d = MODE0[5]; - VLA[].d = (DIR_PORT3,CTH[5..0],CT5,VCC,VCC,CTV[8..3],GND,GND); - WR_MODE.d = !(CT[5..3] == B"111") & !(CT4 & CT3 & !MODE0[5]); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - END CASE; - --- choose V-RAM komplect - - V_CST1.prn = GND; --- V_CS0.clrn = GND; - V_CST0.prn = (LCELL(DFF(GND,!CLK42,,!V_CST0))); - V_CS1 = VCC; --- V_CS0 = LCELL(V_CST0); - - V_CSX0 = LCELL(!CLK42); - V_CSX1 = LCELL(V_CSX0); - V_CSX2 = LCELL(V_CSX1 & V_CSX0); - V_CSX3 = LCELL(V_CSX2); - --- V_CS0 = V_CSX3; - V_CS0 = GND; - --- ===================== - - SVA[].clk = CLK42; - SVA[9..6] = MODE0[3..0]; --- RSVA[].clk = CLK42; - (SVA[12..10],SVA[5..0]) = RSVA[]; - --- M_CTV[2..0].clk = CLK42; --- M_CT[5..3].clk = CLK42; - M_CTV[2..0] = (!MODE2[2] & CTV[2..0]) or MODE2[2] & (MODE2[1],CTV[2..1]); - M_CT[5..3] = (!MODE2[2] & (CT[5],!CT[4..3])) or MODE2[2] & (MODE2[0],!CT[5..4]); - - CASE (!VCM2,MODE0[4]) IS --- CASE (!VCM1,MODE0[4]) IS - WHEN B"X0" => - -- Graf adress -- - RSVA[] = (M_CTV[2..0],MODE1[2..0],M_CT[5..3]); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = CTV[2..0]; --- SVA[5..0] = (MODE1[2..0],CT5,!CT[4..3]); - WHEN B"01" => - -- ZX-atr adress -- - RSVA[] = (MODE2[2..0],SCR128,VCC,VCC,GND,!MODE0[7..6]); - SVA[17..13] = MODE2[7..3]; - --- SVA[12..10] = MODE2[2..0]; --- SVA[5..0] = (SCR128,VCC,VCC,GND,!MODE0[7..6]); - WHEN B"11" => - -- ZX-pic adress -- - RSVA[] = (MODE1[2..0],SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = MODE1[2..0]; --- SVA[5..0] = (SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - END CASE; - --- X_MODE_BOND = LCELL(LCELL(DCOL[7..4] == 15) & LCELL(DCOL[3..0] == 15) & DFF((MODE0[7] & MODE0[5] & !MODE0[4]),LWR_COL,VCC,VCC)); - X_MODE_BOND = GND; - --- LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - - --- CASE (DFF(VLA1,!CLK42,,),DFF(VLA0,!CLK42,,)) IS - --- D_PIC0_[].clk = !CLK42; --- D_PIC1_[].clk = !CLK42; --- D_PIC2_[].clk = !CLK42; --- D_PIC3_[].clk = !CLK42; - --- PIC_CLK = LCELL(LCELL(CLK42)); - PIC_CLK = !CLK42; - - D_PIC0_[].clk = PIC_CLK; - D_PIC1_[].clk = PIC_CLK; - D_PIC2_[].clk = PIC_CLK; - D_PIC3_[].clk = PIC_CLK; - - D_PIC0_[] = VDM0[]; - D_PIC1_[] = VDM1[]; - D_PIC2_[] = VDM2[]; - D_PIC3_[] = VDM3[]; - - CASE (DFF(VLA1,CLK42,,),DFF(VLA0,CLK42,,)) IS - WHEN 0 => D_PICX_[] = D_PIC0_[]; - WHEN 1 => D_PICX_[] = D_PIC1_[]; - WHEN 2 => D_PICX_[] = D_PIC2_[]; - WHEN 3 => D_PICX_[] = D_PIC3_[]; - END CASE; - - MODE0[].ena = VCC; - MODE1[].ena = VCC; - MODE2[].ena = VCC; - MODE0[].clk = LWR_MODE; - MODE1[].clk = LWR_MODE; - MODE2[].clk = LWR_MODE; - MODE0[].d = VDM3[]; - MODE1[].d = VDM2[]; - MODE2[].d = VDM1[]; - LWR_MODE = LCELL(LCELL(WR_MODE)); -% - MODE0[].ena = LWR_MODE; - MODE1[].ena = LWR_MODE; - MODE2[].ena = LWR_MODE; - MODE0[].clk = CLK42; - MODE1[].clk = CLK42; - MODE2[].clk = CLK42; - MODE0[].d = D_PIC3_[]; - MODE1[].d = D_PIC2_[]; - MODE2[].d = D_PIC1_[]; - LWR_MODE = DFF(!WR_MODE,CLK42,,); -% - X_MODE7 = DFF(MODE0[7],LWR_COL,,); - X_MODE6 = DFF(MODE0[6],LWR_COL,,); - X_MODE5 = DFF(MODE0[5],LWR_COL,,); - X_MODE4 = DFF(MODE0[4],LWR_COL,,); - - VAO[] = VLA[17..2]; - - WR_PIC.clk = CLK42; - WR_COL.clk = CLK42; - WR_MODE.clk = CLK42; - --- LWR_PIC = LCELL(LCELL(WR_PIC)); --- LWR_COL = LCELL(LCELL(WR_COL)); --- LWR_PIC = LCELL(WR_PIC); --- LWR_COL = LCELL(WR_COL); - LWR_PIC = DFF(WR_PIC,CLK42,,); - LWR_COL = DFF(WR_COL,CLK42,,); - --- D_PIC0[].ena = VCC; --- D_PIC0[].clk = (LWR_PIC); - D_PIC0[].ena = !LWR_PIC; - D_PIC0[].clk = CLK42; - - - - - IF LD_PIC THEN --- D_PIC0[] = D_PIC0_[]; - D_PIC0[] = D_PICX_[]; - ELSE - D_PIC0[] = (D_PIC0[6..0],GND); - END IF; - - --- DCOL[].clk = (LWR_COL); - DCOL[].ena = !LWR_COL; - DCOL[].clk = CLK42; - - IF DFF((MODE0[7..4] == 15),WR_PIC,,) THEN - DCOL[].d = (B"00",BRD[2..0],BRD[2..0]); - ELSE --- DCOL[].d = D_PIC0_[]; - DCOL[].d = D_PICX_[]; - END IF; - - DCOL[].clrn = !BLANK; - - BRVA[].clk = CLK42; - BRVA[].clrn = !MS_POINT; - BRVA[].prn = !MS_POINT2; - --- MODE0[4] - graph / text --- MODE0[5] - 320 / 640 resolution - --- CASE (LCELL(X_MODE4 or X_MODE5),CT2) IS - CASE (DFF((MODE0[4] or MODE0[5]),LWR_COL,,),CT2) IS - WHEN B"1X" => BRVA[7..0] = DCOL[]; - WHEN B"01" => BRVA[7..0] = (B"0000",DCOL[7..4]); - WHEN B"00" => BRVA[7..0] = (B"0000",DCOL[3..0]); - END CASE; - --- BRVA[10..8] = (x_mode4,RBRVA[9..8]); - RBRVA[].clk = CLK42; - - CASE (BORD,X_MODE4) IS - WHEN B"X0" => RBRVA[10..8].d = (GND,X_MODE[7..6]); - WHEN B"X1" => RBRVA[10..8].d = (VCC,(CTF4 & !BLANK),D_PIC0[7]); - END CASE; - - RBRVA[9..8].clrn = !BORD; - RBRVA[10].prn = !BORD; - - CASE (RBRVA[9..8],BRVA7) IS - WHEN 0,1,4,7 => ZX_COL[] = (BRVA[6],BRVA[5..3]); - WHEN 2,3,6,5 => ZX_COL[] = (BRVA[6],BRVA[2..0]); - END CASE; - --- V_WET[].prn = LCELL(DFF(GND,!CLK42,,!V_WE)); --- V_WE.prn = LCELL(DFF(GND,!CLK42,,!V_WE)); - - V_WE_R = DFF(GND,!CLK42,,!V_WE); - V_WE.prn = V_WE_R; - V_WET[].prn = V_WE_R; - --- V_WR[] = LCELL(V_WE) or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - --- V_WR[] = (V_WE) or !( - - V_WEX.clk = CLK42; --- V_WEX.d = V_WE; --- V_WEX.prn = (DFF(GND,CLK42,,!V_WEX)); - - - - - V_WEMMM = LCELL(V_WE); --- V_WEMMN = LCELL(V_WEMMM); -- bios ok, fn ok, fnf1 failed, zx almost ok --- V_WEMMO = LCELL(V_WEMMN); -- green arts --- V_WEMMP = LCELL(V_WEMMO); -- blue + pink arts --- V_WEMMR = LCELL(V_WEMMP); -- no F1 issue, but red arts (fix by finger, not enough capacity??) --- V_WEMMS = LCELL(V_WEMMR); --- V_WEMMT = LCELL(V_WEMMS); --- V_WEMMU = LCELL(V_WEMMT); --- V_WEMMV = LCELL(V_WEMMU); --- V_WEMMW = LCELL(V_WEMMV); --- V_WEMMX = LCELL(V_WEMMW); --- V_WEMMY = LCELL(V_WEMMX); --- V_WEMMZ = LCELL(V_WEMMY); - - V_WRM = LCELL(V_WE or V_WEMMM); - - --- V_WRM = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMN or V_WEMMM); --- V_WRM2 = LCELL(V_WEMMR); --- V_WRM = LCELL(V_WEMMM or V_WEMMN); --- V_WRM2 = LCELL(V_WEMMM or V_WEMMN); - - V_WEM = (V_WE); - --- V_WEM2 = LCELL(V_WE); --- V_WEM = LCELL(V_WEMMM & V_WEMMN); --- V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - ---- LWR_COL = DFF(WR_COL,CLK42,,); - F_WR = ((LCELL(LCELL(LCELL(DFF(VCC,V_WE,,)))))); ---- F_WR = DFF(V_WE,CLK42,,); --- V_WEMMZ = LCELL(CLK42); - V_EN3 = (DFF(!(!VXA1 & (!VXA0 or DOUBLE)), CLK42, F_WR,)); - V_EN2 = (DFF(!(!VXA1 & (VXA0 or DOUBLE)), CLK42, F_WR,)); - V_EN1 = (DFF(!(VXA1 & (!VXA0 or DOUBLE)), CLK42, F_WR,)); - V_EN0 = (DFF(!(VXA1 & (VXA0 or DOUBLE)), CLK42, F_WR,)); - - --- V_WR_3 = LCELL(V_WRM or V_EN3); --- V_WR_2 = LCELL(V_WRM or V_EN2); --- V_WR_1 = LCELL(V_WRM or V_EN1); --- V_WR_0 = LCELL(V_WRM or V_EN0); - V_WR_3 = (LCELL(LCELL(LCELL(V_WRM or V_EN3)))); - V_WR_2 = (LCELL(LCELL(LCELL(V_WRM or V_EN2)))); - V_WR_1 = (LCELL(LCELL(LCELL(V_WRM or V_EN1)))); - V_WR_0 = (LCELL(LCELL(LCELL(V_WRM or V_EN0)))); - - V_WEY3 = LCELL(V_WE or V_EN3); - V_WEY2 = LCELL(V_WE or V_EN2); - V_WEY1 = LCELL(V_WE or V_EN1); - V_WEY0 = LCELL(V_WE or V_EN0); - - V_WR[] = V_WR_[]; -- V_WR0-3 - V_WEN[] = V_WEY[]; -- VD0-3 - - - - - -% - V_WEMMM = LCELL(V_WE); - V_WEMMN = LCELL(V_WEMMM); - V_WEMMO = LCELL(V_WEMMN); - V_WEMM = LCELL(V_WEMMO); - - V_WRM = LCELL(V_WEMMN & V_WEMMM); - V_WRM2 = LCELL(V_WEMMN & V_WEMMM); - - V_WEM = LCELL(V_WEMMM & V_WEMMO); - V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - - V_EN3 = DFF(!(!VXA1 & (!VXA0 or DOUBLE)),CLK42,F_WR,); - V_EN2 = DFF(!(!VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN1 = DFF(!(VXA1 & (!VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN0 = DFF(!(VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - - F_WR = DFF(VCC,V_WE,,); - - V_WR_3 = V_WRM or V_EN3; - V_WR_2 = V_WRM2 or V_EN2; - V_WR_1 = V_WRM or V_EN1; - V_WR_0 = V_WRM or V_EN0; - - V_WEY3 = V_WEM or V_EN3; - V_WEY2 = V_WEM2 or V_EN2; - V_WEY1 = V_WEM or V_EN1; - V_WEY0 = V_WEM or V_EN0; - - V_WR[] = V_WR_[]; - V_WEN[] = V_WEY[]; -% - - - - - --- CLK84 = LCELL(CLK42 xor CLK84_X); --- CLK84_X = DFF(!CLK84_X,CLK84,,); --- CLK84_Y = CLK84; - -END GENERATE; -- end "sprinter" mode - - -END; diff --git a/src/altera/acex/k30_make.bat b/src/altera/acex/k30_make.bat deleted file mode 100644 index cce458e..0000000 --- a/src/altera/acex/k30_make.bat +++ /dev/null @@ -1,5 +0,0 @@ -C: -cd "C:\users\tolik\Documents\SP_Projects\ASM\GIT\SP_Core\Build\acex\tmp\" -"C:\Program Files (x86)\MAXPLUS2\MAXPLUS2.EXE" -compile SP2_ACEX >> compile.log -transttf.exe SP2_ACEX.ttf ..\STREAM.BIN -exit \ No newline at end of file diff --git a/src/altera/make_altera.cmd b/src/altera/make_altera.cmd deleted file mode 100644 index 4499121..0000000 --- a/src/altera/make_altera.cmd +++ /dev/null @@ -1,10 +0,0 @@ -@echo off - -cd acex -call make.cmd - -cd ..\max -call make.cmd - -cd .. - diff --git a/src/altera/max/7064/SP2_MAX.ACF b/src/altera/max/7064/SP2_MAX.ACF deleted file mode 100644 index 40052de..0000000 --- a/src/altera/max/7064/SP2_MAX.ACF +++ /dev/null @@ -1,653 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP SP2_MAX -BEGIN - DEVICE = EPM7064STC100-10; - |GND65 : INPUT_PIN = 65; - |GND33 : INPUT_PIN = 33; - |/CONF_X : BIDIR_PIN = 54; - |10K_D0 : OUTPUT_PIN = 58; - |CLKZZ : BIDIR_PIN = 32; - |10K_CLK : OUTPUT_PIN = 56; - |XHD2_CS2 : OUTPUT_PIN = 83; - |XHD2_CS1 : OUTPUT_PIN = 81; - |XHD1_CS2 : OUTPUT_PIN = 80; - |XHD1_CS1 : OUTPUT_PIN = 79; - |XHD_WR : OUTPUT_PIN = 75; - |XHD_RES : OUTPUT_PIN = 71; - |XHD_RD : OUTPUT_PIN = 76; - |WR_PDOS : OUTPUT_PIN = 8; - |/WG_WR : OUTPUT_PIN = 93; - |/WG_RD : OUTPUT_PIN = 97; - |WDAT : OUTPUT_PIN = 98; - |TG42_OUT : OUTPUT_PIN = 85; - |TG42_BUF : OUTPUT_PIN = 36; - |SINC_2 : OUTPUT_PIN = 19; - |SINC_1 : OUTPUT_PIN = 20; - |SINC_V : OUTPUT_PIN = 64; - |SINC_H : OUTPUT_PIN = 68; - |SINC : OUTPUT_PIN = 67; - |QDAT : OUTPUT_PIN = 16; - |HD_DIR : OUTPUT_PIN = 48; - |HD_CS : OUTPUT_PIN = 52; - |FDAT : OUTPUT_PIN = 14; - |DENS_X : OUTPUT_PIN = 96; - |CMOS_DWR : OUTPUT_PIN = 100; - |CMOS_DRD : OUTPUT_PIN = 99; - |CMOS_AS : OUTPUT_PIN = 6; - |CLK14 : OUTPUT_PIN = 31; - |CLK_WG : OUTPUT_PIN = 13; - |BEEP : OUTPUT_PIN = 84; - |AUD : OUTPUT_PIN = 35; - |XHR_RDY : INPUT_PIN = 88; - |XA2 : INPUT_PIN = 23; - |XA1 : INPUT_PIN = 21; - |XA0 : INPUT_PIN = 17; - |XACS : INPUT_PIN = 37; - |WSTB : INPUT_PIN = 10; - |WR_CNF : INPUT_PIN = 57; - |WD : INPUT_PIN = 9; - |VGA_IN : INPUT_PIN = 61; - |TR43 : INPUT_PIN = 12; - |TG42_IN : INPUT_PIN = 87; - |STE : INPUT_PIN = 94; - |SR : INPUT_PIN = 29; - |SL : INPUT_PIN = 30; - |SINC_IN : INPUT_PIN = 69; - |RSTB : INPUT_PIN = 25; - |RDAT : INPUT_PIN = 92; - |PW_GOOD : INPUT_PIN = 90; - |HDD_C3 : INPUT_PIN = 40; - |HDD_C2 : INPUT_PIN = 41; - |HDD_C1 : INPUT_PIN = 42; - |HDD_C0 : INPUT_PIN = 47; - |FDD_C2 : INPUT_PIN = 46; - |FDD_C1 : INPUT_PIN = 45; - |FDD_C0 : INPUT_PIN = 44; - |EPM_RES : INPUT_PIN = 89; - |D0 : INPUT_PIN = 60; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EPM7256SQC208-7; - AUTO_DEVICE = EPM7256SRC208-7; - AUTO_DEVICE = EPM7192SQC160-7; - AUTO_DEVICE = EPM7160SQC160-6; - AUTO_DEVICE = EPM7160STC100-6; - AUTO_DEVICE = EPM7160SLC84-6; - AUTO_DEVICE = EPM7128SQC160-6; - AUTO_DEVICE = EPM7128STC100-6; - AUTO_DEVICE = EPM7128SQC100-6; - AUTO_DEVICE = EPM7128SLC84-6; - AUTO_DEVICE = EPM7064STC100-5; - AUTO_DEVICE = EPM7064SLC84-5; - AUTO_DEVICE = EPM7064STC44-5; - AUTO_DEVICE = EPM7064SLC44-5; - AUTO_DEVICE = EPM7032STC44-5; - AUTO_DEVICE = EPM7032SLC44-5; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EPM7064STC100-10; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = ON; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -LOGIC_OPTIONS -BEGIN - |LR_T1 : TURBO_BIT = ON; - |LR_T0 : TURBO_BIT = ON; - |CLK_WG : TURBO_BIT = ON; - |TG42_BUF : STYLE = WYSIWYG; - |TG42_OUT : STYLE = WYSIWYG; - |XHD_RD : TURBO_BIT = OFF; - |XHD_RES : TURBO_BIT = OFF; - |XHD_WR : TURBO_BIT = OFF; - |XHD1_CS1 : TURBO_BIT = OFF; - |XHD1_CS2 : TURBO_BIT = OFF; - |XHD2_CS1 : TURBO_BIT = OFF; - |XHD2_CS2 : TURBO_BIT = OFF; - |10K_CLK : TURBO_BIT = OFF; - |10K_D0 : TURBO_BIT = OFF; - |REG_P0 : TURBO_BIT = ON; - |REG_P1 : TURBO_BIT = ON; - |REG_P2 : TURBO_BIT = ON; - |TG42_BUF : TURBO_BIT = ON; - |TG42_OUT : TURBO_BIT = ON; - |STWG0 : TURBO_BIT = ON; - |STWG1 : TURBO_BIT = ON; - |STWG2 : TURBO_BIT = ON; - |XCT0 : TURBO_BIT = ON; - |XCT1 : TURBO_BIT = ON; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MULTIVOLT_IO = OFF; - SECURITY_BIT = ON; - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = NORMAL; - AUTO_GLOBAL_CLEAR = OFF; - AUTO_GLOBAL_CLOCK = OFF; - DEVICE_FAMILY = MAX7000S; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - FITTER_SETTINGS = ADVANCED; - USE_QUARTUS_FITTER = OFF; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 25.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - TURBO_BIT = ON; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - IGNORE_SOFT_BUFFERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - TURBO_BIT = ON; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN = AUTO; - MINIMIZATION = FULL; - IGNORE_SOFT_BUFFERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/max/7064/sp2_max.tdf b/src/altera/max/7064/sp2_max.tdf deleted file mode 100644 index b24582c..0000000 --- a/src/altera/max/7064/sp2_max.tdf +++ /dev/null @@ -1,499 +0,0 @@ - -TITLE "SINC_controller"; - -PARAMETERS - ( - G_MODE = 1, -- 1 on LCELL, 0 - on EXP - - NUM = "NO", - NUMBER1 = B"00100000X", -- 0 - sinc - NUMBER2 = B"00110111X", -- 7 - NUMBER3 = B"01001101X", -- D - NUMBER4 = B"01010010X", -- 2 - NUMBER5 = B"00100000X", -- - NUMBER6 = B"00100000X", -- - NUMBER7 = B"00100000X" -- - ); - -SUBDESIGN SP2_MAX - ( - - TG42_IN : INPUT; - TG42_OUT : OUTPUT; - TG42_BUF : OUTPUT; - CLKZZ : BIDIR; - CLK14 : OUTPUT; - - AUD : OUTPUT; -- clk for timers - BEEP : OUTPUT; - - CMOS_DRD : OUTPUT; - CMOS_AS : OUTPUT; - CMOS_DWR : OUTPUT; - - WR_PDOS : OUTPUT; - WD : INPUT; - WSTB : INPUT; - SR,SL : INPUT; - RSTB : INPUT; - TR43 : INPUT; - CLK_WG : OUTPUT; - FDAT : OUTPUT; - QDAT : OUTPUT; - RDAT : INPUT; - /WG_WR : OUTPUT; - /WG_RD : OUTPUT; - STE : INPUT; - DENS_X : OUTPUT; - WDAT : OUTPUT; - - --- XA[2..0] : BIDIR; - XA[2..0] : INPUT; - XACS : INPUT; --- SINC_1 : OUTPUT; - SINC_1 : BIDIR; - SINC_2 : BIDIR; - - HDD_C[3..0] : INPUT; - FDD_C[2..0] : INPUT; - - HD_DIR : OUTPUT; - HD_CS : OUTPUT; - - /CONF_X : BIDIR; - 10K_CLK : OUTPUT; - WR_CNF : INPUT; - 10K_D0 : OUTPUT; - D0 : INPUT; - - VGA_IN : INPUT; --- WR_COL : INPUT; - SINC_V : OUTPUT; - SINC_H : OUTPUT; - SINC : OUTPUT; - SINC_IN : INPUT; - - XHD_RES : OUTPUT; - XHD_WR : OUTPUT; - XHD_RD : OUTPUT; - - XHD1_CS[2..1] : OUTPUT; - XHD2_CS[2..1] : OUTPUT; - XHR_RDY : INPUT; - - EPM_RES : INPUT; - PW_GOOD : INPUT; - - UNUSED65 : INPUT; -- was GND65, hack for 3000 family - UNUSED33 : INPUT; -- was GND33, hack for 3000 family - UNUSED1 : INPUT; - UNUSED2 : INPUT; - UNUSED5 : INPUT; - UNUSED7 : INPUT; - UNUSED22 : INPUT; - UNUSED24 : INPUT; - UNUSED27 : INPUT; - UNUSED28 : INPUT; - UNUSED49 : INPUT; - UNUSED50 : INPUT; - UNUSED53 : INPUT; - UNUSED55 : INPUT; - UNUSED63 : INPUT; - UNUSED70 : INPUT; - UNUSED72 : INPUT; - UNUSED77 : INPUT; - UNUSED78 : INPUT; - - - - ) -VARIABLE - - XCT[2..0] : DFF; - CNF_ON : NODE; - CNF_OFF : NODE; - - CLK42 : NODE; - - CT[3..0] : DFF; - CTH[5..0] : DFF; - CTV[8..0] : DFFE; - - SINC_HT : DFF; - SINC_VT : DFFE; - - TURBING : NODE; - FDD_1440 : NODE; - NFDD_1440 : NODE; - - CT_WG : NODE; - CT_WG1 : NODE; - - STWG[2..0] : DFF; - CLK_PRC : NODE; - WGR[4..0] : DFF; - RDAT_X : NODE; - - REG_P[2..0] : DFF; - - /RESET : NODE; - - - S144,S720 : NODE; - - SHDD1,SHDD2 : NODE; - THDD : NODE; - NTHDD : NODE; - - NO_HDD : NODE; - - S320,S312 : NODE; - T320 : NODE; - NT320 : NODE; - - SOFT_RESET : NODE; - SOFT_RESET2 : NODE; - - HDD_CLK : NODE; - - LR_T[1..0] : DFF; - - EXP_X : NODE; - EXP_Y : NODE; - - CTV8M : DFF; - - CTV8C : NODE; - - FN_NUM : NODE; - -BEGIN - - /RESET = DFF((EPM_RES & XHD_RES),!CT3,SOFT_RESET,); - --- /RESET = (EXP(!EPM_RES & EXP(EXP(EXP(EPM_RES)))) & SOFT_RESET); - - EXP_X = EXP(TG42_IN); - EXP_Y = EXP(TG42_IN); - - IF (G_MODE == 0) GENERATE - TG42_OUT = LCELL(EXP_X); - ELSE GENERATE - TG42_OUT = LCELL(TG42_BUF); - END GENERATE; - - TG42_BUF = LCELL(!TG42_IN); - - CLK42 = TG42_IN; - --- CT[].clk = CLK14; - CT[].clk = XCT1; - CT[] = CT[] + 1; - --- === horizontal sinc ===== - - CTH[].clk = !CT3; - SINC_HT.clk = !CT3; - - IF !((CTH[] == B"XXXX11") & SINC_HT) THEN - CTH[] = CTH[] + 1; - ELSE - CTH[] = GND; - END IF; - --- SINC_1 = CTH5; - SINC_1 = TRI(CTH5,VCC); - SINC_2 = TRI(CTV8,VCC); - - SINC_HT.d = (CTH[] == B"1101XX"); - - SINC_H = SINC_HT; - --- === vertical sinc ======= - --- CTV[].clk = !CT3; --- SINC_VT.clk = !CT3; - - CTV[].clk = SINC_HT; - SINC_VT.clk = SINC_HT; - - CTV8M.clk = SINC_HT; - --- CTV[].ena = (CTH[] == B"110111"); --- SINC_VT.ena = (CTH[] == B"110111"); - CTV[].ena = VCC; - SINC_VT.ena = VCC; - --- IF (CTV[] == B"100111111") THEN - - IF (NUM == "YES") GENERATE - - FN_NUM =( - (CTV[8..0] == NUMBER1) or - (CTV[8..0] == NUMBER2) or - (CTV[8..0] == NUMBER3) or - (CTV[8..0] == NUMBER4) or - (CTV[8..0] == NUMBER5) or - (CTV[8..0] == NUMBER6) or - (CTV[8..0] == NUMBER7) - ) & !NO_HDD; - - ELSE GENERATE - - FN_NUM = GND; - - END GENERATE; - - - IF EXP((CTV[] == B"XXXXXXX11") & SINC_VT) THEN - - (CTV[8..0]) = ((CTV[8..0]) + 1) xor (CTV8M,B"00000000"); - CTV8M = FN_NUM; - - ELSE - CTV[7..0] = GND; - CTV8M = GND; - CTV8 = GND; - END IF; - - SINC_VT.d = ((CTV[8..0] == B"1001111XX") or ((CTV[8..0] == B"1001101XX")) & NT320); - - SINC_V = SINC_VT; - - SINC = SINC_V xor SINC_H; - --- ============================= - --- ========================================= --- divide by 6 - - XCT[].clk = (TG42_IN xor !XCT1); - XCT[].d = XCT[] + 1; - --- CLKZZ = 14 MHz - - CLKZZ = TRI(XCT1,CNF_OFF); - CLK14 = DFF(!CLK14,XCT0,,); - --- test exists - --- CNF_OFF = EXP(CNF_ON & /RESET); --- CNF_ON = EXP(CNF_OFF & XACS); - - CNF_OFF = DFF(GND,GND,XACS,/RESET); - CNF_ON = !CNF_OFF; - --- ========================================= - --- ======== FDD controller ================== - - TURBING = EXP(EXP(TURBING & !WSTB & !RSTB) & !STE & NFDD_1440); --- TURBING = GND; - - CT_WG = TFF(VCC,(XCT1 xor (CT_WG & TURBING)),,); - - STWG[].clk = (CT_WG xor STWG2); - STWG[].d = STWG[] + 1; - - CLK_WG = STWG2; - --- CLK_PRC = STWG0; - CLK_PRC = CT_WG; - - CT_WG1 = EXP(EXP(XCT1 & FDD_1440) & EXP(CT0 & NFDD_1440)); - - WGR[].clk = CT_WG1; - - IF !FDAT THEN - TABLE WGR[3..0] => WGR[3..0].d; - 0 => 4; 1 => 5; 2 => 4; 3 => 5; - 4 => 6; 5 => 7; 6 => 8; 7 => 8; - 8 => 9; 9 => 9; 10 => 10; 11 => 11; - 12 => 12; 13 => 13; 14 => 14; 15 => 15; - END TABLE; - WGR4.d = WGR4; - ELSE - IF WGR[3..0] == 0 THEN - WGR[3..0].d = 3; - WGR4.d = WGR4; - ELSE - WGR[].d = WGR[] + 1; - END IF; - END IF; - - QDAT = WGR4; - RDAT_X = EXP(EXP(RDAT_X & EXP(!RDAT & !CT_WG1)) & EXP(RDAT & !CT_WG1)); --- FDAT = DFF((RDAT_X or !DFF(RDAT_X,CT_WG1,,)),CT_WG1,,); - FDAT = DFF((RDAT_X or EXP(DFF(RDAT_X,CT_WG1,,))),CT_WG1,,); --- ========================================================== --- now not complete! - - AUD = CT3; - BEEP = GND; - --- /CONF_X = TRI(GND,!/RESET); - - /CONF_X = OPNDRN(/RESET); - --- 10K_CLK = WR_CNF; -- now not protect! - - 10K_CLK = DFF((WR_CNF & CNF_OFF) or ((HDD_C0 or FDD_C2) & CNF_ON),CLK42,,); - - 10K_D0 = DFFE(D0,10K_CLK,S720,(S144 & /RESET),CNF_OFF); - - DENS_X = VCC; - --- === now NOT PRECOMP! ===== - --- WDAT = WD; - - WDAT = REG_P2; - - REG_P[].clk = !CLK_PRC; - --- CASE WD IS --- WHEN 1 => REG_P[].d = (GND,SL,!(SL or SR),SR); --- WHEN 0 => REG_P[].d = (EXP(EXP(REG_P2)),REG_P[1..0],GND); --- END CASE; - --- CASE (DFF(WD,CLK_WG,,),DFF((SL & TR43),CLK_WG,,),DFF((SR & TR43),CLK_WG,,)) IS - - LR_T[].clk = STWG2; --- LR_T[].clk = CLK_WG; - - LR_T[].d = ((WD & !(SL & TR43)),(WD & !(SR & TR43))); - - CASE LR_T[] IS - WHEN 0 => REG_P[1..0] = (REG_P[1..0] - 1) & EXP(REG_P[1..0] == 0); - REG_P[2] = EXP(EXP(REG_P[1..0] == 1)); --- REG_P[2] = (REG_P[1..0] == 1); - WHEN 1 => REG_P[1..0] = 1; REG_P[2] = GND; - WHEN 2 => REG_P[1..0] = 3; REG_P[2] = GND; - WHEN 3 => REG_P[1..0] = 2; REG_P[2] = GND; - END CASE; -% - CASE (WD,DFF((SL & TR43),CLK_WG,,),DFF((SR & TR43),CLK_WG,,)) IS - WHEN B"0XX" => REG_P[1..0] = (REG_P[1..0] - 1) & EXP(REG_P[1..0] == 0); - WHEN B"100" => REG_P[1..0] = 2; - WHEN B"110" => REG_P[1..0] = 1; - WHEN B"101" => REG_P[1..0] = 3; - WHEN B"111" => REG_P[1..0] = 2; - END CASE; -% - -% - CASE WD IS - WHEN 0 => REG_P[3] = EXP(EXP(REG_P[1..0] == 1)); - WHEN 1 => REG_P[3] = GND; - END CASE; -% - --- === Port Controls ==================================== -% - FDD_C0 - 0 - WG93 / 1 - kmps/ p_dos - FDD_C1 - 0 - write / 1 - read - FDD_C2 - 0 - no / 1 - CS_WG/ strobe - - HDD_C0 - strobe - HDD_C[2..1] = 00 - SYS_FN, 01 - SYS_FN, 10 - HDD1/2, 11 - CMOS - HDD_C3 - 0 - HD_CS1, 1 HD_CS3 / 0 CMOS_DAT, 1 - CMOS_ADR - - HDD_C[3..0] = 0001, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set 1.44/720 - HDD_C[3..0] = 1001, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set 320/312 lines - HDD_C[3..0] = 0011, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set HDD1/HDD2 - HDD_C[3..0] = 1011, FDD_C[2..1] = 00; -> FDD_C0 = 0 -> soft_reset! - HDD_C[3..0] = X101, FDD_C[2..1] = XX; -> HDD1/2 rd/wr - -% - - SOFT_RESET = !((HDD_C[] == B"1011") & (FDD_C[] == B"000")); - SOFT_RESET2 = !((HDD_C[] == B"1011") & (FDD_C[] == B"001")); - --- FDD switch - --- NFDD_1440 = EXP(FDD_1440 & S720 & /RESET); --- FDD_1440 = EXP(NFDD_1440 & S144); - FDD_1440 = 10K_D0; - NFDD_1440 = !10K_D0; - - S144 = EXP((HDD_C[] == B"0001") & (FDD_C[] == B"001")); - S720 = EXP((HDD_C[] == B"0001") & (FDD_C[] == B"000")); - --- Screen Switch - - T320 = EXP(NT320 & S320 & /RESET); - NT320 = EXP(T320 & S312); - - S312 = EXP((HDD_C[] == B"1001") & (FDD_C[] == B"001")); - S320 = EXP((HDD_C[] == B"1001") & (FDD_C[] == B"000")); - --- HDD Switch - --- THDD = EXP(NTHDD & SHDD2 & /RESET); --- NTHDD = EXP(THDD & SHDD1); - - THDD = EXP(NTHDD & NO_HDD & SHDD2 & /RESET & SOFT_RESET2); - NTHDD = EXP(THDD & NO_HDD & SHDD1 & /RESET & SOFT_RESET2); - NO_HDD = EXP(NTHDD & THDD & SHDD1 & SHDD2); - - SHDD2 = EXP((HDD_C[] == B"0011") & (FDD_C[] == B"001")); - SHDD1 = EXP((HDD_C[] == B"0011") & (FDD_C[] == B"000")); - --- Control signals - - WR_PDOS = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - /WG_WR = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X00")),HDD_CLK,,FDD_C2); - /WG_RD = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X10")),HDD_CLK,,FDD_C2); - - CMOS_DWR = DFF(!((HDD_C[] == B"1110") & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - CMOS_AS =!DFF(!((HDD_C[] == B"0110") & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - CMOS_DRD = DFF(!((HDD_C[] == B"1110") & (FDD_C[] == B"X10")),HDD_CLK,,FDD_C2); - --- HD_DIR = !HDD_C1; -- ???????????? - HD_DIR = XHD_RD; - --- HD_CS = GND; --- HD_CS = CTV8M; - HD_CS = (CTV8M and /RESET); - - --- HD_CS = !/RESET; - --- XHD_RES = VCC; - --- XHD_RES = DFF(PW_GOOD,SINC_V,,); - XHD_RES = DFF(PW_GOOD,SINC_V,EPM_RES,); - --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),CLK42,,); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),CLK42,,); - --- HDD_CLK = EXP(EXP(HDD_C0)); - HDD_CLK = 10K_CLK; - --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1 or !HDD_CLK),CLK42,,HDD_C0); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1 or !HDD_CLK),CLK42,,HDD_C0); --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),HDD_CLK,,HDD_C0); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),HDD_CLK,,HDD_C0); - XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),HDD_CLK,,(HDD_C0 and /RESET)); - XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),HDD_CLK,,(HDD_C0 and /RESET)); - --- XHD1_CS1 = DFF(!((HDD_C[] == B"010X") & NTHDD),CLK42,,); --- XHD1_CS2 = DFF(!((HDD_C[] == B"110X") & NTHDD),CLK42,,); - --- XHD2_CS1 = DFF(!((HDD_C[] == B"010X") & THDD),CLK42,,); --- XHD2_CS2 = DFF(!((HDD_C[] == B"110X") & THDD),CLK42,,); - --- XHD1_CS1 = DFF((!(HDD_C[] == B"010X") or THDD),CLK42,,); --- XHD1_CS2 = DFF((!(HDD_C[] == B"110X") or THDD),CLK42,,); - XHD1_CS1 = DFF((!(HDD_C[] == B"010X") or THDD),CLK42,,/RESET); - XHD1_CS2 = DFF((!(HDD_C[] == B"110X") or THDD),CLK42,,/RESET); - --- XHD2_CS1 = DFF((!(HDD_C[] == B"010X") or NTHDD),CLK42,,); --- XHD2_CS2 = DFF((!(HDD_C[] == B"110X") or NTHDD),CLK42,,); - XHD2_CS1 = DFF((!(HDD_C[] == B"010X") or NTHDD),CLK42,,/RESET); - XHD2_CS2 = DFF((!(HDD_C[] == B"110X") or NTHDD),CLK42,,/RESET); - - -END; - diff --git a/src/altera/max/7128/SP2_MAX.ACF b/src/altera/max/7128/SP2_MAX.ACF deleted file mode 100644 index 689ae3e..0000000 --- a/src/altera/max/7128/SP2_MAX.ACF +++ /dev/null @@ -1,699 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP SP2_MAX -BEGIN - DEVICE = EPM7128STC100-10; - |UNUSED1: INPUT_PIN = 1; -- 7064 N.C. - |UNUSED2: INPUT_PIN = 2; -- 7064 N.C. --- |VCCIO --- |#TDI - |UNUSED5: INPUT_PIN = 5; -- 7064 N.C. - |CMOS_AS : OUTPUT_PIN = 6; - |UNUSED7: INPUT_PIN = 7; -- 7064 N.C. - |WR_PDOS : OUTPUT_PIN = 8; - |WD : INPUT_PIN = 9; - - |WSTB : INPUT_PIN = 10; --- |GND - |TR43 : INPUT_PIN = 12; - |CLK_WG : OUTPUT_PIN = 13; - |FDAT : OUTPUT_PIN = 14; --- |#TMS - |QDAT : OUTPUT_PIN = 16; - |XA0 : INPUT_PIN = 17; --- |VCCIO - |SINC_2 : OUTPUT_PIN = 19; - - |SINC_1 : OUTPUT_PIN = 20; - |XA1 : INPUT_PIN = 21; - |UNUSED22: INPUT_PIN = 22; -- 7064 N.C. - |XA2 : INPUT_PIN = 23; - |UNUSED24: INPUT_PIN = 24; -- 7064 N.C. - |RSTB : INPUT_PIN = 25; --- |GND - |UNUSED27: INPUT_PIN = 27; -- 7064 N.C. - |UNUSED28: INPUT_PIN = 28; -- 7064 N.C. - |SR : INPUT_PIN = 29; - - |SL : INPUT_PIN = 30; - |CLK14 : OUTPUT_PIN = 31; - |CLKZZ : BIDIR_PIN = 32; - |UNUSED33 : INPUT_PIN = 33; -- be careful! at 3000 family the pin 33 is GND --- |VCCIO - |AUD : OUTPUT_PIN = 35; - |TG42_BUF : OUTPUT_PIN = 36; - |XACS : INPUT_PIN = 37; --- |GND --- |VCCINT - - |HDD_C3 : INPUT_PIN = 40; - |HDD_C2 : INPUT_PIN = 41; - |HDD_C1 : INPUT_PIN = 42; --- |GND - |FDD_C0 : INPUT_PIN = 44; - |FDD_C1 : INPUT_PIN = 45; - |FDD_C2 : INPUT_PIN = 46; - |HDD_C0 : INPUT_PIN = 47; - |HD_DIR : OUTPUT_PIN = 48; - |UNUSED49: INPUT_PIN = 49; -- 7064 N.C. - - |UNUSED50: INPUT_PIN = 50; -- 7064 N.C. --- |VCCIO - |HD_CS : OUTPUT_PIN = 52; - |UNUSED53 : INPUT_PIN = 53; -- 7064 N.C. - |/CONF_X : BIDIR_PIN = 54; - |UNUSED55: INPUT_PIN = 55; -- 7064 N.C. - |10K_CLK : OUTPUT_PIN = 56; - |WR_CNF : INPUT_PIN = 57; - |10K_D0 : OUTPUT_PIN = 58; --- |GND - - |D0 : INPUT_PIN = 60; - |VGA_IN : INPUT_PIN = 61; --- |#TCK - |UNUSED63: INPUT_PIN = 63; - |SINC_V : OUTPUT_PIN = 64; - |UNUSED65 : INPUT_PIN = 65; -- be careful! at 3000 family the pin 33 is GND --- |VCCIO - |SINC : OUTPUT_PIN = 67; - |SINC_H : OUTPUT_PIN = 68; - |SINC_IN : INPUT_PIN = 69; - - |UNUSED70: INPUT_PIN = 70; -- 7064 N.C. - |XHD_RES : OUTPUT_PIN = 71; - |UNUSED72: INPUT_PIN = 72; -- 7064 N.C. --- |#TDO --- |GND - |XHD_WR : OUTPUT_PIN = 75; - |XHD_RD : OUTPUT_PIN = 76; - |UNUSED77: INPUT_PIN = 77; -- 7064 N.C. - |UNUSED78 : INPUT_PIN = 78; -- 7064 N.C. - |XHD1_CS1 : OUTPUT_PIN = 79; - - |XHD1_CS2 : OUTPUT_PIN = 80; - |XHD2_CS1 : OUTPUT_PIN = 81; --- |VCCIO - |XHD2_CS2 : OUTPUT_PIN = 83; - |BEEP : OUTPUT_PIN = 84; - |TG42_OUT : OUTPUT_PIN = 85; --- |GND - |TG42_IN : INPUT_PIN = 87; - |XHR_RDY : INPUT_PIN = 88; - |EPM_RES : INPUT_PIN = 89; - - |PW_GOOD : INPUT_PIN = 90; --- |VCCINT - |RDAT : INPUT_PIN = 92; - |/WG_WR : OUTPUT_PIN = 93; - |STE : INPUT_PIN = 94; --- |GND - |DENS_X : OUTPUT_PIN = 96; - |/WG_RD : OUTPUT_PIN = 97; - |WDAT : OUTPUT_PIN = 98; - |CMOS_DRD : OUTPUT_PIN = 99; - |CMOS_DWR : OUTPUT_PIN = 100; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EPM7256SQC208-7; - AUTO_DEVICE = EPM7256SRC208-7; - AUTO_DEVICE = EPM7192SQC160-7; - AUTO_DEVICE = EPM7160SQC160-6; - AUTO_DEVICE = EPM7160STC100-6; - AUTO_DEVICE = EPM7160SLC84-6; - AUTO_DEVICE = EPM7128SQC160-6; - AUTO_DEVICE = EPM7128STC100-6; - AUTO_DEVICE = EPM7128SQC100-6; - AUTO_DEVICE = EPM7128SLC84-6; - AUTO_DEVICE = EPM7064STC100-5; - AUTO_DEVICE = EPM7064SLC84-5; - AUTO_DEVICE = EPM7064STC44-5; - AUTO_DEVICE = EPM7064SLC44-5; - AUTO_DEVICE = EPM7032STC44-5; - AUTO_DEVICE = EPM7032SLC44-5; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EPM7128STC100-10; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = ON; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -LOGIC_OPTIONS -BEGIN - |LR_T1 : TURBO_BIT = ON; - |LR_T0 : TURBO_BIT = ON; - |CLK_WG : TURBO_BIT = ON; - |TG42_BUF : STYLE = WYSIWYG; - |TG42_OUT : STYLE = WYSIWYG; - |XHD_RD : TURBO_BIT = OFF; - |XHD_RES : TURBO_BIT = OFF; - |XHD_WR : TURBO_BIT = OFF; - |XHD1_CS1 : TURBO_BIT = OFF; - |XHD1_CS2 : TURBO_BIT = OFF; - |XHD2_CS1 : TURBO_BIT = OFF; - |XHD2_CS2 : TURBO_BIT = OFF; - |10K_CLK : TURBO_BIT = OFF; - |10K_D0 : TURBO_BIT = OFF; - |REG_P0 : TURBO_BIT = ON; - |REG_P1 : TURBO_BIT = ON; - |REG_P2 : TURBO_BIT = ON; - |TG42_BUF : TURBO_BIT = ON; - |TG42_OUT : TURBO_BIT = ON; - |STWG0 : TURBO_BIT = ON; - |STWG1 : TURBO_BIT = ON; - |STWG2 : TURBO_BIT = ON; - |XCT0 : TURBO_BIT = ON; - |XCT1 : TURBO_BIT = ON; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MULTIVOLT_IO = OFF; - SECURITY_BIT = ON; - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = NORMAL; - AUTO_GLOBAL_CLEAR = OFF; - AUTO_GLOBAL_CLOCK = OFF; - DEVICE_FAMILY = MAX7000S; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - FITTER_SETTINGS = ADVANCED; - USE_QUARTUS_FITTER = OFF; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 25.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - TURBO_BIT = ON; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - IGNORE_SOFT_BUFFERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - TURBO_BIT = ON; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN = AUTO; - MINIMIZATION = FULL; - IGNORE_SOFT_BUFFERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/max/7128/sp2_max.tdf b/src/altera/max/7128/sp2_max.tdf deleted file mode 100644 index b24582c..0000000 --- a/src/altera/max/7128/sp2_max.tdf +++ /dev/null @@ -1,499 +0,0 @@ - -TITLE "SINC_controller"; - -PARAMETERS - ( - G_MODE = 1, -- 1 on LCELL, 0 - on EXP - - NUM = "NO", - NUMBER1 = B"00100000X", -- 0 - sinc - NUMBER2 = B"00110111X", -- 7 - NUMBER3 = B"01001101X", -- D - NUMBER4 = B"01010010X", -- 2 - NUMBER5 = B"00100000X", -- - NUMBER6 = B"00100000X", -- - NUMBER7 = B"00100000X" -- - ); - -SUBDESIGN SP2_MAX - ( - - TG42_IN : INPUT; - TG42_OUT : OUTPUT; - TG42_BUF : OUTPUT; - CLKZZ : BIDIR; - CLK14 : OUTPUT; - - AUD : OUTPUT; -- clk for timers - BEEP : OUTPUT; - - CMOS_DRD : OUTPUT; - CMOS_AS : OUTPUT; - CMOS_DWR : OUTPUT; - - WR_PDOS : OUTPUT; - WD : INPUT; - WSTB : INPUT; - SR,SL : INPUT; - RSTB : INPUT; - TR43 : INPUT; - CLK_WG : OUTPUT; - FDAT : OUTPUT; - QDAT : OUTPUT; - RDAT : INPUT; - /WG_WR : OUTPUT; - /WG_RD : OUTPUT; - STE : INPUT; - DENS_X : OUTPUT; - WDAT : OUTPUT; - - --- XA[2..0] : BIDIR; - XA[2..0] : INPUT; - XACS : INPUT; --- SINC_1 : OUTPUT; - SINC_1 : BIDIR; - SINC_2 : BIDIR; - - HDD_C[3..0] : INPUT; - FDD_C[2..0] : INPUT; - - HD_DIR : OUTPUT; - HD_CS : OUTPUT; - - /CONF_X : BIDIR; - 10K_CLK : OUTPUT; - WR_CNF : INPUT; - 10K_D0 : OUTPUT; - D0 : INPUT; - - VGA_IN : INPUT; --- WR_COL : INPUT; - SINC_V : OUTPUT; - SINC_H : OUTPUT; - SINC : OUTPUT; - SINC_IN : INPUT; - - XHD_RES : OUTPUT; - XHD_WR : OUTPUT; - XHD_RD : OUTPUT; - - XHD1_CS[2..1] : OUTPUT; - XHD2_CS[2..1] : OUTPUT; - XHR_RDY : INPUT; - - EPM_RES : INPUT; - PW_GOOD : INPUT; - - UNUSED65 : INPUT; -- was GND65, hack for 3000 family - UNUSED33 : INPUT; -- was GND33, hack for 3000 family - UNUSED1 : INPUT; - UNUSED2 : INPUT; - UNUSED5 : INPUT; - UNUSED7 : INPUT; - UNUSED22 : INPUT; - UNUSED24 : INPUT; - UNUSED27 : INPUT; - UNUSED28 : INPUT; - UNUSED49 : INPUT; - UNUSED50 : INPUT; - UNUSED53 : INPUT; - UNUSED55 : INPUT; - UNUSED63 : INPUT; - UNUSED70 : INPUT; - UNUSED72 : INPUT; - UNUSED77 : INPUT; - UNUSED78 : INPUT; - - - - ) -VARIABLE - - XCT[2..0] : DFF; - CNF_ON : NODE; - CNF_OFF : NODE; - - CLK42 : NODE; - - CT[3..0] : DFF; - CTH[5..0] : DFF; - CTV[8..0] : DFFE; - - SINC_HT : DFF; - SINC_VT : DFFE; - - TURBING : NODE; - FDD_1440 : NODE; - NFDD_1440 : NODE; - - CT_WG : NODE; - CT_WG1 : NODE; - - STWG[2..0] : DFF; - CLK_PRC : NODE; - WGR[4..0] : DFF; - RDAT_X : NODE; - - REG_P[2..0] : DFF; - - /RESET : NODE; - - - S144,S720 : NODE; - - SHDD1,SHDD2 : NODE; - THDD : NODE; - NTHDD : NODE; - - NO_HDD : NODE; - - S320,S312 : NODE; - T320 : NODE; - NT320 : NODE; - - SOFT_RESET : NODE; - SOFT_RESET2 : NODE; - - HDD_CLK : NODE; - - LR_T[1..0] : DFF; - - EXP_X : NODE; - EXP_Y : NODE; - - CTV8M : DFF; - - CTV8C : NODE; - - FN_NUM : NODE; - -BEGIN - - /RESET = DFF((EPM_RES & XHD_RES),!CT3,SOFT_RESET,); - --- /RESET = (EXP(!EPM_RES & EXP(EXP(EXP(EPM_RES)))) & SOFT_RESET); - - EXP_X = EXP(TG42_IN); - EXP_Y = EXP(TG42_IN); - - IF (G_MODE == 0) GENERATE - TG42_OUT = LCELL(EXP_X); - ELSE GENERATE - TG42_OUT = LCELL(TG42_BUF); - END GENERATE; - - TG42_BUF = LCELL(!TG42_IN); - - CLK42 = TG42_IN; - --- CT[].clk = CLK14; - CT[].clk = XCT1; - CT[] = CT[] + 1; - --- === horizontal sinc ===== - - CTH[].clk = !CT3; - SINC_HT.clk = !CT3; - - IF !((CTH[] == B"XXXX11") & SINC_HT) THEN - CTH[] = CTH[] + 1; - ELSE - CTH[] = GND; - END IF; - --- SINC_1 = CTH5; - SINC_1 = TRI(CTH5,VCC); - SINC_2 = TRI(CTV8,VCC); - - SINC_HT.d = (CTH[] == B"1101XX"); - - SINC_H = SINC_HT; - --- === vertical sinc ======= - --- CTV[].clk = !CT3; --- SINC_VT.clk = !CT3; - - CTV[].clk = SINC_HT; - SINC_VT.clk = SINC_HT; - - CTV8M.clk = SINC_HT; - --- CTV[].ena = (CTH[] == B"110111"); --- SINC_VT.ena = (CTH[] == B"110111"); - CTV[].ena = VCC; - SINC_VT.ena = VCC; - --- IF (CTV[] == B"100111111") THEN - - IF (NUM == "YES") GENERATE - - FN_NUM =( - (CTV[8..0] == NUMBER1) or - (CTV[8..0] == NUMBER2) or - (CTV[8..0] == NUMBER3) or - (CTV[8..0] == NUMBER4) or - (CTV[8..0] == NUMBER5) or - (CTV[8..0] == NUMBER6) or - (CTV[8..0] == NUMBER7) - ) & !NO_HDD; - - ELSE GENERATE - - FN_NUM = GND; - - END GENERATE; - - - IF EXP((CTV[] == B"XXXXXXX11") & SINC_VT) THEN - - (CTV[8..0]) = ((CTV[8..0]) + 1) xor (CTV8M,B"00000000"); - CTV8M = FN_NUM; - - ELSE - CTV[7..0] = GND; - CTV8M = GND; - CTV8 = GND; - END IF; - - SINC_VT.d = ((CTV[8..0] == B"1001111XX") or ((CTV[8..0] == B"1001101XX")) & NT320); - - SINC_V = SINC_VT; - - SINC = SINC_V xor SINC_H; - --- ============================= - --- ========================================= --- divide by 6 - - XCT[].clk = (TG42_IN xor !XCT1); - XCT[].d = XCT[] + 1; - --- CLKZZ = 14 MHz - - CLKZZ = TRI(XCT1,CNF_OFF); - CLK14 = DFF(!CLK14,XCT0,,); - --- test exists - --- CNF_OFF = EXP(CNF_ON & /RESET); --- CNF_ON = EXP(CNF_OFF & XACS); - - CNF_OFF = DFF(GND,GND,XACS,/RESET); - CNF_ON = !CNF_OFF; - --- ========================================= - --- ======== FDD controller ================== - - TURBING = EXP(EXP(TURBING & !WSTB & !RSTB) & !STE & NFDD_1440); --- TURBING = GND; - - CT_WG = TFF(VCC,(XCT1 xor (CT_WG & TURBING)),,); - - STWG[].clk = (CT_WG xor STWG2); - STWG[].d = STWG[] + 1; - - CLK_WG = STWG2; - --- CLK_PRC = STWG0; - CLK_PRC = CT_WG; - - CT_WG1 = EXP(EXP(XCT1 & FDD_1440) & EXP(CT0 & NFDD_1440)); - - WGR[].clk = CT_WG1; - - IF !FDAT THEN - TABLE WGR[3..0] => WGR[3..0].d; - 0 => 4; 1 => 5; 2 => 4; 3 => 5; - 4 => 6; 5 => 7; 6 => 8; 7 => 8; - 8 => 9; 9 => 9; 10 => 10; 11 => 11; - 12 => 12; 13 => 13; 14 => 14; 15 => 15; - END TABLE; - WGR4.d = WGR4; - ELSE - IF WGR[3..0] == 0 THEN - WGR[3..0].d = 3; - WGR4.d = WGR4; - ELSE - WGR[].d = WGR[] + 1; - END IF; - END IF; - - QDAT = WGR4; - RDAT_X = EXP(EXP(RDAT_X & EXP(!RDAT & !CT_WG1)) & EXP(RDAT & !CT_WG1)); --- FDAT = DFF((RDAT_X or !DFF(RDAT_X,CT_WG1,,)),CT_WG1,,); - FDAT = DFF((RDAT_X or EXP(DFF(RDAT_X,CT_WG1,,))),CT_WG1,,); --- ========================================================== --- now not complete! - - AUD = CT3; - BEEP = GND; - --- /CONF_X = TRI(GND,!/RESET); - - /CONF_X = OPNDRN(/RESET); - --- 10K_CLK = WR_CNF; -- now not protect! - - 10K_CLK = DFF((WR_CNF & CNF_OFF) or ((HDD_C0 or FDD_C2) & CNF_ON),CLK42,,); - - 10K_D0 = DFFE(D0,10K_CLK,S720,(S144 & /RESET),CNF_OFF); - - DENS_X = VCC; - --- === now NOT PRECOMP! ===== - --- WDAT = WD; - - WDAT = REG_P2; - - REG_P[].clk = !CLK_PRC; - --- CASE WD IS --- WHEN 1 => REG_P[].d = (GND,SL,!(SL or SR),SR); --- WHEN 0 => REG_P[].d = (EXP(EXP(REG_P2)),REG_P[1..0],GND); --- END CASE; - --- CASE (DFF(WD,CLK_WG,,),DFF((SL & TR43),CLK_WG,,),DFF((SR & TR43),CLK_WG,,)) IS - - LR_T[].clk = STWG2; --- LR_T[].clk = CLK_WG; - - LR_T[].d = ((WD & !(SL & TR43)),(WD & !(SR & TR43))); - - CASE LR_T[] IS - WHEN 0 => REG_P[1..0] = (REG_P[1..0] - 1) & EXP(REG_P[1..0] == 0); - REG_P[2] = EXP(EXP(REG_P[1..0] == 1)); --- REG_P[2] = (REG_P[1..0] == 1); - WHEN 1 => REG_P[1..0] = 1; REG_P[2] = GND; - WHEN 2 => REG_P[1..0] = 3; REG_P[2] = GND; - WHEN 3 => REG_P[1..0] = 2; REG_P[2] = GND; - END CASE; -% - CASE (WD,DFF((SL & TR43),CLK_WG,,),DFF((SR & TR43),CLK_WG,,)) IS - WHEN B"0XX" => REG_P[1..0] = (REG_P[1..0] - 1) & EXP(REG_P[1..0] == 0); - WHEN B"100" => REG_P[1..0] = 2; - WHEN B"110" => REG_P[1..0] = 1; - WHEN B"101" => REG_P[1..0] = 3; - WHEN B"111" => REG_P[1..0] = 2; - END CASE; -% - -% - CASE WD IS - WHEN 0 => REG_P[3] = EXP(EXP(REG_P[1..0] == 1)); - WHEN 1 => REG_P[3] = GND; - END CASE; -% - --- === Port Controls ==================================== -% - FDD_C0 - 0 - WG93 / 1 - kmps/ p_dos - FDD_C1 - 0 - write / 1 - read - FDD_C2 - 0 - no / 1 - CS_WG/ strobe - - HDD_C0 - strobe - HDD_C[2..1] = 00 - SYS_FN, 01 - SYS_FN, 10 - HDD1/2, 11 - CMOS - HDD_C3 - 0 - HD_CS1, 1 HD_CS3 / 0 CMOS_DAT, 1 - CMOS_ADR - - HDD_C[3..0] = 0001, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set 1.44/720 - HDD_C[3..0] = 1001, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set 320/312 lines - HDD_C[3..0] = 0011, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set HDD1/HDD2 - HDD_C[3..0] = 1011, FDD_C[2..1] = 00; -> FDD_C0 = 0 -> soft_reset! - HDD_C[3..0] = X101, FDD_C[2..1] = XX; -> HDD1/2 rd/wr - -% - - SOFT_RESET = !((HDD_C[] == B"1011") & (FDD_C[] == B"000")); - SOFT_RESET2 = !((HDD_C[] == B"1011") & (FDD_C[] == B"001")); - --- FDD switch - --- NFDD_1440 = EXP(FDD_1440 & S720 & /RESET); --- FDD_1440 = EXP(NFDD_1440 & S144); - FDD_1440 = 10K_D0; - NFDD_1440 = !10K_D0; - - S144 = EXP((HDD_C[] == B"0001") & (FDD_C[] == B"001")); - S720 = EXP((HDD_C[] == B"0001") & (FDD_C[] == B"000")); - --- Screen Switch - - T320 = EXP(NT320 & S320 & /RESET); - NT320 = EXP(T320 & S312); - - S312 = EXP((HDD_C[] == B"1001") & (FDD_C[] == B"001")); - S320 = EXP((HDD_C[] == B"1001") & (FDD_C[] == B"000")); - --- HDD Switch - --- THDD = EXP(NTHDD & SHDD2 & /RESET); --- NTHDD = EXP(THDD & SHDD1); - - THDD = EXP(NTHDD & NO_HDD & SHDD2 & /RESET & SOFT_RESET2); - NTHDD = EXP(THDD & NO_HDD & SHDD1 & /RESET & SOFT_RESET2); - NO_HDD = EXP(NTHDD & THDD & SHDD1 & SHDD2); - - SHDD2 = EXP((HDD_C[] == B"0011") & (FDD_C[] == B"001")); - SHDD1 = EXP((HDD_C[] == B"0011") & (FDD_C[] == B"000")); - --- Control signals - - WR_PDOS = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - /WG_WR = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X00")),HDD_CLK,,FDD_C2); - /WG_RD = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X10")),HDD_CLK,,FDD_C2); - - CMOS_DWR = DFF(!((HDD_C[] == B"1110") & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - CMOS_AS =!DFF(!((HDD_C[] == B"0110") & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - CMOS_DRD = DFF(!((HDD_C[] == B"1110") & (FDD_C[] == B"X10")),HDD_CLK,,FDD_C2); - --- HD_DIR = !HDD_C1; -- ???????????? - HD_DIR = XHD_RD; - --- HD_CS = GND; --- HD_CS = CTV8M; - HD_CS = (CTV8M and /RESET); - - --- HD_CS = !/RESET; - --- XHD_RES = VCC; - --- XHD_RES = DFF(PW_GOOD,SINC_V,,); - XHD_RES = DFF(PW_GOOD,SINC_V,EPM_RES,); - --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),CLK42,,); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),CLK42,,); - --- HDD_CLK = EXP(EXP(HDD_C0)); - HDD_CLK = 10K_CLK; - --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1 or !HDD_CLK),CLK42,,HDD_C0); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1 or !HDD_CLK),CLK42,,HDD_C0); --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),HDD_CLK,,HDD_C0); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),HDD_CLK,,HDD_C0); - XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),HDD_CLK,,(HDD_C0 and /RESET)); - XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),HDD_CLK,,(HDD_C0 and /RESET)); - --- XHD1_CS1 = DFF(!((HDD_C[] == B"010X") & NTHDD),CLK42,,); --- XHD1_CS2 = DFF(!((HDD_C[] == B"110X") & NTHDD),CLK42,,); - --- XHD2_CS1 = DFF(!((HDD_C[] == B"010X") & THDD),CLK42,,); --- XHD2_CS2 = DFF(!((HDD_C[] == B"110X") & THDD),CLK42,,); - --- XHD1_CS1 = DFF((!(HDD_C[] == B"010X") or THDD),CLK42,,); --- XHD1_CS2 = DFF((!(HDD_C[] == B"110X") or THDD),CLK42,,); - XHD1_CS1 = DFF((!(HDD_C[] == B"010X") or THDD),CLK42,,/RESET); - XHD1_CS2 = DFF((!(HDD_C[] == B"110X") or THDD),CLK42,,/RESET); - --- XHD2_CS1 = DFF((!(HDD_C[] == B"010X") or NTHDD),CLK42,,); --- XHD2_CS2 = DFF((!(HDD_C[] == B"110X") or NTHDD),CLK42,,); - XHD2_CS1 = DFF((!(HDD_C[] == B"010X") or NTHDD),CLK42,,/RESET); - XHD2_CS2 = DFF((!(HDD_C[] == B"110X") or NTHDD),CLK42,,/RESET); - - -END; - diff --git a/src/altera/max/7128_make.bat b/src/altera/max/7128_make.bat deleted file mode 100644 index c03174c..0000000 --- a/src/altera/max/7128_make.bat +++ /dev/null @@ -1,4 +0,0 @@ -C: -cd "C:\users\tolik\Documents\SP_Projects\ASM\GIT\SP_Core\Build\MAX\tmp\" -"C:\Program Files (x86)\MAXPLUS2\MAXPLUS2.EXE" -compile SP2_MAX >> compile.log -exit \ No newline at end of file diff --git a/src/altera/max/SP2_MAX.TDF b/src/altera/max/SP2_MAX.TDF deleted file mode 100644 index b24582c..0000000 --- a/src/altera/max/SP2_MAX.TDF +++ /dev/null @@ -1,499 +0,0 @@ - -TITLE "SINC_controller"; - -PARAMETERS - ( - G_MODE = 1, -- 1 on LCELL, 0 - on EXP - - NUM = "NO", - NUMBER1 = B"00100000X", -- 0 - sinc - NUMBER2 = B"00110111X", -- 7 - NUMBER3 = B"01001101X", -- D - NUMBER4 = B"01010010X", -- 2 - NUMBER5 = B"00100000X", -- - NUMBER6 = B"00100000X", -- - NUMBER7 = B"00100000X" -- - ); - -SUBDESIGN SP2_MAX - ( - - TG42_IN : INPUT; - TG42_OUT : OUTPUT; - TG42_BUF : OUTPUT; - CLKZZ : BIDIR; - CLK14 : OUTPUT; - - AUD : OUTPUT; -- clk for timers - BEEP : OUTPUT; - - CMOS_DRD : OUTPUT; - CMOS_AS : OUTPUT; - CMOS_DWR : OUTPUT; - - WR_PDOS : OUTPUT; - WD : INPUT; - WSTB : INPUT; - SR,SL : INPUT; - RSTB : INPUT; - TR43 : INPUT; - CLK_WG : OUTPUT; - FDAT : OUTPUT; - QDAT : OUTPUT; - RDAT : INPUT; - /WG_WR : OUTPUT; - /WG_RD : OUTPUT; - STE : INPUT; - DENS_X : OUTPUT; - WDAT : OUTPUT; - - --- XA[2..0] : BIDIR; - XA[2..0] : INPUT; - XACS : INPUT; --- SINC_1 : OUTPUT; - SINC_1 : BIDIR; - SINC_2 : BIDIR; - - HDD_C[3..0] : INPUT; - FDD_C[2..0] : INPUT; - - HD_DIR : OUTPUT; - HD_CS : OUTPUT; - - /CONF_X : BIDIR; - 10K_CLK : OUTPUT; - WR_CNF : INPUT; - 10K_D0 : OUTPUT; - D0 : INPUT; - - VGA_IN : INPUT; --- WR_COL : INPUT; - SINC_V : OUTPUT; - SINC_H : OUTPUT; - SINC : OUTPUT; - SINC_IN : INPUT; - - XHD_RES : OUTPUT; - XHD_WR : OUTPUT; - XHD_RD : OUTPUT; - - XHD1_CS[2..1] : OUTPUT; - XHD2_CS[2..1] : OUTPUT; - XHR_RDY : INPUT; - - EPM_RES : INPUT; - PW_GOOD : INPUT; - - UNUSED65 : INPUT; -- was GND65, hack for 3000 family - UNUSED33 : INPUT; -- was GND33, hack for 3000 family - UNUSED1 : INPUT; - UNUSED2 : INPUT; - UNUSED5 : INPUT; - UNUSED7 : INPUT; - UNUSED22 : INPUT; - UNUSED24 : INPUT; - UNUSED27 : INPUT; - UNUSED28 : INPUT; - UNUSED49 : INPUT; - UNUSED50 : INPUT; - UNUSED53 : INPUT; - UNUSED55 : INPUT; - UNUSED63 : INPUT; - UNUSED70 : INPUT; - UNUSED72 : INPUT; - UNUSED77 : INPUT; - UNUSED78 : INPUT; - - - - ) -VARIABLE - - XCT[2..0] : DFF; - CNF_ON : NODE; - CNF_OFF : NODE; - - CLK42 : NODE; - - CT[3..0] : DFF; - CTH[5..0] : DFF; - CTV[8..0] : DFFE; - - SINC_HT : DFF; - SINC_VT : DFFE; - - TURBING : NODE; - FDD_1440 : NODE; - NFDD_1440 : NODE; - - CT_WG : NODE; - CT_WG1 : NODE; - - STWG[2..0] : DFF; - CLK_PRC : NODE; - WGR[4..0] : DFF; - RDAT_X : NODE; - - REG_P[2..0] : DFF; - - /RESET : NODE; - - - S144,S720 : NODE; - - SHDD1,SHDD2 : NODE; - THDD : NODE; - NTHDD : NODE; - - NO_HDD : NODE; - - S320,S312 : NODE; - T320 : NODE; - NT320 : NODE; - - SOFT_RESET : NODE; - SOFT_RESET2 : NODE; - - HDD_CLK : NODE; - - LR_T[1..0] : DFF; - - EXP_X : NODE; - EXP_Y : NODE; - - CTV8M : DFF; - - CTV8C : NODE; - - FN_NUM : NODE; - -BEGIN - - /RESET = DFF((EPM_RES & XHD_RES),!CT3,SOFT_RESET,); - --- /RESET = (EXP(!EPM_RES & EXP(EXP(EXP(EPM_RES)))) & SOFT_RESET); - - EXP_X = EXP(TG42_IN); - EXP_Y = EXP(TG42_IN); - - IF (G_MODE == 0) GENERATE - TG42_OUT = LCELL(EXP_X); - ELSE GENERATE - TG42_OUT = LCELL(TG42_BUF); - END GENERATE; - - TG42_BUF = LCELL(!TG42_IN); - - CLK42 = TG42_IN; - --- CT[].clk = CLK14; - CT[].clk = XCT1; - CT[] = CT[] + 1; - --- === horizontal sinc ===== - - CTH[].clk = !CT3; - SINC_HT.clk = !CT3; - - IF !((CTH[] == B"XXXX11") & SINC_HT) THEN - CTH[] = CTH[] + 1; - ELSE - CTH[] = GND; - END IF; - --- SINC_1 = CTH5; - SINC_1 = TRI(CTH5,VCC); - SINC_2 = TRI(CTV8,VCC); - - SINC_HT.d = (CTH[] == B"1101XX"); - - SINC_H = SINC_HT; - --- === vertical sinc ======= - --- CTV[].clk = !CT3; --- SINC_VT.clk = !CT3; - - CTV[].clk = SINC_HT; - SINC_VT.clk = SINC_HT; - - CTV8M.clk = SINC_HT; - --- CTV[].ena = (CTH[] == B"110111"); --- SINC_VT.ena = (CTH[] == B"110111"); - CTV[].ena = VCC; - SINC_VT.ena = VCC; - --- IF (CTV[] == B"100111111") THEN - - IF (NUM == "YES") GENERATE - - FN_NUM =( - (CTV[8..0] == NUMBER1) or - (CTV[8..0] == NUMBER2) or - (CTV[8..0] == NUMBER3) or - (CTV[8..0] == NUMBER4) or - (CTV[8..0] == NUMBER5) or - (CTV[8..0] == NUMBER6) or - (CTV[8..0] == NUMBER7) - ) & !NO_HDD; - - ELSE GENERATE - - FN_NUM = GND; - - END GENERATE; - - - IF EXP((CTV[] == B"XXXXXXX11") & SINC_VT) THEN - - (CTV[8..0]) = ((CTV[8..0]) + 1) xor (CTV8M,B"00000000"); - CTV8M = FN_NUM; - - ELSE - CTV[7..0] = GND; - CTV8M = GND; - CTV8 = GND; - END IF; - - SINC_VT.d = ((CTV[8..0] == B"1001111XX") or ((CTV[8..0] == B"1001101XX")) & NT320); - - SINC_V = SINC_VT; - - SINC = SINC_V xor SINC_H; - --- ============================= - --- ========================================= --- divide by 6 - - XCT[].clk = (TG42_IN xor !XCT1); - XCT[].d = XCT[] + 1; - --- CLKZZ = 14 MHz - - CLKZZ = TRI(XCT1,CNF_OFF); - CLK14 = DFF(!CLK14,XCT0,,); - --- test exists - --- CNF_OFF = EXP(CNF_ON & /RESET); --- CNF_ON = EXP(CNF_OFF & XACS); - - CNF_OFF = DFF(GND,GND,XACS,/RESET); - CNF_ON = !CNF_OFF; - --- ========================================= - --- ======== FDD controller ================== - - TURBING = EXP(EXP(TURBING & !WSTB & !RSTB) & !STE & NFDD_1440); --- TURBING = GND; - - CT_WG = TFF(VCC,(XCT1 xor (CT_WG & TURBING)),,); - - STWG[].clk = (CT_WG xor STWG2); - STWG[].d = STWG[] + 1; - - CLK_WG = STWG2; - --- CLK_PRC = STWG0; - CLK_PRC = CT_WG; - - CT_WG1 = EXP(EXP(XCT1 & FDD_1440) & EXP(CT0 & NFDD_1440)); - - WGR[].clk = CT_WG1; - - IF !FDAT THEN - TABLE WGR[3..0] => WGR[3..0].d; - 0 => 4; 1 => 5; 2 => 4; 3 => 5; - 4 => 6; 5 => 7; 6 => 8; 7 => 8; - 8 => 9; 9 => 9; 10 => 10; 11 => 11; - 12 => 12; 13 => 13; 14 => 14; 15 => 15; - END TABLE; - WGR4.d = WGR4; - ELSE - IF WGR[3..0] == 0 THEN - WGR[3..0].d = 3; - WGR4.d = WGR4; - ELSE - WGR[].d = WGR[] + 1; - END IF; - END IF; - - QDAT = WGR4; - RDAT_X = EXP(EXP(RDAT_X & EXP(!RDAT & !CT_WG1)) & EXP(RDAT & !CT_WG1)); --- FDAT = DFF((RDAT_X or !DFF(RDAT_X,CT_WG1,,)),CT_WG1,,); - FDAT = DFF((RDAT_X or EXP(DFF(RDAT_X,CT_WG1,,))),CT_WG1,,); --- ========================================================== --- now not complete! - - AUD = CT3; - BEEP = GND; - --- /CONF_X = TRI(GND,!/RESET); - - /CONF_X = OPNDRN(/RESET); - --- 10K_CLK = WR_CNF; -- now not protect! - - 10K_CLK = DFF((WR_CNF & CNF_OFF) or ((HDD_C0 or FDD_C2) & CNF_ON),CLK42,,); - - 10K_D0 = DFFE(D0,10K_CLK,S720,(S144 & /RESET),CNF_OFF); - - DENS_X = VCC; - --- === now NOT PRECOMP! ===== - --- WDAT = WD; - - WDAT = REG_P2; - - REG_P[].clk = !CLK_PRC; - --- CASE WD IS --- WHEN 1 => REG_P[].d = (GND,SL,!(SL or SR),SR); --- WHEN 0 => REG_P[].d = (EXP(EXP(REG_P2)),REG_P[1..0],GND); --- END CASE; - --- CASE (DFF(WD,CLK_WG,,),DFF((SL & TR43),CLK_WG,,),DFF((SR & TR43),CLK_WG,,)) IS - - LR_T[].clk = STWG2; --- LR_T[].clk = CLK_WG; - - LR_T[].d = ((WD & !(SL & TR43)),(WD & !(SR & TR43))); - - CASE LR_T[] IS - WHEN 0 => REG_P[1..0] = (REG_P[1..0] - 1) & EXP(REG_P[1..0] == 0); - REG_P[2] = EXP(EXP(REG_P[1..0] == 1)); --- REG_P[2] = (REG_P[1..0] == 1); - WHEN 1 => REG_P[1..0] = 1; REG_P[2] = GND; - WHEN 2 => REG_P[1..0] = 3; REG_P[2] = GND; - WHEN 3 => REG_P[1..0] = 2; REG_P[2] = GND; - END CASE; -% - CASE (WD,DFF((SL & TR43),CLK_WG,,),DFF((SR & TR43),CLK_WG,,)) IS - WHEN B"0XX" => REG_P[1..0] = (REG_P[1..0] - 1) & EXP(REG_P[1..0] == 0); - WHEN B"100" => REG_P[1..0] = 2; - WHEN B"110" => REG_P[1..0] = 1; - WHEN B"101" => REG_P[1..0] = 3; - WHEN B"111" => REG_P[1..0] = 2; - END CASE; -% - -% - CASE WD IS - WHEN 0 => REG_P[3] = EXP(EXP(REG_P[1..0] == 1)); - WHEN 1 => REG_P[3] = GND; - END CASE; -% - --- === Port Controls ==================================== -% - FDD_C0 - 0 - WG93 / 1 - kmps/ p_dos - FDD_C1 - 0 - write / 1 - read - FDD_C2 - 0 - no / 1 - CS_WG/ strobe - - HDD_C0 - strobe - HDD_C[2..1] = 00 - SYS_FN, 01 - SYS_FN, 10 - HDD1/2, 11 - CMOS - HDD_C3 - 0 - HD_CS1, 1 HD_CS3 / 0 CMOS_DAT, 1 - CMOS_ADR - - HDD_C[3..0] = 0001, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set 1.44/720 - HDD_C[3..0] = 1001, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set 320/312 lines - HDD_C[3..0] = 0011, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set HDD1/HDD2 - HDD_C[3..0] = 1011, FDD_C[2..1] = 00; -> FDD_C0 = 0 -> soft_reset! - HDD_C[3..0] = X101, FDD_C[2..1] = XX; -> HDD1/2 rd/wr - -% - - SOFT_RESET = !((HDD_C[] == B"1011") & (FDD_C[] == B"000")); - SOFT_RESET2 = !((HDD_C[] == B"1011") & (FDD_C[] == B"001")); - --- FDD switch - --- NFDD_1440 = EXP(FDD_1440 & S720 & /RESET); --- FDD_1440 = EXP(NFDD_1440 & S144); - FDD_1440 = 10K_D0; - NFDD_1440 = !10K_D0; - - S144 = EXP((HDD_C[] == B"0001") & (FDD_C[] == B"001")); - S720 = EXP((HDD_C[] == B"0001") & (FDD_C[] == B"000")); - --- Screen Switch - - T320 = EXP(NT320 & S320 & /RESET); - NT320 = EXP(T320 & S312); - - S312 = EXP((HDD_C[] == B"1001") & (FDD_C[] == B"001")); - S320 = EXP((HDD_C[] == B"1001") & (FDD_C[] == B"000")); - --- HDD Switch - --- THDD = EXP(NTHDD & SHDD2 & /RESET); --- NTHDD = EXP(THDD & SHDD1); - - THDD = EXP(NTHDD & NO_HDD & SHDD2 & /RESET & SOFT_RESET2); - NTHDD = EXP(THDD & NO_HDD & SHDD1 & /RESET & SOFT_RESET2); - NO_HDD = EXP(NTHDD & THDD & SHDD1 & SHDD2); - - SHDD2 = EXP((HDD_C[] == B"0011") & (FDD_C[] == B"001")); - SHDD1 = EXP((HDD_C[] == B"0011") & (FDD_C[] == B"000")); - --- Control signals - - WR_PDOS = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - /WG_WR = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X00")),HDD_CLK,,FDD_C2); - /WG_RD = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X10")),HDD_CLK,,FDD_C2); - - CMOS_DWR = DFF(!((HDD_C[] == B"1110") & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - CMOS_AS =!DFF(!((HDD_C[] == B"0110") & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - CMOS_DRD = DFF(!((HDD_C[] == B"1110") & (FDD_C[] == B"X10")),HDD_CLK,,FDD_C2); - --- HD_DIR = !HDD_C1; -- ???????????? - HD_DIR = XHD_RD; - --- HD_CS = GND; --- HD_CS = CTV8M; - HD_CS = (CTV8M and /RESET); - - --- HD_CS = !/RESET; - --- XHD_RES = VCC; - --- XHD_RES = DFF(PW_GOOD,SINC_V,,); - XHD_RES = DFF(PW_GOOD,SINC_V,EPM_RES,); - --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),CLK42,,); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),CLK42,,); - --- HDD_CLK = EXP(EXP(HDD_C0)); - HDD_CLK = 10K_CLK; - --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1 or !HDD_CLK),CLK42,,HDD_C0); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1 or !HDD_CLK),CLK42,,HDD_C0); --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),HDD_CLK,,HDD_C0); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),HDD_CLK,,HDD_C0); - XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),HDD_CLK,,(HDD_C0 and /RESET)); - XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),HDD_CLK,,(HDD_C0 and /RESET)); - --- XHD1_CS1 = DFF(!((HDD_C[] == B"010X") & NTHDD),CLK42,,); --- XHD1_CS2 = DFF(!((HDD_C[] == B"110X") & NTHDD),CLK42,,); - --- XHD2_CS1 = DFF(!((HDD_C[] == B"010X") & THDD),CLK42,,); --- XHD2_CS2 = DFF(!((HDD_C[] == B"110X") & THDD),CLK42,,); - --- XHD1_CS1 = DFF((!(HDD_C[] == B"010X") or THDD),CLK42,,); --- XHD1_CS2 = DFF((!(HDD_C[] == B"110X") or THDD),CLK42,,); - XHD1_CS1 = DFF((!(HDD_C[] == B"010X") or THDD),CLK42,,/RESET); - XHD1_CS2 = DFF((!(HDD_C[] == B"110X") or THDD),CLK42,,/RESET); - --- XHD2_CS1 = DFF((!(HDD_C[] == B"010X") or NTHDD),CLK42,,); --- XHD2_CS2 = DFF((!(HDD_C[] == B"110X") or NTHDD),CLK42,,); - XHD2_CS1 = DFF((!(HDD_C[] == B"010X") or NTHDD),CLK42,,/RESET); - XHD2_CS2 = DFF((!(HDD_C[] == B"110X") or NTHDD),CLK42,,/RESET); - - -END; - diff --git a/src/altera/max/SP2_MAX_7128.pof b/src/altera/max/SP2_MAX_7128.pof deleted file mode 100644 index 7cc9468..0000000 Binary files a/src/altera/max/SP2_MAX_7128.pof and /dev/null differ diff --git a/src/altera/max/clean.bat b/src/altera/max/clean.bat deleted file mode 100644 index 4496ad1..0000000 --- a/src/altera/max/clean.bat +++ /dev/null @@ -1,28 +0,0 @@ -@echo off - -del *.txt -del *.bak -del *.cnf -del *.db? - -del *.hif -del *.mmf -del *.mtf -del *.mtb -del *.hex -del *.ndb -del *.pin -del *.pof -del *.snf -del *.fit -del *.jam -del *.jbc -del *.log -del *.rpt - -del *.SCF -del *.ACF -rem del *.TDF -del *.INC -del *.MIF - diff --git a/src/altera/max/compile.log b/src/altera/max/compile.log deleted file mode 100644 index d1f3d16..0000000 --- a/src/altera/max/compile.log +++ /dev/null @@ -1,214 +0,0 @@ -07.09.2022 00:27: [2/2] ALTERA MAX-7128 STREAM -7128\SP2_MAX.ACF -Скопировано файлов: 1. - -********************************************************************** -MAX+plus II -Version 10.0 9/14/2000 -Copyright (c) 1988-2000 Altera Corporation. All rights reserved. - -This material is made available for use under a license from Altera -and its use is subject to all conditions and restrictions provided -by the license agreement. U.S. and foreign patents apply to the -software program and the semiconductor components which are programmed -using the software program. - -This program, these components, and the system comprising both -are covered by one or more of the following U.S. patents: - -6,097,211; 6,094,064; 6,091,258; 6,091,102; 6,085,317; 6,084,427; -6,081,449; 6,080,204; 6,078,521; 6,076,179; 6,075,380; 6,072,358; -6,072,332; 6,069,487; 6,066,960; 6,064,599; 6,060,903; 6,058,452; -6,057,707; 6,052,755; 6,052,309; 6,052,327; 6,049,223; 6,049,225; -6,045,252; 6,043,676; 6,040,712; 6,038,171; 6,037,829; 6,034,857; -6,034,540; 6,034,536; 6,032,159; 6,031,763; 6,031,391; 6,029,236; -6,028,809; 6,028,808; 6,028,787; 6,026,226; 6,025,737; 6,023,439; -6,020,760; 6,020,759; 6,020,758; 6,018,490; 6,018,476; 6,014,334; -6,011,744; 6,011,730; 6,011,406; 6,005,379; 5,999,016; 5,999,015; -5,998,295; 5,996,039; 5,986,470; 5,986,465; 5,983,277; 5,982,195; -5,978,476; 5,977,793; 5,977,791; 5,968,161; 5,970,255; 5,966,597; -5,963,565; 5,969,051; 5,963,069; 5,963,049; 5,959,891; 5,953;537; -5,949,991; 5,949,710; 5,949,250; 5,949,239; 5,954,751; 5,943,267; -5,942,914; 5,940,852; 5,939,790; 5,936,425; 5,926,036; 5,925,904; -5,923,567; 5,915,756; 5,915,017; 5,909,450; 5,909,375; 5,909,126; -5,905,675; 5,904,524; 5,900,743; 5,898,628; 5,898,318; 5,894,228; -5,893,088; 5,892,683; 5,883,526; 5,880,725; 5,880,597; 5,880,596; -5,878,250; 5,875,112; 5,873,113; 5,872,529; 5,872,463; 5,870,410; -5,869,980; 5,869,979; 5,861,760; 5,859,544; 5,859,542; 5,850,365; -5,850,152; 5,850,151; 5,848,005; 5,847,617; 5,845,385; 5,844,854; -RE35,977; 5,838,628; 5,838,584; 5,835,998; 5,834,849; 5,828,229; -5,825,197; 5,821,787: 5,821,773; 5,821,771; 5,815,726; 5,815,024; -5,815,003; 5,812,479; 5,812,450; 5,809,281; 5,809,034; 5,805,516; -5,802,540; 5,801,541; 5,796,267; 5,793,246; 5,790,469; 5,787,009; -5,771,264; 5,768,562; 5,768,372; 5,767,734; 5,764,583; 5,764,569; -5,764,080; 5,764,079; 5,761,099; 5,760,624; 5,757,207; 5,757,070; -5,744,991; 5,744,383; 5,740,110; 5,732,020; 5,729,495; 5,717,901; -5,705,939; 5,699,020; 5,699,312; 5,696,455; 5,693,540; 5,694,058; -5,691,653; 5,689,195; 5,668,771; 5,680,061; 5,672,985; 5,670,895; -5,659,717; 5,650,734; 5,649,163; 5,642,262; 5,642,082; 5,633,830; -5,631,576; 5,621,312; 5,614,840; 5,612,642; 5,608,337; 5,606,276; -5,606,266; 5,604,453; 5,598,109; 5,598,108; 5,592,106; 5,592,102; -5,590,305; 5,583,749; 5,581,501; 5,574,893; 5,572,717; 5,572,148; -5,572,067; 5,570,040; 5,567,177; 5,565,793; 5,563,592; 5,561,757; -5,557,217; 5,555,214; 5,550,842; 5,550,782; 5,548,552; 5,548,228; -5,543,732; 5,543,730; 5,541,530; 5,537,295; 5,537,057; 5,525,917; -5,525,827; 5,523,706; 5,523,247; 5,517,186; 5,498,975; 5,495,182; -5,493,526; 5,493,519; 5,490,266; 5,488,586; 5,487,143; 5,486,775; -5,485,103; 5,485,102; 5,483,178; 5,477,474; 5,473,266; 5,463,328, -5,444,394; 5,438,295; 5,436,575; 5,436,574; 5,434,514; 5,432,467; -5,414,312; 5,399,922; 5,384,499; 5,376,844; 5,371,422; 5,369,314; -5,359,243; 5,359,242; 5,353,248; 5,352,940; 5,309,046; 5,350,954; -5,349,255; 5,341,308; 5,341,048; 5,341,044; 5,329,487; 5,317,210; -5,315,172; 5,301,416; 5,294,975; 5,285,153; 5,280,203; 5,274,581; -5,272,368; 5,268,598; 5,266,037; 5,260,611; 5,260,610; 5,258,668; -5,247,478; 5,247,477; 5,243,233; 5,241,224; 5,237,219; 5,220,533; -5,220,214; 5,200,920; 5,187,392; 5,166,604; 5,162,680; 5,144,167; -5,138,576; 5,128,565; 5,121,006; 5,111,423; 5,097,208; 5,091,661; -5,066,873; 5,045,772; 4,969,121; 4,930,107; 4,930,098; 4,930,097; -4,912,342; 4,903,223; 4,899,070; 4,899,067; 4,871,930; 4,864,161; -4,831,573; 4,785,423; 4,774,421; 4,713,792; 4,677,318; 4,617,479; -4,609,986; 4,020,469; Additional patents are pending. - -Altera Corporation acknowledges the trademarks of other organizations -for their respective products or services mentioned in this software. - -********************************************************************** -Compiling project f:\sprinter\src\altera\max\sp2_max .... - -**** Compiler Netlist Extractor **** - -Processing . -- 0% done -Warning: Line 106, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED78" was declared but never used -Warning: Line 52, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "XA2" was declared but never used -Warning: Line 167, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "CTV8C" was declared but never used -Warning: Line 89, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED33" was declared but never used -Warning: Line 52, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "XA1" was declared but never used -Warning: Line 93, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED7" was declared but never used -Warning: Line 83, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "XHR_RDY" was declared but never used -Warning: Line 52, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "XA0" was declared but never used -Warning: Line 103, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED70" was declared but never used -Warning: Line 101, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED55" was declared but never used -Warning: Line 92, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED5" was declared but never used -Warning: Line 162, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "EXP_X" was declared but never used -Warning: Line 94, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED22" was declared but never used -Warning: Line 91, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED2" was declared but never used -Warning: Line 98, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED49" was declared but never used -Warning: Line 104, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED72" was declared but never used -Warning: Line 163, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "EXP_Y" was declared but never used -Warning: Line 100, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED53" was declared but never used -Warning: Line 70, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "VGA_IN" was declared but never used -Warning: Line 95, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED24" was declared but never used -Warning: Line 99, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED50" was declared but never used -Warning: Line 88, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED65" was declared but never used -Warning: Line 90, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED1" was declared but never used -Warning: Line 105, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED77" was declared but never used -Warning: Line 75, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "SINC_IN" was declared but never used -Warning: Line 102, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED63" was declared but never used -Warning: Line 96, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED27" was declared but never used -Warning: Line 97, File f:\sprinter\src\altera\max\sp2_max.tdf: -Symbolic name "UNUSED28" was declared but never used -Processing .. -- 100% done -Warning: Timing requirement assignments influence compilation only for FLEX 6000, FLEX 8000, and FLEX 10K devices. However, the Compiler will check whether it can meet your timing requirements. - -**** Database Builder **** - -Processing . -- 0% done -Processing .. -- 100% done - -**** Logic Synthesizer **** - -Processing . -- 0% done -Warning: Flipflop 'CTV8M' stuck at GND -Warning: No Clock transition on flipflop 'CNF_OFF' -Warning: Primitive 'BEEP' is stuck at GND -Warning: Primitive 'DENS_X' is stuck at VCC -Warning: Primitive 'HD_CS' is stuck at GND -Info: NOT Gate Push-Back has occurred on some registers -- if the power-up condition is crucial to the operation of the circuit, use the asynchronous Clear/Preset on the register to ensure proper operation -Processing .. -- 100% done - -**** Partitioner **** - -Processing . -- 0% done -Warning: Project has user pin or logic cell assignments, but has never been compiled before. For best fitting results, let the Compiler choose the first set of assignments instead. -Info: Reserved unused input pin 'XA2' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'XA1' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'XA0' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'VGA_IN' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'SINC_IN' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'XHR_RDY' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED65' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED33' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED1' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED2' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED5' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED7' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED22' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED24' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED27' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED28' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED49' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED50' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED53' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED55' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED63' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED70' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED72' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED77' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED78' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Processing .. -- 100% done - -**** Fitter **** - -Processing . -- 0% done -Info: Chip 'SP2_MAX' in device 'EPM7128STC100-10' has less than 20% of pins available for future logic changes -- if your project is likely to change, Altera recommends using a larger device -Processing .. -- 100% done - -**** Timing SNF Extractor **** - -Processing . -- 0% done -Processing .. -- 100% done -Warning: Found ripple clock -- warning messages and Report File information on tco, tsu, and fmax may be inaccurate -Info: One or more paths have been found between registers controlled by different clocks -- can't calculate fmax for those paths -Warning: Can't provide fmax of 100.00 MHz on Clock pin "RSTB". Current fmax is 43.47 MHz. -Warning: Can't provide fmax of 100.00 MHz on Clock pin "STE". Current fmax is 43.47 MHz. -Warning: Can't provide fmax of 100.00 MHz on Clock pin "TG42_IN". Current fmax is 27.02 MHz. -Warning: Can't provide fmax of 100.00 MHz on Clock pin "WSTB". Current fmax is 43.47 MHz. -Info: Found a total of 4 timing assignments that were not implemented -Project compilation was successful - 0 errors - 39 warnings -Не удается найти F:\Sprinter\src\altera\max\*.txt -Не удается найти F:\Sprinter\src\altera\max\*.bak -Не удается найти F:\Sprinter\src\altera\max\*.db? -Не удается найти F:\Sprinter\src\altera\max\*.mtb -Не удается найти F:\Sprinter\src\altera\max\*.hex -Не удается найти F:\Sprinter\src\altera\max\*.SCF -Не удается найти F:\Sprinter\src\altera\max\*.INC -Не удается найти F:\Sprinter\src\altera\max\*.MIF diff --git a/src/altera/max/make.cmd b/src/altera/max/make.cmd deleted file mode 100644 index faeff7e..0000000 --- a/src/altera/max/make.cmd +++ /dev/null @@ -1,46 +0,0 @@ -@echo off -@echo off -set BIN=..\..\bin\ -set LOG=compile.log -for /F %%i in ('date /t') do set mydate=%%i -for /F %%i in ('time /t') do set mytime=%%i -set mydt=%mydate% %mytime% - -set CHIP=7128 - -echo 0. [2/2] ALTERA MAX-%CHIP% STREAM -echo %mydt%: [2/2] ALTERA MAX-%CHIP% STREAM > %LOG% - -if exist SP2_MAX_%CHIP%.pof goto quit - -copy %CHIP%\*.ACF .\*.* >> %LOG% 2>&1 - -C:\MAXPLUS2\MAXPLUS2.EXE -compile SP2_MAX >> %LOG% - -del *.txt >> %LOG% 2>&1 -del *.bak >> %LOG% 2>&1 -del *.cnf >> %LOG% 2>&1 -del *.db? >> %LOG% 2>&1 - -del *.hif >> %LOG% 2>&1 -del *.mmf >> %LOG% 2>&1 -del *.mtf >> %LOG% 2>&1 -del *.mtb >> %LOG% 2>&1 -del *.hex >> %LOG% 2>&1 -del *.ndb >> %LOG% 2>&1 -del *.pin >> %LOG% 2>&1 -rem del *.pof >> %LOG% 2>&1 -del *.snf >> %LOG% 2>&1 -del *.fit >> %LOG% 2>&1 -del *.jam >> %LOG% 2>&1 -del *.jbc >> %LOG% 2>&1 - -del *.SCF >> %LOG% 2>&1 -del *.ACF >> %LOG% 2>&1 -rem del *.TDF >> %LOG% 2>&1 -del *.INC >> %LOG% 2>&1 -del *.MIF >> %LOG% 2>&1 - -ren SP2_MAX.pof SP2_MAX_%CHIP%.pof >> %LOG% 2>&1 - -:quit diff --git a/src/altera/max/sp2_max.rpt b/src/altera/max/sp2_max.rpt deleted file mode 100644 index 92b7c72..0000000 --- a/src/altera/max/sp2_max.rpt +++ /dev/null @@ -1,1585 +0,0 @@ -Project Information f:\sprinter\src\altera\max\sp2_max.rpt - -MAX+plus II Compiler Report File -Version 10.0 9/14/2000 -Compiled: 09/07/2022 00:27:59 - -Copyright (C) 1988-2000 Altera Corporation -Any megafunction design, and related net list (encrypted or decrypted), -support information, device programming or simulation file, and any other -associated documentation or information provided by Altera or a partner -under Altera's Megafunction Partnership Program may be used only to -program PLD devices (but not masked PLD devices) from Altera. Any other -use of such megafunction design, net list, support information, device -programming or simulation file, or any other related documentation or -information is prohibited for any other purpose, including, but not -limited to modification, reverse engineering, de-compiling, or use with -any other silicon devices, unless such use is explicitly licensed under -a separate agreement with Altera or a megafunction partner. Title to -the intellectual property, including patents, copyrights, trademarks, -trade secrets, or maskworks, embodied in any such megafunction design, -net list, support information, device programming or simulation file, or -any other related documentation or information provided by Altera or a -megafunction partner, remains with Altera, the megafunction partner, or -their respective licensors. No other licenses, including any licenses -needed under any third party's intellectual property, are provided herein. - - - -***** Project compilation was successful - - -SINC_controller - - -** DEVICE SUMMARY ** - -Chip/ Input Output Bidir Shareable -POF Device Pins Pins Pins LCs Expanders % Utilized - -SP2_MAX EPM7128STC100-10 46 30 4 64 40 50 % - -User Pins: 46 30 4 - - - -Project Information f:\sprinter\src\altera\max\sp2_max.rpt - -** PROJECT COMPILATION MESSAGES ** - -Warning: Line 106, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED78" was declared but never used -Warning: Line 52, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "XA2" was declared but never used -Warning: Line 167, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "CTV8C" was declared but never used -Warning: Line 89, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED33" was declared but never used -Warning: Line 52, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "XA1" was declared but never used -Warning: Line 93, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED7" was declared but never used -Warning: Line 83, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "XHR_RDY" was declared but never used -Warning: Line 52, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "XA0" was declared but never used -Warning: Line 103, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED70" was declared but never used -Warning: Line 101, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED55" was declared but never used -Warning: Line 92, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED5" was declared but never used -Warning: Line 162, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "EXP_X" was declared but never used -Warning: Line 94, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED22" was declared but never used -Warning: Line 91, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED2" was declared but never used -Warning: Line 98, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED49" was declared but never used -Warning: Line 104, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED72" was declared but never used -Warning: Line 163, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "EXP_Y" was declared but never used -Warning: Line 100, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED53" was declared but never used -Warning: Line 70, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "VGA_IN" was declared but never used -Warning: Line 95, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED24" was declared but never used -Warning: Line 99, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED50" was declared but never used -Warning: Line 88, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED65" was declared but never used -Warning: Line 90, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED1" was declared but never used -Warning: Line 105, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED77" was declared but never used -Warning: Line 75, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "SINC_IN" was declared but never used -Warning: Line 102, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED63" was declared but never used -Warning: Line 96, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED27" was declared but never used -Warning: Line 97, File f:\sprinter\src\altera\max\sp2_max.tdf: - Symbolic name "UNUSED28" was declared but never used -Warning: Flipflop 'CTV8M' stuck at GND -Warning: No Clock transition on flipflop 'CNF_OFF' -Warning: Primitive 'BEEP' is stuck at GND -Warning: Primitive 'DENS_X' is stuck at VCC -Warning: Primitive 'HD_CS' is stuck at GND -Warning: Project has user pin or logic cell assignments, but has never been compiled before. For best fitting results, let the Compiler choose the first set of assignments instead. -Info: Reserved unused input pin 'XA2' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'XA1' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'XA0' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'VGA_IN' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'SINC_IN' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'XHR_RDY' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED65' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED33' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED1' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED2' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED5' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED7' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED22' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED24' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED27' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED28' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED49' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED50' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED53' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED55' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED63' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED70' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED72' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED77' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board -Info: Reserved unused input pin 'UNUSED78' for future use because it has a pin assignment -- pin is tri-stated and must be connected to your board - - -** PROJECT TIMING MESSAGES ** - -Warning: Found ripple clock -- warning messages and Report File information on tco, tsu, and fmax may be inaccurate -Warning: Can't provide fmax of 100.00 MHz on Clock pin "RSTB". Current fmax is 43.47 MHz. -Warning: Can't provide fmax of 100.00 MHz on Clock pin "STE". Current fmax is 43.47 MHz. -Warning: Can't provide fmax of 100.00 MHz on Clock pin "TG42_IN". Current fmax is 27.02 MHz. -Warning: Can't provide fmax of 100.00 MHz on Clock pin "WSTB". Current fmax is 43.47 MHz. - - -Project Information f:\sprinter\src\altera\max\sp2_max.rpt - -** PIN/LOCATION/CHIP ASSIGNMENTS ** - - Actual - User Assignments -Assignments (if different) Node Name - -SP2_MAX@35 AUD -SP2_MAX@84 BEEP -SP2_MAX@13 CLK_WG -SP2_MAX@32 CLKZZ -SP2_MAX@31 CLK14 -SP2_MAX@6 CMOS_AS -SP2_MAX@99 CMOS_DRD -SP2_MAX@100 CMOS_DWR -SP2_MAX@54 /CONF_X -SP2_MAX@96 DENS_X -SP2_MAX@60 D0 -SP2_MAX@89 EPM_RES -SP2_MAX@14 FDAT -SP2_MAX@44 FDD_C0 -SP2_MAX@45 FDD_C1 -SP2_MAX@46 FDD_C2 -SP2_MAX@52 HD_CS -SP2_MAX@47 HDD_C0 -SP2_MAX@42 HDD_C1 -SP2_MAX@41 HDD_C2 -SP2_MAX@40 HDD_C3 -SP2_MAX@48 HD_DIR -SP2_MAX@90 PW_GOOD -SP2_MAX@16 QDAT -SP2_MAX@92 RDAT -SP2_MAX@25 RSTB -SP2_MAX@67 SINC -SP2_MAX@68 SINC_H -SP2_MAX@69 SINC_IN -SP2_MAX@64 SINC_V -SP2_MAX@20 SINC_1 -SP2_MAX@19 SINC_2 -SP2_MAX@30 SL -SP2_MAX@29 SR -SP2_MAX@94 STE -SP2_MAX@36 TG42_BUF -SP2_MAX@87 TG42_IN -SP2_MAX@85 TG42_OUT -SP2_MAX@12 TR43 -SP2_MAX@1 UNUSED1 -SP2_MAX@2 UNUSED2 -SP2_MAX@5 UNUSED5 -SP2_MAX@7 UNUSED7 -SP2_MAX@22 UNUSED22 -SP2_MAX@24 UNUSED24 -SP2_MAX@27 UNUSED27 -SP2_MAX@28 UNUSED28 -SP2_MAX@33 UNUSED33 -SP2_MAX@49 UNUSED49 -SP2_MAX@50 UNUSED50 -SP2_MAX@53 UNUSED53 -SP2_MAX@55 UNUSED55 -SP2_MAX@63 UNUSED63 -SP2_MAX@65 UNUSED65 -SP2_MAX@70 UNUSED70 -SP2_MAX@72 UNUSED72 -SP2_MAX@77 UNUSED77 -SP2_MAX@78 UNUSED78 -SP2_MAX@61 VGA_IN -SP2_MAX@9 WD -SP2_MAX@98 WDAT -SP2_MAX@97 /WG_RD -SP2_MAX@93 /WG_WR -SP2_MAX@57 WR_CNF -SP2_MAX@8 WR_PDOS -SP2_MAX@10 WSTB -SP2_MAX@37 XACS -SP2_MAX@17 XA0 -SP2_MAX@21 XA1 -SP2_MAX@23 XA2 -SP2_MAX@76 XHD_RD -SP2_MAX@71 XHD_RES -SP2_MAX@75 XHD_WR -SP2_MAX@79 XHD1_CS1 -SP2_MAX@80 XHD1_CS2 -SP2_MAX@81 XHD2_CS1 -SP2_MAX@83 XHD2_CS2 -SP2_MAX@88 XHR_RDY -SP2_MAX@56 10K_CLK -SP2_MAX@58 10K_D0 - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -***** Logic for device 'SP2_MAX' compiled without errors. - - - - -Device: EPM7128STC100-10 - -Device Options: - Turbo Bit = ON - Security Bit = ON - Enable JTAG Support = ON - User Code = ffff - MultiVolt I/O = OFF - - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** ERROR SUMMARY ** - -Info: Chip 'SP2_MAX' in device 'EPM7128STC100-10' has less than 20% of pins available for future logic changes -- if your project is likely to change, Altera recommends using a larger device - C C T X X X X U U - M M P E X T G H H H H N N - O O / D / V W P H G 4 D D D D U U X - S S W E W C _ M R 4 2 2 V 2 1 1 S S H - _ _ W G N G R C G _ _ 2 _ B _ C _ _ _ E E D - D D D _ S G S _ D I O R R _ G O E C C C C C D D _ - W R A R _ N T W A N O E D I N U E S I S S S 7 7 R - R D T D X D E R T T D S Y N D T P 2 O 1 2 1 8 7 D - ----------------------------------------------------_ - / 100 98 96 94 92 90 88 86 84 82 80 78 76 |_ - / 99 97 95 93 91 89 87 85 83 81 79 77 | - UNUSED1 | 1 75 | XHD_WR - UNUSED2 | 2 74 | GND - VCCIO | 3 73 | #TDO - #TDI | 4 72 | UNUSED72 - UNUSED5 | 5 71 | XHD_RES - CMOS_AS | 6 70 | UNUSED70 - UNUSED7 | 7 69 | SINC_IN - WR_PDOS | 8 68 | SINC_H - WD | 9 67 | SINC - WSTB | 10 66 | VCCIO - GND | 11 65 | UNUSED65 - TR43 | 12 64 | SINC_V - CLK_WG | 13 EPM7128STC100-10 63 | UNUSED63 - FDAT | 14 62 | #TCK - #TMS | 15 61 | VGA_IN - QDAT | 16 60 | D0 - XA0 | 17 59 | GND - VCCIO | 18 58 | 10K_D0 - SINC_2 | 19 57 | WR_CNF - SINC_1 | 20 56 | 10K_CLK - XA1 | 21 55 | UNUSED55 -UNUSED22 | 22 54 | /CONF_X - XA2 | 23 53 | UNUSED53 -UNUSED24 | 24 52 | HD_CS - RSTB | 25 51 | VCCIO - | 27 29 31 33 35 37 39 41 43 45 47 49 _| - \ 26 28 30 32 34 36 38 40 42 44 46 48 50 | - \----------------------------------------------------- - G U U S S C C U V A T X G V H H H G F F F H H U U - N N N R L L L N C U G A N C D D D N D D D D D N N - D U U K K U C D 4 C D C D D D D D D D D _ U U - S S 1 Z S I 2 S I _ _ _ _ _ _ _ D S S - E E 4 Z E O _ N C C C C C C C I E E - D D D B T 3 2 1 0 1 2 0 R D D - 2 2 3 U 4 5 - 7 8 3 F 9 0 - - -N.C. = No Connect. This pin has no internal connection to the device. -VCCINT = Dedicated power pin, which MUST be connected to VCC (5.0 volts). -VCCIO = Dedicated power pin, which MUST be connected to VCC (5.0 volts). -GND = Dedicated ground pin or unused dedicated input, which MUST be connected to GND. -RESERVED = Unused I/O pin, which MUST be left unconnected. - -^ = Dedicated configuration pin. -+ = Reserved configuration pin, which is tri-stated during user mode. -* = Reserved configuration pin, which drives out in user mode. -PDn = Power Down pin. -@ = Special-purpose pin. -# = JTAG Boundary-Scan Testing/In-System Programming or Configuration Pin. The JTAG inputs TMS and TDI should be tied to VCC and TCK should be tied to GND when not in use. -& = JTAG pin used for I/O. When used as user I/O, JTAG pins must be kept stable before and during configuration. JTAG pin stability prevents accidental loading of JTAG instructions. - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** RESOURCE USAGE ** - - Shareable External -Logic Array Block Logic Cells I/O Pins Expanders Interconnect - -A: LC1 - LC16 6/16( 37%) 10/10(100%) 2/16( 12%) 13/36( 36%) -B: LC17 - LC32 14/16( 87%) 10/10(100%) 11/16( 68%) 28/36( 77%) -C: LC33 - LC48 16/16(100%) 10/10(100%) 6/16( 37%) 26/36( 72%) -D: LC49 - LC64 6/16( 37%) 10/10(100%) 2/16( 12%) 6/36( 16%) -E: LC65 - LC80 2/16( 12%) 10/10(100%) 6/16( 37%) 12/36( 33%) -F: LC81 - LC96 4/16( 25%) 10/10(100%) 3/16( 18%) 17/36( 47%) -G: LC97 - LC112 8/16( 50%) 10/10(100%) 5/16( 31%) 31/36( 86%) -H: LC113 - LC128 8/16( 50%) 10/10(100%) 7/16( 43%) 11/36( 30%) - - -Total dedicated input pins used: 4/4 (100%) -Total I/O pins used: 80/80 (100%) -Total logic cells used: 64/128 ( 50%) -Total shareable expanders used: 40/128 ( 31%) -Total Turbo logic cells used: 55/128 ( 42%) -Total shareable expanders not available (n/a): 2/128 ( 1%) -Average fan-in: 5.73 -Total fan-in: 367 - -Total input pins required: 46 -Total fast input logic cells required: 0 -Total output pins required: 30 -Total bidirectional pins required: 4 -Total reserved pins required 4 -Total logic cells required: 64 -Total flipflops required: 58 -Total product terms required: 222 -Total logic cells lending parallel expanders: 0 -Total shareable expanders in database: 35 - -Synthesized logic cells: 0/ 128 ( 0%) - - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** INPUTS ** - - Shareable - Expanders Fan-In Fan-Out - Pin LC LAB Primitive Code Total Shared n/a INP FBK OUT FBK Name - 32 56 D BIDIR 2 2 0 1 2 4 10 CLKZZ - 54 85 F OPNDRN 0 0 0 8 2 9 1 /CONF_X - 60 (93) (F) INPUT 0 0 0 0 0 1 0 D0 - 89 - - INPUT 0 0 0 0 0 2 0 EPM_RES - 44 (70) (E) INPUT 0 0 0 0 0 13 0 FDD_C0 - 45 (72) (E) INPUT 0 0 0 0 0 16 0 FDD_C1 - 46 (73) (E) INPUT 0 0 0 0 0 14 0 FDD_C2 - 47 (75) (E) INPUT 0 0 0 0 0 17 0 HDD_C0 - 42 (69) (E) INPUT 0 0 0 0 0 16 0 HDD_C1 - 41 (67) (E) INPUT 0 0 0 0 0 16 0 HDD_C2 - 40 (65) (E) INPUT 0 0 0 0 0 13 0 HDD_C3 - 90 - - INPUT 0 0 0 0 0 1 0 PW_GOOD - 92 (16) (A) INPUT 0 0 0 0 0 1 1 RDAT - 25 (33) (C) INPUT 0 0 0 0 0 0 1 RSTB - 69 (105) (G) INPUT 0 0 0 0 0 0 0 SINC_IN - 20 41 C BIDIR 0 0 0 0 8 2 0 SINC_1 - 19 43 C BIDIR 2 1 0 0 11 2 0 SINC_2 - 30 (59) (D) INPUT 0 0 0 0 0 0 1 SL - 29 (61) (D) INPUT 0 0 0 0 0 0 1 SR - 94 (13) (A) INPUT 0 0 0 0 0 0 1 STE - 87 - - INPUT 0 0 0 0 0 7 1 TG42_IN - 12 (21) (B) INPUT 0 0 0 0 0 0 2 TR43 - 1 (3) (A) INPUT 0 0 0 0 0 0 0 UNUSED1 - 2 (1) (A) INPUT 0 0 0 0 0 0 0 UNUSED2 - 5 (30) (B) INPUT 0 0 0 0 0 0 0 UNUSED5 - 7 (27) (B) INPUT 0 0 0 0 0 0 0 UNUSED7 - 22 (38) (C) INPUT 0 0 0 0 0 0 0 UNUSED22 - 24 (35) (C) INPUT 0 0 0 0 0 0 0 UNUSED24 - 27 (64) (D) INPUT 0 0 0 0 0 0 0 UNUSED27 - 28 (62) (D) INPUT 0 0 0 0 0 0 0 UNUSED28 - 33 (54) (D) INPUT 0 0 0 0 0 0 0 UNUSED33 - 49 (78) (E) INPUT 0 0 0 0 0 0 0 UNUSED49 - 50 (80) (E) INPUT 0 0 0 0 0 0 0 UNUSED50 - 53 (83) (F) INPUT 0 0 0 0 0 0 0 UNUSED53 - 55 (86) (F) INPUT 0 0 0 0 0 0 0 UNUSED55 - 63 (97) (G) INPUT 0 0 0 0 0 0 0 UNUSED63 - 65 (101) (G) INPUT 0 0 0 0 0 0 0 UNUSED65 - 70 (107) (G) INPUT 0 0 0 0 0 0 0 UNUSED70 - 72 (110) (G) INPUT 0 0 0 0 0 0 0 UNUSED72 - 77 (117) (H) INPUT 0 0 0 0 0 0 0 UNUSED77 - 78 (118) (H) INPUT 0 0 0 0 0 0 0 UNUSED78 - 61 (94) (F) INPUT 0 0 0 0 0 0 0 VGA_IN - 9 (24) (B) INPUT 0 0 0 0 0 0 2 WD - 57 (89) (F) INPUT 0 0 0 0 0 1 0 WR_CNF - 10 (22) (B) INPUT 0 0 0 0 0 0 1 WSTB - 37 (49) (D) INPUT 0 0 0 0 0 0 1 XACS - 17 (45) (C) INPUT 0 0 0 0 0 0 0 XA0 - 21 (40) (C) INPUT 0 0 0 0 0 0 0 XA1 - 23 (37) (C) INPUT 0 0 0 0 0 0 0 XA2 - 88 - - INPUT 0 0 0 0 0 0 0 XHR_RDY - - -Code: - -s = Synthesized pin or logic cell -t = Turbo logic cell -+ = Synchronous flipflop -/ = Slow slew-rate output -! = NOT gate push-back -r = Fitter-inserted logic cell - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** OUTPUTS ** - - Shareable - Expanders Fan-In Fan-Out - Pin LC LAB Primitive Code Total Shared n/a INP FBK OUT FBK Name - 35 53 D FF t 0 0 0 0 4 3 5 AUD - 84 126 H OUTPUT t 0 0 0 0 0 0 0 BEEP - 13 19 B FF t 2 2 0 0 4 1 4 CLK_WG - 32 56 D TRI/FF t 2 2 0 1 2 4 10 CLKZZ - 31 57 D FF t 0 0 0 0 1 0 0 CLK14 - 6 29 B FF t ! 0 0 0 7 1 0 0 CMOS_AS - 99 6 A FF t 0 0 0 7 1 0 0 CMOS_DRD - 100 5 A FF t 0 0 0 7 1 0 0 CMOS_DWR - 54 85 F OPNDRN/FF t 0 0 0 8 2 9 1 /CONF_X - 96 11 A OUTPUT t 0 0 0 0 0 0 0 DENS_X - 14 17 B FF t 8 7 0 1 4 1 4 FDAT - 52 81 F OUTPUT t 0 0 0 0 0 0 0 HD_CS - 48 77 E FF t 1 1 0 4 2 0 0 HD_DIR - 16 46 C FF t 3 3 0 0 8 0 0 QDAT - 67 102 G OUTPUT t 0 0 0 0 2 0 0 SINC - 68 104 G FF t 0 0 0 0 5 4 11 SINC_H - 64 99 G FF t 4 0 0 7 9 3 8 SINC_V - 20 41 C TRI/FF t 0 0 0 0 8 2 0 SINC_1 - 19 43 C TRI/FF t 2 1 0 0 11 2 0 SINC_2 - 36 51 D OUTPUT t 0 0 0 1 0 1 0 TG42_BUF - 85 128 H OUTPUT t 0 0 0 0 1 0 0 TG42_OUT - 98 8 A FF t 2 0 0 0 5 0 0 WDAT - 97 9 A FF t 0 0 0 7 1 0 0 /WG_RD - 93 14 A FF t 0 0 0 7 1 0 0 /WG_WR - 8 25 B FF t 0 0 0 7 1 0 0 WR_PDOS - 76 115 H FF 1 1 0 4 2 0 0 XHD_RD - 71 109 G FF 0 0 0 2 1 1 0 XHD_RES - 75 113 H FF 1 1 0 4 2 0 0 XHD_WR - 79 120 H FF 6 6 0 8 1 0 0 XHD1_CS1 - 80 121 H FF 6 6 0 8 1 0 0 XHD1_CS2 - 81 123 H FF 6 6 0 8 1 0 0 XHD2_CS1 - 83 125 H FF 6 6 0 8 1 0 0 XHD2_CS2 - 56 88 F FF 0 0 0 4 1 10 0 10K_CLK - 58 91 F FF 3 0 1 8 4 3 6 10K_D0 - - -Code: - -s = Synthesized pin or logic cell -t = Turbo logic cell -+ = Synchronous flipflop -/ = Slow slew-rate output -! = NOT gate push-back -r = Fitter-inserted logic cell - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** BURIED LOGIC ** - - Shareable - Expanders Fan-In Fan-Out - Pin LC LAB Primitive Code Total Shared n/a INP FBK OUT FBK Name - (12) 21 B DFFE t 0 0 0 1 1 2 0 CNF_OFF - (21) 40 C TFFE t 0 0 0 0 1 1 4 CTH0 - - 39 C TFFE t 0 0 0 0 2 1 3 CTH1 - (17) 45 C TFFE t 0 0 0 0 5 2 3 CTH2 - (24) 35 C TFFE t 0 0 0 0 6 2 2 CTH3 - (23) 37 C TFFE t 0 0 0 0 7 2 1 CTH4 - (69) 105 G DFFE t 1 1 0 0 4 1 8 CTV0 - - 103 G DFFE t 1 1 0 0 4 1 8 CTV1 - (22) 38 C DFFE t 1 1 0 0 5 2 6 CTV2 - - 36 C TFFE t 1 1 0 0 6 2 5 CTV3 - - 34 C TFFE t 1 1 0 0 7 2 4 CTV4 - - 47 C TFFE t 1 1 0 0 8 2 3 CTV5 - (15) 48 C TFFE t 1 1 0 0 9 2 2 CTV6 - - 44 C TFFE t 1 1 0 0 10 2 1 CTV7 - (40) 65 E TFFE t 5 0 0 3 3 2 5 CT_WG - - 23 B TFFE t 0 0 0 0 1 3 7 CT0 - - 20 B TFFE t 0 0 0 0 2 1 1 CT1 - - 58 D TFFE t 0 0 0 0 3 1 0 CT2 - - 98 G DFFE t 0 0 0 3 1 1 2 LR_T0 - (65) 101 G DFFE t 0 0 0 3 1 1 2 LR_T1 - - 26 B DFFE t 1 1 0 0 5 1 2 REG_P0 - (10) 22 B DFFE t 1 1 0 0 5 1 2 REG_P1 - (7) 27 B TFFE t 2 2 0 0 2 1 1 STWG0 - (5) 30 B TFFE t 2 2 0 0 3 1 0 STWG1 - - 42 C TFFE t 3 3 0 0 8 1 4 WGR0 - (25) 33 C TFFE t 4 3 1 0 8 1 4 WGR1 - - 28 B TFFE t 3 3 0 0 8 1 4 WGR2 - (4) 32 B TFFE t 3 3 0 0 8 1 4 WGR3 - (37) 49 D TFFE t 2 2 0 1 1 2 0 XCT0 - (9) 24 B DFFE t 7 7 0 1 3 1 0 :197 - - -Code: - -s = Synthesized pin or logic cell -t = Turbo logic cell -+ = Synchronous flipflop -/ = Slow slew-rate output -! = NOT gate push-back -r = Fitter-inserted logic cell - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** LOGIC CELL INTERCONNECTIONS ** - -Logic Array Block 'A': - - Logic cells placed in LAB 'A' - +----------- LC6 CMOS_DRD - | +--------- LC5 CMOS_DWR - | | +------- LC11 DENS_X - | | | +----- LC8 WDAT - | | | | +--- LC9 /WG_RD - | | | | | +- LC14 /WG_WR - | | | | | | - | | | | | | Other LABs fed by signals - | | | | | | that feed LAB 'A' -LC | | | | | | | A B C D E F G H | Logic cells that feed LAB 'A': - -Pin -89 -> - - - - - - | - - - - - * * - | <-- EPM_RES -44 -> * * - - * * | * * - - - * * * | <-- FDD_C0 -45 -> * * - - * * | * * - - * * * * | <-- FDD_C1 -46 -> * * - - * * | * * - - - * * * | <-- FDD_C2 -47 -> * * - - * * | * * - - * * * * | <-- HDD_C0 -42 -> * * - - * * | * * - - * * * * | <-- HDD_C1 -41 -> * * - - * * | * * - - * * * * | <-- HDD_C2 -40 -> * * - - * * | * * - - - * * * | <-- HDD_C3 -90 -> - - - - - - | - - - - - - * - | <-- PW_GOOD -87 -> - - - - - - | - - - * - * - * | <-- TG42_IN -88 -> - - - - - - | - - - - - - - - | <-- XHR_RDY -LC65 -> - - - * - - | * * - - * - - - | <-- CT_WG -LC98 -> - - - * - - | * * - - - - - - | <-- LR_T0 -LC101-> - - - * - - | * * - - - - - - | <-- LR_T1 -LC26 -> - - - * - - | * * - - - - - - | <-- REG_P0 -LC22 -> - - - * - - | * * - - - - - - | <-- REG_P1 -LC88 -> * * - - * * | * * - - * * - * | <-- 10K_CLK - - -* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA. -- = The logic cell or pin is not an input to the logic cell (or LAB). - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** LOGIC CELL INTERCONNECTIONS ** - -Logic Array Block 'B': - - Logic cells placed in LAB 'B' - +--------------------------- LC19 CLK_WG - | +------------------------- LC29 CMOS_AS - | | +----------------------- LC21 CNF_OFF - | | | +--------------------- LC23 CT0 - | | | | +------------------- LC20 CT1 - | | | | | +----------------- LC17 FDAT - | | | | | | +--------------- LC26 REG_P0 - | | | | | | | +------------- LC22 REG_P1 - | | | | | | | | +----------- LC27 STWG0 - | | | | | | | | | +--------- LC30 STWG1 - | | | | | | | | | | +------- LC28 WGR2 - | | | | | | | | | | | +----- LC32 WGR3 - | | | | | | | | | | | | +--- LC25 WR_PDOS - | | | | | | | | | | | | | +- LC24 :197 - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | Other LABs fed by signals - | | | | | | | | | | | | | | that feed LAB 'B' -LC | | | | | | | | | | | | | | | A B C D E F G H | Logic cells that feed LAB 'B': -LC19 -> * - - - - - - - * * - - - - | - * - - - - * - | <-- CLK_WG -LC23 -> - - - * * * - - - - * * - * | - * * * - - - - | <-- CT0 -LC17 -> - - - - - - - - - - * * - - | - * * - - - - - | <-- FDAT -LC26 -> - - - - - - * * - - - - - - | * * - - - - - - | <-- REG_P0 -LC22 -> - - - - - - * * - - - - - - | * * - - - - - - | <-- REG_P1 -LC27 -> * - - - - - - - * * - - - - | - * - - - - - - | <-- STWG0 -LC30 -> * - - - - - - - - * - - - - | - * - - - - - - | <-- STWG1 -LC28 -> - - - - - - - - - - * * - - | - * * - - - - - | <-- WGR2 -LC32 -> - - - - - - - - - - * * - - | - * * - - - - - | <-- WGR3 -LC24 -> - - - - - * - - - - - - - - | - * - - - - - - | <-- :197 - -Pin -89 -> - - - - - - - - - - - - - - | - - - - - * * - | <-- EPM_RES -44 -> - * - - - - - - - - - - * - | * * - - - * * * | <-- FDD_C0 -45 -> - * - - - - - - - - - - * - | * * - - * * * * | <-- FDD_C1 -46 -> - * - - - - - - - - - - * - | * * - - - * * * | <-- FDD_C2 -47 -> - * - - - - - - - - - - * - | * * - - * * * * | <-- HDD_C0 -42 -> - * - - - - - - - - - - * - | * * - - * * * * | <-- HDD_C1 -41 -> - * - - - - - - - - - - * - | * * - - * * * * | <-- HDD_C2 -40 -> - * - - - - - - - - - - * - | * * - - - * * * | <-- HDD_C3 -90 -> - - - - - - - - - - - - - - | - - - - - - * - | <-- PW_GOOD -92 -> - - - - - * - - - - - - - * | - * - - - - - - | <-- RDAT -87 -> - - - - - - - - - - - - - - | - - - * - * - * | <-- TG42_IN -37 -> - - * - - - - - - - - - - - | - * - - - - - - | <-- XACS -88 -> - - - - - - - - - - - - - - | - - - - - - - - | <-- XHR_RDY -LC56 -> - - - * * * - - - - * * - * | - * * * * - - - | <-- CLKZZ -LC85 -> - - * - - - - - - - - - - - | - * - - * * * * | <-- /CONF_X -LC65 -> * - - - - - * * * * - - - - | * * - - * - - - | <-- CT_WG -LC98 -> - - - - - - * * - - - - - - | * * - - - - - - | <-- LR_T0 -LC101-> - - - - - - * * - - - - - - | * * - - - - - - | <-- LR_T1 -LC42 -> - - - - - - - - - - * * - - | - * * - - - - - | <-- WGR0 -LC33 -> - - - - - - - - - - * * - - | - * * - - - - - | <-- WGR1 -LC88 -> - * - - - - - - - - - - * - | * * - - * * - * | <-- 10K_CLK -LC91 -> - - - - - * - - - - * * - * | - * * - * * - - | <-- 10K_D0 - - -* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA. -- = The logic cell or pin is not an input to the logic cell (or LAB). - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** LOGIC CELL INTERCONNECTIONS ** - -Logic Array Block 'C': - - Logic cells placed in LAB 'C' - +------------------------------- LC40 CTH0 - | +----------------------------- LC39 CTH1 - | | +--------------------------- LC45 CTH2 - | | | +------------------------- LC35 CTH3 - | | | | +----------------------- LC37 CTH4 - | | | | | +--------------------- LC38 CTV2 - | | | | | | +------------------- LC36 CTV3 - | | | | | | | +----------------- LC34 CTV4 - | | | | | | | | +--------------- LC47 CTV5 - | | | | | | | | | +------------- LC48 CTV6 - | | | | | | | | | | +----------- LC44 CTV7 - | | | | | | | | | | | +--------- LC46 QDAT - | | | | | | | | | | | | +------- LC41 SINC_1 - | | | | | | | | | | | | | +----- LC43 SINC_2 - | | | | | | | | | | | | | | +--- LC42 WGR0 - | | | | | | | | | | | | | | | +- LC33 WGR1 - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | Other LABs fed by signals - | | | | | | | | | | | | | | | | that feed LAB 'C' -LC | | | | | | | | | | | | | | | | | A B C D E F G H | Logic cells that feed LAB 'C': -LC40 -> * * * * * - - - - - - - * - - - | - - * - - - - - | <-- CTH0 -LC39 -> - * * * * - - - - - - - * - - - | - - * - - - - - | <-- CTH1 -LC45 -> - - * * * - - - - - - - * - - - | - - * - - - * - | <-- CTH2 -LC35 -> - - - * * - - - - - - - * - - - | - - * - - - * - | <-- CTH3 -LC37 -> - - - - * - - - - - - - * - - - | - - * - - - * - | <-- CTH4 -LC38 -> - - - - - * * * * * * - - * - - | - - * - - - * - | <-- CTV2 -LC36 -> - - - - - - * * * * * - - * - - | - - * - - - * - | <-- CTV3 -LC34 -> - - - - - - - * * * * - - * - - | - - * - - - * - | <-- CTV4 -LC47 -> - - - - - - - - * * * - - * - - | - - * - - - * - | <-- CTV5 -LC48 -> - - - - - - - - - * * - - * - - | - - * - - - * - | <-- CTV6 -LC44 -> - - - - - - - - - - * - - * - - | - - * - - - * - | <-- CTV7 -LC41 -> - - - - - - - - - - - - * - - - | - - * - - - * - | <-- SINC_1 -LC43 -> - - - - - - - - - - - - - * - - | - - * - - - * - | <-- SINC_2 -LC42 -> - - - - - - - - - - - * - - * * | - * * - - - - - | <-- WGR0 -LC33 -> - - - - - - - - - - - * - - * * | - * * - - - - - | <-- WGR1 - -Pin -89 -> - - - - - - - - - - - - - - - - | - - - - - * * - | <-- EPM_RES -90 -> - - - - - - - - - - - - - - - - | - - - - - - * - | <-- PW_GOOD -87 -> - - - - - - - - - - - - - - - - | - - - * - * - * | <-- TG42_IN -88 -> - - - - - - - - - - - - - - - - | - - - - - - - - | <-- XHR_RDY -LC53 -> * * * * * - - - - - - - * - - - | - - * - - * * - | <-- AUD -LC56 -> - - - - - - - - - - - * - - * * | - * * * * - - - | <-- CLKZZ -LC105-> - - - - - * * * * * * - - * - - | - - * - - - * - | <-- CTV0 -LC103-> - - - - - * * * * * * - - * - - | - - * - - - * - | <-- CTV1 -LC23 -> - - - - - - - - - - - * - - * * | - * * * - - - - | <-- CT0 -LC17 -> - - - - - - - - - - - * - - * * | - * * - - - - - | <-- FDAT -LC104-> - - * * * * * * * * * - * * - - | - - * - - - * - | <-- SINC_H -LC99 -> - - - - - * * * * * * - - * - - | - - * - - - * - | <-- SINC_V -LC28 -> - - - - - - - - - - - * - - * * | - * * - - - - - | <-- WGR2 -LC32 -> - - - - - - - - - - - * - - * * | - * * - - - - - | <-- WGR3 -LC91 -> - - - - - - - - - - - * - - * * | - * * - * * - - | <-- 10K_D0 - - -* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA. -- = The logic cell or pin is not an input to the logic cell (or LAB). - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** LOGIC CELL INTERCONNECTIONS ** - -Logic Array Block 'D': - - Logic cells placed in LAB 'D' - +----------- LC53 AUD - | +--------- LC56 CLKZZ - | | +------- LC57 CLK14 - | | | +----- LC58 CT2 - | | | | +--- LC51 TG42_BUF - | | | | | +- LC49 XCT0 - | | | | | | - | | | | | | Other LABs fed by signals - | | | | | | that feed LAB 'D' -LC | | | | | | | A B C D E F G H | Logic cells that feed LAB 'D': -LC56 -> * * - * - * | - * * * * - - - | <-- CLKZZ -LC58 -> * - - * - - | - - - * - - - - | <-- CT2 -LC49 -> - * * - - * | - - - * - - - - | <-- XCT0 - -Pin -89 -> - - - - - - | - - - - - * * - | <-- EPM_RES -90 -> - - - - - - | - - - - - - * - | <-- PW_GOOD -87 -> - * - - * * | - - - * - * - * | <-- TG42_IN -88 -> - - - - - - | - - - - - - - - | <-- XHR_RDY -LC23 -> * - - * - - | - * * * - - - - | <-- CT0 -LC20 -> * - - * - - | - - - * - - - - | <-- CT1 - - -* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA. -- = The logic cell or pin is not an input to the logic cell (or LAB). - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** LOGIC CELL INTERCONNECTIONS ** - -Logic Array Block 'E': - - Logic cells placed in LAB 'E' - +--- LC65 CT_WG - | +- LC77 HD_DIR - | | - | | Other LABs fed by signals - | | that feed LAB 'E' -LC | | | A B C D E F G H | Logic cells that feed LAB 'E': -LC65 -> * - | * * - - * - - - | <-- CT_WG - -Pin -89 -> - - | - - - - - * * - | <-- EPM_RES -45 -> - * | * * - - * * * * | <-- FDD_C1 -47 -> - * | * * - - * * * * | <-- HDD_C0 -42 -> - * | * * - - * * * * | <-- HDD_C1 -41 -> - * | * * - - * * * * | <-- HDD_C2 -90 -> - - | - - - - - - * - | <-- PW_GOOD -25 -> * - | - - - - * - - - | <-- RSTB -94 -> * - | - - - - * - - - | <-- STE -87 -> - - | - - - * - * - * | <-- TG42_IN -10 -> * - | - - - - * - - - | <-- WSTB -88 -> - - | - - - - - - - - | <-- XHR_RDY -LC56 -> * - | - * * * * - - - | <-- CLKZZ -LC85 -> - * | - * - - * * * * | <-- /CONF_X -LC88 -> - * | * * - - * * - * | <-- 10K_CLK -LC91 -> * - | - * * - * * - - | <-- 10K_D0 - - -* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA. -- = The logic cell or pin is not an input to the logic cell (or LAB). - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** LOGIC CELL INTERCONNECTIONS ** - -Logic Array Block 'F': - - Logic cells placed in LAB 'F' - +------- LC85 /CONF_X - | +----- LC81 HD_CS - | | +--- LC88 10K_CLK - | | | +- LC91 10K_D0 - | | | | - | | | | Other LABs fed by signals - | | | | that feed LAB 'F' -LC | | | | | A B C D E F G H | Logic cells that feed LAB 'F': -LC85 -> - - - * | - * - - * * * * | <-- /CONF_X -LC88 -> - - - * | * * - - * * - * | <-- 10K_CLK -LC91 -> - - - * | - * * - * * - - | <-- 10K_D0 - -Pin -60 -> - - - * | - - - - - * - - | <-- D0 -89 -> * - - - | - - - - - * * - | <-- EPM_RES -44 -> * - - * | * * - - - * * * | <-- FDD_C0 -45 -> * - - * | * * - - * * * * | <-- FDD_C1 -46 -> * - * * | * * - - - * * * | <-- FDD_C2 -47 -> * - * * | * * - - * * * * | <-- HDD_C0 -42 -> * - - * | * * - - * * * * | <-- HDD_C1 -41 -> * - - * | * * - - * * * * | <-- HDD_C2 -40 -> * - - * | * * - - - * * * | <-- HDD_C3 -90 -> - - - - | - - - - - - * - | <-- PW_GOOD -87 -> - - * - | - - - * - * - * | <-- TG42_IN -57 -> - - * - | - - - - - * - - | <-- WR_CNF -88 -> - - - - | - - - - - - - - | <-- XHR_RDY -LC53 -> * - - - | - - * - - * * - | <-- AUD -LC21 -> - - * * | - - - - - * - - | <-- CNF_OFF -LC109-> * - - - | - - - - - * - - | <-- XHD_RES - - -* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA. -- = The logic cell or pin is not an input to the logic cell (or LAB). - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** LOGIC CELL INTERCONNECTIONS ** - -Logic Array Block 'G': - - Logic cells placed in LAB 'G' - +--------------- LC105 CTV0 - | +------------- LC103 CTV1 - | | +----------- LC98 LR_T0 - | | | +--------- LC101 LR_T1 - | | | | +------- LC102 SINC - | | | | | +----- LC104 SINC_H - | | | | | | +--- LC99 SINC_V - | | | | | | | +- LC109 XHD_RES - | | | | | | | | - | | | | | | | | Other LABs fed by signals - | | | | | | | | that feed LAB 'G' -LC | | | | | | | | | A B C D E F G H | Logic cells that feed LAB 'G': -LC105-> * * - - - - - - | - - * - - - * - | <-- CTV0 -LC103-> * * - - - - - - | - - * - - - * - | <-- CTV1 -LC104-> * * - - * - * - | - - * - - - * - | <-- SINC_H -LC99 -> * * - - * - - * | - - * - - - * - | <-- SINC_V - -Pin -89 -> - - - - - - - * | - - - - - * * - | <-- EPM_RES -44 -> - - - - - - * - | * * - - - * * * | <-- FDD_C0 -45 -> - - - - - - * - | * * - - * * * * | <-- FDD_C1 -46 -> - - - - - - * - | * * - - - * * * | <-- FDD_C2 -47 -> - - - - - - * - | * * - - * * * * | <-- HDD_C0 -42 -> - - - - - - * - | * * - - * * * * | <-- HDD_C1 -41 -> - - - - - - * - | * * - - * * * * | <-- HDD_C2 -40 -> - - - - - - * - | * * - - - * * * | <-- HDD_C3 -90 -> - - - - - - - * | - - - - - - * - | <-- PW_GOOD -30 -> - - - * - - - - | - - - - - - * - | <-- SL -29 -> - - * - - - - - | - - - - - - * - | <-- SR -87 -> - - - - - - - - | - - - * - * - * | <-- TG42_IN -12 -> - - * * - - - - | - - - - - - * - | <-- TR43 -9 -> - - * * - - - - | - - - - - - * - | <-- WD -88 -> - - - - - - - - | - - - - - - - - | <-- XHR_RDY -LC53 -> - - - - - * - - | - - * - - * * - | <-- AUD -LC19 -> - - * * - - - - | - * - - - - * - | <-- CLK_WG -LC85 -> - - - - - - * - | - * - - * * * * | <-- /CONF_X -LC45 -> - - - - - * - - | - - * - - - * - | <-- CTH2 -LC35 -> - - - - - * - - | - - * - - - * - | <-- CTH3 -LC37 -> - - - - - * - - | - - * - - - * - | <-- CTH4 -LC38 -> - - - - - - * - | - - * - - - * - | <-- CTV2 -LC36 -> - - - - - - * - | - - * - - - * - | <-- CTV3 -LC34 -> - - - - - - * - | - - * - - - * - | <-- CTV4 -LC47 -> - - - - - - * - | - - * - - - * - | <-- CTV5 -LC48 -> - - - - - - * - | - - * - - - * - | <-- CTV6 -LC44 -> - - - - - - * - | - - * - - - * - | <-- CTV7 -LC41 -> - - - - - * - - | - - * - - - * - | <-- SINC_1 -LC43 -> - - - - - - * - | - - * - - - * - | <-- SINC_2 - - -* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA. -- = The logic cell or pin is not an input to the logic cell (or LAB). - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** LOGIC CELL INTERCONNECTIONS ** - -Logic Array Block 'H': - - Logic cells placed in LAB 'H' - +--------------- LC126 BEEP - | +------------- LC128 TG42_OUT - | | +----------- LC115 XHD_RD - | | | +--------- LC113 XHD_WR - | | | | +------- LC120 XHD1_CS1 - | | | | | +----- LC121 XHD1_CS2 - | | | | | | +--- LC123 XHD2_CS1 - | | | | | | | +- LC125 XHD2_CS2 - | | | | | | | | - | | | | | | | | Other LABs fed by signals - | | | | | | | | that feed LAB 'H' -LC | | | | | | | | | A B C D E F G H | Logic cells that feed LAB 'H': - -Pin -89 -> - - - - - - - - | - - - - - * * - | <-- EPM_RES -44 -> - - - - * * * * | * * - - - * * * | <-- FDD_C0 -45 -> - - * * * * * * | * * - - * * * * | <-- FDD_C1 -46 -> - - - - * * * * | * * - - - * * * | <-- FDD_C2 -47 -> - - * * * * * * | * * - - * * * * | <-- HDD_C0 -42 -> - - * * * * * * | * * - - * * * * | <-- HDD_C1 -41 -> - - * * * * * * | * * - - * * * * | <-- HDD_C2 -40 -> - - - - * * * * | * * - - - * * * | <-- HDD_C3 -90 -> - - - - - - - - | - - - - - - * - | <-- PW_GOOD -87 -> - - - - * * * * | - - - * - * - * | <-- TG42_IN -88 -> - - - - - - - - | - - - - - - - - | <-- XHR_RDY -LC85 -> - - * * * * * * | - * - - * * * * | <-- /CONF_X -LC51 -> - * - - - - - - | - - - - - - - * | <-- TG42_BUF -LC88 -> - - * * - - - - | * * - - * * - * | <-- 10K_CLK - - -* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA. -- = The logic cell or pin is not an input to the logic cell (or LAB). - - -Device-Specific Information: f:\sprinter\src\altera\max\sp2_max.rpt -SP2_MAX - -** EQUATIONS ** - -D0 : INPUT; -EPM_RES : INPUT; -FDD_C0 : INPUT; -FDD_C1 : INPUT; -FDD_C2 : INPUT; -HDD_C0 : INPUT; -HDD_C1 : INPUT; -HDD_C2 : INPUT; -HDD_C3 : INPUT; -PW_GOOD : INPUT; -RDAT : INPUT; -RSTB : INPUT; -SINC_IN : INPUT; -SL : INPUT; -SR : INPUT; -STE : INPUT; -TG42_IN : INPUT; -TR43 : INPUT; -UNUSED1 : INPUT; -UNUSED2 : INPUT; -UNUSED5 : INPUT; -UNUSED7 : INPUT; -UNUSED22 : INPUT; -UNUSED24 : INPUT; -UNUSED27 : INPUT; -UNUSED28 : INPUT; -UNUSED33 : INPUT; -UNUSED49 : INPUT; -UNUSED50 : INPUT; -UNUSED53 : INPUT; -UNUSED55 : INPUT; -UNUSED63 : INPUT; -UNUSED65 : INPUT; -UNUSED70 : INPUT; -UNUSED72 : INPUT; -UNUSED77 : INPUT; -UNUSED78 : INPUT; -VGA_IN : INPUT; -WD : INPUT; -WR_CNF : INPUT; -WSTB : INPUT; -XACS : INPUT; -XA0 : INPUT; -XA1 : INPUT; -XA2 : INPUT; -XHR_RDY : INPUT; - --- Node name is 'AUD' = 'CT3' from file "sp2_max.tdf" line 119, column 4 --- Equation name is 'AUD', location is LC053, type is output. - AUD = TFFE( _EQ001, XCT1, VCC, VCC, VCC); - _EQ001 = CT0 & CT1 & CT2; - --- Node name is 'BEEP' --- Equation name is 'BEEP', location is LC126, type is output. - BEEP = LCELL( GND $ GND); - --- Node name is 'CLK_WG' = 'STWG2' from file "sp2_max.tdf" line 133, column 6 --- Equation name is 'CLK_WG', location is LC019, type is output. - CLK_WG = TFFE( _EQ002, _EQ003, VCC, VCC, VCC); - _EQ002 = STWG0 & STWG1; - _EQ003 = _X001 & _X002; - _X001 = EXP(!CLK_WG & !CT_WG); - _X002 = EXP( CLK_WG & CT_WG); - --- Node name is 'CLKZZ' = 'XCT1' from file "sp2_max.tdf" line 113, column 5 --- Equation name is 'CLKZZ', location is LC056, type is bidir. -CLKZZ = TRI(XCT1, CNF_OFF); -XCT1 = TFFE( XCT0, _EQ004, VCC, VCC, VCC); - _EQ004 = _X003 & _X004; - _X003 = EXP(!TG42_IN & XCT1); - _X004 = EXP( TG42_IN & !XCT1); - --- Node name is 'CLK14' = ':183' from file "sp2_max.tdf" line 277, column 11 --- Equation name is 'CLK14', type is output - CLK14 = TFFE( VCC, XCT0, VCC, VCC, VCC); - --- Node name is 'CMOS_AS' = ':219' from file "sp2_max.tdf" line 450, column 13 --- Equation name is 'CMOS_AS', type is output -CMOS_AS = _LC029~NOT; -_LC029~NOT = DFFE( _EQ005 $ GND, 10K_CLK, FDD_C2, VCC, VCC); - _EQ005 = FDD_C0 & !FDD_C1 & !HDD_C0 & HDD_C1 & HDD_C2 & !HDD_C3; - --- Node name is 'CMOS_DRD' = ':220' from file "sp2_max.tdf" line 451, column 13 --- Equation name is 'CMOS_DRD', type is output - CMOS_DRD = DFFE( _EQ006 $ VCC, 10K_CLK, VCC, FDD_C2, VCC); - _EQ006 = !FDD_C0 & FDD_C1 & !HDD_C0 & HDD_C1 & HDD_C2 & HDD_C3; - --- Node name is 'CMOS_DWR' = ':218' from file "sp2_max.tdf" line 449, column 13 --- Equation name is 'CMOS_DWR', type is output - CMOS_DWR = DFFE( _EQ007 $ VCC, 10K_CLK, VCC, FDD_C2, VCC); - _EQ007 = FDD_C0 & !FDD_C1 & !HDD_C0 & HDD_C1 & HDD_C2 & HDD_C3; - --- Node name is 'CNF_OFF' from file "sp2_max.tdf" line 284, column 12 --- Equation name is 'CNF_OFF', location is LC021, type is buried. -CNF_OFF = DFFE( GND $ GND, GND, XACS, /CONF_X, VCC); - --- Node name is 'CTH0' from file "sp2_max.tdf" line 120, column 5 --- Equation name is 'CTH0', location is LC040, type is buried. -CTH0 = TFFE( VCC, !AUD, VCC, VCC, VCC); - --- Node name is 'CTH1' from file "sp2_max.tdf" line 120, column 5 --- Equation name is 'CTH1', location is LC039, type is buried. -CTH1 = TFFE( CTH0, !AUD, VCC, VCC, VCC); - --- Node name is 'CTH2' from file "sp2_max.tdf" line 120, column 5 --- Equation name is 'CTH2', location is LC045, type is buried. -CTH2 = TFFE( _EQ008, !AUD, VCC, VCC, VCC); - _EQ008 = CTH0 & CTH1 & !CTH2 & !SINC_H - # CTH0 & CTH1 & CTH2; - --- Node name is 'CTH3' from file "sp2_max.tdf" line 120, column 5 --- Equation name is 'CTH3', location is LC035, type is buried. -CTH3 = TFFE( _EQ009, !AUD, VCC, VCC, VCC); - _EQ009 = CTH0 & CTH1 & CTH2 & !CTH3 & !SINC_H - # CTH0 & CTH1 & CTH2 & CTH3 - # CTH0 & CTH1 & CTH3 & SINC_H; - --- Node name is 'CTH4' from file "sp2_max.tdf" line 120, column 5 --- Equation name is 'CTH4', location is LC037, type is buried. -CTH4 = TFFE( _EQ010, !AUD, VCC, VCC, VCC); - _EQ010 = CTH0 & CTH1 & CTH2 & CTH3 & !CTH4 & !SINC_H - # CTH0 & CTH1 & CTH2 & CTH3 & CTH4 - # CTH0 & CTH1 & CTH4 & SINC_H; - --- Node name is 'CTV0' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'CTV0', location is LC105, type is buried. -CTV0 = DFFE( _EQ011 $ GND, SINC_H, VCC, VCC, VCC); - _EQ011 = !CTV0 & _X005; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - --- Node name is 'CTV1' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'CTV1', location is LC103, type is buried. -CTV1 = DFFE( _EQ012 $ GND, SINC_H, VCC, VCC, VCC); - _EQ012 = !CTV0 & CTV1 & _X005 - # CTV0 & !CTV1 & _X005; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - --- Node name is 'CTV2' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'CTV2', location is LC038, type is buried. -CTV2 = DFFE( _EQ013 $ GND, SINC_H, VCC, VCC, VCC); - _EQ013 = CTV0 & CTV1 & !CTV2 & _X005 - # !CTV0 & CTV2 & _X005 - # !CTV1 & CTV2 & _X005; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - --- Node name is 'CTV3' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'CTV3', location is LC036, type is buried. -CTV3 = TFFE( _EQ014, SINC_H, VCC, VCC, VCC); - _EQ014 = CTV0 & CTV1 & CTV2 & !CTV3 & _X005 - # CTV0 & CTV1 & CTV2 & CTV3 - # CTV0 & CTV1 & CTV3 & SINC_V; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - --- Node name is 'CTV4' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'CTV4', location is LC034, type is buried. -CTV4 = TFFE( _EQ015, SINC_H, VCC, VCC, VCC); - _EQ015 = CTV0 & CTV1 & CTV2 & CTV3 & !CTV4 & _X005 - # CTV0 & CTV1 & CTV2 & CTV3 & CTV4 - # CTV0 & CTV1 & CTV4 & SINC_V; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - --- Node name is 'CTV5' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'CTV5', location is LC047, type is buried. -CTV5 = TFFE( _EQ016, SINC_H, VCC, VCC, VCC); - _EQ016 = CTV0 & CTV1 & CTV2 & CTV3 & CTV4 & !CTV5 & _X005 - # CTV0 & CTV1 & CTV2 & CTV3 & CTV4 & CTV5 - # CTV0 & CTV1 & CTV5 & SINC_V; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - --- Node name is 'CTV6' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'CTV6', location is LC048, type is buried. -CTV6 = TFFE( _EQ017, SINC_H, VCC, VCC, VCC); - _EQ017 = CTV0 & CTV1 & CTV2 & CTV3 & CTV4 & CTV5 & !CTV6 & _X005 - # CTV0 & CTV1 & CTV2 & CTV3 & CTV4 & CTV5 & CTV6 - # CTV0 & CTV1 & CTV6 & SINC_V; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - --- Node name is 'CTV7' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'CTV7', location is LC044, type is buried. -CTV7 = TFFE( _EQ018, SINC_H, VCC, VCC, VCC); - _EQ018 = CTV0 & CTV1 & CTV2 & CTV3 & CTV4 & CTV5 & CTV6 & !CTV7 & - _X005 - # CTV0 & CTV1 & CTV2 & CTV3 & CTV4 & CTV5 & CTV6 & CTV7 - # CTV0 & CTV1 & CTV7 & SINC_V; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - --- Node name is 'CT_WG' from file "sp2_max.tdf" line 294, column 11 --- Equation name is 'CT_WG', location is LC065, type is buried. -CT_WG = TFFE( VCC, _EQ019, VCC, VCC, VCC); - _EQ019 = _X006 & _X007 & _X008; - _X006 = EXP(!CT_WG & !XCT1); - _X007 = EXP( CT_WG & XCT1 & _X009); - _X008 = EXP(!STE & !XCT1 & _X010 & !10K_D0); - _X009 = EXP(!STE & _X010 & !10K_D0); - _X010 = EXP(!RSTB & !WSTB & _X009); - --- Node name is 'CT0' from file "sp2_max.tdf" line 119, column 4 --- Equation name is 'CT0', location is LC023, type is buried. -CT0 = TFFE( VCC, XCT1, VCC, VCC, VCC); - --- Node name is 'CT1' from file "sp2_max.tdf" line 119, column 4 --- Equation name is 'CT1', location is LC020, type is buried. -CT1 = TFFE( CT0, XCT1, VCC, VCC, VCC); - --- Node name is 'CT2' from file "sp2_max.tdf" line 119, column 4 --- Equation name is 'CT2', location is LC058, type is buried. -CT2 = TFFE( _EQ020, XCT1, VCC, VCC, VCC); - _EQ020 = CT0 & CT1; - --- Node name is 'DENS_X' --- Equation name is 'DENS_X', location is LC011, type is output. - DENS_X = LCELL( GND $ VCC); - --- Node name is 'FDAT' = ':195' from file "sp2_max.tdf" line 328, column 9 --- Equation name is 'FDAT', type is output - FDAT = DFFE( _EQ021 $ VCC, _EQ022, VCC, VCC, VCC); - _EQ021 = _LC024 & _X011 & _X012; - _X011 = EXP( RDAT & _X013 & _X014); - _X012 = EXP( _X015 & _X016); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - _X015 = EXP(!RDAT & _X013 & _X014); - _X016 = EXP( _X012 & _X017); - _X017 = EXP( RDAT & _X013 & _X014); - _EQ022 = _X018; - _X018 = EXP( _X013 & _X014); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - --- Node name is 'HD_CS' --- Equation name is 'HD_CS', location is LC081, type is output. - HD_CS = LCELL( GND $ GND); - --- Node name is 'HD_DIR' = ':223' from file "sp2_max.tdf" line 479, column 27 --- Equation name is 'HD_DIR', type is output - HD_DIR = DFFE( _EQ023 $ VCC, 10K_CLK, VCC, !_EQ024, VCC); - _EQ023 = FDD_C1 & HDD_C0 & !HDD_C1 & HDD_C2; - _EQ024 = _X019; - _X019 = EXP( /CONF_X & HDD_C0); - --- Node name is 'LR_T0' from file "sp2_max.tdf" line 160, column 6 --- Equation name is 'LR_T0', location is LC098, type is buried. -LR_T0 = DFFE( _EQ025 $ WD, CLK_WG, VCC, VCC, VCC); - _EQ025 = SR & TR43 & WD; - --- Node name is 'LR_T1' from file "sp2_max.tdf" line 160, column 6 --- Equation name is 'LR_T1', location is LC101, type is buried. -LR_T1 = DFFE( _EQ026 $ WD, CLK_WG, VCC, VCC, VCC); - _EQ026 = SL & TR43 & WD; - --- Node name is 'QDAT' = 'WGR4' from file "sp2_max.tdf" line 135, column 5 --- Equation name is 'QDAT', location is LC046, type is output. - QDAT = TFFE( _EQ027, _EQ028, VCC, VCC, VCC); - _EQ027 = FDAT & WGR0 & WGR1 & WGR2 & WGR3; - _EQ028 = _X018; - _X018 = EXP( _X013 & _X014); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - --- Node name is 'REG_P0' from file "sp2_max.tdf" line 138, column 7 --- Equation name is 'REG_P0', location is LC026, type is buried. -REG_P0 = DFFE( _EQ029 $ LR_T0, !CT_WG, VCC, VCC, VCC); - _EQ029 = !LR_T0 & !LR_T1 & !REG_P0 & _X020 - # LR_T1; - _X020 = EXP(!REG_P0 & !REG_P1); - --- Node name is 'REG_P1' from file "sp2_max.tdf" line 138, column 7 --- Equation name is 'REG_P1', location is LC022, type is buried. -REG_P1 = DFFE( _EQ030 $ LR_T1, !CT_WG, VCC, VCC, VCC); - _EQ030 = !LR_T0 & !LR_T1 & REG_P0 & REG_P1 & _X020 - # !LR_T0 & !LR_T1 & !REG_P0 & !REG_P1 & _X020; - _X020 = EXP(!REG_P0 & !REG_P1); - --- Node name is 'SINC' --- Equation name is 'SINC', location is LC102, type is output. - SINC = LCELL( SINC_V $ SINC_H); - --- Node name is 'SINC_H' = 'SINC_HT' from file "sp2_max.tdf" line 123, column 2 --- Equation name is 'SINC_H', location is LC104, type is output. - SINC_H = DFFE( _EQ031 $ GND, !AUD, VCC, VCC, VCC); - _EQ031 = CTH2 & !CTH3 & CTH4 & SINC_1; - --- Node name is 'SINC_V' = 'SINC_VT' from file "sp2_max.tdf" line 124, column 2 --- Equation name is 'SINC_V', location is LC099, type is output. - SINC_V = DFFE( _EQ032 $ GND, SINC_H, VCC, VCC, VCC); - _EQ032 = CTV2 & !CTV3 & CTV4 & CTV5 & !CTV6 & !CTV7 & SINC_2 & _X021 - # CTV2 & CTV3 & CTV4 & CTV5 & !CTV6 & !CTV7 & SINC_2; - _X021 = EXP( _X022 & _X023); - _X022 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & !HDD_C1 & !HDD_C2 & - HDD_C3); - _X023 = EXP( /CONF_X & _X021 & _X024); - _X024 = EXP(!FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & !HDD_C1 & !HDD_C2 & - HDD_C3); - --- Node name is 'SINC_1' = 'CTH5' from file "sp2_max.tdf" line 120, column 5 --- Equation name is 'SINC_1', location is LC041, type is bidir. -SINC_1 = TRI(CTH5, VCC); -CTH5 = TFFE( _EQ033, !AUD, VCC, VCC, VCC); - _EQ033 = CTH0 & CTH1 & CTH2 & CTH3 & CTH4 & !SINC_H & !SINC_1 - # CTH0 & CTH1 & CTH2 & CTH3 & CTH4 & SINC_1 - # CTH0 & CTH1 & SINC_H & SINC_1; - --- Node name is 'SINC_2' = 'CTV8' from file "sp2_max.tdf" line 121, column 5 --- Equation name is 'SINC_2', location is LC043, type is bidir. -SINC_2 = TRI(CTV8, VCC); -CTV8 = DFFE( _EQ034 $ GND, SINC_H, VCC, VCC, VCC); - _EQ034 = CTV0 & CTV1 & CTV2 & CTV3 & CTV4 & CTV5 & CTV6 & CTV7 & - !SINC_2 & _X005 - # SINC_2 & _X005 & _X025; - _X005 = EXP( CTV0 & CTV1 & SINC_V); - _X025 = EXP( CTV0 & CTV1 & CTV2 & CTV3 & CTV4 & CTV5 & CTV6 & CTV7); - --- Node name is 'STWG0' from file "sp2_max.tdf" line 133, column 6 --- Equation name is 'STWG0', location is LC027, type is buried. -STWG0 = TFFE( VCC, _EQ035, VCC, VCC, VCC); - _EQ035 = _X001 & _X002; - _X001 = EXP(!CLK_WG & !CT_WG); - _X002 = EXP( CLK_WG & CT_WG); - --- Node name is 'STWG1' from file "sp2_max.tdf" line 133, column 6 --- Equation name is 'STWG1', location is LC030, type is buried. -STWG1 = TFFE( STWG0, _EQ036, VCC, VCC, VCC); - _EQ036 = _X001 & _X002; - _X001 = EXP(!CLK_WG & !CT_WG); - _X002 = EXP( CLK_WG & CT_WG); - --- Node name is 'TG42_BUF' = ':178' from file "sp2_max.tdf" line 186, column 13 --- Equation name is 'TG42_BUF', type is output - TG42_BUF = LCELL(!TG42_IN $ GND); - --- Node name is 'TG42_OUT' = ':177' from file "sp2_max.tdf" line 183, column 14 --- Equation name is 'TG42_OUT', type is output - TG42_OUT = LCELL( TG42_BUF $ GND); - --- Node name is 'WDAT' = 'REG_P2' from file "sp2_max.tdf" line 138, column 7 --- Equation name is 'WDAT', location is LC008, type is output. - WDAT = DFFE( _EQ037 $ GND, !CT_WG, VCC, VCC, VCC); - _EQ037 = !LR_T0 & !LR_T1 & _X026; - _X026 = EXP( _X027); - _X027 = EXP( REG_P0 & !REG_P1); - --- Node name is 'WGR0' from file "sp2_max.tdf" line 135, column 5 --- Equation name is 'WGR0', location is LC042, type is buried. -WGR0 = TFFE( _EQ038, _EQ039, VCC, VCC, VCC); - _EQ038 = WGR0 & WGR1 & WGR2 & !WGR3 - # !WGR0 & !WGR1 & !WGR2 & WGR3 - # FDAT; - _EQ039 = _X018; - _X018 = EXP( _X013 & _X014); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - --- Node name is 'WGR1' from file "sp2_max.tdf" line 135, column 5 --- Equation name is 'WGR1', location is LC033, type is buried. -WGR1 = TFFE( _EQ040, _EQ041, VCC, VCC, VCC); - _EQ040 = FDAT & !WGR0 & !WGR1 & !WGR2 & !WGR3 - # !FDAT & !WGR1 & WGR2 & !WGR3 - # !FDAT & WGR1 & !WGR3 - # FDAT & WGR0; - _EQ041 = _X018; - _X018 = EXP( _X013 & _X014); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - --- Node name is 'WGR2' from file "sp2_max.tdf" line 135, column 5 --- Equation name is 'WGR2', location is LC028, type is buried. -WGR2 = TFFE( _EQ042, _EQ043, VCC, VCC, VCC); - _EQ042 = !FDAT & WGR1 & WGR2 & !WGR3 - # FDAT & WGR0 & WGR1 - # !FDAT & !WGR2 & !WGR3; - _EQ043 = _X018; - _X018 = EXP( _X013 & _X014); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - --- Node name is 'WGR3' from file "sp2_max.tdf" line 135, column 5 --- Equation name is 'WGR3', location is LC032, type is buried. -WGR3 = TFFE( _EQ044, _EQ045, VCC, VCC, VCC); - _EQ044 = FDAT & WGR0 & WGR1 & WGR2 & WGR3 - # WGR0 & WGR1 & WGR2 & !WGR3 - # !FDAT & WGR1 & WGR2 & !WGR3; - _EQ045 = _X018; - _X018 = EXP( _X013 & _X014); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - --- Node name is 'WR_PDOS' = ':215' from file "sp2_max.tdf" line 445, column 13 --- Equation name is 'WR_PDOS', type is output - WR_PDOS = DFFE( _EQ046 $ VCC, 10K_CLK, VCC, FDD_C2, VCC); - _EQ046 = FDD_C0 & !FDD_C1 & !HDD_C0 & !HDD_C1 & !HDD_C2 & !HDD_C3; - --- Node name is 'XCT0' from file "sp2_max.tdf" line 113, column 5 --- Equation name is 'XCT0', location is LC049, type is buried. -XCT0 = TFFE( VCC, _EQ047, VCC, VCC, VCC); - _EQ047 = _X003 & _X004; - _X003 = EXP(!TG42_IN & XCT1); - _X004 = EXP( TG42_IN & !XCT1); - --- Node name is 'XHD_RD' = '~223~1' from file "sp2_max.tdf" line 479, column 27 --- Equation name is 'XHD_RD', location is LC115, type is output. - XHD_RD = DFFE( _EQ023 $ VCC, 10K_CLK, VCC, !_EQ024, VCC); - --- Node name is 'XHD_RES' = ':221' from file "sp2_max.tdf" line 466, column 27 --- Equation name is 'XHD_RES', type is output - XHD_RES = DFFE( PW_GOOD $ GND, SINC_V, EPM_RES, VCC, VCC); - --- Node name is 'XHD_WR' = ':222' from file "sp2_max.tdf" line 478, column 27 --- Equation name is 'XHD_WR', type is output - XHD_WR = DFFE( _EQ048 $ VCC, 10K_CLK, VCC, !_EQ049, VCC); - _EQ048 = !FDD_C1 & HDD_C0 & !HDD_C1 & HDD_C2; - _EQ049 = _X019; - _X019 = EXP( /CONF_X & HDD_C0); - --- Node name is 'XHD1_CS1' = ':224' from file "sp2_max.tdf" line 489, column 20 --- Equation name is 'XHD1_CS1', type is output - XHD1_CS1 = DFFE( _EQ050 $ VCC, TG42_IN, VCC, /CONF_X, VCC); - _EQ050 = /CONF_X & !HDD_C1 & HDD_C2 & !HDD_C3 & _X028 & _X029 & _X030 & - _X031; - _X028 = EXP( /CONF_X & _X029 & _X030 & _X032 & _X033); - _X029 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - HDD_C3); - _X030 = EXP( _X028 & _X031 & _X032 & _X033); - _X031 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - !HDD_C3); - _X032 = EXP( /CONF_X & _X028 & _X029 & _X030 & _X031); - _X033 = EXP(!FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - !HDD_C3); - --- Node name is 'XHD1_CS2' = ':225' from file "sp2_max.tdf" line 490, column 20 --- Equation name is 'XHD1_CS2', type is output - XHD1_CS2 = DFFE( _EQ051 $ VCC, TG42_IN, VCC, /CONF_X, VCC); - _EQ051 = /CONF_X & !HDD_C1 & HDD_C2 & HDD_C3 & _X028 & _X029 & _X030 & - _X031; - _X028 = EXP( /CONF_X & _X029 & _X030 & _X032 & _X033); - _X029 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - HDD_C3); - _X030 = EXP( _X028 & _X031 & _X032 & _X033); - _X031 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - !HDD_C3); - _X032 = EXP( /CONF_X & _X028 & _X029 & _X030 & _X031); - _X033 = EXP(!FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - !HDD_C3); - --- Node name is 'XHD2_CS1' = ':226' from file "sp2_max.tdf" line 494, column 20 --- Equation name is 'XHD2_CS1', type is output - XHD2_CS1 = DFFE( _EQ052 $ VCC, TG42_IN, VCC, /CONF_X, VCC); - _EQ052 = /CONF_X & !HDD_C1 & HDD_C2 & !HDD_C3 & _X029 & _X030 & _X032 & - _X033; - _X029 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - HDD_C3); - _X030 = EXP( _X028 & _X031 & _X032 & _X033); - _X032 = EXP( /CONF_X & _X028 & _X029 & _X030 & _X031); - _X033 = EXP(!FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - !HDD_C3); - _X028 = EXP( /CONF_X & _X029 & _X030 & _X032 & _X033); - _X031 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - !HDD_C3); - --- Node name is 'XHD2_CS2' = ':227' from file "sp2_max.tdf" line 495, column 20 --- Equation name is 'XHD2_CS2', type is output - XHD2_CS2 = DFFE( _EQ053 $ VCC, TG42_IN, VCC, /CONF_X, VCC); - _EQ053 = /CONF_X & !HDD_C1 & HDD_C2 & HDD_C3 & _X029 & _X030 & _X032 & - _X033; - _X029 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - HDD_C3); - _X030 = EXP( _X028 & _X031 & _X032 & _X033); - _X032 = EXP( /CONF_X & _X028 & _X029 & _X030 & _X031); - _X033 = EXP(!FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - !HDD_C3); - _X028 = EXP( /CONF_X & _X029 & _X030 & _X032 & _X033); - _X031 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - !HDD_C3); - --- Node name is '10K_CLK' = ':199' from file "sp2_max.tdf" line 341, column 13 --- Equation name is '10K_CLK', type is output - 10K_CLK = DFFE( _EQ054 $ !CNF_OFF, TG42_IN, VCC, VCC, VCC); - _EQ054 = !CNF_OFF & !FDD_C2 & !HDD_C0 - # CNF_OFF & WR_CNF; - --- Node name is '10K_D0' = ':200' from file "sp2_max.tdf" line 343, column 12 --- Equation name is '10K_D0', type is output - 10K_D0 = DFFE( _EQ055 $ GND, 10K_CLK, !_EQ056, !_EQ057, VCC); - _EQ055 = CNF_OFF & D0 - # !CNF_OFF & 10K_D0; - _EQ056 = !FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & !HDD_C1 & !HDD_C2 & - !HDD_C3; - _EQ057 = _X034; - _X034 = EXP( /CONF_X & _X035); - _X035 = EXP( FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & !HDD_C1 & !HDD_C2 & - !HDD_C3); - --- Node name is '/CONF_X' = '/RESET' from file "sp2_max.tdf" line 173, column 12 --- Equation name is '/CONF_X', location is LC085, type is bidir. -/CONF_X = OPNDRN(/RESET); -/RESET = DFFE( _EQ058 $ GND, !AUD, !_EQ059, VCC, VCC); - _EQ058 = EPM_RES & XHD_RES; - _EQ059 = !FDD_C0 & !FDD_C1 & !FDD_C2 & HDD_C0 & HDD_C1 & !HDD_C2 & - HDD_C3; - --- Node name is '/WG_RD' = ':217' from file "sp2_max.tdf" line 447, column 12 --- Equation name is '/WG_RD', type is output - /WG_RD = DFFE( _EQ060 $ VCC, 10K_CLK, VCC, FDD_C2, VCC); - _EQ060 = !FDD_C0 & FDD_C1 & !HDD_C0 & !HDD_C1 & !HDD_C2 & !HDD_C3; - --- Node name is '/WG_WR' = ':216' from file "sp2_max.tdf" line 446, column 12 --- Equation name is '/WG_WR', type is output - /WG_WR = DFFE( _EQ061 $ VCC, 10K_CLK, VCC, FDD_C2, VCC); - _EQ061 = !FDD_C0 & !FDD_C1 & !HDD_C0 & !HDD_C1 & !HDD_C2 & !HDD_C3; - --- Node name is ':197' from file "sp2_max.tdf" line 328, column 28 --- Equation name is '_LC024', type is buried -_LC024 = DFFE( _EQ062 $ GND, _EQ063, VCC, VCC, VCC); - _EQ062 = _X016; - _X016 = EXP( _X012 & _X017); - _X012 = EXP( _X015 & _X016); - _X017 = EXP( RDAT & _X013 & _X014); - _X015 = EXP(!RDAT & _X013 & _X014); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - _EQ063 = _X018; - _X018 = EXP( _X013 & _X014); - _X013 = EXP( CT0 & !10K_D0); - _X014 = EXP( XCT1 & 10K_D0); - - - --- Shareable expanders that are duplicated in multiple LABs: --- _X005 occurs in LABs C, G --- _X013 occurs in LABs B, C --- _X014 occurs in LABs B, C --- _X018 occurs in LABs B, C --- _X019 occurs in LABs E, H - - - - -Project Information f:\sprinter\src\altera\max\sp2_max.rpt - -** TIMING ASSIGNMENTS ** - - -INFORMATION: One or more paths have been found between register controlled by different clocks--can't calculate fmax for those paths - - User Actual -Type Location Assignment Value Status Critical Path - -fmax 100.00 MHz 43.47 MHz Failed RSTB to register STWG2.Q to register STWG0.Q -fmax 100.00 MHz 43.47 MHz Failed STE to register STWG2.Q to register STWG0.Q -fmax 100.00 MHz 27.02 MHz Failed TG42_IN to register SINC_HT.Q to register /RESET.Q -fmax 100.00 MHz 43.47 MHz Failed WSTB to register STWG2.Q to register STWG0.Q - - -Project Information f:\sprinter\src\altera\max\sp2_max.rpt - -** COMPILATION SETTINGS & TIMES ** - -Processing Menu Commands ------------------------- - -Design Doctor = off - -Logic Synthesis: - - Synthesis Type Used = Standard - - Default Synthesis Style = NORMAL - - Logic option settings in 'NORMAL' style for 'MAX7000S' family - - DECOMPOSE_GATES = on - DUPLICATE_LOGIC_EXTRACTION = on - MINIMIZATION = full - MULTI_LEVEL_FACTORING = on - NOT_GATE_PUSH_BACK = on - PARALLEL_EXPANDERS = off - REDUCE_LOGIC = on - REFACTORIZATION = on - REGISTER_OPTIMIZATION = on - RESYNTHESIZE_NETWORK = on - SLOW_SLEW_RATE = off - SOFT_BUFFER_INSERTION = on - SUBFACTOR_EXTRACTION = on - TURBO_BIT = on - XOR_SYNTHESIS = on - IGNORE_SOFT_BUFFERS = off - USE_LPM_FOR_AHDL_OPERATORS = off - - Other logic synthesis settings: - - Automatic Global Clock = off - Automatic Global Clear = off - Automatic Global Preset = on - Automatic Global Output Enable = on - Automatic Fast I/O = off - Automatic Register Packing = off - Automatic Open-Drain Pins = on - Automatic Implement in EAB = off - One-Hot State Machine Encoding = off - Optimize = 5 - -Default Timing Specifications: - - fmax = 100MHz - -Cut All Bidir Feedback Timing Paths = on -Cut All Clear & Preset Timing Paths = on - -Ignore Timing Assignments = off - -Functional SNF Extractor = off - -Linked SNF Extractor = off -Timing SNF Extractor = on -Optimize Timing SNF = off -Generate AHDL TDO File = off -Fitter Settings = ADVANCED -Smart Recompile = off -Total Recompile = off - -Interfaces Menu Commands ------------------------- - -EDIF Netlist Writer = off -Verilog Netlist Writer = off -VHDL Netlist Writer = off - -Compilation Times ------------------ - - Compiler Netlist Extractor 00:00:00 - Database Builder 00:00:00 - Logic Synthesizer 00:00:00 - Partitioner 00:00:00 - Fitter 00:00:00 - Timing SNF Extractor 00:00:01 - Assembler 00:00:00 - -------------------------- -------- - Total Time 00:00:01 - - -Memory Allocated ------------------ - -Peak memory allocated during compilation = 3,543K diff --git a/src/altera/quartus/acex/ACCELER.ACF b/src/altera/quartus/acex/ACCELER.ACF deleted file mode 100644 index 5480845..0000000 --- a/src/altera/quartus/acex/ACCELER.ACF +++ /dev/null @@ -1,568 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP acceler -BEGIN - DEVICE = EP1K30QC208-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 200MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - DEVICE_FAMILY = ACEX1K; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 5.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN = AUTO; - MINIMIZATION = FULL; - IGNORE_SOFT_BUFFERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/quartus/acex/ACCELER.INC b/src/altera/quartus/acex/ACCELER.INC deleted file mode 100644 index 8610479..0000000 --- a/src/altera/quartus/acex/ACCELER.INC +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Fri Jan 25 12:59:19 2002 - -FUNCTION acceler (clk42, /reset, ct[2..0], ras, cas, clk_z80, mc_end, mc_begin, mc_type, mc_write, ai[15..0], di[7..0], /io, /rd, /wr, /mr, /rf, /m1, /iom, dcp[7..0], mdi[15..0], acc_ena, hddr[7..0], hdd_flip) - RETURNS (continue, ao[15..0], do[7..0], mdo[15..0], md[7..0], g_line[7..0], glisser, acc_on, double_cas, acc_dir[7..0]); diff --git a/src/altera/quartus/acex/ACCELER.TDF b/src/altera/quartus/acex/ACCELER.TDF deleted file mode 100644 index 45ccc00..0000000 --- a/src/altera/quartus/acex/ACCELER.TDF +++ /dev/null @@ -1,374 +0,0 @@ - - TITLE "ACCELERATOR"; - -INCLUDE "lpm_ram_dp"; - -SUBDESIGN acceler - ( - CLK42 : INPUT; - /RESET : INPUT; - CT[2..0] : INPUT; - - RAS : INPUT; - CAS : INPUT; - CLK_Z80 : INPUT; - - CONTINUE : OUTPUT; - - MC_END : INPUT; - MC_BEGIN : INPUT; - MC_TYPE : INPUT; - MC_WRITE : INPUT; --- MCA[1..0] : INPUT; - - AI[15..0] : INPUT; - DI[7..0] : INPUT; - - AO[15..0] : OUTPUT; - DO[7..0] : OUTPUT; - - /IO : INPUT; - /RD : INPUT; - /WR : INPUT; - /MR : INPUT; - /RF : INPUT; - /M1 : INPUT; - /IOM : INPUT; - - DCP[7..0] : INPUT; - - MDI[15..0] : INPUT; - MDO[15..0] : OUTPUT; - MD[7..0] : OUTPUT; - - G_LINE[7..0]: OUTPUT; - - GLISSER : OUTPUT; - - ACC_ON : OUTPUT; - - ACC_ENA : INPUT; - - DOUBLE_CAS : OUTPUT; - - HDDR[7..0] : INPUT; - HDD_FLIP : INPUT; - - ACC_DIR[7..0] : OUTPUT; - - ) -VARIABLE - - RAM : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8); - - DO[7..0] : DFFE; - MDO[15..0] : DFFE; - - PRF_CMD : DFFE; - ED_CMD : DFFE; - CB_CMD : DFFE; - ID_CMD : DFFE; - IN_OUT_CMD : DFFE; - - CORRECT_1F : NODE; - - ACC_BLK : DFF; - - RETI : DFFE; - RETN : DFFE; - - AA[15..0] : DFFE; - - RGACC[7..0] : DFFE; - AGR[7..0] : DFFE; - ACC_CNT[7..0] : DFFE; - - START_ACC : NODE; - ACC_END : DFFE; - FN_ACC[2..0]: DFFE; - ACC_MODE[3..0] : DFFE; - - MD[7..0] : LCELL; - XMD[7..0] : DFF; - XMDH[7..0] : DFF; - - ACC_DIR[7..0] : LCELL; - - /M1M : NODE; - - ACC_GO : NODE; - ACC_GO_1 : NODE; - - RAM_WR : NODE; - - STATE_EI : DFFE; - --- HDDR[7..0] : DFFE; - - XAGR[7..0] : DFFE; - AAGR[9..0] : DFFE; - XCNT[7..0] : DFFE; - ALT_ACC : NODE; - - RAM_ADR[7..0] : NODE; - ACC_C : NODE; - WR_C7 : NODE; - - XCNT_AGR[15..0] : NODE; - - MDOX[7..0] : DFF; - MDOY[7..0] : DFF; - - GLISS_R : DFF; - - ACC_TIME : NODE; - -BEGIN - - ACC_ON = ACC_DIR0; - - /M1M = DFF(!/M1,CLK_Z80,/RESET,); - - PRF_CMD.clk = /MR; - PRF_CMD.ena = /M1M; - PRF_CMD.d = (DI[] == B"11XX1XX1") & - ((DI[] == B"XX00X01X") or -- CB - (DI[] == B"XX01X10X") or -- DD - (DI[] == B"XX10X10X") or -- ED - (DI[] == B"XX11X10X")); -- FD - --- === interrupt === 0 - disable; 1 - enable - - STATE_EI.clk = /MR; - STATE_EI.ena = /M1M & !PRF_CMD & (DI[] == B"1111X011"); - STATE_EI.d = DI3; - --- RETI comand - - ED_CMD.clk = /MR; - ED_CMD.ena = /M1M; - ED_CMD.d = (DI[] == H"ED"); - - RETI.clk = /MR; - RETI.ena = /M1M; - RETI.d = ED_CMD & (DI[] == H"4D"); - --- "1" on the RETI triger is the end of interupt sycle. - - RETN.clk = /MR; - RETN.ena = /M1M; - RETN.d = ED_CMD & (DI[] == H"45"); - --- The end of NMI sycle. - - ACC_BLK.clk = /M1; - ACC_BLK.d = DFF(((/IO & ACC_BLK) or (!ACC_BLK & RETI)),CLK_Z80,,); - ACC_BLK.prn = /RESET & ACC_MODE3; - - CB_CMD.clk = /MR; - ID_CMD.clk = /MR; - CB_CMD.ena = /M1M; - ID_CMD.ena = /M1M; - - CB_CMD.d = (DI[] == H"CB"); - ID_CMD.d = (DI[] == B"11X11101"); - - IN_OUT_CMD.clk = /MR; - IN_OUT_CMD.ena = /M1M; - IN_OUT_CMD.d = (DI[] == B"1101X011") & !PRF_CMD; -- D3/DB - IN_OUT_CMD.clrn = /IO; - - CORRECT_1F = LCELL(IN_OUT_CMD & (DO[] == H"1F") & !/MR & !/RD); - DO[4..3].clrn = !CORRECT_1F; - - ACC_GO = DFFE((CAS or START_ACC),CLK42,,(!/MR & /M1),CT1); - ACC_GO_1 = DFF(ACC_GO,CLK42,,); - --- == accelerator number == - - RGACC[].clk = /MR; - RGACC[].ena = DFF((/M1 & /RF & ACC_DIR3),CLK_Z80,,); - RGACC[].d = DI[]; - --- == accelerator grafic line == - - AGR[].clk = CLK42; - AGR[].ena = !DFF((/IOM or /WR or !DFF((DCP[] == B"1100X100"),CLK42,,)),CLK42,,) or - !(!ACC_DIR4 or ACC_GO or !ACC_GO_1); - - CASE DFF(START_ACC,CLK42,,) IS - WHEN 0 => AGR[].d = AGR[] + 1; - WHEN 1 => AGR[].d = DI[]; - END CASE; - - AGR[].clrn = /RESET; - - G_LINE[] = AGR[]; - --- == accelerator counter == - - ACC_C = (!ACC_GO & DFF(((CT0 & !/RD) or (CT1 & !/WR)),CLK42,,)); - ACC_CNT[].clk = CLK42; --- ACC_CNT[].ena = START_ACC or (ACC_C & ACC_DIR2); - ACC_CNT[].ena = LCELL(START_ACC or (ACC_C & ACC_DIR2)); - - CASE DFF(START_ACC,CLK42,,) IS - WHEN 1 => ACC_CNT[].d = RGACC[]; - WHEN 0 => ACC_CNT[].d = ACC_CNT[] - 1; - END CASE; - - WR_C7 = DFF((/IOM or DFF(!/IOM,CLK42,,) or /WR or DFF(!(DCP[] == B"1100X111"),CLK42,,)),CLK42,,); - ALT_ACC = DFF(VCC,WR_C7,/RESET,); - - (AAGR[].ena,XCNT[].ena,XAGR[].ena) = LCELL(!WR_C7 or (ACC_DIR1 & ACC_C)); - (AAGR[].clk,XCNT[].clk,XAGR[].clk) = CLK42; - - XCNT_AGR[15..0] = (XCNT[],XAGR[]) + (B"000000",AAGR[]); - - CASE !DFF(START_ACC,CLK42,,) IS - WHEN 1 => AAGR[].d = AAGR[]; - (XCNT[].d,XAGR[].d) = XCNT_AGR[15..0]; - WHEN 0 => AAGR[].d = (AI9,AI8,DI[]); - (XCNT[].d,XAGR[].d) = (B"00",AI[15..10],B"00000000"); - END CASE; - --- == accelerator dir == - - START_ACC = LCELL(LCELL(/MR or !/M1 or !/RF or !ACC_BLK) or (!ACC_DIR0 or MC_TYPE)); - - DOUBLE_CAS= LCELL(ACC_DIR6 & !START_ACC); - - ACC_END.clk = CLK42; - ACC_END.ena = !ACC_GO & ACC_GO_1; - ACC_END.prn = /M1; - ACC_END.d = (ACC_CNT[] == 1) or !ACC_DIR2; - - CONTINUE = ACC_END; - - CASE ACC_MODE[2..0] IS - WHEN 0 => ACC_DIR[] = B"00000000"; % LD B,B % - WHEN 1 => ACC_DIR[] = B"00100101"; % LD C,C % % fill by constant % - WHEN 2 => ACC_DIR[] = B"00001001"; % LD D,D % % load count accelerator % - WHEN 3 => ACC_DIR[] = B"00010101"; % LD E,E % % fill by constant VERTICAL % - WHEN 4 => ACC_DIR[] = B"01000001"; % LD H,H % % duble byte fn % - WHEN 5 => ACC_DIR[] = B"00100111"; % LD L,L % % copy line % - WHEN 6 => ACC_DIR[] = B"00000000"; % HALT % - WHEN 7 => ACC_DIR[] = B"00010111"; % LD A,A % % copy line VERTICAL % - END CASE; - --- == accelerator mode == - - ACC_MODE[].clk = /MR; - ACC_MODE[].ena = DFF((!/M1 & !PRF_CMD & - LCELL((DI[] == B"XXX00X00") or - (DI[] == B"XXX01X01") or - (DI[] == B"XXX10X10") or - (DI[] == B"XXX11X11")) & - LCELL((DI[] == B"010XX0XX") or - (DI[] == B"011XX1XX"))),CLK_Z80,,); - ACC_MODE[].d = (VCC,DI[2..0]); - ACC_MODE[2..0].clrn = /RESET & ACC_ENA; - ACC_MODE[3].clrn = /RESET & !DFF(ACC_MODE3,CLK_Z80,,); - --- == accelerator datas == - - CASE DFFE(AA0,CLK42,,,(CT2 & CT1)) IS - WHEN 0 => MD[] = MDI[7..0]; --- GLISSER = DFF((MDO[7..0] == H"FF"),CLK42,,); - WHEN 1 => MD[] = MDI[15..8]; --- GLISSER = DFF((MDO[15..8] == H"FF"),CLK42,,); - END CASE; - - GLISS_R.clk = CLK42; - CASE ACC_DIR1 IS - WHEN 0 => GLISS_R = LCELL(DI[] == H"FF"); - WHEN 1 => GLISS_R = LCELL(RAM.q[7..4] == H"F") & LCELL(RAM.q[3..0] == H"F"); - END CASE; - GLISSER = GLISS_R; - --- MDO[].clk = !CLK42; - MDO[].clk = CLK42; - - MDO[].ena = CAS; - - MDOX[].clk = CLK42; - MDOY[].clk = CLK42; - - CASE LCELL(MC_END & HDD_FLIP) IS - WHEN 0 => MDOX[7..0] = DI[]; - WHEN 1 => MDOX[7..0] = HDDR[]; - END CASE; - - CASE ACC_DIR6 IS - WHEN 0 => MDOY[7..0] = DI[]; - WHEN 1 => MDOY[7..0] = HDDR[]; - END CASE; - - CASE LCELL(/IO & ACC_DIR1) IS - WHEN 0 => MDO[].d = (MDOY[],MDOX[]); - WHEN 1 => MDO[].d = (RAM.q[7..0],RAM.q[7..0]); - END CASE; - - DO[].clk = DFF(MC_END,!CLK42,,); --- DO[].clk = !CLK42; - DO[].ena = VCC; --- DO[].ena = DFF(!MC_END,CLK42,,); - DO[].d = MD[]; - --- == accelerator functions == - - FN_ACC[].clk = /MR; - FN_ACC[].ena = /M1M; - FN_ACC[].d = LCELL(DI7 & !DI6 & !PRF_CMD) & !(DI[5..3]); - - XMDH[].clk = !CLK42; - XMDH[] = MDI[15..8]; - - XMD[].clk = !CLK42; - CASE FN_ACC[1..0] IS - WHEN 0 => - XMD[] = MD[]; % BE % - WHEN 1 => - XMD[] = MD[] or RAM.q[7..0]; % B6 % - WHEN 2 => - XMD[] = MD[] xor RAM.q[7..0]; % AE % - WHEN 3 => - XMD[] = MD[] & RAM.q[7..0]; % A6 % - END CASE; - - CASE ALT_ACC IS - WHEN 0 => RAM_ADR[] = ACC_CNT[]; - WHEN 1 => RAM_ADR[] = XCNT[]; - END CASE; - - ACC_TIME = LCELL((!ACC_END or !DFFE(ACC_END,CLK42,,,(CT1 & CT2)))); - --- RAM_WR = DFF((!/RD & (!ACC_GO & CT0) & ACC_TIME),CLK42,,); - RAM_WR = DFF((!/RD & (!ACC_GO & CT0) & ACC_DIR1),CLK42,,); - - RAM.wren = RAM_WR; - RAM.data[] = (XMD[],XMD[]); --- RAM.wraddress[] = ACC_CNT[]; - RAM.wraddress[] = RAM_ADR[]; - RAM.wrclock = CLK42; - RAM.wrclken = VCC; - RAM.rden = VCC; --- RAM.rdaddress[] = ACC_CNT[]; - RAM.rdaddress[] = RAM_ADR[]; - RAM.rdclock = CLK42; - RAM.rdclken = VCC; - - AA[].clk = CLK42; --- AA[].ena = START_ACC or (ACC_DIR5 & !ACC_GO & ACC_GO_1); - AA[].ena = LCELL(START_ACC or (ACC_DIR5 & !(CAS or START_ACC) & (ACC_GO or (ACC_GO_1 & ACC_DIR6)))); - - CASE DFF(START_ACC,CLK42,,) IS - WHEN 1 => AA[].d = AI[]; --- WHEN 0 => AA[].d = AA[] + (B"00000000000000",ACC_DIR6,!ACC_DIR6); - WHEN 0 => AA[].d = AA[] + 1; - END CASE; - - AO[] = (AA[15..0]); - -END; - diff --git a/src/altera/quartus/acex/AY.ACF b/src/altera/quartus/acex/AY.ACF deleted file mode 100644 index 2f068ab..0000000 --- a/src/altera/quartus/acex/AY.ACF +++ /dev/null @@ -1,578 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP ay -BEGIN - DEVICE = EP1K30QC208-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - AUTO_DEVICE = EP1K10FC256-1; - AUTO_DEVICE = EP1K10QC208-1; - AUTO_DEVICE = EP1K10TC144-1; - AUTO_DEVICE = EP1K10TC100-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = ON; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - DEVICE_FAMILY = ACEX1K; - STYLE = NORMAL; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL93; - VHDL_READER_VERSION = VHDL93; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - BIDIR_PIN = STRONG; - END_TIME = 0.0ns; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - LAST_MAXPLUS2_VERSION = 10.0; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 10.0; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/quartus/acex/AY.INC b/src/altera/quartus/acex/AY.INC deleted file mode 100644 index aec944a..0000000 --- a/src/altera/quartus/acex/AY.INC +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Sat May 26 07:09:40 2001 - -FUNCTION ay (/reset, clk42, ay_t[8..0], ay_d_wr, ay_a_wr, d[7..0], beeper) - RETURNS (do[7..0], ay_ch_a[3..0], ay_ch_b[3..0], ay_ch_c[3..0], ay_ch_l[9..0], ay_ch_r[9..0], ay_ch_val); diff --git a/src/altera/quartus/acex/AY.MIF b/src/altera/quartus/acex/AY.MIF deleted file mode 100644 index 1ed1d5e..0000000 --- a/src/altera/quartus/acex/AY.MIF +++ /dev/null @@ -1,154 +0,0 @@ -DEPTH = 256; % Memory depth and width are required % -WIDTH = 8; % Enter a decimal number % - -ADDRESS_RADIX = HEX; % Address and value radixes are optional % -DATA_RADIX = BIN; % Enter BIN, DEC, HEX, or OCT; unless % - % otherwise specified, radixes = HEX % - --- Specify values for addresses, which can be single address or range - -CONTENT -BEGIN - [0..7F] : 00000000; - 0 : 00000000 00000000 - 00000000 00000000 - 00000000 00000000 - 00000000 11111111 - 00000000 00000000 - 00000000 00000000 - 00000000 00000000 - 00000000 00000000 - - 11111111 11111111 - 11111111 11111111 - 11111111 11111111 - 11111111 11111111 - 11111111 11111111 - 11111111 11111111 - 11111111 00000001 - 00000000 11111111 - ; - 1E : 00000000; - 1F : 11111111; - - 30 : 00000000 - 00000010 - 00000011 - 00000100 - 00000110 - 00001000 - 00001011 - 00010000 - 00010110 - 00100000 - 00101101 - 01000000 - 01011010 - 10000000 - 10110100 - 11111111; - - [80..FF]: 00000000; - -% - 000 - set CX, load & sub 1 - 001 - load - 010 - save, if NZ,reset CX - 011 - bit_out - 100 - load & sub 1 - 101 - load & sub C - 110 - if CX, save - 111 - read states /RESET, AY_F_RES -% - - 80 : - 00010000 -- set C,CX load reg10 & sub C - 01010000 -- save reg10 & reset CX if NZ - 10110001 -- load reg11 & sub C - 01010001 -- save reg11 & reset CX if NZ - - 00100000 -- set C load reg00 & sub C - 11010000 -- save reg10 if CX - 00100001 -- load reg01 & sub C - 11010001 -- save reg11 if CX - - 00101000 -- load reg08 - 01100001 -- set AY_OUT1 - - - 00010010 -- set C,CX load reg12 & sub C - 01010010 -- save reg12 & reset CX if NZ - 10110011 -- load reg13 & sub C - 01010011 -- save reg13 & reset CX if NZ - - 00100010 -- set C load reg02 & sub C - 11010010 -- save reg12 if CX - 00100011 -- load reg03 & reset CX if NZ - 11010011 -- save reg13 if CX - - 00101001 -- load reg09 - 01100010 -- set AY_OUT2 - - - 00010100 -- set C,CX load reg14 & sub C - 01010100 -- save reg14 & reset CX if NZ - 10110101 -- load reg15 & sub C - 01010101 -- save reg15 & reset CX if NZ - - 00100100 -- set C load reg04 & sub C - 11010100 -- save reg14 if CX - 00100101 -- load reg05 & reset CX if NZ - 11010101 -- save reg15 if CX - - 00101010 -- load reg0A - 01100011 -- set AY_OUT3 - - - 00010111 -- set C,CX load reg17 & dec 1 - 01010111 -- save reg17 & reset CX if NZ - 00100110 -- load reg06 dec 1 *********** - 11010111 -- save reg17 if CX - - 01100100 -- set AY_SH - 00000000 -- NOP - - 00011000 -- set C,CX load reg18 & sub C - 01011000 -- save reg18 & reset CX if NZ - 10111001 -- load reg19 & sub C - 01011001 -- save reg19 & reset CX if NZ - - 00101011 -- load reg0B & sub 1 - 11011000 -- save reg18 if CX - 00101100 -- load reg0C & sub C - 11011001 -- save reg19 if CX - - 01100101 -- set FORM_CLK - - 11100000 -- set CX = AY_F_RES - --- 00101011 -- load reg0B & sub 1 --- 11011000 -- save reg18 if CX --- 00101100 -- load reg0C & sub C --- 11011001 -- save reg19 if CX - - 11100001 -- set CX = /RESET - - 00111111 -- load reg1F - FF *********** - 11000111 -- save reg07 if CX - 00111110 -- load reg1E - 00 *********** - - 11001101 -- save reg0D if CX - 11001000 -- save reg08 if CX - 11001001 -- save reg09 if CX - 11001010 -- save reg0a if CX - - 00100111 -- load reg07 *********** - 01100110 -- set keys_bits - - 00101101 -- load reg0D *********** - 01100111 -- set keys_bits SET-FORM-bits - --- 01100000 -- set AY_OUT_ALL - - ; -END ; diff --git a/src/altera/quartus/acex/AY.TDF b/src/altera/quartus/acex/AY.TDF deleted file mode 100644 index c090bef..0000000 --- a/src/altera/quartus/acex/AY.TDF +++ /dev/null @@ -1,368 +0,0 @@ - - TITLE "AY-3-8910"; - -include "lpm_ram_dq"; -include "lpm_add_sub"; - -SUBDESIGN ay - ( - /RESET : INPUT; - CLK42 : INPUT; -- такты 42 - AY_T[8..0] : INPUT; -- внешний счетчик тактов - - AY_D_WR : INPUT; - AY_A_WR : INPUT; - - D[7..0] : INPUT; - DO[7..0] : OUTPUT; - - AY_CH_A[3..0] : OUTPUT; - AY_CH_B[3..0] : OUTPUT; - AY_CH_C[3..0] : OUTPUT; - - AY_CH_L[9..0] : OUTPUT; - AY_CH_R[9..0] : OUTPUT; - - AY_CH_VAL : OUTPUT; -- chanels data valid - BEEPER : INPUT; - - ) -VARIABLE - - BD[7..0] : DFFE; - BWR : DFFE; - AWR : DFFE; - - AY_DI[7..0] : NODE; - AY_DO[7..0] : NODE; - - AY_F_RES : NODE; - AY_F_R1 : NODE; - - AY_ADR[7..0] : DFF; - AY_AAX[1..0] : DFF; - - AY_X_[5..0] : DFFE; - AY_GF[3..0] : DFFE; - - AY_OUT[3..1] : DFFE; - AY_OUTS[3..1] : NODE; - - AY_CLK1 : NODE; - AY_SH[16..0] : DFFE; - AY_AA[3..0] : DFF; - AY_SH_Q : NODE; - - AY_ABLK : NODE; - AY_BBLK : NODE; - AY_AINV : NODE; - AY_BINV : NODE; - - AY_ADRX[7..0] : NODE; - AY_CCC[8..0] : DFF; - AY_AX[7..0] : NODE; - AY_C : DFFE; - AY_CX : DFFE; - AY_CXX : DFFE; - AY_WR : NODE; - AY_VA[3..0] : DFFE; - AY_VAR : DFFE; - AY_VX : DFFE; - - AY_DAT_WR : DFF; - AY_DAT[7..0] : DFFE; - - AY_DQ1[3..0] : DFFE; - AY_DQ2[3..0] : DFFE; - AY_DQ3[3..0] : DFFE; - - AY_DQX[3..0] : DFFE; - AY_OUTSX : NODE; - AY_CH_MIX : DFF; - - AY_AMP[3..0] : DFF; - - AY_DD[7..0] : DFFE; - - AY_CH_A[3..0] : DFF; - AY_CH_B[3..0] : DFF; - AY_CH_C[3..0] : DFF; - - AY_CH_CS[8..0] : DFF; - AY_CH_LX[10..0] : DFFE; - AY_CH_RX[10..0] : DFFE; - --- AY_CH_L[9..0] : DFF; --- AY_CH_R[9..0] : DFF; - - AY_CH_DIR[7..0] : DFFE; - - AY_OUTS1X : NODE; - AY_OUTS2X : NODE; - AY_OUTS3X : NODE; - - AY_OUTS1Y : NODE; --- AY_OUTS2Y : NODE; - AY_OUTS3Y : NODE; - -BEGIN - --- ====== AY8910 III version ========= - - BD[].clk = CLK42; - AWR.clk = CLK42; - BWR.clk = CLK42; - - BD[].ena = AY_CCC1; - BWR.ena = AY_CCC1; - AWR.ena = AY_CCC1; - - BD[7..5].clrn = !((AY_ADR[3..0] == B"00X1") or -- ch 1,2 - (AY_ADR[3..0] == B"0101") or -- ch 3 - (AY_ADR[3..0] == B"0110") -- ch shum - ); - BD4.clrn = !((AY_ADR[3..0] == B"00X1") or -- ch 1,2 - (AY_ADR[3..0] == B"0101") -- ch 3 - ); - - BD[] = D[]; - - AWR = AY_A_WR; --- BWR = (AY_D_WR or !(AY_ADR[5..4] == 0)); - BWR = AY_D_WR; - - AY_CH_DIR[].clk = AY_D_WR; - AY_CH_DIR[].ena = (AY_ADR[] == B"XXX10000"); - AY_CH_DIR[].d = D[]; - AY_CH_DIR[].clrn= /RESET; - - AY_CCC[].clk = CLK42; - AY_CCC[8..0].d = AY_T[]; - - (AY_AAX[].clk,AY_ADR[].clk) = AY_A_WR; - AY_ADR[].d = D[]; - - -- Write to 0D register - AY_AAX0.d = (D[3..0] == B"1101"); - -- Write to AMP registers 08,09,0A - AY_AAX1.d = (D[3..0] == B"1000") or (D[3..0] == B"1001") or (D[3..0] == B"1010"); - - -- reset signal for form generator --- AY_F_RES = DFF(VCC,DFF((!((AY_DO[7..5] == B"111") & AY_CCC1 & !AY_DO0) or AY_F_RES),CLK42,,),LCELL(!(AY_AAX0 or (AY_AAX1 & BD4)) or BWR),); - --- AY_F_R1 = DFF((!(AY_AAX0 or (AY_AAX1)) or BWR),CLK42,,); - AY_F_R1 = DFF((!AY_AAX0 or BWR),CLK42,,); - AY_F_RES = DFF(DFF(VCC,AY_CCC7,AY_F_R1,),AY_CCC7,AY_F_R1,); - - AY_X_[].prn = VCC; - --- AY_GF[3..0].clrn = /RESET; --- AY_GF[3..0].clk = AY_D_WR; --- AY_GF[3..0].ena = AY_ADR[] == B"XXXX1101"; --- AY_GF[3..0].d = D[3..0]; - - AY_DAT_WR.clk = CLK42; - - CASE AY_CCC[1..0] IS - WHEN B"00" => - AY_AX[] = (VCC,GND,AY_CCC[7..2]); -- CMD adress - AY_WR = GND; - AY_DI[] = AY_DAT[]; - - AY_DAT_WR = VCC; - - WHEN B"01" => - AY_AX[] = (B"0000",AY_ADR[3..0]); - AY_WR = !BWR; - AY_DI[] = BD[]; - - AY_DAT_WR = VCC; - - WHEN B"1X" => - AY_AX[] = (GND,GND,GND,AY_DO[4..0]); - AY_DAT_WR = AY_DO6; - AY_WR = !LCELL(!(AY_DO[7..5] == B"010") & - !((AY_DO[7..5] == B"110") & AY_CXX)); --- !((AY_DO[7..5] == B"110") & AY_CX)); - AY_DI[] = AY_DAT[]; - END CASE; - - AY_DD[].clk = CLK42; - AY_DD[].ena = !AY_CCC1 & !AY_CCC0; - AY_DD[] = AY_DO[]; - - AY_DO[] = lpm_ram_dq(AY_DI[],AY_AX[],AY_WR,CLK42,CLK42) - WITH (lpm_width=8,lpm_widthad=8,lpm_file="AY.MIF"); - --- AY_CX.prn = !DFF((((AY_DO[7..5] == B"00X") & AY_CCC1) & (!AY_DO5 or AY_C)),CLK42,,); - AY_CX.prn = !DFF(((AY_DO[7..5] == B"000") & AY_CCC1),CLK42,,); - AY_CXX.prn = !DFF(((AY_DO[7..5] == B"000") & AY_CCC1),CLK42,,); - AY_C.prn = VCC; - - AY_CX.clk = CLK42; - AY_CXX.clk = CLK42; - (AY_CXX.ena,AY_CX.ena) = DFF((((AY_DO[7..5] == B"010") or (AY_DO[7..5] == B"111")) & AY_CCC1),CLK42,,); - - IF DFF(((AY_DO[7..5] == B"010")),CLK42,,) THEN - AY_CX = (LCELL(AY_DAT[] == 0) & AY_CX); --- AY_CXX = (LCELL(AY_DAT[] == 0) & AY_CXX); --- AY_CX = (LCELL(AY_DAT[] == 0) & AY_CX) or (AY_C & DFF(AY_DO0,CLK42,,)); - AY_CXX = (LCELL(AY_DAT[] == 0) & AY_CXX) or (AY_C & DFF(AY_DO0,CLK42,,)); - ELSE - AY_CXX = DFF(((!/RESET & AY_DO0) or (!AY_F_RES & !AY_DO0)),CLK42,,); - AY_CX = DFF(((!/RESET & AY_DO0) or (!AY_F_RES & !AY_DO0)),CLK42,,); - END IF; - - (AY_C.clk,AY_DAT[].clk) = CLK42; - (AY_C.ena,AY_DAT[].ena) = !DFF(AY_DAT_WR,CLK42,,); - (AY_C,AY_DAT[]) = (GND,AY_DO[]) - (B"00000000",DFF((DFF(!AY_DO5,CLK42,,) or (AY_C & DFF(AY_DO7,CLK42,,))),CLK42,,)); - - AY_OUT[].clk = CLK42; - - AY_AMP[].clk = CLK42; - AY_AMP[] = ((AY_DAT[3..0] or AY_DAT[4]) & (AY_AA[] or !AY_DAT[4])); - - AY_DQ1[].clk = CLK42; - AY_OUTS1 = DFF(((AY_DO[7..0] == B"011XX001") & AY_CCC1),CLK42,,); - AY_OUT1.ena = AY_OUTS1; - AY_OUT1 = AY_CX xor AY_OUT1; - AY_DQ1[].ena = AY_OUTS1; - AY_DQ1[] = AY_AMP[] & LCELL((AY_OUT1 or AY_X_0) & (AY_X_3 or AY_SH0)); - - AY_DQ2[].clk = CLK42; - AY_OUTS2 = DFF(((AY_DO[7..0] == B"011XX010") & AY_CCC1),CLK42,,); - AY_OUT2.ena = AY_OUTS2; - AY_OUT2 = AY_CX xor AY_OUT2; - AY_DQ2[].ena = AY_OUTS2; - AY_DQ2[] = AY_AMP[] & LCELL((AY_OUT2 or AY_X_1) & (AY_X_4 or AY_SH0)); - - AY_DQ3[].clk = CLK42; - AY_OUTS3 = DFF(((AY_DO[7..0] == B"011XX011") & AY_CCC1),CLK42,,); - AY_OUT3.ena = AY_OUTS3; - AY_OUT3 = AY_CX xor AY_OUT3; - AY_DQ3[].ena = AY_OUTS3; - AY_DQ3[] = AY_AMP[] & LCELL((AY_OUT3 or AY_X_2) & (AY_X_5 or AY_SH0)); - - AY_OUTSX = DFF((((AY_DO[7..0] == B"011XX01X") or - (AY_DO[7..0] == B"011XX0X1")) & AY_CCC1),CLK42,,); - AY_DQX[].clk = CLK42; - AY_DQX[].ena = AY_OUTSX; - AY_DQX[] = AY_AMP[] & AY_CH_MIX; - - AY_DQX[].clrn = !AY_SH_Q; - AY_DQX[].prn = (B"0010") or !DFF((AY_SH_Q & BEEPER),CLK42,,); - - AY_CH_MIX.clk = CLK42; - CASE AY_DO[1..0] IS - WHEN 0,1 => AY_CH_MIX = LCELL((AY_OUT1 or AY_X_0) & (AY_X_3 or AY_SH0)); - WHEN 2 => AY_CH_MIX = LCELL((AY_OUT2 or AY_X_1) & (AY_X_4 or AY_SH0)); - WHEN 3 => AY_CH_MIX = LCELL((AY_OUT3 or AY_X_2) & (AY_X_5 or AY_SH0)); - END CASE; - - AY_SH_Q = DFF(((AY_DO[7..0] == B"011XX100") & AY_CCC1),CLK42,,); - - AY_SH[].clk = CLK42; - AY_SH[].prn = /RESET; - AY_SH[].ena = AY_SH_Q & AY_CXX; - AY_SH[] = ((AY_SH3 xor AY_SH0),AY_SH[16..1]); - - AY_VAR.clk = CLK42; - AY_VX.clk = CLK42; - AY_VA[].clk = CLK42; - - (AY_VAR.clrn,AY_VA[].clrn) = AY_F_RES; - AY_VX.clrn = AY_F_RES; - - (AY_VX.ena,AY_VA[].ena,AY_VAR.ena) = DFF(((AY_DO[7..0] == B"011XX101") & AY_CCC1 & !AY_BBLK & AY_CX),CLK42,,); - (AY_VX,AY_VA[],AY_VAR) = (AY_VX,AY_VA[],AY_VAR) + 1; - - AY_X_[].clk = CLK42; - AY_X_[].ena = DFF(((AY_DO[7..0] == B"011XX110") & AY_CCC1),CLK42,,); - AY_X_[] = AY_DAT[5..0]; - - AY_GF[].clk = CLK42; - AY_GF[].ena = DFF(((AY_DO[7..0] == B"011XX111") & AY_CCC1),CLK42,,); - AY_GF[] = AY_DAT[3..0]; - - -- block count when 1-st period end - AY_BBLK = DFF((AY_VX & (AY_GF0 or !AY_GF3)),CLK42,,); -- VA_COUNT_STOP - - -- set ALL ZERO when 1-st period end - AY_ABLK = DFF((!AY_GF3 & AY_VX),CLK42,,); - - -- inverse 2-nd-s periods - AY_BINV = DFF((AY_VX & ((AY_GF[] == B"1X10") or (AY_GF == B"1X01"))),CLK42,,); - - -- inverse ALL - AY_AINV = AY_GF2; - - AY_AA[].clrn= VCC; - AY_AA[].clk = CLK42; - AY_AA[].d = (AY_VA[] xor AY_BINV xor !AY_AINV) & !AY_ABLK; - -% - AY_AA[].clrn= VCC; - AY_AA[].prn = GND; - AY_AA[].clk = CLK42; - AY_AA[] = VCC; -% - - AY_CH_A[3..0].clk = AY_CCC7; - AY_CH_B[3..0].clk = AY_CCC7; - AY_CH_C[3..0].clk = AY_CCC7; - - AY_CH_A[3..0] = AY_DQ1[3..0]; - AY_CH_B[3..0] = AY_DQ2[3..0]; - AY_CH_C[3..0] = AY_DQ3[3..0]; - - DO[7..0] = AY_DD[]; - - AY_CH_CS[].clk = CLK42; - CASE AY_DQX[] IS - WHEN 15 => AY_CH_CS[] = 360 ; - WHEN 14 => AY_CH_CS[] = 255 ; - WHEN 13 => AY_CH_CS[] = 180 ; - WHEN 12 => AY_CH_CS[] = 127 ; - WHEN 11 => AY_CH_CS[] = 90 ; - WHEN 10 => AY_CH_CS[] = 64 ; - WHEN 9 => AY_CH_CS[] = 45 ; - WHEN 8 => AY_CH_CS[] = 32 ; - WHEN 7 => AY_CH_CS[] = 22 ; - WHEN 6 => AY_CH_CS[] = 16 ; - WHEN 5 => AY_CH_CS[] = 11 ; - WHEN 4 => AY_CH_CS[] = 8 ; - WHEN 3 => AY_CH_CS[] = 6 ; - WHEN 2 => AY_CH_CS[] = 4 ; - WHEN 1 => AY_CH_CS[] = 2 ; - WHEN 0 => AY_CH_CS[] = 0 ; - END CASE; - - AY_OUTS1X = DFF(AY_OUTS1,CLK42,,); - AY_OUTS2X = DFF((AY_OUTS2 or AY_SH_Q),CLK42,,); - AY_OUTS3X = DFF(AY_OUTS3,CLK42,,); - - AY_OUTS1Y = DFF(AY_OUTS1 or AY_OUTS1X,CLK42,,); --- AY_OUTS2Y = DFF(AY_OUTS2 or AY_OUTS2X,CLK42,,); - AY_OUTS3Y = DFF(AY_OUTS3 or AY_OUTS3X,CLK42,,); - - (AY_CH_LX[].clrn,AY_CH_RX[].clrn) = !DFF((AY_CCC[7..2] == 0),CLK42,,); - - (AY_CH_LX[],,) = LPM_ADD_SUB (,AY_CH_LX[],(B"00",AY_CH_CS[]),,,,) - WITH(LPM_WIDTH=11,LPM_REPRESENTATION="UNSIGNED"); - (AY_CH_RX[],,) = LPM_ADD_SUB (,AY_CH_RX[],(B"00",AY_CH_CS[]),,,,) - WITH (LPM_WIDTH=11,LPM_REPRESENTATION="UNSIGNED"); - - AY_CH_LX[].clk = CLK42; - AY_CH_RX[].clk = CLK42; - AY_CH_LX[].ena = DFF(DFF((AY_OUTS1 or AY_OUTS1Y or AY_OUTS2X or AY_OUTS2),CLK42,,),CLK42,,); - AY_CH_RX[].ena = DFF(DFF((AY_OUTS3 or AY_OUTS3Y or AY_OUTS2X or AY_OUTS2),CLK42,,),CLK42,,); - - AY_CH_VAL = DFF((AY_CCC[7..2] == B"111100"),CLK42,,); - --- AY_CH_L[].clk = AY_CH_VAL; --- AY_CH_R[].clk = AY_CH_VAL; - AY_CH_L[] = AY_CH_LX[10..1]; - AY_CH_R[] = AY_CH_RX[10..1]; - -END; - diff --git a/src/altera/quartus/acex/DCP.ACF b/src/altera/quartus/acex/DCP.ACF deleted file mode 100644 index b8616b1..0000000 --- a/src/altera/quartus/acex/DCP.ACF +++ /dev/null @@ -1,568 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP dcp -BEGIN - DEVICE = EP1K30FC256-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30FC256-3; - FREQUENCY = 200MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - DEVICE_FAMILY = ACEX1K; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 5.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - EXPLICIT_FAMILY = 1; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/quartus/acex/DCP.INC b/src/altera/quartus/acex/DCP.INC deleted file mode 100644 index 12ce88f..0000000 --- a/src/altera/quartus/acex/DCP.INC +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Thu Feb 07 21:14:23 2002 - -FUNCTION dcp (clk42, /reset, ct[2..0], continue, a[15..0], di[7..0], turbo_hand, /io, /rd, /wr, /mr, /rf, /m1, md[7..0], dos, refresh, g_line[9..0], test_r, acc_on, double_cas, blk_mem) - WITH (UPDATE) - RETURNS (/res, ras, cas, mc_end, mc_begin, mc_type, mc_write, do[7..0], ma[11..0], mca[1..0], clk_z80, turbo, /wait, /iom, /iomm, ra[17..14], page[11..0], type[3..0], cs_rom, cs_ram, v_ram, port, wr_dwg, wr_tm9, wr_awg, rd_kp11, kp11_mix, ga[9..0], graf, sp_scr, sp_sa, scr128, hdd_data, hdd_flip, ram, blk_r, pn4q, dcpp[7..0]); diff --git a/src/altera/quartus/acex/DCP.MIF b/src/altera/quartus/acex/DCP.MIF deleted file mode 100644 index aee8502..0000000 --- a/src/altera/quartus/acex/DCP.MIF +++ /dev/null @@ -1,119 +0,0 @@ -DEPTH = 256; % Memory depth and width are required % -WIDTH = 16; % Enter a decimal number % - -ADDRESS_RADIX = HEX; % Address and value radixes are optional % -DATA_RADIX = HEX; % Enter BIN, DEC, HEX, or OCT; unless % - % otherwise specified, radixes = HEX % - --- Specify values for addresses, which can be single address or range - -CONTENT -BEGIN - [0..FF] : 1000; - - 0 : 1040 % DCP PAGE %; - -% - MA[11..0] bit0 - WG_A5 - bit1 - WG_A6 - - bit2 - MUX_KP11, 0 - WG,CMOS 1 - KMPS,TM9 - bit3 - RD/WR 0 - WRITE 1 - READ - bit4 - CS_WG93 or WR_TM9 - - bit5 - HDD/CMOS strobe - bit6,7 - 00 - FDD/Scr switches - 01 - HDD Switch/ Reset - 10 - HDD1/HDD2 - 11 - CMOS - bit8 - HDD CS1/CS3 or CMOS data/adr - bit9,10,11 - HDD_A[2..0] -% - 10 : - 7018 % RD WG93 1F,0F % - 7019 % RD WG93 3F % - 701A % RD WG93 5F % - 701B % RD WG93 7F % - - 7017 % WR_PDOS FF % - 701F % RD_KEYS/ WR_A20 % - - 7023 % Set 720 % - 7027 % Set 1440 %; - --- 18 : --- 1000 % No_function % - --- 1B : 1000; % ISA_A20 WR % - - 1C : 71D8 % CMOS_DAT_RD %; - 1D : 70D4 % CMOS_ADR_WR %; - 1E : 71D4 % CMOS_DAT_WR %; - - 20 : - 60A8 % HD_CS1 ports % - 62A8 - 64A8 - 66A8 - 68A8 - 6AA8 - 6CA8 - 6EA8 - - 6DA8 % HD_CS3 3F6 port % - 6FA8 % HD_CS3 3F7 port % - - 7060 % Set HDD1 % - 7064 % Set HDD2 % - - 7120 % Set 320 Lines % - 7124 % Set 312 Lines % - - 7160 % Soft Reset % - 7164 % ??? %; - - - 30 : - 7000 % slot 1 ports % - 7001 % slot 2 ports % - 7002 % slot 1 mem % - 7003 % slot 2 mem % - ; - - 40 : 4000; % kb read % - - 52 : 3000; -- AY_D READ - - 58 : 5000; -- KEMPSTON-Mouse - - [80..FF]: C000; - - 88 : 2000; -- COVOX - 89 : 2000; -- COVOX-Mode - - 8C : 3000; -- AY_D READ - 8D : 2000; -- AY_A WRITE - 8E : 2000; -- AY_D WRITE - - 8F : 2000; -- port for ROM_WRITE - --- 80 : 7F 7F 7F 7F 7F 7F 7F 7F % KBD_DAT %; --- 90 : 7F % PORT FF %; - - 90 : 3030 3031 2032 2033 2034 2035 2036 2037 - 2038 2039 203A 203B 203C 203D 203E 203F; % RAM PAGES % - - B0 : 2020 2021 2022 2023 2024 2025 2026 2027 - 2028 2029 202A 202B 202C 202D 202E 202F; % RAM PAGES % - - [C0..CF]: 2000 % SYS PORTS COPYES %; - - D0 : 2010 2011 2012 2013 2014 2015 2016 2017 - 2018 2019 201A 201B 201C 201D 201E 201F; % RAM PAGES % - E0 : 2041 2041 2041 2041 2041 2041 2041 2041 - 2000 2005 2002 2041 20FF 2000 2000 2041; % ROM PAGES % --- E0 : 41 42 43 44 45 46 47 48 00 05 02 E0 F0 00 00 E8; % ROM PAGES % - F0 : 2000 2001 2002 2003 2004 2005 2006 2007 - 2008 2009 200A 200B 200C 200D 200E 200F; % RAM PAGES % - -END ; diff --git a/src/altera/quartus/acex/DCP.TDF b/src/altera/quartus/acex/DCP.TDF deleted file mode 100644 index d73e33f..0000000 --- a/src/altera/quartus/acex/DCP.TDF +++ /dev/null @@ -1,750 +0,0 @@ - - TITLE "DCP"; - -PARAMETERS - ( - UPDATE = 1 - ); - -INCLUDE "lpm_ram_dp"; --- INCLUDE "DC_PORT2"; - -SUBDESIGN dcp - ( - CLK42 : INPUT; - /RESET : INPUT; - - /RES : OUTPUT; - - CT[2..0] : INPUT; - - CONTINUE : INPUT; - RAS : OUTPUT; - CAS : OUTPUT; - MC_END : OUTPUT; - MC_BEGIN : OUTPUT; - MC_TYPE : OUTPUT; - MC_WRITE : OUTPUT; - - A[15..0] : INPUT; - DI[7..0] : INPUT; - DO[7..0] : OUTPUT; - MA[11..0] : OUTPUT; - MCA[1..0] : OUTPUT; - - TURBO_HAND : INPUT; - CLK_Z80 : OUTPUT; - TURBO : OUTPUT; - - /IO : INPUT; - /RD : INPUT; - /WR : INPUT; - /MR : INPUT; - /RF : INPUT; - /M1 : INPUT; - - /WAIT : OUTPUT; - /IOM : OUTPUT; - /IOMM : OUTPUT; - - MD[7..0] : INPUT; - RA[17..14] : OUTPUT; - PAGE[11..0] : OUTPUT; - - TYPE[3..0] : OUTPUT; - - CS_ROM : OUTPUT; - CS_RAM : OUTPUT; - V_RAM : OUTPUT; - PORT : OUTPUT; --- DOS : OUTPUT; - DOS : INPUT; - - WR_DWG : OUTPUT; - - WR_TM9 : OUTPUT; - WR_AWG : OUTPUT; - RD_KP11 : OUTPUT; - KP11_MIX : OUTPUT; - - REFRESH : INPUT; - - G_LINE[9..0]: INPUT; - GA[9..0] : OUTPUT; - GRAF : OUTPUT; - - SP_SCR : OUTPUT; - SP_SA : OUTPUT; - SCR128 : OUTPUT; - - TEST_R : INPUT; - - HDD_DATA : OUTPUT; - HDD_FLIP : OUTPUT; - RAM : OUTPUT; - BLK_R : OUTPUT; - - PN4Q : OUTPUT; - - ACC_ON : INPUT; -- asselerator state - 1 - present - - DCPP[7..0] : OUTPUT; - - DOUBLE_CAS : INPUT; - - BLK_MEM : INPUT; - - ) -VARIABLE - - CLK21 : NODE; - --- DC : DC_PORT2; - - CLK84 : NODE; - CLK42X : NODE; - - CTZ[1..0] : DFF; - --- CT[2..0] : DFF; - - MEM : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8,LPM_FILE="DCP.MIF"); - - D[7..0] : NODE; - ADR8_MEM : NODE; - MEM_D[15..0]: NODE; - MEM_WR : NODE; - - DCP_CX : NODE; - SC_LCELL : NODE; - - PG3[5..0] : NODE; - PG0[5..0] : NODE; - MPGS[7..0] : LCELL; - PGS[7..0] : DFF; --- PGS[7..0] : NODE; - - PN[7..0] : DFFE; - SC[7..0] : DFFE; - SYS : DFFE; - CNF[7..0] : DFFE; - AROM16 : DFFE; - TB_SW : DFFE; - - CASH_ON : NODE; - NMI_ENA : NODE; - - DD[7..0] : DFFE; - STARTING : NODE; - --- DOS_ : NODE; --- DOS : NODE; --- DOS_ON_ : NODE; - - MC_RQ : NODE; - MC_END : DFFE; - MC_BEGIN : DFFE; - MC_TYPE : DFFE; - MC_WRITE : DFFE; - RAS : DFFE; - CAS : DFFE; - - MA_[11..0] : DFFE; - MCA[1..0] : DFFE; - - /IOM : DFFE; - /IOMM : DFFE; - /IOMX : DFFE; - /IOMY : DFFE; - - WT_CT[3..0] : DFFE; - W_TAB[3..0] : LCELL; - HDD_W[3..0] : NODE; - /IO_WAIT : NODE; - /MR_WAIT : NODE; - - MEM_RW : NODE; - IO_RW : NODE; - IO_RWM : NODE; - - MA_CT[1..0] : DFFE; - - WR_TM9 : DFFE; - RD_KP11 : DFFE; - - /RES : NODE; - - RFT : DFF; - RFC : DFFE; - - GRAF : DFFE; - GRAF_X : NODE; - GA[9..0] : LCELL; - - SP_SCR : LCELL; - SP_SA : LCELL; - - HDD_FLIP : DFFE; - /IOMZ : DFFE; - - HDD_DATA : NODE; - HDD_ENA : NODE; - - BLK_C : NODE; - /CASH : NODE; - - DCPP[7..0] : DFFE; - - PORTS_X : NODE; - - NO_IO_WAIT : NODE; - - DCP_RES : NODE; - - HDD_A[3..0] : DFF; - - X_ADR[11..0]: LCELL; - X_MA_[11..0]: LCELL; - - WR_AWGX : NODE; - - /IOWR : NODE; - - RA[17..14] : LCELL; - --- SPR_[1..0] : NODE; - SPR_[1..0] : LCELL; - - SYS_ENA : NODE; - -BEGIN - -% - DC.CLK42 = CLK42; - DC./RESET = /RESET; - - DC.A[15..0] = A[15..0]; - - DC./IO = /IO; - DC./WR = /WR; - DC./M1 = /M1; - --- DC./IOM; --- DC./IOMM; --- DC.DCP[7..0]; - - DC.DOS = DOS; - DC.CNF[1..0]= CNF[4..3]; - - DC.SYS = SYS; - --- DC.PORT_X; -% - - --- ============================================================== -% - CT[].clk = CLK42; - - IF CT1 THEN - CT[1..0] = GND; - CT2 = !CT2; - ELSE - CT[1..0] = CT[1..0]+1; - CT2 = CT2; - END IF; -% - - /RES = DFFE(VCC,CLK42,,,CT0); --- ============================================================== - --- TURBO = DFFE((TB_SW & TURBO_HAND),CLK42,,/RESET,CLK_Z80); - TURBO = DFF(DFFE((TB_SW & TURBO_HAND),CLK_Z80,,/RESET,!/RF),CLK42,,); - - CLK84 = CLK42 xor LCELL(CLK42X); - CLK42X = DFF(!CLK42X,CLK84,,); - - CTZ[].clk = CLK84 xor CTZ1; - CTZ[] = CTZ[]+1; - --- CLK_Z80 = CTZ1; - --- CLK_Z80 = DFF((!CLK21 & TURBO) or (TFF((CT2 & CT1),CLK42,,) & !TURBO),!CLK42,,); --- CLK_Z80 = DFF((CLK21 & TURBO) or (TFF((CT2 & CT1),CLK42,,) & !TURBO),!CLK42,,); - - CLK_Z80 = DFF((CLK21 & TURBO) or (TFF((!CT2 & CT1),CLK42,,) & !TURBO),!CLK42,,); --- CLK_Z80 = DFF((!CLK21 & TURBO) or (TFF((!CT2 & CT1),CLK42,,) & !TURBO),!CLK42,,); - --- ============================================================== - CLK21 = DFF((!CT0 xor CT2),CLK42,,); --- === Adress Multiplexer ======================================= - - MA_[].clk = CLK42; --- MA_[].ena = (CT2 xor CT0); - MA_[].ena = CLK21; - - WR_TM9.clk = CLK42; --- WR_TM9.ena = (CT2 xor CT0); - WR_TM9.ena = CLK21; - WR_TM9.prn = /RES; - - RD_KP11.clk = !CLK42; --- RD_KP11.ena = (CT2 xor CT0); - RD_KP11.ena = CLK21; - RD_KP11.prn = /RES; - RD_KP11.d = !(MA_CT[] == 0); - --- WR_AWGX = DFF((WR_TM9 or CLK21),!CLK42,,); - WR_AWGX = DFF(GND,!WR_TM9,,DFF(WR_AWGX,CLK42,,)); - --- WR_TM9 = (!MA_CT1 or (!IO_RW & !PORTS_X)); - WR_TM9 = (!MA_CT1 or (!/IO & !PORTS_X)); - - WR_AWG = WR_AWGX; - - KP11_MIX = TFF(VCC,RD_KP11,,); - - WR_DWG = !MC_BEGIN; --- WR_DWG = DFF(!MC_BEGIN,CLK42,,); --- WR_DWG = LCELL(!MC_BEGIN); - --- MA_CT[].ena = (CT2 xor CT0); - MA_CT[].ena = CLK21; - MA_CT[].clk = CLK42; - - IF !LCELL(CT2 & !CT1) THEN - MA_CT[] = MA_CT[]+1; - ELSE - MA_CT[] = GND; - END IF; - -% - MA_[11..0] bit0 - WG_A5 - bit1 - WG_A6 - bit2 - MUX_KP11, 0 - WG,CMOS 1 - KMPS,TM9 - bit3 - RD/WR 0 - WRITE 1 - READ - bit4 - CS_WG93 or WR_TM9 - bit5 - HDD/CMOS strobe - bit7,6 - 00 - not - 01 - ???? - 10 - HDD1/2 - 11 - CMOS - bit8 - HDD CS1/CS3 or CMOS data/adr - bit9,10,11 - HDD_A[2..0] -% - CASE A[15..14] IS - WHEN 0 => SP_SCR = GND; SP_SA = GND; - WHEN 1 => SP_SCR = !GRAF; SP_SA = GND; - WHEN 2 => SP_SCR = GND; SP_SA = PG3[1]; - WHEN 3 => SP_SCR = !GRAF & LCELL(PG3[] == B"1101X1"); SP_SA = PG3[1]; - END CASE; - - CASE GRAF IS - WHEN 0 => GA[] = (GND,GND,MEM.q[3..0],A[13..10]); --- WHEN 1 => GA[] = (VCC,(G_LINE[8..0] + (B"00000",A[13..10]))); - WHEN 1 => GA[] = (VCC,G_LINE[8..0]); - END CASE; - - CASE (IO_RW,MA_CT0) IS - WHEN 0 => X_ADR[] = (GND,CNF4,PN5,DOS,/WR,A15,A14,A[6..5],A13,A7,A[2]); - WHEN 1 => X_ADR[] = (GND,GND,CNF[4..3],B"01000000"); - WHEN 2 => X_ADR[] = (GND,GA3,GA[1..0],A[9..2]); - WHEN 3 => X_ADR[] = (GND,GND,GA[3..2],MEM.q[7..4],GA[7..4]); - END CASE; - - CASE IO_RW IS - WHEN 0 => X_MA_[] = (HDD_A[2..0],MEM.q[8..6],((MEM.q[5..4]) & (!/IOMZ,!/IOMY)),/WR,MEM.q2,A[6..5]); - WHEN 1 => X_MA_[] = (HDD_A[2..0],B"00000",/WR,VCC,A[6..5]); - END CASE; -% - CASE MA_CT1 IS --- WHEN 0 => MA_[] = X_ADR[]; - WHEN 0 => MA_[] = (GND,X_ADR[10..0]); - WHEN 1 => MA_[] = (HDD_A[2..0],X_MA_[8..4],/WR,X_MA_[3],A[6..5]); - END CASE; -% - - CASE (IO_RW,MA_CT1) IS - WHEN B"00" => - MA_[] = (X_ADR[11..0]); - WHEN B"01" => - MA_[] = (HDD_A[2..0],MEM.q[8..6],((MEM.q[5..4]) & (!/IOMZ,!/IOMY)),/WR,MEM.q2,A[6..5]); - WHEN B"10" => - MA_[] = (X_ADR[11..0]); - WHEN B"11" => - MA_[] = (HDD_A[2..0],B"00000",/WR,VCC,A[6..5]); - END CASE; - - MA[] = MA_[]; - - MCA[].ena = CT2 & CT1; - MCA[].clk = CLK42; - MCA[] = A[1..0]; -- adress for CAS - - HDD_A[].clk = CLK42; - CASE (A[14],A[2..0]) IS - WHEN 0 => HDD_A[] = 0; - WHEN 1 => HDD_A[] = 1; - WHEN 2 => HDD_A[] = 2; - WHEN 3 => HDD_A[] = 3; - WHEN 4 => HDD_A[] = 4; - WHEN 5 => HDD_A[] = 5; - WHEN 6 => HDD_A[] = 0; - WHEN 7 => HDD_A[] = 0; - WHEN 8 => HDD_A[] = 0; - WHEN 9 => HDD_A[] = 0; - WHEN 10 => HDD_A[] = 6; - WHEN 11 => HDD_A[] = 7; - WHEN 12 => HDD_A[] = 14; - WHEN 13 => HDD_A[] = 15; - WHEN 14 => HDD_A[] = 0; - WHEN 15 => HDD_A[] = 0; - END CASE; - - --- === Memory Sinchronizer ====================================== - - -% RF | MEM | RF - ____ | | _______ -/MR \__________/ - | | - _____| | _______ -MC_BEGIN \________/ - | |__ -MC_END ____________/ \_______ - ______ |__________ -MC_TYPE \_____/ - | | -RAS __ _ ___ __ - \__/|\__/ | \__/ - ____ _ __ -CAS \__/ | \__/|\__/ - | | - -% - --- MC_RQ = DFF(((/MR & DFF(/IO,CLK42,,)) or (/RD & /WR)),CLK42,,); - --- MC_RQ = DFF(((/MR & DFFE(GND,!CLK42,,!/IO,CT0)) or (/RD & /WR)),!CLK42,,); - --- MC_RQ = DFF((((/MR or !/RF) & DFF(/IO,CLK42,,/M1)) or (/RD & /WR)),CLK42,,); - --- MC_RQ = DFF((((/MR or !/RF) & IO_RW) or (/RD & /WR)),CLK42,,); - --- MC_RQ = DFF(((MEM_RW & IO_RW) or (/RD & /WR)),CLK42,,); - - MC_RQ = DFF(((MEM_RW & DFF(DFF(IO_RW,CLK42,,!/IO),CLK42,,!/IO)) or (/RD & /WR)),!CLK42,,); - - MC_BEGIN.clk= CLK42; - MC_BEGIN.ena= CT1 & CT2; - MC_BEGIN.d = MC_RQ; - MC_BEGIN.prn= !(/MR & /IO); - - MC_END.clk = CLK42; - MC_END.d = VCC; - MC_END.ena = (CT0 & CT2) & !MC_BEGIN & CONTINUE & !BLK_C; - MC_END.clrn = !(/MR & /IO); - - MC_TYPE.clk = CLK42; - MC_TYPE.ena = CT1 & CT2; - MC_TYPE.d = MC_RQ or MC_END; - MC_TYPE.prn = /RES; - - MC_WRITE.clk= CLK42; - MC_WRITE.ena= CT1 & CT2; - MC_WRITE.d = MC_RQ or CS_RAM or /WR or MC_END; - MC_WRITE.prn= /RES; - - RFT.clk = REFRESH; - RFT.d = GND; - RFT.prn = RFC; --- RFT.prn = VCC; - - RFC.clk = CLK42; - RFC.d = !MC_RQ or RFT; --- RFC.d = !MC_RQ; - RFC.ena = CT1 & CT2; - - RAS.ena = (!(CT1 or (CT0 xor MC_TYPE))) & (!MC_TYPE or !RFC); - CAS.ena = (!(CT1 or (CT0 xor !MC_TYPE))) & (!MC_TYPE or !RFC); --- RAS.ena = (!(CT1 or (CT0 xor MC_TYPE))); --- CAS.ena = (!(CT1 or (CT0 xor !MC_TYPE))); - - RAS.clk = CLK42; CAS.clk = CLK42; - RAS.d = CT2; CAS.d = CT2 or BLK_C; - - RAS.prn = /RES; - CAS.prn = /RES; --- CAS.prn = !BLK_C; - --- /MR_WAIT = (MEM_RW or /CASH or DFF(MC_END,CLK42,!/MR,)) or (!TURBO & !ACC_ON); --- /MR_WAIT = MC_END or LCELL(MEM_RW or /CASH or (!TURBO & !ACC_ON)); - - /MR_WAIT = LCELL(MC_END or MEM_RW or /CASH or (!TURBO & !ACC_ON)); - --- MEM_RW = LCELL(/MR or !/RF); - - -- anti gluk! - MEM_RW = DFF((!/RF or BLK_MEM),!/MR,,LCELL(MEM_RW or !/MR)); - IO_RWM = DFF(!/M1,!/IO,,LCELL(IO_RW or !/IO)); - - IO_RW = DFF(/IO,CLK42,,/M1); - - /IOMM.clk = CLK42; --- /IOMM.ena = CT0 xor CT2; - /IOMM.ena = CLK21; - /IOMM.d = IO_RW or !MC_END or DFF((WT_CT[] == 0),CLK42,,); - /IOMM.prn = /RES; - - /IOMX.clk = CLK42; --- /IOMX.ena = CT0 xor CT2; - /IOMX.ena = CLK21; - /IOMX.d = /IOMM; - /IOMX.prn = /RES; - - /IOMY.clk = CLK42; --- /IOMY.ena = CT0 xor CT2; - /IOMY.ena = CLK21; - /IOMY.d = /IOMX or !MC_END or DFF((WT_CT[] == B"000X"),CLK42,,); --- /IOMY.prn = /RES; - /IOMY.prn = PORTS_X; - - PORTS_X = DFF(((DCPP[7..4] == B"0010") or (DCPP[7..4] == B"0001")),CLK42,,); - - /IOMZ.clk = CLK42; --- /IOMZ.ena = CT0 xor CT2; - /IOMZ.ena = CLK21; - /IOMZ.d = (A8 xor /RD) or /IOMX or !MC_END or DFF((WT_CT[] == B"000X"),CLK42,,); - /IOMZ.prn = PORTS_X; - - HDD_DATA = DFF((HDD_ENA & DFF((MEM.q[11..8] == 0),CLK42,,) & PORTS_X),CLK42,,); - HDD_ENA = (MEM.q[7..5] == B"101"); - - HDD_FLIP.clk = /IOM; - HDD_FLIP.ena = HDD_ENA & DFF((DCPP[] == B"0010XXXX"),CLK42,,); - HDD_FLIP.d = !HDD_FLIP & (MEM.q[11..8] == 0); - HDD_FLIP.clrn = /RESET & DFF(GND,!DOUBLE_CAS,,HDD_FLIP); - - /IOM.clk = CLK42; --- /IOM.ena = CT0 xor CT2; - /IOM.ena = CLK21; - /IOM.d = (/IOMX & /IOM); - /IOM.prn = !/IO & /M1; - --- /IO_WAIT = LCELL(/IO or !/M1 or DFF(DFFE((WT_CT[] == 0),CLK42,,,CLK21),CLK42,,NO_IO_WAIT)); - - /IO_WAIT = LCELL(IO_RWM or DFF(DFFE((WT_CT[] == 0),CLK42,,,CLK21),CLK42,,NO_IO_WAIT)); - - NO_IO_WAIT = !DFF(((A[7..0] == B"111XX1XX") & !TURBO & DOS),CLK42,,); --- NO_IO_WAIT = TURBO; - - WT_CT[].clk = CLK42; --- WT_CT[].ena = (CT2 xor CT0); - WT_CT[].ena = CLK21; --- WT_CT[].ena = CT1; - WT_CT[].prn = MC_END; - - CASE (/IOM,DFF((WT_CT[] == 0),CLK42,,)) IS - WHEN B"1X" => WT_CT[].d = W_TAB[]; - WHEN B"00" => WT_CT[].d = WT_CT[]-1; - WHEN B"01" => WT_CT[].d = GND; - END CASE; - - CASE (TURBO,MEM.q[14..12]) IS - WHEN 0 => W_TAB[] = 2; WHEN 8 => W_TAB[] = 2; - WHEN 1 => W_TAB[] = 2; WHEN 9 => W_TAB[] = 2; - WHEN 2 => W_TAB[] = 1; WHEN 10 => W_TAB[] = 4; - WHEN 3 => W_TAB[] = 1; WHEN 11 => W_TAB[] = 4; - WHEN 4 => W_TAB[] = 1; WHEN 12 => W_TAB[] = 7; - WHEN 5 => W_TAB[] = 2; WHEN 13 => W_TAB[] = 7; --- WHEN 6 => W_TAB[] = 10; WHEN 14 => W_TAB[] = 10; - WHEN 6 => W_TAB[] = 7; WHEN 14 => W_TAB[] = 7; --- WHEN 6 => W_TAB[] = 13; WHEN 14 => W_TAB[] = 13; - WHEN 7 => W_TAB[] = 10; WHEN 15 => W_TAB[] = 10; - END CASE; - - CASE LCELL(MEM.q[11..8] == 0) IS - WHEN 0 => HDD_W[] = 10; -- registers wait - WHEN 1 => HDD_W[] = 4; -- datas wait - END CASE; - - /WAIT = (/IO_WAIT & /MR_WAIT); - - --- === Other Devicese CASHE, ISA, ROM... === - - V_RAM = PN2; -- for ORIGINAL Waits - -IF UPDATE == 1 GENERATE - -- all ROM/RAM switches in main .tdf - BLK_R = SC4; - -- all cashes in main .tdf - /CASH = GND; - -- cashe dir in main .tdf - CASH_ON = GND; -ELSE GENERATE - -- for blk wait - /CASH = DFF((MEM.q[7..4] == 15),!CLK42,BLK_R,); --- when BLK_R = 1 => Other Devices stay Active! - BLK_R = DFF( (LCELL((MEM.q7 & MEM.q6 & RAM) or - (MEM.q7 & LCELL(A14 & A15 & SC4))) & - !DFF(DFF(MC_RQ,CLK42,,!/MR),CLK42,,!/MR)),!CLK42,!/MR,); - CASH_ON = DFFE(A7,(/IO or /RD),/RESET,,DFF((DCPP[] == H"88"),CLK42,,)); -END GENERATE; - - RAM = !LCELL(A14 or A15 or (SC0 & SYS)); - - CS_ROM = LCELL(/MR or !RAM or !/RF); - CS_RAM = LCELL(/MR or RAM or !/RF); - --- ============================================== - --- graf screen enable for pages - - GRAF_X = LCELL(MEM.q[7..4] == B"0101"); - - GRAF.clk = CLK42; - GRAF.ena = (CT0 & CT2); - GRAF.d = GRAF_X; - - BLK_C = LCELL((GRAF_X xor GRAF) & !MC_TYPE); - ------------------------------------------ - - SCR128 = PN3; - - D[] = DI[]; - -- when not IO - reset DCPP! - - DCP_RES = DFF((STARTING & !/IO & /M1),CLK42,,); - - DCPP[].clk = CLK42; - DCPP[].ena = !DFF(MC_END,CLK42,,); - DCPP[].clrn = MC_END & DCP_RES; -- not in/out when START - DCPP[].d = MD[]; - --- DD[].clk = !CLK42; --- DD[].ena = !DFF(MC_END,!CLK42,,); - - DD[].clk = CLK42; - DD[].ena = !DFF(MC_END,CLK42,,); - DD[].clrn = MC_END & DCP_RES; - - CASE LCELL(MD[7..4] == 15) IS - WHEN 0 => DD[].d = MD[]; - WHEN 1 => DD[].d = (VCC,VCC,PG3[]); - END CASE; - --- === Port Decoder ============================================= - - DCP_CX = (DCPP[] == B"1100XXXX"); - SYS_ENA = DFF((DCP_CX & (DCPP[] == B"XXXXX110")),CLK42,,); - --- /IOWR = DFF((/WR or /IO),CLK42,,!/IO); - /IOWR = LCELL(/IO or /WR or !/M1); - - CNF[].ena = SYS_ENA; CNF[].d = (DI[] & DI2) or (CNF[] & !DI2); - AROM16.ena = SYS_ENA; AROM16.d = (DI0 & !DI1) or (AROM16 & DI1); - TB_SW.ena = SYS_ENA; TB_SW.d = (DI0 & DI1) or (TB_SW & !DI1); - SYS.ena = SYS_ENA; SYS.d = !A6; - - SC[].ena = DFF((DCP_CX & (DCPP[] == B"XXXXX000")),CLK42,,) ;SC[].d = DI[]; - PN[].ena = DFF((DCP_CX & (DCPP[] == B"XXXXX001")),CLK42,,) ;PN[].d = DI[]; - - TB_SW.clk = /IOWR; - AROM16.clk = /IOWR; - PN[].clk = /IOWR; - SC[].clk = /IOWR; - SYS.clk = /IOWR; - CNF[].clk = /IOWR; - - AROM16.clrn = /RESET; - TB_SW.prn = /RESET; - SYS.clrn = /RESET; - CNF[].clrn = /RESET; - - SC[].clrn = /RESET & !CNF6; -- Scorpion-OFF - - PN[5..0].clrn = /RESET & !CNF5; -- reset PN5 - PN[7..5].clrn = /RESET & CNF7; -- set Pentagon-512 - - PN4Q = PN4; - --- ==================================== - --- ********** Pages decoder *********** - --- ==================================== - - PG3[] = (!PN7,VCC,LCELL((SC4 & !CNF7) or (CNF7 & PN6)),PN[2..0]); - --- SC0,SC1,SYS,DOS,PN4,AROM16,CASH_ON,NMI_ENA - PG0[] = (VCC,GND, - LCELL(SC0 or !SYS or CASH_ON or !NMI_ENA), - LCELL(((AROM16 & !(SC0 & SYS)) or (CASH_ON & NMI_ENA))), - LCELL((SPR_1 & SC_LCELL) or !SYS or !NMI_ENA), - LCELL((SPR_0 & SC_LCELL) or !SYS or !NMI_ENA)); - --- SC_LCELL = LCELL(!(SC0 & SYS) & !CASH_ON); - SC_LCELL = (!(SC0 & SYS) & !CASH_ON); - - NMI_ENA = VCC; - - SPR_[] = !SC1 & (DOS,(PN4 or !DOS)); -- expansion/dos/basic128/basic48 - - CASE (TEST_R,SYS) IS - WHEN B"X0" => RA[] = (!AROM16,B"000"); -- system 0/1 - WHEN B"01" => RA[] = (!AROM16,GND,SPR_[]); -- expansion/dos/basic - WHEN B"11" => RA[] = (B"001",SPR_0); -- test - END CASE; - --- ==================================== - - CASE A[15..14] IS - WHEN 0 => MPGS[5..0] = PG0[]; - WHEN 1 => MPGS[5..0] = B"101001"; %H"E9"% - WHEN 2 => MPGS[5..0] = B"101010"; %H"EA"% - WHEN 3 => MPGS[5..0] = PG3[]; - END CASE; - MPGS[7..6] = VCC; - --- STARTING = DFF(GND,VCC,/RESET,(/IO or /RD)); - STARTING = LCELL(/RESET & (STARTING or !(/IO or /RD))); - - PGS[].clk = !CLK42; - CASE (LCELL(/IO & !(A14 & A15 & !STARTING)),MC_END) IS - WHEN B"1X" => PGS[] = (VCC,VCC,MPGS[5..0]); - WHEN B"01" => PGS[] = DD[]; - WHEN B"00" => PGS[] = GND; - END CASE; - - MEM_WR = DFFE((DCPP[7] & DCPP[6] & STARTING & DFF(DFF((MC_END & !/WR),CLK42,,),CLK42,,)),CLK42,!/IO,,CT1); - - ADR8_MEM = GND; - - CASE ADR8_MEM IS - WHEN 1 => MEM_D[] = (DI[],MEM.q[7..0]); DO[] = MEM.q[15..8]; - WHEN 0 => MEM_D[] = (MEM.q[15..8],DI[]); DO[] = MEM.q[7..0]; - END CASE; - - MEM.wren = MEM_WR; - MEM.data[] = MEM_D[]; - MEM.wraddress[] = PGS[]; - MEM.wrclock = CLK42; - MEM.wrclken = VCC; - MEM.rden = VCC; - MEM.rdaddress[] = PGS[]; - MEM.rdclock = CLK42; - MEM.rdclken = VCC; --- = MEM.q[]; - - PAGE[] = MEM.q[11..0]; - TYPE[] = MEM.q[15..12]; - - - PORT = !(MEM.q[15..12] == 0) or /IO or (/RD & /WR); - -END; - - diff --git a/src/altera/quartus/acex/KBD.ACF b/src/altera/quartus/acex/KBD.ACF deleted file mode 100644 index 6ef977a..0000000 --- a/src/altera/quartus/acex/KBD.ACF +++ /dev/null @@ -1,568 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP kbd -BEGIN - DEVICE = EP1K30QC208-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - DEVICE_FAMILY = ACEX1K; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - BIDIR_PIN = STRONG; - END_TIME = 0.0ns; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - EXPLICIT_FAMILY = 1; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/quartus/acex/KBD.INC b/src/altera/quartus/acex/KBD.INC deleted file mode 100644 index a6b7f8d..0000000 --- a/src/altera/quartus/acex/KBD.INC +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Thu May 03 21:43:31 2001 - -FUNCTION kbd (clk42, clk_k, kbd_cc, kbd_dd, /rf, /io, /iom, /m1, a[15..8], ena, int_ena) - RETURNS (kbo[7..0], kb_reset, kb_f12, kb_ctrl, kb_alt, kb_sh, int); diff --git a/src/altera/quartus/acex/KBD.TDF b/src/altera/quartus/acex/KBD.TDF deleted file mode 100644 index 20e40be..0000000 --- a/src/altera/quartus/acex/KBD.TDF +++ /dev/null @@ -1,180 +0,0 @@ - - TITLE "ZX-Keyboard"; - -INCLUDE "lpm_ram_dq"; - -SUBDESIGN kbd - ( - CLK42 : INPUT; -- full sinc 42MHz - CLK_K : INPUT; -- sinc input 15KHz - KBD_CC : INPUT; -- sinc KBD - KBD_DD : INPUT; -- data KBD - - /RF : INPUT; -- /rfsh - /IO : INPUT; -- /iorq - /IOM : INPUT; - /M1 : INPUT; - - A[15..8] : INPUT; - - KBO[7..0] : OUTPUT; -- output - - KB_RESET : OUTPUT; - - KB_F12 : OUTPUT; - KB_CTRL : OUTPUT; - KB_ALT : OUTPUT; - KB_SH : OUTPUT; - - ENA : INPUT; - INT_ENA : INPUT; - INT : OUTPUT; - ) -VARIABLE - - KB_CT[2..0] : DFF; - KB_D[10..0] : DFF; - KB_OFF : DFFE; - - KB_EXT : DFF; - KB_ALT : DFF; - KB_CTRL : DFF; - KB_SH : DFF; - - KB_CTRL_X : NODE; - KB_ALT_X : NODE; - KB_SH_X : NODE; - KB_XXX : NODE; - KB_RESET : DFF; - RXA[1..0] : DFFE; - - K_CLK : NODE; - KA[15..0] : NODE; - KB_MA[2..0] : DFF; - KB_MXA : NODE; - KDCA[2..0] : LCELL; - - KDD[7..0] : DFF; - KBD[5..0] : DFF; - KD[7..0] : NODE; - KDX[5..0] : DFF; - KDXX[5..0] : DFF; - WR_KBD : NODE; - KB_OFL : NODE; - -BEGIN - - INT = DFF((KB_CT[] == 0),CLK42,,INT_ENA); - --- KB_CT[].clk = DFF(CLK_K,CLK42,,); - KB_CT[].clk = CLK_K; - KB_CT[].prn = DFF(KBD_CC,CLK42,,); - - CASE KB_CT[] IS - WHEN 0 => KB_CT[].d = GND; - WHEN 1,2,3,4,5,6,7 => KB_CT[].d = KB_CT[] - 1; - END CASE; - - KB_D[].clk = DFF(!KBD_CC,CLK42,,); - KB_D[].d = (KBD_DD,KB_D[10..1]); - - KB_OFF.ena = !KB_EXT; - KB_OFF.clk = DFF((KB_CT[] == 0),CLK42,,); - KB_OFF.d = KB_D[] == B"XX11110000X"; - - KB_EXT.clk = DFF((KB_CT[] == 1),CLK42,,); - KB_EXT.d = KB_D[] == B"XX11100000X"; - - KB_CTRL.clk = !KB_CT2; - KB_ALT.clk = !KB_CT2; - KB_SH.clk = !KB_CT2; - - KB_CTRL_X = LCELL(KB_D[] == B"XXXXX1X100X"); - KB_ALT_X = LCELL(KB_D[] == B"XXXXX1X001X"); - KB_SH_X = LCELL(KB_D[] == B"XX0X01X0XXX") & - CASCADE((KB_D[] == B"XXX1XX1X01X") or (KB_D[] == B"XXX0XX0X10X")); - KB_XXX = LCELL(KB_D[] == B"XX000X0XXXX"); - - CASE KB_OFF IS - WHEN 0 => - KB_CTRL.d = (KB_CTRL_X & KB_XXX) or KB_CTRL; - KB_ALT.d = (KB_ALT_X & KB_XXX) or KB_ALT; - KB_SH.d = (KB_SH_X) or KB_SH; - WHEN 1 => - KB_CTRL.d = !(KB_CTRL_X & KB_XXX) & KB_CTRL; - KB_ALT.d = !(KB_ALT_X & KB_XXX) & KB_ALT; - KB_SH.d = !(KB_SH_X) & KB_SH; - END CASE; - - KB_F12 = DFF(!((KB_XXX & LCELL(KB_D[] == B"XXXXX0X111X")) & !KB_OFF), - !KB_CT2,,!(KB_CT[] == 1)); - - KB_RESET.clk = !KB_CT2; - KB_RESET.d = !(KB_ALT_X & (KB_D[] == B"XX011X0XXXX") & !KB_OFF & KB_CTRL & KB_ALT); - KB_RESET.prn = !DFF((KB_CT[] == 1),CLK42,,); - - K_CLK = DFF(/RF,CLK42,,); - - RXA[].ena = VCC; - RXA[].clk = K_CLK; - - CASE DFF((!(KB_CT[] == B"01X") & (RXA[] == 0)),CLK42,,) IS - WHEN B"1" => RXA[] = GND; - WHEN B"0" => RXA[] = (RXA0,!RXA1); - END CASE; - - CASE (DFF((/IO & (RXA[] == 0),CLK42,,)),LCELL(KDD7 & KDD6)) IS - WHEN B"0X" => KA[15..8] = (B"101",KDCA[],B"11"); - WHEN B"10" => KA[15..8] = (B"110000",KDD7,KDD6); - WHEN B"11" => KA[15..8] = KB_D[8..1]; - END CASE; - - KB_MA[].clk = CLK42; - KB_MA[].d = KB_MA[] + 1; - KB_MA[].clrn = !DFF(/IO,CLK42,,); - - KB_MXA = DFF(( (((KB_MA[] == 7) & A15) or ((KB_MA[] == 6) & A14)) - or (((KB_MA[] == 5) & A13) or ((KB_MA[] == 4) & A12)) - or (((KB_MA[] == 3) & A11) or ((KB_MA[] == 2) & A10)) - or (((KB_MA[] == 1) & A9 ) or ((KB_MA[] == 0) & A8 ))),CLK42,,); - - IF !DFF(/IO,CLK42,,) THEN - KDCA[] = KB_MA[]; - ELSE - KDCA[] = KDD[5..3]; - END IF; - - KDD[].clk = RXA0; - KDD[].d = KD[]; - KDD[7..6].prn = !KB_CT2; - - KDXX[].clk = RXA0; - KDXX[].d = !((KD[2..0] == 5),(KD[2..0] == 4), - (KD[2..0] == 3),(KD[2..0] == 2), - (KD[2..0] == 1),(KD[2..0] == 0)); - - KDX[].clk = RXA1; - - CASE KB_OFF IS - WHEN B"0" => KDX[].d = (KD[5..0] & KDXX[]); - WHEN B"1" => KDX[].d = (KD[5..0] or !KDXX[]); - END CASE; - --- ============================== - - WR_KBD = K_CLK or !DFF((KB_CT[] == 2),CLK42,,) or !(RXA[] == 3); - - KD[] = lpm_ram_dq((B"11",KDX[5..0]),KA[15..8],!WR_KBD,CLK42,) - WITH (lpm_width=8,lpm_widthad=8,lpm_file="KBD_INI2.MIF", - lpm_outdata="UNREGISTERED"); - - KBD[].clk = CLK42; - KBD[].prn = DFF(VCC,KB_MA2,(!/IO & ENA),); - --- KBD[].prn = DFF(!/IOM,CLK42,,); - KBD[].d = KBD[] & (KD[5..0] or KB_MXA); - - KBO[] = (VCC,VCC,KBD[]); - -END; - diff --git a/src/altera/quartus/acex/KBD_INI2.MIF b/src/altera/quartus/acex/KBD_INI2.MIF deleted file mode 100644 index 43e7390..0000000 --- a/src/altera/quartus/acex/KBD_INI2.MIF +++ /dev/null @@ -1,167 +0,0 @@ -DEPTH = 256; % Memory depth and width are required % -WIDTH = 8; % Enter a decimal number % - -ADDRESS_RADIX = HEX; % Address and value radixes are optional % -DATA_RADIX = BIN; % Enter BIN, DEC, HEX, or OCT; unless % - % otherwise specified, radixes = HEX % - --- Specify values for addresses, which can be single address or range - -CONTENT - BEGIN -[0..FF] : 11111111; -0 : - 11111111 % .. % - 00100001 % F9 % - 11111111 % .. % - 00011100 % F5 % - 00011010 % F3 % - 00011000 % F1 % - 00011001 % F2 % - 11111111 % F12 % - 11111111 % .. % - 00100000 % F10 % - - 00100010 % F8 % - 00100100 % F6 % - 00011011 % F4 % - 01011000 % Tab % - 10001000 % ~` % - 11111111 % .. % - 11111111 % .. % - 01111001 % Alt % - 11000000 % Left Shift % - 11111111 % .. % - - 11111001 % Ctrl % - 11010000 % 'Q' % - 11011000 % '1' % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11000001 % 'Z' % - 11001001 % 'S' % - 11001000 % 'A' % - 11010001 % 'W' % - - 11011001 % '2' % - 01110000 % left WIN % - 11111111 % .. % - 11000011 % 'C' % - 11000010 % 'X' % - 11001010 % 'D' % - 11010010 % 'E' % - 11011011 % '4' % - 11011010 % '3' % - 10110000 % Right WIN % - - 11111111 % .. % - 11111000 % ' ' % - 11000100 % 'V' % - 11001011 % 'F' % - 11010100 % 'T' % - 11010011 % 'R' % - 11011100 % '5' % - 10111000 % Right Mouse % - 11111111 % .. % - 11111011 % 'N' % - - 11111100 % 'B' % - 11110100 % 'H' % - 11001100 % 'G' % - 11101100 % 'Y' % - 11100100 % '6' % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11111010 % 'M' % - 11110011 % 'J' % - - 11101011 % 'U' % - 11100011 % '7' % - 11100010 % '8' % - 11111111 % .. % - 11111111 % .. % - 10111011 % ',' % - 11110010 % 'K' % - 11101010 % 'I' % - 11101001 % 'O' % - 11100000 % '0' % - - 11100001 % '9' % - 11111111 % .. % - 11111111 % .. % - 10111010 % '.' % - 10000100 % '/' % - 11110001 % 'L' % - 10101001 % ';' % - 11101000 % 'P' % - 10110011 % '-' % - 11111111 % .. % - - 11111111 % .. % - 11111111 % .. % - 10101000 % "'" % - 11111111 % .. % - 10101100 % '[' % - 10110001 % '=' % - 11111111 % .. % - 11111111 % .. % - 01011001 % Caps Lock % - 11000000 % Right SHIFT % - - 11110000 % ENTER % - 10101011 % ']' % - 11111111 % .. % - 10001010 % '\' % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - - 11111111 % .. % - 11111111 % .. % - 01100000 % Back % - 11111111 % .. % - 11111111 % .. % - 10010010 % End % - 11111111 % .. % - 01011100 % <- % - 10010000 % Home % - 11111111 % .. % - - 11111111 % .. % - 11111111 % .. % - 10010001 % ins % - 01100001 % DEL % - 01100100 % Dn % - 10101010 % grey 5 ; ctrl + I % - 01100010 % -> % - 01100011 % Up % - 01111000 % ESC % - 00111111 % Num % - - 11111111 % F11 % - 10110010 % G+ % - 01011011 % PDn ; caps + 4 % - 10110011 % G- % - 10111100 % G* % - 01011010 % PUp ; caps + 3 % - 00000000 % Scrol Lock % - 11111111 % .. % - 11111111 % .. % - 11111111 % .. % - - 11111111 % .. % - 00100011 % F7 % ; -% !! DATA FOR CAPS !! % -C0 : - 11111101 % Function shift % - 11000000 % Left Shift % - 11111001 % Ctrl % - 11111111 ; % no shift % -END ; - - diff --git a/src/altera/quartus/acex/MOUSE.ACF b/src/altera/quartus/acex/MOUSE.ACF deleted file mode 100644 index ba8c48d..0000000 --- a/src/altera/quartus/acex/MOUSE.ACF +++ /dev/null @@ -1,571 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP mouse -BEGIN - DEVICE = EP1K30QC208-3; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - AUTO_DEVICE = EP1K10FC256-1; - AUTO_DEVICE = EP1K10QC208-1; - AUTO_DEVICE = EP1K10TC144-1; - AUTO_DEVICE = EP1K10TC100-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 200MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MULTIVOLT_IO = OFF; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - DEVICE_FAMILY = ACEX1K; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - FITTER_SETTINGS = NORMAL; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL93; - VHDL_READER_VERSION = VHDL93; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 10.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; - ANALYSIS_MODE = DELAY_MATRIX; -END; - -OTHER_CONFIGURATION -BEGIN - EXPLICIT_FAMILY = 1; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - LAST_MAXPLUS2_VERSION = 10.0; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 10.0; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/quartus/acex/MOUSE.INC b/src/altera/quartus/acex/MOUSE.INC deleted file mode 100644 index 580ab4b..0000000 --- a/src/altera/quartus/acex/MOUSE.INC +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Sat Jun 16 17:49:35 2001 - -FUNCTION mouse (mouse_d, clk) - RETURNS (out_x[9..0], out_y[9..0], out_k[1..0], int); diff --git a/src/altera/quartus/acex/MOUSE.MIF b/src/altera/quartus/acex/MOUSE.MIF deleted file mode 100644 index c6f96ef..0000000 --- a/src/altera/quartus/acex/MOUSE.MIF +++ /dev/null @@ -1,65 +0,0 @@ -DEPTH = 256; % Memory depth and width are required % -WIDTH = 16; % Enter a decimal number % - -ADDRESS_RADIX = HEX; % Address and value radixes are optional % -DATA_RADIX = HEX; % Enter BIN, DEC, HEX, or OCT; unless % - % otherwise specified, radixes = HEX % - --- Specify values for addresses, which can be single address or range - -CONTENT -BEGIN - - [0..FF] : 0; - -% - 11 - 1211 - 122211 - 12222211 - 1222222211 - 122222222211 - 1222222211 - 12222221 - 12222221 - 121112221 - 11 12221 - 1 1221 - 111 - - - -% - - 00 : 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - 10 : 1 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0; - 20 : 1 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0; - 30 : 1 2 2 2 2 2 1 1 0 0 0 0 0 0 0 0; - 40 : 1 2 2 2 2 2 2 2 1 1 0 0 0 0 0 0; - 50 : 1 2 2 2 2 2 2 2 2 2 1 1 0 0 0 0; - 60 : 1 2 2 2 2 2 2 2 1 1 0 0 0 0 0 0; - E0 : 1 2 2 2 2 2 2 1 0 0 0 0 0 0 0 0; - 70 : 1 2 2 2 2 2 2 1 0 0 0 0 0 0 0 0; - 80 : 1 2 1 1 1 2 2 2 1 0 0 0 0 0 0 0; - 90 : 1 1 0 0 0 1 2 2 2 1 0 0 0 0 0 0; - A0 : 1 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0; - B0 : 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0; - C0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - D0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - E0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - F0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; - -% - - 1110 0000 0000 0 00 0000 0000 0000 0000 - 1000 0000 0000 0100 0000 0100 0000 0000 - 1000 1100 1010 0000 1100 1110 0100 1010 - 1110 1010 1100 0100 1010 0100 1010 1100 - 0010 1010 1000 0100 1010 0100 1110 1000 - 0010 1100 1000 0100 1010 0100 1000 1000 - 1110 1000 1000 0100 1010 0010 0110 1000 - 0000 1000 0000 0000 0000 0000 0000 0000 - -% - -END; diff --git a/src/altera/quartus/acex/MOUSE.TDF b/src/altera/quartus/acex/MOUSE.TDF deleted file mode 100644 index bb5770d..0000000 --- a/src/altera/quartus/acex/MOUSE.TDF +++ /dev/null @@ -1,76 +0,0 @@ - - TITLE "Sp-Mouse"; - -INCLUDE "lpm_add_sub"; - -SUBDESIGN mouse - ( - MOUSE_D : INPUT; - CLK : INPUT; - OUT_X[9..0] : OUTPUT; - OUT_Y[9..0] : OUTPUT; - OUT_K[1..0] : OUTPUT; - INT : OUTPUT; - ) -VARIABLE - - SUM_X[9..0] : DFFE; - SUM_Y[9..0] : DFFE; - - CT[3..0] : DFF; - RG[9..0] : DFFE; - STATE[1..0] : DFFE; - RGK[5..0] : DFFE; - - MOUSE_IMP : NODE; - - DDX[7..0] : NODE; - DDY[7..0] : NODE; - -BEGIN - - CT[].clk = CLK; - - MOUSE_IMP = MOUSE_D xor !DFF(MOUSE_D,CLK,,); - - CT[].clrn = MOUSE_IMP; - - IF CT[] == 12 THEN - CT[] = GND; - ELSE - CT[] = CT[]+1; - END IF; - - RG[].clk = CLK; - RG[].ena = (CT[] == 4) or !RG0; - RG[].d = ((MOUSE_D,RG[9..1]) or !RG0); - RG[].prn = VCC; - - STATE[].ena = !RG0; - STATE[].clk = CLK; - - STATE[].d = (STATE0,RG7); - - RGK[].clk = CLK; - RGK[].ena = (RG7 & !RG0); - RGK[].d = RG[6..1]; - - DDX[] = (RGK[1..0],RG[6..1]); - DDY[] = (RGK[3..2],RG[6..1]); - - SUM_X[].ena = LCELL(!RG7 & (STATE[] == 1) & !RG0); - SUM_Y[].ena = LCELL(!RG7 & (STATE[] == 2) & !RG0); - - SUM_X[].clk = CLK; - SUM_Y[].clk = CLK; - - SUM_X[] = SUM_X[] + (DDX7,DDX7,DDX[]); - SUM_Y[] = SUM_Y[] + (DDY7,DDY7,DDY[]); - - OUT_X[] = SUM_X[]; - OUT_Y[] = SUM_Y[]; - OUT_K[] = RGK[5..4]; - - INT = DFF(((STATE[] == 2) & !RG0),CLK,,); - -END; diff --git a/src/altera/quartus/acex/SP2_ACEX.ACF b/src/altera/quartus/acex/SP2_ACEX.ACF deleted file mode 100644 index 063fc3a..0000000 --- a/src/altera/quartus/acex/SP2_ACEX.ACF +++ /dev/null @@ -1,1366 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP SP2_ACEX -BEGIN - DEVICE = EP1K30QC208-3; - |CASXE1 : LOCATION = LC8_B36; - |CASXE0 : LOCATION = LC7_B36; - |CASX_3 : LOCATION = LC6_B36; - |CASX_2 : LOCATION = LC2_B36; - |CASX_1 : LOCATION = LC5_B36; - |CASX_0 : LOCATION = LC1_B36; - "|video2:SVIDEO|V_WRM" : LOCATION = LC8_F18; - "|video2:SVIDEO|V_WEM2" : LOCATION = LC2_F20; - "|video2:SVIDEO|V_WE_R" : LOCATION = LC5_F11; - "|video2:SVIDEO|V_WEMMO" : LOCATION = LC3_F15; - "|video2:SVIDEO|V_WEM" : LOCATION = LC2_F18; - "|video2:SVIDEO|V_WRM2" : LOCATION = LC8_F20; - "|video2:SVIDEO|V_WEMMM" : LOCATION = LC3_F12; - "|video2:SVIDEO|V_WEMMN" : LOCATION = LC2_F12; - "|video2:SVIDEO|V_WE" : LOCATION = LC6_F12; - "|video2:SVIDEO|V_CSX2" : LOCATION = LC5_F4; - "|video2:SVIDEO|V_CSX1" : LOCATION = LC5_F5; - "|video2:SVIDEO|V_CSX0" : LOCATION = LC5_F3; - "|dcp:DECODE|WR_AWGX" : LOCATION = LC2_A15; - "|video2:SVIDEO|V_WEMM" : LOCATION = LC4_F17; - "|video2:SVIDEO|V_WEY2" : LOCATION = LC2_F19; - "|video2:SVIDEO|V_WEY3" : LOCATION = LC2_F14; - "|video2:SVIDEO|V_WEY1" : LOCATION = LC2_F16; - "|video2:SVIDEO|V_WEY0" : LOCATION = LC2_F17; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_0" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_1" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_2" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_3" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_4" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_5" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_6" : LOCATION = EAB_D; - "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_7" : LOCATION = EAB_D; - |V_WRX3 : LOCATION = LC1_F14; - |V_WRX1 : LOCATION = LC1_F16; - |V_WRX0 : LOCATION = LC1_F17; - "|video2:SVIDEO|V_WR_1" : LOCATION = LC8_F16; - "|video2:SVIDEO|V_WR_0" : LOCATION = LC8_F17; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_0" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_1" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_2" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_3" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_4" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_5" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_6" : LOCATION = EAB_E; - "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_7" : LOCATION = EAB_E; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_0" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_1" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_2" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_3" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_4" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_5" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_6" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_7" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_8" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_9" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_10" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_11" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_12" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_13" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_14" : LOCATION = EAB_C; - "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_15" : LOCATION = EAB_C; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_0" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_1" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_2" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_3" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_4" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_5" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_6" : LOCATION = EAB_B; - "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_7" : LOCATION = EAB_B; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_5" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_6" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_7" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_8" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_9" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_10" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_11" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_12" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_13" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_14" : LOCATION = EAB_A; - "|lpm_ram_dp:CBL|altdpram:sram|segment0_15" : LOCATION = EAB_A; - |V_WRX2 : LOCATION = LC1_F19; - "|video2:SVIDEO|V_WR_2" : LOCATION = LC8_F19; - "|video2:SVIDEO|V_WR_3" : LOCATION = LC8_F14; - "|dcp:DECODE|:285" : LOCATION = LC2_A32; - |RASX_0 : LOCATION = LC2_A35; - |RASX_1 : LOCATION = LC2_A34; - |XA3 : BIDIR_PIN = 17; - |XA1 : BIDIR_PIN = 9; - |XA2 : BIDIR_PIN = 200; - |XA0 : BIDIR_PIN = 180; - |VD30 : BIDIR_PIN = 114; - |VD31 : BIDIR_PIN = 136; - |VD32 : BIDIR_PIN = 144; - |VD33 : BIDIR_PIN = 148; - |VD34 : BIDIR_PIN = 149; - |VD35 : BIDIR_PIN = 143; - |VD36 : BIDIR_PIN = 139; - |VD37 : BIDIR_PIN = 128; - |VD20 : BIDIR_PIN = 150; - |VD21 : BIDIR_PIN = 115; - |VD22 : BIDIR_PIN = 135; - |VD23 : BIDIR_PIN = 140; - |VD24 : BIDIR_PIN = 141; - |VD25 : BIDIR_PIN = 147; - |VD26 : BIDIR_PIN = 142; - |VD27 : BIDIR_PIN = 131; - |VD10 : BIDIR_PIN = 104; - |VD11 : BIDIR_PIN = 111; - |VD12 : BIDIR_PIN = 120; - |VD13 : BIDIR_PIN = 127; - |VD14 : BIDIR_PIN = 132; - |VD15 : BIDIR_PIN = 134; - |VD16 : BIDIR_PIN = 133; - |VD17 : BIDIR_PIN = 122; - |VD00 : BIDIR_PIN = 103; - |VD01 : BIDIR_PIN = 113; - |VD02 : BIDIR_PIN = 116; - |VD03 : BIDIR_PIN = 121; - |VD04 : BIDIR_PIN = 126; - |VD05 : BIDIR_PIN = 125; - |VD06 : BIDIR_PIN = 119; - |VD07 : BIDIR_PIN = 112; - |/RESET : BIDIR_PIN = 19; - |MD15 : BIDIR_PIN = 179; - |MD14 : BIDIR_PIN = 187; - |MD12 : BIDIR_PIN = 192; - |MD11 : BIDIR_PIN = 198; - |MD10 : BIDIR_PIN = 204; - |MD9 : BIDIR_PIN = 208; - |MD8 : BIDIR_PIN = 8; - |MD7 : BIDIR_PIN = 161; - |MD6 : BIDIR_PIN = 162; - |MD5 : BIDIR_PIN = 163; - |MD4 : BIDIR_PIN = 164; - |MD3 : BIDIR_PIN = 186; - |MD2 : BIDIR_PIN = 190; - |MD1 : BIDIR_PIN = 193; - |MD0 : BIDIR_PIN = 196; - |D7 : BIDIR_PIN = 61; - |D6 : BIDIR_PIN = 60; - |D5 : BIDIR_PIN = 58; - |D4 : BIDIR_PIN = 57; - |D3 : BIDIR_PIN = 56; - |D2 : BIDIR_PIN = 55; - |D1 : BIDIR_PIN = 54; - |D0 : BIDIR_PIN = 53; - |XACS : OUTPUT_PIN = 169; - |WR_DWG : OUTPUT_PIN = 11; - |WR_COL : OUTPUT_PIN = 157; - |WR_AWG : OUTPUT_PIN = 176; - |/WE : OUTPUT_PIN = 16; - |V_WR3 : OUTPUT_PIN = 88; - |V_WR2 : OUTPUT_PIN = 75; - |V_WR1 : OUTPUT_PIN = 85; - |V_WR0 : OUTPUT_PIN = 83; - |V_CS0 : OUTPUT_PIN = 101; - |V_CS1 : OUTPUT_PIN = 70; - |VA15 : OUTPUT_PIN = 71; - |VA14 : OUTPUT_PIN = 73; - |VA13 : OUTPUT_PIN = 87; - |VA12 : OUTPUT_PIN = 74; - |VA11 : OUTPUT_PIN = 95; - |VA10 : OUTPUT_PIN = 99; - |VA9 : OUTPUT_PIN = 93; - |VA4 : OUTPUT_PIN = 94; - |VA5 : OUTPUT_PIN = 92; - |VA8 : OUTPUT_PIN = 90; - |VA7 : OUTPUT_PIN = 86; - |VA6 : OUTPUT_PIN = 89; - |VA3 : OUTPUT_PIN = 96; - |VA2 : OUTPUT_PIN = 97; - |VA1 : OUTPUT_PIN = 100; - |VA0 : OUTPUT_PIN = 102; - |SXA : OUTPUT_PIN = 7; - |RDXA : OUTPUT_PIN = 173; - |RD_KMPS : OUTPUT_PIN = 10; - |RA17 : OUTPUT_PIN = 67; - |RA16 : OUTPUT_PIN = 68; - |RA15 : OUTPUT_PIN = 69; - |RA14 : OUTPUT_PIN = 65; - |RAS_1 : OUTPUT_PIN = 205; - |RAS_0 : OUTPUT_PIN = 207; - |MA14 : OUTPUT_PIN = 191; - |MA13 : OUTPUT_PIN = 195; - |MA12 : OUTPUT_PIN = 206; - |MA11 : OUTPUT_PIN = 199; - |MA10 : OUTPUT_PIN = 177; - |MA9 : OUTPUT_PIN = 203; - |MA8 : OUTPUT_PIN = 202; - |MA7 : OUTPUT_PIN = 197; - |MA6 : OUTPUT_PIN = 175; - |MA5 : OUTPUT_PIN = 174; - |MA4 : OUTPUT_PIN = 172; - |MA3 : OUTPUT_PIN = 170; - |MA2 : OUTPUT_PIN = 168; - |MA1 : OUTPUT_PIN = 167; - |MA0 : OUTPUT_PIN = 166; - |DAC_WS : OUTPUT_PIN = 159; - |DAC_DATA : OUTPUT_PIN = 158; - |DAC_BCK : OUTPUT_PIN = 160; - |CS_CASH : OUTPUT_PIN = 64; - |CS_ROM : OUTPUT_PIN = 63; - |CLKZ1 : OUTPUT_PIN = 62; - |CAS_3 : OUTPUT_PIN = 15; - |CAS_2 : OUTPUT_PIN = 13; - |CAS_1 : OUTPUT_PIN = 14; - |CAS_0 : OUTPUT_PIN = 12; - |/WAIT : BIDIR_PIN = 18; - |/RF : INPUT_PIN = 25; - |/M1 : INPUT_PIN = 24; - |/WR : INPUT_PIN = 79; - |TG42 : INPUT_PIN = 183; - |/RD : INPUT_PIN = 80; - |/IO : INPUT_PIN = 78; - |/MR : INPUT_PIN = 184; - |/HALT : INPUT_PIN = 182; - |A15 : INPUT_PIN = 47; - |A14 : INPUT_PIN = 46; - |A13 : INPUT_PIN = 45; - |A12 : INPUT_PIN = 44; - |A11 : INPUT_PIN = 41; - |A10 : INPUT_PIN = 40; - |A9 : INPUT_PIN = 39; - |A8 : INPUT_PIN = 38; - |A7 : INPUT_PIN = 37; - |A6 : INPUT_PIN = 36; - |A5 : INPUT_PIN = 31; - |A4 : INPUT_PIN = 30; - |A3 : INPUT_PIN = 29; - |A2 : INPUT_PIN = 28; - |A1 : INPUT_PIN = 27; - |A0 : INPUT_PIN = 26; - |MD13 : BIDIR_PIN = 189; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EP1K100FC484-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30TC144-1; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30QC208-3; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -LOGIC_OPTIONS -BEGIN - |/wait : SLOW_SLEW_RATE = ON; - |wr_dwg : SLOW_SLEW_RATE = ON; - |wr_dwg : INCREASE_INPUT_DELAY = ON; - |wr_dwg : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |RDXA : FAST_IO = ON; - |SXA : FAST_IO = ON; - |VD00 : INCREASE_INPUT_DELAY = ON; - |VD01 : INCREASE_INPUT_DELAY = ON; - |VD02 : INCREASE_INPUT_DELAY = ON; - |VD03 : INCREASE_INPUT_DELAY = ON; - |VD04 : INCREASE_INPUT_DELAY = ON; - |VD05 : INCREASE_INPUT_DELAY = ON; - |VD06 : INCREASE_INPUT_DELAY = ON; - |VD07 : INCREASE_INPUT_DELAY = ON; - |VD10 : INCREASE_INPUT_DELAY = ON; - |VD11 : INCREASE_INPUT_DELAY = ON; - |VD12 : INCREASE_INPUT_DELAY = ON; - |VD13 : INCREASE_INPUT_DELAY = ON; - |VD14 : INCREASE_INPUT_DELAY = ON; - |VD15 : INCREASE_INPUT_DELAY = ON; - |VD16 : INCREASE_INPUT_DELAY = ON; - |VD17 : INCREASE_INPUT_DELAY = ON; - |VD20 : INCREASE_INPUT_DELAY = ON; - |VD21 : INCREASE_INPUT_DELAY = ON; - |VD22 : INCREASE_INPUT_DELAY = ON; - |VD23 : INCREASE_INPUT_DELAY = ON; - |VD24 : INCREASE_INPUT_DELAY = ON; - |VD25 : INCREASE_INPUT_DELAY = ON; - |VD26 : INCREASE_INPUT_DELAY = ON; - |VD27 : INCREASE_INPUT_DELAY = ON; - |VD30 : INCREASE_INPUT_DELAY = ON; - |VD31 : INCREASE_INPUT_DELAY = ON; - |VD32 : INCREASE_INPUT_DELAY = ON; - |VD33 : INCREASE_INPUT_DELAY = ON; - |VD34 : INCREASE_INPUT_DELAY = ON; - |VD35 : INCREASE_INPUT_DELAY = ON; - |VD36 : INCREASE_INPUT_DELAY = ON; - |VD37 : INCREASE_INPUT_DELAY = ON; - |RAS_0 : INCREASE_INPUT_DELAY = ON; - |RAS_1 : INCREASE_INPUT_DELAY = ON; - |CAS_0 : INCREASE_INPUT_DELAY = ON; - |CAS_0 : SLOW_SLEW_RATE = ON; - |CAS_1 : INCREASE_INPUT_DELAY = ON; - |CAS_1 : SLOW_SLEW_RATE = ON; - |CAS_2 : INCREASE_INPUT_DELAY = ON; - |CAS_2 : SLOW_SLEW_RATE = ON; - |CAS_3 : INCREASE_INPUT_DELAY = ON; - |CAS_3 : SLOW_SLEW_RATE = ON; - |RAS_0 : SLOW_SLEW_RATE = ON; - |RAS_1 : SLOW_SLEW_RATE = ON; - |XACS : INCREASE_INPUT_DELAY = ON; - |/wr : INCREASE_INPUT_DELAY = ON; - |/WE : INCREASE_INPUT_DELAY = ON; - |/wait : INCREASE_INPUT_DELAY = ON; - |VA0 : INCREASE_INPUT_DELAY = ON; - |VA1 : INCREASE_INPUT_DELAY = ON; - |VA2 : INCREASE_INPUT_DELAY = ON; - |VA3 : INCREASE_INPUT_DELAY = ON; - |VA4 : INCREASE_INPUT_DELAY = ON; - |VA5 : INCREASE_INPUT_DELAY = ON; - |VA6 : INCREASE_INPUT_DELAY = ON; - |VA7 : INCREASE_INPUT_DELAY = ON; - |VA8 : INCREASE_INPUT_DELAY = ON; - |VA9 : INCREASE_INPUT_DELAY = ON; - |VA10 : INCREASE_INPUT_DELAY = ON; - |VA11 : INCREASE_INPUT_DELAY = ON; - |VA12 : INCREASE_INPUT_DELAY = ON; - |VA13 : INCREASE_INPUT_DELAY = ON; - |VA14 : INCREASE_INPUT_DELAY = ON; - |VA15 : INCREASE_INPUT_DELAY = ON; - |/rf : INCREASE_INPUT_DELAY = ON; - |/reset : INCREASE_INPUT_DELAY = ON; - |/rd : INCREASE_INPUT_DELAY = ON; - |ra14 : INCREASE_INPUT_DELAY = ON; - |ra14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ra15 : INCREASE_INPUT_DELAY = ON; - |ra15 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ra16 : INCREASE_INPUT_DELAY = ON; - |ra16 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ra17 : INCREASE_INPUT_DELAY = ON; - |ra17 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/mr : INCREASE_INPUT_DELAY = ON; - |/m1 : INCREASE_INPUT_DELAY = ON; - |ma12 : INCREASE_INPUT_DELAY = ON; - |ma13 : INCREASE_INPUT_DELAY = ON; - |ma14 : INCREASE_INPUT_DELAY = ON; - |ma0 : INCREASE_INPUT_DELAY = ON; - |ma1 : INCREASE_INPUT_DELAY = ON; - |ma2 : INCREASE_INPUT_DELAY = ON; - |ma3 : INCREASE_INPUT_DELAY = ON; - |ma4 : INCREASE_INPUT_DELAY = ON; - |ma5 : INCREASE_INPUT_DELAY = ON; - |ma6 : INCREASE_INPUT_DELAY = ON; - |ma7 : INCREASE_INPUT_DELAY = ON; - |ma8 : INCREASE_INPUT_DELAY = ON; - |ma9 : INCREASE_INPUT_DELAY = ON; - |ma10 : INCREASE_INPUT_DELAY = ON; - |ma11 : INCREASE_INPUT_DELAY = ON; - |/io : INCREASE_INPUT_DELAY = ON; - |/HALT : INCREASE_INPUT_DELAY = ON; - |d0 : INCREASE_INPUT_DELAY = ON; - |d1 : INCREASE_INPUT_DELAY = ON; - |d2 : INCREASE_INPUT_DELAY = ON; - |d3 : INCREASE_INPUT_DELAY = ON; - |d4 : INCREASE_INPUT_DELAY = ON; - |d5 : INCREASE_INPUT_DELAY = ON; - |d6 : INCREASE_INPUT_DELAY = ON; - |d7 : INCREASE_INPUT_DELAY = ON; - |CS_CASH : PCI_IO = OFF; - |CS_CASH : INCREASE_INPUT_DELAY = ON; - |CS_CASH : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |cs_rom : PCI_IO = OFF; - |cs_rom : INCREASE_INPUT_DELAY = ON; - |cs_rom : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |a0 : INCREASE_INPUT_DELAY = ON; - |a1 : INCREASE_INPUT_DELAY = ON; - |a2 : INCREASE_INPUT_DELAY = ON; - |a3 : INCREASE_INPUT_DELAY = ON; - |a4 : INCREASE_INPUT_DELAY = ON; - |a5 : INCREASE_INPUT_DELAY = ON; - |a6 : INCREASE_INPUT_DELAY = ON; - |a7 : INCREASE_INPUT_DELAY = ON; - |A8 : INCREASE_INPUT_DELAY = ON; - |a9 : INCREASE_INPUT_DELAY = ON; - |A10 : INCREASE_INPUT_DELAY = ON; - |a11 : INCREASE_INPUT_DELAY = ON; - |A12 : INCREASE_INPUT_DELAY = ON; - |A13 : INCREASE_INPUT_DELAY = ON; - |A14 : INCREASE_INPUT_DELAY = ON; - |A15 : INCREASE_INPUT_DELAY = ON; - |md0 : INCREASE_INPUT_DELAY = ON; - |md1 : INCREASE_INPUT_DELAY = ON; - |md2 : INCREASE_INPUT_DELAY = ON; - |md3 : INCREASE_INPUT_DELAY = ON; - |md4 : INCREASE_INPUT_DELAY = ON; - |md5 : INCREASE_INPUT_DELAY = ON; - |md6 : INCREASE_INPUT_DELAY = ON; - |md7 : INCREASE_INPUT_DELAY = ON; - |md8 : INCREASE_INPUT_DELAY = ON; - |md9 : INCREASE_INPUT_DELAY = ON; - |md10 : INCREASE_INPUT_DELAY = ON; - |md11 : INCREASE_INPUT_DELAY = ON; - |md12 : INCREASE_INPUT_DELAY = ON; - |md13 : INCREASE_INPUT_DELAY = ON; - |md14 : INCREASE_INPUT_DELAY = ON; - |md15 : INCREASE_INPUT_DELAY = ON; - |wr_awg : SLOW_SLEW_RATE = OFF; - |XA0 : INCREASE_INPUT_DELAY = ON; - |XA1 : INCREASE_INPUT_DELAY = ON; - |XA2 : INCREASE_INPUT_DELAY = ON; - |XA3 : INCREASE_INPUT_DELAY = ON; - |ma0 : SLOW_SLEW_RATE = ON; - |ma1 : SLOW_SLEW_RATE = ON; - |ma2 : SLOW_SLEW_RATE = ON; - |ma3 : SLOW_SLEW_RATE = ON; - |ma4 : SLOW_SLEW_RATE = ON; - |ma5 : SLOW_SLEW_RATE = ON; - |ma6 : SLOW_SLEW_RATE = ON; - |ma7 : SLOW_SLEW_RATE = ON; - |ma8 : SLOW_SLEW_RATE = ON; - |ma9 : SLOW_SLEW_RATE = ON; - |ma10 : SLOW_SLEW_RATE = ON; - |ma11 : SLOW_SLEW_RATE = ON; - |VD00 : SLOW_SLEW_RATE = OFF; - |VD01 : SLOW_SLEW_RATE = OFF; - |VD02 : SLOW_SLEW_RATE = OFF; - |VD03 : SLOW_SLEW_RATE = OFF; - |VD04 : SLOW_SLEW_RATE = OFF; - |VD05 : SLOW_SLEW_RATE = OFF; - |VD06 : SLOW_SLEW_RATE = OFF; - |VD07 : SLOW_SLEW_RATE = OFF; - |VD10 : SLOW_SLEW_RATE = OFF; - |VD11 : SLOW_SLEW_RATE = OFF; - |VD12 : SLOW_SLEW_RATE = OFF; - |VD13 : SLOW_SLEW_RATE = OFF; - |VD14 : SLOW_SLEW_RATE = OFF; - |VD15 : SLOW_SLEW_RATE = OFF; - |VD16 : SLOW_SLEW_RATE = OFF; - |VD17 : SLOW_SLEW_RATE = OFF; - |VD20 : SLOW_SLEW_RATE = OFF; - |VD21 : SLOW_SLEW_RATE = OFF; - |VD22 : SLOW_SLEW_RATE = OFF; - |VD23 : SLOW_SLEW_RATE = OFF; - |VD24 : SLOW_SLEW_RATE = OFF; - |VD25 : SLOW_SLEW_RATE = OFF; - |VD26 : SLOW_SLEW_RATE = OFF; - |VD27 : SLOW_SLEW_RATE = OFF; - |VD30 : SLOW_SLEW_RATE = OFF; - |VD31 : SLOW_SLEW_RATE = OFF; - |VD32 : SLOW_SLEW_RATE = OFF; - |VD33 : SLOW_SLEW_RATE = OFF; - |VD34 : SLOW_SLEW_RATE = OFF; - |VD35 : SLOW_SLEW_RATE = OFF; - |VD36 : SLOW_SLEW_RATE = OFF; - |VD37 : SLOW_SLEW_RATE = OFF; - |VA0 : PCI_IO = OFF; - |VA1 : PCI_IO = OFF; - |VA2 : PCI_IO = OFF; - |VA3 : PCI_IO = OFF; - |VA4 : PCI_IO = OFF; - |VA6 : PCI_IO = OFF; - |VA5 : PCI_IO = OFF; - |VA7 : PCI_IO = OFF; - |VA8 : PCI_IO = OFF; - |VA9 : PCI_IO = OFF; - |VA10 : PCI_IO = OFF; - |VA11 : PCI_IO = OFF; - |VA12 : PCI_IO = OFF; - |VA13 : PCI_IO = OFF; - |VA14 : PCI_IO = OFF; - |VA15 : PCI_IO = OFF; - |VD00 : PCI_IO = OFF; - |VD01 : PCI_IO = OFF; - |VD02 : PCI_IO = OFF; - |VD03 : PCI_IO = OFF; - |VD04 : PCI_IO = OFF; - |VD05 : PCI_IO = OFF; - |VD06 : PCI_IO = OFF; - |VD07 : PCI_IO = OFF; - |VD10 : PCI_IO = OFF; - |VD11 : PCI_IO = OFF; - |VD12 : PCI_IO = OFF; - |VD13 : PCI_IO = OFF; - |VD14 : PCI_IO = OFF; - |VD15 : PCI_IO = OFF; - |VD16 : PCI_IO = OFF; - |VD17 : PCI_IO = OFF; - |VD20 : PCI_IO = OFF; - |VD21 : PCI_IO = OFF; - |VD22 : PCI_IO = OFF; - |VD23 : PCI_IO = OFF; - |VD24 : PCI_IO = OFF; - |VD25 : PCI_IO = OFF; - |VD26 : PCI_IO = OFF; - |VD27 : PCI_IO = OFF; - |VD30 : PCI_IO = OFF; - |VD31 : PCI_IO = OFF; - |VD32 : PCI_IO = OFF; - |VD33 : PCI_IO = OFF; - |VD34 : PCI_IO = OFF; - |VD35 : PCI_IO = OFF; - |VD36 : PCI_IO = OFF; - |VD37 : PCI_IO = OFF; - |WR_COL : SLOW_SLEW_RATE = ON; - |VA0 : SLOW_SLEW_RATE = ON; - |VA1 : SLOW_SLEW_RATE = ON; - |VA2 : SLOW_SLEW_RATE = ON; - |VA3 : SLOW_SLEW_RATE = ON; - |VA4 : SLOW_SLEW_RATE = ON; - |VA5 : SLOW_SLEW_RATE = ON; - |VA6 : SLOW_SLEW_RATE = ON; - |VA7 : SLOW_SLEW_RATE = ON; - |VA8 : SLOW_SLEW_RATE = ON; - |VA9 : SLOW_SLEW_RATE = ON; - |VA10 : SLOW_SLEW_RATE = ON; - |VA11 : SLOW_SLEW_RATE = ON; - |VA12 : SLOW_SLEW_RATE = ON; - |VA13 : SLOW_SLEW_RATE = ON; - |VA14 : SLOW_SLEW_RATE = ON; - |VA15 : SLOW_SLEW_RATE = ON; - |V_WR0 : SLOW_SLEW_RATE = OFF; - |V_WR1 : SLOW_SLEW_RATE = OFF; - |V_WR2 : SLOW_SLEW_RATE = OFF; - |V_WR3 : SLOW_SLEW_RATE = OFF; - |XA0 : SLOW_SLEW_RATE = ON; - |XA1 : SLOW_SLEW_RATE = ON; - |XA2 : SLOW_SLEW_RATE = ON; - |XA3 : SLOW_SLEW_RATE = ON; - |XACS : SLOW_SLEW_RATE = ON; - |/wait : PCI_IO = OFF; - |SXA : SLOW_SLEW_RATE = ON; - |/rf : PCI_IO = OFF; - |/reset : PCI_IO = OFF; - |RDXA : SLOW_SLEW_RATE = ON; - |/rd : PCI_IO = OFF; - |/m1 : PCI_IO = OFF; - |/mr : PCI_IO = OFF; - |/io : PCI_IO = OFF; - |/HALT : PCI_IO = OFF; - |/WE : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/WE : SLOW_SLEW_RATE = ON; - |RAS_0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |RAS_1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CAS_0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CAS_1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CAS_2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CAS_3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma0 : PCI_IO = OFF; - |ma1 : FAST_IO = ON; - |ma2 : FAST_IO = ON; - |ma3 : FAST_IO = ON; - |ma4 : FAST_IO = ON; - |ma5 : FAST_IO = ON; - |ma6 : FAST_IO = ON; - |ma7 : FAST_IO = ON; - |ma8 : FAST_IO = ON; - |ma9 : FAST_IO = ON; - |ma10 : FAST_IO = ON; - |ma11 : FAST_IO = ON; - |ma1 : PCI_IO = OFF; - |ma2 : PCI_IO = OFF; - |ma3 : PCI_IO = OFF; - |ma4 : PCI_IO = OFF; - |ma5 : PCI_IO = OFF; - |ma6 : PCI_IO = OFF; - |ma7 : PCI_IO = OFF; - |ma8 : PCI_IO = OFF; - |ma9 : PCI_IO = OFF; - |ma10 : PCI_IO = OFF; - |ma11 : PCI_IO = OFF; - |ma12 : PCI_IO = OFF; - |ma12 : SLOW_SLEW_RATE = ON; - |ma13 : PCI_IO = OFF; - |ma13 : SLOW_SLEW_RATE = ON; - |ma14 : PCI_IO = OFF; - |ma14 : SLOW_SLEW_RATE = ON; - |SXA : PCI_IO = OFF; - |RDXA : PCI_IO = OFF; - |RDXA : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/mr : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/m1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |/rd : SLOW_SLEW_RATE = ON; - |wr_awg : PCI_IO = OFF; - |wr_awg : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ra14 : PCI_IO = OFF; - |ra14 : SLOW_SLEW_RATE = ON; - |ra15 : PCI_IO = OFF; - |ra15 : SLOW_SLEW_RATE = ON; - |ra16 : PCI_IO = OFF; - |ra16 : SLOW_SLEW_RATE = ON; - |ra17 : PCI_IO = OFF; - |ra17 : SLOW_SLEW_RATE = ON; - |CS_CASH : SLOW_SLEW_RATE = ON; - |cs_rom : SLOW_SLEW_RATE = ON; - |/WE : PCI_IO = OFF; - |RAS_0 : PCI_IO = OFF; - |RAS_1 : PCI_IO = OFF; - |CAS_0 : PCI_IO = OFF; - |CAS_1 : PCI_IO = OFF; - |CAS_2 : PCI_IO = OFF; - |CAS_3 : PCI_IO = OFF; - |V_WR0 : PCI_IO = OFF; - |V_WR1 : PCI_IO = OFF; - |V_WR2 : PCI_IO = OFF; - |V_WR3 : PCI_IO = OFF; - |v_cs0 : PCI_IO = OFF; - |v_cs1 : PCI_IO = OFF; - |XACS : PCI_IO = OFF; - |/wr : PCI_IO = OFF; - |XA0 : PCI_IO = OFF; - |XA1 : PCI_IO = OFF; - |XA2 : PCI_IO = OFF; - |XA3 : PCI_IO = OFF; - |TG42 : PCI_IO = OFF; - |d0 : PCI_IO = OFF; - |d1 : PCI_IO = OFF; - |d2 : PCI_IO = OFF; - |d3 : PCI_IO = OFF; - |d4 : PCI_IO = OFF; - |d5 : PCI_IO = OFF; - |d6 : PCI_IO = OFF; - |d7 : PCI_IO = OFF; - |md0 : PCI_IO = OFF; - |md1 : PCI_IO = OFF; - |md2 : PCI_IO = OFF; - |md3 : PCI_IO = OFF; - |md4 : PCI_IO = OFF; - |md5 : PCI_IO = OFF; - |md6 : PCI_IO = OFF; - |md7 : PCI_IO = OFF; - |md8 : PCI_IO = OFF; - |md9 : PCI_IO = OFF; - |md10 : PCI_IO = OFF; - |md11 : PCI_IO = OFF; - |md12 : PCI_IO = OFF; - |md13 : PCI_IO = OFF; - |md14 : PCI_IO = OFF; - |md15 : PCI_IO = OFF; - |a0 : PCI_IO = OFF; - |a1 : PCI_IO = OFF; - |a2 : PCI_IO = OFF; - |a3 : PCI_IO = OFF; - |a4 : PCI_IO = OFF; - |a5 : PCI_IO = OFF; - |a6 : PCI_IO = OFF; - |A8 : PCI_IO = OFF; - |a7 : PCI_IO = OFF; - |A10 : PCI_IO = OFF; - |a9 : PCI_IO = OFF; - |a11 : PCI_IO = OFF; - |A12 : PCI_IO = OFF; - |A13 : PCI_IO = OFF; - |A14 : PCI_IO = OFF; - |A15 : PCI_IO = OFF; - |/reset : SLOW_SLEW_RATE = ON; - |/rf : SLOW_SLEW_RATE = ON; - |a0 : SLOW_SLEW_RATE = ON; - |a1 : SLOW_SLEW_RATE = ON; - |a2 : SLOW_SLEW_RATE = ON; - |a3 : SLOW_SLEW_RATE = ON; - |a4 : SLOW_SLEW_RATE = ON; - |a5 : SLOW_SLEW_RATE = ON; - |a6 : SLOW_SLEW_RATE = ON; - |a7 : SLOW_SLEW_RATE = ON; - |a8 : SLOW_SLEW_RATE = ON; - |a9 : SLOW_SLEW_RATE = ON; - |a10 : SLOW_SLEW_RATE = ON; - |a11 : SLOW_SLEW_RATE = ON; - |A12 : SLOW_SLEW_RATE = ON; - |A13 : SLOW_SLEW_RATE = ON; - |A14 : SLOW_SLEW_RATE = ON; - |A15 : SLOW_SLEW_RATE = ON; - |/mr : SLOW_SLEW_RATE = ON; - |/m1 : SLOW_SLEW_RATE = ON; - |/HALT : SLOW_SLEW_RATE = ON; - |/io : SLOW_SLEW_RATE = ON; - |d0 : SLOW_SLEW_RATE = ON; - |d1 : SLOW_SLEW_RATE = ON; - |d2 : SLOW_SLEW_RATE = ON; - |d3 : SLOW_SLEW_RATE = ON; - |d4 : SLOW_SLEW_RATE = ON; - |d5 : SLOW_SLEW_RATE = ON; - |d6 : SLOW_SLEW_RATE = ON; - |d7 : SLOW_SLEW_RATE = ON; - |DAC_BCK : SLOW_SLEW_RATE = ON; - |DAC_DATA : SLOW_SLEW_RATE = ON; - |DAC_WS : SLOW_SLEW_RATE = ON; - |WR_COL : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |WR_COL : FAST_IO = ON; - |v_cs0 : SLOW_SLEW_RATE = ON; - |v_cs1 : SLOW_SLEW_RATE = ON; - |ma0 : FAST_IO = ON; - |ma0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma4 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma5 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma6 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma7 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma8 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma9 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma10 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma11 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma12 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma13 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |ma14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md0 : SLOW_SLEW_RATE = ON; - |md1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md1 : SLOW_SLEW_RATE = ON; - |md2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md2 : SLOW_SLEW_RATE = ON; - |md3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md3 : SLOW_SLEW_RATE = ON; - |md4 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md4 : SLOW_SLEW_RATE = ON; - |md5 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md5 : SLOW_SLEW_RATE = ON; - |md6 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md6 : SLOW_SLEW_RATE = ON; - |md7 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md7 : SLOW_SLEW_RATE = ON; - |md8 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md8 : SLOW_SLEW_RATE = ON; - |md9 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md9 : SLOW_SLEW_RATE = ON; - |md10 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md10 : SLOW_SLEW_RATE = ON; - |md11 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md11 : SLOW_SLEW_RATE = ON; - |md12 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md12 : SLOW_SLEW_RATE = ON; - |md13 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md13 : SLOW_SLEW_RATE = ON; - |md14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md14 : SLOW_SLEW_RATE = ON; - |md15 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |md15 : SLOW_SLEW_RATE = ON; - "|video2:SVIDEO|SVA12" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA11" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA10" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA0" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA1" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA2" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA3" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA4" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - "|video2:SVIDEO|SVA5" : IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL = ON; - |v_cs0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |v_cs1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD00 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD01 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD02 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD03 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD04 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD05 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD06 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD07 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD10 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD11 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD12 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD13 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD15 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD16 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD17 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD20 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD21 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD22 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD23 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD24 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD25 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD26 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD27 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD30 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD31 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD32 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD33 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD34 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD35 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD36 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VD37 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |CLKZ1 : SLOW_SLEW_RATE = OFF; - "|video2:SVIDEO|D_PIC00" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC01" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC02" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC03" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC04" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC05" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC06" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - "|video2:SVIDEO|D_PIC07" : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA0 : FAST_IO = ON; - |VA1 : FAST_IO = ON; - |VA2 : FAST_IO = ON; - |VA3 : FAST_IO = ON; - |VA4 : FAST_IO = ON; - |VA5 : FAST_IO = ON; - |VA6 : FAST_IO = ON; - |VA7 : FAST_IO = ON; - |VA8 : FAST_IO = ON; - |VA9 : FAST_IO = ON; - |VA10 : FAST_IO = ON; - |VA11 : FAST_IO = ON; - |VA12 : FAST_IO = ON; - |VA13 : FAST_IO = ON; - |VA14 : FAST_IO = ON; - |VA15 : FAST_IO = ON; - |V_WR0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |V_WR1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |V_WR2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |V_WR3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA0 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA1 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA2 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA3 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA4 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA5 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA6 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA7 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA8 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA9 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA10 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA11 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA12 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA13 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA14 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; - |VA15 : INSERT_ADDITIONAL_LOGIC_CELL = OFF; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MULTIVOLT_IO = ON; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - RELEASE_CLEARS = ON; - AUTO_RESTART = ON; - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - USER_CLOCK = OFF; - SECURITY_BIT = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = FAST; - OPTIMIZE_FOR_SPEED = 5; - DEVICE_FAMILY = ACEX1K; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_CLOCK = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - SMART_RECOMPILE = OFF; - FITTER_SETTINGS = CUSTOM; - USE_QUARTUS_FITTER = OFF; - DESIGN_DOCTOR_RULES = CUSTOM; - RPT_FILE_LCELL_INTERCONNECT = OFF; - RPT_FILE_HIERARCHY = OFF; - DESIGN_DOCTOR = OFF; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - EXPANDER_NETWORKS = OFF; - ASYNCHRONOUS_INPUTS = OFF; - PRESET_CLEAR_NETWORKS = OFF; - MULTI_CLOCK_NETWORKS = OFF; - MASTER_RESET = OFF; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 12.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - CARRY_OUT_PINS_LCELL_INSERT = ON; - ROW_PINS_LCELL_INSERT = ON; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - CARRY_CHAIN = AUTO; - CASCADE_CHAIN = AUTO; - SLOW_SLEW_RATE = ON; - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = ON; - TURBO_BIT = ON; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - USE_LPM_FOR_AHDL_OPERATORS = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - IGNORE_SOFT_BUFFERS = ON; - REGISTER_OPTIMIZATION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SLOW_SLEW_RATE = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - NOT_GATE_PUSH_BACK = ON; - SOFT_BUFFER_INSERTION = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - MINIMIZATION = FULL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = AUTO; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/quartus/acex/SP2_ACEX.TDF b/src/altera/quartus/acex/SP2_ACEX.TDF deleted file mode 100644 index dfa3d6e..0000000 --- a/src/altera/quartus/acex/SP2_ACEX.TDF +++ /dev/null @@ -1,1227 +0,0 @@ - - TITLE "Main"; - -PARAMETERS - ( - UPDATE = 1, -- 1 for UPDATE sheet - MODE = "SPRINTER", -- or MODE = "SPECTRUM" - NMI_ON = "OFF", -- "ON" - for use NMI - SCREEN_OFF = "NOT_USE" -- "USE" - for use screen on/off - ); - -INCLUDE "lpm_ram_dp"; -INCLUDE "kbd"; ---INCLUDE "video"; -INCLUDE "video2"; - -INCLUDE "dcp"; ---INCLUDE "dcp2"; - -INCLUDE "acceler"; -INCLUDE "ay"; -INCLUDE "mouse"; - -SUBDESIGN SP2_ACEX - ( - TG42 : INPUT; - CLKZ1 : OUTPUT; - - /WAIT : BIDIR; - /RESET : BIDIR; - /M1 : INPUT; - /RF : INPUT; - /IO : INPUT; - /WR : INPUT; - /RD : INPUT; - /HALT : INPUT; - /MR : INPUT; - A[15..0] : INPUT; - D[7..0] : BIDIR; - - CS_ROM : OUTPUT; - CS_CASH : OUTPUT; - RA[17..14] : OUTPUT; - - V_CS[1..0] : OUTPUT; - VA[15..0] : OUTPUT; - V_WR[3..0] : OUTPUT; - VD3[7..0] : BIDIR; - VD2[7..0] : BIDIR; - VD1[7..0] : BIDIR; - VD0[7..0] : BIDIR; - - WR_COL : OUTPUT; - - DAC_DATA : OUTPUT; - DAC_WS : OUTPUT; - DAC_BCK : OUTPUT; - - MD[15..0] : BIDIR; - MA[14..0] : OUTPUT; - RAS_[1..0] : OUTPUT; - CAS_[3..0] : OUTPUT; - /WE : OUTPUT; - - XACS : OUTPUT; -- ROM_WE - XA[3..0] : BIDIR; - SXA : OUTPUT; - - RDXA : OUTPUT; - WR_AWG : OUTPUT; - RD_KMPS : OUTPUT; - WR_DWG : OUTPUT; - - - - ) -VARIABLE - - MS : MOUSE; - KEYS : KBD; - SVIDEO : VIDEO2 WITH (MODE=MODE); - - DECODE : DCP WITH (UPDATE=UPDATE); --- DECODE : DCP2; - - ACC : ACCELER; - AY3 : AY; - - CBL : lpm_ram_dp WITH (lpm_width=16,lpm_widthad=8); - - CT[5..0] : NODE; - CTH[5..0] : NODE; - CTV[8..0] : NODE; - CTF[6..0] : NODE; - - CLK42 : NODE; - - DD[7..0] : NODE; - D_OUT : NODE; - RD_RAM : NODE; - - MCA[1..0] : NODE; - - DVD3[7..0] : NODE; - DVD2[7..0] : NODE; - DVD1[7..0] : NODE; - DVD0[7..0] : NODE; - - DMD[15..0] : NODE; - DMDX[7..0] : NODE; - - COPY_SINC_H : NODE; - COPY_SINC_V : NODE; - - START_UP : NODE; - - BLANK : NODE; - --- WGA[1..0] : NODE; -- to MA[1..0] / WR_AWG^ --- FDD_C[2..0] : NODE; -- to MA[4..2] / WR_AWG^ --- HDD_C[3..0] : NODE; -- to MA[8..5] / WR_AWG^ --- HD_A[2..0] : NODE; -- to MA[11..9] / WR_AWG^ - NMI_X : NODE; -- to MA12 / WR_AWG^ - INT_X : NODE; -- to MA13 / WR_AWG^ - TURBO : NODE; -- to MA14 / WR_AWG^ - KBD_CX : NODE; -- to XA0 / WR_AWG^ - KBD_DX : NODE; -- to XA1 / WR_AWG^ - TAPE_OUT : NODE; -- to XA2 / WR_AWG^ - - KBD_CC : NODE; -- from XA0 / SXA=0 / RD_XA=0 - KBD_DD : NODE; -- from XA1 / SXA=0 / RD_XA=0 - TAPE_IN : NODE; -- from XA2 / SXA=0 / RD_XA=0 - MOUSE_D : NODE; -- from XA3 / SXA=0 / RD_XA=0 - - FDD_CH : NODE; -- from XA0 / SXA=1 / RD_XA=0 - FDD_W : NODE; -- from XA1 / SXA=1 / RD_XA=0 - SINC_1 : NODE; -- from XA2 / SXA=1 / RD_XA=0 - SINC_2 : NODE; -- from XA3 / SXA=1 / RD_XA=0 - SINC_1M : NODE; - SINC_2M : NODE; - - WR_TM9 : NODE; - --- ==================== - TEST_SWITCH : NODE; - - T_SIGNAL : NODE; --- TEST_1 : LCELL; --- KTA[7..0] : LCELL; --- KTD[7..0] : DFF; --- KTT : LCELL; - - K_DATA[10..0] : NODE; - KEY_D[10..0] : DFF; - KEY_WRITE : NODE; - KD[7..0] : DFF; - K_XOR : NODE; - NEXT_K : NODE; - - RED[7..0] : NODE; - GREEN[7..0] : NODE; - BLUE[7..0] : NODE; - - BORDER[7..0] : DFFE; - KBD_BLK : NODE; - - DOS : NODE; - DOS_ : NODE; - - MDR[7..0] : NODE; - DCPP[7..0] : NODE; - - MDP[7..0] : DFFE; --- MDP[7..0] : LCELL; - - PDD[7..0] : LCELL; - WR_PORT : NODE; - - RGMOD[7..0] : DFFE; - - HDDR[7..0] : DFFE; - - GLISSER : NODE; - BLK_MR : NODE; - VIDEO_PG : NODE; - - AUDIO_CH : NODE; - - CBL_MODE : NODE; - CBL_STEREO : NODE; - CBL_MODE16 : NODE; - CBL_INT_ENA : NODE; - CBL_INT : NODE; - CBL_WR : NODE; - CBL_XX[7..0] : DFFE; - CBL_CNT[7..0] : DFF; - CBL_CTX[4..0] : DFFE; - CBL_WA[7..0] : DFFE; - CBL_WAE : NODE; - CBL_IND : NODE; - - CBL_TAB[4..0] : LCELL; - - CBL_R[15..0] : DFFE; - CBD[7..0] : DFFE; - - AUDIO_R[15..0] : DFFE; - - - /WAIT_ALL : NODE; - - BLK_MEM : NODE; - - SYS_ENA : NODE; - SYS_ENA2 : NODE; - - /SYS : NODE; - SYS_PG : NODE; - - CS_ISA : NODE; - - ISA_CASH : NODE; - ISA_A[3..0] : NODE; - - PRE_ISA : NODE; - PRE_ROM : NODE; - PRE_CASH : NODE; - - WAIT_ORIG : NODE; - WAIT_ROM : NODE; - WAIT_ROMX : NODE; - WT_R[2..0] : DFF; - --- BLK_WAIT : NODE; - - ISA_A20 : NODE; - CASH_ON : NODE; - BLK_MWR2 : NODE; - - ROM_RG[7..0]: DFFE; - ROM_WRITE_MODE : NODE; - - AY_CHS[15..0] : DFFE; - - SOFT_RESET : NODE; - SOFT_RES[1..0] : DFF; - - AY_FULL[10..0] : DFF; - - ALL_MODE[7..0] : DFFE; - - DOUBLE_CAS : NODE; - - XACS : DFF; - - KEMPS[7..0] : LCELL; - - KEY/KEMS[7..0] : LCELL; - AY/PORTS[7..0] : LCELL; - - V_WRXX[3..0]: LCELL; - V_WRX[3..0] : LCELL; --- V_WRX[3..0] : NODE; - - KEY_IO : NODE; - - /IOWR : NODE; - /IORD : NODE; - - RASX_[1..0] : NODE; - CASX_[3..0] : NODE; - CASXE[1..0] : NODE; - CAS_A : NODE; - --- ISA_CELL[1..0] : LCELL; - - T_RDXA : NODE; - - /WE_OUT : NODE; - - SINC_HOLD[8..0] : DFF; - - HOLD[7..0] : DFFE; - - CS_ROMT : NODE; - CS_CASHT : NODE; - - ISA_PORT[7..0] : DFFE; - -BEGIN - - CLK42 = TG42; - --- /RESET = TRI(GND,!DFF((KEYS.kb_reset & START_UP & SOFT_RESET),CLK42,,)); - -- start_up from SOFT_RESET - /RESET = TRI(GND,!DFF((KEYS.kb_reset & SOFT_RESET),CLK42,,)); - --- SOFT_RES[].prn = DFF((!DECODE.BLK_R or /WR or !(DECODE.PAGE[7..0] == H"A0")),CLK42,,); - - SOFT_RES[].clk = !CT4; - CASE SOFT_RES[] IS - WHEN 0,1 => SOFT_RES[] = GND; - WHEN 2 => SOFT_RES[] = 1; - WHEN 3 => SOFT_RES[] = 2; - END CASE; - SOFT_RESET = (SOFT_RES[] == 0); -- when no_Z - RESET! - --- ===== Spectrum-Ports =================== - - /IOWR = DFF((/WR or /IO),CLK42,,!/IO); - /IORD = DFF((/RD or /IO),CLK42,,!/IO); - - BORDER[].clk = /IOWR; - BORDER[].ena = DFF((DCPP[] == B"1100X010"),CLK42,,); -- C2/C8 - BORDER[].d = D[]; - --- ===== keyboard ========================= - --- ======================================== --- NEW 30.06.2022 --- KEYS.int_ena = ALL_MODE0; -- int in all keys --- KEYS.ena = !ALL_MODE0; -- ZX-Keyboard --- new bit3 in ALL_MODE, disables keyboard interruptions w/o accellerator affected - KEYS.int_ena = LCELL(ALL_MODE0 & ALL_MODE3); - KEYS.ena = VCC; -- ZX-Keyboard always enabled --- ======================================== - - KEYS.clk42 = CLK42; - KEYS.clk_k = DFF(CTH5,CLK42,,); - KEYS.kbd_cc = KBD_CC or !KBD_BLK; - KEYS.kbd_dd = KBD_DD; - - KD[].clk = CLK42; - NEXT_K = TFF(VCC,KEY_WRITE,,); - - CASE (NEXT_K) IS - WHEN 0 => KD[] = H"ED"; - WHEN 1 => KD[] = (B"00000",CTF[6..4]); - END CASE; - - K_XOR = !(KD7 xor KD6 xor KD5 xor KD4 xor KD3 xor KD2 xor KD1 xor KD0); - K_DATA[] = (VCC,K_XOR,KD[],GND); - - KEY_D[].clk = KBD_CC; - KEY_D[].d = (GND,KEY_D[10..1]); - - FOR i in 0 to 10 GENERATE - KEY_D[i].prn = K_DATA[i] or KEY_WRITE; - END GENERATE; - KEY_D[].clrn = /RESET; - - KEY_WRITE = DFF((!DFF(CTF1,CLK42,,) or CTF1),CLK42,,); - --- KBD_DX = KEY_D0; --- KBD_BLK = DFF(VCC,CTV7,KEY_WRITE,); - - KBD_BLK = VCC; - KBD_DX = GND; - --- ======================================== --- == Data Paths ========================== --- ======================================== - - MDP[].clk = DECODE./IOMM; - - CASE (DECODE.TYPE[0],(DECODE.HDD_FLIP & DECODE.HDD_DATA)) IS - WHEN B"00" => MDP[] = MD[7..0]; - WHEN B"01" => MDP[] = HDDR[7..0]; - WHEN B"1X" => MDP[] = MD[15..8]; - END CASE; - --- HDDR[].clk = DECODE./IOM; - - HDDR[].clk = LCELL(/WR & (/RD or DECODE./IOMM)); - HDDR[].ena = (DECODE.HDD_DATA & !DECODE./IOM); - - CASE DFF(/WR,DECODE.RAS,,) IS - WHEN 0 => HDDR[].d = D[]; - WHEN 1 => HDDR[].d = MD[15..8]; - END CASE; -% - CASE (DECODE.MC_END & DECODE.HDD_FLIP) IS - WHEN 0 => DMDX[] = (ACC.MDO[7..0]); - WHEN 1 => DMDX[] = (HDDR[]); - END CASE; -% - DMDX[] = (ACC.MDO[7..0]); - - ACC.HDDR[] = HDDR[]; - ACC.HDD_FLIP = DECODE.HDD_FLIP; - - CASE DECODE.TYPE0 IS - WHEN 0 => - KEY/KEMS[] = (LCELL((KEYS.kbo5 & !CBL_MODE) or (CBL_IND & CBL_MODE)),TAPE_IN,LCELL(CBL_MODE & CTV8),KEYS.kbo[4..0]); - AY/PORTS[] = DECODE.DO[]; - WHEN 1 => - KEY/KEMS[] = KEMPS[]; - AY/PORTS[] = AY3.DO[]; - END CASE; - - CASE DECODE.TYPE[2..1] IS - WHEN B"11" => PDD[] = MDP[]; - WHEN B"10" => PDD[] = KEY/KEMS[]; - WHEN B"01" => PDD[] = AY/PORTS[]; - WHEN B"00" => PDD[] = VCC; - END CASE; - - CASE /IO IS - WHEN 1 => DD[] = ACC.DO[]; - WHEN 0 => DD[] = PDD[]; - END CASE; - --- D_OUT = !(/IO or /RD or LCELL((DCPP[7..4] == 0) or (DCPP[7..4] == 3))) or RD_RAM; - D_OUT = !(/IORD or LCELL((DCPP[7..4] == 0) or (DCPP[7..4] == 3))) or RD_RAM; - - V_WRXX[] = !SVIDEO.V_WEN[]; - - V_WRX3 = !SVIDEO.V_WEN3; - V_WRX2 = !SVIDEO.V_WEN2; - V_WRX1 = !SVIDEO.V_WEN1; - V_WRX0 = !SVIDEO.V_WEN0; - - FOR i IN 0 TO 7 GENERATE - D[i] = TRI(DD[i],D_OUT); - VD3[i] = TRI(DVD3[i],V_WRX3); - VD2[i] = TRI(DVD2[i],V_WRX2); - VD1[i] = TRI(DVD1[i],V_WRX1); - VD0[i] = TRI(DVD0[i],V_WRX0); - MD[i] = TRI(DMDX[i],!/WE_OUT or WR_PORT); - MD[i+8] = TRI(ACC.MDO[i+8],!/WE_OUT or WR_PORT); --- MD[i+8] = TRI(DMDY[i],!/WE or WR_PORT); - END GENERATE; - --- ======================================== --- ======================================== --- ======================================== --- ======================================== -% -IF MODE == "SPECTRUM" GENERATE - - TEST_SWITCH = TFF((!KEYS.kb_sh & !KEYS.kb_ctrl),KEYS.kb_F12,,); - - CASE TEST_SWITCH IS - WHEN 0 => - KEYS./rf = /RF; - KEYS./io = /IO; - KEYS.a[15..8] = A[15..8]; - KEYS./iom = /IO; - - WHEN 1 => - - KEYS./rf = DFF((CT4 or CT5),CT2,,); - KEYS./io = DFF((CT4 or !CT5),CT2,,); - KEYS.a[15..8] = !KTA[]; - KEYS./iom = DFF((CT4 or !CT5),CT2,,); - - END CASE; - - CASE TEST_SWITCH IS - WHEN 0 => - RED[] = (SVIDEO.zx_color1 & (VCC,SVIDEO.zx_color3,B"000000")); - GREEN[] = (SVIDEO.zx_color2 & (VCC,SVIDEO.zx_color3,B"000000")); - BLUE[] = (SVIDEO.zx_color0 & (VCC,SVIDEO.zx_color3,B"000000")); - WHEN 1 => - RED[] = (CTH[4..0],CT[5..3]) & CTV[4] & BLANK & T_SIGNAL or TEST_1; - GREEN[] = (CTH[4..0],CT[5..3]) & CTV[5] & BLANK & T_SIGNAL or TEST_1; - BLUE[] = (CTH[4..0],CT[5..3]) & CTV[6] & BLANK & T_SIGNAL or TEST_1; - END CASE; - - DVD0[] = SVIDEO.vdo0[]; - DVD3[] = RED[]; - DVD2[] = GREEN[]; - DVD1[] = BLUE[]; - - V_WR0 = SVIDEO.v_wr0; - V_WR[3..1] = WR_COL; - - DECODE.TURBO_HAND = VCC; - --- ===== TEST CODES ============================================ - - KTD[].clk = DFF((CT4 or !CT5),CT2,,); - KTD[] = KEYS.kbo[]; - - KTA0 = (CTV[5..3] == 0); - KTA1 = (CTV[5..3] == 1); - KTA2 = (CTV[5..3] == 2); - KTA3 = (CTV[5..3] == 3); - KTA4 = (CTV[5..3] == 4); - KTA5 = (CTV[5..3] == 5); - KTA6 = (CTV[5..3] == 6); - KTA7 = (CTV[5..3] == 7); - - CASE CTH[2..0] IS - WHEN 0 => KTT = KTD0; - WHEN 1 => KTT = KTD1; - WHEN 2 => KTT = KTD2; - WHEN 3 => KTT = KTD3; - WHEN 4 => KTT = KTD4; - WHEN 5 => KTT = KTD5; - WHEN 6 => KTT = KTD6; - WHEN 7 => KTT = KTD7; - END CASE; - - T_SIGNAL = DFF(((!CTH5 or TAPE_IN) & (CTH5 or MOUSE_D) & KBD_CC),CLK42,,); - - CASE (CTH[5..3],CTV[8..6]) IS - WHEN B"1XXXXX" => TEST_1 = GND; - WHEN B"XXX100" => TEST_1 = GND; - WHEN B"XXXX11" => TEST_1 = GND; - WHEN B"000000" => TEST_1 = TFF(VCC,KEYS.kb_ctrl,,); - WHEN B"001000" => TEST_1 = GND; - WHEN B"010000" => TEST_1 = GND; - WHEN B"011000" => TEST_1 = KTT; - WHEN B"000001" => TEST_1 = TFF(VCC,KEYS.kb_alt,,); - WHEN B"001001" => TEST_1 = GND; - WHEN B"010001" => TEST_1 = GND; - WHEN B"011001" => TEST_1 = GND; - WHEN B"000010" => TEST_1 = TFF(VCC,KEYS.kb_sh,,); - WHEN B"001010" => TEST_1 = GND; - WHEN B"010010" => TEST_1 = GND; - WHEN B"011010" => TEST_1 = GND; - END CASE; - -ELSE GENERATE -% - TEST_SWITCH = TFF((!KEYS.kb_sh & !KEYS.kb_ctrl & !KEYS.kb_alt),KEYS.kb_F12,,/RESET); - - DECODE.TURBO_HAND = TEST_SWITCH; - - KEY_IO = DFFE((/IO or !/M1),CLK42,,,(CT1 & CT2)); - KEYS./rf = DFFE((CT2 or !KEY_IO),CLK42,,,CT0); - KEYS./iom = KEY_IO; - KEYS./io = KEY_IO; - KEYS./m1 = VCC; - - KEYS.a[15..8] = A[15..8]; - - DVD0[] = SVIDEO.vdo0[]; - DVD1[] = SVIDEO.vdo1[]; - DVD2[] = SVIDEO.vdo2[]; - DVD3[] = SVIDEO.vdo3[]; - - V_WR[3..0] = SVIDEO.V_WR[]; -% -END GENERATE; -% --- ===================================================== --- ===================================================== - - SYS_ENA = (!/SYS or ROM_RG4) or - (A[15..4] == B"001111111111") or - (A[15..4] == B"00000000000X"); - --- SYS_ENA2 = DFFE(SYS_ENA,/MR,,,/RF) & DFF((A[7..0] == B"0X111100"),CLK42,,); - SYS_ENA2 = DFF((A[7..0] == B"0X111100"),CLK42,,); - - ISA_PORT[].clk = /IOWR; - ISA_PORT[].d = D[]; - ISA_PORT[].ena = DECODE.BLK_R & DFF((DCPP[] == B"1111XXXX"),CLK42,,); - -IF (UPDATE == 1) GENERATE - - WAIT_ORIG = LCELL(/MR or CT5 or ALL_MODE2 or - LCELL((!(DECODE.V_RAM & (A14 & A15)) & !(A14 & !A15)) or TURBO)); - - - SOFT_RES[].prn = !DFF(DFF((LCELL(DECODE.BLK_R & A14 & A15) & - LCELL(DECODE.PAGE[7..4] == H"A")),CLK42,,),(/WR or /MR),/RESET,); - - -- /SYS=0 - system ROM on - /SYS = DFFE(!A6,/IOWR,/RESET,,SYS_ENA2); - - -- SYS_PG - system ROM0/ROM1 switch - SYS_PG = DFFE(D0,/IOWR,/RESET,!ROM_RG4,(SYS_ENA2 & !D1)); - - -- 0 - write A20 for ISA - ISA_A20 = (/IOWR or !DFF((DCPP[] == B"00011011"),CLK42,,)); -- 1B --- ISA_A20 = VCC; - - -- 1 - CASHE on IN A,(0FBh/07Bh) --- CASH_ON = DFFE(A7,/IORD,/RESET,,DFF((DCPP[] == H"88"),CLK42,,));-- 88 - CASH_ON = DFFE(A7,/IORD,/RESET,,DFF((A[7..0] == B"X1111011"),CLK42,,)); - - -- 0 - CS_ISA - - PRE_ISA = LCELL(!LCELL(ISA_PORT[] == B"1101XXXX") or !DECODE.BLK_R or !A14 or !A15); - PRE_ROM = LCELL(/SYS or A14 or A15 or CASH_ON); - PRE_CASH = LCELL(A14 or A15 or !CASH_ON); - --- BLK_WAIT = LCELL(LCELL(PRE_CASH or !PRE_ROM) or (/RD & /WR) or /MR); - - WAIT_ROMX = LCELL(CS_ROM & CS_ISA); - WAIT_ROM = (WAIT_ROMX or DFF((WT_R[] == 0),CLK42,!WAIT_ROMX,)); - WT_R[].clk = CLK42; - CASE (WAIT_ROMX,WT_R[]) IS - WHEN 0 => WT_R[] = 0; - WHEN B"0001" => WT_R[] = WT_R[] - 1; - WHEN B"001X" => WT_R[] = WT_R[] - 1; - WHEN B"01XX" => WT_R[] = WT_R[] - 1; - WHEN B"1XXX" => WT_R[] = 4; - END CASE; - - CS_ISA = DFF((!/RF or PRE_ISA),!/MR,,LCELL(CS_ISA or !/MR)); - CS_ROMT = DFF((!/RF or PRE_ROM or !PRE_CASH),!/MR,,LCELL(CS_ROMT or !/MR)); - CS_CASHT = DFF((!/RF or !PRE_ROM or PRE_CASH),!/MR,,LCELL(CS_CASHT or !/MR)); - - CS_ROM = CS_ROMT; - - CS_CASH = CS_CASHT & CS_ISA & ISA_A20; - --- CS_ROM = LCELL(LCELL(PRE_ROM or !PRE_CASH) or (/RD & /WR) or /MR); - --- CS_CASH = LCELL(LCELL(PRE_CASH or !PRE_ROM) or (/RD & /WR) or /MR) & --- CS_ISA & ISA_A20; - - CASE (PRE_ROM,PRE_CASH) IS - WHEN B"00" => ISA_A[] = B"1000"; -- error -> ISA - WHEN B"01" => ISA_A[] = ((ROM_RG3 xor !SYS_PG),ROM_RG[2..0]); -- ROM_ADRESS - WHEN B"10" => ISA_A[] = (B"01",ROM_RG[1..0]); -- CASHE_ADRESS - WHEN B"11" => ISA_A[] = (!PRE_ISA,GND,ISA_PORT[2..1]); -- for ISA_A20 - END CASE; - RA[] = ISA_A[3..0]; - - XACS.clk = !(/MR or /WR); - XACS.d = (!ROM_RG4 or A14 or A15); - XACS.prn = (XACS or (!/MR & ROM_RG4)); - --- XACS.clk = CLK42; --- XACS = (WAIT_ROM or /WR or A14 or A15); --- XACS.prn = !/MR & ROM_RG4; - - BLK_MEM = LCELL(!PRE_ROM or !PRE_CASH or !PRE_ISA); - - RD_RAM = !(/MR or /RD or BLK_MEM); - - BLK_MWR2 = DECODE.RAM or BLK_MEM; - - DECODE.BLK_MEM = BLK_MEM; - - ROM_RG[].clk = /IOWR; - ROM_RG[].d = D[]; - ROM_RG[].ena = DFF((DCPP[] == H"8F"),CLK42,,) or - (!/SYS & DFF((A[7..0] == B"01011100"),CLK42,,)); -- 5C - ROM_RG[].clrn = /RESET; - -ELSE GENERATE - - SOFT_RES[].prn = DFF((!DFF(DECODE.BLK_R,CLK42,,) or /WR or !(DECODE.PAGE[7..4] == H"A")),CLK42,,!/MR); - - WT_R[].clk = GND; - WT_R[] = 0; - - WAIT_ROM = VCC; - - DECODE.BLK_MEM = GND; - - BLK_MWR2 = DECODE.BLK_R; - - XACS.clk = CLK42; - CASE ROM_WRITE_MODE IS - WHEN 0 => - CS_ROM = ROM_RG[4] or !/RF or LCELL(DECODE.CS_ROM or /RD or (DECODE.BLK_R & !LCELL(DECODE.PAGE[7..4] == 14))); - XACS = VCC; - WHEN 1 => - CS_ROM = /MR or !/RF or DFF((/RD & /WR),CLK42,,); --- XACS = /MR or DFF((/WR or DECODE.MC_END),!CLK42,,); - XACS = /MR or DFF(/WR or !DFF(/WR,!CT2,,!/WR),!CT2,,!/WR); - END CASE; - --- CS_CASH = !DECODE.BLK_R or !(DECODE.PAGE[7..4] == 15); - --- CS for CASHE & ISA-Slots - - CS_CASH = (DFF(!(DECODE.PAGE[7..4] == B"11X1"),CLK42,,DECODE.BLK_R) & - --- CS for ISA_A20 signal - - LCELL(DECODE./IOM or /WR or !(DCPP[] == B"00011011")) -- 1B - - ); - --- Switcher for ISA/CASHE adress - - ISA_CASH = LCELL(DECODE.BLK_R & (DECODE.PAGE[7..4] == B"11X1")) or !/IOWR; - - CASE /IO IS - WHEN 0 => ISA_A[3..2] = B"00"; -- for Write to A20 port - ISA_A[1..0] = DECODE.PAGE[1..0]; -- ANY - - WHEN 1 => --- ISA_A[3..2] = B"10"; -- for ISA Slots - ISA_A[3..2] = (!DECODE.PAGE5,DECODE.PAGE5); - --- ISA_A[1..0] = DECODE.PAGE[1..0]; -- ISA select - ISA_A[1..0] = (DECODE.PAGE2,DECODE.PAGE1); -- ISA select - END CASE; - - RD_RAM = !(DECODE.CS_RAM or /RD or DECODE.BLK_R); - - CASE ROM_WRITE_MODE IS - WHEN 0 => - CASE (ISA_CASH,DECODE.RAM) IS - WHEN 0 => RA[] = (B"01",A[15..14]); -- for CASHE in RAM - WHEN 1 => RA[] = DECODE.RA[]; -- ROM Adresses - WHEN 2,3 => RA[] = ISA_A[3..0]; -- CASHE & ISA - END CASE; - WHEN 1 => - RA[] = ROM_RG[3..0]; - END CASE; - ROM_WRITE_MODE = DFF((ROM_RG[4] & !(A14 or A14)),CLK42,,); - - ROM_RG[].clk = /IOWR; - ROM_RG[].d = D[]; - ROM_RG[].ena = DFF((DCPP[] == H"8F"),CLK42,,); - ROM_RG[].clrn = /RESET; - -END GENERATE; - - --- ===================================================== --- ===================================================== - - RD_KMPS = DECODE./IOM or /RD or !(DECODE.TYPE[] == 7); - --- WR_PORT = !(/IO or DFF(!DECODE.MC_END,CLK42,,) or /WR) or !(DECODE.WR_DWG or /IO or /WR); - - WR_PORT = (!(/IO or /WR) & LCELL(DFF(DECODE.MC_TYPE,CLK42,,))); - --- WR_PORT = DFF((!(/IO or /WR) & DECODE.MC_TYPE),CLK42,,); - - WR_DWG = DECODE.WR_DWG; - --- (NMI_X,KBD_CX) = GND; - (KBD_CX) = GND; - - IF (NMI_ON == "ON") GENERATE - NMI_X = (!KEYS.kb_f12 & KEYS.kb_alt); - ELSE GENERATE - NMI_X = GND; - END GENERATE; - --- TFF(KEYS.kb_ctrl,KEYS.kb_f12,,); - --- INT_X = !DFF(GND,CTV8,,((/IO or /M1) & DFF(!INT_X,CTH3,,))); - --- INT_X = !DFF(GND,SVIDEO.INTT,,((/IO or /M1) & DFF(!INT_X,CTH3,,))); - --- INT_X = !DFF(GND,(SVIDEO.INTT & KEYS.int),,((/IO or /M1) & DFF(!INT_X,CTH3,,))); - INT_X = !DFF(GND,(SVIDEO.INTT & KEYS.int),,((/IO or /M1) & DFF(DFF(!INT_X,CTH2,,),CTH2,,))) - or !CBL_INT; - - TAPE_OUT = LCELL(BORDER3); - --- *************************************** - --- RDXA = LCELL(DECODE.RD_KP11); --- T_RDXA = DFF(GND,DECODE.RD_KP11,,DFF((T_RDXA),CLK42,,)); - --- WR_TM9 = !DFF(VCC,!CLK42,DECODE.WR_TM9,); --- WR_TM9 = LCELL(DFF(DECODE.RD_KP11,CLK42,,)); - --- RDXA = LCELL(CT2 or DFFE(!CT2,!CLK42,,,CT1)); - - RDXA = DFF(!((CT[2..0] == B"11X") or (CT[2..0] == 0)),CLK42,,); - --- T_RDXA = CT2; - T_RDXA = LCELL(RDXA); - --- WR_TM9 = DFF(CT2,!CLK42,,); - WR_TM9 = LCELL(CT2); - - --- SXA = TFF(VCC,T_RDXA,,); --- SXA = DFF((CT3 xor (CT2 & CT1)),CLK42,,); - SXA = DFF((CT3 xor CT2),CLK42,,); - --- WR_AWG = LCELL(LCELL(DECODE.WR_AWG)); --- WR_AWG = LCELL(DECODE.WR_AWG); - WR_AWG = DECODE.WR_AWG; - --- WR_AWG = DFF(DECODE.WR_AWG,CLK42,,); - --- SXA = DFF(DECODE.KP11_MIX,CLK42,,); - - XA0 = TRI(KBD_CX,WR_TM9); - XA1 = TRI(KBD_DX,WR_TM9); - XA2 = TRI(TAPE_OUT,WR_TM9); - XA3 = TRI(GND,GND); - - KBD_DD = DFFE(XA1,T_RDXA,,,!SXA); - KBD_CC = DFFE(XA0,T_RDXA,,,!SXA); - TAPE_IN = DFFE(XA2,T_RDXA,,,!SXA); - MOUSE_D = DFFE(XA3,T_RDXA,,,!SXA); - - FDD_CH = DFFE(XA1,T_RDXA,,,SXA); - FDD_W = DFFE(XA0,T_RDXA,,,SXA); - SINC_1 = DFFE(XA2,T_RDXA,DECODE./RES,,SXA); - SINC_2 = DFFE(XA3,T_RDXA,DECODE./RES,,SXA); - - SINC_HOLD[3..0].clk = CT4; - SINC_HOLD[8..4].clk = CTH5; - - SINC_1M = DFF(!(SINC_HOLD[3..0] == 15),CLK42,,); - - CASE !SINC_1 IS - WHEN 0 => SINC_HOLD[3..0] = HOLD[3..0]; - WHEN 1 => SINC_HOLD[3..0] = (SINC_HOLD[3..0] + 1) or !SINC_1M; - END CASE; - - SINC_2M = DFF(!(SINC_HOLD[8..4] == B"1111X"),CLK42,,); - --- CASE DFF((SINC_2 & DFF(SINC_2,CTV0,,)),CLK42,,) IS - - CASE SINC_2 IS - WHEN 1 => SINC_HOLD[8..4] = (HOLD[7..4],GND); - WHEN 0 => SINC_HOLD[8..4] = (SINC_HOLD[8..4] + 1) or !SINC_2M; - END CASE; - - COPY_SINC_H = DFF((!SINC_1M & DFF(SINC_1M,CLK42,,)),CLK42,,); - COPY_SINC_V = DFF((!SINC_2M & DFF(SINC_2M,CLK42,,)),CLK42,,); - --- COPY_SINC_H = DFF(DFF(!SINC_1 & DFF(SINC_1,!CLK42,,),!CLK42,,),CLK42,,); --- COPY_SINC_V = DFF(DFF(!SINC_2 & DFF(SINC_2,!CLK42,,),!CLK42,,),CLK42,,); - --- START_UP = DFFE(DFFE(DFFE(VCC,CLK42,,,COPY_SINC_H),CLK42,,,COPY_SINC_V),CLK42,,,COPY_SINC_V); - START_UP = DFFE(DFFE(DFFE(VCC,CLK42,,,COPY_SINC_H),CLK42,,,COPY_SINC_H),CLK42,,,COPY_SINC_H); - - HOLD[].clk = /IOWR; - HOLD[].ena = DFF((DCPP[] == B"11001011"),CLK42,,); -- CB - HOLD[].d = D[]; - - HOLD[2..0].prn = DECODE./RES; - HOLD[3].clrn = DECODE./RES; - HOLD[6..4].prn = DECODE./RES; - HOLD[7].clrn = DECODE./RES; - --- ===================================================== --- ===== DCP =========================================== --- ===================================================== - - DOS_ = (!((DECODE.PN4Q & A13 & A12) & (A[11..8] == B"1101")) & DOS) or (A14 or A15); - DOS = DFF(DOS_,!(/M1 or /MR),,/RESET); - DECODE.DOS = DOS; - - DECODE.REFRESH = CT4; - - DCPP[] = DECODE.DCPP[]; - - DECODE.CLK42 = CLK42; - DECODE./RESET = /RESET; - - DECODE.ACC_ON = ACC.ACC_ON; - - DECODE.CT[2..0] = CT[2..0]; - - RASX_[1..0] = (LCELL(DECODE.RAS),LCELL(DECODE.RAS)); - - RAS_[] = RASX_[]; - - MCA[] = DECODE.MCA[1..0]; - - DOUBLE_CAS = ACC.DOUBLE_CAS; - - CAS_A = LCELL(DECODE.CAS); --- CAS_A = (DECODE.CAS); - - CASXE0 = LCELL((MCA0 == 0) or ((MCA0 == 1) & DOUBLE_CAS)); - CASXE1 = LCELL((MCA0 == 1) or ((MCA0 == 0) & DOUBLE_CAS)); - - CASX_0 = LCELL(CAS_A or !((!MCA1 & CASXE0) or DECODE.MC_TYPE)); - CASX_1 = LCELL(CAS_A or !((!MCA1 & CASXE1) or DECODE.MC_TYPE)); - CASX_2 = LCELL(CAS_A or !(( MCA1 & CASXE0) or DECODE.MC_TYPE)); - CASX_3 = LCELL(CAS_A or !(( MCA1 & CASXE1) or DECODE.MC_TYPE)); - - CAS_[] = CASX_[]; - --- /WE = DFFE((/WE_OUT or DECODE.RAS),CLK42,,/RESET,); - /WE = DFFE((/WE_OUT or DECODE.RAS),CLK42,,/RESET,); - --- /WE = LCELL(DFFE((/WE_OUT or DECODE.RAS),CLK42,,/RESET,)); --- /WE = LCELL(/WE_OUT or CAS_A); - - /WE_OUT = LCELL(DECODE.MC_WRITE or BLK_MR or BLK_MWR2); - - DECODE.DOUBLE_CAS = DOUBLE_CAS; --- DECODE.A[15..0] = A[]; - DECODE.A[15..0] = ACC.AO[]; - DECODE.DI[7..0] = D[]; - - MA[11..0] = DECODE.MA[11..0]; - MA[14..12] = (!TURBO,INT_X,NMI_X); - - CLKZ1 = DECODE.CLK_Z80; - - TURBO = DECODE.TURBO; - - DECODE./IO = /IO; - DECODE./RD = /RD; - DECODE./WR = /WR; - DECODE./MR = /MR; - DECODE./RF = /RF; - DECODE./M1 = /M1; - - /WAIT_ALL = (DECODE./WAIT & WAIT_ROM & WAIT_ORIG); - --- /WAIT = TRI(DECODE./WAIT,LCELL(!(DECODE./WAIT & DFF(DECODE./WAIT,CLK42,,)))); - - /WAIT = TRI(/WAIT_ALL,LCELL(!/WAIT_ALL)); - - DECODE.TEST_R = TFF(KEYS.kb_ctrl,KEYS.kb_f12,,); - --- DECODE.MD[7..0] = ACC.MD[]; - DECODE.MD[7..0] = ACC.DO[]; - --- ===================================================== --- == Accelerator ====================================== --- ===================================================== - - ACC.ACC_ENA = ALL_MODE0; - - ACC.CLK42 = CLK42; - ACC./RESET = /RESET; - ACC.CT[2..0]= CT[2..0]; - ACC.CLK_Z80 = DECODE.CLK_Z80; - - ACC.RAS = DECODE.RAS; - ACC.CAS = DECODE.CAS; - - DECODE.CONTINUE = ACC.CONTINUE; --- DECODE.CONTINUE = VCC; - - ACC.MC_END = DECODE.MC_END; - ACC.MC_BEGIN= DECODE.MC_BEGIN; - ACC.MC_TYPE = DECODE.MC_TYPE; - ACC.MC_WRITE= DECODE.MC_WRITE; --- ACC.MCA[] = DECODE.MCA[]; - - ACC.AI[15..0] = A[]; - ACC.DI[7..0] = D[]; - - ACC./IO = /IO; - ACC./RD = /RD; - ACC./WR = /WR; - ACC./MR = /MR; - ACC./RF = /RF; - ACC./M1 = /M1; - ACC./IOM = DECODE./IOM; - - ACC.DCP[7..0] = DCPP[]; - - ACC.MDI[15..0] = MD[]; - --- ACC.MDO[15..0]; - --- ===================================================== --- ===== Graf-Mode ===================================== --- ===================================================== - - RGMOD[].clk = /IOWR; - RGMOD[].ena = DFF((DCPP[] == B"1100X101"),CLK42,,); --- (DCPP[] == B"1100X101"); - RGMOD[].d = D[]; - RGMOD[].clrn= /RESET; - - DECODE.G_LINE[] = (GND,GND,ACC.G_LINE[7..0]); - --- ===================================================== --- ===== VIDEO ========================================= --- ===================================================== - - VIDEO_PG = LCELL(DECODE.PAGE[7..4] == B"0101"); - BLK_MR = LCELL((VIDEO_PG & - (DECODE.PAGE2 or (DECODE.PAGE3 & ACC.GLISSER)))); - - GLISSER = LCELL(ACC.GLISSER & DECODE.PAGE[3] & VIDEO_PG); - - SVIDEO.clk42 = CLK42; - - CT[5..0] = SVIDEO.ct[5..0]; - CTH[5..0] = SVIDEO.cth[5..0]; - CTV[8..0] = SVIDEO.ctv[8..0]; - CTF[6..0] = SVIDEO.ctf[6..0]; - - BLANK = SVIDEO.blank; - - SVIDEO.start_up = VCC; - SVIDEO.copy_sinc_h = COPY_SINC_H; - SVIDEO.copy_sinc_v = COPY_SINC_V; - --- SVIDEO.wr = (DECODE.MC_WRITE or DECODE.CAS or GLISSER); --- SVIDEO.wr = DFF((DECODE.MC_WRITE or GLISSER or DECODE.RAS),CLK42,,/RESET); - SVIDEO.wr = DFF((DECODE.MC_WRITE or GLISSER or DECODE.CAS),!CLK42,,/RESET); - --- SVIDEO.vai[] = (DECODE.GA[],A[9..0]); - SVIDEO.vai[] = (DECODE.GA[],ACC.AO[9..0]); - - VA[] = SVIDEO.vao[]; - - SVIDEO.D[] = D[]; - SVIDEO.MDI[] = ACC.MDO[]; - SVIDEO.DOUBLE_CAS = DOUBLE_CAS; - - SVIDEO.VDM0[7..0] = VD0[]; - SVIDEO.VDM1[7..0] = VD1[]; - SVIDEO.VDM2[7..0] = VD2[]; - SVIDEO.VDM3[7..0] = VD3[]; - - V_CS[1..0] = SVIDEO.v_cs[]; - WR_COL = SVIDEO.WR_PIX; - --- ZX_COLOR[3..0] - - SVIDEO.ZX_PORT[5..0] = (ACC.G_LINE[5..0]); --- SVIDEO.ZX_PORT[7..6] = (DECODE.SP_SA,LCELL(DECODE.SP_SCR & !(A13 & !ACC.G_LINE7) & !ACC.G_LINE6)); - --- NEW 25.08.2022 --- disable zx adressing due accelerator is on - SVIDEO.ZX_PORT[7..6] = (DECODE.SP_SA,LCELL(DECODE.SP_SCR & !(A13 & !ACC.G_LINE7) & !ACC.G_LINE6 & !ALL_MODE0)); - - SVIDEO.DIR_PORT[0] = DECODE.SCR128; - - SVIDEO.DIR_PORT[3] = RGMOD0; - - IF (SCREEN_OFF == "USE") GENERATE - SVIDEO.DIR_PORT[4] = RGMOD1; -- 1 screen off, 0 - screen on - ELSE GENERATE - SVIDEO.DIR_PORT[4] = GND; -- 1 screen off, 0 - screen on - END GENERATE; - - SVIDEO.DIR_PORT[2..1] = GND; - SVIDEO.DIR_PORT[7..5] = BORDER[2..0]; --- SVIDEO.DIR_PORT[7..5] = MS.OUT_X[7..5]; - - SVIDEO.MOUSE_X[] = MS.OUT_X[]; - SVIDEO.MOUSE_Y[] = MS.OUT_Y[]; - -% - bit0 - Spectrum SCREEN Switch - bit1 - Spectrum Adress MODE - bit2 - Write to Spectrum Screen OFF - - bit7..5 - Border -% - --- ===================================================== - - ALL_MODE[7..0].clk = /IOWR; - ALL_MODE[7..0].ena = DFF((DCPP[] == B"11000011"),CLK42,,); -- C3 - ALL_MODE[].d = D[]; - ALL_MODE[].prn = /RESET; - --- ===================================================== --- === AUDIO OUT ======================================= --- ===================================================== - - DAC_DATA = DFFE(DFF(AUDIO_R15,CT2,,),!CT2,,,); - --- DAC_DATA = DFF(AUDIO_R15,CLK42,,); --- DAC_DATA = AUDIO_R15; - - DAC_WS = DFF(CTH1,CLK42,,); - DAC_BCK = DFF(CT2,CLK42,,); - - AUDIO_R[15..0].clk = CLK42; - AUDIO_R[15..0].ena = !CT2 & DFF(CT2,CLK42,,); - - AUDIO_CH = DFF(((CTH0,CT[5..3]) == 15),CT2,,); - - IF AUDIO_CH THEN - AUDIO_R[15..0].d = AY_CHS[15..0]; - ELSE - AUDIO_R[15..0].d = (AUDIO_R[14..0],GND); - END IF; - --- ====== COVOX ========== - - CBL_MODE = CBL_XX7; - CBL_STEREO = CBL_XX6; - CBL_MODE16 = CBL_XX5; - CBL_INT_ENA = CBL_XX4; - - CBL_INT = DFF(GND,!CBL_CNT6,,(CBL_INT_ENA & (/IO or /M1))); - - CBL_XX[].clk = /IOWR; - CBL_XX[].ena = DFF((DCPP[] == B"10001001"),CLK42,,); -- 89 - CBL_XX[] = D[]; - - CBL_CTX[].clk = !CTH1; - CBL_CNT[].clk = !CTH1; - - CASE CBL_XX[3..0] IS - WHEN 0 => CBL_TAB[] = 13; -- 16khz -- mono/stereo - WHEN 1 => CBL_TAB[] = 9; -- 22khz -- mono/stereo - WHEN 2 => CBL_TAB[] = 0; -- reserved - WHEN 3 => CBL_TAB[] = 0; -- reserved - WHEN 4 => CBL_TAB[] = 0; -- reserved - WHEN 5 => CBL_TAB[] = 0; -- reserved - WHEN 6 => CBL_TAB[] = 0; -- reserved - WHEN 7 => CBL_TAB[] = 0; -- reserved - - WHEN 8 => CBL_TAB[] = 27; -- 7.8125 KHz -- mono/stereo 8/16 bit - WHEN 9 => CBL_TAB[] = 19; -- 10.9375 KHz -- mono/stereo 8/16 bit - WHEN 10=> CBL_TAB[] = 13; -- 15.625 KHz -- mono/stereo 8/16 bit - WHEN 11=> CBL_TAB[] = 9; -- 21.875 KHz -- mono/stereo 8/16 bit - WHEN 12=> CBL_TAB[] = 6; -- 31.25 KHz -- mono/stereo 8/16 bit - WHEN 13=> CBL_TAB[] = 4; -- 43.75 KHz -- mono/stereo 8/16 bit - WHEN 14=> CBL_TAB[] = 3; -- 54.6875 KHz -- mono/stereo 8/16 bit - WHEN 15=> CBL_TAB[] = 1; -- 109.375 KHz -- mono/stereo 8/16 bit --- WHEN 15=> CBL_TAB[] = 0; -- (218.75)KHz -- stereo 110 only - END CASE; - - IF (CBL_CTX[] == 0) THEN - CBL_CTX[].d = CBL_TAB[]; - ELSE - CBL_CTX[].d = CBL_CTX[] - 1; - END IF; - - CASE (CBL_STEREO,LCELL(CBL_CTX[] == 0)) IS - WHEN 0,2 => CBL_CNT[].d = CBL_CNT[]; - WHEN 1 => CBL_CNT[].d = CBL_CNT[]+1; - WHEN 3 => CBL_CNT[].d = CBL_CNT[]+2; - END CASE; - - CBL_CNT[].clrn = CBL_MODE; - - CBL_IND = CBL_CNT7 xor CBL_WA7; - --- CBL_WR = DFF((DCPP[] == B"10001000"),CLK42,,) & !/IOWR; -- 88 - - CBL_WR = (DFF((DCPP[] == B"10001000"),CLK42,,) & !/IOWR) or - (DFF((DECODE.PAGE[7..0] == B"11111101"),CLK42,(CBL_INT_ENA & ACC.ACC_DIR1),) & - !DFF((DECODE.MC_WRITE or DECODE.CAS),CLK42,,/RESET)); - - - CBL_WAE = CBL_MODE16 & DFF(!CBL_WAE,!CBL_WR,,CBL_INT); - - CBL_WA[].clk = !CBL_WR; - CBL_WA[].ena = !CBL_WAE; - - CBL_WA[7].clrn = CBL_MODE & CBL_INT_ENA & (CBL_INT or !CBL_CNT7); - CBL_WA[7].prn = (CBL_INT or CBL_CNT7); - - CBL_WA[6..0].clrn = CBL_MODE & CBL_INT_ENA & CBL_INT; - - CBL_WA[].d = CBL_WA[] + 1; - - CBD[].clk = !CBL_WR; - CBD[].ena = CBL_WAE; --- CBD[].d = D[]; - CBD[].d = ACC.MDO[7..0]; - CBD[].clrn = CBL_MODE16; - - CBL.wren = (CBL_WR & !CBL_WAE); - --- CBL.data[] = ((D7 xor CBL_MODE16),D[6..0],CBD[]); - CBL.data[] = ((ACC.MDO15 xor CBL_MODE16),ACC.MDO[14..8],CBD[]); - - CBL.wraddress[] = ((!A[15..8]) & !CBL_INT_ENA) xor CBL_WA[]; - - CBL.wrclock = CLK42; - CBL.wrclken = VCC; - CBL.rden = VCC; - CBL.rdaddress[] = (CBL_CNT[7..1],LCELL((CBL_CNT0 & !CBL_STEREO) or (AUDIO_CH & CBL_STEREO))); - CBL.rdclock = CLK42; - CBL.rdclken = VCC; - - CBL_R[].ena = DFF((CBL_MODE or (CBL_WR)),CLK42,,); - - CBL_R[].CLK = CLK42; - CBL_R[15].prn = /RESET; - CBL_R[14..0].clrn = /RESET; - CASE CBL_MODE IS - WHEN 0 => CBL_R[] = (D[7..0],B"00000000"); - WHEN 1 => CBL_R[] = CBL.q[]; - END CASE; - --- ====== AY-3-8910 ======== - - AY3.CLK42 = CLK42; - - AY3./RESET = /RESET; - AY3.AY_T[8..0] = (CTH[2..0],CT[5..0]); - - AY3.AY_D_WR = DFF((DECODE./IOM or /WR) or !DFF((DCPP[] == H"91"),CLK42,,),CLK42,,); - AY3.AY_A_WR = DFF((DECODE./IOM or /WR) or !DFF((DCPP[] == H"90"),CLK42,,),CLK42,,); - - AY3.D[7..0] = D[]; - AY3.BEEPER = BORDER4; - --- AY3.DO[7..0] : OUTPUT; - --- AY3.AY_CH_A[3..0] : OUTPUT; --- AY3.AY_CH_B[3..0] : OUTPUT; --- AY3.AY_CH_C[3..0] : OUTPUT; - - AY_FULL[].clk = CLK42; - --- AY_CHS[].clk = !CTH0; - AY_CHS[].clk = !DFF((CTH1 & (CTH0 or !CT5)),CLK42,,); - AY_CHS[].ena = VCC; - --- AY_FULL[] = (GND,AY_CH_L[]) + (GND,AY_CH_R[]); - - CASE DFF(CTH0,CLK42,,) IS - WHEN 0 => AY_FULL[] = (AY3.AY_CH_L[],GND); - WHEN 1 => AY_FULL[] = (AY3.AY_CH_R[],GND); - END CASE; - --- AY_CHS[].d = (((GND,AY_FULL[]) + (VCC,CBL.q[15..5])),B"0000"); - --- AY_CHS[].d = (((GND,AY_FULL[]) + (VCC,CBL.q[15..8],B"000")),B"0000"); - AY_CHS[].d = (((GND,AY_FULL[]) + (VCC,CBL_R[15..5])),CBL_R[4..1]); - --- ===== MOUSE ========================= - - MS.clk = DFF(CTH5,CLK42,,); - MS.mouse_d = MOUSE_D; - - CASE (A10,A8) IS - WHEN 0,2 => KEMPS[] = (B"111111",!MS.OUT_K0,!MS.OUT_K1); - WHEN 1 => KEMPS[] = (MS.OUT_X[7..0]); - WHEN 3 => KEMPS[] = !(MS.OUT_Y[7..0]); - END CASE; - -END; - diff --git a/src/altera/quartus/acex/SP2_ACEX.flow.rpt b/src/altera/quartus/acex/SP2_ACEX.flow.rpt deleted file mode 100644 index 9c51df3..0000000 --- a/src/altera/quartus/acex/SP2_ACEX.flow.rpt +++ /dev/null @@ -1,103 +0,0 @@ -Flow report for SP2_ACEX -Sun Aug 28 15:25:51 2022 -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - - ---------------------- -; Table of Contents ; ---------------------- - 1. Legal Notice - 2. Flow Summary - 3. Flow Settings - 4. Flow Non-Default Global Settings - 5. Flow Elapsed Time - 6. Flow OS Summary - 7. Flow Log - - - ----------------- -; Legal Notice ; ----------------- -Copyright (C) 1991-2009 Altera Corporation -Your use of Altera Corporation's design tools, logic functions -and other software and tools, and its AMPP partner logic -functions, and any output files from any of the foregoing -(including device programming or simulation files), and any -associated documentation or information are expressly subject -to the terms and conditions of the Altera Program License -Subscription Agreement, Altera MegaCore Function License -Agreement, or other applicable license agreement, including, -without limitation, that your use is for the sole purpose of -programming logic devices manufactured by Altera and sold by -Altera or its authorized distributors. Please refer to the -applicable agreement for further details. - - - -+------------------------------------------------------------------------+ -; Flow Summary ; -+-------------------------+----------------------------------------------+ -; Flow Status ; Flow Failed - Sun Aug 28 15:25:51 2022 ; -; Quartus II Version ; 9.0 Build 235 06/17/2009 SP 2 SJ Web Edition ; -; Revision Name ; SP2_ACEX ; -; Top-level Entity Name ; SP2_ACEX ; -; Family ; ACEX1K ; -; Device ; EP1K30QC208-3 ; -; Timing Models ; Final ; -; Met timing requirements ; N/A ; -+-------------------------+----------------------------------------------+ - - -+-----------------------------------------+ -; Flow Settings ; -+-------------------+---------------------+ -; Option ; Setting ; -+-------------------+---------------------+ -; Start date & time ; 08/28/2022 15:25:50 ; -; Main task ; Compilation ; -; Revision Name ; SP2_ACEX ; -+-------------------+---------------------+ - - -+--------------------------------------------------------------------------------------------------------------------+ -; Flow Non-Default Global Settings ; -+---------------------------------+-----------------------------+---------------+-------------+----------------------+ -; Assignment Name ; Value ; Default Value ; Entity Name ; Section Id ; -+---------------------------------+-----------------------------+---------------+-------------+----------------------+ -; COMPILER_SIGNATURE_ID ; 52243291855.166168955009032 ; -- ; -- ; -- ; -; CUT_OFF_READ_DURING_WRITE_PATHS ; Off ; On ; -- ; -- ; -; EDA_INPUT_GND_NAME ; Gnd ; -- ; -- ; eda_design_synthesis ; -; EDA_INPUT_VCC_NAME ; Vcc ; -- ; -- ; eda_design_synthesis ; -; EDA_SHOW_LMF_MAPPING_MESSAGES ; Off ; -- ; -- ; eda_design_synthesis ; -; EXCLUDE_TPD_PATHS_LESS_THAN ; 0 ns ; -- ; -- ; -- ; -; FMAX_REQUIREMENT ; 100 MHz ; -- ; -- ; -- ; -+---------------------------------+-----------------------------+---------------+-------------+----------------------+ - - -+--------------------------------------------------------------------------------------------------------------------------+ -; Flow Elapsed Time ; -+----------------------+--------------+-------------------------+---------------------+------------------------------------+ -; Module Name ; Elapsed Time ; Average Processors Used ; Peak Virtual Memory ; Total CPU Time (on all processors) ; -+----------------------+--------------+-------------------------+---------------------+------------------------------------+ -; Analysis & Synthesis ; 00:00:01 ; 1.0 ; 228 MB ; 00:00:01 ; -; Total ; 00:00:01 ; -- ; -- ; 00:00:01 ; -+----------------------+--------------+-------------------------+---------------------+------------------------------------+ - - -+---------------------------------------------------------------------------------------+ -; Flow OS Summary ; -+----------------------+------------------+---------------+------------+----------------+ -; Module Name ; Machine Hostname ; OS Name ; OS Version ; Processor type ; -+----------------------+------------------+---------------+------------+----------------+ -; Analysis & Synthesis ; DESKTOP-72JG930 ; Windows Vista ; 6.2 ; x86_64 ; -+----------------------+------------------+---------------+------------+----------------+ - - ------------- -; Flow Log ; ------------- -quartus_map --read_settings_files=on --write_settings_files=off SP2_ACEX -c SP2_ACEX - - - diff --git a/src/altera/quartus/acex/SP2_ACEX.map.rpt b/src/altera/quartus/acex/SP2_ACEX.map.rpt deleted file mode 100644 index 9a8db38..0000000 --- a/src/altera/quartus/acex/SP2_ACEX.map.rpt +++ /dev/null @@ -1,184 +0,0 @@ -Analysis & Synthesis report for SP2_ACEX -Sun Aug 28 15:25:51 2022 -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - - ---------------------- -; Table of Contents ; ---------------------- - 1. Legal Notice - 2. Analysis & Synthesis Summary - 3. Analysis & Synthesis Settings - 4. Analysis & Synthesis Source Files Read - 5. Analysis & Synthesis Messages - - - ----------------- -; Legal Notice ; ----------------- -Copyright (C) 1991-2009 Altera Corporation -Your use of Altera Corporation's design tools, logic functions -and other software and tools, and its AMPP partner logic -functions, and any output files from any of the foregoing -(including device programming or simulation files), and any -associated documentation or information are expressly subject -to the terms and conditions of the Altera Program License -Subscription Agreement, Altera MegaCore Function License -Agreement, or other applicable license agreement, including, -without limitation, that your use is for the sole purpose of -programming logic devices manufactured by Altera and sold by -Altera or its authorized distributors. Please refer to the -applicable agreement for further details. - - - -+----------------------------------------------------------------------------+ -; Analysis & Synthesis Summary ; -+-----------------------------+----------------------------------------------+ -; Analysis & Synthesis Status ; Failed - Sun Aug 28 15:25:51 2022 ; -; Quartus II Version ; 9.0 Build 235 06/17/2009 SP 2 SJ Web Edition ; -; Revision Name ; SP2_ACEX ; -; Top-level Entity Name ; SP2_ACEX ; -; Family ; ACEX1K ; -+-----------------------------+----------------------------------------------+ - - -+----------------------------------------------------------------------------------------------+ -; Analysis & Synthesis Settings ; -+--------------------------------------------------------------+---------------+---------------+ -; Option ; Setting ; Default Value ; -+--------------------------------------------------------------+---------------+---------------+ -; Device ; EP1K30QC208-3 ; ; -; Top-level entity name ; SP2_ACEX ; SP2_ACEX ; -; Family name ; ACEX1K ; Stratix II ; -; Use smart compilation ; Off ; Off ; -; Create Debugging Nodes for IP Cores ; Off ; Off ; -; Preserve fewer node names ; On ; On ; -; Disable OpenCore Plus hardware evaluation ; Off ; Off ; -; Verilog Version ; Verilog_2001 ; Verilog_2001 ; -; VHDL Version ; VHDL93 ; VHDL93 ; -; State Machine Processing ; Auto ; Auto ; -; Safe State Machine ; Off ; Off ; -; Extract Verilog State Machines ; On ; On ; -; Extract VHDL State Machines ; On ; On ; -; Ignore Verilog initial constructs ; Off ; Off ; -; Iteration limit for constant Verilog loops ; 5000 ; 5000 ; -; Iteration limit for non-constant Verilog loops ; 250 ; 250 ; -; Add Pass-Through Logic to Inferred RAMs ; On ; On ; -; Parallel Synthesis ; Off ; Off ; -; NOT Gate Push-Back ; On ; On ; -; Power-Up Don't Care ; On ; On ; -; Remove Redundant Logic Cells ; Off ; Off ; -; Remove Duplicate Registers ; On ; On ; -; Ignore CARRY Buffers ; Off ; Off ; -; Ignore CASCADE Buffers ; Off ; Off ; -; Ignore GLOBAL Buffers ; Off ; Off ; -; Ignore ROW GLOBAL Buffers ; Off ; Off ; -; Ignore LCELL Buffers ; Off ; Off ; -; Ignore SOFT Buffers ; On ; On ; -; Limit AHDL Integers to 32 Bits ; Off ; Off ; -; Auto Implement in ROM ; Off ; Off ; -; Optimization Technique ; Area ; Area ; -; Carry Chain Length ; 32 ; 32 ; -; Cascade Chain Length ; 2 ; 2 ; -; Auto Carry Chains ; On ; On ; -; Auto Open-Drain Pins ; On ; On ; -; Auto ROM Replacement ; On ; On ; -; Auto RAM Replacement ; On ; On ; -; Auto Clock Enable Replacement ; On ; On ; -; Strict RAM Replacement ; Off ; Off ; -; Auto Resource Sharing ; Off ; Off ; -; Allow Any RAM Size For Recognition ; Off ; Off ; -; Allow Any ROM Size For Recognition ; Off ; Off ; -; Use LogicLock Constraints during Resource Balancing ; On ; On ; -; Ignore translate_off and synthesis_off directives ; Off ; Off ; -; Show Parameter Settings Tables in Synthesis Report ; On ; On ; -; HDL message level ; Level2 ; Level2 ; -; Suppress Register Optimization Related Messages ; Off ; Off ; -; Number of Removed Registers Reported in Synthesis Report ; 100 ; 100 ; -; Number of Inverted Registers Reported in Synthesis Report ; 100 ; 100 ; -; Block Design Naming ; Auto ; Auto ; -; Synthesis Effort ; Auto ; Auto ; -; Shift Register Replacement - Allow Asynchronous Clear Signal ; On ; On ; -; Analysis & Synthesis Message Level ; Medium ; Medium ; -+--------------------------------------------------------------+---------------+---------------+ - - -+----------------------------------------------------------------------------------------------------------------------------------------------+ -; Analysis & Synthesis Source Files Read ; -+----------------------------------+-----------------+-----------------------+-----------------------------------------------------------------+ -; File Name with User-Entered Path ; Used in Netlist ; File Type ; File Name with Absolute Path ; -+----------------------------------+-----------------+-----------------------+-----------------------------------------------------------------+ -; SP2_ACEX.tdf ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf ; -; lpm_ram_dp.inc ; yes ; Auto-Found AHDL File ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dp.inc ; -; kbd.inc ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/kbd.inc ; -; video2.inc ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/video2.inc ; -; dcp.inc ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/dcp.inc ; -; acceler.inc ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/acceler.inc ; -; ay.inc ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/ay.inc ; -; mouse.inc ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/mouse.inc ; -; MOUSE.tdf ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/MOUSE.tdf ; -; lpm_add_sub.inc ; yes ; Auto-Found AHDL File ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.inc ; -; kbd.tdf ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/acex/kbd.tdf ; -; lpm_ram_dq.inc ; yes ; Auto-Found AHDL File ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.inc ; -; lpm_ram_dq.tdf ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf ; -; altram.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/altram.inc ; -; lpm_mux.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_mux.inc ; -; lpm_decode.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_decode.inc ; -; aglobal90.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/aglobal90.inc ; -; altram.tdf ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/altram.tdf ; -; memmodes.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/others/maxplus2/memmodes.inc ; -; altsyncram.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/altsyncram.inc ; -; altqpram.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/altqpram.inc ; -+----------------------------------+-----------------+-----------------------+-----------------------------------------------------------------+ - - -+-------------------------------+ -; Analysis & Synthesis Messages ; -+-------------------------------+ -Info: ******************************************************************* -Info: Running Quartus II Analysis & Synthesis - Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - Info: Processing started: Sun Aug 28 15:25:50 2022 -Info: Command: quartus_map --read_settings_files=on --write_settings_files=off SP2_ACEX -c SP2_ACEX -Warning: Using design file SP2_ACEX.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project - Info: Found entity 1: SP2_ACEX -Info: Elaborating entity "SP2_ACEX" for the top level hierarchy -Warning: Variable or input pin "DMD" is defined but never used -Warning: Variable or input pin "T_SIGNAL" is defined but never used -Warning: Variable or input pin "RED" is defined but never used -Warning: Variable or input pin "GREEN" is defined but never used -Warning: Variable or input pin "BLUE" is defined but never used -Warning: Variable or input pin "MDR" is defined but never used -Warning: Variable or input pin "ISA_CASH" is defined but never used -Warning: Variable or input pin "ROM_WRITE_MODE" is defined but never used -Warning: Variable or input pin "/HALT" is defined but never used -Warning: Using design file MOUSE.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project - Info: Found entity 1: mouse -Info: Elaborating entity "MOUSE" for hierarchy "MOUSE:MS" -Warning: Variable or input pin "KB_OFL" is defined but never used -Warning: Using design file kbd.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project - Info: Found entity 1: kbd -Info: Elaborating entity "kbd" for hierarchy "kbd:KEYS" -Warning: Variable or input pin "/IOM" is defined but never used -Warning: Variable or input pin "/M1" is defined but never used -Info: Elaborating entity "lpm_ram_dq" for hierarchy "kbd:KEYS|lpm_ram_dq:$00021" -Info: Elaborated megafunction instantiation "kbd:KEYS|lpm_ram_dq:$00021" -Info: Instantiated megafunction "kbd:KEYS|lpm_ram_dq:$00021" with the following parameter: - Info: Parameter "LPM_WIDTH" = "8" - Info: Parameter "LPM_WIDTHAD" = "8" - Info: Parameter "LPM_FILE" = "KBD_INI2.MIF" - Info: Parameter "LPM_OUTDATA" = "UNREGISTERED" -Info: Elaborating entity "altram" for hierarchy "kbd:KEYS|lpm_ram_dq:$00021|altram:sram" -Error: Memory Initialization File or Hexadecimal (Intel-Format) File "KBD_INI2.MIF" contains illegal syntax at line 13 File: C:/Sprinter/src/altera/quartus/acex/KBD_INI2.MIF Line: 13 -Critical Warning: Can't read Memory Initialization File or Hexadecimal (Intel-Format) File KBD_INI2.MIF -- setting all initial values to 0 -Error: Can't elaborate user hierarchy "kbd:KEYS|lpm_ram_dq:$00021|altram:sram" File: c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf Line: 101 -Info: Elaborated megafunction instantiation "kbd:KEYS|lpm_ram_dq:$00021|altram:sram", which is child of megafunction instantiation "kbd:KEYS|lpm_ram_dq:$00021" -Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 16 warnings - Error: Peak virtual memory: 228 megabytes - Error: Processing ended: Sun Aug 28 15:25:51 2022 - Error: Elapsed time: 00:00:01 - Error: Total CPU time (on all processors): 00:00:01 - - diff --git a/src/altera/quartus/acex/SP2_ACEX.map.summary b/src/altera/quartus/acex/SP2_ACEX.map.summary deleted file mode 100644 index 38ca8c9..0000000 --- a/src/altera/quartus/acex/SP2_ACEX.map.summary +++ /dev/null @@ -1,5 +0,0 @@ -Analysis & Synthesis Status : Failed - Sun Aug 28 15:25:51 2022 -Quartus II Version : 9.0 Build 235 06/17/2009 SP 2 SJ Web Edition -Revision Name : SP2_ACEX -Top-level Entity Name : SP2_ACEX -Family : ACEX1K diff --git a/src/altera/quartus/acex/SP2_ACEX.qpf b/src/altera/quartus/acex/SP2_ACEX.qpf deleted file mode 100644 index 4abdd48..0000000 --- a/src/altera/quartus/acex/SP2_ACEX.qpf +++ /dev/null @@ -1,30 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 1991-2009 Altera Corporation -# Your use of Altera Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Altera Program License -# Subscription Agreement, Altera MegaCore Function License -# Agreement, or other applicable license agreement, including, -# without limitation, that your use is for the sole purpose of -# programming logic devices manufactured by Altera and sold by -# Altera or its authorized distributors. Please refer to the -# applicable agreement for further details. -# -# -------------------------------------------------------------------------- # -# -# Quartus II -# Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -# Date created = 03:32:05 August 28, 2022 -# -# -------------------------------------------------------------------------- # - -QUARTUS_VERSION = "9.0" -DATE = "03:32:05 August 28, 2022" - -# Revisions - -PROJECT_REVISION = "SP2_ACEX" diff --git a/src/altera/quartus/acex/SP2_ACEX.qsf b/src/altera/quartus/acex/SP2_ACEX.qsf deleted file mode 100644 index 19dbb7b..0000000 --- a/src/altera/quartus/acex/SP2_ACEX.qsf +++ /dev/null @@ -1,1918 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 1991-2009 Altera Corporation -# Your use of Altera Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Altera Program License -# Subscription Agreement, Altera MegaCore Function License -# Agreement, or other applicable license agreement, including, -# without limitation, that your use is for the sole purpose of -# programming logic devices manufactured by Altera and sold by -# Altera or its authorized distributors. Please refer to the -# applicable agreement for further details. -# -# -------------------------------------------------------------------------- # -# -# Quartus II -# Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -# Date created = 03:32:05 August 28, 2022 -# -# -------------------------------------------------------------------------- # -# -# Notes: -# -# 1) The default values for assignments are stored in the file: -# SP2_ACEX_assignment_defaults.qdf -# If this file doesn't exist, see file: -# assignment_defaults.qdf -# -# 2) Altera recommends that you do not modify this file. This -# file is updated automatically by the Quartus II software -# and any changes you make may be lost or overwritten. -# -# -------------------------------------------------------------------------- # - - -set_global_assignment -name FAMILY ACEX1K -set_global_assignment -name DEVICE "EP1K30QC208-3" -set_global_assignment -name TOP_LEVEL_ENTITY SP2_ACEX -set_global_assignment -name ORIGINAL_QUARTUS_VERSION "9.0 SP2" -set_global_assignment -name PROJECT_CREATION_TIME_DATE "03:32:05 AUGUST 28, 2022" -set_global_assignment -name LAST_QUARTUS_VERSION "9.0 SP2" -set_location_assignment LC8_B36 -to CASXE1 -set_location_assignment LC8_B36 -to CASXE[1] -set_location_assignment LC7_B36 -to CASXE0 -set_location_assignment LC7_B36 -to CASXE[0] -set_location_assignment LC6_B36 -to CASX_3 -set_location_assignment LC6_B36 -to CASX_[3] -set_location_assignment LC2_B36 -to CASX_2 -set_location_assignment LC2_B36 -to CASX_[2] -set_location_assignment LC5_B36 -to CASX_1 -set_location_assignment LC5_B36 -to CASX_[1] -set_location_assignment LC1_B36 -to CASX_0 -set_location_assignment LC1_B36 -to CASX_[0] -set_location_assignment LC8_F18 -to "video2:SVIDEO|V_WRM" -set_location_assignment LC2_F20 -to "video2:SVIDEO|V_WEM2" -set_location_assignment LC2_F20 -to "video2:SVIDEO|V_WEM[2]" -set_location_assignment LC5_F11 -to "video2:SVIDEO|V_WE_R" -set_location_assignment LC3_F15 -to "video2:SVIDEO|V_WEMMO" -set_location_assignment LC2_F18 -to "video2:SVIDEO|V_WEM" -set_location_assignment LC8_F20 -to "video2:SVIDEO|V_WRM2" -set_location_assignment LC8_F20 -to "video2:SVIDEO|V_WRM[2]" -set_location_assignment LC3_F12 -to "video2:SVIDEO|V_WEMMM" -set_location_assignment LC2_F12 -to "video2:SVIDEO|V_WEMMN" -set_location_assignment LC6_F12 -to "video2:SVIDEO|V_WE" -set_location_assignment LC5_F4 -to "video2:SVIDEO|V_CSX2" -set_location_assignment LC5_F4 -to "video2:SVIDEO|V_CSX[2]" -set_location_assignment LC5_F5 -to "video2:SVIDEO|V_CSX1" -set_location_assignment LC5_F5 -to "video2:SVIDEO|V_CSX[1]" -set_location_assignment LC5_F3 -to "video2:SVIDEO|V_CSX0" -set_location_assignment LC5_F3 -to "video2:SVIDEO|V_CSX[0]" -set_location_assignment LC2_A15 -to "dcp:DECODE|WR_AWGX" -set_location_assignment LC4_F17 -to "video2:SVIDEO|V_WEMM" -set_location_assignment LC2_F19 -to "video2:SVIDEO|V_WEY2" -set_location_assignment LC2_F19 -to "video2:SVIDEO|V_WEY[2]" -set_location_assignment LC2_F14 -to "video2:SVIDEO|V_WEY3" -set_location_assignment LC2_F14 -to "video2:SVIDEO|V_WEY[3]" -set_location_assignment LC2_F16 -to "video2:SVIDEO|V_WEY1" -set_location_assignment LC2_F16 -to "video2:SVIDEO|V_WEY[1]" -set_location_assignment LC2_F17 -to "video2:SVIDEO|V_WEY0" -set_location_assignment LC2_F17 -to "video2:SVIDEO|V_WEY[0]" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_0" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][0]" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_1" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][1]" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_2" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][2]" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_3" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][3]" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_4" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][4]" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_5" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][5]" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_6" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][6]" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_7" -set_location_assignment EAB_D -to "acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][7]" -set_location_assignment LC1_F14 -to V_WRX3 -set_location_assignment LC1_F14 -to V_WRX[3] -set_location_assignment LC1_F16 -to V_WRX1 -set_location_assignment LC1_F16 -to V_WRX[1] -set_location_assignment LC1_F17 -to V_WRX0 -set_location_assignment LC1_F17 -to V_WRX[0] -set_location_assignment LC8_F16 -to "video2:SVIDEO|V_WR_1" -set_location_assignment LC8_F16 -to "video2:SVIDEO|V_WR_[1]" -set_location_assignment LC8_F17 -to "video2:SVIDEO|V_WR_0" -set_location_assignment LC8_F17 -to "video2:SVIDEO|V_WR_[0]" -set_location_assignment EAB_E -to "ay:AY3|lpm_ram_dq:90|altram:sram|segment0_0" -set_location_assignment EAB_E -to "ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][0]" -set_location_assignment EAB_E -to "ay:AY3|lpm_ram_dq:90|altram:sram|segment0_1" -set_location_assignment EAB_E -to "ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][1]" -set_location_assignment EAB_E -to "ay:AY3|lpm_ram_dq:90|altram:sram|segment0_2" -set_location_assignment EAB_E -to "ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][2]" -set_location_assignment EAB_E -to "ay:AY3|lpm_ram_dq:90|altram:sram|segment0_3" -set_location_assignment EAB_E -to "ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][3]" -set_location_assignment EAB_E -to "ay:AY3|lpm_ram_dq:90|altram:sram|segment0_4" -set_location_assignment EAB_E -to "ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][4]" -set_location_assignment EAB_E -to "ay:AY3|lpm_ram_dq:90|altram:sram|segment0_5" -set_location_assignment EAB_E -to "ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][5]" -set_location_assignment EAB_E -to "ay:AY3|lpm_ram_dq:90|altram:sram|segment0_6" -set_location_assignment EAB_E -to "ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][6]" -set_location_assignment EAB_E -to "ay:AY3|lpm_ram_dq:90|altram:sram|segment0_7" -set_location_assignment EAB_E -to "ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][7]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_0" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][0]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_1" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][1]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_2" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][2]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_3" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][3]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_4" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][4]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_5" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][5]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_6" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][6]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_7" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][7]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_8" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][8]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_9" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][9]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_10" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][10]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_11" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][11]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_12" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][12]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_13" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][13]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_14" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][14]" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_15" -set_location_assignment EAB_C -to "dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][15]" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_0" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][0]" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_1" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][1]" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_2" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][2]" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_3" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][3]" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_4" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][4]" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_5" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][5]" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_6" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][6]" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_7" -set_location_assignment EAB_B -to "kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][7]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_5" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][5]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_6" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][6]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_7" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][7]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_8" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][8]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_9" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][9]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_10" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][10]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_11" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][11]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_12" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][12]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_13" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][13]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_14" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][14]" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment0_15" -set_location_assignment EAB_A -to "lpm_ram_dp:CBL|altdpram:sram|segment[0][15]" -set_location_assignment LC1_F19 -to V_WRX2 -set_location_assignment LC1_F19 -to V_WRX[2] -set_location_assignment LC8_F19 -to "video2:SVIDEO|V_WR_2" -set_location_assignment LC8_F19 -to "video2:SVIDEO|V_WR_[2]" -set_location_assignment LC8_F14 -to "video2:SVIDEO|V_WR_3" -set_location_assignment LC8_F14 -to "video2:SVIDEO|V_WR_[3]" -set_location_assignment LC2_A32 -to "dcp:DECODE|285" -set_location_assignment LC2_A35 -to RASX_0 -set_location_assignment LC2_A35 -to RASX_[0] -set_location_assignment LC2_A34 -to RASX_1 -set_location_assignment LC2_A34 -to RASX_[1] -set_location_assignment PIN_17 -to XA3 -set_location_assignment PIN_17 -to XA[3] -set_location_assignment PIN_9 -to XA1 -set_location_assignment PIN_9 -to XA[1] -set_location_assignment PIN_200 -to XA2 -set_location_assignment PIN_200 -to XA[2] -set_location_assignment PIN_180 -to XA0 -set_location_assignment PIN_180 -to XA[0] -set_location_assignment PIN_114 -to VD30 -set_location_assignment PIN_114 -to VD[30] -set_location_assignment PIN_136 -to VD31 -set_location_assignment PIN_136 -to VD[31] -set_location_assignment PIN_144 -to VD32 -set_location_assignment PIN_144 -to VD[32] -set_location_assignment PIN_148 -to VD33 -set_location_assignment PIN_148 -to VD[33] -set_location_assignment PIN_149 -to VD34 -set_location_assignment PIN_149 -to VD[34] -set_location_assignment PIN_143 -to VD35 -set_location_assignment PIN_143 -to VD[35] -set_location_assignment PIN_139 -to VD36 -set_location_assignment PIN_139 -to VD[36] -set_location_assignment PIN_128 -to VD37 -set_location_assignment PIN_128 -to VD[37] -set_location_assignment PIN_150 -to VD20 -set_location_assignment PIN_150 -to VD[20] -set_location_assignment PIN_115 -to VD21 -set_location_assignment PIN_115 -to VD[21] -set_location_assignment PIN_135 -to VD22 -set_location_assignment PIN_135 -to VD[22] -set_location_assignment PIN_140 -to VD23 -set_location_assignment PIN_140 -to VD[23] -set_location_assignment PIN_141 -to VD24 -set_location_assignment PIN_141 -to VD[24] -set_location_assignment PIN_147 -to VD25 -set_location_assignment PIN_147 -to VD[25] -set_location_assignment PIN_142 -to VD26 -set_location_assignment PIN_142 -to VD[26] -set_location_assignment PIN_131 -to VD27 -set_location_assignment PIN_131 -to VD[27] -set_location_assignment PIN_104 -to VD10 -set_location_assignment PIN_104 -to VD[10] -set_location_assignment PIN_111 -to VD11 -set_location_assignment PIN_111 -to VD[11] -set_location_assignment PIN_120 -to VD12 -set_location_assignment PIN_120 -to VD[12] -set_location_assignment PIN_127 -to VD13 -set_location_assignment PIN_127 -to VD[13] -set_location_assignment PIN_132 -to VD14 -set_location_assignment PIN_132 -to VD[14] -set_location_assignment PIN_134 -to VD15 -set_location_assignment PIN_134 -to VD[15] -set_location_assignment PIN_133 -to VD16 -set_location_assignment PIN_133 -to VD[16] -set_location_assignment PIN_122 -to VD17 -set_location_assignment PIN_122 -to VD[17] -set_location_assignment PIN_103 -to VD00 -set_location_assignment PIN_103 -to VD[00] -set_location_assignment PIN_113 -to VD01 -set_location_assignment PIN_113 -to VD[01] -set_location_assignment PIN_116 -to VD02 -set_location_assignment PIN_116 -to VD[02] -set_location_assignment PIN_121 -to VD03 -set_location_assignment PIN_121 -to VD[03] -set_location_assignment PIN_126 -to VD04 -set_location_assignment PIN_126 -to VD[04] -set_location_assignment PIN_125 -to VD05 -set_location_assignment PIN_125 -to VD[05] -set_location_assignment PIN_119 -to VD06 -set_location_assignment PIN_119 -to VD[06] -set_location_assignment PIN_112 -to VD07 -set_location_assignment PIN_112 -to VD[07] -set_location_assignment PIN_19 -to /RESET -set_location_assignment PIN_179 -to MD15 -set_location_assignment PIN_179 -to MD[15] -set_location_assignment PIN_187 -to MD14 -set_location_assignment PIN_187 -to MD[14] -set_location_assignment PIN_192 -to MD12 -set_location_assignment PIN_192 -to MD[12] -set_location_assignment PIN_198 -to MD11 -set_location_assignment PIN_198 -to MD[11] -set_location_assignment PIN_204 -to MD10 -set_location_assignment PIN_204 -to MD[10] -set_location_assignment PIN_208 -to MD9 -set_location_assignment PIN_208 -to MD[9] -set_location_assignment PIN_8 -to MD8 -set_location_assignment PIN_8 -to MD[8] -set_location_assignment PIN_161 -to MD7 -set_location_assignment PIN_161 -to MD[7] -set_location_assignment PIN_162 -to MD6 -set_location_assignment PIN_162 -to MD[6] -set_location_assignment PIN_163 -to MD5 -set_location_assignment PIN_163 -to MD[5] -set_location_assignment PIN_164 -to MD4 -set_location_assignment PIN_164 -to MD[4] -set_location_assignment PIN_186 -to MD3 -set_location_assignment PIN_186 -to MD[3] -set_location_assignment PIN_190 -to MD2 -set_location_assignment PIN_190 -to MD[2] -set_location_assignment PIN_193 -to MD1 -set_location_assignment PIN_193 -to MD[1] -set_location_assignment PIN_196 -to MD0 -set_location_assignment PIN_196 -to MD[0] -set_location_assignment PIN_61 -to D7 -set_location_assignment PIN_61 -to D[7] -set_location_assignment PIN_60 -to D6 -set_location_assignment PIN_60 -to D[6] -set_location_assignment PIN_58 -to D5 -set_location_assignment PIN_58 -to D[5] -set_location_assignment PIN_57 -to D4 -set_location_assignment PIN_57 -to D[4] -set_location_assignment PIN_56 -to D3 -set_location_assignment PIN_56 -to D[3] -set_location_assignment PIN_55 -to D2 -set_location_assignment PIN_55 -to D[2] -set_location_assignment PIN_54 -to D1 -set_location_assignment PIN_54 -to D[1] -set_location_assignment PIN_53 -to D0 -set_location_assignment PIN_53 -to D[0] -set_location_assignment PIN_169 -to XACS -set_location_assignment PIN_11 -to WR_DWG -set_location_assignment PIN_157 -to WR_COL -set_location_assignment PIN_176 -to WR_AWG -set_location_assignment PIN_16 -to /WE -set_location_assignment PIN_88 -to V_WR3 -set_location_assignment PIN_88 -to V_WR[3] -set_location_assignment PIN_75 -to V_WR2 -set_location_assignment PIN_75 -to V_WR[2] -set_location_assignment PIN_85 -to V_WR1 -set_location_assignment PIN_85 -to V_WR[1] -set_location_assignment PIN_83 -to V_WR0 -set_location_assignment PIN_83 -to V_WR[0] -set_location_assignment PIN_101 -to V_CS0 -set_location_assignment PIN_101 -to V_CS[0] -set_location_assignment PIN_70 -to V_CS1 -set_location_assignment PIN_70 -to V_CS[1] -set_location_assignment PIN_71 -to VA15 -set_location_assignment PIN_71 -to VA[15] -set_location_assignment PIN_73 -to VA14 -set_location_assignment PIN_73 -to VA[14] -set_location_assignment PIN_87 -to VA13 -set_location_assignment PIN_87 -to VA[13] -set_location_assignment PIN_74 -to VA12 -set_location_assignment PIN_74 -to VA[12] -set_location_assignment PIN_95 -to VA11 -set_location_assignment PIN_95 -to VA[11] -set_location_assignment PIN_99 -to VA10 -set_location_assignment PIN_99 -to VA[10] -set_location_assignment PIN_93 -to VA9 -set_location_assignment PIN_93 -to VA[9] -set_location_assignment PIN_94 -to VA4 -set_location_assignment PIN_94 -to VA[4] -set_location_assignment PIN_92 -to VA5 -set_location_assignment PIN_92 -to VA[5] -set_location_assignment PIN_90 -to VA8 -set_location_assignment PIN_90 -to VA[8] -set_location_assignment PIN_86 -to VA7 -set_location_assignment PIN_86 -to VA[7] -set_location_assignment PIN_89 -to VA6 -set_location_assignment PIN_89 -to VA[6] -set_location_assignment PIN_96 -to VA3 -set_location_assignment PIN_96 -to VA[3] -set_location_assignment PIN_97 -to VA2 -set_location_assignment PIN_97 -to VA[2] -set_location_assignment PIN_100 -to VA1 -set_location_assignment PIN_100 -to VA[1] -set_location_assignment PIN_102 -to VA0 -set_location_assignment PIN_102 -to VA[0] -set_location_assignment PIN_7 -to SXA -set_location_assignment PIN_173 -to RDXA -set_location_assignment PIN_10 -to RD_KMPS -set_location_assignment PIN_67 -to RA17 -set_location_assignment PIN_67 -to RA[17] -set_location_assignment PIN_68 -to RA16 -set_location_assignment PIN_68 -to RA[16] -set_location_assignment PIN_69 -to RA15 -set_location_assignment PIN_69 -to RA[15] -set_location_assignment PIN_65 -to RA14 -set_location_assignment PIN_65 -to RA[14] -set_location_assignment PIN_205 -to RAS_1 -set_location_assignment PIN_205 -to RAS_[1] -set_location_assignment PIN_207 -to RAS_0 -set_location_assignment PIN_207 -to RAS_[0] -set_location_assignment PIN_191 -to MA14 -set_location_assignment PIN_191 -to MA[14] -set_location_assignment PIN_195 -to MA13 -set_location_assignment PIN_195 -to MA[13] -set_location_assignment PIN_206 -to MA12 -set_location_assignment PIN_206 -to MA[12] -set_location_assignment PIN_199 -to MA11 -set_location_assignment PIN_199 -to MA[11] -set_location_assignment PIN_177 -to MA10 -set_location_assignment PIN_177 -to MA[10] -set_location_assignment PIN_203 -to MA9 -set_location_assignment PIN_203 -to MA[9] -set_location_assignment PIN_202 -to MA8 -set_location_assignment PIN_202 -to MA[8] -set_location_assignment PIN_197 -to MA7 -set_location_assignment PIN_197 -to MA[7] -set_location_assignment PIN_175 -to MA6 -set_location_assignment PIN_175 -to MA[6] -set_location_assignment PIN_174 -to MA5 -set_location_assignment PIN_174 -to MA[5] -set_location_assignment PIN_172 -to MA4 -set_location_assignment PIN_172 -to MA[4] -set_location_assignment PIN_170 -to MA3 -set_location_assignment PIN_170 -to MA[3] -set_location_assignment PIN_168 -to MA2 -set_location_assignment PIN_168 -to MA[2] -set_location_assignment PIN_167 -to MA1 -set_location_assignment PIN_167 -to MA[1] -set_location_assignment PIN_166 -to MA0 -set_location_assignment PIN_166 -to MA[0] -set_location_assignment PIN_159 -to DAC_WS -set_location_assignment PIN_158 -to DAC_DATA -set_location_assignment PIN_160 -to DAC_BCK -set_location_assignment PIN_64 -to CS_CASH -set_location_assignment PIN_63 -to CS_ROM -set_location_assignment PIN_62 -to CLKZ1 -set_location_assignment PIN_62 -to CLKZ[1] -set_location_assignment PIN_15 -to CAS_3 -set_location_assignment PIN_15 -to CAS_[3] -set_location_assignment PIN_13 -to CAS_2 -set_location_assignment PIN_13 -to CAS_[2] -set_location_assignment PIN_14 -to CAS_1 -set_location_assignment PIN_14 -to CAS_[1] -set_location_assignment PIN_12 -to CAS_0 -set_location_assignment PIN_12 -to CAS_[0] -set_location_assignment PIN_18 -to /WAIT -set_location_assignment PIN_25 -to /RF -set_location_assignment PIN_24 -to /M1 -set_location_assignment PIN_24 -to /M[1] -set_location_assignment PIN_79 -to /WR -set_location_assignment PIN_183 -to TG42 -set_location_assignment PIN_183 -to TG[42] -set_location_assignment PIN_80 -to /RD -set_location_assignment PIN_78 -to /IO -set_location_assignment PIN_184 -to /MR -set_location_assignment PIN_182 -to /HALT -set_location_assignment PIN_47 -to A15 -set_location_assignment PIN_47 -to A[15] -set_location_assignment PIN_46 -to A14 -set_location_assignment PIN_46 -to A[14] -set_location_assignment PIN_45 -to A13 -set_location_assignment PIN_45 -to A[13] -set_location_assignment PIN_44 -to A12 -set_location_assignment PIN_44 -to A[12] -set_location_assignment PIN_41 -to A11 -set_location_assignment PIN_41 -to A[11] -set_location_assignment PIN_40 -to A10 -set_location_assignment PIN_40 -to A[10] -set_location_assignment PIN_39 -to A9 -set_location_assignment PIN_39 -to A[9] -set_location_assignment PIN_38 -to A8 -set_location_assignment PIN_38 -to A[8] -set_location_assignment PIN_37 -to A7 -set_location_assignment PIN_37 -to A[7] -set_location_assignment PIN_36 -to A6 -set_location_assignment PIN_36 -to A[6] -set_location_assignment PIN_31 -to A5 -set_location_assignment PIN_31 -to A[5] -set_location_assignment PIN_30 -to A4 -set_location_assignment PIN_30 -to A[4] -set_location_assignment PIN_29 -to A3 -set_location_assignment PIN_29 -to A[3] -set_location_assignment PIN_28 -to A2 -set_location_assignment PIN_28 -to A[2] -set_location_assignment PIN_27 -to A1 -set_location_assignment PIN_27 -to A[1] -set_location_assignment PIN_26 -to A0 -set_location_assignment PIN_26 -to A[0] -set_location_assignment PIN_189 -to MD13 -set_location_assignment PIN_189 -to MD[13] -set_global_assignment -name FMAX_REQUIREMENT "100 MHz" -set_global_assignment -name CUT_OFF_CLEAR_AND_PRESET_PATHS ON -set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK ON -set_instance_assignment -name SLOW_SLEW_RATE ON -to /wait -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to wr_dwg -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to wr_dwg -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to wr_dwg -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to wr_dwg -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to RDXA -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to RDXA -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SXA -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to SXA -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD00 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD00 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[00] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[00] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD01 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD01 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[01] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[01] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD02 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD02 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[02] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[02] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD03 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD03 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[03] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[03] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD04 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD04 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[04] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[04] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD05 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD05 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[05] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[05] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD06 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD06 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[06] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[06] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD07 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD07 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[07] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[07] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD10 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD10 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[10] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[10] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD11 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD11 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[11] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[11] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD12 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD12 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[12] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[12] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD13 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD13 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[13] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[13] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD14 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD14 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[14] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[14] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD15 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD15 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[15] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[15] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD16 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD16 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[16] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[16] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD17 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD17 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[17] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[17] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD20 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD20 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[20] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[20] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD21 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD21 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[21] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[21] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD22 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD22 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[22] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[22] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD23 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD23 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[23] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[23] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD24 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD24 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[24] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[24] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD25 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD25 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[25] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[25] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD26 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD26 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[26] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[26] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD27 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD27 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[27] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[27] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD30 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD30 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[30] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[30] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD31 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD31 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[31] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[31] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD32 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD32 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[32] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[32] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD33 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD33 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[33] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[33] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD34 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD34 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[34] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[34] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD35 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD35 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[35] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[35] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD36 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD36 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[36] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[36] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD37 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD37 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[37] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VD[37] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to RAS_0 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to RAS_0 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to RAS_[0] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to RAS_[0] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to RAS_1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to RAS_1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to RAS_[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to RAS_[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_0 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_0 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_[0] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CAS_0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CAS_[0] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CAS_1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CAS_[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_2 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_2 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_[2] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_[2] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CAS_2 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CAS_[2] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_3 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_3 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_[3] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CAS_[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CAS_3 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CAS_[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to RAS_0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to RAS_[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to RAS_1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to RAS_[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XACS -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XACS -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /wr -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /wr -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /WE -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /WE -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /wait -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /wait -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA0 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA0 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[0] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[0] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA2 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA2 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[2] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[2] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA3 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA3 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[3] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[3] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA4 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA4 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[4] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[4] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA5 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA5 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[5] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[5] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA6 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA6 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[6] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[6] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA7 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA7 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[7] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[7] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA8 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA8 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[8] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[8] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA9 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA9 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[9] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[9] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA10 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA10 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[10] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[10] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA11 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA11 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[11] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[11] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA12 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA12 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[12] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[12] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA13 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA13 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[13] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[13] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA14 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA14 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[14] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[14] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA15 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA15 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[15] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to VA[15] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /rf -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /rf -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /reset -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /reset -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /rd -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /rd -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra14 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra14 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra[14] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra[14] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ra14 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ra[14] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra15 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra15 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra[15] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra[15] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ra15 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ra[15] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra16 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra16 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra[16] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra[16] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ra16 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ra[16] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra17 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra17 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra[17] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ra[17] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ra17 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ra[17] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /mr -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /mr -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /m1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /m1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /m[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /m[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma12 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma12 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[12] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[12] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma13 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma13 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[13] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[13] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma14 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma14 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[14] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[14] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma0 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma0 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[0] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[0] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma2 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma2 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[2] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[2] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma3 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma3 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[3] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[3] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma4 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma4 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[4] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[4] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma5 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma5 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[5] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[5] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma6 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma6 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[6] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[6] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma7 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma7 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[7] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[7] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma8 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma8 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[8] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[8] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma9 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma9 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[9] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[9] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma10 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma10 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[10] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[10] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma11 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma11 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[11] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to ma[11] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /io -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /io -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /HALT -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to /HALT -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d0 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d0 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[0] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[0] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d2 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d2 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[2] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[2] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d3 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d3 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[3] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[3] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d4 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d4 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[4] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[4] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d5 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d5 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[5] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[5] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d6 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d6 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[6] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[6] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d7 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d7 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[7] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to d[7] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CS_CASH -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CS_CASH -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to CS_CASH -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CS_CASH -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to cs_rom -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to cs_rom -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to cs_rom -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to cs_rom -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a0 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a0 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[0] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[0] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a2 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a2 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[2] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[2] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a3 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a3 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[3] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[3] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a4 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a4 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[4] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[4] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a5 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a5 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[5] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[5] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a6 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a6 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[6] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[6] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a7 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a7 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[7] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[7] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A8 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A8 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[8] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[8] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a9 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a9 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[9] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[9] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A10 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A10 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[10] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[10] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a11 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a11 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[11] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to a[11] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A12 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A12 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[12] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[12] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A13 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A13 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[13] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[13] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A14 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A14 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[14] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[14] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A15 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A15 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[15] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to A[15] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md0 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md0 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[0] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[0] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md2 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md2 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[2] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[2] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md3 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md3 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[3] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[3] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md4 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md4 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[4] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[4] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md5 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md5 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[5] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[5] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md6 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md6 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[6] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[6] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md7 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md7 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[7] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[7] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md8 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md8 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[8] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[8] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md9 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md9 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[9] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[9] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md10 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md10 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[10] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[10] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md11 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md11 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[11] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[11] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md12 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md12 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[12] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[12] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md13 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md13 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[13] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[13] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md14 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md14 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[14] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[14] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md15 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md15 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[15] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to md[15] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to wr_awg -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA0 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA0 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA[0] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA[0] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA1 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA1 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA[1] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA[1] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA2 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA2 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA[2] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA[2] -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA3 -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA3 -entity sp2_acex -set_instance_assignment -name FLEX6K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA[3] -entity sp2_acex -set_instance_assignment -name FLEX10K_DECREASE_INPUT_DELAY_TO_INTERNAL_CELLS OFF -to XA[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma2 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[2] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma3 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma4 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[4] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma5 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[5] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma6 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[6] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma7 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[7] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma8 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[8] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma9 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[9] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma10 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[10] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma11 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[11] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD00 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[00] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD01 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[01] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD02 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[02] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD03 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[03] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD04 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[04] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD05 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[05] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD06 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[06] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD07 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[07] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD10 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[10] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD11 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[11] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD12 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[12] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD13 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[13] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD14 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[14] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD15 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[15] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD16 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[16] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD17 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[17] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD20 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[20] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD21 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[21] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD22 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[22] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD23 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[23] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD24 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[24] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD25 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[25] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD26 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[26] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD27 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[27] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD30 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[30] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD31 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[31] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD32 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[32] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD33 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[33] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD34 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[34] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD35 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[35] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD36 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[36] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD37 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to VD[37] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA2 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[2] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA3 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA4 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[4] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA6 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[6] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA5 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[5] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA7 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[7] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA8 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[8] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA9 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[9] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA10 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[10] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA11 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[11] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA12 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[12] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA13 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[13] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA14 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[14] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA15 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VA[15] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD00 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[00] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD01 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[01] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD02 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[02] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD03 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[03] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD04 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[04] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD05 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[05] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD06 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[06] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD07 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[07] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD10 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[10] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD11 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[11] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD12 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[12] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD13 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[13] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD14 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[14] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD15 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[15] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD16 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[16] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD17 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[17] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD20 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[20] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD21 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[21] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD22 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[22] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD23 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[23] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD24 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[24] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD25 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[25] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD26 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[26] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD27 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[27] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD30 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[30] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD31 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[31] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD32 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[32] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD33 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[33] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD34 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[34] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD35 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[35] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD36 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[36] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD37 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to VD[37] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to WR_COL -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA2 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[2] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA3 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA4 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[4] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA5 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[5] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA6 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[6] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA7 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[7] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA8 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[8] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA9 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[9] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA10 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[10] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA11 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[11] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA12 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[12] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA13 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[13] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA14 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[14] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA15 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to VA[15] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to V_WR0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to V_WR[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to V_WR1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to V_WR[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to V_WR2 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to V_WR[2] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to V_WR3 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to V_WR[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XA0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XA[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XA1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XA[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XA2 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XA[2] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XA3 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XA[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to XACS -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /wait -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to SXA -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /rf -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /reset -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to RDXA -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /rd -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /m1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /m[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /mr -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /io -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /HALT -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to /WE -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /WE -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to RAS_0 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to RAS_[0] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to RAS_1 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to RAS_[1] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CAS_0 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CAS_[0] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CAS_1 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CAS_[1] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CAS_2 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CAS_[2] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CAS_3 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to CAS_[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[0] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma1 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma1 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[1] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[1] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma2 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma2 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[2] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[2] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma3 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma3 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[3] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[3] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma4 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma4 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[4] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[4] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma5 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma5 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[5] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[5] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma6 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma6 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[6] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[6] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma7 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma7 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[7] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[7] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma8 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma8 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[8] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[8] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma9 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma9 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[9] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[9] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma10 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma10 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[10] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[10] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma11 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma11 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[11] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[11] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma2 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[2] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma3 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma4 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[4] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma5 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[5] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma6 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[6] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma7 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[7] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma8 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[8] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma9 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[9] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma10 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[10] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma11 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[11] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma12 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[12] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma12 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[12] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma13 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[13] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma13 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[13] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma14 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ma[14] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma14 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ma[14] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to SXA -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to RDXA -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to RDXA -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to /mr -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to /m1 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to /m[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /rd -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to wr_awg -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to wr_awg -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ra14 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ra[14] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ra14 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ra[14] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ra15 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ra[15] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ra15 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ra[15] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ra16 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ra[16] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ra16 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ra[16] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ra17 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to ra[17] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ra17 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to ra[17] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to CS_CASH -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to cs_rom -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /WE -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to RAS_0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to RAS_[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to RAS_1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to RAS_[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CAS_0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CAS_[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CAS_1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CAS_[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CAS_2 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CAS_[2] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CAS_3 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to CAS_[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to V_WR0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to V_WR[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to V_WR1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to V_WR[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to V_WR2 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to V_WR[2] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to V_WR3 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to V_WR[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to v_cs0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to v_cs[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to v_cs1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to v_cs[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XACS -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to /wr -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XA0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XA[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XA1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XA[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XA2 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XA[2] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XA3 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to XA[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to TG42 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to TG[42] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d2 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d[2] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d3 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d4 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d[4] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d5 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d[5] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d6 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d[6] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d7 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to d[7] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md2 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[2] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md3 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md4 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[4] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md5 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[5] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md6 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[6] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md7 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[7] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md8 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[8] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md9 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[9] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md10 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[10] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md11 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[11] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md12 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[12] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md13 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[13] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md14 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[14] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md15 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to md[15] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a0 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[0] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a1 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[1] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a2 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[2] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a3 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[3] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a4 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[4] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a5 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[5] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a6 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[6] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A8 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A[8] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a7 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[7] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A10 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A[10] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a9 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[9] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a11 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to a[11] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A12 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A[12] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A13 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A[13] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A14 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A[14] -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A15 -entity sp2_acex -set_instance_assignment -name PCI_IO OFF -to A[15] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /reset -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /rf -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a2 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[2] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a3 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a4 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[4] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a5 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[5] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a6 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[6] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a7 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[7] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a8 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[8] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a9 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[9] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a10 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[10] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a11 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to a[11] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to A12 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to A[12] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to A13 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to A[13] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to A14 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to A[14] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to A15 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to A[15] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /mr -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /m1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /m[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /HALT -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to /io -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d2 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d[2] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d3 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d4 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d[4] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d5 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d[5] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d6 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d[6] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d7 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to d[7] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to DAC_BCK -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to DAC_DATA -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to DAC_WS -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to WR_COL -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to WR_COL -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to WR_COL -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to v_cs0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to v_cs[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to v_cs1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to v_cs[1] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma0 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma0 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to ma[0] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to ma[0] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma0 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[0] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma1 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[1] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma2 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[2] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma3 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[3] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma4 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[4] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma5 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[5] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma6 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[6] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma7 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[7] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma8 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[8] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma9 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[9] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma10 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[10] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma11 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[11] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma12 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[12] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma13 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[13] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma14 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to ma[14] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md0 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[0] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md0 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[0] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md1 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[1] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[1] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md2 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[2] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md2 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[2] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md3 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[3] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md3 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[3] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md4 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[4] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md4 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[4] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md5 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[5] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md5 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[5] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md6 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[6] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md6 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[6] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md7 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[7] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md7 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[7] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md8 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[8] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md8 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[8] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md9 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[9] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md9 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[9] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md10 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[10] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md10 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[10] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md11 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[11] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md11 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[11] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md12 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[12] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md12 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[12] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md13 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[13] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md13 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[13] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md14 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[14] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md14 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[14] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md15 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to md[15] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md15 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE ON -to md[15] -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA12" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[12]" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA11" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[11]" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA10" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[10]" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA0" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[0]" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA1" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[1]" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA2" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[2]" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA3" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[3]" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA4" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[4]" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA5" -entity sp2_acex -set_instance_assignment -name IMPLEMENT_AS_OUTPUT_OF_LOGIC_CELL ON -to "video2:SVIDEO|SVA[5]" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to v_cs0 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to v_cs[0] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to v_cs1 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to v_cs[1] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD00 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[00] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD01 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[01] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD02 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[02] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD03 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[03] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD04 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[04] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD05 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[05] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD06 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[06] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD07 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[07] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD10 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[10] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD11 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[11] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD12 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[12] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD13 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[13] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD14 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[14] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD15 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[15] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD16 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[16] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD17 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[17] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD20 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[20] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD21 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[21] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD22 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[22] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD23 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[23] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD24 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[24] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD25 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[25] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD26 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[26] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD27 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[27] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD30 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[30] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD31 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[31] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD32 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[32] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD33 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[33] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD34 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[34] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD35 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[35] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD36 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[36] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD37 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VD[37] -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to CLKZ1 -entity sp2_acex -set_instance_assignment -name SLOW_SLEW_RATE OFF -to CLKZ[1] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC00" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC[00]" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC01" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC[01]" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC02" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC[02]" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC03" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC[03]" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC04" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC[04]" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC05" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC[05]" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC06" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC[06]" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC07" -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to "video2:SVIDEO|D_PIC[07]" -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA0 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA0 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[0] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[0] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA1 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA1 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[1] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[1] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA2 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA2 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[2] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[2] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA3 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA3 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[3] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[3] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA4 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA4 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[4] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[4] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA5 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA5 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[5] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[5] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA6 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA6 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[6] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[6] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA7 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA7 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[7] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[7] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA8 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA8 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[8] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[8] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA9 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA9 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[9] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[9] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA10 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA10 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[10] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[10] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA11 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA11 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[11] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[11] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA12 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA12 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[12] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[12] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA13 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA13 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[13] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[13] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA14 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA14 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[14] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[14] -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA15 -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA15 -entity sp2_acex -set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to VA[15] -entity sp2_acex -set_instance_assignment -name FAST_INPUT_REGISTER ON -to VA[15] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to V_WR0 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to V_WR[0] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to V_WR1 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to V_WR[1] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to V_WR2 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to V_WR[2] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to V_WR3 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to V_WR[3] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA0 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[0] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA1 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[1] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA2 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[2] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA3 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[3] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA4 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[4] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA5 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[5] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA6 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[6] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA7 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[7] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA8 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[8] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA9 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[9] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA10 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[10] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA11 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[11] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA12 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[12] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA13 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[13] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA14 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[14] -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA15 -entity sp2_acex -set_instance_assignment -name INSERT_ADDITIONAL_LOGIC_CELL OFF -to VA[15] -entity sp2_acex -set_global_assignment -name FLEX10K_DEVICE_IO_STANDARD LVTTL/LVCMOS -set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE OFF -set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES ON -set_global_assignment -name AUTO_RESTART_CONFIGURATION ON -set_global_assignment -name ENABLE_VREFB_PIN OFF -set_global_assignment -name ENABLE_VREFA_PIN OFF -set_global_assignment -name MAX7000B_VCCIO_IOBANK2 3.3V -set_global_assignment -name MAX7000B_VCCIO_IOBANK1 3.3V -set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE OFF -set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF -set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE OFF -set_global_assignment -name ENABLE_JTAG_BST_SUPPORT OFF -set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT OFF -set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F -set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF -set_global_assignment -name ENABLE_DEVICE_WIDE_OE OFF -set_global_assignment -name ENABLE_DEVICE_WIDE_RESET OFF -set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name USER_START_UP_CLOCK OFF -set_global_assignment -name SECURITY_BIT OFF -set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE AREA -set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE AREA -set_global_assignment -name AUTO_IMPLEMENT_IN_ROM OFF -set_global_assignment -name AUTO_OPEN_DRAIN_PINS ON -set_global_assignment -name STATE_MACHINE_PROCESSING AUTO -set_global_assignment -name AUTO_PACKED_REGISTERS OFF -set_global_assignment -name AUTO_FAST_INPUT_REGISTERS OFF -set_global_assignment -name AUTO_FAST_OUTPUT_REGISTERS OFF -set_global_assignment -name AUTO_GLOBAL_OE ON -set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS ON -set_global_assignment -name AUTO_GLOBAL_CLOCK ON -set_global_assignment -name SMART_RECOMPILE OFF -set_global_assignment -name SAVE_DISK_SPACE ON -set_global_assignment -name SIMULATION_MODE TIMING -set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES OFF -section_id eda_design_synthesis -set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id eda_design_synthesis -set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id eda_design_synthesis -set_global_assignment -name END_TIME "12 us" -set_global_assignment -name START_TIME "0 ns" -set_global_assignment -name GLITCH_INTERVAL "0 ns" -set_global_assignment -name GLITCH_DETECTION OFF -set_global_assignment -name CHECK_OUTPUTS OFF -set_global_assignment -name SETUP_HOLD_DETECTION OFF -set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS OFF -set_global_assignment -name NUMBER_OF_SOURCES_PER_DESTINATION_TO_REPORT 10 -set_global_assignment -name EXCLUDE_TPD_PATHS_LESS_THAN "0 ns" -set_global_assignment -name AUTO_LCELL_INSERTION ON -entity sp2_acex \ No newline at end of file diff --git a/src/altera/quartus/acex/SP2_ACEX.qws b/src/altera/quartus/acex/SP2_ACEX.qws deleted file mode 100644 index f0c6eaa..0000000 --- a/src/altera/quartus/acex/SP2_ACEX.qws +++ /dev/null @@ -1,18 +0,0 @@ -[ProjectWorkspace] -ptn_Child1=Frames -[ProjectWorkspace.Frames] -ptn_Child1=ChildFrames -[ProjectWorkspace.Frames.ChildFrames] -ptn_Child1=Document-0 -ptn_Child2=Document-1 -ptn_Child3=Document-2 -[ProjectWorkspace.Frames.ChildFrames.Document-2] -ptn_Child1=ViewFrame-0 -[ProjectWorkspace.Frames.ChildFrames.Document-2.ViewFrame-0] -DocPathName=KBD_INI2.MIF -DocumentCLSID={0b720e69-67da-11d0-bf4f-0000c08cb0c0} -IsChildFrameDetached=False -IsActiveChildFrame=True -ptn_Child1=StateMap -[ProjectWorkspace.Frames.ChildFrames.Document-2.ViewFrame-0.StateMap] -AFC_IN_REPORT=False diff --git a/src/altera/quartus/acex/VIDEO2.ACF b/src/altera/quartus/acex/VIDEO2.ACF deleted file mode 100644 index 57d4f1c..0000000 --- a/src/altera/quartus/acex/VIDEO2.ACF +++ /dev/null @@ -1,588 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP video2 -BEGIN - DEVICE = AUTO; -END; - -DEFAULT_DEVICES -BEGIN - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; - AUTO_DEVICE = EP1K30TC144-1; - AUTO_DEVICE = EP1K30QC208-1; - AUTO_DEVICE = EP1K30FC256-1; - AUTO_DEVICE = EP1K50TC144-1; - AUTO_DEVICE = EP1K50QC208-1; - AUTO_DEVICE = EP1K50FC256-1; - AUTO_DEVICE = EP1K50FC484-1; - AUTO_DEVICE = EP1K100QC208-1; - AUTO_DEVICE = EP1K100FC256-1; - AUTO_DEVICE = EP1K100FC484-1; -END; - -TIMING_POINT -BEGIN - MAINTAIN_STABLE_SYNTHESIS = ON; - DEVICE_FOR_TIMING_SYNTHESIS = EP1K30FC256-3; - CUT_ALL_BIDIR = ON; - CUT_ALL_CLEAR_PRESET = ON; - FREQUENCY = 200MHz; -END; - -IGNORED_ASSIGNMENTS -BEGIN - IGNORE_CLIQUE_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - FIT_IGNORE_TIMING = OFF; -END; - -LOGIC_OPTIONS -BEGIN - |VAO15 : FAST_IO = ON; - |VAO14 : FAST_IO = ON; - |VAO13 : FAST_IO = ON; - |VAO12 : FAST_IO = ON; - |VAO11 : FAST_IO = ON; - |VAO10 : FAST_IO = ON; - |VAO9 : FAST_IO = ON; - |VAO8 : FAST_IO = ON; - |VAO7 : FAST_IO = ON; - |VAO6 : FAST_IO = ON; - |VAO5 : FAST_IO = ON; - |VAO4 : FAST_IO = ON; - |VAO3 : FAST_IO = ON; - |VAO2 : FAST_IO = ON; - |VAO1 : FAST_IO = ON; - |VAO0 : FAST_IO = ON; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - RESERVED_LCELLS_PERCENT = 0; - RESERVED_PINS_PERCENT = 0; - SECURITY_BIT = OFF; - USER_CLOCK = OFF; - AUTO_RESTART = OFF; - RELEASE_CLEARS = OFF; - ENABLE_DCLK_OUTPUT = OFF; - DISABLE_TIME_OUT = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - FLEX8000_ENABLE_JTAG = OFF; - DATA0 = RESERVED_TRI_STATED; - DATA1_TO_DATA7 = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - RDYnBUSY = UNRESERVED; - RDCLK = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - ADD0_TO_ADD12 = UNRESERVED; - ADD13 = UNRESERVED; - ADD14 = UNRESERVED; - ADD15 = UNRESERVED; - ADD16 = UNRESERVED; - ADD17 = UNRESERVED; - CLKUSR = UNRESERVED; - nCEO = UNRESERVED; - ENABLE_CHIP_WIDE_RESET = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_INIT_DONE_OUTPUT = OFF; - FLEX10K_JTAG_USER_CODE = 7F; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - MAX7000S_USER_CODE = FFFF; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_ENABLE_JTAG = ON; - MULTIVOLT_IO = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - FLEX6000_ENABLE_JTAG = OFF; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - MAX7000AE_USER_CODE = FFFFFFFF; - MAX7000AE_ENABLE_JTAG = ON; - FLEX_CONFIGURATION_EPROM = AUTO; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_ENABLE_VREFB = OFF; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - OPTIMIZE_FOR_SPEED = 5; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - AUTO_GLOBAL_CLOCK = ON; - AUTO_GLOBAL_CLEAR = ON; - AUTO_GLOBAL_PRESET = ON; - AUTO_GLOBAL_OE = ON; - AUTO_FAST_IO = OFF; - DEVICE_FAMILY = ACEX1K; - AUTO_REGISTER_PACKING = OFF; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - STYLE = FAST; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - USE_QUARTUS_FITTER = ON; - DESIGN_DOCTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - TIMING_SNF_EXTRACTOR = ON; - OPTIMIZE_TIMING_SNF = OFF; - LINKED_SNF_EXTRACTOR = OFF; - RPT_FILE_EQUATIONS = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_USER_ASSIGNMENTS = ON; - GENERATE_AHDL_TDO_FILE = OFF; - SMART_RECOMPILE = OFF; - FITTER_SETTINGS = NORMAL; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - EDIF_NETLIST_WRITER = OFF; - EDIF_OUTPUT_VERSION = 200; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_GENERATE_AHDL_TDX_FILE = ON; - VERILOG_NETLIST_WRITER = OFF; - VHDL_NETLIST_WRITER = OFF; - USE_SYNOPSYS_SYNTHESIS = OFF; - SYNOPSYS_COMPILER = DESIGN; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - VHDL_READER_VERSION = VHDL87; - VHDL_WRITER_VERSION = VHDL87; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_FLATTEN_BUS = OFF; - VHDL_FLATTEN_BUS = OFF; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - EDIF_INPUT_LMF1 = *.lmf; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_OUTPUT_GND = GND; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_FLATTEN_BUS = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - RIPPLE_CLOCKS = ON; - GATED_CLOCKS = ON; - MULTI_LEVEL_CLOCKS = ON; - MULTI_CLOCK_NETWORKS = ON; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - PRESET_CLEAR_NETWORKS = ON; - ASYNCHRONOUS_INPUTS = ON; - DELAY_CHAINS = ON; - RACE_CONDITIONS = ON; - EXPANDER_NETWORKS = ON; - MASTER_RESET = OFF; -END; - -SIMULATOR_CONFIGURATION -BEGIN - CHECK_OUTPUTS = OFF; - USE_DEVICE = OFF; - SETUP_HOLD = OFF; - OSCILLATION = OFF; - OSCILLATION_TIME = 0.0ns; - GLITCH = OFF; - GLITCH_TIME = 0.0ns; - START_TIME = 0.0ns; - BIDIR_PIN = STRONG; - END_TIME = 10.0us; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - AUTO_RECALCULATE = OFF; - CUT_OFF_IO_PIN_FEEDBACK = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - LIST_ONLY_LONGEST_PATH = ON; - CELL_WIDTH = 18; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - INCLUDE_PATHS_GREATER_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - LIST_PATH_COUNT = 10; - LIST_PATH_FREQUENCY = 10MHz; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - EXPLICIT_FAMILY = 1; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - ROW_PINS_PERCENT = 50; - EXP_PER_LCELL_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - FLEX_10K_52_COLUMNS = 40; - NORMAL_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - ROW_PINS_LCELL_INSERT = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = FULL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = ON; - SUBFACTOR_EXTRACTION = ON; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = FULL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = ON; - SUBFACTOR_EXTRACTION = ON; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = FULL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = 2; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = 32; - MINIMIZATION = FULL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = ON; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = ON; - SUBFACTOR_EXTRACTION = ON; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - MINIMIZATION = FULL; - CASCADE_CHAIN = IGNORE; - CARRY_CHAIN = IGNORE; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - MINIMIZATION = FULL; - CASCADE_CHAIN = IGNORE; - CARRY_CHAIN = IGNORE; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - REGISTER_OPTIMIZATION = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - MINIMIZATION = FULL; - CASCADE_CHAIN = IGNORE; - CARRY_CHAIN = IGNORE; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = ON; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - IGNORE_SOFT_BUFFERS = ON; - MINIMIZATION = FULL; - CASCADE_CHAIN = AUTO; - CARRY_CHAIN = AUTO; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = ON; - SUBFACTOR_EXTRACTION = ON; - MULTI_LEVEL_FACTORING = ON; - RESYNTHESIZE_NETWORK = ON; - REGISTER_OPTIMIZATION = ON; - CASCADE_CHAIN_LENGTH = 2; - CARRY_CHAIN_LENGTH = 32; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = PARTIAL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = OFF; - DECOMPOSE_GATES = OFF; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = PARTIAL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = OFF; - DECOMPOSE_GATES = OFF; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - CASCADE_CHAIN = IGNORE; - CASCADE_CHAIN_LENGTH = -1; - CARRY_CHAIN = IGNORE; - CARRY_CHAIN_LENGTH = -1; - MINIMIZATION = PARTIAL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = ON; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = OFF; - FAST_IO = OFF; - SOFT_BUFFER_INSERTION = OFF; - DECOMPOSE_GATES = ON; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - CASCADE_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CARRY_CHAIN = MANUAL; - CARRY_CHAIN_LENGTH = 32; - MINIMIZATION = PARTIAL; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = OFF; - TURBO_BIT = OFF; - PARALLEL_EXPANDERS = OFF; - IGNORE_SOFT_BUFFERS = ON; - SOFT_BUFFER_INSERTION = ON; - DECOMPOSE_GATES = OFF; - REDUCE_LOGIC = OFF; - DUPLICATE_LOGIC_EXTRACTION = OFF; - NOT_GATE_PUSH_BACK = ON; - REFACTORIZATION = OFF; - SUBFACTOR_EXTRACTION = OFF; - MULTI_LEVEL_FACTORING = OFF; - RESYNTHESIZE_NETWORK = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - REGISTER_OPTIMIZATION = OFF; -END; - diff --git a/src/altera/quartus/acex/VIDEO2.INC b/src/altera/quartus/acex/VIDEO2.INC deleted file mode 100644 index 1c5f796..0000000 --- a/src/altera/quartus/acex/VIDEO2.INC +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. - --- MAX+plus II Include File --- Version 10.0 9/14/2000 --- Created: Mon Nov 19 00:36:42 2001 - -FUNCTION video2 (clk42, start_up, copy_sinc_h, copy_sinc_v, wr, vai[19..0], d[7..0], mdi[15..0], vdm0[7..0], vdm1[7..0], vdm2[7..0], vdm3[7..0], zx_port[7..0], dir_port[7..0], double_cas, mouse_x[9..0], mouse_y[9..0]) - WITH (MODE, MOUSE) - RETURNS (ct[5..0], cth[5..0], ctv[8..0], ctf[6..0], blank, vao[15..0], vdo0[7..0], vdo1[7..0], vdo2[7..0], vdo3[7..0], v_wr[3..0], v_wen[3..0], v_cs[1..0], wr_pix, intt); diff --git a/src/altera/quartus/acex/VIDEO2.TDF b/src/altera/quartus/acex/VIDEO2.TDF deleted file mode 100644 index c5b0fc4..0000000 --- a/src/altera/quartus/acex/VIDEO2.TDF +++ /dev/null @@ -1,692 +0,0 @@ - - TITLE "Video-controller"; - -INCLUDE "lpm_ram_dp"; - -PARAMETERS - ( - MODE = "SPRINTER", - MOUSE = "NO", - HOR_PLACE = H"50", - VER_PLACE = H"91" -- 122h/2 - ); - -SUBDESIGN video2 - ( - CLK42 : INPUT; - - CT[5..0] : OUTPUT; - CTH[5..0] : OUTPUT; - CTV[8..0] : OUTPUT; - CTF[6..0] : OUTPUT; - - BLANK : OUTPUT; - - START_UP : INPUT; - COPY_SINC_H : INPUT; - COPY_SINC_V : INPUT; - - WR : INPUT; - - VAI[19..0] : INPUT; -- input screen adress - - VAO[15..0] : OUTPUT; - - D[7..0] : INPUT; - MDI[15..0] : INPUT; - - VDO0[7..0] : OUTPUT; - VDO1[7..0] : OUTPUT; - VDO2[7..0] : OUTPUT; - VDO3[7..0] : OUTPUT; - - VDM0[7..0] : INPUT; - VDM1[7..0] : INPUT; - VDM2[7..0] : INPUT; - VDM3[7..0] : INPUT; - - V_WR[3..0] : OUTPUT; - V_WEN[3..0] : OUTPUT; - - V_CS[1..0] : OUTPUT; - WR_PIX : OUTPUT; - --- ZX_COLOR[3..0] : OUTPUT; - - ZX_PORT[7..0] : INPUT; - DIR_PORT[7..0] : INPUT; - -% - bit0 - Spectrum SCREEN Switch - bit1 - Spectrum Adress MODE - bit2 - Write to Spectrum Screen OFF - bit3 - MODE page 0/1 - bit4 - MODE on/off screen - - bit7..5 - Border -% - - INTT : OUTPUT; - - DOUBLE_CAS : INPUT; - - MOUSE_X[9..0] : INPUT; - MOUSE_Y[9..0] : INPUT; - - - ) -VARIABLE - --- CLK84 : NODE; --- CLK84_X : NODE; --- CLK84_Y : NODE; - - ZX_COLOR[3..0] : NODE; - - CT[5..0] : DFFE; - CTH[5..0] : DFFE; - CTV[8..0] : DFFE; - CTF[6..0] : DFF; - - VXA[19..0] : DFFE; - - VXD0[7..0] : DFFE; - VXD1[7..0] : DFFE; - VXD2[7..0] : DFFE; - VXD3[7..0] : DFFE; - - E_WR : NODE; - E_WRD : NODE; - - BLANK : NODE; - BORD : NODE; --- INTT_T : NODE; - INTTX : NODE; - - VLA[17..0] : DFF; --- SVA[17..0] : NODE; - SVA[17..0] : DFF; --- RSVA[8..0] : LCELL; - RSVA[8..0] : NODE; --- RSVA[8..0] : DFF; - - V_CST[1..0] : DFF; - VCM[2..0] : DFF; - TSN_W3 : DFF; - V_WE : DFF; - V_WEX : DFF; - - V_WEM : NODE; - V_WEM2 : NODE; - V_WRM : NODE; - V_WRM2 : NODE; - - V_WEMM : NODE; - V_WEMMM : NODE; - V_WEMMN : NODE; - V_WEMMO : NODE; - V_WET[3..0] : DFF; - - D_PIC0[7..0] : DFFE; --- D_PIC0_[7..0] : LCELL; - - D_PIC0_[7..0] : DFFE; - D_PIC1_[7..0] : DFFE; - D_PIC2_[7..0] : DFFE; - D_PIC3_[7..0] : DFFE; - - D_PICX_[7..0] : NODE; - - LWR_PIC : NODE; - LWR_COL : NODE; - - WR_PIC : DFF; - WR_COL : DFF; - LD_PIC : NODE; -MXL: NODE; -MXR: NODE; - - RBRVA[10..8]: DFF; - BRVA[7..0] : DFF; - DCOL[7..0] : DFFE; - - MXWE : NODE; --- MXCE : NODE; - - AX128 : NODE; - - BRD[2..0] : NODE; - - ZX_COL[3..0] : LCELL; - - ZXA15 : NODE; - ZXS[5..0] : NODE; - ZX_SCREEN : NODE; - SCR128 : NODE; - - MODE0[7..0] : DFFE; - MODE1[7..0] : DFFE; - MODE2[7..0] : DFFE; --- MODE3[7..0] : DFF; - - WR_MODE : DFF; - LWR_MODE : NODE; - X_MODE[7..4]: NODE; - X_MODE_BOND : NODE; - --- M_CTV[2..0] : DFF; --- M_CT[5..3] : DFF; - M_CTV[2..0] : LCELL; - M_CT[5..3] : LCELL; - - DOUBLE : DFFE; - - PIC_CLK : NODE; - - MS_X[9..0] : DFF; - MS_Y[9..0] : DFF; - - MS_POINT : NODE; - MS_POINT2 : NODE; - MS_PNT : NODE; - - MS_DAT : LPM_RAM_DP WITH (LPM_WIDTH=16,LPM_WIDTHAD=8,LPM_FILE="MOUSE.MIF"); - - SCR_ENA : DFFE; - V_WR_[3..0] : LCELL; - V_WEY[3..0] : LCELL; - - V_WE_R : NODE; - - V_CSX[3..0] : NODE; - - V_EN[3..0] : NODE; - - F_WR : NODE; - -BEGIN - - DEFAULTS - WR_MODE.d = VCC; -- WR_MODE2.d = VCC; -- WR_MODE2X.d = VCC; - V_CST[].d = VCC; V_WR[] = VCC; TSN_W3.d = VCC; - V_WE.d = VCC; WR_COL.d = VCC; WR_PIC.d = VCC; - V_WET[].d = VCC; - END DEFAULTS; - - ZX_COLOR[] = ZX_COL[]; - --- === MOUSE counters ======== - - MS_X[].clk = !CT1; - CASE LCELL(CTH[5..2] == 12) IS - WHEN 0 => MS_X[] = MS_X[] + 1; - WHEN 1 => MS_X[] = (!MOUSE_X[9..0]); - END CASE; - - MS_Y[].clk = !CTH5; - CASE LCELL(CTV8 & !CTV5 & CTV4) IS - WHEN 0 => MS_Y[] = MS_Y[] + 1; - WHEN 1 => MS_Y[] = (GND,!MOUSE_Y[8..0]); - END CASE; - - MS_PNT = DFF(((MS_X[] == B"100000XXXX") & (MS_Y[] == B"100000XXXX")),CLK42,,); - - MS_DAT.wren = GND; - MS_DAT.data[] = GND; - MS_DAT.wraddress[] = GND; - MS_DAT.wrclock = CLK42; - MS_DAT.wrclken = GND; - MS_DAT.rden = VCC; - MS_DAT.rdaddress[] = (MS_Y[3..0],MS_X[3..0]); - MS_DAT.rdclock = CLK42; - MS_DAT.rdclken = VCC; - - IF MOUSE == "NO" GENERATE - MS_POINT = GND; - MS_POINT2 = GND; - ELSE GENERATE - MS_POINT = DFF((MS_PNT & MS_DAT.q0),CLK42,,); - MS_POINT2 = DFF((MS_PNT & MS_DAT.q1),CLK42,,); - END GENERATE; - --- === Sinc-counts GENERATOR ============================================ - --- CT[].clrn = START_UP; - --- (,CTH[5..0].clrn,CT[5].clrn) = !COPY_SINC_H or HOR_PLACE; --- (,CTH[5..0].prn ,CT[5].prn ) = !COPY_SINC_H or !HOR_PLACE; - --- CTV[].clrn = !COPY_SINC_V or VER_PLACE; --- CTV[].prn = !COPY_SINC_V or !VER_PLACE; - - CT[5].clrn = !COPY_SINC_H; - - -- set CTH to 50 (32h) - CTH[0].clrn = !COPY_SINC_H; - CTH[1].prn = !COPY_SINC_H; - CTH[2].clrn = !COPY_SINC_H; - CTH[3].clrn = !COPY_SINC_H; - CTH[4].prn = !COPY_SINC_H; - CTH[5].prn = !COPY_SINC_H; - - -- set CTV to 122h - CTV[0].clrn = !COPY_SINC_V; - CTV[1].prn = !COPY_SINC_V; - CTV[3..2].clrn = !COPY_SINC_V; - - CTV[4].clrn = !COPY_SINC_V; - CTV[5].prn = !COPY_SINC_V; - CTV[7..6].clrn = !COPY_SINC_V; - CTV[8].prn = !COPY_SINC_V; - - CT[5..0].clk = CLK42; - CTH[5..0].clk = CLK42; - CTV[8..0].clk = CLK42; - - CT[2..0].ena = VCC; - - CASE CT[2..0] IS - WHEN 0 => CT[2..0] = 1; - WHEN 1 => CT[2..0] = 2; - WHEN 2 => CT[2..0] = 4; - WHEN 3 => CT[2..0] = 4; - WHEN 4 => CT[2..0] = 5; - WHEN 5 => CT[2..0] = 6; - WHEN 6 => CT[2..0] = 0; - WHEN 7 => CT[2..0] = 0; - END CASE; - - -- for remove sinc jitter --- CT[5..3].ena = DFF(((CT0 & CT2) or (COPY_SINC_H & !CT4)),CLK42,,); - CT[5..3].ena = DFF((CT0 & CT2),CLK42,,); - CT[5..3] = CT[5..3]+1; -% - CASE CT[4..3] IS - WHEN 0 => CT[5..3] = CT[5..3]+1; - WHEN 1 => CT[5..3] = CT[5..3]+1; - WHEN 2 => CT[5..3] = CT[5..3]+1; - WHEN 3 => CT[5..3] = CT[5..3]+1; - END CASE; -% - CTH[].ena = DFF(((CT[5..2] == 15) & CT0),CLK42,,); - CTV[].ena = DFF(((CT[5..2] == 15) & CT0 & (CTH[] == 48)),CLK42,,); - - IF CTH[] == 55 THEN - CTH[] = GND; - ELSE - CTH[] = CTH[] + 1; - END IF; - - IF CTV[] == 319 THEN - CTV[] = GND; - ELSE - CTV[] = CTV[] + 1; - END IF; - - CTF[].clk = CTV8; - CTF[] = CTF[]+1; - --- ==== Video ========================================================== - - ZXS[] = ZX_PORT[5..0]; -- pages ZX Screens - ZX_SCREEN = ZX_PORT6; -- enable ZX Screen write - ZXA15 = ZX_PORT7; -- ZX A15' line - - SCR128 = DIR_PORT0; - --- WR_PIX = LCELL(TSN_W3); - WR_PIX = (TSN_W3); - - DOUBLE.clk = CLK42; DOUBLE.ena = !E_WR; DOUBLE = DOUBLE_CAS; - VXA[].clk = CLK42; VXA[].ena = !E_WR; - - VXD0[].clk = CLK42; VXD0[].ena = !E_WRD; VDO0[] = VXD0[]; - VXD1[].clk = CLK42; VXD1[].ena = !E_WRD; VDO1[] = VXD1[]; - VXD2[].clk = CLK42; VXD2[].ena = !E_WRD; VDO2[] = VXD2[]; - VXD3[].clk = CLK42; VXD3[].ena = !E_WRD; VDO3[] = VXD3[]; - --- VXD0[] = D[]; --- VXD1[] = D[]; --- VXD2[] = D[]; --- VXD3[] = D[]; - - (VXD0[],VXD1[]) = MDI[]; - (VXD2[],VXD3[]) = MDI[]; - - BRD[] = DIR_PORT[7..5]; - - VCM[].clk = CLK42; - TSN_W3.clk = CLK42; - V_CST[].clk = CLK42; - V_WE.clk = CLK42; - V_WET[].clk = CLK42; - VLA[].clk = CLK42; - - SCR_ENA.clk = CLK42; - SCR_ENA.ena = !E_WR; - SCR_ENA.d = !(VAI19 or ZX_SCREEN); - - E_WRD = DFF(E_WR,CLK42,,); - E_WR = LCELL(WR or !(VAI19 or ZX_SCREEN) or !DFF(WR,CLK42,,)); --- E_WR = LCELL(WR or !DFF(WR,CLK42,,)); - --- **************************************************** - -IF MODE == "SPRINTER" GENERATE - --- VAI[19] - switch adress mode 1 - graf mode, 0 - spectrum mode - --- MXWE = DFF(((DFF(E_WR,CLK42,,) or SCR_ENA) & MXWE),CLK42,,V_WE); - MXWE = DFF(MXWE,CLK42,E_WR,V_WE); - - IF VAI[19] THEN - -- in graf mode all 256k(512k) range - VXA[] = VAI[]; - ELSE - -- in spectrum mode 8k/16k range pages - VXA[] = (GND,GND,VAI[7..0],ZXS[4..1],LCELL(ZXS0 xor ZXA15 xor VAI13),VAI[12..8]); - END IF; - --- BORD = DFF((MODE0[7..4] == 15),WR_PIC,,); --- BLANK = DFF((BORD & MODE03 & MODE02),WR_PIC,,); --- INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),WR_PIC,,); - - BORD = DFF((MODE0[7..4] == 15),LWR_COL,,); - BLANK = DFF(((BORD & MODE03 & MODE02) or DIR_PORT4),LWR_COL,,); - INTTX = DFF((BORD & MODE03 & MODE02 & MODE00),LWR_COL,,); - - INTT = DFF(!(INTTX & (CTV[2..0] == 7)),CT5,,); - --- INTT = DFF((INTTX or DFF(INTTX,CT5,,)),CT5,,); --- INTT = DFF(!(BLANK & (CTV[2..0] == 7)),CLK42,,MODE0[0]); - - CASE CT[2..0] IS - WHEN B"110" => VCM[2..0].d = 5; -- 110 -> 101 6 -> 5 - WHEN B"000" => VCM[2..0].d = 1; -- 000 -> 001 0 -> 1 - WHEN B"001" => VCM[2..0].d = 4; -- 001 -> 100 1 -> 4 - WHEN B"010" => VCM[2..0].d = 3; -- 010 -> 011 2 -> 3 - WHEN B"100" => VCM[2..0].d = 2; -- 100 -> 010 4 -> 2 - WHEN B"101" => VCM[2..0].d = 0; -- 101 -> 000 5 -> 0 - END CASE; - - CASE VCM[1..0] IS - WHEN 0 => - VLA[].d = (BRVA[7..0],VCC,VCC,VCC,VCC,VCC,RBRVA[10..8],GND,GND); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - IF VCM2 THEN --- TSN_W3.d = X_MODE5; - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE5); - ELSE - TSN_W3.d = X_MODE_BOND; --- V_CST[].d = (VCC,X_MODE_BOND); - END IF; - WHEN 1 => - WR_PIC.d = !VCM2; - WR_COL.d = VCM2; - VLA[].d = SVA[]; - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - WHEN 2 => - VLA[].d = VXA[17..0]; - V_CST[].d = (!VXA18,VXA18) or MXWE; - V_WE.d = MXWE; - V_WEX.d = GND; - V_WET[].d = MXWE or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - WHEN 3 => --- WR_PIC.d = X_MODE5; --- NEW 26.08.2022, fix bug with first column --- it was reproducing when changes mode 320 -> 640, like any 320px screen squares -> text mode squares - WR_PIC.d = MODE0[5]; - VLA[].d = (DIR_PORT3,CTH[5..0],CT5,VCC,VCC,CTV[8..3],GND,GND); - WR_MODE.d = !(CT[5..3] == B"111") & !(CT4 & CT3 & !MODE0[5]); - V_CST[].d = (VCC,GND); - V_WE.d = VCC; - V_WEX.d = VCC; - END CASE; - --- choose V-RAM komplect - - V_CST1.prn = GND; --- V_CS0.clrn = GND; - V_CST0.prn = (LCELL(DFF(GND,!CLK42,,!V_CST0))); - V_CS1 = VCC; --- V_CS0 = LCELL(V_CST0); - - V_CSX0 = LCELL(!CLK42); - V_CSX1 = LCELL(V_CSX0); - V_CSX2 = LCELL(V_CSX1 & V_CSX0); - V_CSX3 = LCELL(V_CSX2); - --- V_CS0 = V_CSX3; - V_CS0 = GND; - --- ===================== - - SVA[].clk = CLK42; - SVA[9..6] = MODE0[3..0]; --- RSVA[].clk = CLK42; - (SVA[12..10],SVA[5..0]) = RSVA[]; - --- M_CTV[2..0].clk = CLK42; --- M_CT[5..3].clk = CLK42; - M_CTV[2..0] = (!MODE2[2] & CTV[2..0]) or MODE2[2] & (MODE2[1],CTV[2..1]); - M_CT[5..3] = (!MODE2[2] & (CT[5],!CT[4..3])) or MODE2[2] & (MODE2[0],!CT[5..4]); - - CASE (!VCM2,MODE0[4]) IS --- CASE (!VCM1,MODE0[4]) IS - WHEN B"X0" => - -- Graf adress -- - RSVA[] = (M_CTV[2..0],MODE1[2..0],M_CT[5..3]); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = CTV[2..0]; --- SVA[5..0] = (MODE1[2..0],CT5,!CT[4..3]); - WHEN B"01" => - -- ZX-atr adress -- - RSVA[] = (MODE2[2..0],SCR128,VCC,VCC,GND,!MODE0[7..6]); - SVA[17..13] = MODE2[7..3]; - --- SVA[12..10] = MODE2[2..0]; --- SVA[5..0] = (SCR128,VCC,VCC,GND,!MODE0[7..6]); - WHEN B"11" => - -- ZX-pic adress -- - RSVA[] = (MODE1[2..0],SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - SVA[17..13] = MODE1[7..3]; - --- SVA[12..10] = MODE1[2..0]; --- SVA[5..0] = (SCR128,MODE0[7..6],CTV2,!CTV1,!CTV0); - END CASE; - --- X_MODE_BOND = LCELL(LCELL(DCOL[7..4] == 15) & LCELL(DCOL[3..0] == 15) & DFF((MODE0[7] & MODE0[5] & !MODE0[4]),LWR_COL,VCC,VCC)); - X_MODE_BOND = GND; - --- LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); --- LD_PIC = LCELL((MODE0[5] & DFF((CT[5..3] == B"000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - LD_PIC = LCELL((MODE0[5] & DFF((CT[5..2] == B"0000"),CLK42,,)) or (!MODE0[5] & DFF((CT[4..2] == B"000"),CLK42,,))); - - --- CASE (DFF(VLA1,!CLK42,,),DFF(VLA0,!CLK42,,)) IS - --- D_PIC0_[].clk = !CLK42; --- D_PIC1_[].clk = !CLK42; --- D_PIC2_[].clk = !CLK42; --- D_PIC3_[].clk = !CLK42; - --- PIC_CLK = LCELL(LCELL(CLK42)); - PIC_CLK = !CLK42; - - D_PIC0_[].clk = PIC_CLK; - D_PIC1_[].clk = PIC_CLK; - D_PIC2_[].clk = PIC_CLK; - D_PIC3_[].clk = PIC_CLK; - - D_PIC0_[] = VDM0[]; - D_PIC1_[] = VDM1[]; - D_PIC2_[] = VDM2[]; - D_PIC3_[] = VDM3[]; - - CASE (DFF(VLA1,CLK42,,),DFF(VLA0,CLK42,,)) IS - WHEN 0 => D_PICX_[] = D_PIC0_[]; - WHEN 1 => D_PICX_[] = D_PIC1_[]; - WHEN 2 => D_PICX_[] = D_PIC2_[]; - WHEN 3 => D_PICX_[] = D_PIC3_[]; - END CASE; - - MODE0[].ena = VCC; - MODE1[].ena = VCC; - MODE2[].ena = VCC; - MODE0[].clk = LWR_MODE; - MODE1[].clk = LWR_MODE; - MODE2[].clk = LWR_MODE; - MODE0[].d = VDM3[]; - MODE1[].d = VDM2[]; - MODE2[].d = VDM1[]; - LWR_MODE = LCELL(LCELL(WR_MODE)); -% - MODE0[].ena = LWR_MODE; - MODE1[].ena = LWR_MODE; - MODE2[].ena = LWR_MODE; - MODE0[].clk = CLK42; - MODE1[].clk = CLK42; - MODE2[].clk = CLK42; - MODE0[].d = D_PIC3_[]; - MODE1[].d = D_PIC2_[]; - MODE2[].d = D_PIC1_[]; - LWR_MODE = DFF(!WR_MODE,CLK42,,); -% - X_MODE7 = DFF(MODE0[7],LWR_COL,,); - X_MODE6 = DFF(MODE0[6],LWR_COL,,); - X_MODE5 = DFF(MODE0[5],LWR_COL,,); - X_MODE4 = DFF(MODE0[4],LWR_COL,,); - - VAO[] = VLA[17..2]; - - WR_PIC.clk = CLK42; - WR_COL.clk = CLK42; - WR_MODE.clk = CLK42; - --- LWR_PIC = LCELL(LCELL(WR_PIC)); --- LWR_COL = LCELL(LCELL(WR_COL)); --- LWR_PIC = LCELL(WR_PIC); --- LWR_COL = LCELL(WR_COL); - LWR_PIC = DFF(WR_PIC,CLK42,,); - LWR_COL = DFF(WR_COL,CLK42,,); - --- D_PIC0[].ena = VCC; --- D_PIC0[].clk = (LWR_PIC); - D_PIC0[].ena = !LWR_PIC; - D_PIC0[].clk = CLK42; - - - - - IF LD_PIC THEN --- D_PIC0[] = D_PIC0_[]; - D_PIC0[] = D_PICX_[]; - ELSE - D_PIC0[] = (D_PIC0[6..0],GND); - END IF; - - --- DCOL[].clk = (LWR_COL); - DCOL[].ena = !LWR_COL; - DCOL[].clk = CLK42; - - IF DFF((MODE0[7..4] == 15),WR_PIC,,) THEN - DCOL[].d = (B"00",BRD[2..0],BRD[2..0]); - ELSE --- DCOL[].d = D_PIC0_[]; - DCOL[].d = D_PICX_[]; - END IF; - - DCOL[].clrn = !BLANK; - - BRVA[].clk = CLK42; - BRVA[].clrn = !MS_POINT; - BRVA[].prn = !MS_POINT2; - --- MODE0[4] - graph / text --- MODE0[5] - 320 / 640 resolution - --- CASE (LCELL(X_MODE4 or X_MODE5),CT2) IS - CASE (DFF((MODE0[4] or MODE0[5]),LWR_COL,,),CT2) IS - WHEN B"1X" => BRVA[7..0] = DCOL[]; - WHEN B"01" => BRVA[7..0] = (B"0000",DCOL[7..4]); - WHEN B"00" => BRVA[7..0] = (B"0000",DCOL[3..0]); - END CASE; - --- BRVA[10..8] = (x_mode4,RBRVA[9..8]); - RBRVA[].clk = CLK42; - - CASE (BORD,X_MODE4) IS - WHEN B"X0" => RBRVA[10..8].d = (GND,X_MODE[7..6]); - WHEN B"X1" => RBRVA[10..8].d = (VCC,(CTF4 & !BLANK),D_PIC0[7]); - END CASE; - - RBRVA[9..8].clrn = !BORD; - RBRVA[10].prn = !BORD; - - CASE (RBRVA[9..8],BRVA7) IS - WHEN 0,1,4,7 => ZX_COL[] = (BRVA[6],BRVA[5..3]); - WHEN 2,3,6,5 => ZX_COL[] = (BRVA[6],BRVA[2..0]); - END CASE; - --- V_WET[].prn = LCELL(DFF(GND,!CLK42,,!V_WE)); --- V_WE.prn = LCELL(DFF(GND,!CLK42,,!V_WE)); - - V_WE_R = DFF(GND,!CLK42,,!V_WE); - V_WE.prn = V_WE_R; - V_WET[].prn = V_WE_R; - --- V_WR[] = LCELL(V_WE) or !((!VXA1 & !VXA0),(!VXA1 & VXA0),(VXA1 & !VXA0),(VXA1 & VXA0)); - --- V_WR[] = (V_WE) or !( - - V_WEX.clk = CLK42; --- V_WEX.d = V_WE; --- V_WEX.prn = (DFF(GND,CLK42,,!V_WEX)); - - - V_WEMMM = LCELL(V_WE); - V_WEMMN = LCELL(V_WEMMM); - V_WEMMO = LCELL(V_WEMMN); - V_WEMM = LCELL(V_WEMMO); - - V_WRM = LCELL(V_WEMMN & V_WEMMM); - V_WRM2 = LCELL(V_WEMMN & V_WEMMM); - - V_WEM = LCELL(V_WEMMM & V_WEMMO); - V_WEM2 = LCELL(V_WEMMM & V_WEMMO); - - V_EN3 = DFF(!(!VXA1 & (!VXA0 or DOUBLE)),CLK42,F_WR,); - V_EN2 = DFF(!(!VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN1 = DFF(!(VXA1 & (!VXA0 or DOUBLE)) ,CLK42,F_WR,); - V_EN0 = DFF(!(VXA1 & (VXA0 or DOUBLE)) ,CLK42,F_WR,); - - F_WR = DFF(VCC,V_WE,,); - - V_WR_3 = V_WRM or V_EN3; - V_WR_2 = V_WRM2 or V_EN2; - V_WR_1 = V_WRM or V_EN1; - V_WR_0 = V_WRM or V_EN0; - - V_WEY3 = V_WEM or V_EN3; - V_WEY2 = V_WEM2 or V_EN2; - V_WEY1 = V_WEM or V_EN1; - V_WEY0 = V_WEM or V_EN0; - - V_WR[] = V_WR_[]; - V_WEN[] = V_WEY[]; - --- CLK84 = LCELL(CLK42 xor CLK84_X); --- CLK84_X = DFF(!CLK84_X,CLK84,,); --- CLK84_Y = CLK84; - -END GENERATE; -- end "sprinter" mode - - -END; diff --git a/src/altera/quartus/acex/db/SP2_ACEX.(0).cnf.cdb b/src/altera/quartus/acex/db/SP2_ACEX.(0).cnf.cdb deleted file mode 100644 index eafe8db..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.(0).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.(0).cnf.hdb b/src/altera/quartus/acex/db/SP2_ACEX.(0).cnf.hdb deleted file mode 100644 index 3ec6d5f..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.(0).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.(1).cnf.cdb b/src/altera/quartus/acex/db/SP2_ACEX.(1).cnf.cdb deleted file mode 100644 index 94c4ef0..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.(1).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.(1).cnf.hdb b/src/altera/quartus/acex/db/SP2_ACEX.(1).cnf.hdb deleted file mode 100644 index e3a0cf0..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.(1).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.(2).cnf.cdb b/src/altera/quartus/acex/db/SP2_ACEX.(2).cnf.cdb deleted file mode 100644 index 2f4b8e7..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.(2).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.(2).cnf.hdb b/src/altera/quartus/acex/db/SP2_ACEX.(2).cnf.hdb deleted file mode 100644 index b1c337a..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.(2).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.(3).cnf.cdb b/src/altera/quartus/acex/db/SP2_ACEX.(3).cnf.cdb deleted file mode 100644 index 2d64609..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.(3).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.(3).cnf.hdb b/src/altera/quartus/acex/db/SP2_ACEX.(3).cnf.hdb deleted file mode 100644 index 2cc0be3..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.(3).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.cbx.xml b/src/altera/quartus/acex/db/SP2_ACEX.cbx.xml deleted file mode 100644 index 5f721b8..0000000 --- a/src/altera/quartus/acex/db/SP2_ACEX.cbx.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/altera/quartus/acex/db/SP2_ACEX.cmp.rdb b/src/altera/quartus/acex/db/SP2_ACEX.cmp.rdb deleted file mode 100644 index b3eee15..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.cmp.rdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.db_info b/src/altera/quartus/acex/db/SP2_ACEX.db_info deleted file mode 100644 index 85d27e7..0000000 --- a/src/altera/quartus/acex/db/SP2_ACEX.db_info +++ /dev/null @@ -1,3 +0,0 @@ -Quartus_Version = Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -Version_Index = 167832322 -Creation_Time = Sun Aug 28 03:32:05 2022 diff --git a/src/altera/quartus/acex/db/SP2_ACEX.eco.cdb b/src/altera/quartus/acex/db/SP2_ACEX.eco.cdb deleted file mode 100644 index 4dfce69..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.eco.cdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.hif b/src/altera/quartus/acex/db/SP2_ACEX.hif deleted file mode 100644 index 2316ce0..0000000 --- a/src/altera/quartus/acex/db/SP2_ACEX.hif +++ /dev/null @@ -1,447 +0,0 @@ -Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -2 -25 -OFF -OFF -OFF -ON -ON -OFF -FV_OFF -Level2 -0 -0 -VRSM_ON -VHSM_ON -0 --- Start Library Paths -- --- End Library Paths -- --- Start VHDL Libraries -- --- End VHDL Libraries -- -# entity -SP2_ACEX -# storage -db|SP2_ACEX.(0).cnf -db|SP2_ACEX.(0).cnf -# case_insensitive -# source_file -SP2_ACEX.tdf -e1a512c7ccb99b9920cc5b6bdd99f78f -7 -# user_parameter { -UPDATE -1 -PARAMETER_UNKNOWN -DEF -MODE -SPRINTER -PARAMETER_UNKNOWN -DEF -NMI_ON -OFF -PARAMETER_UNKNOWN -DEF -SCREEN_OFF -NOT_USE -PARAMETER_UNKNOWN -DEF -} -# used_port { -0 --1 -0 -} -# include_file { -video2.inc -442325f281c69a29c502cd73d5463bd -ay.inc -b7bbf416ab242c30663925c2494dac1c -acceler.inc -ba3f30e8f544b3289c4a8b774427d197 -kbd.inc -d95fc07fdbddf4beead37796f9d8 -dcp.inc -3ad9d1c98b85a6e2fa8234adbe4e62 -mouse.inc -3a5e806a69816f4041b35f81b0afc554 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_ram_dp.inc -654442a54e5e12427dca2ad67c24c46b -} -# hierarchies { -| -} -# macro_sequence - -# end -# entity -MOUSE -# storage -db|SP2_ACEX.(1).cnf -db|SP2_ACEX.(1).cnf -# case_insensitive -# source_file -MOUSE.tdf -94907776ef372fcfb98eeebc359b8f77 -7 -# used_port { -out_y9 --1 -3 -out_y8 --1 -3 -out_y7 --1 -3 -out_y6 --1 -3 -out_y5 --1 -3 -out_y4 --1 -3 -out_y3 --1 -3 -out_y2 --1 -3 -out_y1 --1 -3 -out_y0 --1 -3 -out_x9 --1 -3 -out_x8 --1 -3 -out_x7 --1 -3 -out_x6 --1 -3 -out_x5 --1 -3 -out_x4 --1 -3 -out_x3 --1 -3 -out_x2 --1 -3 -out_x1 --1 -3 -out_x0 --1 -3 -out_k1 --1 -3 -out_k0 --1 -3 -mouse_d --1 -3 -clk --1 -3 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_add_sub.inc -7d9a33dd39f13aa690c3d0edd88351 -} -# hierarchies { -MOUSE:MS -} -# macro_sequence - -# end -# entity -kbd -# storage -db|SP2_ACEX.(2).cnf -db|SP2_ACEX.(2).cnf -# case_insensitive -# source_file -kbd.tdf -afaf2f48afdd456dd44d65de56c873a0 -7 -# used_port { -kbo5 --1 -3 -kbo4 --1 -3 -kbo3 --1 -3 -kbo2 --1 -3 -kbo1 --1 -3 -kbo0 --1 -3 -kbd_dd --1 -3 -kbd_cc --1 -3 -kb_sh --1 -3 -kb_reset --1 -3 -kb_f12 --1 -3 -kb_ctrl --1 -3 -kb_alt --1 -3 -int_ena --1 -3 -int --1 -3 -clk_k --1 -3 -clk42 --1 -3 -a9 --1 -3 -a8 --1 -3 -a15 --1 -3 -a14 --1 -3 -a13 --1 -3 -a12 --1 -3 -a11 --1 -3 -a10 --1 -3 -/rf --1 -3 -/iom --1 -3 -/io --1 -3 -ena --1 -2 -/m1 --1 -2 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_ram_dq.inc -597f4cadef5751f17c6f4540c4ffcc84 -} -# hierarchies { -kbd:KEYS -} -# macro_sequence - -# end -# entity -lpm_ram_dq -# storage -db|SP2_ACEX.(3).cnf -db|SP2_ACEX.(3).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_ram_dq.tdf -7179e8cfd3a5bdbbfbdb2c4f1192e5 -7 -# user_parameter { -LPM_WIDTH -8 -PARAMETER_UNKNOWN -USR -LPM_WIDTHAD -8 -PARAMETER_UNKNOWN -USR -LPM_NUMWORDS -256 -PARAMETER_UNKNOWN -DEF -LPM_INDATA -REGISTERED -PARAMETER_UNKNOWN -DEF -LPM_ADDRESS_CONTROL -REGISTERED -PARAMETER_UNKNOWN -DEF -LPM_OUTDATA -UNREGISTERED -PARAMETER_UNKNOWN -USR -LPM_FILE -KBD_INI2.MIF -PARAMETER_UNKNOWN -USR -USE_EAB -ON -PARAMETER_UNKNOWN -DEF -DEVICE_FAMILY -ACEX1K -PARAMETER_UNKNOWN -USR -CBXI_PARAMETER -NOTHING -PARAMETER_UNKNOWN -DEF -AUTO_CARRY_CHAINS -ON -AUTO_CARRY -USR -IGNORE_CARRY_BUFFERS -OFF -IGNORE_CARRY -USR -AUTO_CASCADE_CHAINS -ON -AUTO_CASCADE -USR -IGNORE_CASCADE_BUFFERS -OFF -IGNORE_CASCADE -USR -} -# used_port { -we --1 -3 -q7 --1 -3 -q6 --1 -3 -q5 --1 -3 -q4 --1 -3 -q3 --1 -3 -q2 --1 -3 -q1 --1 -3 -q0 --1 -3 -inclock --1 -3 -data5 --1 -3 -data4 --1 -3 -data3 --1 -3 -data2 --1 -3 -data1 --1 -3 -data0 --1 -3 -address7 --1 -3 -address6 --1 -3 -address5 --1 -3 -address4 --1 -3 -address3 --1 -3 -address2 --1 -3 -address1 --1 -3 -address0 --1 -3 -data7 --1 -2 -data6 --1 -2 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_decode.inc -bd0e2f5e01c1bd360461dceb53d48 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_mux.inc -c22bfd353214c01495b560fc34e47d79 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|aglobal90.inc -99832fdf63412df51d7531202d74e75 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|altram.inc -e66a83eccf6717bed97c99d891ad085 -} -# hierarchies { -kbd:KEYS|lpm_ram_dq:$00021 -} -# macro_sequence - -# end -# complete - \ No newline at end of file diff --git a/src/altera/quartus/acex/db/SP2_ACEX.map.hdb b/src/altera/quartus/acex/db/SP2_ACEX.map.hdb deleted file mode 100644 index a131a2a..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.map.hdb and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.map.qmsg b/src/altera/quartus/acex/db/SP2_ACEX.map.qmsg deleted file mode 100644 index f131c0c..0000000 --- a/src/altera/quartus/acex/db/SP2_ACEX.map.qmsg +++ /dev/null @@ -1,30 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Analysis & Synthesis Quartus II " "Info: Running Quartus II Analysis & Synthesis" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 15:25:50 2022 " "Info: Processing started: Sun Aug 28 15:25:50 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_map --read_settings_files=on --write_settings_files=off SP2_ACEX -c SP2_ACEX " "Info: Command: quartus_map --read_settings_files=on --write_settings_files=off SP2_ACEX -c SP2_ACEX" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "SP2_ACEX.tdf 1 1 " "Warning: Using design file SP2_ACEX.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 SP2_ACEX " "Info: Found entity 1: SP2_ACEX" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 24 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_TOP" "SP2_ACEX " "Info: Elaborating entity \"SP2_ACEX\" for the top level hierarchy" { } { } 0 0 "Elaborating entity \"%1!s!\" for the top level hierarchy" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "DMD " "Warning: Variable or input pin \"DMD\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 109 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "T_SIGNAL " "Warning: Variable or input pin \"T_SIGNAL\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 147 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "RED " "Warning: Variable or input pin \"RED\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 160 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "GREEN " "Warning: Variable or input pin \"GREEN\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 161 7 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "BLUE " "Warning: Variable or input pin \"BLUE\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 162 6 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "MDR " "Warning: Variable or input pin \"MDR\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 170 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "ISA_CASH " "Warning: Variable or input pin \"ISA_CASH\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 222 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "ROM_WRITE_MODE " "Warning: Variable or input pin \"ROM_WRITE_MODE\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 241 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/HALT " "Warning: Variable or input pin \"/HALT\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 36 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "MOUSE.tdf 1 1 " "Warning: Using design file MOUSE.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 mouse " "Info: Found entity 1: mouse" { } { { "MOUSE.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/MOUSE.tdf" 6 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "MOUSE MOUSE:MS " "Info: Elaborating entity \"MOUSE\" for hierarchy \"MOUSE:MS\"" { } { { "SP2_ACEX.tdf" "MS" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 79 2 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "KB_OFL " "Warning: Variable or input pin \"KB_OFL\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 63 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "kbd.tdf 1 1 " "Warning: Using design file kbd.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 kbd " "Info: Found entity 1: kbd" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 6 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "kbd kbd:KEYS " "Info: Elaborating entity \"kbd\" for hierarchy \"kbd:KEYS\"" { } { { "SP2_ACEX.tdf" "KEYS" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/IOM " "Warning: Variable or input pin \"/IOM\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 15 2 0 } } { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/M1 " "Warning: Variable or input pin \"/M1\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 16 2 0 } } { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "lpm_ram_dq kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborating entity \"lpm_ram_dq\" for hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "kbd.tdf" "\$00021" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborated megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Instantiated megafunction \"kbd:KEYS\|lpm_ram_dq:\$00021\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 8 " "Info: Parameter \"LPM_WIDTH\" = \"8\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTHAD 8 " "Info: Parameter \"LPM_WIDTHAD\" = \"8\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_FILE KBD_INI2.MIF " "Info: Parameter \"LPM_FILE\" = \"KBD_INI2.MIF\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_OUTDATA UNREGISTERED " "Info: Parameter \"LPM_OUTDATA\" = \"UNREGISTERED\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "altram kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram " "Info: Elaborating entity \"altram\" for hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\"" { } { { "lpm_ram_dq.tdf" "sram" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Error" "EMIO_MIO_INVALID_LINE" "KBD_INI2.MIF 13 " "Error: Memory Initialization File or Hexadecimal (Intel-Format) File \"KBD_INI2.MIF\" contains illegal syntax at line 13" { } { { "C:/Sprinter/src/altera/quartus/acex/KBD_INI2.MIF" "" { Text "C:/Sprinter/src/altera/quartus/acex/KBD_INI2.MIF" 13 -1 0 } } } 0 0 "Memory Initialization File or Hexadecimal (Intel-Format) File \"%1!s!\" contains illegal syntax at line %2!d!" 0 0 "" 0 -1} -{ "Critical Warning" "WCDB_CDB_CANT_READ_CONTENT_FILE" "KBD_INI2.MIF " "Critical Warning: Can't read Memory Initialization File or Hexadecimal (Intel-Format) File KBD_INI2.MIF -- setting all initial values to 0" { } { { "altram.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/altram.tdf" 178 13 0 } } } 1 0 "Can't read Memory Initialization File or Hexadecimal (Intel-Format) File %1!s! -- setting all initial values to 0" 0 0 "" 0 -1} -{ "Error" "ESGN_USER_HIER_ELABORATION_FAILURE" "kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram " "Error: Can't elaborate user hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\"" { } { { "lpm_ram_dq.tdf" "sram" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } } 0 0 "Can't elaborate user hierarchy \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborated megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\", which is child of megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "lpm_ram_dq.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Error" "EQEXE_ERROR_COUNT" "Analysis & Synthesis 2 s 16 s Quartus II " "Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 16 warnings" { { "Error" "EQEXE_END_PEAK_VSIZE_MEMORY" "228 " "Error: Peak virtual memory: 228 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Error" "EQEXE_END_BANNER_TIME" "Sun Aug 28 15:25:51 2022 " "Error: Processing ended: Sun Aug 28 15:25:51 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Error" "EQEXE_ELAPSED_TIME" "00:00:01 " "Error: Elapsed time: 00:00:01" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Error" "EQEXE_ELAPSED_CPU_TIME" "00:00:01 " "Error: Total CPU time (on all processors): 00:00:01" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was unsuccessful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/acex/db/SP2_ACEX.sld_design_entry.sci b/src/altera/quartus/acex/db/SP2_ACEX.sld_design_entry.sci deleted file mode 100644 index 100faca..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.sld_design_entry.sci and /dev/null differ diff --git a/src/altera/quartus/acex/db/SP2_ACEX.tis_db_list.ddb b/src/altera/quartus/acex/db/SP2_ACEX.tis_db_list.ddb deleted file mode 100644 index 322a503..0000000 Binary files a/src/altera/quartus/acex/db/SP2_ACEX.tis_db_list.ddb and /dev/null differ diff --git a/src/altera/quartus/acex/db/prev_cmp_SP2_ACEX.map.qmsg b/src/altera/quartus/acex/db/prev_cmp_SP2_ACEX.map.qmsg deleted file mode 100644 index 65bbf1b..0000000 --- a/src/altera/quartus/acex/db/prev_cmp_SP2_ACEX.map.qmsg +++ /dev/null @@ -1,30 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Analysis & Synthesis Quartus II " "Info: Running Quartus II Analysis & Synthesis" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:33:04 2022 " "Info: Processing started: Sun Aug 28 03:33:04 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_map --read_settings_files=on --write_settings_files=off SP2_ACEX -c SP2_ACEX " "Info: Command: quartus_map --read_settings_files=on --write_settings_files=off SP2_ACEX -c SP2_ACEX" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "SP2_ACEX.tdf 1 1 " "Warning: Using design file SP2_ACEX.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 SP2_ACEX " "Info: Found entity 1: SP2_ACEX" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 24 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_TOP" "SP2_ACEX " "Info: Elaborating entity \"SP2_ACEX\" for the top level hierarchy" { } { } 0 0 "Elaborating entity \"%1!s!\" for the top level hierarchy" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "DMD " "Warning: Variable or input pin \"DMD\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 109 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "T_SIGNAL " "Warning: Variable or input pin \"T_SIGNAL\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 147 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "RED " "Warning: Variable or input pin \"RED\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 160 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "GREEN " "Warning: Variable or input pin \"GREEN\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 161 7 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "BLUE " "Warning: Variable or input pin \"BLUE\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 162 6 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "MDR " "Warning: Variable or input pin \"MDR\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 170 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "ISA_CASH " "Warning: Variable or input pin \"ISA_CASH\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 222 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "ROM_WRITE_MODE " "Warning: Variable or input pin \"ROM_WRITE_MODE\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 241 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/HALT " "Warning: Variable or input pin \"/HALT\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 36 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "MOUSE.tdf 1 1 " "Warning: Using design file MOUSE.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 mouse " "Info: Found entity 1: mouse" { } { { "MOUSE.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/MOUSE.tdf" 6 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "MOUSE MOUSE:MS " "Info: Elaborating entity \"MOUSE\" for hierarchy \"MOUSE:MS\"" { } { { "SP2_ACEX.tdf" "MS" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 79 2 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "KB_OFL " "Warning: Variable or input pin \"KB_OFL\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 63 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "kbd.tdf 1 1 " "Warning: Using design file kbd.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 kbd " "Info: Found entity 1: kbd" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 6 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "kbd kbd:KEYS " "Info: Elaborating entity \"kbd\" for hierarchy \"kbd:KEYS\"" { } { { "SP2_ACEX.tdf" "KEYS" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/IOM " "Warning: Variable or input pin \"/IOM\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 15 2 0 } } { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/M1 " "Warning: Variable or input pin \"/M1\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 16 2 0 } } { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "lpm_ram_dq kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborating entity \"lpm_ram_dq\" for hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "kbd.tdf" "\$00021" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborated megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Instantiated megafunction \"kbd:KEYS\|lpm_ram_dq:\$00021\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 8 " "Info: Parameter \"LPM_WIDTH\" = \"8\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTHAD 8 " "Info: Parameter \"LPM_WIDTHAD\" = \"8\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_FILE KBD_INI2.MIF " "Info: Parameter \"LPM_FILE\" = \"KBD_INI2.MIF\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_OUTDATA UNREGISTERED " "Info: Parameter \"LPM_OUTDATA\" = \"UNREGISTERED\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "altram kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram " "Info: Elaborating entity \"altram\" for hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\"" { } { { "lpm_ram_dq.tdf" "sram" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Error" "EMIO_MIO_INVALID_LINE" "KBD_INI2.MIF 13 " "Error: Memory Initialization File or Hexadecimal (Intel-Format) File \"KBD_INI2.MIF\" contains illegal syntax at line 13" { } { { "C:/Sprinter/src/altera/quartus/acex/KBD_INI2.MIF" "" { Text "C:/Sprinter/src/altera/quartus/acex/KBD_INI2.MIF" 13 -1 0 } } } 0 0 "Memory Initialization File or Hexadecimal (Intel-Format) File \"%1!s!\" contains illegal syntax at line %2!d!" 0 0 "" 0 -1} -{ "Critical Warning" "WCDB_CDB_CANT_READ_CONTENT_FILE" "KBD_INI2.MIF " "Critical Warning: Can't read Memory Initialization File or Hexadecimal (Intel-Format) File KBD_INI2.MIF -- setting all initial values to 0" { } { { "altram.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/altram.tdf" 178 13 0 } } } 1 0 "Can't read Memory Initialization File or Hexadecimal (Intel-Format) File %1!s! -- setting all initial values to 0" 0 0 "" 0 -1} -{ "Error" "ESGN_USER_HIER_ELABORATION_FAILURE" "kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram " "Error: Can't elaborate user hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\"" { } { { "lpm_ram_dq.tdf" "sram" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } } 0 0 "Can't elaborate user hierarchy \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborated megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\", which is child of megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "lpm_ram_dq.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Error" "EQEXE_ERROR_COUNT" "Analysis & Synthesis 2 s 16 s Quartus II " "Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 16 warnings" { { "Error" "EQEXE_END_PEAK_VSIZE_MEMORY" "228 " "Error: Peak virtual memory: 228 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Error" "EQEXE_END_BANNER_TIME" "Sun Aug 28 03:33:05 2022 " "Error: Processing ended: Sun Aug 28 03:33:05 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Error" "EQEXE_ELAPSED_TIME" "00:00:01 " "Error: Elapsed time: 00:00:01" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Error" "EQEXE_ELAPSED_CPU_TIME" "00:00:01 " "Error: Total CPU time (on all processors): 00:00:01" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was unsuccessful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/acex/db/prev_cmp_SP2_ACEX.qmsg b/src/altera/quartus/acex/db/prev_cmp_SP2_ACEX.qmsg deleted file mode 100644 index 5bbc209..0000000 --- a/src/altera/quartus/acex/db/prev_cmp_SP2_ACEX.qmsg +++ /dev/null @@ -1,31 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Analysis & Synthesis Quartus II " "Info: Running Quartus II Analysis & Synthesis" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:32:19 2022 " "Info: Processing started: Sun Aug 28 03:32:19 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_map --read_settings_files=on --write_settings_files=off SP2_ACEX -c SP2_ACEX " "Info: Command: quartus_map --read_settings_files=on --write_settings_files=off SP2_ACEX -c SP2_ACEX" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "SP2_ACEX.tdf 1 1 " "Warning: Using design file SP2_ACEX.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 SP2_ACEX " "Info: Found entity 1: SP2_ACEX" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 24 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_TOP" "SP2_ACEX " "Info: Elaborating entity \"SP2_ACEX\" for the top level hierarchy" { } { } 0 0 "Elaborating entity \"%1!s!\" for the top level hierarchy" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "DMD " "Warning: Variable or input pin \"DMD\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 109 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "T_SIGNAL " "Warning: Variable or input pin \"T_SIGNAL\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 147 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "RED " "Warning: Variable or input pin \"RED\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 160 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "GREEN " "Warning: Variable or input pin \"GREEN\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 161 7 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "BLUE " "Warning: Variable or input pin \"BLUE\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 162 6 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "MDR " "Warning: Variable or input pin \"MDR\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 170 5 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "ISA_CASH " "Warning: Variable or input pin \"ISA_CASH\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 222 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "ROM_WRITE_MODE " "Warning: Variable or input pin \"ROM_WRITE_MODE\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 241 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/HALT " "Warning: Variable or input pin \"/HALT\" is defined but never used" { } { { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 36 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "MOUSE.tdf 1 1 " "Warning: Using design file MOUSE.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 mouse " "Info: Found entity 1: mouse" { } { { "MOUSE.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/MOUSE.tdf" 6 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "MOUSE MOUSE:MS " "Info: Elaborating entity \"MOUSE\" for hierarchy \"MOUSE:MS\"" { } { { "SP2_ACEX.tdf" "MS" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 79 2 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "KB_OFL " "Warning: Variable or input pin \"KB_OFL\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 63 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "kbd.tdf 1 1 " "Warning: Using design file kbd.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 kbd " "Info: Found entity 1: kbd" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 6 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "kbd kbd:KEYS " "Info: Elaborating entity \"kbd\" for hierarchy \"kbd:KEYS\"" { } { { "SP2_ACEX.tdf" "KEYS" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/IOM " "Warning: Variable or input pin \"/IOM\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 15 2 0 } } { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "/M1 " "Warning: Variable or input pin \"/M1\" is defined but never used" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 16 2 0 } } { "SP2_ACEX.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/SP2_ACEX.tdf" 80 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "lpm_ram_dq kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborating entity \"lpm_ram_dq\" for hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "kbd.tdf" "\$00021" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborated megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Instantiated megafunction \"kbd:KEYS\|lpm_ram_dq:\$00021\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 8 " "Info: Parameter \"LPM_WIDTH\" = \"8\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTHAD 8 " "Info: Parameter \"LPM_WIDTHAD\" = \"8\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_FILE KBD_INI2.MIF " "Info: Parameter \"LPM_FILE\" = \"KBD_INI2.MIF\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_OUTDATA UNREGISTERED " "Info: Parameter \"LPM_OUTDATA\" = \"UNREGISTERED\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_HIERARCHY" "altram kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram " "Info: Elaborating entity \"altram\" for hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\"" { } { { "lpm_ram_dq.tdf" "sram" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } } 0 0 "Elaborating entity \"%1!s!\" for hierarchy \"%2!s!\"" 0 0 "" 0 -1} -{ "Error" "EMIO_MIO_INVALID_LINE" "KBD_INI2.MIF 13 " "Error: Memory Initialization File or Hexadecimal (Intel-Format) File \"KBD_INI2.MIF\" contains illegal syntax at line 13" { } { { "C:/Sprinter/src/altera/quartus/acex/KBD_INI2.MIF" "" { Text "C:/Sprinter/src/altera/quartus/acex/KBD_INI2.MIF" 13 -1 0 } } } 0 0 "Memory Initialization File or Hexadecimal (Intel-Format) File \"%1!s!\" contains illegal syntax at line %2!d!" 0 0 "" 0 -1} -{ "Critical Warning" "WCDB_CDB_CANT_READ_CONTENT_FILE" "KBD_INI2.MIF " "Critical Warning: Can't read Memory Initialization File or Hexadecimal (Intel-Format) File KBD_INI2.MIF -- setting all initial values to 0" { } { { "altram.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/altram.tdf" 178 13 0 } } } 1 0 "Can't read Memory Initialization File or Hexadecimal (Intel-Format) File %1!s! -- setting all initial values to 0" 0 0 "" 0 -1} -{ "Error" "ESGN_USER_HIER_ELABORATION_FAILURE" "kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram " "Error: Can't elaborate user hierarchy \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\"" { } { { "lpm_ram_dq.tdf" "sram" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } } 0 0 "Can't elaborate user hierarchy \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram kbd:KEYS\|lpm_ram_dq:\$00021 " "Info: Elaborated megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\|altram:sram\", which is child of megafunction instantiation \"kbd:KEYS\|lpm_ram_dq:\$00021\"" { } { { "lpm_ram_dq.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_ram_dq.tdf" 101 6 0 } } { "kbd.tdf" "" { Text "C:/Sprinter/src/altera/quartus/acex/kbd.tdf" 167 9 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Error" "EQEXE_ERROR_COUNT" "Analysis & Synthesis 2 s 16 s Quartus II " "Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 16 warnings" { { "Error" "EQEXE_END_PEAK_VSIZE_MEMORY" "225 " "Error: Peak virtual memory: 225 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Error" "EQEXE_END_BANNER_TIME" "Sun Aug 28 03:32:20 2022 " "Error: Processing ended: Sun Aug 28 03:32:20 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Error" "EQEXE_ELAPSED_TIME" "00:00:01 " "Error: Elapsed time: 00:00:01" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Error" "EQEXE_ELAPSED_CPU_TIME" "00:00:01 " "Error: Total CPU time (on all processors): 00:00:01" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was unsuccessful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} -{ "Error" "EFLOW_ERROR_COUNT" "Full Compilation 4 s 16 s " "Error: Quartus II Full Compilation was unsuccessful. 4 errors, 16 warnings" { } { } 0 0 "Quartus II %1!s! was unsuccessful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/acex/maxplusii_to_quartus_name_mapping.txt b/src/altera/quartus/acex/maxplusii_to_quartus_name_mapping.txt deleted file mode 100644 index d8be4d7..0000000 --- a/src/altera/quartus/acex/maxplusii_to_quartus_name_mapping.txt +++ /dev/null @@ -1,307 +0,0 @@ - -- Copyright (C) 1991-2004 Altera Corporation - -- Any megafunction design, and related netlist (encrypted or decrypted), - -- support information, device programming or simulation file, and any other - -- associated documentation or information provided by Altera or a partner - -- under Altera's Megafunction Partnership Program may be used only - -- to program PLD devices (but not masked PLD devices) from Altera. Any - -- other use of such megafunction design, netlist, support information, - -- device programming or simulation file, or any other related documentation - -- or information is prohibited for any other purpose, including, but not - -- limited to modification, reverse engineering, de-compiling, or use with - -- any other silicon devices, unless such use is explicitly licensed under - -- a separate agreement with Altera or a megafunction partner. Title to the - -- intellectual property, including patents, copyrights, trademarks, trade - -- secrets, or maskworks, embodied in any such megafunction design, netlist, - -- support information, device programming or simulation file, or any other - -- related documentation or information provided by Altera or a megafunction - -- partner, remains with Altera, the megafunction partner, or their respective - -- licensors. No other licenses, including any licenses needed under any third - -- party's intellectual property, are provided herein. - - -- VERSION "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" - -- DATE "08/28/2022 15:25:41" - -Conversion results for sp2_acex -+--------------------------------------------------------+--------------------------------------------------------+ -| MAX+PLUS II node name | Quartus II node name | -+--------------------------------------------------------+--------------------------------------------------------+ -| |/M1 | /M[1] | -| |/m1 | /m[1] | -| |A0 | A[0] | -| |a0 | a[0] | -| |A1 | A[1] | -| |a1 | a[1] | -| |A2 | A[2] | -| |a2 | a[2] | -| |A3 | A[3] | -| |a3 | a[3] | -| |A4 | A[4] | -| |a4 | a[4] | -| |A5 | A[5] | -| |a5 | a[5] | -| |A6 | A[6] | -| |a6 | a[6] | -| |A7 | A[7] | -| |a7 | a[7] | -| |A8 | A[8] | -| |a8 | a[8] | -| |A9 | A[9] | -| |a9 | a[9] | -| |A10 | A[10] | -| |a10 | a[10] | -| |A11 | A[11] | -| |a11 | a[11] | -| |A12 | A[12] | -| |A13 | A[13] | -| |A14 | A[14] | -| |A15 | A[15] | -| |CAS_0 | CAS_[0] | -| |CAS_1 | CAS_[1] | -| |CAS_2 | CAS_[2] | -| |CAS_3 | CAS_[3] | -| |CASX_0 | CASX_[0] | -| |CASX_1 | CASX_[1] | -| |CASX_2 | CASX_[2] | -| |CASX_3 | CASX_[3] | -| |CASXE0 | CASXE[0] | -| |CASXE1 | CASXE[1] | -| |CLKZ1 | CLKZ[1] | -| |D0 | D[0] | -| |d0 | d[0] | -| |D1 | D[1] | -| |d1 | d[1] | -| |D2 | D[2] | -| |d2 | d[2] | -| |D3 | D[3] | -| |d3 | d[3] | -| |D4 | D[4] | -| |d4 | d[4] | -| |D5 | D[5] | -| |d5 | d[5] | -| |D6 | D[6] | -| |d6 | d[6] | -| |D7 | D[7] | -| |d7 | d[7] | -| |MA0 | MA[0] | -| |ma0 | ma[0] | -| |MA1 | MA[1] | -| |ma1 | ma[1] | -| |MA2 | MA[2] | -| |ma2 | ma[2] | -| |MA3 | MA[3] | -| |ma3 | ma[3] | -| |MA4 | MA[4] | -| |ma4 | ma[4] | -| |MA5 | MA[5] | -| |ma5 | ma[5] | -| |MA6 | MA[6] | -| |ma6 | ma[6] | -| |MA7 | MA[7] | -| |ma7 | ma[7] | -| |MA8 | MA[8] | -| |ma8 | ma[8] | -| |MA9 | MA[9] | -| |ma9 | ma[9] | -| |MA10 | MA[10] | -| |ma10 | ma[10] | -| |MA11 | MA[11] | -| |ma11 | ma[11] | -| |MA12 | MA[12] | -| |ma12 | ma[12] | -| |MA13 | MA[13] | -| |ma13 | ma[13] | -| |MA14 | MA[14] | -| |ma14 | ma[14] | -| |MD0 | MD[0] | -| |md0 | md[0] | -| |MD1 | MD[1] | -| |md1 | md[1] | -| |MD2 | MD[2] | -| |md2 | md[2] | -| |MD3 | MD[3] | -| |md3 | md[3] | -| |MD4 | MD[4] | -| |md4 | md[4] | -| |MD5 | MD[5] | -| |md5 | md[5] | -| |MD6 | MD[6] | -| |md6 | md[6] | -| |MD7 | MD[7] | -| |md7 | md[7] | -| |MD8 | MD[8] | -| |md8 | md[8] | -| |MD9 | MD[9] | -| |md9 | md[9] | -| |MD10 | MD[10] | -| |md10 | md[10] | -| |MD11 | MD[11] | -| |md11 | md[11] | -| |MD12 | MD[12] | -| |md12 | md[12] | -| |MD13 | MD[13] | -| |md13 | md[13] | -| |MD14 | MD[14] | -| |md14 | md[14] | -| |MD15 | MD[15] | -| |md15 | md[15] | -| |RA14 | RA[14] | -| |ra14 | ra[14] | -| |RA15 | RA[15] | -| |ra15 | ra[15] | -| |RA16 | RA[16] | -| |ra16 | ra[16] | -| |RA17 | RA[17] | -| |ra17 | ra[17] | -| |RAS_0 | RAS_[0] | -| |RAS_1 | RAS_[1] | -| |RASX_0 | RASX_[0] | -| |RASX_1 | RASX_[1] | -| |TG42 | TG[42] | -| |V_CS0 | V_CS[0] | -| |v_cs0 | v_cs[0] | -| |V_CS1 | V_CS[1] | -| |v_cs1 | v_cs[1] | -| |V_WR0 | V_WR[0] | -| |V_WR1 | V_WR[1] | -| |V_WR2 | V_WR[2] | -| |V_WR3 | V_WR[3] | -| |V_WRX0 | V_WRX[0] | -| |V_WRX1 | V_WRX[1] | -| |V_WRX2 | V_WRX[2] | -| |V_WRX3 | V_WRX[3] | -| |VA0 | VA[0] | -| |VA1 | VA[1] | -| |VA2 | VA[2] | -| |VA3 | VA[3] | -| |VA4 | VA[4] | -| |VA5 | VA[5] | -| |VA6 | VA[6] | -| |VA7 | VA[7] | -| |VA8 | VA[8] | -| |VA9 | VA[9] | -| |VA10 | VA[10] | -| |VA11 | VA[11] | -| |VA12 | VA[12] | -| |VA13 | VA[13] | -| |VA14 | VA[14] | -| |VA15 | VA[15] | -| |VD00 | VD[00] | -| |VD01 | VD[01] | -| |VD02 | VD[02] | -| |VD03 | VD[03] | -| |VD04 | VD[04] | -| |VD05 | VD[05] | -| |VD06 | VD[06] | -| |VD07 | VD[07] | -| |VD10 | VD[10] | -| |VD11 | VD[11] | -| |VD12 | VD[12] | -| |VD13 | VD[13] | -| |VD14 | VD[14] | -| |VD15 | VD[15] | -| |VD16 | VD[16] | -| |VD17 | VD[17] | -| |VD20 | VD[20] | -| |VD21 | VD[21] | -| |VD22 | VD[22] | -| |VD23 | VD[23] | -| |VD24 | VD[24] | -| |VD25 | VD[25] | -| |VD26 | VD[26] | -| |VD27 | VD[27] | -| |VD30 | VD[30] | -| |VD31 | VD[31] | -| |VD32 | VD[32] | -| |VD33 | VD[33] | -| |VD34 | VD[34] | -| |VD35 | VD[35] | -| |VD36 | VD[36] | -| |VD37 | VD[37] | -| |XA0 | XA[0] | -| |XA1 | XA[1] | -| |XA2 | XA[2] | -| |XA3 | XA[3] | -| "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_0" | acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][0] | -| "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_1" | acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][1] | -| "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_2" | acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][2] | -| "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_3" | acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][3] | -| "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_4" | acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][4] | -| "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_5" | acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][5] | -| "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_6" | acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][6] | -| "|acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment0_7" | acceler:ACC|lpm_ram_dp:RAM|altdpram:sram|segment[0][7] | -| "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_0" | ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][0] | -| "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_1" | ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][1] | -| "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_2" | ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][2] | -| "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_3" | ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][3] | -| "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_4" | ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][4] | -| "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_5" | ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][5] | -| "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_6" | ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][6] | -| "|ay:AY3|lpm_ram_dq:90|altram:sram|segment0_7" | ay:AY[3]|lpm_ram_dq:90|altram:sram|segment[0][7] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_0" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][0] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_1" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][1] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_2" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][2] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_3" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][3] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_4" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][4] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_5" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][5] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_6" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][6] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_7" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][7] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_8" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][8] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_9" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][9] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_10" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][10] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_11" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][11] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_12" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][12] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_13" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][13] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_14" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][14] | -| "|dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment0_15" | dcp:DECODE|lpm_ram_dp:MEM|altdpram:sram|segment[0][15] | -| "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_0" | kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][0] | -| "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_1" | kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][1] | -| "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_2" | kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][2] | -| "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_3" | kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][3] | -| "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_4" | kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][4] | -| "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_5" | kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][5] | -| "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_6" | kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][6] | -| "|kbd:KEYS|lpm_ram_dq:59|altram:sram|segment0_7" | kbd:KEYS|lpm_ram_dq:59|altram:sram|segment[0][7] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_5" | lpm_ram_dp:CBL|altdpram:sram|segment[0][5] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_6" | lpm_ram_dp:CBL|altdpram:sram|segment[0][6] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_7" | lpm_ram_dp:CBL|altdpram:sram|segment[0][7] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_8" | lpm_ram_dp:CBL|altdpram:sram|segment[0][8] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_9" | lpm_ram_dp:CBL|altdpram:sram|segment[0][9] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_10" | lpm_ram_dp:CBL|altdpram:sram|segment[0][10] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_11" | lpm_ram_dp:CBL|altdpram:sram|segment[0][11] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_12" | lpm_ram_dp:CBL|altdpram:sram|segment[0][12] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_13" | lpm_ram_dp:CBL|altdpram:sram|segment[0][13] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_14" | lpm_ram_dp:CBL|altdpram:sram|segment[0][14] | -| "|lpm_ram_dp:CBL|altdpram:sram|segment0_15" | lpm_ram_dp:CBL|altdpram:sram|segment[0][15] | -| "|video2:SVIDEO|D_PIC00" | video2:SVIDEO|D_PIC[00] | -| "|video2:SVIDEO|D_PIC01" | video2:SVIDEO|D_PIC[01] | -| "|video2:SVIDEO|D_PIC02" | video2:SVIDEO|D_PIC[02] | -| "|video2:SVIDEO|D_PIC03" | video2:SVIDEO|D_PIC[03] | -| "|video2:SVIDEO|D_PIC04" | video2:SVIDEO|D_PIC[04] | -| "|video2:SVIDEO|D_PIC05" | video2:SVIDEO|D_PIC[05] | -| "|video2:SVIDEO|D_PIC06" | video2:SVIDEO|D_PIC[06] | -| "|video2:SVIDEO|D_PIC07" | video2:SVIDEO|D_PIC[07] | -| "|video2:SVIDEO|SVA0" | video2:SVIDEO|SVA[0] | -| "|video2:SVIDEO|SVA1" | video2:SVIDEO|SVA[1] | -| "|video2:SVIDEO|SVA2" | video2:SVIDEO|SVA[2] | -| "|video2:SVIDEO|SVA3" | video2:SVIDEO|SVA[3] | -| "|video2:SVIDEO|SVA4" | video2:SVIDEO|SVA[4] | -| "|video2:SVIDEO|SVA5" | video2:SVIDEO|SVA[5] | -| "|video2:SVIDEO|SVA10" | video2:SVIDEO|SVA[10] | -| "|video2:SVIDEO|SVA11" | video2:SVIDEO|SVA[11] | -| "|video2:SVIDEO|SVA12" | video2:SVIDEO|SVA[12] | -| "|video2:SVIDEO|V_CSX0" | video2:SVIDEO|V_CSX[0] | -| "|video2:SVIDEO|V_CSX1" | video2:SVIDEO|V_CSX[1] | -| "|video2:SVIDEO|V_CSX2" | video2:SVIDEO|V_CSX[2] | -| "|video2:SVIDEO|V_WEM2" | video2:SVIDEO|V_WEM[2] | -| "|video2:SVIDEO|V_WEY0" | video2:SVIDEO|V_WEY[0] | -| "|video2:SVIDEO|V_WEY1" | video2:SVIDEO|V_WEY[1] | -| "|video2:SVIDEO|V_WEY2" | video2:SVIDEO|V_WEY[2] | -| "|video2:SVIDEO|V_WEY3" | video2:SVIDEO|V_WEY[3] | -| "|video2:SVIDEO|V_WR_0" | video2:SVIDEO|V_WR_[0] | -| "|video2:SVIDEO|V_WR_1" | video2:SVIDEO|V_WR_[1] | -| "|video2:SVIDEO|V_WR_2" | video2:SVIDEO|V_WR_[2] | -| "|video2:SVIDEO|V_WR_3" | video2:SVIDEO|V_WR_[3] | -| "|video2:SVIDEO|V_WRM2" | video2:SVIDEO|V_WRM[2] | -+--------------------------------------------------------+--------------------------------------------------------+ - - diff --git a/src/altera/quartus/max/db/add_sub_uch.tdf b/src/altera/quartus/max/db/add_sub_uch.tdf deleted file mode 100644 index 9f3f94c..0000000 --- a/src/altera/quartus/max/db/add_sub_uch.tdf +++ /dev/null @@ -1,42 +0,0 @@ ---lpm_add_sub CARRY_CHAIN="MANUAL" CARRY_CHAIN_LENGTH=48 DEVICE_FAMILY="MAX7000S" LPM_DIRECTION="ADD" LPM_REPRESENTATION="UNSIGNED" LPM_WIDTH=5 ONE_INPUT_IS_CONSTANT="YES" dataa datab result ---VERSION_BEGIN 9.0SP2 cbx_cycloneii 2008:05:19:10:57:37:SJ cbx_lpm_add_sub 2009:05:07:10:25:28:SJ cbx_mgl 2009:02:26:16:06:21:SJ cbx_stratix 2008:09:18:16:08:35:SJ cbx_stratixii 2008:11:14:16:08:42:SJ VERSION_END - - --- Copyright (C) 1991-2009 Altera Corporation --- Your use of Altera Corporation's design tools, logic functions --- and other software and tools, and its AMPP partner logic --- functions, and any output files from any of the foregoing --- (including device programming or simulation files), and any --- associated documentation or information are expressly subject --- to the terms and conditions of the Altera Program License --- Subscription Agreement, Altera MegaCore Function License --- Agreement, or other applicable license agreement, including, --- without limitation, that your use is for the sole purpose of --- programming logic devices manufactured by Altera and sold by --- Altera or its authorized distributors. Please refer to the --- applicable agreement for further details. - - -FUNCTION carry_sum (cin, sin) -RETURNS ( cout, sout); - ---synthesis_resources = lut 5 -SUBDESIGN add_sub_uch -( - dataa[4..0] : input; - datab[4..0] : input; - result[4..0] : output; -) -VARIABLE - add_sub_cella[4..0] : carry_sum; - datab_node[4..0] : WIRE; - main_cin_wire : WIRE; - -BEGIN - add_sub_cella[].cin = ( ((dataa[4..4] & datab_node[4..4]) # ((dataa[4..4] # datab_node[4..4]) & add_sub_cella[3].cout)), ((dataa[3..3] & datab_node[3..3]) # ((dataa[3..3] # datab_node[3..3]) & add_sub_cella[2].cout)), ((dataa[2..2] & datab_node[2..2]) # ((dataa[2..2] # datab_node[2..2]) & add_sub_cella[1].cout)), ((dataa[1..1] & datab_node[1..1]) # ((dataa[1..1] # datab_node[1..1]) & add_sub_cella[0].cout)), ((dataa[0..0] & datab_node[0..0]) # ((dataa[0..0] # datab_node[0..0]) & main_cin_wire))); - add_sub_cella[].sin = ( ((dataa[4..4] $ datab_node[4..4]) $ add_sub_cella[3].cout), ((dataa[3..3] $ datab_node[3..3]) $ add_sub_cella[2].cout), ((dataa[2..2] $ datab_node[2..2]) $ add_sub_cella[1].cout), ((dataa[1..1] $ datab_node[1..1]) $ add_sub_cella[0].cout), ((dataa[0..0] $ datab_node[0..0]) $ main_cin_wire)); - datab_node[] = datab[]; - main_cin_wire = B"0"; - result[] = add_sub_cella[].sout; -END; ---VALID FILE diff --git a/src/altera/quartus/max/db/prev_cmp_sp2_max.asm.qmsg b/src/altera/quartus/max/db/prev_cmp_sp2_max.asm.qmsg deleted file mode 100644 index 7340a2f..0000000 --- a/src/altera/quartus/max/db/prev_cmp_sp2_max.asm.qmsg +++ /dev/null @@ -1,5 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Assembler Quartus II " "Info: Running Quartus II Assembler" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:23:30 2022 " "Info: Processing started: Sun Aug 28 03:23:30 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_asm --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Info" "IASM_ASM_GENERATING_PROGRAMMING_FILES" "" "Info: Assembler is generating device programming files" { } { } 0 0 "Assembler is generating device programming files" 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "Assembler 0 s 0 s Quartus II " "Info: Quartus II Assembler was successful. 0 errors, 0 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "199 " "Info: Peak virtual memory: 199 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:23:31 2022 " "Info: Processing ended: Sun Aug 28 03:23:31 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:01 " "Info: Elapsed time: 00:00:01" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/prev_cmp_sp2_max.eda.qmsg b/src/altera/quartus/max/db/prev_cmp_sp2_max.eda.qmsg deleted file mode 100644 index c64727f..0000000 --- a/src/altera/quartus/max/db/prev_cmp_sp2_max.eda.qmsg +++ /dev/null @@ -1,5 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "EDA Netlist Writer Quartus II " "Info: Running Quartus II EDA Netlist Writer" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:26:23 2022 " "Info: Processing started: Sun Aug 28 03:26:23 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_eda --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_eda --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Warning" "WQNETO_NO_OUTPUT_FILES" "" "Warning: Can't generate output files. Specify command-line options to generate output files, or update EDA tool settings using GUI or Tcl script." { } { } 0 0 "Can't generate output files. Specify command-line options to generate output files, or update EDA tool settings using GUI or Tcl script." 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "EDA Netlist Writer 0 s 1 Quartus II " "Info: Quartus II EDA Netlist Writer was successful. 0 errors, 1 warning" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "163 " "Info: Peak virtual memory: 163 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:26:23 2022 " "Info: Processing ended: Sun Aug 28 03:26:23 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:00 " "Info: Elapsed time: 00:00:00" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/prev_cmp_sp2_max.fit.qmsg b/src/altera/quartus/max/db/prev_cmp_sp2_max.fit.qmsg deleted file mode 100644 index 900bf36..0000000 --- a/src/altera/quartus/max/db/prev_cmp_sp2_max.fit.qmsg +++ /dev/null @@ -1,6 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Fitter Quartus II " "Info: Running Quartus II Fitter" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:23:29 2022 " "Info: Processing started: Sun Aug 28 03:23:29 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_fit --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_fit --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Info" "IMPP_MPP_USER_DEVICE" "sp2_max EPM7128STC100-10 " "Info: Selected device EPM7128STC100-10 for design \"sp2_max\"" { } { } 0 0 "Selected device %2!s! for design \"%1!s!\"" 0 0 "" 0 -1} -{ "Warning" "WCUT_CUT_UNATTACHED_ASGN" "" "Warning: Ignored locations or region assignments to the following nodes" { { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "10K_D\[0\] " "Warning: Node \"10K_D\[0\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "10K_D\[0\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "CLK\[14\] " "Warning: Node \"CLK\[14\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CLK\[14\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "D\[0\] " "Warning: Node \"D\[0\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "D\[0\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "FDD_C0 " "Warning: Node \"FDD_C0\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "FDD_C0" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "FDD_C1 " "Warning: Node \"FDD_C1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "FDD_C1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "FDD_C2 " "Warning: Node \"FDD_C2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "FDD_C2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "HDD_C0 " "Warning: Node \"HDD_C0\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_C0" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "HDD_C1 " "Warning: Node \"HDD_C1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_C1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "HDD_C2 " "Warning: Node \"HDD_C2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_C2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "HDD_C3 " "Warning: Node \"HDD_C3\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_C3" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "SINC_\[1\] " "Warning: Node \"SINC_\[1\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "SINC_\[1\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "SINC_\[2\] " "Warning: Node \"SINC_\[2\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "SINC_\[2\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "TR\[43\] " "Warning: Node \"TR\[43\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "TR\[43\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "UNUSED\[33\] " "Warning: Node \"UNUSED\[33\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "UNUSED\[33\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "UNUSED\[53\] " "Warning: Node \"UNUSED\[53\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "UNUSED\[53\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "UNUSED\[65\] " "Warning: Node \"UNUSED\[65\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "UNUSED\[65\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "UNUSED\[78\] " "Warning: Node \"UNUSED\[78\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "UNUSED\[78\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XA0 " "Warning: Node \"XA0\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XA0" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XA1 " "Warning: Node \"XA1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XA1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XA2 " "Warning: Node \"XA2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XA2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XHD1_CS1 " "Warning: Node \"XHD1_CS1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XHD1_CS1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XHD1_CS2 " "Warning: Node \"XHD1_CS2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XHD1_CS2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XHD2_CS1 " "Warning: Node \"XHD2_CS1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XHD2_CS1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XHD2_CS2 " "Warning: Node \"XHD2_CS2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XHD2_CS2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} } { } 0 0 "Ignored locations or region assignments to the following nodes" 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "Fitter 0 s 25 s Quartus II " "Info: Quartus II Fitter was successful. 0 errors, 25 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "229 " "Info: Peak virtual memory: 229 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:23:29 2022 " "Info: Processing ended: Sun Aug 28 03:23:29 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:00 " "Info: Elapsed time: 00:00:00" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/prev_cmp_sp2_max.map.qmsg b/src/altera/quartus/max/db/prev_cmp_sp2_max.map.qmsg deleted file mode 100644 index 28269d0..0000000 --- a/src/altera/quartus/max/db/prev_cmp_sp2_max.map.qmsg +++ /dev/null @@ -1,56 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Analysis & Synthesis Quartus II " "Info: Running Quartus II Analysis & Synthesis" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:23:26 2022 " "Info: Processing started: Sun Aug 28 03:23:26 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_map --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_map --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "sp2_max.tdf 1 1 " "Warning: Using design file sp2_max.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 SP2_MAX " "Info: Found entity 1: SP2_MAX" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 18 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_TOP" "sp2_max " "Info: Elaborating entity \"sp2_max\" for the top level hierarchy" { } { } 0 0 "Elaborating entity \"%1!s!\" for the top level hierarchy" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "CTV8C " "Warning: Variable or input pin \"CTV8C\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 167 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "XA " "Warning: Variable or input pin \"XA\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 52 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "VGA_IN " "Warning: Variable or input pin \"VGA_IN\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 70 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "SINC_IN " "Warning: Variable or input pin \"SINC_IN\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 75 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "XHR_RDY " "Warning: Variable or input pin \"XHR_RDY\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 83 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED65 " "Warning: Variable or input pin \"UNUSED65\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 88 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED33 " "Warning: Variable or input pin \"UNUSED33\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 89 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED1 " "Warning: Variable or input pin \"UNUSED1\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 90 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED2 " "Warning: Variable or input pin \"UNUSED2\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 91 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED5 " "Warning: Variable or input pin \"UNUSED5\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 92 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED7 " "Warning: Variable or input pin \"UNUSED7\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 93 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED22 " "Warning: Variable or input pin \"UNUSED22\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 94 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED24 " "Warning: Variable or input pin \"UNUSED24\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 95 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED27 " "Warning: Variable or input pin \"UNUSED27\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 96 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED28 " "Warning: Variable or input pin \"UNUSED28\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 97 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED49 " "Warning: Variable or input pin \"UNUSED49\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 98 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED50 " "Warning: Variable or input pin \"UNUSED50\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 99 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED53 " "Warning: Variable or input pin \"UNUSED53\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 100 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED55 " "Warning: Variable or input pin \"UNUSED55\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 101 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED63 " "Warning: Variable or input pin \"UNUSED63\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 102 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED70 " "Warning: Variable or input pin \"UNUSED70\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 103 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED72 " "Warning: Variable or input pin \"UNUSED72\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 104 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED77 " "Warning: Variable or input pin \"UNUSED77\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 105 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED78 " "Warning: Variable or input pin \"UNUSED78\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 106 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Info" "IOPT_INFERENCING_SUMMARY" "3 " "Info: Inferred 3 megafunctions from design logic" { { "Info" "IOPT_LPM_COUNTER_INFERRED" "CT\[0\]~0 4 " "Info: Inferred lpm_counter megafunction (LPM_WIDTH=4) from the following logic: \"CT\[0\]~0\"" { } { { "sp2_max.tdf" "CT\[0\]~0" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 119 4 0 } } } 0 0 "Inferred lpm_counter megafunction (LPM_WIDTH=%2!d!) from the following logic: \"%1!s!\"" 0 0 "" 0 -1} { "Info" "IOPT_LPM_COUNTER_INFERRED" "CTV\[0\]~9 9 " "Info: Inferred lpm_counter megafunction (LPM_WIDTH=9) from the following logic: \"CTV\[0\]~9\"" { } { { "sp2_max.tdf" "CTV\[0\]~9" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 121 5 0 } } } 0 0 "Inferred lpm_counter megafunction (LPM_WIDTH=%2!d!) from the following logic: \"%1!s!\"" 0 0 "" 0 -1} { "Info" "IOPT_LPM_COUNTER_INFERRED" "CTH\[0\]~7 6 " "Info: Inferred lpm_counter megafunction (LPM_WIDTH=6) from the following logic: \"CTH\[0\]~7\"" { } { { "sp2_max.tdf" "CTH\[0\]~7" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 120 5 0 } } } 0 0 "Inferred lpm_counter megafunction (LPM_WIDTH=%2!d!) from the following logic: \"%1!s!\"" 0 0 "" 0 -1} } { } 0 0 "Inferred %1!d! megafunctions from design logic" 0 0 "" 0 -1} -{ "Info" "ILPMS_INFERENCING_SUMMARY" "1 " "Info: Inferred 1 megafunctions from design logic" { { "Info" "ILPMS_LPM_ADD_SUB_INFERRED" "op_6 lpm_add_sub " "Info: Inferred adder/subtractor megafunction (\"lpm_add_sub\") from the following logic: \"op_6\"" { } { } 0 0 "Inferred adder/subtractor megafunction (\"%2!s!\") from the following logic: \"%1!s!\"" 0 0 "" 0 -1} } { } 0 0 "Inferred %1!llu! megafunctions from design logic" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "lpm_counter:CT_rtl_0 " "Info: Elaborated megafunction instantiation \"lpm_counter:CT_rtl_0\"" { } { } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "lpm_counter:CT_rtl_0 " "Info: Instantiated megafunction \"lpm_counter:CT_rtl_0\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 4 " "Info: Parameter \"LPM_WIDTH\" = \"4\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_DIRECTION UP " "Info: Parameter \"LPM_DIRECTION\" = \"UP\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_TYPE LPM_COUNTER " "Info: Parameter \"LPM_TYPE\" = \"LPM_COUNTER\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "lpm_counter:CTV_rtl_1 " "Info: Elaborated megafunction instantiation \"lpm_counter:CTV_rtl_1\"" { } { } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "lpm_counter:CTV_rtl_1 " "Info: Instantiated megafunction \"lpm_counter:CTV_rtl_1\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 9 " "Info: Parameter \"LPM_WIDTH\" = \"9\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_DIRECTION UP " "Info: Parameter \"LPM_DIRECTION\" = \"UP\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_TYPE LPM_COUNTER " "Info: Parameter \"LPM_TYPE\" = \"LPM_COUNTER\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "lpm_counter:CTH_rtl_2 " "Info: Elaborated megafunction instantiation \"lpm_counter:CTH_rtl_2\"" { } { } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "lpm_counter:CTH_rtl_2 " "Info: Instantiated megafunction \"lpm_counter:CTH_rtl_2\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 6 " "Info: Parameter \"LPM_WIDTH\" = \"6\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_DIRECTION UP " "Info: Parameter \"LPM_DIRECTION\" = \"UP\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_TYPE LPM_COUNTER " "Info: Parameter \"LPM_TYPE\" = \"LPM_COUNTER\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\"" { } { } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "lpm_add_sub:op_6 " "Info: Instantiated megafunction \"lpm_add_sub:op_6\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 5 " "Info: Parameter \"LPM_WIDTH\" = \"5\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_DIRECTION ADD " "Info: Parameter \"LPM_DIRECTION\" = \"ADD\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_REPRESENTATION UNSIGNED " "Info: Parameter \"LPM_REPRESENTATION\" = \"UNSIGNED\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "ONE_INPUT_IS_CONSTANT YES " "Info: Parameter \"ONE_INPUT_IS_CONSTANT\" = \"YES\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "lpm_add_sub.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.tdf" 268 4 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|a_csnbuffer:oflow_node lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|a_csnbuffer:oflow_node\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 97 2 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|a_csnbuffer:result_node lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|a_csnbuffer:result_node\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 202 5 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\] lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 203 10 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\|a_csnbuffer:oflow_node lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\|a_csnbuffer:oflow_node\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 97 2 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\|a_csnbuffer:result_node lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\|a_csnbuffer:result_node\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 189 5 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|altshift:result_ext_latency_ffs lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|altshift:result_ext_latency_ffs\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "lpm_add_sub.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.tdf" 286 2 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|altshift:carry_ext_latency_ffs lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|altshift:carry_ext_latency_ffs\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "lpm_add_sub.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.tdf" 288 2 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "IOPT_MLS_IGNORED_SUMMARY" "6 " "Info: Ignored 6 buffer(s)" { { "Info" "IOPT_MLS_IGNORED_SOFT" "6 " "Info: Ignored 6 SOFT buffer(s)" { } { } 0 0 "Ignored %1!d! SOFT buffer(s)" 0 0 "" 0 -1} } { } 0 0 "Ignored %1!d! buffer(s)" 0 0 "" 0 -1} -{ "Info" "IOPT_MLS_PRESET_POWER_UP" "" "Info: Registers with preset signals will power-up high" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 451 13 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 450 13 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 449 13 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 445 13 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 446 12 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 447 12 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 479 27 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 478 27 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 489 20 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 490 20 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 494 20 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 495 20 0 } } } 0 0 "Registers with preset signals will power-up high" 0 0 "" 0 -1} -{ "Warning" "WOPT_MLS_ENABLED_OE" "" "Warning: TRI or OPNDRN buffers permanently enabled" { { "Warning" "WOPT_MLS_NODE_NAME" "\$00005 " "Warning: Node \"\$00005\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 206 12 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WOPT_MLS_NODE_NAME" "\$00006 " "Warning: Node \"\$00006\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 207 12 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { } 0 0 "TRI or OPNDRN buffers permanently enabled" 0 0 "" 0 -1} -{ "Warning" "WOPT_MLS_STUCK_PIN_HDR" "" "Warning: Output pins are stuck at VCC or GND" { { "Warning" "WOPT_MLS_STUCK_PIN" "BEEP GND " "Warning (13410): Pin \"BEEP\" is stuck at GND" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 333 2 0 } } } 0 13410 "Pin \"%1!s!\" is stuck at %2!s!" 0 0 "" 0 -1} { "Warning" "WOPT_MLS_STUCK_PIN" "DENS_X VCC " "Warning (13410): Pin \"DENS_X\" is stuck at VCC" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 345 2 0 } } } 0 13410 "Pin \"%1!s!\" is stuck at %2!s!" 0 0 "" 0 -1} { "Warning" "WOPT_MLS_STUCK_PIN" "HD_CS GND " "Warning (13410): Pin \"HD_CS\" is stuck at GND" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 458 9 0 } } } 0 13410 "Pin \"%1!s!\" is stuck at %2!s!" 0 0 "" 0 -1} } { } 0 0 "Output pins are stuck at VCC or GND" 0 0 "" 0 -1} -{ "Info" "IMTM_MTM_PROMOTE_GLOBAL" "" "Info: Promoted pin-driven signal(s) to global signal" { { "Info" "IMTM_MTM_PROMOTE_GLOBAL_CLOCK" "TG42_IN " "Info: Promoted clock signal driven by pin \"TG42_IN\" to global clock signal" { } { } 0 0 "Promoted clock signal driven by pin \"%1!s!\" to global clock signal" 0 0 "" 0 -1} { "Info" "IMTM_MTM_PROMOTE_GLOBAL_CLEAR" "EPM_RES " "Info: Promoted clear signal driven by pin \"EPM_RES\" to global clear signal" { } { } 0 0 "Promoted clear signal driven by pin \"%1!s!\" to global clear signal" 0 0 "" 0 -1} } { } 0 0 "Promoted pin-driven signal(s) to global signal" 0 0 "" 0 -1} -{ "Info" "ISCL_SCL_LOST_FANOUT_MSG_HDR" "1 1 " "Info: 1 registers lost all their fanouts during netlist optimizations. The first 1 are displayed below." { { "Info" "ISCL_SCL_LOST_FANOUT_MSG_SUB" "XCT\[2\] " "Info: Register \"XCT\[2\]\" lost all its fanouts during netlist optimizations." { } { } 0 0 "Register \"%1!s!\" lost all its fanouts during netlist optimizations." 0 0 "" 0 -1} } { } 0 0 "%1!d! registers lost all their fanouts during netlist optimizations. The first %2!d! are displayed below." 0 0 "" 0 -1} -{ "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN_HDR" "25 " "Warning: Design contains 25 input pin(s) that do not drive logic" { { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "XA\[0\] " "Warning (15610): No output dependent on input pin \"XA\[0\]\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 52 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "XA\[1\] " "Warning (15610): No output dependent on input pin \"XA\[1\]\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 52 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "XA\[2\] " "Warning (15610): No output dependent on input pin \"XA\[2\]\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 52 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "VGA_IN " "Warning (15610): No output dependent on input pin \"VGA_IN\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 70 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "SINC_IN " "Warning (15610): No output dependent on input pin \"SINC_IN\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 75 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "XHR_RDY " "Warning (15610): No output dependent on input pin \"XHR_RDY\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 83 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED65 " "Warning (15610): No output dependent on input pin \"UNUSED65\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 88 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED33 " "Warning (15610): No output dependent on input pin \"UNUSED33\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 89 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED1 " "Warning (15610): No output dependent on input pin \"UNUSED1\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 90 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED2 " "Warning (15610): No output dependent on input pin \"UNUSED2\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 91 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED5 " "Warning (15610): No output dependent on input pin \"UNUSED5\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 92 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED7 " "Warning (15610): No output dependent on input pin \"UNUSED7\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 93 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED22 " "Warning (15610): No output dependent on input pin \"UNUSED22\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 94 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED24 " "Warning (15610): No output dependent on input pin \"UNUSED24\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 95 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED27 " "Warning (15610): No output dependent on input pin \"UNUSED27\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 96 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED28 " "Warning (15610): No output dependent on input pin \"UNUSED28\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 97 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED49 " "Warning (15610): No output dependent on input pin \"UNUSED49\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 98 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED50 " "Warning (15610): No output dependent on input pin \"UNUSED50\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 99 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED53 " "Warning (15610): No output dependent on input pin \"UNUSED53\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 100 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED55 " "Warning (15610): No output dependent on input pin \"UNUSED55\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 101 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED63 " "Warning (15610): No output dependent on input pin \"UNUSED63\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 102 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED70 " "Warning (15610): No output dependent on input pin \"UNUSED70\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 103 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED72 " "Warning (15610): No output dependent on input pin \"UNUSED72\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 104 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED77 " "Warning (15610): No output dependent on input pin \"UNUSED77\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 105 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED78 " "Warning (15610): No output dependent on input pin \"UNUSED78\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 106 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} } { } 0 0 "Design contains %1!d! input pin(s) that do not drive logic" 0 0 "" 0 -1} -{ "Info" "ICUT_CUT_TM_SUMMARY" "163 " "Info: Implemented 163 device resources after synthesis - the final resource count might be different" { { "Info" "ICUT_CUT_TM_IPINS" "46 " "Info: Implemented 46 input pins" { } { } 0 0 "Implemented %1!d! input pins" 0 0 "" 0 -1} { "Info" "ICUT_CUT_TM_OPINS" "30 " "Info: Implemented 30 output pins" { } { } 0 0 "Implemented %1!d! output pins" 0 0 "" 0 -1} { "Info" "ICUT_CUT_TM_BIDIRS" "4 " "Info: Implemented 4 bidirectional pins" { } { } 0 0 "Implemented %1!d! bidirectional pins" 0 0 "" 0 -1} { "Info" "ICUT_CUT_TM_MCELLS" "74 " "Info: Implemented 74 macrocells" { } { } 0 0 "Implemented %1!d! macrocells" 0 0 "" 0 -1} { "Info" "ICUT_CUT_TM_SEXPS" "9 " "Info: Implemented 9 shareable expanders" { } { } 0 0 "Implemented %1!d! shareable expanders" 0 0 "" 0 -1} } { } 0 0 "Implemented %1!d! device resources after synthesis - the final resource count might be different" 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "Analysis & Synthesis 0 s 58 s Quartus II " "Info: Quartus II Analysis & Synthesis was successful. 0 errors, 58 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "229 " "Info: Peak virtual memory: 229 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:23:28 2022 " "Info: Processing ended: Sun Aug 28 03:23:28 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:02 " "Info: Elapsed time: 00:00:02" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:01 " "Info: Total CPU time (on all processors): 00:00:01" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/prev_cmp_sp2_max.qmsg b/src/altera/quartus/max/db/prev_cmp_sp2_max.qmsg deleted file mode 100644 index c64727f..0000000 --- a/src/altera/quartus/max/db/prev_cmp_sp2_max.qmsg +++ /dev/null @@ -1,5 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "EDA Netlist Writer Quartus II " "Info: Running Quartus II EDA Netlist Writer" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:26:23 2022 " "Info: Processing started: Sun Aug 28 03:26:23 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_eda --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_eda --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Warning" "WQNETO_NO_OUTPUT_FILES" "" "Warning: Can't generate output files. Specify command-line options to generate output files, or update EDA tool settings using GUI or Tcl script." { } { } 0 0 "Can't generate output files. Specify command-line options to generate output files, or update EDA tool settings using GUI or Tcl script." 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "EDA Netlist Writer 0 s 1 Quartus II " "Info: Quartus II EDA Netlist Writer was successful. 0 errors, 1 warning" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "163 " "Info: Peak virtual memory: 163 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:26:23 2022 " "Info: Processing ended: Sun Aug 28 03:26:23 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:00 " "Info: Elapsed time: 00:00:00" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/prev_cmp_sp2_max.tan.qmsg b/src/altera/quartus/max/db/prev_cmp_sp2_max.tan.qmsg deleted file mode 100644 index 302f5b5..0000000 --- a/src/altera/quartus/max/db/prev_cmp_sp2_max.tan.qmsg +++ /dev/null @@ -1,31 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Classic Timing Analyzer Quartus II " "Info: Running Quartus II Classic Timing Analyzer" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:23:32 2022 " "Info: Processing started: Sun Aug 28 03:23:32 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_tan --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_tan --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Info" "IDAT_DAT_STARTED" "" "Info: Started post-fitting delay annotation" { } { } 0 0 "Started post-fitting delay annotation" 0 0 "" 0 -1} -{ "Info" "IDAT_DAT_COMPLETED" "" "Info: Delay annotation completed successfully" { } { } 0 0 "Delay annotation completed successfully" 0 0 "" 0 -1} -{ "Warning" "WTDB_ANALYZE_COMB_LATCHES_NOT_SUPPORTED" "" "Warning: Timing Analysis does not support the analysis of latches as synchronous elements for the currently selected device family" { } { } 0 0 "Timing Analysis does not support the analysis of latches as synchronous elements for the currently selected device family" 0 0 "" 0 -1} -{ "Warning" "WTAN_SCC_LOOP" "2 " "Warning: Found combinational loop of 2 nodes" { { "Warning" "WTAN_SCC_NODE" "RDAT_X~11 " "Warning: Node \"RDAT_X~11\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 326 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WTAN_SCC_NODE" "RDAT_X~6 " "Warning: Node \"RDAT_X~6\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 326 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 326 2 0 } } } 0 0 "Found combinational loop of %1!d! nodes" 0 0 "" 0 -1} -{ "Warning" "WTAN_SCC_LOOP" "1 " "Warning: Found combinational loop of 1 nodes" { { "Warning" "WTAN_SCC_NODE" "TURBING~5 " "Warning: Node \"TURBING~5\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } } 0 0 "Found combinational loop of %1!d! nodes" 0 0 "" 0 -1} -{ "Warning" "WTAN_SCC_LOOP" "3 " "Warning: Found combinational loop of 3 nodes" { { "Warning" "WTAN_SCC_NODE" "THDD~2 " "Warning: Node \"THDD~2\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 436 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WTAN_SCC_NODE" "NTHDD~13 " "Warning: Node \"NTHDD~13\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WTAN_SCC_NODE" "NTHDD~11 " "Warning: Node \"NTHDD~11\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 436 2 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } } 0 0 "Found combinational loop of %1!d! nodes" 0 0 "" 0 -1} -{ "Warning" "WTAN_SCC_LOOP" "2 " "Warning: Found combinational loop of 2 nodes" { { "Warning" "WTAN_SCC_NODE" "NT320~12 " "Warning: Node \"NT320~12\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 426 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WTAN_SCC_NODE" "NT320~2 " "Warning: Node \"NT320~2\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 426 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 426 2 0 } } } 0 0 "Found combinational loop of %1!d! nodes" 0 0 "" 0 -1} -{ "Warning" "WTAN_NO_CLOCKS" "" "Warning: Found pins functioning as undefined clocks and/or memory enables" { { "Info" "ITAN_NODE_MAP_TO_CLK" "TG42_IN " "Info: Assuming node \"TG42_IN\" is an undefined clock" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "TG42_IN" } } } } } 0 0 "Assuming node \"%1!s!\" is an undefined clock" 0 0 "" 0 -1} { "Info" "ITAN_NODE_MAP_TO_CLK" "STE " "Info: Assuming node \"STE\" is an undefined clock" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "STE" } } } } } 0 0 "Assuming node \"%1!s!\" is an undefined clock" 0 0 "" 0 -1} { "Info" "ITAN_NODE_MAP_TO_CLK" "RSTB " "Info: Assuming node \"RSTB\" is an undefined clock" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "RSTB" } } } } } 0 0 "Assuming node \"%1!s!\" is an undefined clock" 0 0 "" 0 -1} { "Info" "ITAN_NODE_MAP_TO_CLK" "WSTB " "Info: Assuming node \"WSTB\" is an undefined clock" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "WSTB" } } } } } 0 0 "Assuming node \"%1!s!\" is an undefined clock" 0 0 "" 0 -1} } { } 0 0 "Found pins functioning as undefined clocks and/or memory enables" 0 0 "" 0 -1} -{ "Warning" "WTAN_RIPPLE_OR_GATED_CLOCKS_FOUND" "20 " "Warning: Found 20 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew" { { "Info" "ITAN_GATED_CLK" "CT_WG1~8bal " "Info: Detected gated clock \"CT_WG1~8bal\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 304 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG1~8bal" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "STWG\[2\] " "Info: Detected ripple clock \"STWG\[2\]\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "STWG\[2\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "STWG\[2\]~6bal " "Info: Detected gated clock \"STWG\[2\]~6bal\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "STWG\[2\]~6bal" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "CT_WG~6 " "Info: Detected gated clock \"CT_WG~6\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG~6" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "CT_WG~5 " "Info: Detected gated clock \"CT_WG~5\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG~5" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "CT_WG~4 " "Info: Detected gated clock \"CT_WG~4\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG~4" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "CT_WG " "Info: Detected ripple clock \"CT_WG\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "TURBING~5 " "Info: Detected gated clock \"TURBING~5\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "TURBING~5" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "FDD_1440 " "Info: Detected ripple clock \"FDD_1440\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "FDD_1440" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "HDD_CLK " "Info: Detected ripple clock \"HDD_CLK\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 472 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_CLK" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "lpm_counter:CT_rtl_0\|dffs\[3\] " "Info: Detected ripple clock \"lpm_counter:CT_rtl_0\|dffs\[3\]\" as buffer" { } { { "lpm_counter.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf" 283 9 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "lpm_counter:CT_rtl_0\|dffs\[3\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "SINC_HT " "Info: Detected ripple clock \"SINC_HT\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 123 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "SINC_HT" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "SINC_VT " "Info: Detected ripple clock \"SINC_VT\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 124 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "SINC_VT" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "lpm_counter:CT_rtl_0\|dffs\[0\] " "Info: Detected ripple clock \"lpm_counter:CT_rtl_0\|dffs\[0\]\" as buffer" { } { { "lpm_counter.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf" 283 9 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "lpm_counter:CT_rtl_0\|dffs\[0\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "XCT\[2\]~4 " "Info: Detected gated clock \"XCT\[2\]~4\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[2\]~4" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "XCT\[2\]~3 " "Info: Detected gated clock \"XCT\[2\]~3\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[2\]~3" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "XCT\[2\]~12 " "Info: Detected gated clock \"XCT\[2\]~12\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[2\]~12" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "XCT\[2\]~11 " "Info: Detected gated clock \"XCT\[2\]~11\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[2\]~11" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "XCT\[0\] " "Info: Detected ripple clock \"XCT\[0\]\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[0\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "XCT\[1\] " "Info: Detected ripple clock \"XCT\[1\]\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[1\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} } { } 0 0 "Found %1!d! node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_SLACK_RESULT" "TG42_IN register /RESET register \$00051 -47.0 ns " "Info: Slack time is -47.0 ns for clock \"TG42_IN\" between source register \"/RESET\" and destination register \"\$00051\"" { { "Info" "ITDB_SIMPLE_FMAX_RESULT" "9.62 MHz 104.0 ns " "Info: Fmax is 9.62 MHz (period= 104.0 ns)" { } { } 0 0 "Fmax is %1!s! (period= %2!s!)" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "-25.000 ns + Largest register register " "Info: + Largest register to register requirement is -25.000 ns" { { "Info" "ITDB_FULL_SETUP_REQUIREMENT" "5.000 ns + " "Info: + Setup relationship between source and destination is 5.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 10.000 ns " "Info: + Latch edge is 10.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination TG42_IN 10.000 ns 0.000 ns 50 " "Info: Clock period of Destination clock \"TG42_IN\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 5.000 ns " "Info: - Launch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source TG42_IN 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Source clock \"TG42_IN\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Setup relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "-26.000 ns + Largest " "Info: + Largest clock skew is -26.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN destination 1.500 ns + Shortest register " "Info: + Shortest clock path from clock \"TG42_IN\" to destination register is 1.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 1.500 ns \$00051 2 REG LC121 1 " "Info: 2: + IC(0.000 ns) + CELL(0.000 ns) = 1.500 ns; Loc. = LC121; Fanout = 1; REG Node = '\$00051'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "0.000 ns" { TG42_IN $00051 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 490 20 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "1.500 ns ( 100.00 % ) " "Info: Total cell delay = 1.500 ns ( 100.00 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00051 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN source 27.500 ns - Longest register " "Info: - Longest clock path from clock \"TG42_IN\" to source register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(5.000 ns) 6.500 ns XCT\[2\]~4 2 COMB SEXP49 1 " "Info: 2: + IC(0.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = SEXP49; Fanout = 1; COMB Node = 'XCT\[2\]~4'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "5.000 ns" { TG42_IN XCT[2]~4 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 13.500 ns XCT\[1\] 3 REG LC56 18 " "Info: 3: + IC(0.000 ns) + CELL(7.000 ns) = 13.500 ns; Loc. = LC56; Fanout = 18; REG Node = 'XCT\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { XCT[2]~4 XCT[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 21.500 ns lpm_counter:CT_rtl_0\|dffs\[3\] 4 REG LC53 10 " "Info: 4: + IC(1.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC53; Fanout = 10; REG Node = 'lpm_counter:CT_rtl_0\|dffs\[3\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { XCT[1] lpm_counter:CT_rtl_0|dffs[3] } "NODE_NAME" } } { "lpm_counter.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf" 283 9 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns /RESET 5 REG LC85 19 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC85; Fanout = 19; REG Node = '/RESET'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 173 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[3] {} /RESET {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00051 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[3] {} /RESET {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 173 2 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns - " "Info: - Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 490 20 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00051 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[3] {} /RESET {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "22.000 ns - Longest register register " "Info: - Longest register to register delay is 22.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns /RESET 1 REG LC85 19 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC85; Fanout = 19; REG Node = '/RESET'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { /RESET } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 173 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(16.000 ns) 16.000 ns THDD~2 2 COMB LOOP LC114 14 " "Info: 2: + IC(0.000 ns) + CELL(16.000 ns) = 16.000 ns; Loc. = LC114; Fanout = 14; COMB LOOP Node = 'THDD~2'" { { "Info" "ITDB_PART_OF_SCC" "NTHDD~11 LC119 " "Info: Loc. = LC119; Node \"NTHDD~11\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~11 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "THDD~2 LC114 " "Info: Loc. = LC114; Node \"THDD~2\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { THDD~2 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "NTHDD~13 LC118 " "Info: Loc. = LC118; Node \"NTHDD~13\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~13 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~11 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { THDD~2 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 436 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~13 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "16.000 ns" { /RESET THDD~2 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 22.000 ns \$00051 3 REG LC121 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 22.000 ns; Loc. = LC121; Fanout = 1; REG Node = '\$00051'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { THDD~2 $00051 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 490 20 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "21.000 ns ( 95.45 % ) " "Info: Total cell delay = 21.000 ns ( 95.45 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 4.55 % ) " "Info: Total interconnect delay = 1.000 ns ( 4.55 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "22.000 ns" { /RESET THDD~2 $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "22.000 ns" { /RESET {} THDD~2 {} $00051 {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 16.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00051 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[3] {} /RESET {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "22.000 ns" { /RESET THDD~2 $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "22.000 ns" { /RESET {} THDD~2 {} $00051 {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 16.000ns 5.000ns } "" } } } 0 0 "Slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_REQUIREMENTS_NOT_MET" "Clock Setup: 'TG42_IN' 57 " "Warning: Can't achieve timing requirement Clock Setup: 'TG42_IN' along 57 path(s). See Report window for details." { } { } 0 0 "Can't achieve timing requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_SLACK_RESULT" "STE register LR_T\[0\] register REG_P\[2\] -21.0 ns " "Info: Slack time is -21.0 ns for clock \"STE\" between source register \"LR_T\[0\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_SIMPLE_FMAX_RESULT" "19.23 MHz 52.0 ns " "Info: Fmax is 19.23 MHz (period= 52.0 ns)" { } { } 0 0 "Fmax is %1!s! (period= %2!s!)" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "-15.000 ns + Largest register register " "Info: + Largest register to register requirement is -15.000 ns" { { "Info" "ITDB_FULL_SETUP_REQUIREMENT" "5.000 ns + " "Info: + Setup relationship between source and destination is 5.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination STE 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"STE\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 0.000 ns " "Info: - Launch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source STE 10.000 ns 0.000 ns 50 " "Info: Clock period of Source clock \"STE\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Setup relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "-16.000 ns + Largest " "Info: + Largest clock skew is -16.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "STE destination 27.500 ns + Shortest register " "Info: + Shortest clock path from clock \"STE\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns STE 1 CLK PIN_94 4 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STE } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STE TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "STE source 43.500 ns - Longest register " "Info: - Longest clock path from clock \"STE\" to source register is 43.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns STE 1 CLK PIN_94 4 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STE } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STE TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 29.500 ns STWG\[2\]~6bal 5 COMB LC16 3 " "Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 37.500 ns STWG\[2\] 6 REG LC19 6 " "Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 43.500 ns LR_T\[0\] 7 REG LC10 4 " "Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2] LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "39.500 ns ( 90.80 % ) " "Info: Total cell delay = 39.500 ns ( 90.80 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "4.000 ns ( 9.20 % ) " "Info: Total interconnect delay = 4.000 ns ( 9.20 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { STE TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { STE TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns - " "Info: - Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { STE TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns - Longest register register " "Info: - Longest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns LR_T\[0\] 1 REG LC10 4 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { STE TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "Slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_REQUIREMENTS_NOT_MET" "Clock Setup: 'STE' 6 " "Warning: Can't achieve timing requirement Clock Setup: 'STE' along 6 path(s). See Report window for details." { } { } 0 0 "Can't achieve timing requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_SLACK_RESULT" "RSTB register LR_T\[0\] register REG_P\[2\] -21.0 ns " "Info: Slack time is -21.0 ns for clock \"RSTB\" between source register \"LR_T\[0\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_SIMPLE_FMAX_RESULT" "19.23 MHz 52.0 ns " "Info: Fmax is 19.23 MHz (period= 52.0 ns)" { } { } 0 0 "Fmax is %1!s! (period= %2!s!)" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "-15.000 ns + Largest register register " "Info: + Largest register to register requirement is -15.000 ns" { { "Info" "ITDB_FULL_SETUP_REQUIREMENT" "5.000 ns + " "Info: + Setup relationship between source and destination is 5.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination RSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"RSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 0.000 ns " "Info: - Launch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source RSTB 10.000 ns 0.000 ns 50 " "Info: Clock period of Source clock \"RSTB\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Setup relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "-16.000 ns + Largest " "Info: + Largest clock skew is -16.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "RSTB destination 27.500 ns + Shortest register " "Info: + Shortest clock path from clock \"RSTB\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns RSTB 1 CLK PIN_25 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { RSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "RSTB source 43.500 ns - Longest register " "Info: - Longest clock path from clock \"RSTB\" to source register is 43.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns RSTB 1 CLK PIN_25 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { RSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 29.500 ns STWG\[2\]~6bal 5 COMB LC16 3 " "Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 37.500 ns STWG\[2\] 6 REG LC19 6 " "Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 43.500 ns LR_T\[0\] 7 REG LC10 4 " "Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2] LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "39.500 ns ( 90.80 % ) " "Info: Total cell delay = 39.500 ns ( 90.80 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "4.000 ns ( 9.20 % ) " "Info: Total interconnect delay = 4.000 ns ( 9.20 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns - " "Info: - Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns - Longest register register " "Info: - Longest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns LR_T\[0\] 1 REG LC10 4 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "Slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_REQUIREMENTS_NOT_MET" "Clock Setup: 'RSTB' 6 " "Warning: Can't achieve timing requirement Clock Setup: 'RSTB' along 6 path(s). See Report window for details." { } { } 0 0 "Can't achieve timing requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_SLACK_RESULT" "WSTB register LR_T\[0\] register REG_P\[2\] -21.0 ns " "Info: Slack time is -21.0 ns for clock \"WSTB\" between source register \"LR_T\[0\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_SIMPLE_FMAX_RESULT" "19.23 MHz 52.0 ns " "Info: Fmax is 19.23 MHz (period= 52.0 ns)" { } { } 0 0 "Fmax is %1!s! (period= %2!s!)" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "-15.000 ns + Largest register register " "Info: + Largest register to register requirement is -15.000 ns" { { "Info" "ITDB_FULL_SETUP_REQUIREMENT" "5.000 ns + " "Info: + Setup relationship between source and destination is 5.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination WSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"WSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 0.000 ns " "Info: - Launch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source WSTB 10.000 ns 0.000 ns 50 " "Info: Clock period of Source clock \"WSTB\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Setup relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "-16.000 ns + Largest " "Info: + Largest clock skew is -16.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "WSTB destination 27.500 ns + Shortest register " "Info: + Shortest clock path from clock \"WSTB\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns WSTB 1 CLK PIN_10 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { WSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { WSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "WSTB source 43.500 ns - Longest register " "Info: - Longest clock path from clock \"WSTB\" to source register is 43.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns WSTB 1 CLK PIN_10 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { WSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { WSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 29.500 ns STWG\[2\]~6bal 5 COMB LC16 3 " "Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 37.500 ns STWG\[2\] 6 REG LC19 6 " "Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 43.500 ns LR_T\[0\] 7 REG LC10 4 " "Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2] LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "39.500 ns ( 90.80 % ) " "Info: Total cell delay = 39.500 ns ( 90.80 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "4.000 ns ( 9.20 % ) " "Info: Total interconnect delay = 4.000 ns ( 9.20 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns - " "Info: - Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns - Longest register register " "Info: - Longest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns LR_T\[0\] 1 REG LC10 4 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "Slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_REQUIREMENTS_NOT_MET" "Clock Setup: 'WSTB' 6 " "Warning: Can't achieve timing requirement Clock Setup: 'WSTB' along 6 path(s). See Report window for details." { } { } 0 0 "Can't achieve timing requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_MIN_SLACK_RESULT" "TG42_IN register FDD_1440 register \$00021 -12.2 ns " "Info: Minimum slack time is -12.2 ns for clock \"TG42_IN\" between source register \"FDD_1440\" and destination register \"\$00021\"" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "14.800 ns + Shortest register register " "Info: + Shortest register to register delay is 14.800 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns FDD_1440 1 REG LC91 13 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { FDD_1440 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.800 ns) 8.800 ns RDAT_X~6 2 COMB LOOP LC21 6 " "Info: 2: + IC(0.000 ns) + CELL(8.800 ns) = 8.800 ns; Loc. = LC21; Fanout = 6; COMB LOOP Node = 'RDAT_X~6'" { { "Info" "ITDB_PART_OF_SCC" "RDAT_X~6 LC21 " "Info: Loc. = LC21; Node \"RDAT_X~6\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDAT_X~6 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "RDAT_X~11 LC20 " "Info: Loc. = LC20; Node \"RDAT_X~11\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDAT_X~11 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDAT_X~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 326 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDAT_X~11 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.800 ns" { FDD_1440 RDAT_X~6 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.800 ns \$00021 3 REG LC17 12 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.800 ns; Loc. = LC17; Fanout = 12; REG Node = '\$00021'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { RDAT_X~6 $00021 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 328 9 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "13.800 ns ( 93.24 % ) " "Info: Total cell delay = 13.800 ns ( 93.24 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 6.76 % ) " "Info: Total interconnect delay = 1.000 ns ( 6.76 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "14.800 ns" { FDD_1440 RDAT_X~6 $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "14.800 ns" { FDD_1440 {} RDAT_X~6 {} $00021 {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 8.800ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "27.000 ns - Smallest register register " "Info: - Smallest register to register requirement is 27.000 ns" { { "Info" "ITDB_FULL_HOLD_REQUIREMENT" "0.000 ns + " "Info: + Hold relationship between source and destination is 0.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 0.000 ns " "Info: + Latch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination TG42_IN 10.000 ns 0.000 ns 50 " "Info: Clock period of Destination clock \"TG42_IN\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Hold 1 " "Info: Multicycle Hold factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 0.000 ns " "Info: - Launch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source TG42_IN 10.000 ns 0.000 ns 50 " "Info: Clock period of Source clock \"TG42_IN\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Hold 1 " "Info: Multicycle Hold factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Hold relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "26.000 ns + Smallest " "Info: + Smallest clock skew is 26.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN destination 35.500 ns + Longest register " "Info: + Longest clock path from clock \"TG42_IN\" to destination register is 35.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(5.000 ns) 6.500 ns XCT\[2\]~4 2 COMB SEXP49 1 " "Info: 2: + IC(0.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = SEXP49; Fanout = 1; COMB Node = 'XCT\[2\]~4'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "5.000 ns" { TG42_IN XCT[2]~4 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 13.500 ns XCT\[1\] 3 REG LC56 18 " "Info: 3: + IC(0.000 ns) + CELL(7.000 ns) = 13.500 ns; Loc. = LC56; Fanout = 18; REG Node = 'XCT\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { XCT[2]~4 XCT[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 21.500 ns lpm_counter:CT_rtl_0\|dffs\[0\] 4 REG LC122 9 " "Info: 4: + IC(1.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC122; Fanout = 9; REG Node = 'lpm_counter:CT_rtl_0\|dffs\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { XCT[1] lpm_counter:CT_rtl_0|dffs[0] } "NODE_NAME" } } { "lpm_counter.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf" 283 9 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 29.500 ns CT_WG1~8bal 5 COMB LC28 7 " "Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC28; Fanout = 7; COMB Node = 'CT_WG1~8bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 304 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 35.500 ns \$00021 6 REG LC17 12 " "Info: 6: + IC(1.000 ns) + CELL(5.000 ns) = 35.500 ns; Loc. = LC17; Fanout = 12; REG Node = '\$00021'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG1~8bal $00021 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 328 9 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "32.500 ns ( 91.55 % ) " "Info: Total cell delay = 32.500 ns ( 91.55 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "3.000 ns ( 8.45 % ) " "Info: Total interconnect delay = 3.000 ns ( 8.45 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "35.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "35.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[0] {} CT_WG1~8bal {} $00021 {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN source 9.500 ns - Shortest register " "Info: - Shortest clock path from clock \"TG42_IN\" to source register is 9.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(2.000 ns) 3.500 ns HDD_CLK 2 REG LC88 10 " "Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "2.000 ns" { TG42_IN HDD_CLK } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 472 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 9.500 ns FDD_1440 3 REG LC91 13 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 9.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { HDD_CLK FDD_1440 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "8.500 ns ( 89.47 % ) " "Info: Total cell delay = 8.500 ns ( 89.47 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 10.53 % ) " "Info: Total interconnect delay = 1.000 ns ( 10.53 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "9.500 ns" { TG42_IN HDD_CLK FDD_1440 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "9.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "35.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "35.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[0] {} CT_WG1~8bal {} $00021 {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "9.500 ns" { TG42_IN HDD_CLK FDD_1440 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "9.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 328 9 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "35.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "35.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[0] {} CT_WG1~8bal {} $00021 {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "9.500 ns" { TG42_IN HDD_CLK FDD_1440 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "9.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "14.800 ns" { FDD_1440 RDAT_X~6 $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "14.800 ns" { FDD_1440 {} RDAT_X~6 {} $00021 {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 8.800ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "35.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "35.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[0] {} CT_WG1~8bal {} $00021 {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "9.500 ns" { TG42_IN HDD_CLK FDD_1440 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "9.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 5.000ns } "" } } } 0 0 "Minimum slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_MINIMUM_REQUIREMENTS_NOT_MET" "TG42_IN 48 " "Warning: Can't achieve minimum setup and hold requirement TG42_IN along 48 path(s). See Report window for details." { } { } 0 0 "Can't achieve minimum setup and hold requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_MIN_SLACK_RESULT" "STE register REG_P\[1\] register REG_P\[2\] 5.0 ns " "Info: Minimum slack time is 5.0 ns for clock \"STE\" between source register \"REG_P\[1\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns + Shortest register register " "Info: + Shortest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns REG_P\[1\] 1 REG LC2 3 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "1.000 ns - Smallest register register " "Info: - Smallest register to register requirement is 1.000 ns" { { "Info" "ITDB_FULL_HOLD_REQUIREMENT" "0.000 ns + " "Info: + Hold relationship between source and destination is 0.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination STE 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"STE\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Hold 1 " "Info: Multicycle Hold factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 5.000 ns " "Info: - Launch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source STE 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Source clock \"STE\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Hold 1 " "Info: Multicycle Hold factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Hold relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "0.000 ns + Smallest " "Info: + Smallest clock skew is 0.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "STE destination 27.500 ns + Longest register " "Info: + Longest clock path from clock \"STE\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns STE 1 CLK PIN_94 4 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STE } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STE TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "STE source 27.500 ns - Shortest register " "Info: - Shortest clock path from clock \"STE\" to source register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns STE 1 CLK PIN_94 4 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STE } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STE TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[1\] 5 REG LC2 3 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "Minimum slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_MIN_SLACK_RESULT" "RSTB register REG_P\[1\] register REG_P\[2\] 5.0 ns " "Info: Minimum slack time is 5.0 ns for clock \"RSTB\" between source register \"REG_P\[1\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns + Shortest register register " "Info: + Shortest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns REG_P\[1\] 1 REG LC2 3 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "1.000 ns - Smallest register register " "Info: - Smallest register to register requirement is 1.000 ns" { { "Info" "ITDB_FULL_HOLD_REQUIREMENT" "0.000 ns + " "Info: + Hold relationship between source and destination is 0.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination RSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"RSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Hold 1 " "Info: Multicycle Hold factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 5.000 ns " "Info: - Launch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source RSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Source clock \"RSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Hold 1 " "Info: Multicycle Hold factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Hold relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "0.000 ns + Smallest " "Info: + Smallest clock skew is 0.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "RSTB destination 27.500 ns + Longest register " "Info: + Longest clock path from clock \"RSTB\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns RSTB 1 CLK PIN_25 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { RSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "RSTB source 27.500 ns - Shortest register " "Info: - Shortest clock path from clock \"RSTB\" to source register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns RSTB 1 CLK PIN_25 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { RSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[1\] 5 REG LC2 3 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "Minimum slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_MIN_SLACK_RESULT" "WSTB register REG_P\[1\] register REG_P\[2\] 5.0 ns " "Info: Minimum slack time is 5.0 ns for clock \"WSTB\" between source register \"REG_P\[1\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns + Shortest register register " "Info: + Shortest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns REG_P\[1\] 1 REG LC2 3 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "1.000 ns - Smallest register register " "Info: - Smallest register to register requirement is 1.000 ns" { { "Info" "ITDB_FULL_HOLD_REQUIREMENT" "0.000 ns + " "Info: + Hold relationship between source and destination is 0.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination WSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"WSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Hold 1 " "Info: Multicycle Hold factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 5.000 ns " "Info: - Launch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source WSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Source clock \"WSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Hold 1 " "Info: Multicycle Hold factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Hold relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "0.000 ns + Smallest " "Info: + Smallest clock skew is 0.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "WSTB destination 27.500 ns + Longest register " "Info: + Longest clock path from clock \"WSTB\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns WSTB 1 CLK PIN_10 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { WSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { WSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "WSTB source 27.500 ns - Shortest register " "Info: - Shortest clock path from clock \"WSTB\" to source register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns WSTB 1 CLK PIN_10 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { WSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { WSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[1\] 5 REG LC2 3 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "Minimum slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Info" "ITDB_TSU_RESULT" "\$00052 FDD_C\[2\] TG42_IN 23.800 ns register " "Info: tsu for register \"\$00052\" (data pin = \"FDD_C\[2\]\", clock pin = \"TG42_IN\") is 23.800 ns" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "23.300 ns + Longest pin register " "Info: + Longest pin to register delay is 23.300 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns FDD_C\[2\] 1 PIN PIN_46 20 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_46; Fanout = 20; PIN Node = 'FDD_C\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { FDD_C[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 59 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(16.800 ns) 17.300 ns NTHDD~11 2 COMB LOOP LC119 10 " "Info: 2: + IC(0.000 ns) + CELL(16.800 ns) = 17.300 ns; Loc. = LC119; Fanout = 10; COMB LOOP Node = 'NTHDD~11'" { { "Info" "ITDB_PART_OF_SCC" "NTHDD~11 LC119 " "Info: Loc. = LC119; Node \"NTHDD~11\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~11 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "THDD~2 LC114 " "Info: Loc. = LC114; Node \"THDD~2\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { THDD~2 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "NTHDD~13 LC118 " "Info: Loc. = LC118; Node \"NTHDD~13\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~13 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~11 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { THDD~2 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 436 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~13 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "16.800 ns" { FDD_C[2] NTHDD~11 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 23.300 ns \$00052 3 REG LC123 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 23.300 ns; Loc. = LC123; Fanout = 1; REG Node = '\$00052'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { NTHDD~11 $00052 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 494 20 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "22.300 ns ( 95.71 % ) " "Info: Total cell delay = 22.300 ns ( 95.71 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 4.29 % ) " "Info: Total interconnect delay = 1.000 ns ( 4.29 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "23.300 ns" { FDD_C[2] NTHDD~11 $00052 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "23.300 ns" { FDD_C[2] {} FDD_C[2]~out {} NTHDD~11 {} $00052 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 16.800ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns + " "Info: + Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 494 20 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN destination 1.500 ns - Shortest register " "Info: - Shortest clock path from clock \"TG42_IN\" to destination register is 1.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 1.500 ns \$00052 2 REG LC123 1 " "Info: 2: + IC(0.000 ns) + CELL(0.000 ns) = 1.500 ns; Loc. = LC123; Fanout = 1; REG Node = '\$00052'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "0.000 ns" { TG42_IN $00052 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 494 20 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "1.500 ns ( 100.00 % ) " "Info: Total cell delay = 1.500 ns ( 100.00 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00052 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00052 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "23.300 ns" { FDD_C[2] NTHDD~11 $00052 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "23.300 ns" { FDD_C[2] {} FDD_C[2]~out {} NTHDD~11 {} $00052 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 16.800ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00052 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00052 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } } 0 0 "tsu for %5!s! \"%1!s!\" (data pin = \"%2!s!\", clock pin = \"%3!s!\") is %4!s!" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_TCO_RESULT" "TG42_IN CLK_WG STWG\[2\] 50.000 ns register " "Info: tco from clock \"TG42_IN\" to destination pin \"CLK_WG\" through register \"STWG\[2\]\" is 50.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN source 46.500 ns + Longest register " "Info: + Longest clock path from clock \"TG42_IN\" to source register is 46.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(2.000 ns) 3.500 ns HDD_CLK 2 REG LC88 10 " "Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "2.000 ns" { TG42_IN HDD_CLK } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 472 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 11.500 ns FDD_1440 3 REG LC91 13 " "Info: 3: + IC(1.000 ns) + CELL(7.000 ns) = 11.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { HDD_CLK FDD_1440 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 19.500 ns TURBING~5 4 COMB LOOP LC32 3 " "Info: 4: + IC(0.000 ns) + CELL(8.000 ns) = 19.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { FDD_1440 TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 25.500 ns CT_WG~6 5 COMB SEXP17 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 25.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 32.500 ns CT_WG 6 REG LC26 8 " "Info: 6: + IC(0.000 ns) + CELL(7.000 ns) = 32.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 40.500 ns STWG\[2\]~6bal 7 COMB LC16 3 " "Info: 7: + IC(1.000 ns) + CELL(7.000 ns) = 40.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 46.500 ns STWG\[2\] 8 REG LC19 6 " "Info: 8: + IC(1.000 ns) + CELL(5.000 ns) = 46.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "42.500 ns ( 91.40 % ) " "Info: Total cell delay = 42.500 ns ( 91.40 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "4.000 ns ( 8.60 % ) " "Info: Total interconnect delay = 4.000 ns ( 8.60 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "46.500 ns" { TG42_IN HDD_CLK FDD_1440 TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "46.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 7.000ns 8.000ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns + " "Info: + Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "1.500 ns + Longest register pin " "Info: + Longest register to pin delay is 1.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns STWG\[2\] 1 REG LC19 6 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns CLK_WG 2 PIN PIN_13 0 " "Info: 2: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_13; Fanout = 0; PIN Node = 'CLK_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { STWG[2] CLK_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 299 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "1.500 ns ( 100.00 % ) " "Info: Total cell delay = 1.500 ns ( 100.00 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { STWG[2] CLK_WG } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { STWG[2] {} CLK_WG {} } { 0.000ns 0.000ns } { 0.000ns 1.500ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "46.500 ns" { TG42_IN HDD_CLK FDD_1440 TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "46.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 7.000ns 8.000ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { STWG[2] CLK_WG } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { STWG[2] {} CLK_WG {} } { 0.000ns 0.000ns } { 0.000ns 1.500ns } "" } } } 0 0 "tco from clock \"%1!s!\" to destination pin \"%2!s!\" through %5!s! \"%3!s!\" is %4!s!" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_TPD_RESULT" "TG42_IN TG42_OUT 10.000 ns Longest " "Info: Longest tpd from source pin \"TG42_IN\" to destination pin \"TG42_OUT\" is 10.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 8.500 ns \$00003~3 2 COMB LC128 1 " "Info: 2: + IC(0.000 ns) + CELL(7.000 ns) = 8.500 ns; Loc. = LC128; Fanout = 1; COMB Node = '\$00003~3'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { TG42_IN $00003~3 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 183 14 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 10.000 ns TG42_OUT 3 PIN PIN_85 0 " "Info: 3: + IC(0.000 ns) + CELL(1.500 ns) = 10.000 ns; Loc. = PIN_85; Fanout = 0; PIN Node = 'TG42_OUT'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { $00003~3 TG42_OUT } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 183 3 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "10.000 ns ( 100.00 % ) " "Info: Total cell delay = 10.000 ns ( 100.00 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "10.000 ns" { TG42_IN $00003~3 TG42_OUT } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "10.000 ns" { TG42_IN {} TG42_IN~out {} $00003~3 {} TG42_OUT {} } { 0.000ns 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 7.000ns 1.500ns } "" } } } 0 0 "%4!s! tpd from source pin \"%1!s!\" to destination pin \"%2!s!\" is %3!s!" 0 0 "" 0 -1} -{ "Info" "ITDB_TH_RESULT" "LR_T\[0\] SR TG42_IN 51.000 ns register " "Info: th for register \"LR_T\[0\]\" (data pin = \"SR\", clock pin = \"TG42_IN\") is 51.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN destination 54.500 ns + Longest register " "Info: + Longest clock path from clock \"TG42_IN\" to destination register is 54.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(2.000 ns) 3.500 ns HDD_CLK 2 REG LC88 10 " "Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "2.000 ns" { TG42_IN HDD_CLK } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 472 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 11.500 ns FDD_1440 3 REG LC91 13 " "Info: 3: + IC(1.000 ns) + CELL(7.000 ns) = 11.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { HDD_CLK FDD_1440 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 19.500 ns TURBING~5 4 COMB LOOP LC32 3 " "Info: 4: + IC(0.000 ns) + CELL(8.000 ns) = 19.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { FDD_1440 TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 25.500 ns CT_WG~6 5 COMB SEXP17 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 25.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 32.500 ns CT_WG 6 REG LC26 8 " "Info: 6: + IC(0.000 ns) + CELL(7.000 ns) = 32.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 40.500 ns STWG\[2\]~6bal 7 COMB LC16 3 " "Info: 7: + IC(1.000 ns) + CELL(7.000 ns) = 40.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 48.500 ns STWG\[2\] 8 REG LC19 6 " "Info: 8: + IC(1.000 ns) + CELL(7.000 ns) = 48.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 54.500 ns LR_T\[0\] 9 REG LC10 4 " "Info: 9: + IC(1.000 ns) + CELL(5.000 ns) = 54.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2] LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "49.500 ns ( 90.83 % ) " "Info: Total cell delay = 49.500 ns ( 90.83 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "5.000 ns ( 9.17 % ) " "Info: Total interconnect delay = 5.000 ns ( 9.17 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "54.500 ns" { TG42_IN HDD_CLK FDD_1440 TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "54.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 7.000ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.500 ns - Shortest pin register " "Info: - Shortest pin to register delay is 6.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns SR 1 PIN PIN_29 1 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_29; Fanout = 1; PIN Node = 'SR'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { SR } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 37 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.500 ns LR_T\[0\] 2 REG LC10 4 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { SR LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.500 ns ( 84.62 % ) " "Info: Total cell delay = 5.500 ns ( 84.62 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 15.38 % ) " "Info: Total interconnect delay = 1.000 ns ( 15.38 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.500 ns" { SR LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.500 ns" { SR {} SR~out {} LR_T[0] {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "54.500 ns" { TG42_IN HDD_CLK FDD_1440 TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "54.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 7.000ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.500 ns" { SR LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.500 ns" { SR {} SR~out {} LR_T[0] {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 5.000ns } "" } } } 0 0 "th for %5!s! \"%1!s!\" (data pin = \"%2!s!\", clock pin = \"%3!s!\") is %4!s!" 0 0 "" 0 -1} -{ "Critical Warning" "WTAN_REQUIREMENTS_NOT_MET_SLOW" "" "Critical Warning: Timing requirements for slow timing model timing analysis were not met. See Report window for details." { } { } 1 0 "Timing requirements for slow timing model timing analysis were not met. See Report window for details." 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "Classic Timing Analyzer 0 s 21 s Quartus II " "Info: Quartus II Classic Timing Analyzer was successful. 0 errors, 21 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "185 " "Info: Peak virtual memory: 185 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:23:32 2022 " "Info: Processing ended: Sun Aug 28 03:23:32 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:00 " "Info: Elapsed time: 00:00:00" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/sp2_max.(0).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(0).cnf.cdb deleted file mode 100644 index d08b88f..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(0).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(0).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(0).cnf.hdb deleted file mode 100644 index 1e1366a..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(0).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(1).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(1).cnf.cdb deleted file mode 100644 index ac1720b..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(1).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(1).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(1).cnf.hdb deleted file mode 100644 index 06c7580..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(1).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(10).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(10).cnf.cdb deleted file mode 100644 index 1434fe6..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(10).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(10).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(10).cnf.hdb deleted file mode 100644 index 014ef93..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(10).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(11).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(11).cnf.cdb deleted file mode 100644 index fe0c89f..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(11).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(11).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(11).cnf.hdb deleted file mode 100644 index 1e4026d..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(11).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(12).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(12).cnf.cdb deleted file mode 100644 index cc093f0..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(12).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(12).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(12).cnf.hdb deleted file mode 100644 index 258f5db..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(12).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(2).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(2).cnf.cdb deleted file mode 100644 index 51ce8fe..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(2).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(2).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(2).cnf.hdb deleted file mode 100644 index 1437590..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(2).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(3).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(3).cnf.cdb deleted file mode 100644 index 442c1b6..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(3).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(3).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(3).cnf.hdb deleted file mode 100644 index f1db55d..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(3).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(4).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(4).cnf.cdb deleted file mode 100644 index 9953e27..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(4).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(4).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(4).cnf.hdb deleted file mode 100644 index d8fc699..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(4).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(5).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(5).cnf.cdb deleted file mode 100644 index 32ae2a1..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(5).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(5).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(5).cnf.hdb deleted file mode 100644 index dfdb6be..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(5).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(6).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(6).cnf.cdb deleted file mode 100644 index 37fe50e..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(6).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(6).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(6).cnf.hdb deleted file mode 100644 index 771d3dd..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(6).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(7).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(7).cnf.cdb deleted file mode 100644 index d6b2c31..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(7).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(7).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(7).cnf.hdb deleted file mode 100644 index 771d3dd..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(7).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(8).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(8).cnf.cdb deleted file mode 100644 index 7f64e90..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(8).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(8).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(8).cnf.hdb deleted file mode 100644 index f093a65..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(8).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(9).cnf.cdb b/src/altera/quartus/max/db/sp2_max.(9).cnf.cdb deleted file mode 100644 index fc923b1..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(9).cnf.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.(9).cnf.hdb b/src/altera/quartus/max/db/sp2_max.(9).cnf.hdb deleted file mode 100644 index 014ef93..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.(9).cnf.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.asm.qmsg b/src/altera/quartus/max/db/sp2_max.asm.qmsg deleted file mode 100644 index 420657a..0000000 --- a/src/altera/quartus/max/db/sp2_max.asm.qmsg +++ /dev/null @@ -1,5 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Assembler Quartus II " "Info: Running Quartus II Assembler" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:30:42 2022 " "Info: Processing started: Sun Aug 28 03:30:42 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_asm --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Info" "IASM_ASM_GENERATING_PROGRAMMING_FILES" "" "Info: Assembler is generating device programming files" { } { } 0 0 "Assembler is generating device programming files" 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "Assembler 0 s 0 s Quartus II " "Info: Quartus II Assembler was successful. 0 errors, 0 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "199 " "Info: Peak virtual memory: 199 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:30:42 2022 " "Info: Processing ended: Sun Aug 28 03:30:42 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:00 " "Info: Elapsed time: 00:00:00" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/sp2_max.cbx.xml b/src/altera/quartus/max/db/sp2_max.cbx.xml deleted file mode 100644 index dc247dc..0000000 --- a/src/altera/quartus/max/db/sp2_max.cbx.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/altera/quartus/max/db/sp2_max.cmp.cdb b/src/altera/quartus/max/db/sp2_max.cmp.cdb deleted file mode 100644 index 6fc7fa8..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.cmp.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.cmp.hdb b/src/altera/quartus/max/db/sp2_max.cmp.hdb deleted file mode 100644 index 28f4b81..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.cmp.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.cmp.logdb b/src/altera/quartus/max/db/sp2_max.cmp.logdb deleted file mode 100644 index d45424f..0000000 --- a/src/altera/quartus/max/db/sp2_max.cmp.logdb +++ /dev/null @@ -1 +0,0 @@ -v1 diff --git a/src/altera/quartus/max/db/sp2_max.cmp.rdb b/src/altera/quartus/max/db/sp2_max.cmp.rdb deleted file mode 100644 index 027f2a0..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.cmp.rdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.cmp.tdb b/src/altera/quartus/max/db/sp2_max.cmp.tdb deleted file mode 100644 index e8eb0ac..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.cmp.tdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.cmp0.ddb b/src/altera/quartus/max/db/sp2_max.cmp0.ddb deleted file mode 100644 index 51a46a5..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.cmp0.ddb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.db_info b/src/altera/quartus/max/db/sp2_max.db_info deleted file mode 100644 index b1c9e83..0000000 --- a/src/altera/quartus/max/db/sp2_max.db_info +++ /dev/null @@ -1,3 +0,0 @@ -Quartus_Version = Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -Version_Index = 167832322 -Creation_Time = Sun Aug 28 03:22:36 2022 diff --git a/src/altera/quartus/max/db/sp2_max.eco.cdb b/src/altera/quartus/max/db/sp2_max.eco.cdb deleted file mode 100644 index 4a66dbf..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.eco.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.eda.qmsg b/src/altera/quartus/max/db/sp2_max.eda.qmsg deleted file mode 100644 index c64727f..0000000 --- a/src/altera/quartus/max/db/sp2_max.eda.qmsg +++ /dev/null @@ -1,5 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "EDA Netlist Writer Quartus II " "Info: Running Quartus II EDA Netlist Writer" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:26:23 2022 " "Info: Processing started: Sun Aug 28 03:26:23 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_eda --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_eda --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Warning" "WQNETO_NO_OUTPUT_FILES" "" "Warning: Can't generate output files. Specify command-line options to generate output files, or update EDA tool settings using GUI or Tcl script." { } { } 0 0 "Can't generate output files. Specify command-line options to generate output files, or update EDA tool settings using GUI or Tcl script." 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "EDA Netlist Writer 0 s 1 Quartus II " "Info: Quartus II EDA Netlist Writer was successful. 0 errors, 1 warning" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "163 " "Info: Peak virtual memory: 163 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:26:23 2022 " "Info: Processing ended: Sun Aug 28 03:26:23 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:00 " "Info: Elapsed time: 00:00:00" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/sp2_max.fit.qmsg b/src/altera/quartus/max/db/sp2_max.fit.qmsg deleted file mode 100644 index b118750..0000000 --- a/src/altera/quartus/max/db/sp2_max.fit.qmsg +++ /dev/null @@ -1,6 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Fitter Quartus II " "Info: Running Quartus II Fitter" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:30:40 2022 " "Info: Processing started: Sun Aug 28 03:30:40 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_fit --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_fit --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Info" "IMPP_MPP_USER_DEVICE" "sp2_max EPM7128STC100-10 " "Info: Selected device EPM7128STC100-10 for design \"sp2_max\"" { } { } 0 0 "Selected device %2!s! for design \"%1!s!\"" 0 0 "" 0 -1} -{ "Warning" "WCUT_CUT_UNATTACHED_ASGN" "" "Warning: Ignored locations or region assignments to the following nodes" { { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "10K_D\[0\] " "Warning: Node \"10K_D\[0\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "10K_D\[0\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "CLK\[14\] " "Warning: Node \"CLK\[14\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CLK\[14\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "D\[0\] " "Warning: Node \"D\[0\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "D\[0\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "FDD_C0 " "Warning: Node \"FDD_C0\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "FDD_C0" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "FDD_C1 " "Warning: Node \"FDD_C1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "FDD_C1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "FDD_C2 " "Warning: Node \"FDD_C2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "FDD_C2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "HDD_C0 " "Warning: Node \"HDD_C0\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_C0" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "HDD_C1 " "Warning: Node \"HDD_C1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_C1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "HDD_C2 " "Warning: Node \"HDD_C2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_C2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "HDD_C3 " "Warning: Node \"HDD_C3\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_C3" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "SINC_\[1\] " "Warning: Node \"SINC_\[1\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "SINC_\[1\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "SINC_\[2\] " "Warning: Node \"SINC_\[2\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "SINC_\[2\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "TR\[43\] " "Warning: Node \"TR\[43\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "TR\[43\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "UNUSED\[33\] " "Warning: Node \"UNUSED\[33\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "UNUSED\[33\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "UNUSED\[53\] " "Warning: Node \"UNUSED\[53\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "UNUSED\[53\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "UNUSED\[65\] " "Warning: Node \"UNUSED\[65\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "UNUSED\[65\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "UNUSED\[78\] " "Warning: Node \"UNUSED\[78\]\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "UNUSED\[78\]" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XA0 " "Warning: Node \"XA0\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XA0" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XA1 " "Warning: Node \"XA1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XA1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XA2 " "Warning: Node \"XA2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XA2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XHD1_CS1 " "Warning: Node \"XHD1_CS1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XHD1_CS1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XHD1_CS2 " "Warning: Node \"XHD1_CS2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XHD1_CS2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XHD2_CS1 " "Warning: Node \"XHD2_CS1\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XHD2_CS1" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNATTACHED_ASGN_SUB" "XHD2_CS2 " "Warning: Node \"XHD2_CS2\" is assigned to location or region, but does not exist in design" { } { { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XHD2_CS2" } } } } } 0 0 "Node \"%1!s!\" is assigned to location or region, but does not exist in design" 0 0 "" 0 -1} } { } 0 0 "Ignored locations or region assignments to the following nodes" 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "Fitter 0 s 25 s Quartus II " "Info: Quartus II Fitter was successful. 0 errors, 25 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "229 " "Info: Peak virtual memory: 229 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:30:41 2022 " "Info: Processing ended: Sun Aug 28 03:30:41 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:01 " "Info: Elapsed time: 00:00:01" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/sp2_max.hier_info b/src/altera/quartus/max/db/sp2_max.hier_info deleted file mode 100644 index c4c0b94..0000000 --- a/src/altera/quartus/max/db/sp2_max.hier_info +++ /dev/null @@ -1,76 +0,0 @@ -|sp2_max -TG42_IN => EXP_X.DATAIN -TG42_IN => EXP_Y.DATAIN -TG42_IN => HDD_CLK.CLK -TG42_IN => $00050.CLK -TG42_IN => $00051.CLK -TG42_IN => $00052.CLK -TG42_IN => $00053.CLK -TG42_OUT <= $00003.DB_MAX_OUTPUT_PORT_TYPE -TG42_BUF <= $00004.DB_MAX_OUTPUT_PORT_TYPE -CLKZZ <= $00008 -CLK14 <= $00009.DB_MAX_OUTPUT_PORT_TYPE -AUD <= CT[3].DB_MAX_OUTPUT_PORT_TYPE -BEEP <= -CMOS_DRD <= $00046.DB_MAX_OUTPUT_PORT_TYPE -CMOS_DWR <= $00044.DB_MAX_OUTPUT_PORT_TYPE -WR_PDOS <= $00041.DB_MAX_OUTPUT_PORT_TYPE -CLK_WG <= STWG[2].DB_MAX_OUTPUT_PORT_TYPE -FDAT <= $00021.DB_MAX_OUTPUT_PORT_TYPE -QDAT <= WGR[4].DB_MAX_OUTPUT_PORT_TYPE -/WG_WR <= $00042.DB_MAX_OUTPUT_PORT_TYPE -/WG_RD <= $00043.DB_MAX_OUTPUT_PORT_TYPE -DENS_X <= -WDAT <= REG_P[2].DB_MAX_OUTPUT_PORT_TYPE -XA[0] => ~NO_FANOUT~ -XA[1] => ~NO_FANOUT~ -XA[2] => ~NO_FANOUT~ -XACS => CNF_OFF.ACLR -SINC_1 <= $00005 -SINC_2 <= $00006 -FDD_C[2] => $00041.PRESET -FDD_C[2] => $00042.PRESET -FDD_C[2] => $00043.PRESET -FDD_C[2] => $00044.PRESET -FDD_C[2] => $00045.PRESET -FDD_C[2] => $00046.PRESET -HD_DIR <= $00049.DB_MAX_OUTPUT_PORT_TYPE -/CONF_X <= $00024 -10K_CLK <= HDD_CLK.DB_MAX_OUTPUT_PORT_TYPE -10K_D0 <= FDD_1440.DB_MAX_OUTPUT_PORT_TYPE -D0 => FDD_1440.DATAIN -VGA_IN => ~NO_FANOUT~ -SINC_V <= SINC_VT.DB_MAX_OUTPUT_PORT_TYPE -SINC_H <= SINC_HT.DB_MAX_OUTPUT_PORT_TYPE -SINC_IN => ~NO_FANOUT~ -XHD_RES <= $00047.DB_MAX_OUTPUT_PORT_TYPE -XHD_WR <= $00048.DB_MAX_OUTPUT_PORT_TYPE -XHD_RD <= $00049.DB_MAX_OUTPUT_PORT_TYPE -XHD1_CS[1] <= $00050.DB_MAX_OUTPUT_PORT_TYPE -XHD1_CS[2] <= $00051.DB_MAX_OUTPUT_PORT_TYPE -XHD2_CS[1] <= $00052.DB_MAX_OUTPUT_PORT_TYPE -XHD2_CS[2] <= $00053.DB_MAX_OUTPUT_PORT_TYPE -XHR_RDY => ~NO_FANOUT~ -EPM_RES => $00047.ACLR -PW_GOOD => $00047.DATAIN -UNUSED65 => ~NO_FANOUT~ -UNUSED33 => ~NO_FANOUT~ -UNUSED1 => ~NO_FANOUT~ -UNUSED2 => ~NO_FANOUT~ -UNUSED5 => ~NO_FANOUT~ -UNUSED7 => ~NO_FANOUT~ -UNUSED22 => ~NO_FANOUT~ -UNUSED24 => ~NO_FANOUT~ -UNUSED27 => ~NO_FANOUT~ -UNUSED28 => ~NO_FANOUT~ -UNUSED49 => ~NO_FANOUT~ -UNUSED50 => ~NO_FANOUT~ -UNUSED53 => ~NO_FANOUT~ -UNUSED55 => ~NO_FANOUT~ -UNUSED63 => ~NO_FANOUT~ -UNUSED70 => ~NO_FANOUT~ -UNUSED72 => ~NO_FANOUT~ -UNUSED77 => ~NO_FANOUT~ -UNUSED78 => ~NO_FANOUT~ - - diff --git a/src/altera/quartus/max/db/sp2_max.hif b/src/altera/quartus/max/db/sp2_max.hif deleted file mode 100644 index 0c955da..0000000 --- a/src/altera/quartus/max/db/sp2_max.hif +++ /dev/null @@ -1,1184 +0,0 @@ -Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -32 -1921 -OFF -OFF -OFF -ON -ON -OFF -FV_OFF -Level2 -0 -0 -VRSM_ON -VHSM_ON -0 --- Start Library Paths -- --- End Library Paths -- --- Start VHDL Libraries -- --- End VHDL Libraries -- -# entity -sp2_max -# storage -db|sp2_max.(0).cnf -db|sp2_max.(0).cnf -# case_insensitive -# source_file -sp2_max.tdf -eea9fe738f5a8cf67a20667cd5c0c72e -7 -# user_parameter { -G_MODE -1 -PARAMETER_UNKNOWN -DEF -NUM -NO -PARAMETER_UNKNOWN -DEF -NUMBER1 -00100000X -PARAMETER_UNSIGNED_BIN -DEF -NUMBER2 -00110111X -PARAMETER_UNSIGNED_BIN -DEF -NUMBER3 -01001101X -PARAMETER_UNSIGNED_BIN -DEF -NUMBER4 -01010010X -PARAMETER_UNSIGNED_BIN -DEF -NUMBER5 -00100000X -PARAMETER_UNSIGNED_BIN -DEF -NUMBER6 -00100000X -PARAMETER_UNSIGNED_BIN -DEF -NUMBER7 -00100000X -PARAMETER_UNSIGNED_BIN -DEF -} -# used_port { -0 --1 -0 -} -# hierarchies { -| -} -# macro_sequence - -# end -# entity -lpm_counter -# storage -db|sp2_max.(1).cnf -db|sp2_max.(1).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_counter.tdf -9583d6cd53fa119b14456768b85150d1 -7 -# user_parameter { -AUTO_CARRY_CHAINS -ON -AUTO_CARRY -USR -IGNORE_CARRY_BUFFERS -OFF -IGNORE_CARRY -USR -AUTO_CASCADE_CHAINS -ON -AUTO_CASCADE -USR -IGNORE_CASCADE_BUFFERS -OFF -IGNORE_CASCADE -USR -LPM_WIDTH -4 -PARAMETER_UNKNOWN -USR -LPM_DIRECTION -UP -PARAMETER_UNKNOWN -USR -LPM_MODULUS -0 -PARAMETER_UNKNOWN -DEF -LPM_AVALUE -UNUSED -PARAMETER_UNKNOWN -DEF -LPM_SVALUE -UNUSED -PARAMETER_UNKNOWN -DEF -LPM_PORT_UPDOWN -PORT_CONNECTIVITY -PARAMETER_UNKNOWN -DEF -DEVICE_FAMILY -MAX7000S -PARAMETER_UNKNOWN -USR -CARRY_CHAIN -MANUAL -PARAMETER_UNKNOWN -USR -CARRY_CHAIN_LENGTH -48 -CARRY_CHAIN_LENGTH -USR -NOT_GATE_PUSH_BACK -ON -NOT_GATE_PUSH_BACK -USR -CARRY_CNT_EN -SMART -PARAMETER_UNKNOWN -DEF -LABWIDE_SCLR -ON -PARAMETER_UNKNOWN -DEF -USE_NEW_VERSION -TRUE -PARAMETER_UNKNOWN -DEF -CBXI_PARAMETER -NOTHING -PARAMETER_UNKNOWN -DEF -} -# used_port { -q3 --1 -3 -q0 --1 -3 -clock --1 -3 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_counter.inc -7f888b135ddf66f0653c44cb18ac5 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_add_sub.inc -7d9a33dd39f13aa690c3d0edd88351 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_synch_counter.inc -09966d10c3e95c888bf8e443df34d8 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_synch_counter_f.inc -93a5aae1d8bd19c9e8e8eef93ab2177d -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_counter_f10ke.inc -536f8da8218b4a93689416f9baea1880 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|cmpconst.inc -e61874547688138e6fc0b49ff8760 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_constant.inc -dcde44eee59335c1e2fe75d574f9646 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|dffeea.inc -55d29d20f7e852c37746bec4e2495ec -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_counter_stratix.inc -2251b94d26afaa53635df1aff6b6e7be -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_compare.inc -aec4ea1b78f4cda1c3effe18f1abbf63 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|aglobal90.inc -99832fdf63412df51d7531202d74e75 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_decode.inc -bd0e2f5e01c1bd360461dceb53d48 -} -# macro_sequence - -# end -# entity -lpm_counter -# storage -db|sp2_max.(2).cnf -db|sp2_max.(2).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_counter.tdf -9583d6cd53fa119b14456768b85150d1 -7 -# user_parameter { -AUTO_CARRY_CHAINS -ON -AUTO_CARRY -USR -IGNORE_CARRY_BUFFERS -OFF -IGNORE_CARRY -USR -AUTO_CASCADE_CHAINS -ON -AUTO_CASCADE -USR -IGNORE_CASCADE_BUFFERS -OFF -IGNORE_CASCADE -USR -LPM_WIDTH -9 -PARAMETER_UNKNOWN -USR -LPM_DIRECTION -UP -PARAMETER_UNKNOWN -USR -LPM_MODULUS -0 -PARAMETER_UNKNOWN -DEF -LPM_AVALUE -UNUSED -PARAMETER_UNKNOWN -DEF -LPM_SVALUE -UNUSED -PARAMETER_UNKNOWN -DEF -LPM_PORT_UPDOWN -PORT_CONNECTIVITY -PARAMETER_UNKNOWN -DEF -DEVICE_FAMILY -MAX7000S -PARAMETER_UNKNOWN -USR -CARRY_CHAIN -MANUAL -PARAMETER_UNKNOWN -USR -CARRY_CHAIN_LENGTH -48 -CARRY_CHAIN_LENGTH -USR -NOT_GATE_PUSH_BACK -ON -NOT_GATE_PUSH_BACK -USR -CARRY_CNT_EN -SMART -PARAMETER_UNKNOWN -DEF -LABWIDE_SCLR -ON -PARAMETER_UNKNOWN -DEF -USE_NEW_VERSION -TRUE -PARAMETER_UNKNOWN -DEF -CBXI_PARAMETER -NOTHING -PARAMETER_UNKNOWN -DEF -} -# used_port { -sclr --1 -3 -q8 --1 -3 -q7 --1 -3 -q6 --1 -3 -q5 --1 -3 -q4 --1 -3 -q3 --1 -3 -q2 --1 -3 -q1 --1 -3 -q0 --1 -3 -clock --1 -3 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_counter.inc -7f888b135ddf66f0653c44cb18ac5 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_add_sub.inc -7d9a33dd39f13aa690c3d0edd88351 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_synch_counter.inc -09966d10c3e95c888bf8e443df34d8 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_synch_counter_f.inc -93a5aae1d8bd19c9e8e8eef93ab2177d -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_counter_f10ke.inc -536f8da8218b4a93689416f9baea1880 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|cmpconst.inc -e61874547688138e6fc0b49ff8760 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_constant.inc -dcde44eee59335c1e2fe75d574f9646 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|dffeea.inc -55d29d20f7e852c37746bec4e2495ec -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_counter_stratix.inc -2251b94d26afaa53635df1aff6b6e7be -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_compare.inc -aec4ea1b78f4cda1c3effe18f1abbf63 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|aglobal90.inc -99832fdf63412df51d7531202d74e75 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_decode.inc -bd0e2f5e01c1bd360461dceb53d48 -} -# macro_sequence - -# end -# entity -lpm_counter -# storage -db|sp2_max.(3).cnf -db|sp2_max.(3).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_counter.tdf -9583d6cd53fa119b14456768b85150d1 -7 -# user_parameter { -AUTO_CARRY_CHAINS -ON -AUTO_CARRY -USR -IGNORE_CARRY_BUFFERS -OFF -IGNORE_CARRY -USR -AUTO_CASCADE_CHAINS -ON -AUTO_CASCADE -USR -IGNORE_CASCADE_BUFFERS -OFF -IGNORE_CASCADE -USR -LPM_WIDTH -6 -PARAMETER_UNKNOWN -USR -LPM_DIRECTION -UP -PARAMETER_UNKNOWN -USR -LPM_MODULUS -0 -PARAMETER_UNKNOWN -DEF -LPM_AVALUE -UNUSED -PARAMETER_UNKNOWN -DEF -LPM_SVALUE -UNUSED -PARAMETER_UNKNOWN -DEF -LPM_PORT_UPDOWN -PORT_CONNECTIVITY -PARAMETER_UNKNOWN -DEF -DEVICE_FAMILY -MAX7000S -PARAMETER_UNKNOWN -USR -CARRY_CHAIN -MANUAL -PARAMETER_UNKNOWN -USR -CARRY_CHAIN_LENGTH -48 -CARRY_CHAIN_LENGTH -USR -NOT_GATE_PUSH_BACK -ON -NOT_GATE_PUSH_BACK -USR -CARRY_CNT_EN -SMART -PARAMETER_UNKNOWN -DEF -LABWIDE_SCLR -ON -PARAMETER_UNKNOWN -DEF -USE_NEW_VERSION -TRUE -PARAMETER_UNKNOWN -DEF -CBXI_PARAMETER -NOTHING -PARAMETER_UNKNOWN -DEF -} -# used_port { -sclr --1 -3 -q5 --1 -3 -q4 --1 -3 -q3 --1 -3 -q2 --1 -3 -q1 --1 -3 -q0 --1 -3 -clock --1 -3 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_counter.inc -7f888b135ddf66f0653c44cb18ac5 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_add_sub.inc -7d9a33dd39f13aa690c3d0edd88351 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_synch_counter.inc -09966d10c3e95c888bf8e443df34d8 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_synch_counter_f.inc -93a5aae1d8bd19c9e8e8eef93ab2177d -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_counter_f10ke.inc -536f8da8218b4a93689416f9baea1880 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|cmpconst.inc -e61874547688138e6fc0b49ff8760 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_constant.inc -dcde44eee59335c1e2fe75d574f9646 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|dffeea.inc -55d29d20f7e852c37746bec4e2495ec -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_counter_stratix.inc -2251b94d26afaa53635df1aff6b6e7be -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_compare.inc -aec4ea1b78f4cda1c3effe18f1abbf63 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|aglobal90.inc -99832fdf63412df51d7531202d74e75 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_decode.inc -bd0e2f5e01c1bd360461dceb53d48 -} -# macro_sequence - -# end -# entity -lpm_add_sub -# storage -db|sp2_max.(4).cnf -db|sp2_max.(4).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|lpm_add_sub.tdf -2e51ebc96381892436afe139aaa6b25 -7 -# user_parameter { -LPM_WIDTH -5 -PARAMETER_UNKNOWN -USR -LPM_REPRESENTATION -UNSIGNED -PARAMETER_UNKNOWN -USR -LPM_DIRECTION -ADD -PARAMETER_UNKNOWN -USR -ONE_INPUT_IS_CONSTANT -YES -PARAMETER_UNKNOWN -USR -LPM_PIPELINE -0 -PARAMETER_UNKNOWN -DEF -MAXIMIZE_SPEED -5 -PARAMETER_UNKNOWN -DEF -REGISTERED_AT_END -0 -PARAMETER_UNKNOWN -DEF -OPTIMIZE_FOR_SPEED -9 -PARAMETER_UNKNOWN -USR -USE_CS_BUFFERS -1 -PARAMETER_UNKNOWN -DEF -CARRY_CHAIN -MANUAL -PARAMETER_UNKNOWN -USR -CARRY_CHAIN_LENGTH -48 -CARRY_CHAIN_LENGTH -USR -DEVICE_FAMILY -MAX7000S -PARAMETER_UNKNOWN -USR -USE_WYS -OFF -PARAMETER_UNKNOWN -DEF -STYLE -FAST -PARAMETER_UNKNOWN -USR -CBXI_PARAMETER -add_sub_uch -PARAMETER_UNKNOWN -USR -AUTO_CARRY_CHAINS -ON -AUTO_CARRY -USR -IGNORE_CARRY_BUFFERS -OFF -IGNORE_CARRY -USR -AUTO_CASCADE_CHAINS -ON -AUTO_CASCADE -USR -IGNORE_CASCADE_BUFFERS -OFF -IGNORE_CASCADE -USR -} -# used_port { -result4 --1 -3 -result3 --1 -3 -result2 --1 -3 -result1 --1 -3 -result0 --1 -3 -dataa4 --1 -3 -dataa3 --1 -3 -dataa2 --1 -3 -dataa1 --1 -3 -dataa0 --1 -3 -datab4 --1 -1 -datab3 --1 -1 -datab2 --1 -1 -datab1 --1 -1 -datab0 --1 -2 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_stratix_add_sub.inc -c08f604aefba5b4f1f554e565113c6 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|look_add.inc -ab9f577d30c5ef3166fab6c1c32c4a -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|alt_mercury_add_sub.inc -ae39f15ed67cc9a095d29f68f6ad0f8 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|bypassff.inc -8e8df160d449a63ec15dc86ecf2b373f -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|aglobal90.inc -99832fdf63412df51d7531202d74e75 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|altshift.inc -70fa13aee7d6d160ef20b2de32813a -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|addcore.inc -ff795e21e4847824c03218724f1a1252 -} -# macro_sequence - -# end -# entity -addcore -# storage -db|sp2_max.(5).cnf -db|sp2_max.(5).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|addcore.tdf -1b2b6ae11c95f15ac3d40e6c6c4170 -7 -# user_parameter { -AUTO_CARRY_CHAINS -ON -AUTO_CARRY -USR -IGNORE_CARRY_BUFFERS -OFF -IGNORE_CARRY -USR -AUTO_CASCADE_CHAINS -ON -AUTO_CASCADE -USR -IGNORE_CASCADE_BUFFERS -OFF -IGNORE_CASCADE -USR -width -5 -PARAMETER_UNKNOWN -USR -REPRESENTATION -UNSIGNED -PARAMETER_UNKNOWN -USR -DIRECTION -ADD -PARAMETER_UNKNOWN -USR -USE_CS_BUFFERS -1 -PARAMETER_UNKNOWN -USR -CARRY_CHAIN -MANUAL -PARAMETER_UNKNOWN -USR -CARRY_CHAIN_LENGTH -48 -CARRY_CHAIN_LENGTH -USR -DEVICE_FAMILY -MAX7000S -PARAMETER_UNKNOWN -USR -} -# used_port { -result4 --1 -3 -result3 --1 -3 -result2 --1 -3 -result1 --1 -3 -result0 --1 -3 -datab4 --1 -3 -datab3 --1 -3 -datab2 --1 -3 -datab1 --1 -3 -datab0 --1 -3 -dataa4 --1 -3 -dataa3 --1 -3 -dataa2 --1 -3 -dataa1 --1 -3 -dataa0 --1 -3 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|a_csnbuffer.inc -49de46f6a395e2e6edecabe6eac9d873 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|aglobal90.inc -99832fdf63412df51d7531202d74e75 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|addcore.inc -ff795e21e4847824c03218724f1a1252 -} -# macro_sequence - -# end -# entity -a_csnbuffer -# storage -db|sp2_max.(6).cnf -db|sp2_max.(6).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|a_csnbuffer.tdf -0a953daa377c9212d3c374d37725bd -7 -# user_parameter { -WIDTH -5 -PARAMETER_UNKNOWN -USR -NEED_CARRY -0 -PARAMETER_UNKNOWN -DEF -USE_CS_BUFFERS -1 -PARAMETER_UNKNOWN -USR -} -# used_port { -sout0 --1 -3 -sin0 --1 -3 -} -# macro_sequence - -# end -# entity -a_csnbuffer -# storage -db|sp2_max.(7).cnf -db|sp2_max.(7).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|a_csnbuffer.tdf -0a953daa377c9212d3c374d37725bd -7 -# user_parameter { -WIDTH -5 -PARAMETER_UNKNOWN -USR -NEED_CARRY -0 -PARAMETER_UNKNOWN -DEF -USE_CS_BUFFERS -1 -PARAMETER_UNKNOWN -USR -} -# used_port { -sout4 --1 -3 -sout3 --1 -3 -sout2 --1 -3 -sout1 --1 -3 -sout0 --1 -3 -sin4 --1 -3 -sin3 --1 -3 -sin2 --1 -3 -sin1 --1 -3 -sin0 --1 -3 -} -# macro_sequence - -# end -# entity -addcore -# storage -db|sp2_max.(8).cnf -db|sp2_max.(8).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|addcore.tdf -1b2b6ae11c95f15ac3d40e6c6c4170 -7 -# user_parameter { -AUTO_CARRY_CHAINS -ON -AUTO_CARRY -USR -IGNORE_CARRY_BUFFERS -OFF -IGNORE_CARRY -USR -AUTO_CASCADE_CHAINS -ON -AUTO_CASCADE -USR -IGNORE_CASCADE_BUFFERS -OFF -IGNORE_CASCADE -USR -width -8 -PARAMETER_UNKNOWN -USR -REPRESENTATION -UNSIGNED -PARAMETER_UNKNOWN -USR -DIRECTION -ADD -PARAMETER_UNKNOWN -USR -USE_CS_BUFFERS -1 -PARAMETER_UNKNOWN -USR -CARRY_CHAIN -MANUAL -PARAMETER_UNKNOWN -USR -CARRY_CHAIN_LENGTH -48 -CARRY_CHAIN_LENGTH -USR -DEVICE_FAMILY -MAX7000S -PARAMETER_UNKNOWN -USR -} -# used_port { -unreg_result4 --1 -3 -unreg_result3 --1 -3 -unreg_result2 --1 -3 -unreg_result1 --1 -3 -unreg_result0 --1 -3 -result5 --1 -3 -result4 --1 -3 -result3 --1 -3 -result2 --1 -3 -result1 --1 -3 -result0 --1 -3 -datab4 --1 -3 -datab3 --1 -3 -datab2 --1 -3 -datab1 --1 -3 -datab0 --1 -3 -dataa4 --1 -3 -dataa3 --1 -3 -dataa2 --1 -3 -dataa1 --1 -3 -dataa0 --1 -3 -} -# include_file { -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|a_csnbuffer.inc -49de46f6a395e2e6edecabe6eac9d873 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|aglobal90.inc -99832fdf63412df51d7531202d74e75 -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|addcore.inc -ff795e21e4847824c03218724f1a1252 -} -# macro_sequence - -# end -# entity -a_csnbuffer -# storage -db|sp2_max.(9).cnf -db|sp2_max.(9).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|a_csnbuffer.tdf -0a953daa377c9212d3c374d37725bd -7 -# user_parameter { -WIDTH -8 -PARAMETER_UNKNOWN -USR -NEED_CARRY -0 -PARAMETER_UNKNOWN -DEF -USE_CS_BUFFERS -1 -PARAMETER_UNKNOWN -USR -} -# used_port { -sout0 --1 -3 -sin0 --1 -3 -} -# macro_sequence - -# end -# entity -a_csnbuffer -# storage -db|sp2_max.(10).cnf -db|sp2_max.(10).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|a_csnbuffer.tdf -0a953daa377c9212d3c374d37725bd -7 -# user_parameter { -WIDTH -8 -PARAMETER_UNKNOWN -USR -NEED_CARRY -0 -PARAMETER_UNKNOWN -DEF -USE_CS_BUFFERS -1 -PARAMETER_UNKNOWN -USR -} -# used_port { -sout7 --1 -3 -sout6 --1 -3 -sout5 --1 -3 -sout4 --1 -3 -sout3 --1 -3 -sout2 --1 -3 -sout1 --1 -3 -sout0 --1 -3 -sin7 --1 -3 -sin6 --1 -3 -sin5 --1 -3 -sin4 --1 -3 -sin3 --1 -3 -sin2 --1 -3 -sin1 --1 -3 -sin0 --1 -3 -} -# macro_sequence - -# end -# entity -altshift -# storage -db|sp2_max.(11).cnf -db|sp2_max.(11).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|altshift.tdf -b979c99547bac7dc31574fe678a95a9 -7 -# user_parameter { -WIDTH -5 -PARAMETER_UNKNOWN -USR -DEPTH -0 -PARAMETER_UNKNOWN -USR -} -# used_port { -result4 --1 -3 -result3 --1 -3 -result2 --1 -3 -result1 --1 -3 -result0 --1 -3 -data4 --1 -3 -data3 --1 -3 -data2 --1 -3 -data1 --1 -3 -data0 --1 -3 -} -# macro_sequence - -# end -# entity -altshift -# storage -db|sp2_max.(12).cnf -db|sp2_max.(12).cnf -# case_insensitive -# source_file -..|..|..|..|..|altera|90sp2|quartus|libraries|megafunctions|altshift.tdf -b979c99547bac7dc31574fe678a95a9 -7 -# user_parameter { -WIDTH -1 -PARAMETER_UNKNOWN -USR -DEPTH -0 -PARAMETER_UNKNOWN -USR -} -# used_port { -result0 --1 -3 -data0 --1 -3 -} -# macro_sequence - -# end -# complete - \ No newline at end of file diff --git a/src/altera/quartus/max/db/sp2_max.lpc.html b/src/altera/quartus/max/db/sp2_max.lpc.html deleted file mode 100644 index 1dae3d2..0000000 --- a/src/altera/quartus/max/db/sp2_max.lpc.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - -
HierarchyInputConstant InputUnused InputFloating InputOutputConstant OutputUnused OutputFloating OutputBidirConstant BidirUnused BidirInput only BidirOutput only Bidir
diff --git a/src/altera/quartus/max/db/sp2_max.lpc.rdb b/src/altera/quartus/max/db/sp2_max.lpc.rdb deleted file mode 100644 index 8bd163a..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.lpc.rdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.lpc.txt b/src/altera/quartus/max/db/sp2_max.lpc.txt deleted file mode 100644 index dbfe520..0000000 --- a/src/altera/quartus/max/db/sp2_max.lpc.txt +++ /dev/null @@ -1,5 +0,0 @@ -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Legal Partition Candidates ; -+-----------+-------+----------------+--------------+----------------+--------+-----------------+---------------+-----------------+-------+----------------+--------------+------------------+-------------------+ -; Hierarchy ; Input ; Constant Input ; Unused Input ; Floating Input ; Output ; Constant Output ; Unused Output ; Floating Output ; Bidir ; Constant Bidir ; Unused Bidir ; Input only Bidir ; Output only Bidir ; -+-----------+-------+----------------+--------------+----------------+--------+-----------------+---------------+-----------------+-------+----------------+--------------+------------------+-------------------+ diff --git a/src/altera/quartus/max/db/sp2_max.map.cdb b/src/altera/quartus/max/db/sp2_max.map.cdb deleted file mode 100644 index 3384886..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.map.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.map.hdb b/src/altera/quartus/max/db/sp2_max.map.hdb deleted file mode 100644 index e526ba3..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.map.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.map.logdb b/src/altera/quartus/max/db/sp2_max.map.logdb deleted file mode 100644 index d45424f..0000000 --- a/src/altera/quartus/max/db/sp2_max.map.logdb +++ /dev/null @@ -1 +0,0 @@ -v1 diff --git a/src/altera/quartus/max/db/sp2_max.map.qmsg b/src/altera/quartus/max/db/sp2_max.map.qmsg deleted file mode 100644 index d196367..0000000 --- a/src/altera/quartus/max/db/sp2_max.map.qmsg +++ /dev/null @@ -1,56 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Analysis & Synthesis Quartus II " "Info: Running Quartus II Analysis & Synthesis" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:30:38 2022 " "Info: Processing started: Sun Aug 28 03:30:38 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_map --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_map --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Warning" "WSGN_SEARCH_FILE" "sp2_max.tdf 1 1 " "Warning: Using design file sp2_max.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project" { { "Info" "ISGN_ENTITY_NAME" "1 SP2_MAX " "Info: Found entity 1: SP2_MAX" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 18 1 0 } } } 0 0 "Found entity %1!d!: %2!s!" 0 0 "" 0 -1} } { } 0 0 "Using design file %1!s!, which is not specified as a design file for the current project, but contains definitions for %2!llu! design units and %3!llu! entities in project" 0 0 "" 0 -1} -{ "Info" "ISGN_START_ELABORATION_TOP" "sp2_max " "Info: Elaborating entity \"sp2_max\" for the top level hierarchy" { } { } 0 0 "Elaborating entity \"%1!s!\" for the top level hierarchy" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "CTV8C " "Warning: Variable or input pin \"CTV8C\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 167 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "XA " "Warning: Variable or input pin \"XA\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 52 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "VGA_IN " "Warning: Variable or input pin \"VGA_IN\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 70 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "SINC_IN " "Warning: Variable or input pin \"SINC_IN\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 75 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "XHR_RDY " "Warning: Variable or input pin \"XHR_RDY\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 83 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED65 " "Warning: Variable or input pin \"UNUSED65\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 88 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED33 " "Warning: Variable or input pin \"UNUSED33\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 89 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED1 " "Warning: Variable or input pin \"UNUSED1\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 90 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED2 " "Warning: Variable or input pin \"UNUSED2\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 91 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED5 " "Warning: Variable or input pin \"UNUSED5\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 92 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED7 " "Warning: Variable or input pin \"UNUSED7\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 93 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED22 " "Warning: Variable or input pin \"UNUSED22\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 94 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED24 " "Warning: Variable or input pin \"UNUSED24\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 95 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED27 " "Warning: Variable or input pin \"UNUSED27\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 96 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED28 " "Warning: Variable or input pin \"UNUSED28\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 97 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED49 " "Warning: Variable or input pin \"UNUSED49\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 98 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED50 " "Warning: Variable or input pin \"UNUSED50\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 99 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED53 " "Warning: Variable or input pin \"UNUSED53\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 100 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED55 " "Warning: Variable or input pin \"UNUSED55\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 101 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED63 " "Warning: Variable or input pin \"UNUSED63\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 102 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED70 " "Warning: Variable or input pin \"UNUSED70\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 103 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED72 " "Warning: Variable or input pin \"UNUSED72\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 104 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED77 " "Warning: Variable or input pin \"UNUSED77\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 105 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Warning" "WTDFX_UNREFERENCED_NODE" "UNUSED78 " "Warning: Variable or input pin \"UNUSED78\" is defined but never used" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 106 2 0 } } } 0 0 "Variable or input pin \"%1!s!\" is defined but never used" 0 0 "" 0 -1} -{ "Info" "IOPT_INFERENCING_SUMMARY" "3 " "Info: Inferred 3 megafunctions from design logic" { { "Info" "IOPT_LPM_COUNTER_INFERRED" "CT\[0\]~0 4 " "Info: Inferred lpm_counter megafunction (LPM_WIDTH=4) from the following logic: \"CT\[0\]~0\"" { } { { "sp2_max.tdf" "CT\[0\]~0" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 119 4 0 } } } 0 0 "Inferred lpm_counter megafunction (LPM_WIDTH=%2!d!) from the following logic: \"%1!s!\"" 0 0 "" 0 -1} { "Info" "IOPT_LPM_COUNTER_INFERRED" "CTV\[0\]~9 9 " "Info: Inferred lpm_counter megafunction (LPM_WIDTH=9) from the following logic: \"CTV\[0\]~9\"" { } { { "sp2_max.tdf" "CTV\[0\]~9" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 121 5 0 } } } 0 0 "Inferred lpm_counter megafunction (LPM_WIDTH=%2!d!) from the following logic: \"%1!s!\"" 0 0 "" 0 -1} { "Info" "IOPT_LPM_COUNTER_INFERRED" "CTH\[0\]~7 6 " "Info: Inferred lpm_counter megafunction (LPM_WIDTH=6) from the following logic: \"CTH\[0\]~7\"" { } { { "sp2_max.tdf" "CTH\[0\]~7" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 120 5 0 } } } 0 0 "Inferred lpm_counter megafunction (LPM_WIDTH=%2!d!) from the following logic: \"%1!s!\"" 0 0 "" 0 -1} } { } 0 0 "Inferred %1!d! megafunctions from design logic" 0 0 "" 0 -1} -{ "Info" "ILPMS_INFERENCING_SUMMARY" "1 " "Info: Inferred 1 megafunctions from design logic" { { "Info" "ILPMS_LPM_ADD_SUB_INFERRED" "op_6 lpm_add_sub " "Info: Inferred adder/subtractor megafunction (\"lpm_add_sub\") from the following logic: \"op_6\"" { } { } 0 0 "Inferred adder/subtractor megafunction (\"%2!s!\") from the following logic: \"%1!s!\"" 0 0 "" 0 -1} } { } 0 0 "Inferred %1!llu! megafunctions from design logic" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "lpm_counter:CT_rtl_0 " "Info: Elaborated megafunction instantiation \"lpm_counter:CT_rtl_0\"" { } { } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "lpm_counter:CT_rtl_0 " "Info: Instantiated megafunction \"lpm_counter:CT_rtl_0\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 4 " "Info: Parameter \"LPM_WIDTH\" = \"4\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_DIRECTION UP " "Info: Parameter \"LPM_DIRECTION\" = \"UP\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_TYPE LPM_COUNTER " "Info: Parameter \"LPM_TYPE\" = \"LPM_COUNTER\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "lpm_counter:CTV_rtl_1 " "Info: Elaborated megafunction instantiation \"lpm_counter:CTV_rtl_1\"" { } { } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "lpm_counter:CTV_rtl_1 " "Info: Instantiated megafunction \"lpm_counter:CTV_rtl_1\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 9 " "Info: Parameter \"LPM_WIDTH\" = \"9\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_DIRECTION UP " "Info: Parameter \"LPM_DIRECTION\" = \"UP\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_TYPE LPM_COUNTER " "Info: Parameter \"LPM_TYPE\" = \"LPM_COUNTER\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "lpm_counter:CTH_rtl_2 " "Info: Elaborated megafunction instantiation \"lpm_counter:CTH_rtl_2\"" { } { } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "lpm_counter:CTH_rtl_2 " "Info: Instantiated megafunction \"lpm_counter:CTH_rtl_2\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 6 " "Info: Parameter \"LPM_WIDTH\" = \"6\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_DIRECTION UP " "Info: Parameter \"LPM_DIRECTION\" = \"UP\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_TYPE LPM_COUNTER " "Info: Parameter \"LPM_TYPE\" = \"LPM_COUNTER\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_ELABORATION_HEADER" "lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\"" { } { } 0 0 "Elaborated megafunction instantiation \"%1!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_PARAM_TOP" "lpm_add_sub:op_6 " "Info: Instantiated megafunction \"lpm_add_sub:op_6\" with the following parameter:" { { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_WIDTH 5 " "Info: Parameter \"LPM_WIDTH\" = \"5\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_DIRECTION ADD " "Info: Parameter \"LPM_DIRECTION\" = \"ADD\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "LPM_REPRESENTATION UNSIGNED " "Info: Parameter \"LPM_REPRESENTATION\" = \"UNSIGNED\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} { "Info" "ISGN_MEGAFN_PARAM_SUB" "ONE_INPUT_IS_CONSTANT YES " "Info: Parameter \"ONE_INPUT_IS_CONSTANT\" = \"YES\"" { } { } 0 0 "Parameter \"%1!s!\" = \"%2!s!\"" 0 0 "" 0 -1} } { } 0 0 "Instantiated megafunction \"%1!s!\" with the following parameter:" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "lpm_add_sub.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.tdf" 268 4 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|a_csnbuffer:oflow_node lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|a_csnbuffer:oflow_node\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 97 2 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|a_csnbuffer:result_node lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|a_csnbuffer:result_node\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 202 5 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\] lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 203 10 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\|a_csnbuffer:oflow_node lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\|a_csnbuffer:oflow_node\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 97 2 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\|a_csnbuffer:result_node lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|addcore:adder\|addcore:adder\[0\]\|a_csnbuffer:result_node\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "addcore.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf" 189 5 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|altshift:result_ext_latency_ffs lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|altshift:result_ext_latency_ffs\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "lpm_add_sub.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.tdf" 286 2 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "ISGN_MEGAFN_DESCENDANT" "lpm_add_sub:op_6\|altshift:carry_ext_latency_ffs lpm_add_sub:op_6 " "Info: Elaborated megafunction instantiation \"lpm_add_sub:op_6\|altshift:carry_ext_latency_ffs\", which is child of megafunction instantiation \"lpm_add_sub:op_6\"" { } { { "lpm_add_sub.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.tdf" 288 2 0 } } } 0 0 "Elaborated megafunction instantiation \"%1!s!\", which is child of megafunction instantiation \"%2!s!\"" 0 0 "" 0 -1} -{ "Info" "IOPT_MLS_IGNORED_SUMMARY" "6 " "Info: Ignored 6 buffer(s)" { { "Info" "IOPT_MLS_IGNORED_SOFT" "6 " "Info: Ignored 6 SOFT buffer(s)" { } { } 0 0 "Ignored %1!d! SOFT buffer(s)" 0 0 "" 0 -1} } { } 0 0 "Ignored %1!d! buffer(s)" 0 0 "" 0 -1} -{ "Info" "IOPT_MLS_PRESET_POWER_UP" "" "Info: Registers with preset signals will power-up high" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 451 13 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 450 13 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 449 13 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 445 13 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 446 12 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 447 12 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 479 27 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 478 27 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 489 20 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 490 20 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 494 20 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 495 20 0 } } } 0 0 "Registers with preset signals will power-up high" 0 0 "" 0 -1} -{ "Warning" "WOPT_MLS_ENABLED_OE" "" "Warning: TRI or OPNDRN buffers permanently enabled" { { "Warning" "WOPT_MLS_NODE_NAME" "\$00005 " "Warning: Node \"\$00005\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 206 12 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WOPT_MLS_NODE_NAME" "\$00006 " "Warning: Node \"\$00006\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 207 12 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { } 0 0 "TRI or OPNDRN buffers permanently enabled" 0 0 "" 0 -1} -{ "Warning" "WOPT_MLS_STUCK_PIN_HDR" "" "Warning: Output pins are stuck at VCC or GND" { { "Warning" "WOPT_MLS_STUCK_PIN" "BEEP GND " "Warning (13410): Pin \"BEEP\" is stuck at GND" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 333 2 0 } } } 0 13410 "Pin \"%1!s!\" is stuck at %2!s!" 0 0 "" 0 -1} { "Warning" "WOPT_MLS_STUCK_PIN" "DENS_X VCC " "Warning (13410): Pin \"DENS_X\" is stuck at VCC" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 345 2 0 } } } 0 13410 "Pin \"%1!s!\" is stuck at %2!s!" 0 0 "" 0 -1} { "Warning" "WOPT_MLS_STUCK_PIN" "HD_CS GND " "Warning (13410): Pin \"HD_CS\" is stuck at GND" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 458 9 0 } } } 0 13410 "Pin \"%1!s!\" is stuck at %2!s!" 0 0 "" 0 -1} } { } 0 0 "Output pins are stuck at VCC or GND" 0 0 "" 0 -1} -{ "Info" "IMTM_MTM_PROMOTE_GLOBAL" "" "Info: Promoted pin-driven signal(s) to global signal" { { "Info" "IMTM_MTM_PROMOTE_GLOBAL_CLOCK" "TG42_IN " "Info: Promoted clock signal driven by pin \"TG42_IN\" to global clock signal" { } { } 0 0 "Promoted clock signal driven by pin \"%1!s!\" to global clock signal" 0 0 "" 0 -1} { "Info" "IMTM_MTM_PROMOTE_GLOBAL_CLEAR" "EPM_RES " "Info: Promoted clear signal driven by pin \"EPM_RES\" to global clear signal" { } { } 0 0 "Promoted clear signal driven by pin \"%1!s!\" to global clear signal" 0 0 "" 0 -1} } { } 0 0 "Promoted pin-driven signal(s) to global signal" 0 0 "" 0 -1} -{ "Info" "ISCL_SCL_LOST_FANOUT_MSG_HDR" "1 1 " "Info: 1 registers lost all their fanouts during netlist optimizations. The first 1 are displayed below." { { "Info" "ISCL_SCL_LOST_FANOUT_MSG_SUB" "XCT\[2\] " "Info: Register \"XCT\[2\]\" lost all its fanouts during netlist optimizations." { } { } 0 0 "Register \"%1!s!\" lost all its fanouts during netlist optimizations." 0 0 "" 0 -1} } { } 0 0 "%1!d! registers lost all their fanouts during netlist optimizations. The first %2!d! are displayed below." 0 0 "" 0 -1} -{ "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN_HDR" "25 " "Warning: Design contains 25 input pin(s) that do not drive logic" { { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "XA\[0\] " "Warning (15610): No output dependent on input pin \"XA\[0\]\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 52 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "XA\[1\] " "Warning (15610): No output dependent on input pin \"XA\[1\]\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 52 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "XA\[2\] " "Warning (15610): No output dependent on input pin \"XA\[2\]\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 52 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "VGA_IN " "Warning (15610): No output dependent on input pin \"VGA_IN\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 70 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "SINC_IN " "Warning (15610): No output dependent on input pin \"SINC_IN\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 75 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "XHR_RDY " "Warning (15610): No output dependent on input pin \"XHR_RDY\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 83 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED65 " "Warning (15610): No output dependent on input pin \"UNUSED65\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 88 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED33 " "Warning (15610): No output dependent on input pin \"UNUSED33\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 89 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED1 " "Warning (15610): No output dependent on input pin \"UNUSED1\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 90 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED2 " "Warning (15610): No output dependent on input pin \"UNUSED2\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 91 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED5 " "Warning (15610): No output dependent on input pin \"UNUSED5\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 92 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED7 " "Warning (15610): No output dependent on input pin \"UNUSED7\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 93 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED22 " "Warning (15610): No output dependent on input pin \"UNUSED22\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 94 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED24 " "Warning (15610): No output dependent on input pin \"UNUSED24\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 95 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED27 " "Warning (15610): No output dependent on input pin \"UNUSED27\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 96 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED28 " "Warning (15610): No output dependent on input pin \"UNUSED28\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 97 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED49 " "Warning (15610): No output dependent on input pin \"UNUSED49\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 98 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED50 " "Warning (15610): No output dependent on input pin \"UNUSED50\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 99 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED53 " "Warning (15610): No output dependent on input pin \"UNUSED53\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 100 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED55 " "Warning (15610): No output dependent on input pin \"UNUSED55\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 101 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED63 " "Warning (15610): No output dependent on input pin \"UNUSED63\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 102 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED70 " "Warning (15610): No output dependent on input pin \"UNUSED70\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 103 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED72 " "Warning (15610): No output dependent on input pin \"UNUSED72\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 104 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED77 " "Warning (15610): No output dependent on input pin \"UNUSED77\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 105 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WCUT_CUT_UNNECESSARY_INPUT_PIN" "UNUSED78 " "Warning (15610): No output dependent on input pin \"UNUSED78\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 106 2 0 } } } 0 15610 "No output dependent on input pin \"%1!s!\"" 0 0 "" 0 -1} } { } 0 0 "Design contains %1!d! input pin(s) that do not drive logic" 0 0 "" 0 -1} -{ "Info" "ICUT_CUT_TM_SUMMARY" "163 " "Info: Implemented 163 device resources after synthesis - the final resource count might be different" { { "Info" "ICUT_CUT_TM_IPINS" "46 " "Info: Implemented 46 input pins" { } { } 0 0 "Implemented %1!d! input pins" 0 0 "" 0 -1} { "Info" "ICUT_CUT_TM_OPINS" "30 " "Info: Implemented 30 output pins" { } { } 0 0 "Implemented %1!d! output pins" 0 0 "" 0 -1} { "Info" "ICUT_CUT_TM_BIDIRS" "4 " "Info: Implemented 4 bidirectional pins" { } { } 0 0 "Implemented %1!d! bidirectional pins" 0 0 "" 0 -1} { "Info" "ICUT_CUT_TM_MCELLS" "74 " "Info: Implemented 74 macrocells" { } { } 0 0 "Implemented %1!d! macrocells" 0 0 "" 0 -1} { "Info" "ICUT_CUT_TM_SEXPS" "9 " "Info: Implemented 9 shareable expanders" { } { } 0 0 "Implemented %1!d! shareable expanders" 0 0 "" 0 -1} } { } 0 0 "Implemented %1!d! device resources after synthesis - the final resource count might be different" 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "Analysis & Synthesis 0 s 58 s Quartus II " "Info: Quartus II Analysis & Synthesis was successful. 0 errors, 58 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "229 " "Info: Peak virtual memory: 229 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:30:39 2022 " "Info: Processing ended: Sun Aug 28 03:30:39 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:01 " "Info: Elapsed time: 00:00:01" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:01 " "Info: Total CPU time (on all processors): 00:00:01" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/sp2_max.pre_map.cdb b/src/altera/quartus/max/db/sp2_max.pre_map.cdb deleted file mode 100644 index 58843c7..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.pre_map.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.pre_map.hdb b/src/altera/quartus/max/db/sp2_max.pre_map.hdb deleted file mode 100644 index 21994f9..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.pre_map.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.rtlv.hdb b/src/altera/quartus/max/db/sp2_max.rtlv.hdb deleted file mode 100644 index 221dd6d..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.rtlv.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.rtlv_sg.cdb b/src/altera/quartus/max/db/sp2_max.rtlv_sg.cdb deleted file mode 100644 index a3905ed..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.rtlv_sg.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.rtlv_sg_swap.cdb b/src/altera/quartus/max/db/sp2_max.rtlv_sg_swap.cdb deleted file mode 100644 index bccc94e..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.rtlv_sg_swap.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.sgdiff.cdb b/src/altera/quartus/max/db/sp2_max.sgdiff.cdb deleted file mode 100644 index 5ddc0cc..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.sgdiff.cdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.sgdiff.hdb b/src/altera/quartus/max/db/sp2_max.sgdiff.hdb deleted file mode 100644 index 984bee0..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.sgdiff.hdb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.sld_design_entry.sci b/src/altera/quartus/max/db/sp2_max.sld_design_entry.sci deleted file mode 100644 index 7f9b4cb..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.sld_design_entry.sci and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.sld_design_entry_dsc.sci b/src/altera/quartus/max/db/sp2_max.sld_design_entry_dsc.sci deleted file mode 100644 index d333b2d..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.sld_design_entry_dsc.sci and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.syn_hier_info b/src/altera/quartus/max/db/sp2_max.syn_hier_info deleted file mode 100644 index e69de29..0000000 diff --git a/src/altera/quartus/max/db/sp2_max.tan.qmsg b/src/altera/quartus/max/db/sp2_max.tan.qmsg deleted file mode 100644 index 6d93a07..0000000 --- a/src/altera/quartus/max/db/sp2_max.tan.qmsg +++ /dev/null @@ -1,31 +0,0 @@ -{ "Info" "IQEXE_SEPARATOR" "" "Info: *******************************************************************" { } { } 3 0 "*******************************************************************" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_PRODUCT" "Classic Timing Analyzer Quartus II " "Info: Running Quartus II Classic Timing Analyzer" { { "Info" "IQEXE_START_BANNER_VERSION" "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition " "Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" { } { } 0 0 "%1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_START_BANNER_TIME" "Sun Aug 28 03:30:43 2022 " "Info: Processing started: Sun Aug 28 03:30:43 2022" { } { } 0 0 "Processing started: %1!s!" 0 0 "" 0 -1} } { } 4 0 "Running %2!s! %1!s!" 0 0 "" 0 -1} -{ "Info" "IQEXE_START_BANNER_COMMANDLINE" "quartus_tan --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max " "Info: Command: quartus_tan --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max" { } { } 0 0 "Command: %1!s!" 0 0 "" 0 -1} -{ "Info" "IDAT_DAT_STARTED" "" "Info: Started post-fitting delay annotation" { } { } 0 0 "Started post-fitting delay annotation" 0 0 "" 0 -1} -{ "Info" "IDAT_DAT_COMPLETED" "" "Info: Delay annotation completed successfully" { } { } 0 0 "Delay annotation completed successfully" 0 0 "" 0 -1} -{ "Warning" "WTDB_ANALYZE_COMB_LATCHES_NOT_SUPPORTED" "" "Warning: Timing Analysis does not support the analysis of latches as synchronous elements for the currently selected device family" { } { } 0 0 "Timing Analysis does not support the analysis of latches as synchronous elements for the currently selected device family" 0 0 "" 0 -1} -{ "Warning" "WTAN_SCC_LOOP" "2 " "Warning: Found combinational loop of 2 nodes" { { "Warning" "WTAN_SCC_NODE" "RDAT_X~11 " "Warning: Node \"RDAT_X~11\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 326 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WTAN_SCC_NODE" "RDAT_X~6 " "Warning: Node \"RDAT_X~6\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 326 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 326 2 0 } } } 0 0 "Found combinational loop of %1!d! nodes" 0 0 "" 0 -1} -{ "Warning" "WTAN_SCC_LOOP" "1 " "Warning: Found combinational loop of 1 nodes" { { "Warning" "WTAN_SCC_NODE" "TURBING~5 " "Warning: Node \"TURBING~5\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } } 0 0 "Found combinational loop of %1!d! nodes" 0 0 "" 0 -1} -{ "Warning" "WTAN_SCC_LOOP" "3 " "Warning: Found combinational loop of 3 nodes" { { "Warning" "WTAN_SCC_NODE" "THDD~2 " "Warning: Node \"THDD~2\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 436 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WTAN_SCC_NODE" "NTHDD~13 " "Warning: Node \"NTHDD~13\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WTAN_SCC_NODE" "NTHDD~11 " "Warning: Node \"NTHDD~11\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 436 2 0 } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } } 0 0 "Found combinational loop of %1!d! nodes" 0 0 "" 0 -1} -{ "Warning" "WTAN_SCC_LOOP" "2 " "Warning: Found combinational loop of 2 nodes" { { "Warning" "WTAN_SCC_NODE" "NT320~12 " "Warning: Node \"NT320~12\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 426 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} { "Warning" "WTAN_SCC_NODE" "NT320~2 " "Warning: Node \"NT320~2\"" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 426 2 0 } } } 0 0 "Node \"%1!s!\"" 0 0 "" 0 -1} } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 426 2 0 } } } 0 0 "Found combinational loop of %1!d! nodes" 0 0 "" 0 -1} -{ "Warning" "WTAN_NO_CLOCKS" "" "Warning: Found pins functioning as undefined clocks and/or memory enables" { { "Info" "ITAN_NODE_MAP_TO_CLK" "TG42_IN " "Info: Assuming node \"TG42_IN\" is an undefined clock" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "TG42_IN" } } } } } 0 0 "Assuming node \"%1!s!\" is an undefined clock" 0 0 "" 0 -1} { "Info" "ITAN_NODE_MAP_TO_CLK" "STE " "Info: Assuming node \"STE\" is an undefined clock" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "STE" } } } } } 0 0 "Assuming node \"%1!s!\" is an undefined clock" 0 0 "" 0 -1} { "Info" "ITAN_NODE_MAP_TO_CLK" "RSTB " "Info: Assuming node \"RSTB\" is an undefined clock" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "RSTB" } } } } } 0 0 "Assuming node \"%1!s!\" is an undefined clock" 0 0 "" 0 -1} { "Info" "ITAN_NODE_MAP_TO_CLK" "WSTB " "Info: Assuming node \"WSTB\" is an undefined clock" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "WSTB" } } } } } 0 0 "Assuming node \"%1!s!\" is an undefined clock" 0 0 "" 0 -1} } { } 0 0 "Found pins functioning as undefined clocks and/or memory enables" 0 0 "" 0 -1} -{ "Warning" "WTAN_RIPPLE_OR_GATED_CLOCKS_FOUND" "20 " "Warning: Found 20 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew" { { "Info" "ITAN_GATED_CLK" "CT_WG1~8bal " "Info: Detected gated clock \"CT_WG1~8bal\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 304 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG1~8bal" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "STWG\[2\] " "Info: Detected ripple clock \"STWG\[2\]\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "STWG\[2\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "STWG\[2\]~6bal " "Info: Detected gated clock \"STWG\[2\]~6bal\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "STWG\[2\]~6bal" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "CT_WG~6 " "Info: Detected gated clock \"CT_WG~6\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG~6" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "CT_WG~5 " "Info: Detected gated clock \"CT_WG~5\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG~5" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "CT_WG~4 " "Info: Detected gated clock \"CT_WG~4\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG~4" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "CT_WG " "Info: Detected ripple clock \"CT_WG\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "CT_WG" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "TURBING~5 " "Info: Detected gated clock \"TURBING~5\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "TURBING~5" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "FDD_1440 " "Info: Detected ripple clock \"FDD_1440\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "FDD_1440" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "HDD_CLK " "Info: Detected ripple clock \"HDD_CLK\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 472 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "HDD_CLK" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "lpm_counter:CT_rtl_0\|dffs\[3\] " "Info: Detected ripple clock \"lpm_counter:CT_rtl_0\|dffs\[3\]\" as buffer" { } { { "lpm_counter.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf" 283 9 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "lpm_counter:CT_rtl_0\|dffs\[3\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "SINC_HT " "Info: Detected ripple clock \"SINC_HT\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 123 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "SINC_HT" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "SINC_VT " "Info: Detected ripple clock \"SINC_VT\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 124 2 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "SINC_VT" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "lpm_counter:CT_rtl_0\|dffs\[0\] " "Info: Detected ripple clock \"lpm_counter:CT_rtl_0\|dffs\[0\]\" as buffer" { } { { "lpm_counter.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf" 283 9 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "lpm_counter:CT_rtl_0\|dffs\[0\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "XCT\[2\]~4 " "Info: Detected gated clock \"XCT\[2\]~4\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[2\]~4" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "XCT\[2\]~3 " "Info: Detected gated clock \"XCT\[2\]~3\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[2\]~3" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "XCT\[2\]~12 " "Info: Detected gated clock \"XCT\[2\]~12\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[2\]~12" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_GATED_CLK" "XCT\[2\]~11 " "Info: Detected gated clock \"XCT\[2\]~11\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[2\]~11" } } } } } 0 0 "Detected gated clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "XCT\[0\] " "Info: Detected ripple clock \"XCT\[0\]\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[0\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} { "Info" "ITAN_RIPPLE_CLK" "XCT\[1\] " "Info: Detected ripple clock \"XCT\[1\]\" as buffer" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } { "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" "" { Assignment "c:/altera/90sp2/quartus/bin/Assignment Editor.qase" 1 { { 0 "XCT\[1\]" } } } } } 0 0 "Detected ripple clock \"%1!s!\" as buffer" 0 0 "" 0 -1} } { } 0 0 "Found %1!d! node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_SLACK_RESULT" "TG42_IN register /RESET register \$00051 -47.0 ns " "Info: Slack time is -47.0 ns for clock \"TG42_IN\" between source register \"/RESET\" and destination register \"\$00051\"" { { "Info" "ITDB_SIMPLE_FMAX_RESULT" "9.62 MHz 104.0 ns " "Info: Fmax is 9.62 MHz (period= 104.0 ns)" { } { } 0 0 "Fmax is %1!s! (period= %2!s!)" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "-25.000 ns + Largest register register " "Info: + Largest register to register requirement is -25.000 ns" { { "Info" "ITDB_FULL_SETUP_REQUIREMENT" "5.000 ns + " "Info: + Setup relationship between source and destination is 5.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 10.000 ns " "Info: + Latch edge is 10.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination TG42_IN 10.000 ns 0.000 ns 50 " "Info: Clock period of Destination clock \"TG42_IN\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 5.000 ns " "Info: - Launch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source TG42_IN 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Source clock \"TG42_IN\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Setup relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "-26.000 ns + Largest " "Info: + Largest clock skew is -26.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN destination 1.500 ns + Shortest register " "Info: + Shortest clock path from clock \"TG42_IN\" to destination register is 1.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 1.500 ns \$00051 2 REG LC121 1 " "Info: 2: + IC(0.000 ns) + CELL(0.000 ns) = 1.500 ns; Loc. = LC121; Fanout = 1; REG Node = '\$00051'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "0.000 ns" { TG42_IN $00051 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 490 20 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "1.500 ns ( 100.00 % ) " "Info: Total cell delay = 1.500 ns ( 100.00 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00051 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN source 27.500 ns - Longest register " "Info: - Longest clock path from clock \"TG42_IN\" to source register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(5.000 ns) 6.500 ns XCT\[2\]~4 2 COMB SEXP49 1 " "Info: 2: + IC(0.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = SEXP49; Fanout = 1; COMB Node = 'XCT\[2\]~4'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "5.000 ns" { TG42_IN XCT[2]~4 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 13.500 ns XCT\[1\] 3 REG LC56 18 " "Info: 3: + IC(0.000 ns) + CELL(7.000 ns) = 13.500 ns; Loc. = LC56; Fanout = 18; REG Node = 'XCT\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { XCT[2]~4 XCT[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 21.500 ns lpm_counter:CT_rtl_0\|dffs\[3\] 4 REG LC53 10 " "Info: 4: + IC(1.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC53; Fanout = 10; REG Node = 'lpm_counter:CT_rtl_0\|dffs\[3\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { XCT[1] lpm_counter:CT_rtl_0|dffs[3] } "NODE_NAME" } } { "lpm_counter.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf" 283 9 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns /RESET 5 REG LC85 19 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC85; Fanout = 19; REG Node = '/RESET'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 173 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[3] {} /RESET {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00051 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[3] {} /RESET {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 173 2 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns - " "Info: - Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 490 20 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00051 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[3] {} /RESET {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "22.000 ns - Longest register register " "Info: - Longest register to register delay is 22.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns /RESET 1 REG LC85 19 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC85; Fanout = 19; REG Node = '/RESET'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { /RESET } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 173 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(16.000 ns) 16.000 ns THDD~2 2 COMB LOOP LC114 14 " "Info: 2: + IC(0.000 ns) + CELL(16.000 ns) = 16.000 ns; Loc. = LC114; Fanout = 14; COMB LOOP Node = 'THDD~2'" { { "Info" "ITDB_PART_OF_SCC" "NTHDD~11 LC119 " "Info: Loc. = LC119; Node \"NTHDD~11\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~11 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "THDD~2 LC114 " "Info: Loc. = LC114; Node \"THDD~2\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { THDD~2 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "NTHDD~13 LC118 " "Info: Loc. = LC118; Node \"NTHDD~13\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~13 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~11 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { THDD~2 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 436 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~13 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "16.000 ns" { /RESET THDD~2 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 22.000 ns \$00051 3 REG LC121 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 22.000 ns; Loc. = LC121; Fanout = 1; REG Node = '\$00051'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { THDD~2 $00051 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 490 20 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "21.000 ns ( 95.45 % ) " "Info: Total cell delay = 21.000 ns ( 95.45 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 4.55 % ) " "Info: Total interconnect delay = 1.000 ns ( 4.55 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "22.000 ns" { /RESET THDD~2 $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "22.000 ns" { /RESET {} THDD~2 {} $00051 {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 16.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00051 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[3] /RESET } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[3] {} /RESET {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "22.000 ns" { /RESET THDD~2 $00051 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "22.000 ns" { /RESET {} THDD~2 {} $00051 {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 16.000ns 5.000ns } "" } } } 0 0 "Slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_REQUIREMENTS_NOT_MET" "Clock Setup: 'TG42_IN' 57 " "Warning: Can't achieve timing requirement Clock Setup: 'TG42_IN' along 57 path(s). See Report window for details." { } { } 0 0 "Can't achieve timing requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_SLACK_RESULT" "STE register LR_T\[0\] register REG_P\[2\] -21.0 ns " "Info: Slack time is -21.0 ns for clock \"STE\" between source register \"LR_T\[0\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_SIMPLE_FMAX_RESULT" "19.23 MHz 52.0 ns " "Info: Fmax is 19.23 MHz (period= 52.0 ns)" { } { } 0 0 "Fmax is %1!s! (period= %2!s!)" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "-15.000 ns + Largest register register " "Info: + Largest register to register requirement is -15.000 ns" { { "Info" "ITDB_FULL_SETUP_REQUIREMENT" "5.000 ns + " "Info: + Setup relationship between source and destination is 5.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination STE 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"STE\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 0.000 ns " "Info: - Launch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source STE 10.000 ns 0.000 ns 50 " "Info: Clock period of Source clock \"STE\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Setup relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "-16.000 ns + Largest " "Info: + Largest clock skew is -16.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "STE destination 27.500 ns + Shortest register " "Info: + Shortest clock path from clock \"STE\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns STE 1 CLK PIN_94 4 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STE } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STE TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "STE source 43.500 ns - Longest register " "Info: - Longest clock path from clock \"STE\" to source register is 43.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns STE 1 CLK PIN_94 4 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STE } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STE TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 29.500 ns STWG\[2\]~6bal 5 COMB LC16 3 " "Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 37.500 ns STWG\[2\] 6 REG LC19 6 " "Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 43.500 ns LR_T\[0\] 7 REG LC10 4 " "Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2] LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "39.500 ns ( 90.80 % ) " "Info: Total cell delay = 39.500 ns ( 90.80 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "4.000 ns ( 9.20 % ) " "Info: Total interconnect delay = 4.000 ns ( 9.20 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { STE TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { STE TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns - " "Info: - Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { STE TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns - Longest register register " "Info: - Longest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns LR_T\[0\] 1 REG LC10 4 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { STE TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "Slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_REQUIREMENTS_NOT_MET" "Clock Setup: 'STE' 6 " "Warning: Can't achieve timing requirement Clock Setup: 'STE' along 6 path(s). See Report window for details." { } { } 0 0 "Can't achieve timing requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_SLACK_RESULT" "RSTB register LR_T\[0\] register REG_P\[2\] -21.0 ns " "Info: Slack time is -21.0 ns for clock \"RSTB\" between source register \"LR_T\[0\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_SIMPLE_FMAX_RESULT" "19.23 MHz 52.0 ns " "Info: Fmax is 19.23 MHz (period= 52.0 ns)" { } { } 0 0 "Fmax is %1!s! (period= %2!s!)" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "-15.000 ns + Largest register register " "Info: + Largest register to register requirement is -15.000 ns" { { "Info" "ITDB_FULL_SETUP_REQUIREMENT" "5.000 ns + " "Info: + Setup relationship between source and destination is 5.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination RSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"RSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 0.000 ns " "Info: - Launch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source RSTB 10.000 ns 0.000 ns 50 " "Info: Clock period of Source clock \"RSTB\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Setup relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "-16.000 ns + Largest " "Info: + Largest clock skew is -16.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "RSTB destination 27.500 ns + Shortest register " "Info: + Shortest clock path from clock \"RSTB\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns RSTB 1 CLK PIN_25 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { RSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "RSTB source 43.500 ns - Longest register " "Info: - Longest clock path from clock \"RSTB\" to source register is 43.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns RSTB 1 CLK PIN_25 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { RSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 29.500 ns STWG\[2\]~6bal 5 COMB LC16 3 " "Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 37.500 ns STWG\[2\] 6 REG LC19 6 " "Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 43.500 ns LR_T\[0\] 7 REG LC10 4 " "Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2] LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "39.500 ns ( 90.80 % ) " "Info: Total cell delay = 39.500 ns ( 90.80 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "4.000 ns ( 9.20 % ) " "Info: Total interconnect delay = 4.000 ns ( 9.20 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns - " "Info: - Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns - Longest register register " "Info: - Longest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns LR_T\[0\] 1 REG LC10 4 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "Slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_REQUIREMENTS_NOT_MET" "Clock Setup: 'RSTB' 6 " "Warning: Can't achieve timing requirement Clock Setup: 'RSTB' along 6 path(s). See Report window for details." { } { } 0 0 "Can't achieve timing requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_SLACK_RESULT" "WSTB register LR_T\[0\] register REG_P\[2\] -21.0 ns " "Info: Slack time is -21.0 ns for clock \"WSTB\" between source register \"LR_T\[0\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_SIMPLE_FMAX_RESULT" "19.23 MHz 52.0 ns " "Info: Fmax is 19.23 MHz (period= 52.0 ns)" { } { } 0 0 "Fmax is %1!s! (period= %2!s!)" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "-15.000 ns + Largest register register " "Info: + Largest register to register requirement is -15.000 ns" { { "Info" "ITDB_FULL_SETUP_REQUIREMENT" "5.000 ns + " "Info: + Setup relationship between source and destination is 5.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination WSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"WSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 0.000 ns " "Info: - Launch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source WSTB 10.000 ns 0.000 ns 50 " "Info: Clock period of Source clock \"WSTB\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Setup relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "-16.000 ns + Largest " "Info: + Largest clock skew is -16.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "WSTB destination 27.500 ns + Shortest register " "Info: + Shortest clock path from clock \"WSTB\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns WSTB 1 CLK PIN_10 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { WSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { WSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "WSTB source 43.500 ns - Longest register " "Info: - Longest clock path from clock \"WSTB\" to source register is 43.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns WSTB 1 CLK PIN_10 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { WSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { WSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 29.500 ns STWG\[2\]~6bal 5 COMB LC16 3 " "Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 37.500 ns STWG\[2\] 6 REG LC19 6 " "Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 43.500 ns LR_T\[0\] 7 REG LC10 4 " "Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2] LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "39.500 ns ( 90.80 % ) " "Info: Total cell delay = 39.500 ns ( 90.80 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "4.000 ns ( 9.20 % ) " "Info: Total interconnect delay = 4.000 ns ( 9.20 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns - " "Info: - Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns - Longest register register " "Info: - Longest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns LR_T\[0\] 1 REG LC10 4 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "43.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "43.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { LR_T[0] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { LR_T[0] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "Slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_REQUIREMENTS_NOT_MET" "Clock Setup: 'WSTB' 6 " "Warning: Can't achieve timing requirement Clock Setup: 'WSTB' along 6 path(s). See Report window for details." { } { } 0 0 "Can't achieve timing requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_MIN_SLACK_RESULT" "TG42_IN register FDD_1440 register \$00021 -12.2 ns " "Info: Minimum slack time is -12.2 ns for clock \"TG42_IN\" between source register \"FDD_1440\" and destination register \"\$00021\"" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "14.800 ns + Shortest register register " "Info: + Shortest register to register delay is 14.800 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns FDD_1440 1 REG LC91 13 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { FDD_1440 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.800 ns) 8.800 ns RDAT_X~6 2 COMB LOOP LC21 6 " "Info: 2: + IC(0.000 ns) + CELL(8.800 ns) = 8.800 ns; Loc. = LC21; Fanout = 6; COMB LOOP Node = 'RDAT_X~6'" { { "Info" "ITDB_PART_OF_SCC" "RDAT_X~6 LC21 " "Info: Loc. = LC21; Node \"RDAT_X~6\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDAT_X~6 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "RDAT_X~11 LC20 " "Info: Loc. = LC20; Node \"RDAT_X~11\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDAT_X~11 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDAT_X~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 326 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RDAT_X~11 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.800 ns" { FDD_1440 RDAT_X~6 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.800 ns \$00021 3 REG LC17 12 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.800 ns; Loc. = LC17; Fanout = 12; REG Node = '\$00021'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { RDAT_X~6 $00021 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 328 9 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "13.800 ns ( 93.24 % ) " "Info: Total cell delay = 13.800 ns ( 93.24 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 6.76 % ) " "Info: Total interconnect delay = 1.000 ns ( 6.76 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "14.800 ns" { FDD_1440 RDAT_X~6 $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "14.800 ns" { FDD_1440 {} RDAT_X~6 {} $00021 {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 8.800ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "27.000 ns - Smallest register register " "Info: - Smallest register to register requirement is 27.000 ns" { { "Info" "ITDB_FULL_HOLD_REQUIREMENT" "0.000 ns + " "Info: + Hold relationship between source and destination is 0.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 0.000 ns " "Info: + Latch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination TG42_IN 10.000 ns 0.000 ns 50 " "Info: Clock period of Destination clock \"TG42_IN\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Hold 1 " "Info: Multicycle Hold factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 0.000 ns " "Info: - Launch edge is 0.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source TG42_IN 10.000 ns 0.000 ns 50 " "Info: Clock period of Source clock \"TG42_IN\" is 10.000 ns with offset of 0.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Hold 1 " "Info: Multicycle Hold factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Hold relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "26.000 ns + Smallest " "Info: + Smallest clock skew is 26.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN destination 35.500 ns + Longest register " "Info: + Longest clock path from clock \"TG42_IN\" to destination register is 35.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(5.000 ns) 6.500 ns XCT\[2\]~4 2 COMB SEXP49 1 " "Info: 2: + IC(0.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = SEXP49; Fanout = 1; COMB Node = 'XCT\[2\]~4'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "5.000 ns" { TG42_IN XCT[2]~4 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 13.500 ns XCT\[1\] 3 REG LC56 18 " "Info: 3: + IC(0.000 ns) + CELL(7.000 ns) = 13.500 ns; Loc. = LC56; Fanout = 18; REG Node = 'XCT\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { XCT[2]~4 XCT[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 113 5 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 21.500 ns lpm_counter:CT_rtl_0\|dffs\[0\] 4 REG LC122 9 " "Info: 4: + IC(1.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC122; Fanout = 9; REG Node = 'lpm_counter:CT_rtl_0\|dffs\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { XCT[1] lpm_counter:CT_rtl_0|dffs[0] } "NODE_NAME" } } { "lpm_counter.tdf" "" { Text "c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf" 283 9 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 29.500 ns CT_WG1~8bal 5 COMB LC28 7 " "Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC28; Fanout = 7; COMB Node = 'CT_WG1~8bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 304 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 35.500 ns \$00021 6 REG LC17 12 " "Info: 6: + IC(1.000 ns) + CELL(5.000 ns) = 35.500 ns; Loc. = LC17; Fanout = 12; REG Node = '\$00021'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG1~8bal $00021 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 328 9 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "32.500 ns ( 91.55 % ) " "Info: Total cell delay = 32.500 ns ( 91.55 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "3.000 ns ( 8.45 % ) " "Info: Total interconnect delay = 3.000 ns ( 8.45 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "35.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "35.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[0] {} CT_WG1~8bal {} $00021 {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN source 9.500 ns - Shortest register " "Info: - Shortest clock path from clock \"TG42_IN\" to source register is 9.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(2.000 ns) 3.500 ns HDD_CLK 2 REG LC88 10 " "Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "2.000 ns" { TG42_IN HDD_CLK } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 472 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 9.500 ns FDD_1440 3 REG LC91 13 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 9.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { HDD_CLK FDD_1440 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "8.500 ns ( 89.47 % ) " "Info: Total cell delay = 8.500 ns ( 89.47 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 10.53 % ) " "Info: Total interconnect delay = 1.000 ns ( 10.53 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "9.500 ns" { TG42_IN HDD_CLK FDD_1440 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "9.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "35.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "35.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[0] {} CT_WG1~8bal {} $00021 {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "9.500 ns" { TG42_IN HDD_CLK FDD_1440 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "9.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 328 9 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "35.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "35.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[0] {} CT_WG1~8bal {} $00021 {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "9.500 ns" { TG42_IN HDD_CLK FDD_1440 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "9.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "14.800 ns" { FDD_1440 RDAT_X~6 $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "14.800 ns" { FDD_1440 {} RDAT_X~6 {} $00021 {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 8.800ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "35.500 ns" { TG42_IN XCT[2]~4 XCT[1] lpm_counter:CT_rtl_0|dffs[0] CT_WG1~8bal $00021 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "35.500 ns" { TG42_IN {} TG42_IN~out {} XCT[2]~4 {} XCT[1] {} lpm_counter:CT_rtl_0|dffs[0] {} CT_WG1~8bal {} $00021 {} } { 0.000ns 0.000ns 0.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "9.500 ns" { TG42_IN HDD_CLK FDD_1440 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "9.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 5.000ns } "" } } } 0 0 "Minimum slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Warning" "WTAN_FULL_MINIMUM_REQUIREMENTS_NOT_MET" "TG42_IN 48 " "Warning: Can't achieve minimum setup and hold requirement TG42_IN along 48 path(s). See Report window for details." { } { } 0 0 "Can't achieve minimum setup and hold requirement %1!s! along %2!d! path(s). See Report window for details." 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_MIN_SLACK_RESULT" "STE register REG_P\[1\] register REG_P\[2\] 5.0 ns " "Info: Minimum slack time is 5.0 ns for clock \"STE\" between source register \"REG_P\[1\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns + Shortest register register " "Info: + Shortest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns REG_P\[1\] 1 REG LC2 3 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "1.000 ns - Smallest register register " "Info: - Smallest register to register requirement is 1.000 ns" { { "Info" "ITDB_FULL_HOLD_REQUIREMENT" "0.000 ns + " "Info: + Hold relationship between source and destination is 0.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination STE 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"STE\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Hold 1 " "Info: Multicycle Hold factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 5.000 ns " "Info: - Launch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source STE 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Source clock \"STE\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Hold 1 " "Info: Multicycle Hold factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Hold relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "0.000 ns + Smallest " "Info: + Smallest clock skew is 0.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "STE destination 27.500 ns + Longest register " "Info: + Longest clock path from clock \"STE\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns STE 1 CLK PIN_94 4 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STE } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STE TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "STE source 27.500 ns - Shortest register " "Info: - Shortest clock path from clock \"STE\" to source register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns STE 1 CLK PIN_94 4 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STE } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 46 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STE TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[1\] 5 REG LC2 3 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { STE TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { STE {} STE~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "Minimum slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_MIN_SLACK_RESULT" "RSTB register REG_P\[1\] register REG_P\[2\] 5.0 ns " "Info: Minimum slack time is 5.0 ns for clock \"RSTB\" between source register \"REG_P\[1\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns + Shortest register register " "Info: + Shortest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns REG_P\[1\] 1 REG LC2 3 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "1.000 ns - Smallest register register " "Info: - Smallest register to register requirement is 1.000 ns" { { "Info" "ITDB_FULL_HOLD_REQUIREMENT" "0.000 ns + " "Info: + Hold relationship between source and destination is 0.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination RSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"RSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Hold 1 " "Info: Multicycle Hold factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 5.000 ns " "Info: - Launch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source RSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Source clock \"RSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Hold 1 " "Info: Multicycle Hold factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Hold relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "0.000 ns + Smallest " "Info: + Smallest clock skew is 0.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "RSTB destination 27.500 ns + Longest register " "Info: + Longest clock path from clock \"RSTB\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns RSTB 1 CLK PIN_25 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { RSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "RSTB source 27.500 ns - Shortest register " "Info: - Shortest clock path from clock \"RSTB\" to source register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns RSTB 1 CLK PIN_25 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { RSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 38 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { RSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[1\] 5 REG LC2 3 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { RSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { RSTB {} RSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "Minimum slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_MIN_SLACK_RESULT" "WSTB register REG_P\[1\] register REG_P\[2\] 5.0 ns " "Info: Minimum slack time is 5.0 ns for clock \"WSTB\" between source register \"REG_P\[1\]\" and destination register \"REG_P\[2\]\"" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.000 ns + Shortest register register " "Info: + Shortest register to register delay is 6.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns REG_P\[1\] 1 REG LC2 3 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.000 ns REG_P\[2\] 2 REG LC8 1 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.000 ns ( 83.33 % ) " "Info: Total cell delay = 5.000 ns ( 83.33 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 16.67 % ) " "Info: Total interconnect delay = 1.000 ns ( 16.67 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_P2P_REQUIREMENT_RESULT" "1.000 ns - Smallest register register " "Info: - Smallest register to register requirement is 1.000 ns" { { "Info" "ITDB_FULL_HOLD_REQUIREMENT" "0.000 ns + " "Info: + Hold relationship between source and destination is 0.000 ns" { { "Info" "ITDB_EDGE_RESULT" "+ Latch 5.000 ns " "Info: + Latch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Destination WSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Destination clock \"WSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Setup 1 " "Info: Multicycle Setup factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Destination Hold 1 " "Info: Multicycle Hold factor for Destination register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_EDGE_RESULT" "- Launch 5.000 ns " "Info: - Launch edge is 5.000 ns" { { "Info" "ITDB_CLOCK_SETTING_RESULT" "Source WSTB 10.000 ns 5.000 ns inverted 50 " "Info: Clock period of Source clock \"WSTB\" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50" { } { } 0 0 "Clock period of %1!s! clock \"%2!s!\" is %3!s! with %5!s! offset of %4!s! and duty cycle of %6!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Setup 1 " "Info: Multicycle Setup factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} { "Info" "ITDB_MULTICYCLE_RESULT" "Source Hold 1 " "Info: Multicycle Hold factor for Source register is 1" { } { } 0 0 "Multicycle %2!s! factor for %1!s! register is %3!d!" 0 0 "" 0 -1} } { } 0 0 "%1!s! %2!s! edge is %3!s!" 0 0 "" 0 -1} } { } 0 0 "%2!c! Hold relationship between source and destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_SKEW_RESULT" "0.000 ns + Smallest " "Info: + Smallest clock skew is 0.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "WSTB destination 27.500 ns + Longest register " "Info: + Longest clock path from clock \"WSTB\" to destination register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns WSTB 1 CLK PIN_10 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { WSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { WSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[2\] 5 REG LC8 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "WSTB source 27.500 ns - Shortest register " "Info: - Shortest clock path from clock \"WSTB\" to source register is 27.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns WSTB 1 CLK PIN_10 2 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { WSTB } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 36 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 8.500 ns TURBING~5 2 COMB LOOP LC32 3 " "Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { WSTB TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 14.500 ns CT_WG~6 3 COMB SEXP17 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 21.500 ns CT_WG 4 REG LC26 8 " "Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 27.500 ns REG_P\[1\] 5 REG LC2 3 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P\[1\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { CT_WG REG_P[1] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "25.500 ns ( 92.73 % ) " "Info: Total cell delay = 25.500 ns ( 92.73 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "2.000 ns ( 7.27 % ) " "Info: Total interconnect delay = 2.000 ns ( 7.27 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! clock skew is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns - " "Info: - Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 138 7 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! requirement is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { REG_P[1] REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.000 ns" { REG_P[1] {} REG_P[2] {} } { 0.000ns 1.000ns } { 0.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "27.500 ns" { WSTB TURBING~5 CT_WG~6 CT_WG REG_P[1] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "27.500 ns" { WSTB {} WSTB~out {} TURBING~5 {} CT_WG~6 {} CT_WG {} REG_P[1] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 8.000ns 5.000ns 7.000ns 5.000ns } "" } } } 0 0 "Minimum slack time is %6!s! for clock \"%1!s!\" between source %2!s! \"%3!s!\" and destination %4!s! \"%5!s!\"" 0 0 "" 0 -1} -{ "Info" "ITDB_TSU_RESULT" "\$00052 FDD_C\[2\] TG42_IN 23.800 ns register " "Info: tsu for register \"\$00052\" (data pin = \"FDD_C\[2\]\", clock pin = \"TG42_IN\") is 23.800 ns" { { "Info" "ITDB_FULL_DATA_PATH_RESULT" "23.300 ns + Longest pin register " "Info: + Longest pin to register delay is 23.300 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns FDD_C\[2\] 1 PIN PIN_46 20 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_46; Fanout = 20; PIN Node = 'FDD_C\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { FDD_C[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 59 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(16.800 ns) 17.300 ns NTHDD~11 2 COMB LOOP LC119 10 " "Info: 2: + IC(0.000 ns) + CELL(16.800 ns) = 17.300 ns; Loc. = LC119; Fanout = 10; COMB LOOP Node = 'NTHDD~11'" { { "Info" "ITDB_PART_OF_SCC" "NTHDD~11 LC119 " "Info: Loc. = LC119; Node \"NTHDD~11\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~11 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "THDD~2 LC114 " "Info: Loc. = LC114; Node \"THDD~2\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { THDD~2 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} { "Info" "ITDB_PART_OF_SCC" "NTHDD~13 LC118 " "Info: Loc. = LC118; Node \"NTHDD~13\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~13 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~11 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 437 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { THDD~2 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 436 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { NTHDD~13 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "16.800 ns" { FDD_C[2] NTHDD~11 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 23.300 ns \$00052 3 REG LC123 1 " "Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 23.300 ns; Loc. = LC123; Fanout = 1; REG Node = '\$00052'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { NTHDD~11 $00052 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 494 20 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "22.300 ns ( 95.71 % ) " "Info: Total cell delay = 22.300 ns ( 95.71 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 4.29 % ) " "Info: Total interconnect delay = 1.000 ns ( 4.29 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "23.300 ns" { FDD_C[2] NTHDD~11 $00052 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "23.300 ns" { FDD_C[2] {} FDD_C[2]~out {} NTHDD~11 {} $00052 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 16.800ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TSU_DELAY" "2.000 ns + " "Info: + Micro setup delay of destination is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 494 20 0 } } } 0 0 "%2!c! Micro setup delay of destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN destination 1.500 ns - Shortest register " "Info: - Shortest clock path from clock \"TG42_IN\" to destination register is 1.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 1.500 ns \$00052 2 REG LC123 1 " "Info: 2: + IC(0.000 ns) + CELL(0.000 ns) = 1.500 ns; Loc. = LC123; Fanout = 1; REG Node = '\$00052'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "0.000 ns" { TG42_IN $00052 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 494 20 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "1.500 ns ( 100.00 % ) " "Info: Total cell delay = 1.500 ns ( 100.00 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00052 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00052 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "23.300 ns" { FDD_C[2] NTHDD~11 $00052 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "23.300 ns" { FDD_C[2] {} FDD_C[2]~out {} NTHDD~11 {} $00052 {} } { 0.000ns 0.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 16.800ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { TG42_IN $00052 } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { TG42_IN {} TG42_IN~out {} $00052 {} } { 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 0.000ns } "" } } } 0 0 "tsu for %5!s! \"%1!s!\" (data pin = \"%2!s!\", clock pin = \"%3!s!\") is %4!s!" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_TCO_RESULT" "TG42_IN CLK_WG STWG\[2\] 50.000 ns register " "Info: tco from clock \"TG42_IN\" to destination pin \"CLK_WG\" through register \"STWG\[2\]\" is 50.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN source 46.500 ns + Longest register " "Info: + Longest clock path from clock \"TG42_IN\" to source register is 46.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(2.000 ns) 3.500 ns HDD_CLK 2 REG LC88 10 " "Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "2.000 ns" { TG42_IN HDD_CLK } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 472 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 11.500 ns FDD_1440 3 REG LC91 13 " "Info: 3: + IC(1.000 ns) + CELL(7.000 ns) = 11.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { HDD_CLK FDD_1440 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 19.500 ns TURBING~5 4 COMB LOOP LC32 3 " "Info: 4: + IC(0.000 ns) + CELL(8.000 ns) = 19.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { FDD_1440 TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 25.500 ns CT_WG~6 5 COMB SEXP17 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 25.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 32.500 ns CT_WG 6 REG LC26 8 " "Info: 6: + IC(0.000 ns) + CELL(7.000 ns) = 32.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 40.500 ns STWG\[2\]~6bal 7 COMB LC16 3 " "Info: 7: + IC(1.000 ns) + CELL(7.000 ns) = 40.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 46.500 ns STWG\[2\] 8 REG LC19 6 " "Info: 8: + IC(1.000 ns) + CELL(5.000 ns) = 46.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "42.500 ns ( 91.40 % ) " "Info: Total cell delay = 42.500 ns ( 91.40 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "4.000 ns ( 8.60 % ) " "Info: Total interconnect delay = 4.000 ns ( 8.60 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "46.500 ns" { TG42_IN HDD_CLK FDD_1440 TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "46.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 7.000ns 8.000ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TCO_DELAY" "2.000 ns + " "Info: + Micro clock to output delay of source is 2.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%2!c! Micro clock to output delay of source is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "1.500 ns + Longest register pin " "Info: + Longest register to pin delay is 1.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.000 ns) 0.000 ns STWG\[2\] 1 REG LC19 6 " "Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns CLK_WG 2 PIN PIN_13 0 " "Info: 2: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_13; Fanout = 0; PIN Node = 'CLK_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { STWG[2] CLK_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 299 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "1.500 ns ( 100.00 % ) " "Info: Total cell delay = 1.500 ns ( 100.00 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { STWG[2] CLK_WG } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { STWG[2] {} CLK_WG {} } { 0.000ns 0.000ns } { 0.000ns 1.500ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "46.500 ns" { TG42_IN HDD_CLK FDD_1440 TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "46.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 7.000ns 8.000ns 5.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { STWG[2] CLK_WG } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "1.500 ns" { STWG[2] {} CLK_WG {} } { 0.000ns 0.000ns } { 0.000ns 1.500ns } "" } } } 0 0 "tco from clock \"%1!s!\" to destination pin \"%2!s!\" through %5!s! \"%3!s!\" is %4!s!" 0 0 "" 0 -1} -{ "Info" "ITDB_FULL_TPD_RESULT" "TG42_IN TG42_OUT 10.000 ns Longest " "Info: Longest tpd from source pin \"TG42_IN\" to destination pin \"TG42_OUT\" is 10.000 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 8.500 ns \$00003~3 2 COMB LC128 1 " "Info: 2: + IC(0.000 ns) + CELL(7.000 ns) = 8.500 ns; Loc. = LC128; Fanout = 1; COMB Node = '\$00003~3'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { TG42_IN $00003~3 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 183 14 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 10.000 ns TG42_OUT 3 PIN PIN_85 0 " "Info: 3: + IC(0.000 ns) + CELL(1.500 ns) = 10.000 ns; Loc. = PIN_85; Fanout = 0; PIN Node = 'TG42_OUT'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "1.500 ns" { $00003~3 TG42_OUT } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 183 3 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "10.000 ns ( 100.00 % ) " "Info: Total cell delay = 10.000 ns ( 100.00 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "10.000 ns" { TG42_IN $00003~3 TG42_OUT } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "10.000 ns" { TG42_IN {} TG42_IN~out {} $00003~3 {} TG42_OUT {} } { 0.000ns 0.000ns 0.000ns 0.000ns } { 0.000ns 1.500ns 7.000ns 1.500ns } "" } } } 0 0 "%4!s! tpd from source pin \"%1!s!\" to destination pin \"%2!s!\" is %3!s!" 0 0 "" 0 -1} -{ "Info" "ITDB_TH_RESULT" "LR_T\[0\] SR TG42_IN 51.000 ns register " "Info: th for register \"LR_T\[0\]\" (data pin = \"SR\", clock pin = \"TG42_IN\") is 51.000 ns" { { "Info" "ITDB_FULL_CLOCK_PATH_RESULT" "TG42_IN destination 54.500 ns + Longest register " "Info: + Longest clock path from clock \"TG42_IN\" to destination register is 54.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(1.500 ns) 1.500 ns TG42_IN 1 CLK PIN_87 11 " "Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TG42_IN } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 21 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(2.000 ns) 3.500 ns HDD_CLK 2 REG LC88 10 " "Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "2.000 ns" { TG42_IN HDD_CLK } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 472 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 11.500 ns FDD_1440 3 REG LC91 13 " "Info: 3: + IC(1.000 ns) + CELL(7.000 ns) = 11.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { HDD_CLK FDD_1440 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 417 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(8.000 ns) 19.500 ns TURBING~5 4 COMB LOOP LC32 3 " "Info: 4: + IC(0.000 ns) + CELL(8.000 ns) = 19.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5'" { { "Info" "ITDB_PART_OF_SCC" "TURBING~5 LC32 " "Info: Loc. = LC32; Node \"TURBING~5\"" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } } 0 0 "Loc. = %2!s!; Node \"%1!s!\"" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { TURBING~5 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 291 2 0 } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { FDD_1440 TURBING~5 } "NODE_NAME" } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 25.500 ns CT_WG~6 5 COMB SEXP17 1 " "Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 25.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { TURBING~5 CT_WG~6 } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(7.000 ns) 32.500 ns CT_WG 6 REG LC26 8 " "Info: 6: + IC(0.000 ns) + CELL(7.000 ns) = 32.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "7.000 ns" { CT_WG~6 CT_WG } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 294 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 40.500 ns STWG\[2\]~6bal 7 COMB LC16 3 " "Info: 7: + IC(1.000 ns) + CELL(7.000 ns) = 40.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG\[2\]~6bal'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { CT_WG STWG[2]~6bal } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(7.000 ns) 48.500 ns STWG\[2\] 8 REG LC19 6 " "Info: 8: + IC(1.000 ns) + CELL(7.000 ns) = 48.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG\[2\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "8.000 ns" { STWG[2]~6bal STWG[2] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 133 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 54.500 ns LR_T\[0\] 9 REG LC10 4 " "Info: 9: + IC(1.000 ns) + CELL(5.000 ns) = 54.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { STWG[2] LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "49.500 ns ( 90.83 % ) " "Info: Total cell delay = 49.500 ns ( 90.83 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "5.000 ns ( 9.17 % ) " "Info: Total interconnect delay = 5.000 ns ( 9.17 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "54.500 ns" { TG42_IN HDD_CLK FDD_1440 TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "54.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 7.000ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } } 0 0 "%4!c! %5!s! clock path from clock \"%1!s!\" to %2!s! %6!s! is %3!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_TH_DELAY" "3.000 ns + " "Info: + Micro hold delay of destination is 3.000 ns" { } { { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%2!c! Micro hold delay of destination is %1!s!" 0 0 "" 0 -1} { "Info" "ITDB_FULL_DATA_PATH_RESULT" "6.500 ns - Shortest pin register " "Info: - Shortest pin to register delay is 6.500 ns" { { "Info" "ITDB_NODE_DELAY" "IC(0.000 ns) + CELL(0.500 ns) 0.500 ns SR 1 PIN PIN_29 1 " "Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_29; Fanout = 1; PIN Node = 'SR'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "" { SR } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 37 2 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_NODE_DELAY" "IC(1.000 ns) + CELL(5.000 ns) 6.500 ns LR_T\[0\] 2 REG LC10 4 " "Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T\[0\]'" { } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.000 ns" { SR LR_T[0] } "NODE_NAME" } } { "sp2_max.tdf" "" { Text "C:/Sprinter/src/altera/quartus/max/sp2_max.tdf" 160 6 0 } } } 0 0 "%4!d!: + %1!s! = %2!s!; Loc. = %6!s!; Fanout = %7!d!; %5!s! Node = '%3!s!'" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_CELL_DELAY" "5.500 ns ( 84.62 % ) " "Info: Total cell delay = 5.500 ns ( 84.62 % )" { } { } 0 0 "Total cell delay = %1!s! %2!s!" 0 0 "" 0 -1} { "Info" "ITDB_TOTAL_IC_DELAY" "1.000 ns ( 15.38 % ) " "Info: Total interconnect delay = 1.000 ns ( 15.38 % )" { } { } 0 0 "Total interconnect delay = %1!s! %2!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.500 ns" { SR LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.500 ns" { SR {} SR~out {} LR_T[0] {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 5.000ns } "" } } } 0 0 "%2!c! %3!s! %4!s! to %5!s! delay is %1!s!" 0 0 "" 0 -1} } { { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "54.500 ns" { TG42_IN HDD_CLK FDD_1440 TURBING~5 CT_WG~6 CT_WG STWG[2]~6bal STWG[2] LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "54.500 ns" { TG42_IN {} TG42_IN~out {} HDD_CLK {} FDD_1440 {} TURBING~5 {} CT_WG~6 {} CT_WG {} STWG[2]~6bal {} STWG[2] {} LR_T[0] {} } { 0.000ns 0.000ns 0.000ns 1.000ns 0.000ns 1.000ns 0.000ns 1.000ns 1.000ns 1.000ns } { 0.000ns 1.500ns 2.000ns 7.000ns 8.000ns 5.000ns 7.000ns 7.000ns 7.000ns 5.000ns } "" } } { "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" { Floorplan "c:/altera/90sp2/quartus/bin/TimingClosureFloorplan.fld" "" "6.500 ns" { SR LR_T[0] } "NODE_NAME" } } { "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "" { "TechnologyMapViewer" "c:/altera/90sp2/quartus/bin/Technology_Viewer.qrui" "6.500 ns" { SR {} SR~out {} LR_T[0] {} } { 0.000ns 0.000ns 1.000ns } { 0.000ns 0.500ns 5.000ns } "" } } } 0 0 "th for %5!s! \"%1!s!\" (data pin = \"%2!s!\", clock pin = \"%3!s!\") is %4!s!" 0 0 "" 0 -1} -{ "Critical Warning" "WTAN_REQUIREMENTS_NOT_MET_SLOW" "" "Critical Warning: Timing requirements for slow timing model timing analysis were not met. See Report window for details." { } { } 1 0 "Timing requirements for slow timing model timing analysis were not met. See Report window for details." 0 0 "" 0 -1} -{ "Info" "IQEXE_ERROR_COUNT" "Classic Timing Analyzer 0 s 21 s Quartus II " "Info: Quartus II Classic Timing Analyzer was successful. 0 errors, 21 warnings" { { "Info" "IQEXE_END_PEAK_VSIZE_MEMORY" "185 " "Info: Peak virtual memory: 185 megabytes" { } { } 0 0 "Peak virtual memory: %1!s! megabytes" 0 0 "" 0 -1} { "Info" "IQEXE_END_BANNER_TIME" "Sun Aug 28 03:30:43 2022 " "Info: Processing ended: Sun Aug 28 03:30:43 2022" { } { } 0 0 "Processing ended: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_TIME" "00:00:00 " "Info: Elapsed time: 00:00:00" { } { } 0 0 "Elapsed time: %1!s!" 0 0 "" 0 -1} { "Info" "IQEXE_ELAPSED_CPU_TIME" "00:00:00 " "Info: Total CPU time (on all processors): 00:00:00" { } { } 0 0 "Total CPU time (on all processors): %1!s!" 0 0 "" 0 -1} } { } 0 0 "%6!s! %1!s! was successful. %2!d! error%3!s!, %4!d! warning%5!s!" 0 0 "" 0 -1} diff --git a/src/altera/quartus/max/db/sp2_max.tis_db_list.ddb b/src/altera/quartus/max/db/sp2_max.tis_db_list.ddb deleted file mode 100644 index 0bb4dde..0000000 Binary files a/src/altera/quartus/max/db/sp2_max.tis_db_list.ddb and /dev/null differ diff --git a/src/altera/quartus/max/db/sp2_max.tmw_info b/src/altera/quartus/max/db/sp2_max.tmw_info deleted file mode 100644 index ea806e0..0000000 --- a/src/altera/quartus/max/db/sp2_max.tmw_info +++ /dev/null @@ -1,6 +0,0 @@ -start_full_compilation:s:00:00:07 -start_analysis_synthesis:s:00:00:03-start_full_compilation -start_analysis_elaboration:s-start_full_compilation -start_fitter:s:00:00:01-start_full_compilation -start_assembler:s:00:00:02-start_full_compilation -start_timing_analyzer:s:00:00:01-start_full_compilation diff --git a/src/altera/quartus/max/incremental_db/README b/src/altera/quartus/max/incremental_db/README deleted file mode 100644 index 6191fbe..0000000 --- a/src/altera/quartus/max/incremental_db/README +++ /dev/null @@ -1,11 +0,0 @@ -This folder contains data for incremental compilation. - -The compiled_partitions sub-folder contains previous compilation results for each partition. -As long as this folder is preserved, incremental compilation results from earlier compiles -can be re-used. To perform a clean compilation from source files for all partitions, both -the db and incremental_db folder should be removed. - -The imported_partitions sub-folder contains the last imported QXP for each imported partition. -As long as this folder is preserved, imported partitions will be automatically re-imported -when the db or incremental_db/compiled_partitions folders are removed. - diff --git a/src/altera/quartus/max/incremental_db/compiled_partitions/sp2_max.root_partition.map.kpt b/src/altera/quartus/max/incremental_db/compiled_partitions/sp2_max.root_partition.map.kpt deleted file mode 100644 index 5a6b9cd..0000000 --- a/src/altera/quartus/max/incremental_db/compiled_partitions/sp2_max.root_partition.map.kpt +++ /dev/null @@ -1,246 +0,0 @@ - - - - $00052 - - - $00051 - - - $00053 - - - $00050 - - - CTV8M - - SA0 - - - - $00049 - - - $00045 - - - $00046 - - - $00048 - - - XCT[2] - - NF - - - - $00041 - - - $00042 - - - $00043 - - - $00044 - - - - - - - $00052 - - - $00051 - - - $00053 - - - $00050 - - - $00049 - - - $00045 - - - $00046 - - - $00048 - - - $00041 - - - $00042 - - - $00043 - - - $00044 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/altera/quartus/max/maxplusii_to_quartus_name_mapping.txt b/src/altera/quartus/max/maxplusii_to_quartus_name_mapping.txt deleted file mode 100644 index dfa0e10..0000000 --- a/src/altera/quartus/max/maxplusii_to_quartus_name_mapping.txt +++ /dev/null @@ -1,64 +0,0 @@ - -- Copyright (C) 1991-2004 Altera Corporation - -- Any megafunction design, and related netlist (encrypted or decrypted), - -- support information, device programming or simulation file, and any other - -- associated documentation or information provided by Altera or a partner - -- under Altera's Megafunction Partnership Program may be used only - -- to program PLD devices (but not masked PLD devices) from Altera. Any - -- other use of such megafunction design, netlist, support information, - -- device programming or simulation file, or any other related documentation - -- or information is prohibited for any other purpose, including, but not - -- limited to modification, reverse engineering, de-compiling, or use with - -- any other silicon devices, unless such use is explicitly licensed under - -- a separate agreement with Altera or a megafunction partner. Title to the - -- intellectual property, including patents, copyrights, trademarks, trade - -- secrets, or maskworks, embodied in any such megafunction design, netlist, - -- support information, device programming or simulation file, or any other - -- related documentation or information provided by Altera or a megafunction - -- partner, remains with Altera, the megafunction partner, or their respective - -- licensors. No other licenses, including any licenses needed under any third - -- party's intellectual property, are provided herein. - - -- VERSION "Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition" - -- DATE "08/28/2022 03:22:37" - -Conversion results for sp2_max -+-----------------------+----------------------+ -| MAX+PLUS II node name | Quartus II node name | -+-----------------------+----------------------+ -| |10K_D0 | 10K_D[0] | -| |CLK14 | CLK[14] | -| |D0 | D[0] | -| |FDD_C0 | FDD_C[0] | -| |FDD_C1 | FDD_C[1] | -| |FDD_C2 | FDD_C[2] | -| |HDD_C0 | HDD_C[0] | -| |HDD_C1 | HDD_C[1] | -| |HDD_C2 | HDD_C[2] | -| |HDD_C3 | HDD_C[3] | -| |LR_T0 | LR_T[0] | -| |LR_T1 | LR_T[1] | -| |REG_P0 | REG_P[0] | -| |REG_P1 | REG_P[1] | -| |REG_P2 | REG_P[2] | -| |SINC_1 | SINC_[1] | -| |SINC_2 | SINC_[2] | -| |STWG0 | STWG[0] | -| |STWG1 | STWG[1] | -| |STWG2 | STWG[2] | -| |TR43 | TR[43] | -| |UNUSED33 | UNUSED[33] | -| |UNUSED53 | UNUSED[53] | -| |UNUSED65 | UNUSED[65] | -| |UNUSED78 | UNUSED[78] | -| |XA0 | XA[0] | -| |XA1 | XA[1] | -| |XA2 | XA[2] | -| |XCT0 | XCT[0] | -| |XCT1 | XCT[1] | -| |XHD1_CS1 | XHD1_CS[1] | -| |XHD1_CS2 | XHD1_CS[2] | -| |XHD2_CS1 | XHD2_CS[1] | -| |XHD2_CS2 | XHD2_CS[2] | -+-----------------------+----------------------+ - - diff --git a/src/altera/quartus/max/sp2_max.acf b/src/altera/quartus/max/sp2_max.acf deleted file mode 100644 index 689ae3e..0000000 --- a/src/altera/quartus/max/sp2_max.acf +++ /dev/null @@ -1,699 +0,0 @@ --- --- Copyright (C) 1988-2000 Altera Corporation --- Any megafunction design, and related net list (encrypted or decrypted), --- support information, device programming or simulation file, and any other --- associated documentation or information provided by Altera or a partner --- under Altera's Megafunction Partnership Program may be used only to --- program PLD devices (but not masked PLD devices) from Altera. Any other --- use of such megafunction design, net list, support information, device --- programming or simulation file, or any other related documentation or --- information is prohibited for any other purpose, including, but not --- limited to modification, reverse engineering, de-compiling, or use with --- any other silicon devices, unless such use is explicitly licensed under --- a separate agreement with Altera or a megafunction partner. Title to --- the intellectual property, including patents, copyrights, trademarks, --- trade secrets, or maskworks, embodied in any such megafunction design, --- net list, support information, device programming or simulation file, or --- any other related documentation or information provided by Altera or a --- megafunction partner, remains with Altera, the megafunction partner, or --- their respective licensors. No other licenses, including any licenses --- needed under any third party's intellectual property, are provided herein. --- -CHIP SP2_MAX -BEGIN - DEVICE = EPM7128STC100-10; - |UNUSED1: INPUT_PIN = 1; -- 7064 N.C. - |UNUSED2: INPUT_PIN = 2; -- 7064 N.C. --- |VCCIO --- |#TDI - |UNUSED5: INPUT_PIN = 5; -- 7064 N.C. - |CMOS_AS : OUTPUT_PIN = 6; - |UNUSED7: INPUT_PIN = 7; -- 7064 N.C. - |WR_PDOS : OUTPUT_PIN = 8; - |WD : INPUT_PIN = 9; - - |WSTB : INPUT_PIN = 10; --- |GND - |TR43 : INPUT_PIN = 12; - |CLK_WG : OUTPUT_PIN = 13; - |FDAT : OUTPUT_PIN = 14; --- |#TMS - |QDAT : OUTPUT_PIN = 16; - |XA0 : INPUT_PIN = 17; --- |VCCIO - |SINC_2 : OUTPUT_PIN = 19; - - |SINC_1 : OUTPUT_PIN = 20; - |XA1 : INPUT_PIN = 21; - |UNUSED22: INPUT_PIN = 22; -- 7064 N.C. - |XA2 : INPUT_PIN = 23; - |UNUSED24: INPUT_PIN = 24; -- 7064 N.C. - |RSTB : INPUT_PIN = 25; --- |GND - |UNUSED27: INPUT_PIN = 27; -- 7064 N.C. - |UNUSED28: INPUT_PIN = 28; -- 7064 N.C. - |SR : INPUT_PIN = 29; - - |SL : INPUT_PIN = 30; - |CLK14 : OUTPUT_PIN = 31; - |CLKZZ : BIDIR_PIN = 32; - |UNUSED33 : INPUT_PIN = 33; -- be careful! at 3000 family the pin 33 is GND --- |VCCIO - |AUD : OUTPUT_PIN = 35; - |TG42_BUF : OUTPUT_PIN = 36; - |XACS : INPUT_PIN = 37; --- |GND --- |VCCINT - - |HDD_C3 : INPUT_PIN = 40; - |HDD_C2 : INPUT_PIN = 41; - |HDD_C1 : INPUT_PIN = 42; --- |GND - |FDD_C0 : INPUT_PIN = 44; - |FDD_C1 : INPUT_PIN = 45; - |FDD_C2 : INPUT_PIN = 46; - |HDD_C0 : INPUT_PIN = 47; - |HD_DIR : OUTPUT_PIN = 48; - |UNUSED49: INPUT_PIN = 49; -- 7064 N.C. - - |UNUSED50: INPUT_PIN = 50; -- 7064 N.C. --- |VCCIO - |HD_CS : OUTPUT_PIN = 52; - |UNUSED53 : INPUT_PIN = 53; -- 7064 N.C. - |/CONF_X : BIDIR_PIN = 54; - |UNUSED55: INPUT_PIN = 55; -- 7064 N.C. - |10K_CLK : OUTPUT_PIN = 56; - |WR_CNF : INPUT_PIN = 57; - |10K_D0 : OUTPUT_PIN = 58; --- |GND - - |D0 : INPUT_PIN = 60; - |VGA_IN : INPUT_PIN = 61; --- |#TCK - |UNUSED63: INPUT_PIN = 63; - |SINC_V : OUTPUT_PIN = 64; - |UNUSED65 : INPUT_PIN = 65; -- be careful! at 3000 family the pin 33 is GND --- |VCCIO - |SINC : OUTPUT_PIN = 67; - |SINC_H : OUTPUT_PIN = 68; - |SINC_IN : INPUT_PIN = 69; - - |UNUSED70: INPUT_PIN = 70; -- 7064 N.C. - |XHD_RES : OUTPUT_PIN = 71; - |UNUSED72: INPUT_PIN = 72; -- 7064 N.C. --- |#TDO --- |GND - |XHD_WR : OUTPUT_PIN = 75; - |XHD_RD : OUTPUT_PIN = 76; - |UNUSED77: INPUT_PIN = 77; -- 7064 N.C. - |UNUSED78 : INPUT_PIN = 78; -- 7064 N.C. - |XHD1_CS1 : OUTPUT_PIN = 79; - - |XHD1_CS2 : OUTPUT_PIN = 80; - |XHD2_CS1 : OUTPUT_PIN = 81; --- |VCCIO - |XHD2_CS2 : OUTPUT_PIN = 83; - |BEEP : OUTPUT_PIN = 84; - |TG42_OUT : OUTPUT_PIN = 85; --- |GND - |TG42_IN : INPUT_PIN = 87; - |XHR_RDY : INPUT_PIN = 88; - |EPM_RES : INPUT_PIN = 89; - - |PW_GOOD : INPUT_PIN = 90; --- |VCCINT - |RDAT : INPUT_PIN = 92; - |/WG_WR : OUTPUT_PIN = 93; - |STE : INPUT_PIN = 94; --- |GND - |DENS_X : OUTPUT_PIN = 96; - |/WG_RD : OUTPUT_PIN = 97; - |WDAT : OUTPUT_PIN = 98; - |CMOS_DRD : OUTPUT_PIN = 99; - |CMOS_DWR : OUTPUT_PIN = 100; -END; - -DEFAULT_DEVICES -BEGIN - AUTO_DEVICE = EPM7256SQC208-7; - AUTO_DEVICE = EPM7256SRC208-7; - AUTO_DEVICE = EPM7192SQC160-7; - AUTO_DEVICE = EPM7160SQC160-6; - AUTO_DEVICE = EPM7160STC100-6; - AUTO_DEVICE = EPM7160SLC84-6; - AUTO_DEVICE = EPM7128SQC160-6; - AUTO_DEVICE = EPM7128STC100-6; - AUTO_DEVICE = EPM7128SQC100-6; - AUTO_DEVICE = EPM7128SLC84-6; - AUTO_DEVICE = EPM7064STC100-5; - AUTO_DEVICE = EPM7064SLC84-5; - AUTO_DEVICE = EPM7064STC44-5; - AUTO_DEVICE = EPM7064SLC44-5; - AUTO_DEVICE = EPM7032STC44-5; - AUTO_DEVICE = EPM7032SLC44-5; - ASK_BEFORE_ADDING_EXTRA_DEVICES = ON; -END; - -TIMING_POINT -BEGIN - DEVICE_FOR_TIMING_SYNTHESIS = EPM7128STC100-10; - FREQUENCY = 100MHz; - MAINTAIN_STABLE_SYNTHESIS = OFF; - CUT_ALL_CLEAR_PRESET = ON; - CUT_ALL_BIDIR = ON; -END; - -IGNORED_ASSIGNMENTS -BEGIN - FIT_IGNORE_TIMING = ON; - DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; - IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; - IGNORE_DEVICE_ASSIGNMENTS = OFF; - IGNORE_LC_ASSIGNMENTS = OFF; - IGNORE_PIN_ASSIGNMENTS = OFF; - IGNORE_CHIP_ASSIGNMENTS = OFF; - IGNORE_TIMING_ASSIGNMENTS = OFF; - IGNORE_LOGIC_OPTION_ASSIGNMENTS = OFF; - IGNORE_CLIQUE_ASSIGNMENTS = OFF; -END; - -LOGIC_OPTIONS -BEGIN - |LR_T1 : TURBO_BIT = ON; - |LR_T0 : TURBO_BIT = ON; - |CLK_WG : TURBO_BIT = ON; - |TG42_BUF : STYLE = WYSIWYG; - |TG42_OUT : STYLE = WYSIWYG; - |XHD_RD : TURBO_BIT = OFF; - |XHD_RES : TURBO_BIT = OFF; - |XHD_WR : TURBO_BIT = OFF; - |XHD1_CS1 : TURBO_BIT = OFF; - |XHD1_CS2 : TURBO_BIT = OFF; - |XHD2_CS1 : TURBO_BIT = OFF; - |XHD2_CS2 : TURBO_BIT = OFF; - |10K_CLK : TURBO_BIT = OFF; - |10K_D0 : TURBO_BIT = OFF; - |REG_P0 : TURBO_BIT = ON; - |REG_P1 : TURBO_BIT = ON; - |REG_P2 : TURBO_BIT = ON; - |TG42_BUF : TURBO_BIT = ON; - |TG42_OUT : TURBO_BIT = ON; - |STWG0 : TURBO_BIT = ON; - |STWG1 : TURBO_BIT = ON; - |STWG2 : TURBO_BIT = ON; - |XCT0 : TURBO_BIT = ON; - |XCT1 : TURBO_BIT = ON; -END; - -GLOBAL_PROJECT_DEVICE_OPTIONS -BEGIN - MULTIVOLT_IO = OFF; - SECURITY_BIT = ON; - MAX7000B_ENABLE_VREFB = OFF; - MAX7000B_ENABLE_VREFA = OFF; - MAX7000B_VCCIO_IOBANK2 = 3.3V; - MAX7000B_VCCIO_IOBANK1 = 3.3V; - CONFIG_EPROM_PULLUP_RESISTOR = ON; - CONFIG_EPROM_USER_CODE = FFFFFFFF; - FLEX_CONFIGURATION_EPROM = AUTO; - MAX7000AE_ENABLE_JTAG = ON; - MAX7000AE_USER_CODE = FFFFFFFF; - FLEX6000_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX10KA_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = ON; - FLEX10K_USE_LOW_VOLTAGE_CONFIGURATION_EPROM = OFF; - FLEX6000_ENABLE_JTAG = OFF; - CONFIG_SCHEME_FLEX_6000 = PASSIVE_SERIAL; - MAX7000S_ENABLE_JTAG = ON; - FLEX10K_ENABLE_LOCK_OUTPUT = OFF; - MAX7000S_USER_CODE = FFFF; - CONFIG_SCHEME_10K = PASSIVE_SERIAL; - FLEX10K_JTAG_USER_CODE = 7F; - ENABLE_INIT_DONE_OUTPUT = OFF; - ENABLE_CHIP_WIDE_OE = OFF; - ENABLE_CHIP_WIDE_RESET = OFF; - nCEO = UNRESERVED; - CLKUSR = UNRESERVED; - ADD17 = UNRESERVED; - ADD16 = UNRESERVED; - ADD15 = UNRESERVED; - ADD14 = UNRESERVED; - ADD13 = UNRESERVED; - ADD0_TO_ADD12 = UNRESERVED; - SDOUT = RESERVED_DRIVES_OUT; - RDCLK = UNRESERVED; - RDYnBUSY = UNRESERVED; - nWS_nRS_nCS_CS = UNRESERVED; - DATA1_TO_DATA7 = UNRESERVED; - DATA0 = RESERVED_TRI_STATED; - FLEX8000_ENABLE_JTAG = OFF; - CONFIG_SCHEME = ACTIVE_SERIAL; - DISABLE_TIME_OUT = OFF; - ENABLE_DCLK_OUTPUT = OFF; - RELEASE_CLEARS = OFF; - AUTO_RESTART = OFF; - USER_CLOCK = OFF; - RESERVED_PINS_PERCENT = 0; - RESERVED_LCELLS_PERCENT = 0; -END; - -GLOBAL_PROJECT_SYNTHESIS_ASSIGNMENT_OPTIONS -BEGIN - STYLE = NORMAL; - AUTO_GLOBAL_CLEAR = OFF; - AUTO_GLOBAL_CLOCK = OFF; - DEVICE_FAMILY = MAX7000S; - MULTI_LEVEL_SYNTHESIS_MAX9000 = ON; - AUTO_IMPLEMENT_IN_EAB = OFF; - AUTO_OPEN_DRAIN_PINS = ON; - ONE_HOT_STATE_MACHINE_ENCODING = OFF; - AUTO_REGISTER_PACKING = OFF; - AUTO_FAST_IO = OFF; - AUTO_GLOBAL_OE = ON; - AUTO_GLOBAL_PRESET = ON; - MULTI_LEVEL_SYNTHESIS_MAX5000_7000 = OFF; - OPTIMIZE_FOR_SPEED = 5; -END; - -COMPILER_PROCESSING_CONFIGURATION -BEGIN - FITTER_SETTINGS = ADVANCED; - USE_QUARTUS_FITTER = OFF; - PRESERVE_ALL_NODE_NAME_SYNONYMS = OFF; - SMART_RECOMPILE = OFF; - GENERATE_AHDL_TDO_FILE = OFF; - RPT_FILE_USER_ASSIGNMENTS = ON; - RPT_FILE_LCELL_INTERCONNECT = ON; - RPT_FILE_HIERARCHY = ON; - RPT_FILE_EQUATIONS = ON; - LINKED_SNF_EXTRACTOR = OFF; - OPTIMIZE_TIMING_SNF = OFF; - TIMING_SNF_EXTRACTOR = ON; - FUNCTIONAL_SNF_EXTRACTOR = OFF; - DESIGN_DOCTOR_RULES = EPLD; - DESIGN_DOCTOR = OFF; -END; - -COMPILER_INTERFACES_CONFIGURATION -BEGIN - NETLIST_OUTPUT_TIME_SCALE = 0.1ns; - EDIF_INPUT_SHOW_LMF_MAPPING_MESSAGES = OFF; - EDIF_BUS_DELIMITERS = []; - EDIF_FLATTEN_BUS = OFF; - EDIF_OUTPUT_FORCE_0NS_DELAYS = OFF; - EDIF_OUTPUT_INCLUDE_SPECIAL_PRIM = OFF; - EDIF_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - EDIF_OUTPUT_DELAY_CONSTRUCTS = EDO_FILE; - EDIF_OUTPUT_USE_EDC = OFF; - EDIF_INPUT_USE_LMF2 = OFF; - EDIF_INPUT_USE_LMF1 = OFF; - EDIF_OUTPUT_GND = GND; - EDIF_OUTPUT_VCC = VCC; - EDIF_INPUT_GND = GND; - EDIF_INPUT_VCC = VCC; - EDIF_OUTPUT_EDC_FILE = *.edc; - EDIF_INPUT_LMF2 = *.lmf; - EDIF_INPUT_LMF1 = *.lmf; - VHDL_GENERATE_CONFIGURATION_DECLARATION = OFF; - VHDL_OUTPUT_DELAY_CONSTRUCTS = VHO_FILE; - VERILOG_OUTPUT_DELAY_CONSTRUCTS = VO_FILE; - VHDL_FLATTEN_BUS = OFF; - VERILOG_FLATTEN_BUS = OFF; - EDIF_TRUNCATE_HIERARCHY_PATH = OFF; - VHDL_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_TRUNCATE_HIERARCHY_PATH = OFF; - VERILOG_OUTPUT_MAP_ILLEGAL_CHAR = OFF; - VHDL_WRITER_VERSION = VHDL87; - VHDL_READER_VERSION = VHDL87; - SYNOPSYS_MAPPING_EFFORT = MEDIUM; - SYNOPSYS_BOUNDARY_OPTIMIZATION = OFF; - SYNOPSYS_HIERARCHICAL_COMPILATION = ON; - SYNOPSYS_DESIGNWARE = OFF; - SYNOPSYS_COMPILER = DESIGN; - USE_SYNOPSYS_SYNTHESIS = OFF; - VHDL_NETLIST_WRITER = OFF; - VERILOG_NETLIST_WRITER = OFF; - XNF_GENERATE_AHDL_TDX_FILE = ON; - XNF_TRANSLATE_INTERNAL_NODE_NAMES = ON; - XNF_EMULATE_TRI_STATE_BUSES = INTERNAL_LOGIC; - EDIF_OUTPUT_VERSION = 200; - EDIF_NETLIST_WRITER = OFF; -END; - -CUSTOM_DESIGN_DOCTOR_RULES -BEGIN - MASTER_RESET = OFF; - EXPANDER_NETWORKS = ON; - RACE_CONDITIONS = ON; - DELAY_CHAINS = ON; - ASYNCHRONOUS_INPUTS = ON; - PRESET_CLEAR_NETWORKS = ON; - STATIC_HAZARDS_AFTER_SYNTHESIS = OFF; - STATIC_HAZARDS_BEFORE_SYNTHESIS = ON; - MULTI_CLOCK_NETWORKS = ON; - MULTI_LEVEL_CLOCKS = ON; - GATED_CLOCKS = ON; - RIPPLE_CLOCKS = ON; -END; - -SIMULATOR_CONFIGURATION -BEGIN - END_TIME = 25.0us; - BIDIR_PIN = STRONG; - START_TIME = 0.0ns; - GLITCH_TIME = 0.0ns; - GLITCH = OFF; - OSCILLATION_TIME = 0.0ns; - OSCILLATION = OFF; - CHECK_OUTPUTS = OFF; - SETUP_HOLD = OFF; - USE_DEVICE = OFF; -END; - -TIMING_ANALYZER_CONFIGURATION -BEGIN - ANALYSIS_MODE = REGISTERED_PERFORMANCE; - CUT_OFF_RAM_REGISTERED_WE_PATHS = OFF; - LIST_PATH_FREQUENCY = 10MHz; - LIST_PATH_COUNT = 10; - REGISTERED_PERFORMANCE_OPTIONS = NUMBER_OF_PATHS; - INCLUDE_PATHS_LESS_THAN_VALUE = 214.7483647ms; - INCLUDE_PATHS_LESS_THAN = OFF; - INCLUDE_PATHS_GREATER_THAN_VALUE = 0.0ns; - INCLUDE_PATHS_GREATER_THAN = OFF; - DELAY_MATRIX_OPTIONS = SHOW_ALL_PATHS; - CELL_WIDTH = 18; - LIST_ONLY_LONGEST_PATH = ON; - CUT_OFF_CLEAR_AND_PRESET_PATHS = ON; - CUT_OFF_IO_PIN_FEEDBACK = ON; - AUTO_RECALCULATE = OFF; -END; - -OTHER_CONFIGURATION -BEGIN - LAST_MAXPLUS2_VERSION = 10.0; - ROW_PINS_LCELL_INSERT = ON; - CARRY_OUT_PINS_LCELL_INSERT = OFF; - NORMAL_LCELL_INSERT = ON; - EXPLICIT_FAMILY = 1; - FLEX_10K_52_COLUMNS = 40; - DEFAULT_9K_EXP_PER_LCELL = 1/2; - LOCAL_INTERCONNECT_PER_LAB_PERCENT = 100; - LCELLS_PER_ROW_PERCENT = 100; - FAN_IN_PER_LCELL_PERCENT = 100; - EXP_PER_LCELL_PERCENT = 100; - ROW_PINS_PERCENT = 50; - ORIGINAL_MAXPLUS2_VERSION = 9.6; - COMPILER_DATA = "1,1,0,1,0,0,0,1,1,1,1,0,1,1,1"; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.MAX7000 -BEGIN - TURBO_BIT = ON; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE NORMAL.FLEX8000 -BEGIN - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = ON; - REFACTORIZATION = ON; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - IGNORE_SOFT_BUFFERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = ON; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.MAX7000 -BEGIN - TURBO_BIT = ON; - SLOW_SLEW_RATE = OFF; - XOR_SYNTHESIS = ON; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = ON; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; - MINIMIZATION = FULL; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE FAST.FLEX8000 -BEGIN - CARRY_CHAIN_LENGTH = 32; - CASCADE_CHAIN_LENGTH = 2; - REGISTER_OPTIMIZATION = ON; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = ON; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = ON; - REDUCE_LOGIC = ON; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = ON; - CARRY_CHAIN = AUTO; - CASCADE_CHAIN = AUTO; - MINIMIZATION = FULL; - IGNORE_SOFT_BUFFERS = ON; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX5000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.MAX7000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.CLASSIC -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = ON; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = ON; - SOFT_BUFFER_INSERTION = OFF; - FAST_IO = OFF; - IGNORE_SOFT_BUFFERS = OFF; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = ON; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN = IGNORE; - CASCADE_CHAIN = IGNORE; -END; - -DEFINE_LOGIC_SYNTHESIS_STYLE WYSIWYG.FLEX8000 -BEGIN - REGISTER_OPTIMIZATION = OFF; - USE_LPM_FOR_AHDL_OPERATORS = OFF; - RESYNTHESIZE_NETWORK = OFF; - MULTI_LEVEL_FACTORING = OFF; - SUBFACTOR_EXTRACTION = OFF; - REFACTORIZATION = OFF; - NOT_GATE_PUSH_BACK = ON; - DUPLICATE_LOGIC_EXTRACTION = OFF; - REDUCE_LOGIC = OFF; - DECOMPOSE_GATES = OFF; - SOFT_BUFFER_INSERTION = ON; - IGNORE_SOFT_BUFFERS = ON; - PARALLEL_EXPANDERS = OFF; - TURBO_BIT = OFF; - XOR_SYNTHESIS = OFF; - SLOW_SLEW_RATE = OFF; - MINIMIZATION = PARTIAL; - CARRY_CHAIN_LENGTH = 32; - CARRY_CHAIN = MANUAL; - CASCADE_CHAIN_LENGTH = 2; - CASCADE_CHAIN = MANUAL; -END; - diff --git a/src/altera/quartus/max/sp2_max.asm.rpt b/src/altera/quartus/max/sp2_max.asm.rpt deleted file mode 100644 index 64aa208..0000000 --- a/src/altera/quartus/max/sp2_max.asm.rpt +++ /dev/null @@ -1,109 +0,0 @@ -Assembler report for sp2_max -Sun Aug 28 03:30:42 2022 -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - - ---------------------- -; Table of Contents ; ---------------------- - 1. Legal Notice - 2. Assembler Summary - 3. Assembler Settings - 4. Assembler Generated Files - 5. Assembler Device Options: C:/Sprinter/src/altera/quartus/max/sp2_max.pof - 6. Assembler Messages - - - ----------------- -; Legal Notice ; ----------------- -Copyright (C) 1991-2009 Altera Corporation -Your use of Altera Corporation's design tools, logic functions -and other software and tools, and its AMPP partner logic -functions, and any output files from any of the foregoing -(including device programming or simulation files), and any -associated documentation or information are expressly subject -to the terms and conditions of the Altera Program License -Subscription Agreement, Altera MegaCore Function License -Agreement, or other applicable license agreement, including, -without limitation, that your use is for the sole purpose of -programming logic devices manufactured by Altera and sold by -Altera or its authorized distributors. Please refer to the -applicable agreement for further details. - - - -+---------------------------------------------------------------+ -; Assembler Summary ; -+-----------------------+---------------------------------------+ -; Assembler Status ; Successful - Sun Aug 28 03:30:42 2022 ; -; Revision Name ; sp2_max ; -; Top-level Entity Name ; SP2_MAX ; -; Family ; MAX7000S ; -; Device ; EPM7128STC100-10 ; -+-----------------------+---------------------------------------+ - - -+--------------------------------------------------------------------------------------------------------+ -; Assembler Settings ; -+-----------------------------------------------------------------------------+----------+---------------+ -; Option ; Setting ; Default Value ; -+-----------------------------------------------------------------------------+----------+---------------+ -; Security bit ; On ; Off ; -; Use smart compilation ; Off ; Off ; -; Compression mode ; Off ; Off ; -; Clock source for configuration device ; Internal ; Internal ; -; Clock frequency of the configuration device ; 10 MHZ ; 10 MHz ; -; Divide clock frequency by ; 1 ; 1 ; -; Auto user code ; Off ; Off ; -; Use configuration device ; On ; On ; -; Configuration device auto user code ; Off ; Off ; -; Generate Tabular Text File (.ttf) For Target Device ; Off ; Off ; -; Generate Raw Binary File (.rbf) For Target Device ; Off ; Off ; -; Generate Hexadecimal (Intel-Format) Output File (.hexout) for Target Device ; Off ; Off ; -; Hexadecimal Output File start address ; 0 ; 0 ; -; Hexadecimal Output File count direction ; Up ; Up ; -; Generate Serial Vector Format File (.svf) for Target Device ; Off ; Off ; -; Generate a JEDEC STAPL Format File (.jam) for Target Device ; Off ; Off ; -; Generate a compressed Jam STAPL Byte Code 2.0 File (.jbc) for Target Device ; Off ; Off ; -; Generate a compressed Jam STAPL Byte Code 2.0 File (.jbc) for Target Device ; On ; On ; -+-----------------------------------------------------------------------------+----------+---------------+ - - -+------------------------------------------------+ -; Assembler Generated Files ; -+------------------------------------------------+ -; File Name ; -+------------------------------------------------+ -; C:/Sprinter/src/altera/quartus/max/sp2_max.pof ; -+------------------------------------------------+ - - -+--------------------------------------------------------------------------+ -; Assembler Device Options: C:/Sprinter/src/altera/quartus/max/sp2_max.pof ; -+----------------+---------------------------------------------------------+ -; Option ; Setting ; -+----------------+---------------------------------------------------------+ -; Device ; EPM7128STC100-10 ; -; JTAG usercode ; 0x00000000 ; -; Checksum ; 0x00197ABF ; -+----------------+---------------------------------------------------------+ - - -+--------------------+ -; Assembler Messages ; -+--------------------+ -Info: ******************************************************************* -Info: Running Quartus II Assembler - Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - Info: Processing started: Sun Aug 28 03:30:42 2022 -Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max -Info: Assembler is generating device programming files -Info: Quartus II Assembler was successful. 0 errors, 0 warnings - Info: Peak virtual memory: 199 megabytes - Info: Processing ended: Sun Aug 28 03:30:42 2022 - Info: Elapsed time: 00:00:00 - Info: Total CPU time (on all processors): 00:00:00 - - diff --git a/src/altera/quartus/max/sp2_max.done b/src/altera/quartus/max/sp2_max.done deleted file mode 100644 index f4d59a9..0000000 --- a/src/altera/quartus/max/sp2_max.done +++ /dev/null @@ -1 +0,0 @@ -Sun Aug 28 03:30:44 2022 diff --git a/src/altera/quartus/max/sp2_max.dpf b/src/altera/quartus/max/sp2_max.dpf deleted file mode 100644 index f0b3ecc..0000000 --- a/src/altera/quartus/max/sp2_max.dpf +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/altera/quartus/max/sp2_max.eda.rpt b/src/altera/quartus/max/sp2_max.eda.rpt deleted file mode 100644 index 408201d..0000000 --- a/src/altera/quartus/max/sp2_max.eda.rpt +++ /dev/null @@ -1,59 +0,0 @@ -EDA Netlist Writer report for sp2_max -Sun Aug 28 03:26:23 2022 -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - - ---------------------- -; Table of Contents ; ---------------------- - 1. Legal Notice - 2. EDA Netlist Writer Summary - 3. EDA Netlist Writer Messages - - - ----------------- -; Legal Notice ; ----------------- -Copyright (C) 1991-2009 Altera Corporation -Your use of Altera Corporation's design tools, logic functions -and other software and tools, and its AMPP partner logic -functions, and any output files from any of the foregoing -(including device programming or simulation files), and any -associated documentation or information are expressly subject -to the terms and conditions of the Altera Program License -Subscription Agreement, Altera MegaCore Function License -Agreement, or other applicable license agreement, including, -without limitation, that your use is for the sole purpose of -programming logic devices manufactured by Altera and sold by -Altera or its authorized distributors. Please refer to the -applicable agreement for further details. - - - -+----------------------------------------------------------------------------------+ -; EDA Netlist Writer Summary ; -+---------------------------+------------------------------------------------------+ -; EDA Netlist Writer Status ; No Output Files Generated - Sun Aug 28 03:26:23 2022 ; -; Revision Name ; sp2_max ; -; Top-level Entity Name ; SP2_MAX ; -; Family ; MAX7000S ; -+---------------------------+------------------------------------------------------+ - - -+-----------------------------+ -; EDA Netlist Writer Messages ; -+-----------------------------+ -Info: ******************************************************************* -Info: Running Quartus II EDA Netlist Writer - Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - Info: Processing started: Sun Aug 28 03:26:23 2022 -Info: Command: quartus_eda --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max -Warning: Can't generate output files. Specify command-line options to generate output files, or update EDA tool settings using GUI or Tcl script. -Info: Quartus II EDA Netlist Writer was successful. 0 errors, 1 warning - Info: Peak virtual memory: 163 megabytes - Info: Processing ended: Sun Aug 28 03:26:23 2022 - Info: Elapsed time: 00:00:00 - Info: Total CPU time (on all processors): 00:00:00 - - diff --git a/src/altera/quartus/max/sp2_max.fit.rpt b/src/altera/quartus/max/sp2_max.fit.rpt deleted file mode 100644 index c95d907..0000000 --- a/src/altera/quartus/max/sp2_max.fit.rpt +++ /dev/null @@ -1,710 +0,0 @@ -Fitter report for sp2_max -Sun Aug 28 03:30:41 2022 -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - - ---------------------- -; Table of Contents ; ---------------------- - 1. Legal Notice - 2. Fitter Summary - 3. Fitter Settings - 4. Parallel Compilation - 5. Pin-Out File - 6. Fitter Resource Usage Summary - 7. Input Pins - 8. Output Pins - 9. Bidir Pins - 10. All Package Pins - 11. I/O Standard - 12. Dedicated Inputs I/O - 13. Output Pin Default Load For Reported TCO - 14. Fitter Resource Utilization by Entity - 15. Control Signals - 16. Global & Other Fast Signals - 17. Non-Global High Fan-Out Signals - 18. Interconnect Usage Summary - 19. LAB External Interconnect - 20. LAB Macrocells - 21. Parallel Expander - 22. Shareable Expander - 23. Logic Cell Interconnection - 24. Fitter Device Options - 25. Fitter Messages - - - ----------------- -; Legal Notice ; ----------------- -Copyright (C) 1991-2009 Altera Corporation -Your use of Altera Corporation's design tools, logic functions -and other software and tools, and its AMPP partner logic -functions, and any output files from any of the foregoing -(including device programming or simulation files), and any -associated documentation or information are expressly subject -to the terms and conditions of the Altera Program License -Subscription Agreement, Altera MegaCore Function License -Agreement, or other applicable license agreement, including, -without limitation, that your use is for the sole purpose of -programming logic devices manufactured by Altera and sold by -Altera or its authorized distributors. Please refer to the -applicable agreement for further details. - - - -+----------------------------------------------------------------------+ -; Fitter Summary ; -+-----------------------+----------------------------------------------+ -; Fitter Status ; Successful - Sun Aug 28 03:30:40 2022 ; -; Quartus II Version ; 9.0 Build 235 06/17/2009 SP 2 SJ Web Edition ; -; Revision Name ; sp2_max ; -; Top-level Entity Name ; SP2_MAX ; -; Family ; MAX7000S ; -; Device ; EPM7128STC100-10 ; -; Timing Models ; Final ; -; Total macrocells ; 74 / 128 ( 58 % ) ; -; Total pins ; 84 / 84 ( 100 % ) ; -+-----------------------+----------------------------------------------+ - - -+---------------------------------------------------------------------------------------+ -; Fitter Settings ; -+----------------------------------------------------+------------------+---------------+ -; Option ; Setting ; Default Value ; -+----------------------------------------------------+------------------+---------------+ -; Device ; EPM7128STC100-10 ; ; -; Use smart compilation ; Off ; Off ; -; Use TimeQuest Timing Analyzer ; Off ; Off ; -; Optimize Timing for ECOs ; Off ; Off ; -; Regenerate full fit report during ECO compiles ; Off ; Off ; -; Optimize IOC Register Placement for Timing ; On ; On ; -; Limit to One Fitting Attempt ; Off ; Off ; -; Fitter Initial Placement Seed ; 1 ; 1 ; -; Slow Slew Rate ; Off ; Off ; -; Fitter Effort ; Auto Fit ; Auto Fit ; -; Force Fitter to Avoid Periphery Placement Warnings ; Off ; Off ; -+----------------------------------------------------+------------------+---------------+ - - -Parallel compilation was disabled, but you have multiple processors available. Enable parallel compilation to reduce compilation time. -+-------------------------------------+ -; Parallel Compilation ; -+----------------------------+--------+ -; Processors ; Number ; -+----------------------------+--------+ -; Number detected on machine ; 4 ; -; Maximum allowed ; 1 ; -+----------------------------+--------+ - - -+--------------+ -; Pin-Out File ; -+--------------+ -The pin-out file can be found in C:/Sprinter/src/altera/quartus/max/sp2_max.pin. - - -+-------------------------------------------------------+ -; Fitter Resource Usage Summary ; -+-----------------------------------+-------------------+ -; Resource ; Usage ; -+-----------------------------------+-------------------+ -; Logic cells ; 74 / 128 ( 58 % ) ; -; Registers ; 57 / 128 ( 45 % ) ; -; Number of pterms used ; 195 ; -; User inserted logic elements ; 0 ; -; I/O pins ; 84 / 84 ( 100 % ) ; -; -- Clock pins ; 2 / 2 ( 100 % ) ; -; -- Dedicated input pins ; 2 / 2 ( 100 % ) ; -; Global signals ; 2 ; -; Shareable expanders ; 11 / 128 ( 9 % ) ; -; Parallel expanders ; 3 / 120 ( 3 % ) ; -; Cells using turbo bit ; 74 / 128 ( 58 % ) ; -; Maximum fan-out node ; HDD_C[2] ; -; Maximum fan-out ; 21 ; -; Highest non-global fan-out signal ; HDD_C[2] ; -; Highest non-global fan-out ; 21 ; -; Total fan-out ; 438 ; -; Average fan-out ; 2.59 ; -+-----------------------------------+-------------------+ - - -+------------------------------------------------------------------------------------------------------------------------------------------------+ -; Input Pins ; -+----------+-------+----------+-----+-----------------------+--------------------+--------+----------------+--------------+----------------------+ -; Name ; Pin # ; I/O Bank ; LAB ; Combinational Fan-Out ; Registered Fan-Out ; Global ; Input Register ; I/O Standard ; Location assigned by ; -+----------+-------+----------+-----+-----------------------+--------------------+--------+----------------+--------------+----------------------+ -; D0 ; 60 ; -- ; 6 ; 1 ; 0 ; no ; no ; TTL ; User ; -; EPM_RES ; 89 ; -- ; -- ; 2 ; 0 ; yes ; no ; TTL ; User ; -; FDD_C[0] ; 44 ; -- ; 5 ; 14 ; 0 ; no ; no ; TTL ; User ; -; FDD_C[1] ; 45 ; -- ; 5 ; 17 ; 0 ; no ; no ; TTL ; User ; -; FDD_C[2] ; 46 ; -- ; 5 ; 15 ; 0 ; no ; no ; TTL ; User ; -; HDD_C[0] ; 47 ; -- ; 5 ; 16 ; 0 ; no ; no ; TTL ; User ; -; HDD_C[1] ; 42 ; -- ; 5 ; 19 ; 0 ; no ; no ; TTL ; User ; -; HDD_C[2] ; 41 ; -- ; 5 ; 21 ; 0 ; no ; no ; TTL ; User ; -; HDD_C[3] ; 40 ; -- ; 5 ; 18 ; 0 ; no ; no ; TTL ; User ; -; PW_GOOD ; 90 ; -- ; -- ; 1 ; 0 ; no ; no ; TTL ; User ; -; RDAT ; 92 ; -- ; 1 ; 1 ; 0 ; no ; no ; TTL ; User ; -; RSTB ; 25 ; -- ; 3 ; 1 ; 0 ; no ; no ; TTL ; User ; -; SINC_IN ; 69 ; -- ; 7 ; 0 ; 0 ; no ; no ; TTL ; User ; -; SL ; 30 ; -- ; 4 ; 1 ; 0 ; no ; no ; TTL ; User ; -; SR ; 29 ; -- ; 4 ; 1 ; 0 ; no ; no ; TTL ; User ; -; STE ; 94 ; -- ; 1 ; 1 ; 0 ; no ; no ; TTL ; User ; -; TG42_IN ; 87 ; -- ; -- ; 11 ; 0 ; yes ; no ; TTL ; User ; -; TR43 ; 12 ; -- ; 2 ; 2 ; 0 ; no ; no ; TTL ; User ; -; UNUSED1 ; 50 ; -- ; 5 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED2 ; 27 ; -- ; 4 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED22 ; 22 ; -- ; 3 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED24 ; 70 ; -- ; 7 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED27 ; 7 ; -- ; 2 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED28 ; 28 ; -- ; 4 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED33 ; 33 ; -- ; 4 ; 0 ; 0 ; no ; no ; TTL ; User ; -; UNUSED49 ; 49 ; -- ; 5 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED5 ; 72 ; -- ; 7 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED50 ; 24 ; -- ; 3 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED53 ; 53 ; -- ; 6 ; 0 ; 0 ; no ; no ; TTL ; User ; -; UNUSED55 ; 1 ; -- ; 1 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED63 ; 55 ; -- ; 6 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED65 ; 65 ; -- ; 7 ; 0 ; 0 ; no ; no ; TTL ; User ; -; UNUSED7 ; 77 ; -- ; 8 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED70 ; 5 ; -- ; 2 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED72 ; 2 ; -- ; 1 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED77 ; 63 ; -- ; 7 ; 0 ; 0 ; no ; no ; TTL ; Fitter ; -; UNUSED78 ; 78 ; -- ; 8 ; 0 ; 0 ; no ; no ; TTL ; User ; -; VGA_IN ; 61 ; -- ; 6 ; 0 ; 0 ; no ; no ; TTL ; User ; -; WD ; 9 ; -- ; 2 ; 2 ; 0 ; no ; no ; TTL ; User ; -; WR_CNF ; 57 ; -- ; 6 ; 1 ; 0 ; no ; no ; TTL ; User ; -; WSTB ; 10 ; -- ; 2 ; 1 ; 0 ; no ; no ; TTL ; User ; -; XACS ; 37 ; -- ; 4 ; 1 ; 0 ; no ; no ; TTL ; User ; -; XA[0] ; 17 ; -- ; 3 ; 0 ; 0 ; no ; no ; TTL ; User ; -; XA[1] ; 21 ; -- ; 3 ; 0 ; 0 ; no ; no ; TTL ; User ; -; XA[2] ; 23 ; -- ; 3 ; 0 ; 0 ; no ; no ; TTL ; User ; -; XHR_RDY ; 88 ; -- ; -- ; 0 ; 0 ; no ; no ; TTL ; User ; -+----------+-------+----------+-----+-----------------------+--------------------+--------+----------------+--------------+----------------------+ - - -+---------------------------------------------------------------------------------------------------------------------------------------------------+ -; Output Pins ; -+------------+-------+----------+-----+-----------------+----------------+------------+---------------+--------------+----------------------+-------+ -; Name ; Pin # ; I/O Bank ; LAB ; Output Register ; Slow Slew Rate ; Open Drain ; TRI Primitive ; I/O Standard ; Location assigned by ; Load ; -+------------+-------+----------+-----+-----------------+----------------+------------+---------------+--------------+----------------------+-------+ -; /WG_RD ; 97 ; -- ; 1 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; /WG_WR ; 93 ; -- ; 1 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; 10K_CLK ; 56 ; -- ; 6 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; 10K_D0 ; 58 ; -- ; 6 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; AUD ; 35 ; -- ; 4 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; BEEP ; 84 ; -- ; 8 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; CLK14 ; 31 ; -- ; 4 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; CLK_WG ; 13 ; -- ; 2 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; CMOS_AS ; 6 ; -- ; 2 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; CMOS_DRD ; 99 ; -- ; 1 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; CMOS_DWR ; 100 ; -- ; 1 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; DENS_X ; 96 ; -- ; 1 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; FDAT ; 14 ; -- ; 2 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; HD_CS ; 52 ; -- ; 6 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; HD_DIR ; 48 ; -- ; 5 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; QDAT ; 16 ; -- ; 3 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; SINC ; 67 ; -- ; 7 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; SINC_H ; 68 ; -- ; 7 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; SINC_V ; 64 ; -- ; 7 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; TG42_BUF ; 36 ; -- ; 4 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; TG42_OUT ; 85 ; -- ; 8 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; WDAT ; 98 ; -- ; 1 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; WR_PDOS ; 8 ; -- ; 2 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; XHD1_CS[1] ; 79 ; -- ; 8 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; XHD1_CS[2] ; 80 ; -- ; 8 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; XHD2_CS[1] ; 81 ; -- ; 8 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; XHD2_CS[2] ; 83 ; -- ; 8 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; XHD_RD ; 76 ; -- ; 8 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; XHD_RES ; 71 ; -- ; 7 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; XHD_WR ; 75 ; -- ; 8 ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -+------------+-------+----------+-----+-----------------+----------------+------------+---------------+--------------+----------------------+-------+ - - -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Bidir Pins ; -+---------+-------+----------+-----+-----------------------+--------------------+--------+----------------+-----------------+----------------+------------+--------------+----------------------+-------+ -; Name ; Pin # ; I/O Bank ; LAB ; Combinational Fan-Out ; Registered Fan-Out ; Global ; Input Register ; Output Register ; Slow Slew Rate ; Open Drain ; I/O Standard ; Location assigned by ; Load ; -+---------+-------+----------+-----+-----------------------+--------------------+--------+----------------+-----------------+----------------+------------+--------------+----------------------+-------+ -; /CONF_X ; 54 ; -- ; 6 ; 0 ; 0 ; no ; no ; no ; no ; yes ; TTL ; User ; 10 pF ; -; CLKZZ ; 32 ; -- ; 4 ; 0 ; 0 ; no ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; SINC_1 ; 20 ; -- ; 3 ; 0 ; 0 ; no ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -; SINC_2 ; 19 ; -- ; 3 ; 0 ; 0 ; no ; no ; no ; no ; no ; TTL ; User ; 10 pF ; -+---------+-------+----------+-----+-----------------------+--------------------+--------+----------------+-----------------+----------------+------------+--------------+----------------------+-------+ - - -+-------------------------------------------------------------------------------------------------------+ -; All Package Pins ; -+----------+------------+----------+----------------+--------+--------------+---------+-----------------+ -; Location ; Pad Number ; I/O Bank ; Pin Name/Usage ; Dir. ; I/O Standard ; Voltage ; User Assignment ; -+----------+------------+----------+----------------+--------+--------------+---------+-----------------+ -; 1 ; 12 ; -- ; UNUSED55 ; input ; TTL ; ; N ; -; 2 ; 13 ; -- ; UNUSED72 ; input ; TTL ; ; N ; -; 3 ; 14 ; -- ; VCCIO ; power ; ; 5.0V ; ; -; 4 ; 15 ; -- ; TDI ; input ; TTL ; ; N ; -; 5 ; 16 ; -- ; UNUSED70 ; input ; TTL ; ; N ; -; 6 ; 17 ; -- ; CMOS_AS ; output ; TTL ; ; Y ; -; 7 ; 18 ; -- ; UNUSED27 ; input ; TTL ; ; N ; -; 8 ; 19 ; -- ; WR_PDOS ; output ; TTL ; ; Y ; -; 9 ; 20 ; -- ; WD ; input ; TTL ; ; Y ; -; 10 ; 21 ; -- ; WSTB ; input ; TTL ; ; Y ; -; 11 ; 22 ; -- ; GND ; gnd ; ; ; ; -; 12 ; 23 ; -- ; TR43 ; input ; TTL ; ; Y ; -; 13 ; 24 ; -- ; CLK_WG ; output ; TTL ; ; Y ; -; 14 ; 25 ; -- ; FDAT ; output ; TTL ; ; Y ; -; 15 ; 26 ; -- ; TMS ; input ; TTL ; ; N ; -; 16 ; 27 ; -- ; QDAT ; output ; TTL ; ; Y ; -; 17 ; 28 ; -- ; XA[0] ; input ; TTL ; ; Y ; -; 18 ; 29 ; -- ; VCCIO ; power ; ; 5.0V ; ; -; 19 ; 30 ; -- ; SINC_2 ; bidir ; TTL ; ; Y ; -; 20 ; 31 ; -- ; SINC_1 ; bidir ; TTL ; ; Y ; -; 21 ; 32 ; -- ; XA[1] ; input ; TTL ; ; Y ; -; 22 ; 33 ; -- ; UNUSED22 ; input ; TTL ; ; N ; -; 23 ; 34 ; -- ; XA[2] ; input ; TTL ; ; Y ; -; 24 ; 35 ; -- ; UNUSED50 ; input ; TTL ; ; N ; -; 25 ; 36 ; -- ; RSTB ; input ; TTL ; ; Y ; -; 26 ; 37 ; -- ; GND ; gnd ; ; ; ; -; 27 ; 38 ; -- ; UNUSED2 ; input ; TTL ; ; N ; -; 28 ; 39 ; -- ; UNUSED28 ; input ; TTL ; ; N ; -; 29 ; 40 ; -- ; SR ; input ; TTL ; ; Y ; -; 30 ; 41 ; -- ; SL ; input ; TTL ; ; Y ; -; 31 ; 42 ; -- ; CLK14 ; output ; TTL ; ; Y ; -; 32 ; 43 ; -- ; CLKZZ ; bidir ; TTL ; ; Y ; -; 33 ; 44 ; -- ; UNUSED33 ; input ; TTL ; ; Y ; -; 34 ; 45 ; -- ; VCCIO ; power ; ; 5.0V ; ; -; 35 ; 46 ; -- ; AUD ; output ; TTL ; ; Y ; -; 36 ; 47 ; -- ; TG42_BUF ; output ; TTL ; ; Y ; -; 37 ; 48 ; -- ; XACS ; input ; TTL ; ; Y ; -; 38 ; 49 ; -- ; GND ; gnd ; ; ; ; -; 39 ; 50 ; -- ; VCCINT ; power ; ; 5.0V ; ; -; 40 ; 51 ; -- ; HDD_C[3] ; input ; TTL ; ; Y ; -; 41 ; 52 ; -- ; HDD_C[2] ; input ; TTL ; ; Y ; -; 42 ; 53 ; -- ; HDD_C[1] ; input ; TTL ; ; Y ; -; 43 ; 54 ; -- ; GND ; gnd ; ; ; ; -; 44 ; 55 ; -- ; FDD_C[0] ; input ; TTL ; ; Y ; -; 45 ; 56 ; -- ; FDD_C[1] ; input ; TTL ; ; Y ; -; 46 ; 57 ; -- ; FDD_C[2] ; input ; TTL ; ; Y ; -; 47 ; 58 ; -- ; HDD_C[0] ; input ; TTL ; ; Y ; -; 48 ; 59 ; -- ; HD_DIR ; output ; TTL ; ; Y ; -; 49 ; 60 ; -- ; UNUSED49 ; input ; TTL ; ; N ; -; 50 ; 61 ; -- ; UNUSED1 ; input ; TTL ; ; N ; -; 51 ; 62 ; -- ; VCCIO ; power ; ; 5.0V ; ; -; 52 ; 63 ; -- ; HD_CS ; output ; TTL ; ; Y ; -; 53 ; 64 ; -- ; UNUSED53 ; input ; TTL ; ; Y ; -; 54 ; 65 ; -- ; /CONF_X ; bidir ; TTL ; ; Y ; -; 55 ; 66 ; -- ; UNUSED63 ; input ; TTL ; ; N ; -; 56 ; 67 ; -- ; 10K_CLK ; output ; TTL ; ; Y ; -; 57 ; 68 ; -- ; WR_CNF ; input ; TTL ; ; Y ; -; 58 ; 69 ; -- ; 10K_D0 ; output ; TTL ; ; Y ; -; 59 ; 70 ; -- ; GND ; gnd ; ; ; ; -; 60 ; 71 ; -- ; D0 ; input ; TTL ; ; Y ; -; 61 ; 72 ; -- ; VGA_IN ; input ; TTL ; ; Y ; -; 62 ; 73 ; -- ; TCK ; input ; TTL ; ; N ; -; 63 ; 74 ; -- ; UNUSED77 ; input ; TTL ; ; N ; -; 64 ; 75 ; -- ; SINC_V ; output ; TTL ; ; Y ; -; 65 ; 76 ; -- ; UNUSED65 ; input ; TTL ; ; Y ; -; 66 ; 77 ; -- ; VCCIO ; power ; ; 5.0V ; ; -; 67 ; 78 ; -- ; SINC ; output ; TTL ; ; Y ; -; 68 ; 79 ; -- ; SINC_H ; output ; TTL ; ; Y ; -; 69 ; 80 ; -- ; SINC_IN ; input ; TTL ; ; Y ; -; 70 ; 81 ; -- ; UNUSED24 ; input ; TTL ; ; N ; -; 71 ; 82 ; -- ; XHD_RES ; output ; TTL ; ; Y ; -; 72 ; 83 ; -- ; UNUSED5 ; input ; TTL ; ; N ; -; 73 ; 84 ; -- ; TDO ; output ; TTL ; ; N ; -; 74 ; 85 ; -- ; GND ; gnd ; ; ; ; -; 75 ; 86 ; -- ; XHD_WR ; output ; TTL ; ; Y ; -; 76 ; 87 ; -- ; XHD_RD ; output ; TTL ; ; Y ; -; 77 ; 88 ; -- ; UNUSED7 ; input ; TTL ; ; N ; -; 78 ; 89 ; -- ; UNUSED78 ; input ; TTL ; ; Y ; -; 79 ; 90 ; -- ; XHD1_CS[1] ; output ; TTL ; ; Y ; -; 80 ; 91 ; -- ; XHD1_CS[2] ; output ; TTL ; ; Y ; -; 81 ; 92 ; -- ; XHD2_CS[1] ; output ; TTL ; ; Y ; -; 82 ; 93 ; -- ; VCCIO ; power ; ; 5.0V ; ; -; 83 ; 94 ; -- ; XHD2_CS[2] ; output ; TTL ; ; Y ; -; 84 ; 95 ; -- ; BEEP ; output ; TTL ; ; Y ; -; 85 ; 96 ; -- ; TG42_OUT ; output ; TTL ; ; Y ; -; 86 ; 97 ; -- ; GND ; gnd ; ; ; ; -; 87 ; 98 ; -- ; TG42_IN ; input ; TTL ; ; Y ; -; 88 ; 99 ; -- ; XHR_RDY ; input ; TTL ; ; Y ; -; 89 ; 0 ; -- ; EPM_RES ; input ; TTL ; ; Y ; -; 90 ; 1 ; -- ; PW_GOOD ; input ; TTL ; ; Y ; -; 91 ; 2 ; -- ; VCCINT ; power ; ; 5.0V ; ; -; 92 ; 3 ; -- ; RDAT ; input ; TTL ; ; Y ; -; 93 ; 4 ; -- ; /WG_WR ; output ; TTL ; ; Y ; -; 94 ; 5 ; -- ; STE ; input ; TTL ; ; Y ; -; 95 ; 6 ; -- ; GND ; gnd ; ; ; ; -; 96 ; 7 ; -- ; DENS_X ; output ; TTL ; ; Y ; -; 97 ; 8 ; -- ; /WG_RD ; output ; TTL ; ; Y ; -; 98 ; 9 ; -- ; WDAT ; output ; TTL ; ; Y ; -; 99 ; 10 ; -- ; CMOS_DRD ; output ; TTL ; ; Y ; -; 100 ; 11 ; -- ; CMOS_DWR ; output ; TTL ; ; Y ; -+----------+------------+----------+----------------+--------+--------------+---------+-----------------+ -Note: Pin directions (input, output or bidir) are based on device operating in user mode. - - -+--------------------------------------------------------------------------------------------------+ -; I/O Standard ; -+--------------+------------+----------------------+-------------------+-------------------+-------+ -; I/O Standard ; Input Vref ; Dedicated Input Pins ; Pins in I/O Bank1 ; Pins in I/O Bank2 ; Total ; -+--------------+------------+----------------------+-------------------+-------------------+-------+ -; TTL ; - ; 4 ; 0 ; 0 ; 4 ; -+--------------+------------+----------------------+-------------------+-------------------+-------+ - - -+-----------------------------------------------------------------------+ -; Dedicated Inputs I/O ; -+---------+-------+-------+-------+--------------+------------+---------+ -; Name ; Pin # ; Type ; VCCIO ; I/O Standard ; Input Vref ; Current ; -+---------+-------+-------+-------+--------------+------------+---------+ -; EPM_RES ; 89 ; Input ; -- ; TTL ; - ; 0 mA ; -; PW_GOOD ; 90 ; Input ; -- ; TTL ; - ; 0 mA ; -; TG42_IN ; 87 ; Input ; -- ; TTL ; - ; 0 mA ; -; XHR_RDY ; 88 ; Input ; -- ; TTL ; - ; 0 mA ; -+---------+-------+-------+-------+--------------+------------+---------+ - - -+-----------------------------------------------+ -; Output Pin Default Load For Reported TCO ; -+--------------+-------+------------------------+ -; I/O Standard ; Load ; Termination Resistance ; -+--------------+-------+------------------------+ -; 3.3-V LVTTL ; 10 pF ; Not Available ; -; 3.3-V LVCMOS ; 10 pF ; Not Available ; -; TTL ; 10 pF ; Not Available ; -+--------------+-------+------------------------+ -Note: User assignments will override these defaults. The user specified values are listed in the Output Pins and Bidir Pins tables. - - -+------------------------------------------------------------------------------------------------+ -; Fitter Resource Utilization by Entity ; -+----------------------------+------------+------+--------------------------------+--------------+ -; Compilation Hierarchy Node ; Macrocells ; Pins ; Full Hierarchy Name ; Library Name ; -+----------------------------+------------+------+--------------------------------+--------------+ -; |SP2_MAX ; 74 ; 84 ; |SP2_MAX ; work ; -; |lpm_counter:CTH_rtl_2| ; 6 ; 0 ; |SP2_MAX|lpm_counter:CTH_rtl_2 ; work ; -; |lpm_counter:CTV_rtl_1| ; 9 ; 0 ; |SP2_MAX|lpm_counter:CTV_rtl_1 ; work ; -; |lpm_counter:CT_rtl_0| ; 4 ; 0 ; |SP2_MAX|lpm_counter:CT_rtl_0 ; work ; -+----------------------------+------------+------+--------------------------------+--------------+ - - -+-----------------------------------------------------------------------------------------------------------------------------+ -; Control Signals ; -+------------------------------+----------+---------+----------------------+--------+----------------------+------------------+ -; Name ; Location ; Fan-Out ; Usage ; Global ; Global Resource Used ; Global Line Name ; -+------------------------------+----------+---------+----------------------+--------+----------------------+------------------+ -; $00049~4 ; SEXP114 ; 2 ; Preset ; no ; -- ; -- ; -; /RESET ; LC85 ; 11 ; Preset ; no ; -- ; -- ; -; CT_WG ; LC26 ; 6 ; Clock ; no ; -- ; -- ; -; CT_WG1~8bal ; LC28 ; 7 ; Clock ; no ; -- ; -- ; -; CT_WG~4 ; SEXP19 ; 1 ; Clock ; no ; -- ; -- ; -; CT_WG~5 ; SEXP18 ; 1 ; Clock ; no ; -- ; -- ; -; CT_WG~6 ; SEXP17 ; 1 ; Clock ; no ; -- ; -- ; -; EPM_RES ; PIN_89 ; 2 ; Async. clear ; yes ; On ; -- ; -; FDD_1440~10 ; SEXP81 ; 1 ; Preset ; no ; -- ; -- ; -; FDD_C[0] ; PIN_44 ; 14 ; Async. clear ; no ; -- ; -- ; -; FDD_C[1] ; PIN_45 ; 17 ; Async. clear ; no ; -- ; -- ; -; FDD_C[2] ; PIN_46 ; 15 ; Async. clear, Preset ; no ; -- ; -- ; -; HDD_CLK ; LC88 ; 10 ; Clock ; no ; -- ; -- ; -; HDD_C[0] ; PIN_47 ; 16 ; Async. clear ; no ; -- ; -- ; -; HDD_C[1] ; PIN_42 ; 19 ; Async. clear ; no ; -- ; -- ; -; HDD_C[2] ; PIN_41 ; 21 ; Async. clear ; no ; -- ; -- ; -; HDD_C[3] ; PIN_40 ; 18 ; Async. clear ; no ; -- ; -- ; -; SINC_HT ; LC104 ; 16 ; Clock ; no ; -- ; -- ; -; SINC_VT ; LC99 ; 10 ; Clock ; no ; -- ; -- ; -; STWG[2] ; LC19 ; 4 ; Clock ; no ; -- ; -- ; -; STWG[2]~6bal ; LC16 ; 3 ; Clock ; no ; -- ; -- ; -; TG42_IN ; PIN_87 ; 11 ; Clock ; yes ; On ; -- ; -; XACS ; PIN_37 ; 1 ; Async. clear ; no ; -- ; -- ; -; XCT[0] ; LC124 ; 2 ; Clock ; no ; -- ; -- ; -; XCT[1] ; LC56 ; 15 ; Clock ; no ; -- ; -- ; -; XCT[2]~11 ; SEXP115 ; 1 ; Clock ; no ; -- ; -- ; -; XCT[2]~12 ; SEXP116 ; 1 ; Clock ; no ; -- ; -- ; -; XCT[2]~3 ; SEXP51 ; 1 ; Clock ; no ; -- ; -- ; -; XCT[2]~4 ; SEXP49 ; 1 ; Clock ; no ; -- ; -- ; -; lpm_counter:CT_rtl_0|dffs[3] ; LC53 ; 9 ; Clock ; no ; -- ; -- ; -+------------------------------+----------+---------+----------------------+--------+----------------------+------------------+ - - -+------------------------------------------------------------------------+ -; Global & Other Fast Signals ; -+---------+----------+---------+----------------------+------------------+ -; Name ; Location ; Fan-Out ; Global Resource Used ; Global Line Name ; -+---------+----------+---------+----------------------+------------------+ -; EPM_RES ; PIN_89 ; 2 ; On ; -- ; -; TG42_IN ; PIN_87 ; 11 ; On ; -- ; -+---------+----------+---------+----------------------+------------------+ - - -+-----------------------------------------+ -; Non-Global High Fan-Out Signals ; -+-------------------------------+---------+ -; Name ; Fan-Out ; -+-------------------------------+---------+ -; HDD_C[2] ; 21 ; -; HDD_C[1] ; 19 ; -; HDD_C[3] ; 18 ; -; FDD_C[1] ; 17 ; -; HDD_C[0] ; 16 ; -; SINC_HT ; 16 ; -; FDD_C[2] ; 15 ; -; XCT[1] ; 15 ; -; FDD_C[0] ; 14 ; -; /RESET ; 11 ; -; HDD_CLK ; 10 ; -; SINC_VT ; 10 ; -; lpm_counter:CTV_rtl_1|dffs[0] ; 9 ; -; lpm_counter:CT_rtl_0|dffs[3] ; 9 ; -; lpm_counter:CTV_rtl_1|dffs[2] ; 8 ; -; CT_WG1~8bal ; 7 ; -; THDD~2 ; 7 ; -; lpm_counter:CTV_rtl_1|dffs[3] ; 7 ; -; lpm_counter:CTV_rtl_1|dffs[1] ; 7 ; -; $00021 ; 6 ; -; CT_WG ; 6 ; -; FDD_1440 ; 6 ; -; lpm_counter:CTV_rtl_1|dffs[4] ; 6 ; -; WGR[3] ; 5 ; -; WGR[1] ; 5 ; -; WGR[0] ; 5 ; -; WGR[2] ; 5 ; -; NTHDD~11 ; 5 ; -; lpm_counter:CTV_rtl_1|dffs[5] ; 5 ; -; lpm_counter:CTH_rtl_2|dffs[2] ; 5 ; -; lpm_counter:CTH_rtl_2|dffs[0] ; 5 ; -; lpm_counter:CT_rtl_0|dffs[0] ; 5 ; -; STWG[2] ; 4 ; -; RDAT_X~6 ; 4 ; -; lpm_counter:CTV_rtl_1|dffs[6] ; 4 ; -; lpm_counter:CTH_rtl_2|dffs[3] ; 4 ; -; lpm_counter:CTH_rtl_2|dffs[1] ; 4 ; -; STWG[2]~6bal ; 3 ; -; REG_P[1] ; 3 ; -; REG_P[0] ; 3 ; -; LR_T[0] ; 3 ; -; LR_T[1] ; 3 ; -; TURBING~5 ; 3 ; -; CNF_OFF ; 3 ; -; lpm_counter:CTV_rtl_1|dffs[8] ; 3 ; -; lpm_counter:CTV_rtl_1|dffs[7] ; 3 ; -; lpm_counter:CTH_rtl_2|dffs[5] ; 3 ; -; lpm_counter:CTH_rtl_2|dffs[4] ; 3 ; -; NT320~2 ; 3 ; -; TR43 ; 2 ; -+-------------------------------+---------+ - - -+-------------------------------------------------+ -; Interconnect Usage Summary ; -+----------------------------+--------------------+ -; Interconnect Resource Type ; Usage ; -+----------------------------+--------------------+ -; Output enables ; 1 / 6 ( 17 % ) ; -; PIA buffers ; 119 / 288 ( 41 % ) ; -; PIAs ; 127 / 288 ( 44 % ) ; -+----------------------------+--------------------+ - - -+-----------------------------------------------------------------------------+ -; LAB External Interconnect ; -+-----------------------------------------------+-----------------------------+ -; LAB External Interconnects (Average = 15.88) ; Number of LABs (Total = 8) ; -+-----------------------------------------------+-----------------------------+ -; 0 - 2 ; 1 ; -; 3 - 5 ; 0 ; -; 6 - 8 ; 1 ; -; 9 - 11 ; 0 ; -; 12 - 14 ; 1 ; -; 15 - 17 ; 2 ; -; 18 - 20 ; 0 ; -; 21 - 23 ; 1 ; -; 24 - 26 ; 1 ; -; 27 - 29 ; 1 ; -+-----------------------------------------------+-----------------------------+ - - -+----------------------------------------------------------------------+ -; LAB Macrocells ; -+----------------------------------------+-----------------------------+ -; Number of Macrocells (Average = 9.25) ; Number of LABs (Total = 8) ; -+----------------------------------------+-----------------------------+ -; 0 ; 0 ; -; 1 ; 1 ; -; 2 ; 0 ; -; 3 ; 0 ; -; 4 ; 2 ; -; 5 ; 1 ; -; 6 ; 0 ; -; 7 ; 0 ; -; 8 ; 0 ; -; 9 ; 0 ; -; 10 ; 0 ; -; 11 ; 0 ; -; 12 ; 0 ; -; 13 ; 0 ; -; 14 ; 1 ; -; 15 ; 2 ; -; 16 ; 1 ; -+----------------------------------------+-----------------------------+ - - -+---------------------------------------------------------+ -; Parallel Expander ; -+--------------------------+------------------------------+ -; Parallel Expander Length ; Number of Parallel Expanders ; -+--------------------------+------------------------------+ -; 0 ; 0 ; -; 1 ; 3 ; -+--------------------------+------------------------------+ - - -+-------------------------------------------------------------------------------+ -; Shareable Expander ; -+-------------------------------------------------+-----------------------------+ -; Number of shareable expanders (Average = 1.38) ; Number of LABs (Total = 4) ; -+-------------------------------------------------+-----------------------------+ -; 0 ; 4 ; -; 1 ; 0 ; -; 2 ; 2 ; -; 3 ; 1 ; -; 4 ; 1 ; -+-------------------------------------------------+-----------------------------+ - - -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Logic Cell Interconnection ; -+-----+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; LAB ; Logic Cell ; Input ; Output ; -+-----+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; A ; LC15 ; lpm_counter:CTV_rtl_1|dffs[0], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8] ; -; A ; LC6 ; HDD_C[3], HDD_C[1], FDD_C[1], FDD_C[0], HDD_C[2], HDD_C[0], HDD_CLK, FDD_C[2] ; CMOS_DRD ; -; A ; LC12 ; SL, WD, TR43, STWG[2] ; REG_P[0], REG_P[1], REG_P[2] ; -; A ; LC16 ; STWG[2], CT_WG ; STWG[0], STWG[1], STWG[2] ; -; A ; LC10 ; WD, TR43, SR, STWG[2] ; REG_P[0], REG_P[1], REG_P[2] ; -; A ; LC5 ; HDD_C[3], HDD_C[1], FDD_C[1], FDD_C[0], HDD_C[2], HDD_C[0], HDD_CLK, FDD_C[2] ; CMOS_DWR ; -; A ; LC1 ; lpm_counter:CTV_rtl_1|dffs[0], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8] ; -; A ; LC14 ; FDD_C[0], FDD_C[1], HDD_C[2], HDD_C[0], HDD_C[3], HDD_C[1], HDD_CLK, FDD_C[2] ; /WG_WR ; -; A ; LC9 ; FDD_C[1], FDD_C[0], HDD_C[2], HDD_C[0], HDD_C[3], HDD_C[1], HDD_CLK, FDD_C[2] ; /WG_RD ; -; A ; LC4 ; LR_T[0], LR_T[1], REG_P[0], REG_P[1], CT_WG ; REG_P[0], REG_P[1], REG_P[2] ; -; A ; LC2 ; LR_T[0], REG_P[0], REG_P[1], LR_T[1], CT_WG ; REG_P[0], REG_P[1], REG_P[2] ; -; A ; LC11 ; ; DENS_X ; -; A ; LC8 ; REG_P[1], REG_P[0], LR_T[1], LR_T[0], CT_WG ; WDAT ; -; A ; LC3 ; XACS, /RESET ; CLKZZ, HDD_CLK, FDD_1440 ; -; B ; LC29 ; HDD_C[3], HDD_C[1], FDD_C[1], FDD_C[0], HDD_C[2], HDD_C[0], HDD_CLK, FDD_C[2] ; CMOS_AS ; -; B ; LC17 ; RDAT_X~6, $00023, CT_WG1~8bal ; FDAT, WGR[2], WGR[0], WGR[1], WGR[3], WGR[4] ; -; B ; LC18 ; lpm_counter:CT_rtl_0|dffs[0], XCT[1] ; lpm_counter:CT_rtl_0|dffs[2], lpm_counter:CT_rtl_0|dffs[3] ; -; B ; LC23 ; STWG[0], STWG[2]~6bal ; STWG[2] ; -; B ; LC19 ; STWG[1], STWG[0], STWG[2]~6bal ; CLK_WG, LR_T[1], LR_T[0], STWG[2]~6bal ; -; B ; LC22 ; RDAT_X~6, CT_WG1~8bal ; $00021 ; -; B ; LC32 ; TURBING~5, FDD_1440, STE, RSTB, WSTB ; TURBING~5, CT_WG~5, CT_WG~6 ; -; B ; LC31 ; STWG[2]~6bal ; STWG[1], STWG[2] ; -; B ; LC25 ; FDD_C[0], FDD_C[1], HDD_C[2], HDD_C[0], HDD_C[3], HDD_C[1], HDD_CLK, FDD_C[2] ; WR_PDOS ; -; B ; LC27 ; WGR[2], WGR[3], $00021, WGR[1], WGR[0], CT_WG1~8bal ; WGR[2], WGR[0], WGR[1], WGR[3], WGR[4] ; -; B ; LC21 ; RDAT_X~11, RDAT_X~6, FDD_1440, lpm_counter:CT_rtl_0|dffs[0], RDAT, XCT[1] ; RDAT_X~6, $00023, $00021, RDAT_X~11 ; -; B ; LC20 ; RDAT_X~6, FDD_1440, XCT[1] ; RDAT_X~6 ; -; B ; LC26 ; CT_WG~4, CT_WG~5, CT_WG~6 ; CT_WG~4, CT_WG~6, REG_P[0], REG_P[1], REG_P[2], STWG[2]~6bal ; -; B ; LC28 ; FDD_1440, lpm_counter:CT_rtl_0|dffs[0], XCT[1] ; $00023, $00021, WGR[2], WGR[0], WGR[1], WGR[3], WGR[4] ; -; B ; LC24 ; $00021, WGR[2], WGR[1], WGR[3], WGR[0], CT_WG1~8bal ; WGR[2], WGR[0], WGR[1], WGR[3], WGR[4] ; -; C ; LC44 ; WGR[3], $00021, WGR[2], WGR[1], WGR[0], CT_WG1~8bal ; WGR[2], WGR[0], WGR[1], WGR[3], WGR[4] ; -; C ; LC35 ; lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[1], lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[5] ; -; C ; LC39 ; lpm_counter:CTH_rtl_2|dffs[0], lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[5] ; -; C ; LC37 ; SINC_HT, lpm_counter:CTH_rtl_2|dffs[1], lpm_counter:CTH_rtl_2|dffs[0], lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[5], SINC_HT ; -; C ; LC42 ; SINC_HT, lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CTH_rtl_2|dffs[1], lpm_counter:CTH_rtl_2|dffs[0], lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[5], SINC_HT ; -; C ; LC40 ; SINC_HT, lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CTH_rtl_2|dffs[1], lpm_counter:CTH_rtl_2|dffs[0], lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[5], SINC_HT ; -; C ; LC41 ; SINC_HT, lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CTH_rtl_2|dffs[1], lpm_counter:CTH_rtl_2|dffs[0], lpm_counter:CTH_rtl_2|dffs[5], lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[5], SINC_HT, SINC_1 ; -; C ; LC34 ; SINC_VT, lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[2], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8], SINC_VT ; -; C ; LC47 ; SINC_VT, lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[3], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8], SINC_VT ; -; C ; LC48 ; SINC_VT, lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[4], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8], SINC_VT ; -; C ; LC45 ; SINC_VT, lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[6], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8], SINC_VT ; -; C ; LC36 ; SINC_VT, lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[7], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8], SINC_VT ; -; C ; LC43 ; SINC_VT, lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[8], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[8], SINC_VT, SINC_2 ; -; C ; LC38 ; SINC_VT, lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[5], SINC_HT ; lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8], SINC_VT ; -; C ; LC33 ; WGR[3], WGR[1], WGR[2], WGR[0], $00021, CT_WG1~8bal ; WGR[2], WGR[0], WGR[1], WGR[3], WGR[4] ; -; C ; LC46 ; WGR[1], WGR[2], WGR[0], $00021, WGR[3], CT_WG1~8bal ; QDAT ; -; D ; LC49 ; lpm_counter:CT_rtl_0|dffs[1], lpm_counter:CT_rtl_0|dffs[0], XCT[1] ; lpm_counter:CT_rtl_0|dffs[3] ; -; D ; LC53 ; lpm_counter:CT_rtl_0|dffs[2], lpm_counter:CT_rtl_0|dffs[1], lpm_counter:CT_rtl_0|dffs[0], XCT[1] ; AUD, lpm_counter:CTH_rtl_2|dffs[0], lpm_counter:CTH_rtl_2|dffs[1], lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[5], SINC_HT, /RESET ; -; D ; LC56 ; XCT[0], XCT[2]~3, XCT[2]~4 ; XCT[2]~3, XCT[2]~4, lpm_counter:CT_rtl_0|dffs[0], lpm_counter:CT_rtl_0|dffs[1], lpm_counter:CT_rtl_0|dffs[2], lpm_counter:CT_rtl_0|dffs[3], CLKZZ, CT_WG~4, CT_WG~5, CT_WG~6, RDAT_X~6, RDAT_X~11, CT_WG1~8bal, XCT[2]~11, XCT[2]~12 ; -; D ; LC51 ; TG42_IN ; TG42_BUF ; -; D ; LC57 ; XCT[0] ; CLK14 ; -; E ; LC77 ; $00049 ; HD_DIR ; -; F ; LC91 ; D0, CNF_OFF, FDD_1440, HDD_CLK, HDD_C[3], HDD_C[1], FDD_C[0], FDD_C[1], HDD_C[2], HDD_C[0], FDD_C[2], FDD_1440~10 ; FDD_1440, 10K_D0, TURBING~5, RDAT_X~6, RDAT_X~11, CT_WG1~8bal ; -; F ; LC88 ; TG42_IN, WR_CNF, CNF_OFF, HDD_C[0], FDD_C[2] ; 10K_CLK, FDD_1440, $00041, $00042, $00043, $00044, $00045, $00046, $00048, $00049 ; -; F ; LC81 ; ; HD_CS ; -; F ; LC85 ; $00047, EPM_RES, lpm_counter:CT_rtl_0|dffs[3], HDD_C[3], HDD_C[1], FDD_C[0], FDD_C[1], HDD_C[2], HDD_C[0], FDD_C[2] ; NT320~2, CNF_OFF, $00052, $00053, NTHDD~11, /CONF_X, FDD_1440~10, $00049~4, $00050, $00051, NT320~12 ; -; G ; LC102 ; SINC_VT, SINC_HT ; SINC ; -; G ; LC99 ; lpm_counter:CTV_rtl_1|dffs[8], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[3], NT320~2, SINC_HT ; lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8], SINC_V, SINC~1, $00047 ; -; G ; LC104 ; lpm_counter:CTH_rtl_2|dffs[5], lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[2], lpm_counter:CTH_rtl_2|dffs[3], lpm_counter:CTH_rtl_2|dffs[4], lpm_counter:CTH_rtl_2|dffs[5], SINC_H, lpm_counter:CTV_rtl_1|dffs[0], lpm_counter:CTV_rtl_1|dffs[1], lpm_counter:CTV_rtl_1|dffs[2], lpm_counter:CTV_rtl_1|dffs[3], lpm_counter:CTV_rtl_1|dffs[4], lpm_counter:CTV_rtl_1|dffs[5], lpm_counter:CTV_rtl_1|dffs[6], lpm_counter:CTV_rtl_1|dffs[7], lpm_counter:CTV_rtl_1|dffs[8], SINC_VT, SINC~1 ; -; G ; LC109 ; EPM_RES, PW_GOOD, SINC_VT ; XHD_RES, /RESET ; -; H ; LC117 ; NT320~12, FDD_C[0], NT320~2, /RESET, FDD_C[1], HDD_C[2], HDD_C[0], FDD_C[2] ; NT320~2, SINC_VT, NT320~12 ; -; H ; LC124 ; XCT[2]~11, XCT[2]~12 ; XCT[1], $00009 ; -; H ; LC128 ; TG42_IN ; TG42_OUT ; -; H ; LC122 ; XCT[1] ; lpm_counter:CT_rtl_0|dffs[1], lpm_counter:CT_rtl_0|dffs[2], lpm_counter:CT_rtl_0|dffs[3], RDAT_X~6, CT_WG1~8bal ; -; H ; LC114 ; NTHDD~11, FDD_C[0], FDD_C[1], HDD_C[2], HDD_C[0], FDD_C[2], HDD_C[3], HDD_C[1], THDD~2 ; NTHDD~11, THDD~2, $00050, $00051, NTHDD~13, $00052, $00053 ; -; H ; LC119 ; NTHDD~13, NTHDD~11, THDD~2, HDD_C[0], FDD_C[2], HDD_C[1], FDD_C[0], FDD_C[1], HDD_C[2], HDD_C[3], /RESET ; NTHDD~11, THDD~2, NTHDD~13, $00052, $00053 ; -; H ; LC125 ; TG42_IN, HDD_C[3], /RESET, HDD_C[1], HDD_C[2], NTHDD~4sexpand0, NTHDD~11, THDD~2 ; XHD2_CS[2] ; -; H ; LC113 ; FDD_C[1], HDD_C[1], HDD_C[2], HDD_CLK, $00049~4 ; XHD_WR ; -; H ; LC115 ; FDD_C[1], HDD_C[1], HDD_C[2], HDD_CLK, $00049~4 ; XHD_RD, $00049~11 ; -; H ; LC116 ; /RESET, NT320~2, FDD_C[2], HDD_C[3], HDD_C[1], FDD_C[0], FDD_C[1], HDD_C[2], HDD_C[0] ; NT320~2 ; -; H ; LC118 ; NTHDD~11, THDD~2, HDD_C[3], FDD_C[1], HDD_C[2] ; NTHDD~11 ; -; H ; LC120 ; TG42_IN, HDD_C[3], HDD_C[1], HDD_C[2], THDD~2, /RESET ; XHD1_CS[1] ; -; H ; LC126 ; ; BEEP ; -; H ; LC121 ; TG42_IN, HDD_C[3], HDD_C[1], HDD_C[2], THDD~2, /RESET ; XHD1_CS[2] ; -; H ; LC123 ; TG42_IN, HDD_C[3], /RESET, HDD_C[1], HDD_C[2], NTHDD~4sexpand0, NTHDD~11, THDD~2 ; XHD2_CS[1] ; -+-----+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -+---------------------------------------------------------------+ -; Fitter Device Options ; -+----------------------------------------------+----------------+ -; Option ; Setting ; -+----------------------------------------------+----------------+ -; Enable user-supplied start-up clock (CLKUSR) ; Off ; -; Enable device-wide reset (DEV_CLRn) ; Off ; -; Enable device-wide output enable (DEV_OE) ; Off ; -; Enable INIT_DONE output ; Off ; -; Configuration scheme ; Passive Serial ; -; Security bit ; On ; -; Base pin-out file on sameframe device ; Off ; -+----------------------------------------------+----------------+ - - -+-----------------+ -; Fitter Messages ; -+-----------------+ -Info: ******************************************************************* -Info: Running Quartus II Fitter - Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - Info: Processing started: Sun Aug 28 03:30:40 2022 -Info: Command: quartus_fit --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max -Info: Selected device EPM7128STC100-10 for design "sp2_max" -Warning: Ignored locations or region assignments to the following nodes - Warning: Node "10K_D[0]" is assigned to location or region, but does not exist in design - Warning: Node "CLK[14]" is assigned to location or region, but does not exist in design - Warning: Node "D[0]" is assigned to location or region, but does not exist in design - Warning: Node "FDD_C0" is assigned to location or region, but does not exist in design - Warning: Node "FDD_C1" is assigned to location or region, but does not exist in design - Warning: Node "FDD_C2" is assigned to location or region, but does not exist in design - Warning: Node "HDD_C0" is assigned to location or region, but does not exist in design - Warning: Node "HDD_C1" is assigned to location or region, but does not exist in design - Warning: Node "HDD_C2" is assigned to location or region, but does not exist in design - Warning: Node "HDD_C3" is assigned to location or region, but does not exist in design - Warning: Node "SINC_[1]" is assigned to location or region, but does not exist in design - Warning: Node "SINC_[2]" is assigned to location or region, but does not exist in design - Warning: Node "TR[43]" is assigned to location or region, but does not exist in design - Warning: Node "UNUSED[33]" is assigned to location or region, but does not exist in design - Warning: Node "UNUSED[53]" is assigned to location or region, but does not exist in design - Warning: Node "UNUSED[65]" is assigned to location or region, but does not exist in design - Warning: Node "UNUSED[78]" is assigned to location or region, but does not exist in design - Warning: Node "XA0" is assigned to location or region, but does not exist in design - Warning: Node "XA1" is assigned to location or region, but does not exist in design - Warning: Node "XA2" is assigned to location or region, but does not exist in design - Warning: Node "XHD1_CS1" is assigned to location or region, but does not exist in design - Warning: Node "XHD1_CS2" is assigned to location or region, but does not exist in design - Warning: Node "XHD2_CS1" is assigned to location or region, but does not exist in design - Warning: Node "XHD2_CS2" is assigned to location or region, but does not exist in design -Info: Quartus II Fitter was successful. 0 errors, 25 warnings - Info: Peak virtual memory: 229 megabytes - Info: Processing ended: Sun Aug 28 03:30:41 2022 - Info: Elapsed time: 00:00:01 - Info: Total CPU time (on all processors): 00:00:00 - - diff --git a/src/altera/quartus/max/sp2_max.fit.summary b/src/altera/quartus/max/sp2_max.fit.summary deleted file mode 100644 index 78c0901..0000000 --- a/src/altera/quartus/max/sp2_max.fit.summary +++ /dev/null @@ -1,9 +0,0 @@ -Fitter Status : Successful - Sun Aug 28 03:30:40 2022 -Quartus II Version : 9.0 Build 235 06/17/2009 SP 2 SJ Web Edition -Revision Name : sp2_max -Top-level Entity Name : SP2_MAX -Family : MAX7000S -Device : EPM7128STC100-10 -Timing Models : Final -Total macrocells : 74 / 128 ( 58 % ) -Total pins : 84 / 84 ( 100 % ) diff --git a/src/altera/quartus/max/sp2_max.flow.rpt b/src/altera/quartus/max/sp2_max.flow.rpt deleted file mode 100644 index 4c958e1..0000000 --- a/src/altera/quartus/max/sp2_max.flow.rpt +++ /dev/null @@ -1,117 +0,0 @@ -Flow report for sp2_max -Sun Aug 28 03:30:43 2022 -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - - ---------------------- -; Table of Contents ; ---------------------- - 1. Legal Notice - 2. Flow Summary - 3. Flow Settings - 4. Flow Non-Default Global Settings - 5. Flow Elapsed Time - 6. Flow OS Summary - 7. Flow Log - - - ----------------- -; Legal Notice ; ----------------- -Copyright (C) 1991-2009 Altera Corporation -Your use of Altera Corporation's design tools, logic functions -and other software and tools, and its AMPP partner logic -functions, and any output files from any of the foregoing -(including device programming or simulation files), and any -associated documentation or information are expressly subject -to the terms and conditions of the Altera Program License -Subscription Agreement, Altera MegaCore Function License -Agreement, or other applicable license agreement, including, -without limitation, that your use is for the sole purpose of -programming logic devices manufactured by Altera and sold by -Altera or its authorized distributors. Please refer to the -applicable agreement for further details. - - - -+------------------------------------------------------------------------+ -; Flow Summary ; -+-------------------------+----------------------------------------------+ -; Flow Status ; Successful - Sun Aug 28 03:30:43 2022 ; -; Quartus II Version ; 9.0 Build 235 06/17/2009 SP 2 SJ Web Edition ; -; Revision Name ; sp2_max ; -; Top-level Entity Name ; SP2_MAX ; -; Family ; MAX7000S ; -; Device ; EPM7128STC100-10 ; -; Timing Models ; Final ; -; Met timing requirements ; No ; -; Total macrocells ; 74 / 128 ( 58 % ) ; -; Total pins ; 84 / 84 ( 100 % ) ; -+-------------------------+----------------------------------------------+ - - -+-----------------------------------------+ -; Flow Settings ; -+-------------------+---------------------+ -; Option ; Setting ; -+-------------------+---------------------+ -; Start date & time ; 08/28/2022 03:30:38 ; -; Main task ; Compilation ; -; Revision Name ; sp2_max ; -+-------------------+---------------------+ - - -+---------------------------------------------------------------------------------------------------------------------------------------+ -; Flow Non-Default Global Settings ; -+---------------------------------+------------------------------------------------+---------------+-------------+----------------------+ -; Assignment Name ; Value ; Default Value ; Entity Name ; Section Id ; -+---------------------------------+------------------------------------------------+---------------+-------------+----------------------+ -; AUTO_GLOBAL_CLOCK ; Off ; On ; -- ; -- ; -; AUTO_GLOBAL_REGISTER_CONTROLS ; Off ; On ; -- ; -- ; -; COMPILER_SIGNATURE_ID ; 52243291855.166164663811364 ; -- ; -- ; -- ; -; CUT_OFF_READ_DURING_WRITE_PATHS ; Off ; On ; -- ; -- ; -; EDA_INPUT_GND_NAME ; Gnd ; -- ; -- ; eda_design_synthesis ; -; EDA_INPUT_VCC_NAME ; Vcc ; -- ; -- ; eda_design_synthesis ; -; EDA_SHOW_LMF_MAPPING_MESSAGES ; Off ; -- ; -- ; eda_design_synthesis ; -; EXCLUDE_TPD_PATHS_LESS_THAN ; 0 ns ; -- ; -- ; -- ; -; FMAX_REQUIREMENT ; 100 MHz ; -- ; -- ; -- ; -; MISC_FILE ; C:/Sprinter/src/altera/quartus/max/sp2_max.dpf ; -- ; -- ; -- ; -+---------------------------------+------------------------------------------------+---------------+-------------+----------------------+ - - -+-----------------------------------------------------------------------------------------------------------------------------+ -; Flow Elapsed Time ; -+-------------------------+--------------+-------------------------+---------------------+------------------------------------+ -; Module Name ; Elapsed Time ; Average Processors Used ; Peak Virtual Memory ; Total CPU Time (on all processors) ; -+-------------------------+--------------+-------------------------+---------------------+------------------------------------+ -; Analysis & Synthesis ; 00:00:01 ; 1.0 ; 229 MB ; 00:00:01 ; -; Fitter ; 00:00:00 ; 1.0 ; 204 MB ; 00:00:00 ; -; Assembler ; 00:00:00 ; 1.0 ; 198 MB ; 00:00:00 ; -; Classic Timing Analyzer ; 00:00:00 ; 1.0 ; 172 MB ; 00:00:00 ; -; Total ; 00:00:01 ; -- ; -- ; 00:00:01 ; -+-------------------------+--------------+-------------------------+---------------------+------------------------------------+ - - -+------------------------------------------------------------------------------------------+ -; Flow OS Summary ; -+-------------------------+------------------+---------------+------------+----------------+ -; Module Name ; Machine Hostname ; OS Name ; OS Version ; Processor type ; -+-------------------------+------------------+---------------+------------+----------------+ -; Analysis & Synthesis ; DESKTOP-72JG930 ; Windows Vista ; 6.2 ; x86_64 ; -; Fitter ; DESKTOP-72JG930 ; Windows Vista ; 6.2 ; x86_64 ; -; Assembler ; DESKTOP-72JG930 ; Windows Vista ; 6.2 ; x86_64 ; -; Classic Timing Analyzer ; DESKTOP-72JG930 ; Windows Vista ; 6.2 ; x86_64 ; -+-------------------------+------------------+---------------+------------+----------------+ - - ------------- -; Flow Log ; ------------- -quartus_map --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max -quartus_fit --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max -quartus_asm --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max -quartus_tan --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max - - - diff --git a/src/altera/quartus/max/sp2_max.map.rpt b/src/altera/quartus/max/sp2_max.map.rpt deleted file mode 100644 index 202918a..0000000 --- a/src/altera/quartus/max/sp2_max.map.rpt +++ /dev/null @@ -1,491 +0,0 @@ -Analysis & Synthesis report for sp2_max -Sun Aug 28 03:30:39 2022 -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - - ---------------------- -; Table of Contents ; ---------------------- - 1. Legal Notice - 2. Analysis & Synthesis Summary - 3. Analysis & Synthesis Settings - 4. Analysis & Synthesis Source Files Read - 5. Analysis & Synthesis Resource Usage Summary - 6. Analysis & Synthesis Resource Utilization by Entity - 7. Registers Removed During Synthesis - 8. Source assignments for lpm_counter:CT_rtl_0 - 9. Source assignments for lpm_counter:CTV_rtl_1 - 10. Source assignments for lpm_counter:CTH_rtl_2 - 11. Source assignments for lpm_add_sub:op_6|addcore:adder - 12. Source assignments for lpm_add_sub:op_6|addcore:adder|addcore:adder[0] - 13. Parameter Settings for User Entity Instance: Top-level Entity: |sp2_max - 14. Parameter Settings for Inferred Entity Instance: lpm_counter:CT_rtl_0 - 15. Parameter Settings for Inferred Entity Instance: lpm_counter:CTV_rtl_1 - 16. Parameter Settings for Inferred Entity Instance: lpm_counter:CTH_rtl_2 - 17. Parameter Settings for Inferred Entity Instance: lpm_add_sub:op_6 - 18. Analysis & Synthesis Messages - - - ----------------- -; Legal Notice ; ----------------- -Copyright (C) 1991-2009 Altera Corporation -Your use of Altera Corporation's design tools, logic functions -and other software and tools, and its AMPP partner logic -functions, and any output files from any of the foregoing -(including device programming or simulation files), and any -associated documentation or information are expressly subject -to the terms and conditions of the Altera Program License -Subscription Agreement, Altera MegaCore Function License -Agreement, or other applicable license agreement, including, -without limitation, that your use is for the sole purpose of -programming logic devices manufactured by Altera and sold by -Altera or its authorized distributors. Please refer to the -applicable agreement for further details. - - - -+----------------------------------------------------------------------------+ -; Analysis & Synthesis Summary ; -+-----------------------------+----------------------------------------------+ -; Analysis & Synthesis Status ; Successful - Sun Aug 28 03:30:39 2022 ; -; Quartus II Version ; 9.0 Build 235 06/17/2009 SP 2 SJ Web Edition ; -; Revision Name ; sp2_max ; -; Top-level Entity Name ; SP2_MAX ; -; Family ; MAX7000S ; -; Total macrocells ; 74 ; -; Total pins ; 80 ; -+-----------------------------+----------------------------------------------+ - - -+-------------------------------------------------------------------------------------------------+ -; Analysis & Synthesis Settings ; -+--------------------------------------------------------------+------------------+---------------+ -; Option ; Setting ; Default Value ; -+--------------------------------------------------------------+------------------+---------------+ -; Device ; EPM7128STC100-10 ; ; -; Top-level entity name ; sp2_max ; sp2_max ; -; Family name ; MAX7000S ; Stratix II ; -; Use smart compilation ; Off ; Off ; -; Create Debugging Nodes for IP Cores ; Off ; Off ; -; Preserve fewer node names ; On ; On ; -; Disable OpenCore Plus hardware evaluation ; Off ; Off ; -; Verilog Version ; Verilog_2001 ; Verilog_2001 ; -; VHDL Version ; VHDL93 ; VHDL93 ; -; State Machine Processing ; Auto ; Auto ; -; Safe State Machine ; Off ; Off ; -; Extract Verilog State Machines ; On ; On ; -; Extract VHDL State Machines ; On ; On ; -; Ignore Verilog initial constructs ; Off ; Off ; -; Iteration limit for constant Verilog loops ; 5000 ; 5000 ; -; Iteration limit for non-constant Verilog loops ; 250 ; 250 ; -; Add Pass-Through Logic to Inferred RAMs ; On ; On ; -; Parallel Synthesis ; Off ; Off ; -; NOT Gate Push-Back ; On ; On ; -; Power-Up Don't Care ; On ; On ; -; Remove Duplicate Registers ; On ; On ; -; Ignore CARRY Buffers ; Off ; Off ; -; Ignore CASCADE Buffers ; Off ; Off ; -; Ignore GLOBAL Buffers ; Off ; Off ; -; Ignore ROW GLOBAL Buffers ; Off ; Off ; -; Ignore LCELL Buffers ; Auto ; Auto ; -; Ignore SOFT Buffers ; Off ; Off ; -; Limit AHDL Integers to 32 Bits ; Off ; Off ; -; Optimization Technique ; Speed ; Speed ; -; Allow XOR Gate Usage ; On ; On ; -; Auto Logic Cell Insertion ; On ; On ; -; Parallel Expander Chain Length ; 4 ; 4 ; -; Auto Parallel Expanders ; On ; On ; -; Auto Open-Drain Pins ; On ; On ; -; Auto Resource Sharing ; Off ; Off ; -; Maximum Fan-in Per Macrocell ; 100 ; 100 ; -; Use LogicLock Constraints during Resource Balancing ; On ; On ; -; Ignore translate_off and synthesis_off directives ; Off ; Off ; -; Show Parameter Settings Tables in Synthesis Report ; On ; On ; -; HDL message level ; Level2 ; Level2 ; -; Suppress Register Optimization Related Messages ; Off ; Off ; -; Number of Removed Registers Reported in Synthesis Report ; 100 ; 100 ; -; Number of Inverted Registers Reported in Synthesis Report ; 100 ; 100 ; -; Block Design Naming ; Auto ; Auto ; -; Synthesis Effort ; Auto ; Auto ; -; Shift Register Replacement - Allow Asynchronous Clear Signal ; On ; On ; -; Analysis & Synthesis Message Level ; Medium ; Medium ; -+--------------------------------------------------------------+------------------+---------------+ - - -+------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Analysis & Synthesis Source Files Read ; -+----------------------------------+-----------------+-----------------------+-------------------------------------------------------------------------+ -; File Name with User-Entered Path ; Used in Netlist ; File Type ; File Name with Absolute Path ; -+----------------------------------+-----------------+-----------------------+-------------------------------------------------------------------------+ -; sp2_max.tdf ; yes ; Auto-Found AHDL File ; C:/Sprinter/src/altera/quartus/max/sp2_max.tdf ; -; lpm_counter.tdf ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.tdf ; -; lpm_constant.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_constant.inc ; -; lpm_decode.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_decode.inc ; -; lpm_add_sub.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.inc ; -; cmpconst.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/cmpconst.inc ; -; lpm_compare.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_compare.inc ; -; lpm_counter.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_counter.inc ; -; dffeea.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/dffeea.inc ; -; alt_synch_counter.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/alt_synch_counter.inc ; -; alt_synch_counter_f.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/alt_synch_counter_f.inc ; -; alt_counter_f10ke.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/alt_counter_f10ke.inc ; -; alt_counter_stratix.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/alt_counter_stratix.inc ; -; aglobal90.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/aglobal90.inc ; -; lpm_add_sub.tdf ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/lpm_add_sub.tdf ; -; addcore.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/addcore.inc ; -; look_add.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/look_add.inc ; -; bypassff.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/bypassff.inc ; -; altshift.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/altshift.inc ; -; alt_stratix_add_sub.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/alt_stratix_add_sub.inc ; -; alt_mercury_add_sub.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/alt_mercury_add_sub.inc ; -; addcore.tdf ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/addcore.tdf ; -; a_csnbuffer.inc ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/a_csnbuffer.inc ; -; a_csnbuffer.tdf ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/a_csnbuffer.tdf ; -; altshift.tdf ; yes ; Megafunction ; c:/altera/90sp2/quartus/libraries/megafunctions/altshift.tdf ; -+----------------------------------+-----------------+-----------------------+-------------------------------------------------------------------------+ - - -+---------------------------------------------+ -; Analysis & Synthesis Resource Usage Summary ; -+----------------------+----------------------+ -; Resource ; Usage ; -+----------------------+----------------------+ -; Logic cells ; 74 ; -; Total registers ; 57 ; -; I/O pins ; 80 ; -; Shareable expanders ; 9 ; -; Parallel expanders ; 3 ; -; Maximum fan-out node ; HDD_C[2] ; -; Maximum fan-out ; 21 ; -; Total fan-out ; 434 ; -; Average fan-out ; 2.66 ; -+----------------------+----------------------+ - - -+------------------------------------------------------------------------------------------------+ -; Analysis & Synthesis Resource Utilization by Entity ; -+----------------------------+------------+------+--------------------------------+--------------+ -; Compilation Hierarchy Node ; Macrocells ; Pins ; Full Hierarchy Name ; Library Name ; -+----------------------------+------------+------+--------------------------------+--------------+ -; |SP2_MAX ; 74 ; 80 ; |SP2_MAX ; work ; -; |lpm_counter:CTH_rtl_2| ; 6 ; 0 ; |SP2_MAX|lpm_counter:CTH_rtl_2 ; work ; -; |lpm_counter:CTV_rtl_1| ; 9 ; 0 ; |SP2_MAX|lpm_counter:CTV_rtl_1 ; work ; -; |lpm_counter:CT_rtl_0| ; 4 ; 0 ; |SP2_MAX|lpm_counter:CT_rtl_0 ; work ; -+----------------------------+------------+------+--------------------------------+--------------+ - - -+--------------------------------------------------------------------------------+ -; Registers Removed During Synthesis ; -+---------------------------------------+----------------------------------------+ -; Register name ; Reason for Removal ; -+---------------------------------------+----------------------------------------+ -; CTV8M ; Stuck at GND due to stuck port data_in ; -; XCT[2] ; Lost fanout ; -; Total Number of Removed Registers = 2 ; ; -+---------------------------------------+----------------------------------------+ - - -+-----------------------------------------------+ -; Source assignments for lpm_counter:CT_rtl_0 ; -+---------------------------+-------+------+----+ -; Assignment ; Value ; From ; To ; -+---------------------------+-------+------+----+ -; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; -; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; -; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; -+---------------------------+-------+------+----+ - - -+-----------------------------------------------+ -; Source assignments for lpm_counter:CTV_rtl_1 ; -+---------------------------+-------+------+----+ -; Assignment ; Value ; From ; To ; -+---------------------------+-------+------+----+ -; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; -; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; -; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; -+---------------------------+-------+------+----+ - - -+-----------------------------------------------+ -; Source assignments for lpm_counter:CTH_rtl_2 ; -+---------------------------+-------+------+----+ -; Assignment ; Value ; From ; To ; -+---------------------------+-------+------+----+ -; SUPPRESS_DA_RULE_INTERNAL ; a101 ; - ; - ; -; SUPPRESS_DA_RULE_INTERNAL ; s102 ; - ; - ; -; SUPPRESS_DA_RULE_INTERNAL ; s103 ; - ; - ; -+---------------------------+-------+------+----+ - - -+-------------------------------------------------------+ -; Source assignments for lpm_add_sub:op_6|addcore:adder ; -+---------------------------+-------+------+------------+ -; Assignment ; Value ; From ; To ; -+---------------------------+-------+------+------------+ -; SUPPRESS_DA_RULE_INTERNAL ; A103 ; - ; - ; -+---------------------------+-------+------+------------+ - - -+------------------------------------------------------------------------+ -; Source assignments for lpm_add_sub:op_6|addcore:adder|addcore:adder[0] ; -+---------------------------+-------+------+-----------------------------+ -; Assignment ; Value ; From ; To ; -+---------------------------+-------+------+-----------------------------+ -; SUPPRESS_DA_RULE_INTERNAL ; A103 ; - ; - ; -+---------------------------+-------+------+-----------------------------+ - - -+-------------------------------------------------------------------------+ -; Parameter Settings for User Entity Instance: Top-level Entity: |sp2_max ; -+----------------+-----------+--------------------------------------------+ -; Parameter Name ; Value ; Type ; -+----------------+-----------+--------------------------------------------+ -; G_MODE ; 1 ; Untyped ; -; NUM ; NO ; Untyped ; -; NUMBER1 ; 00100000X ; Unsigned Binary ; -; NUMBER2 ; 00110111X ; Unsigned Binary ; -; NUMBER3 ; 01001101X ; Unsigned Binary ; -; NUMBER4 ; 01010010X ; Unsigned Binary ; -; NUMBER5 ; 00100000X ; Unsigned Binary ; -; NUMBER6 ; 00100000X ; Unsigned Binary ; -; NUMBER7 ; 00100000X ; Unsigned Binary ; -+----------------+-----------+--------------------------------------------+ -Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". - - -+-----------------------------------------------------------------------+ -; Parameter Settings for Inferred Entity Instance: lpm_counter:CT_rtl_0 ; -+------------------------+-------------------+--------------------------+ -; Parameter Name ; Value ; Type ; -+------------------------+-------------------+--------------------------+ -; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; -; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; -; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; -; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; -; LPM_WIDTH ; 4 ; Untyped ; -; LPM_DIRECTION ; UP ; Untyped ; -; LPM_MODULUS ; 0 ; Untyped ; -; LPM_AVALUE ; UNUSED ; Untyped ; -; LPM_SVALUE ; UNUSED ; Untyped ; -; LPM_PORT_UPDOWN ; PORT_CONNECTIVITY ; Untyped ; -; DEVICE_FAMILY ; MAX7000S ; Untyped ; -; CARRY_CHAIN ; MANUAL ; Untyped ; -; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; -; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; -; CARRY_CNT_EN ; SMART ; Untyped ; -; LABWIDE_SCLR ; ON ; Untyped ; -; USE_NEW_VERSION ; TRUE ; Untyped ; -; CBXI_PARAMETER ; NOTHING ; Untyped ; -+------------------------+-------------------+--------------------------+ -Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". - - -+------------------------------------------------------------------------+ -; Parameter Settings for Inferred Entity Instance: lpm_counter:CTV_rtl_1 ; -+------------------------+-------------------+---------------------------+ -; Parameter Name ; Value ; Type ; -+------------------------+-------------------+---------------------------+ -; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; -; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; -; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; -; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; -; LPM_WIDTH ; 9 ; Untyped ; -; LPM_DIRECTION ; UP ; Untyped ; -; LPM_MODULUS ; 0 ; Untyped ; -; LPM_AVALUE ; UNUSED ; Untyped ; -; LPM_SVALUE ; UNUSED ; Untyped ; -; LPM_PORT_UPDOWN ; PORT_CONNECTIVITY ; Untyped ; -; DEVICE_FAMILY ; MAX7000S ; Untyped ; -; CARRY_CHAIN ; MANUAL ; Untyped ; -; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; -; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; -; CARRY_CNT_EN ; SMART ; Untyped ; -; LABWIDE_SCLR ; ON ; Untyped ; -; USE_NEW_VERSION ; TRUE ; Untyped ; -; CBXI_PARAMETER ; NOTHING ; Untyped ; -+------------------------+-------------------+---------------------------+ -Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". - - -+------------------------------------------------------------------------+ -; Parameter Settings for Inferred Entity Instance: lpm_counter:CTH_rtl_2 ; -+------------------------+-------------------+---------------------------+ -; Parameter Name ; Value ; Type ; -+------------------------+-------------------+---------------------------+ -; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; -; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; -; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; -; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; -; LPM_WIDTH ; 6 ; Untyped ; -; LPM_DIRECTION ; UP ; Untyped ; -; LPM_MODULUS ; 0 ; Untyped ; -; LPM_AVALUE ; UNUSED ; Untyped ; -; LPM_SVALUE ; UNUSED ; Untyped ; -; LPM_PORT_UPDOWN ; PORT_CONNECTIVITY ; Untyped ; -; DEVICE_FAMILY ; MAX7000S ; Untyped ; -; CARRY_CHAIN ; MANUAL ; Untyped ; -; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; -; NOT_GATE_PUSH_BACK ; ON ; NOT_GATE_PUSH_BACK ; -; CARRY_CNT_EN ; SMART ; Untyped ; -; LABWIDE_SCLR ; ON ; Untyped ; -; USE_NEW_VERSION ; TRUE ; Untyped ; -; CBXI_PARAMETER ; NOTHING ; Untyped ; -+------------------------+-------------------+---------------------------+ -Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". - - -+-------------------------------------------------------------------+ -; Parameter Settings for Inferred Entity Instance: lpm_add_sub:op_6 ; -+------------------------+-------------+----------------------------+ -; Parameter Name ; Value ; Type ; -+------------------------+-------------+----------------------------+ -; LPM_WIDTH ; 5 ; Untyped ; -; LPM_REPRESENTATION ; UNSIGNED ; Untyped ; -; LPM_DIRECTION ; ADD ; Untyped ; -; ONE_INPUT_IS_CONSTANT ; YES ; Untyped ; -; LPM_PIPELINE ; 0 ; Untyped ; -; MAXIMIZE_SPEED ; 5 ; Untyped ; -; REGISTERED_AT_END ; 0 ; Untyped ; -; OPTIMIZE_FOR_SPEED ; 9 ; Untyped ; -; USE_CS_BUFFERS ; 1 ; Untyped ; -; CARRY_CHAIN ; MANUAL ; Untyped ; -; CARRY_CHAIN_LENGTH ; 48 ; CARRY_CHAIN_LENGTH ; -; DEVICE_FAMILY ; MAX7000S ; Untyped ; -; USE_WYS ; OFF ; Untyped ; -; STYLE ; FAST ; Untyped ; -; CBXI_PARAMETER ; add_sub_uch ; Untyped ; -; AUTO_CARRY_CHAINS ; ON ; AUTO_CARRY ; -; IGNORE_CARRY_BUFFERS ; OFF ; IGNORE_CARRY ; -; AUTO_CASCADE_CHAINS ; ON ; AUTO_CASCADE ; -; IGNORE_CASCADE_BUFFERS ; OFF ; IGNORE_CASCADE ; -+------------------------+-------------+----------------------------+ -Note: In order to hide this table in the UI and the text report file, please set the "Show Parameter Settings Tables in Synthesis Report" option in "Analysis and Synthesis Settings -> More Settings" to "Off". - - -+-------------------------------+ -; Analysis & Synthesis Messages ; -+-------------------------------+ -Info: ******************************************************************* -Info: Running Quartus II Analysis & Synthesis - Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - Info: Processing started: Sun Aug 28 03:30:38 2022 -Info: Command: quartus_map --read_settings_files=on --write_settings_files=off sp2_max -c sp2_max -Warning: Using design file sp2_max.tdf, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project - Info: Found entity 1: SP2_MAX -Info: Elaborating entity "sp2_max" for the top level hierarchy -Warning: Variable or input pin "CTV8C" is defined but never used -Warning: Variable or input pin "XA" is defined but never used -Warning: Variable or input pin "VGA_IN" is defined but never used -Warning: Variable or input pin "SINC_IN" is defined but never used -Warning: Variable or input pin "XHR_RDY" is defined but never used -Warning: Variable or input pin "UNUSED65" is defined but never used -Warning: Variable or input pin "UNUSED33" is defined but never used -Warning: Variable or input pin "UNUSED1" is defined but never used -Warning: Variable or input pin "UNUSED2" is defined but never used -Warning: Variable or input pin "UNUSED5" is defined but never used -Warning: Variable or input pin "UNUSED7" is defined but never used -Warning: Variable or input pin "UNUSED22" is defined but never used -Warning: Variable or input pin "UNUSED24" is defined but never used -Warning: Variable or input pin "UNUSED27" is defined but never used -Warning: Variable or input pin "UNUSED28" is defined but never used -Warning: Variable or input pin "UNUSED49" is defined but never used -Warning: Variable or input pin "UNUSED50" is defined but never used -Warning: Variable or input pin "UNUSED53" is defined but never used -Warning: Variable or input pin "UNUSED55" is defined but never used -Warning: Variable or input pin "UNUSED63" is defined but never used -Warning: Variable or input pin "UNUSED70" is defined but never used -Warning: Variable or input pin "UNUSED72" is defined but never used -Warning: Variable or input pin "UNUSED77" is defined but never used -Warning: Variable or input pin "UNUSED78" is defined but never used -Info: Inferred 3 megafunctions from design logic - Info: Inferred lpm_counter megafunction (LPM_WIDTH=4) from the following logic: "CT[0]~0" - Info: Inferred lpm_counter megafunction (LPM_WIDTH=9) from the following logic: "CTV[0]~9" - Info: Inferred lpm_counter megafunction (LPM_WIDTH=6) from the following logic: "CTH[0]~7" -Info: Inferred 1 megafunctions from design logic - Info: Inferred adder/subtractor megafunction ("lpm_add_sub") from the following logic: "op_6" -Info: Elaborated megafunction instantiation "lpm_counter:CT_rtl_0" -Info: Instantiated megafunction "lpm_counter:CT_rtl_0" with the following parameter: - Info: Parameter "LPM_WIDTH" = "4" - Info: Parameter "LPM_DIRECTION" = "UP" - Info: Parameter "LPM_TYPE" = "LPM_COUNTER" -Info: Elaborated megafunction instantiation "lpm_counter:CTV_rtl_1" -Info: Instantiated megafunction "lpm_counter:CTV_rtl_1" with the following parameter: - Info: Parameter "LPM_WIDTH" = "9" - Info: Parameter "LPM_DIRECTION" = "UP" - Info: Parameter "LPM_TYPE" = "LPM_COUNTER" -Info: Elaborated megafunction instantiation "lpm_counter:CTH_rtl_2" -Info: Instantiated megafunction "lpm_counter:CTH_rtl_2" with the following parameter: - Info: Parameter "LPM_WIDTH" = "6" - Info: Parameter "LPM_DIRECTION" = "UP" - Info: Parameter "LPM_TYPE" = "LPM_COUNTER" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6" -Info: Instantiated megafunction "lpm_add_sub:op_6" with the following parameter: - Info: Parameter "LPM_WIDTH" = "5" - Info: Parameter "LPM_DIRECTION" = "ADD" - Info: Parameter "LPM_REPRESENTATION" = "UNSIGNED" - Info: Parameter "ONE_INPUT_IS_CONSTANT" = "YES" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6|addcore:adder", which is child of megafunction instantiation "lpm_add_sub:op_6" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6|addcore:adder|a_csnbuffer:oflow_node", which is child of megafunction instantiation "lpm_add_sub:op_6" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6|addcore:adder|a_csnbuffer:result_node", which is child of megafunction instantiation "lpm_add_sub:op_6" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6|addcore:adder|addcore:adder[0]", which is child of megafunction instantiation "lpm_add_sub:op_6" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6|addcore:adder|addcore:adder[0]|a_csnbuffer:oflow_node", which is child of megafunction instantiation "lpm_add_sub:op_6" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6|addcore:adder|addcore:adder[0]|a_csnbuffer:result_node", which is child of megafunction instantiation "lpm_add_sub:op_6" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6|altshift:result_ext_latency_ffs", which is child of megafunction instantiation "lpm_add_sub:op_6" -Info: Elaborated megafunction instantiation "lpm_add_sub:op_6|altshift:carry_ext_latency_ffs", which is child of megafunction instantiation "lpm_add_sub:op_6" -Info: Ignored 6 buffer(s) - Info: Ignored 6 SOFT buffer(s) -Info: Registers with preset signals will power-up high -Warning: TRI or OPNDRN buffers permanently enabled - Warning: Node "$00005" - Warning: Node "$00006" -Warning: Output pins are stuck at VCC or GND - Warning (13410): Pin "BEEP" is stuck at GND - Warning (13410): Pin "DENS_X" is stuck at VCC - Warning (13410): Pin "HD_CS" is stuck at GND -Info: Promoted pin-driven signal(s) to global signal - Info: Promoted clock signal driven by pin "TG42_IN" to global clock signal - Info: Promoted clear signal driven by pin "EPM_RES" to global clear signal -Info: 1 registers lost all their fanouts during netlist optimizations. The first 1 are displayed below. - Info: Register "XCT[2]" lost all its fanouts during netlist optimizations. -Warning: Design contains 25 input pin(s) that do not drive logic - Warning (15610): No output dependent on input pin "XA[0]" - Warning (15610): No output dependent on input pin "XA[1]" - Warning (15610): No output dependent on input pin "XA[2]" - Warning (15610): No output dependent on input pin "VGA_IN" - Warning (15610): No output dependent on input pin "SINC_IN" - Warning (15610): No output dependent on input pin "XHR_RDY" - Warning (15610): No output dependent on input pin "UNUSED65" - Warning (15610): No output dependent on input pin "UNUSED33" - Warning (15610): No output dependent on input pin "UNUSED1" - Warning (15610): No output dependent on input pin "UNUSED2" - Warning (15610): No output dependent on input pin "UNUSED5" - Warning (15610): No output dependent on input pin "UNUSED7" - Warning (15610): No output dependent on input pin "UNUSED22" - Warning (15610): No output dependent on input pin "UNUSED24" - Warning (15610): No output dependent on input pin "UNUSED27" - Warning (15610): No output dependent on input pin "UNUSED28" - Warning (15610): No output dependent on input pin "UNUSED49" - Warning (15610): No output dependent on input pin "UNUSED50" - Warning (15610): No output dependent on input pin "UNUSED53" - Warning (15610): No output dependent on input pin "UNUSED55" - Warning (15610): No output dependent on input pin "UNUSED63" - Warning (15610): No output dependent on input pin "UNUSED70" - Warning (15610): No output dependent on input pin "UNUSED72" - Warning (15610): No output dependent on input pin "UNUSED77" - Warning (15610): No output dependent on input pin "UNUSED78" -Info: Implemented 163 device resources after synthesis - the final resource count might be different - Info: Implemented 46 input pins - Info: Implemented 30 output pins - Info: Implemented 4 bidirectional pins - Info: Implemented 74 macrocells - Info: Implemented 9 shareable expanders -Info: Quartus II Analysis & Synthesis was successful. 0 errors, 58 warnings - Info: Peak virtual memory: 229 megabytes - Info: Processing ended: Sun Aug 28 03:30:39 2022 - Info: Elapsed time: 00:00:01 - Info: Total CPU time (on all processors): 00:00:01 - - diff --git a/src/altera/quartus/max/sp2_max.map.summary b/src/altera/quartus/max/sp2_max.map.summary deleted file mode 100644 index 9e9026e..0000000 --- a/src/altera/quartus/max/sp2_max.map.summary +++ /dev/null @@ -1,7 +0,0 @@ -Analysis & Synthesis Status : Successful - Sun Aug 28 03:30:39 2022 -Quartus II Version : 9.0 Build 235 06/17/2009 SP 2 SJ Web Edition -Revision Name : sp2_max -Top-level Entity Name : SP2_MAX -Family : MAX7000S -Total macrocells : 74 -Total pins : 80 diff --git a/src/altera/quartus/max/sp2_max.pin b/src/altera/quartus/max/sp2_max.pin deleted file mode 100644 index 2d05aee..0000000 --- a/src/altera/quartus/max/sp2_max.pin +++ /dev/null @@ -1,167 +0,0 @@ - -- Copyright (C) 1991-2009 Altera Corporation - -- Your use of Altera Corporation's design tools, logic functions - -- and other software and tools, and its AMPP partner logic - -- functions, and any output files from any of the foregoing - -- (including device programming or simulation files), and any - -- associated documentation or information are expressly subject - -- to the terms and conditions of the Altera Program License - -- Subscription Agreement, Altera MegaCore Function License - -- Agreement, or other applicable license agreement, including, - -- without limitation, that your use is for the sole purpose of - -- programming logic devices manufactured by Altera and sold by - -- Altera or its authorized distributors. Please refer to the - -- applicable agreement for further details. - -- - -- This is a Quartus II output file. It is for reporting purposes only, and is - -- not intended for use as a Quartus II input file. This file cannot be used - -- to make Quartus II pin assignments - for instructions on how to make pin - -- assignments, please see Quartus II help. - --------------------------------------------------------------------------------- - - - - --------------------------------------------------------------------------------- - -- NC : No Connect. This pin has no internal connection to the device. - -- DNU : Do Not Use. This pin MUST NOT be connected. - -- VCC : Dedicated power pin, which MUST be connected to VCC. - -- VCCIO : Dedicated power pin, which MUST be connected to VCC - -- of its bank. - -- GND : Dedicated ground pin. Dedicated GND pins MUST be connected to GND. - -- It can also be used to report unused dedicated pins. The connection - -- on the board for unused dedicated pins depends on whether this will - -- be used in a future design. One example is device migration. When - -- using device migration, refer to the device pin-tables. If it is a - -- GND pin in the pin table or if it will not be used in a future design - -- for another purpose the it MUST be connected to GND. If it is an unused - -- dedicated pin, then it can be connected to a valid signal on the board - -- (low, high, or toggling) if that signal is required for a different - -- revision of the design. - -- GND+ : Unused input pin. It can also be used to report unused dual-purpose pins. - -- This pin should be connected to GND. It may also be connected to a - -- valid signal on the board (low, high, or toggling) if that signal - -- is required for a different revision of the design. - -- GND* : Unused I/O pin. For transceiver I/O banks (Bank 13, 14, 15, 16 and 17), - -- connect each pin marked GND* either individually through a 10k Ohm resistor - -- to GND or tie all pins together and connect through a single 10k Ohm resistor - -- to GND. - -- For non-transceiver I/O banks, connect each pin marked GND* directly to GND - -- or leave it unconnected. - -- RESERVED : Unused I/O pin, which MUST be left unconnected. - -- RESERVED_INPUT : Pin is tri-stated and should be connected to the board. - -- RESERVED_INPUT_WITH_WEAK_PULLUP : Pin is tri-stated with internal weak pull-up resistor. - -- RESERVED_INPUT_WITH_BUS_HOLD : Pin is tri-stated with bus-hold circuitry. - -- RESERVED_OUTPUT_DRIVEN_HIGH : Pin is output driven high. - -- NON_MIGRATABLE: This pin cannot be migrated. - --------------------------------------------------------------------------------- - - - - --------------------------------------------------------------------------------- - -- Pin directions (input, output or bidir) are based on device operating in user mode. - --------------------------------------------------------------------------------- - -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -CHIP "sp2_max" ASSIGNED TO AN: EPM7128STC100-10 - -Pin Name/Usage : Location : Dir. : I/O Standard : Voltage : I/O Bank : User Assignment -------------------------------------------------------------------------------------------------------------- -UNUSED55 : 1 : input : TTL : : : N -UNUSED72 : 2 : input : TTL : : : N -VCCIO : 3 : power : : 5.0V : : -TDI : 4 : input : TTL : : : N -UNUSED70 : 5 : input : TTL : : : N -CMOS_AS : 6 : output : TTL : : : Y -UNUSED27 : 7 : input : TTL : : : N -WR_PDOS : 8 : output : TTL : : : Y -WD : 9 : input : TTL : : : Y -WSTB : 10 : input : TTL : : : Y -GND : 11 : gnd : : : : -TR43 : 12 : input : TTL : : : Y -CLK_WG : 13 : output : TTL : : : Y -FDAT : 14 : output : TTL : : : Y -TMS : 15 : input : TTL : : : N -QDAT : 16 : output : TTL : : : Y -XA[0] : 17 : input : TTL : : : Y -VCCIO : 18 : power : : 5.0V : : -SINC_2 : 19 : bidir : TTL : : : Y -SINC_1 : 20 : bidir : TTL : : : Y -XA[1] : 21 : input : TTL : : : Y -UNUSED22 : 22 : input : TTL : : : N -XA[2] : 23 : input : TTL : : : Y -UNUSED50 : 24 : input : TTL : : : N -RSTB : 25 : input : TTL : : : Y -GND : 26 : gnd : : : : -UNUSED2 : 27 : input : TTL : : : N -UNUSED28 : 28 : input : TTL : : : N -SR : 29 : input : TTL : : : Y -SL : 30 : input : TTL : : : Y -CLK14 : 31 : output : TTL : : : Y -CLKZZ : 32 : bidir : TTL : : : Y -UNUSED33 : 33 : input : TTL : : : Y -VCCIO : 34 : power : : 5.0V : : -AUD : 35 : output : TTL : : : Y -TG42_BUF : 36 : output : TTL : : : Y -XACS : 37 : input : TTL : : : Y -GND : 38 : gnd : : : : -VCCINT : 39 : power : : 5.0V : : -HDD_C[3] : 40 : input : TTL : : : Y -HDD_C[2] : 41 : input : TTL : : : Y -HDD_C[1] : 42 : input : TTL : : : Y -GND : 43 : gnd : : : : -FDD_C[0] : 44 : input : TTL : : : Y -FDD_C[1] : 45 : input : TTL : : : Y -FDD_C[2] : 46 : input : TTL : : : Y -HDD_C[0] : 47 : input : TTL : : : Y -HD_DIR : 48 : output : TTL : : : Y -UNUSED49 : 49 : input : TTL : : : N -UNUSED1 : 50 : input : TTL : : : N -VCCIO : 51 : power : : 5.0V : : -HD_CS : 52 : output : TTL : : : Y -UNUSED53 : 53 : input : TTL : : : Y -/CONF_X : 54 : bidir : TTL : : : Y -UNUSED63 : 55 : input : TTL : : : N -10K_CLK : 56 : output : TTL : : : Y -WR_CNF : 57 : input : TTL : : : Y -10K_D0 : 58 : output : TTL : : : Y -GND : 59 : gnd : : : : -D0 : 60 : input : TTL : : : Y -VGA_IN : 61 : input : TTL : : : Y -TCK : 62 : input : TTL : : : N -UNUSED77 : 63 : input : TTL : : : N -SINC_V : 64 : output : TTL : : : Y -UNUSED65 : 65 : input : TTL : : : Y -VCCIO : 66 : power : : 5.0V : : -SINC : 67 : output : TTL : : : Y -SINC_H : 68 : output : TTL : : : Y -SINC_IN : 69 : input : TTL : : : Y -UNUSED24 : 70 : input : TTL : : : N -XHD_RES : 71 : output : TTL : : : Y -UNUSED5 : 72 : input : TTL : : : N -TDO : 73 : output : TTL : : : N -GND : 74 : gnd : : : : -XHD_WR : 75 : output : TTL : : : Y -XHD_RD : 76 : output : TTL : : : Y -UNUSED7 : 77 : input : TTL : : : N -UNUSED78 : 78 : input : TTL : : : Y -XHD1_CS[1] : 79 : output : TTL : : : Y -XHD1_CS[2] : 80 : output : TTL : : : Y -XHD2_CS[1] : 81 : output : TTL : : : Y -VCCIO : 82 : power : : 5.0V : : -XHD2_CS[2] : 83 : output : TTL : : : Y -BEEP : 84 : output : TTL : : : Y -TG42_OUT : 85 : output : TTL : : : Y -GND : 86 : gnd : : : : -TG42_IN : 87 : input : TTL : : : Y -XHR_RDY : 88 : input : TTL : : : Y -EPM_RES : 89 : input : TTL : : : Y -PW_GOOD : 90 : input : TTL : : : Y -VCCINT : 91 : power : : 5.0V : : -RDAT : 92 : input : TTL : : : Y -/WG_WR : 93 : output : TTL : : : Y -STE : 94 : input : TTL : : : Y -GND : 95 : gnd : : : : -DENS_X : 96 : output : TTL : : : Y -/WG_RD : 97 : output : TTL : : : Y -WDAT : 98 : output : TTL : : : Y -CMOS_DRD : 99 : output : TTL : : : Y -CMOS_DWR : 100 : output : TTL : : : Y diff --git a/src/altera/quartus/max/sp2_max.pof b/src/altera/quartus/max/sp2_max.pof deleted file mode 100644 index 8740f1b..0000000 Binary files a/src/altera/quartus/max/sp2_max.pof and /dev/null differ diff --git a/src/altera/quartus/max/sp2_max.qpf b/src/altera/quartus/max/sp2_max.qpf deleted file mode 100644 index 35df9f6..0000000 --- a/src/altera/quartus/max/sp2_max.qpf +++ /dev/null @@ -1,30 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 1991-2009 Altera Corporation -# Your use of Altera Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Altera Program License -# Subscription Agreement, Altera MegaCore Function License -# Agreement, or other applicable license agreement, including, -# without limitation, that your use is for the sole purpose of -# programming logic devices manufactured by Altera and sold by -# Altera or its authorized distributors. Please refer to the -# applicable agreement for further details. -# -# -------------------------------------------------------------------------- # -# -# Quartus II -# Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -# Date created = 03:22:36 August 28, 2022 -# -# -------------------------------------------------------------------------- # - -QUARTUS_VERSION = "9.0" -DATE = "03:22:36 August 28, 2022" - -# Revisions - -PROJECT_REVISION = "sp2_max" diff --git a/src/altera/quartus/max/sp2_max.qsf b/src/altera/quartus/max/sp2_max.qsf deleted file mode 100644 index ae8b38b..0000000 --- a/src/altera/quartus/max/sp2_max.qsf +++ /dev/null @@ -1,226 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 1991-2009 Altera Corporation -# Your use of Altera Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Altera Program License -# Subscription Agreement, Altera MegaCore Function License -# Agreement, or other applicable license agreement, including, -# without limitation, that your use is for the sole purpose of -# programming logic devices manufactured by Altera and sold by -# Altera or its authorized distributors. Please refer to the -# applicable agreement for further details. -# -# -------------------------------------------------------------------------- # -# -# Quartus II -# Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition -# Date created = 03:22:36 August 28, 2022 -# -# -------------------------------------------------------------------------- # -# -# Notes: -# -# 1) The default values for assignments are stored in the file: -# sp2_max_assignment_defaults.qdf -# If this file doesn't exist, see file: -# assignment_defaults.qdf -# -# 2) Altera recommends that you do not modify this file. This -# file is updated automatically by the Quartus II software -# and any changes you make may be lost or overwritten. -# -# -------------------------------------------------------------------------- # - - -set_global_assignment -name FAMILY MAX7000S -set_global_assignment -name DEVICE "EPM7128STC100-10" -set_global_assignment -name TOP_LEVEL_ENTITY sp2_max -set_global_assignment -name ORIGINAL_QUARTUS_VERSION "9.0 SP2" -set_global_assignment -name PROJECT_CREATION_TIME_DATE "03:22:36 AUGUST 28, 2022" -set_global_assignment -name LAST_QUARTUS_VERSION "9.0 SP2" -set_location_assignment PIN_6 -to CMOS_AS -set_location_assignment PIN_8 -to WR_PDOS -set_location_assignment PIN_9 -to WD -set_location_assignment PIN_10 -to WSTB -set_location_assignment PIN_12 -to TR43 -set_location_assignment PIN_12 -to TR[43] -set_location_assignment PIN_13 -to CLK_WG -set_location_assignment PIN_14 -to FDAT -set_location_assignment PIN_16 -to QDAT -set_location_assignment PIN_17 -to XA0 -set_location_assignment PIN_17 -to XA[0] -set_location_assignment PIN_19 -to SINC_2 -set_location_assignment PIN_19 -to SINC_[2] -set_location_assignment PIN_20 -to SINC_1 -set_location_assignment PIN_20 -to SINC_[1] -set_location_assignment PIN_21 -to XA1 -set_location_assignment PIN_21 -to XA[1] -set_location_assignment PIN_23 -to XA2 -set_location_assignment PIN_23 -to XA[2] -set_location_assignment PIN_25 -to RSTB -set_location_assignment PIN_29 -to SR -set_location_assignment PIN_30 -to SL -set_location_assignment PIN_31 -to CLK14 -set_location_assignment PIN_31 -to CLK[14] -set_location_assignment PIN_32 -to CLKZZ -set_location_assignment PIN_33 -to UNUSED33 -set_location_assignment PIN_33 -to UNUSED[33] -set_location_assignment PIN_35 -to AUD -set_location_assignment PIN_36 -to TG42_BUF -set_location_assignment PIN_37 -to XACS -set_location_assignment PIN_40 -to HDD_C3 -set_location_assignment PIN_40 -to HDD_C[3] -set_location_assignment PIN_41 -to HDD_C2 -set_location_assignment PIN_41 -to HDD_C[2] -set_location_assignment PIN_42 -to HDD_C1 -set_location_assignment PIN_42 -to HDD_C[1] -set_location_assignment PIN_44 -to FDD_C0 -set_location_assignment PIN_44 -to FDD_C[0] -set_location_assignment PIN_45 -to FDD_C1 -set_location_assignment PIN_45 -to FDD_C[1] -set_location_assignment PIN_46 -to FDD_C2 -set_location_assignment PIN_46 -to FDD_C[2] -set_location_assignment PIN_47 -to HDD_C0 -set_location_assignment PIN_47 -to HDD_C[0] -set_location_assignment PIN_48 -to HD_DIR -set_location_assignment PIN_52 -to HD_CS -set_location_assignment PIN_53 -to UNUSED53 -set_location_assignment PIN_53 -to UNUSED[53] -set_location_assignment PIN_54 -to /CONF_X -set_location_assignment PIN_56 -to 10K_CLK -set_location_assignment PIN_57 -to WR_CNF -set_location_assignment PIN_58 -to 10K_D0 -set_location_assignment PIN_58 -to 10K_D[0] -set_location_assignment PIN_60 -to D0 -set_location_assignment PIN_60 -to D[0] -set_location_assignment PIN_61 -to VGA_IN -set_location_assignment PIN_64 -to SINC_V -set_location_assignment PIN_65 -to UNUSED65 -set_location_assignment PIN_65 -to UNUSED[65] -set_location_assignment PIN_67 -to SINC -set_location_assignment PIN_68 -to SINC_H -set_location_assignment PIN_69 -to SINC_IN -set_location_assignment PIN_71 -to XHD_RES -set_location_assignment PIN_75 -to XHD_WR -set_location_assignment PIN_76 -to XHD_RD -set_location_assignment PIN_78 -to UNUSED78 -set_location_assignment PIN_78 -to UNUSED[78] -set_location_assignment PIN_79 -to XHD1_CS1 -set_location_assignment PIN_79 -to XHD1_CS[1] -set_location_assignment PIN_80 -to XHD1_CS2 -set_location_assignment PIN_80 -to XHD1_CS[2] -set_location_assignment PIN_81 -to XHD2_CS1 -set_location_assignment PIN_81 -to XHD2_CS[1] -set_location_assignment PIN_83 -to XHD2_CS2 -set_location_assignment PIN_83 -to XHD2_CS[2] -set_location_assignment PIN_84 -to BEEP -set_location_assignment PIN_85 -to TG42_OUT -set_location_assignment PIN_87 -to TG42_IN -set_location_assignment PIN_88 -to XHR_RDY -set_location_assignment PIN_89 -to EPM_RES -set_location_assignment PIN_90 -to PW_GOOD -set_location_assignment PIN_92 -to RDAT -set_location_assignment PIN_93 -to /WG_WR -set_location_assignment PIN_94 -to STE -set_location_assignment PIN_96 -to DENS_X -set_location_assignment PIN_97 -to /WG_RD -set_location_assignment PIN_98 -to WDAT -set_location_assignment PIN_99 -to CMOS_DRD -set_location_assignment PIN_100 -to CMOS_DWR -set_global_assignment -name FMAX_REQUIREMENT "100 MHz" -set_global_assignment -name CUT_OFF_CLEAR_AND_PRESET_PATHS ON -set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK ON -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to LR_T1 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to LR_T[1] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to LR_T0 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to LR_T[0] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to CLK_WG -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD_RD -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD_RES -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD_WR -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD1_CS1 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD1_CS[1] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD1_CS2 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD1_CS[2] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD2_CS1 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD2_CS[1] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD2_CS2 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to XHD2_CS[2] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to 10K_CLK -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to 10K_D0 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT OFF -to 10K_D[0] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to REG_P0 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to REG_P[0] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to REG_P1 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to REG_P[1] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to REG_P2 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to REG_P[2] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to TG42_BUF -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to TG42_OUT -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to STWG0 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to STWG[0] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to STWG1 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to STWG[1] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to STWG2 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to STWG[2] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to XCT0 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to XCT[0] -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to XCT1 -set_instance_assignment -name MAX7000_INDIVIDUAL_TURBO_BIT ON -to XCT[1] -set_global_assignment -name SECURITY_BIT ON -set_global_assignment -name ENABLE_VREFB_PIN OFF -set_global_assignment -name ENABLE_VREFA_PIN OFF -set_global_assignment -name MAX7000B_VCCIO_IOBANK2 3.3V -set_global_assignment -name MAX7000B_VCCIO_IOBANK1 3.3V -set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE OFF -set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF -set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE OFF -set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE ON -set_global_assignment -name ENABLE_JTAG_BST_SUPPORT OFF -set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT ON -set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT OFF -set_global_assignment -name MAX7000_JTAG_USER_CODE FFFF -set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F -set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF -set_global_assignment -name ENABLE_DEVICE_WIDE_OE OFF -set_global_assignment -name ENABLE_DEVICE_WIDE_RESET OFF -set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES OFF -set_global_assignment -name AUTO_RESTART_CONFIGURATION OFF -set_global_assignment -name USER_START_UP_CLOCK OFF -set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS OFF -set_global_assignment -name AUTO_GLOBAL_CLOCK OFF -set_global_assignment -name AUTO_IMPLEMENT_IN_ROM OFF -set_global_assignment -name AUTO_OPEN_DRAIN_PINS ON -set_global_assignment -name STATE_MACHINE_PROCESSING AUTO -set_global_assignment -name AUTO_PACKED_REGISTERS OFF -set_global_assignment -name AUTO_FAST_INPUT_REGISTERS OFF -set_global_assignment -name AUTO_FAST_OUTPUT_REGISTERS OFF -set_global_assignment -name AUTO_GLOBAL_OE ON -set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE AREA -set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE AREA -set_global_assignment -name SAVE_DISK_SPACE ON -set_global_assignment -name SMART_RECOMPILE OFF -set_global_assignment -name SIMULATION_MODE TIMING -set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES OFF -section_id eda_design_synthesis -set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id eda_design_synthesis -set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id eda_design_synthesis -set_global_assignment -name END_TIME "25 us" -set_global_assignment -name START_TIME "0 ns" -set_global_assignment -name GLITCH_INTERVAL "0 ns" -set_global_assignment -name GLITCH_DETECTION OFF -set_global_assignment -name CHECK_OUTPUTS OFF -set_global_assignment -name SETUP_HOLD_DETECTION OFF -set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS OFF -set_global_assignment -name NUMBER_OF_SOURCES_PER_DESTINATION_TO_REPORT 10 -set_global_assignment -name EXCLUDE_TPD_PATHS_LESS_THAN "0 ns" -set_global_assignment -name MISC_FILE "C:/Sprinter/src/altera/quartus/max/sp2_max.dpf" \ No newline at end of file diff --git a/src/altera/quartus/max/sp2_max.qws b/src/altera/quartus/max/sp2_max.qws deleted file mode 100644 index 51464d5..0000000 --- a/src/altera/quartus/max/sp2_max.qws +++ /dev/null @@ -1,18 +0,0 @@ -[ProjectWorkspace] -ptn_Child1=Frames -[ProjectWorkspace.Frames] -ptn_Child1=ChildFrames -[ProjectWorkspace.Frames.ChildFrames] -ptn_Child1=Document-0 -ptn_Child2=Document-1 -ptn_Child3=Document-2 -[ProjectWorkspace.Frames.ChildFrames.Document-0] -ptn_Child1=ViewFrame-0 -[ProjectWorkspace.Frames.ChildFrames.Document-0.ViewFrame-0] -DocPathName=sp2_max.tdf -DocumentCLSID={5d384c4f-893c-11d1-a087-0020affa43f2} -IsChildFrameDetached=False -IsActiveChildFrame=False -ptn_Child1=StateMap -[ProjectWorkspace.Frames.ChildFrames.Document-0.ViewFrame-0.StateMap] -AFC_IN_REPORT=False diff --git a/src/altera/quartus/max/sp2_max.tan.rpt b/src/altera/quartus/max/sp2_max.tan.rpt deleted file mode 100644 index bb4e02c..0000000 --- a/src/altera/quartus/max/sp2_max.tan.rpt +++ /dev/null @@ -1,1328 +0,0 @@ -Classic Timing Analyzer report for sp2_max -Sun Aug 28 03:30:43 2022 -Quartus II Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - - ---------------------- -; Table of Contents ; ---------------------- - 1. Legal Notice - 2. Timing Analyzer Summary - 3. Timing Analyzer Settings - 4. Clock Settings Summary - 5. Parallel Compilation - 6. Clock Setup: 'TG42_IN' - 7. Clock Setup: 'STE' - 8. Clock Setup: 'RSTB' - 9. Clock Setup: 'WSTB' - 10. Clock Hold: 'TG42_IN' - 11. Clock Hold: 'STE' - 12. Clock Hold: 'RSTB' - 13. Clock Hold: 'WSTB' - 14. tsu - 15. tco - 16. tpd - 17. th - 18. Timing Analyzer Messages - - - ----------------- -; Legal Notice ; ----------------- -Copyright (C) 1991-2009 Altera Corporation -Your use of Altera Corporation's design tools, logic functions -and other software and tools, and its AMPP partner logic -functions, and any output files from any of the foregoing -(including device programming or simulation files), and any -associated documentation or information are expressly subject -to the terms and conditions of the Altera Program License -Subscription Agreement, Altera MegaCore Function License -Agreement, or other applicable license agreement, including, -without limitation, that your use is for the sole purpose of -programming logic devices manufactured by Altera and sold by -Altera or its authorized distributors. Please refer to the -applicable agreement for further details. - - - -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Timing Analyzer Summary ; -+------------------------------+------------+-----------------------------------+----------------------------------+----------+----------+------------+----------+--------------+ -; Type ; Slack ; Required Time ; Actual Time ; From ; To ; From Clock ; To Clock ; Failed Paths ; -+------------------------------+------------+-----------------------------------+----------------------------------+----------+----------+------------+----------+--------------+ -; Worst-case tsu ; N/A ; None ; 23.800 ns ; HDD_C[3] ; $00051 ; -- ; TG42_IN ; 0 ; -; Worst-case tco ; N/A ; None ; 50.000 ns ; STWG[2] ; CLK_WG ; TG42_IN ; -- ; 0 ; -; Worst-case tpd ; N/A ; None ; 10.000 ns ; TG42_IN ; TG42_BUF ; -- ; -- ; 0 ; -; Worst-case th ; N/A ; None ; 51.000 ns ; SL ; LR_T[1] ; -- ; TG42_IN ; 0 ; -; Clock Setup: 'TG42_IN' ; -47.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; 9.62 MHz ( period = 104.000 ns ) ; /RESET ; $00051 ; TG42_IN ; TG42_IN ; 57 ; -; Clock Setup: 'STE' ; -21.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[2] ; STE ; STE ; 6 ; -; Clock Setup: 'RSTB' ; -21.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[2] ; RSTB ; RSTB ; 6 ; -; Clock Setup: 'WSTB' ; -21.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[2] ; WSTB ; WSTB ; 6 ; -; Clock Hold: 'TG42_IN' ; -12.200 ns ; 100.00 MHz ( period = 10.000 ns ) ; N/A ; FDD_1440 ; $00021 ; TG42_IN ; TG42_IN ; 48 ; -; Clock Hold: 'STE' ; 5.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; N/A ; REG_P[1] ; REG_P[2] ; STE ; STE ; 0 ; -; Clock Hold: 'RSTB' ; 5.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; N/A ; REG_P[1] ; REG_P[2] ; RSTB ; RSTB ; 0 ; -; Clock Hold: 'WSTB' ; 5.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; N/A ; REG_P[1] ; REG_P[2] ; WSTB ; WSTB ; 0 ; -; Total number of failed paths ; ; ; ; ; ; ; ; 123 ; -+------------------------------+------------+-----------------------------------+----------------------------------+----------+----------+------------+----------+--------------+ - - -+--------------------------------------------------------------------------------------------------------------------+ -; Timing Analyzer Settings ; -+---------------------------------------------------------------------+--------------------+------+----+-------------+ -; Option ; Setting ; From ; To ; Entity Name ; -+---------------------------------------------------------------------+--------------------+------+----+-------------+ -; Device Name ; EPM7128STC100-10 ; ; ; ; -; Timing Models ; Final ; ; ; ; -; Default hold multicycle ; Same as Multicycle ; ; ; ; -; Cut paths between unrelated clock domains ; On ; ; ; ; -; Cut off read during write signal paths ; Off ; ; ; ; -; Cut off feedback from I/O pins ; On ; ; ; ; -; Report Combined Fast/Slow Timing ; Off ; ; ; ; -; fmax Requirement ; 100 MHz ; ; ; ; -; Ignore Clock Settings ; Off ; ; ; ; -; Analyze latches as synchronous elements ; On ; ; ; ; -; Enable Recovery/Removal analysis ; Off ; ; ; ; -; Enable Clock Latency ; Off ; ; ; ; -; Use TimeQuest Timing Analyzer ; Off ; ; ; ; -; Number of source nodes to report per destination node ; 10 ; ; ; ; -; Number of destination nodes to report ; 10 ; ; ; ; -; Number of paths to report ; 200 ; ; ; ; -; Minimum tpd to report ; 0 ns ; ; ; ; -; Report Minimum Timing Checks ; Off ; ; ; ; -; Use Fast Timing Models ; Off ; ; ; ; -; Report IO Paths Separately ; Off ; ; ; ; -; Perform Multicorner Analysis ; Off ; ; ; ; -; Reports the worst-case path for each clock domain and analysis ; Off ; ; ; ; -; Removes common clock path pessimism (CCPP) during slack computation ; Off ; ; ; ; -; Output I/O Timing Endpoint ; Near End ; ; ; ; -+---------------------------------------------------------------------+--------------------+------+----+-------------+ - - -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Settings Summary ; -+-----------------+--------------------+----------+------------------+---------------+--------------+----------+-----------------------+---------------------+--------+--------------+ -; Clock Node Name ; Clock Setting Name ; Type ; Fmax Requirement ; Early Latency ; Late Latency ; Based on ; Multiply Base Fmax by ; Divide Base Fmax by ; Offset ; Phase offset ; -+-----------------+--------------------+----------+------------------+---------------+--------------+----------+-----------------------+---------------------+--------+--------------+ -; TG42_IN ; ; User Pin ; 100.0 MHz ; 0.000 ns ; 0.000 ns ; -- ; N/A ; N/A ; N/A ; ; -; STE ; ; User Pin ; 100.0 MHz ; 0.000 ns ; 0.000 ns ; -- ; N/A ; N/A ; N/A ; ; -; RSTB ; ; User Pin ; 100.0 MHz ; 0.000 ns ; 0.000 ns ; -- ; N/A ; N/A ; N/A ; ; -; WSTB ; ; User Pin ; 100.0 MHz ; 0.000 ns ; 0.000 ns ; -- ; N/A ; N/A ; N/A ; ; -+-----------------+--------------------+----------+------------------+---------------+--------------+----------+-----------------------+---------------------+--------+--------------+ - - -Parallel compilation was disabled, but you have multiple processors available. Enable parallel compilation to reduce compilation time. -+-------------------------------------+ -; Parallel Compilation ; -+----------------------------+--------+ -; Processors ; Number ; -+----------------------------+--------+ -; Number detected on machine ; 4 ; -; Maximum allowed ; 1 ; -+----------------------------+--------+ - - -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Setup: 'TG42_IN' ; -+------------+---------------------------------------------+-------------------------------+-------------------------------+------------+----------+-----------------------------+---------------------------+-------------------------+ -; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; -+------------+---------------------------------------------+-------------------------------+-------------------------------+------------+----------+-----------------------------+---------------------------+-------------------------+ -; -47.000 ns ; 9.62 MHz ( period = 104.000 ns ) ; /RESET ; $00051 ; TG42_IN ; TG42_IN ; 5.000 ns ; -25.000 ns ; 22.000 ns ; -; -47.000 ns ; 9.62 MHz ( period = 104.000 ns ) ; /RESET ; $00050 ; TG42_IN ; TG42_IN ; 5.000 ns ; -25.000 ns ; 22.000 ns ; -; -47.000 ns ; 9.62 MHz ( period = 104.000 ns ) ; /RESET ; $00053 ; TG42_IN ; TG42_IN ; 5.000 ns ; -25.000 ns ; 22.000 ns ; -; -47.000 ns ; 9.62 MHz ( period = 104.000 ns ) ; /RESET ; $00052 ; TG42_IN ; TG42_IN ; 5.000 ns ; -25.000 ns ; 22.000 ns ; -; -27.000 ns ; 15.63 MHz ( period = 64.000 ns ) ; LR_T[0] ; REG_P[2] ; TG42_IN ; TG42_IN ; 5.000 ns ; -21.000 ns ; 6.000 ns ; -; -27.000 ns ; 15.63 MHz ( period = 64.000 ns ) ; LR_T[1] ; REG_P[2] ; TG42_IN ; TG42_IN ; 5.000 ns ; -21.000 ns ; 6.000 ns ; -; -27.000 ns ; 15.63 MHz ( period = 64.000 ns ) ; LR_T[0] ; REG_P[1] ; TG42_IN ; TG42_IN ; 5.000 ns ; -21.000 ns ; 6.000 ns ; -; -27.000 ns ; 15.63 MHz ( period = 64.000 ns ) ; LR_T[1] ; REG_P[1] ; TG42_IN ; TG42_IN ; 5.000 ns ; -21.000 ns ; 6.000 ns ; -; -27.000 ns ; 15.63 MHz ( period = 64.000 ns ) ; LR_T[0] ; REG_P[0] ; TG42_IN ; TG42_IN ; 5.000 ns ; -21.000 ns ; 6.000 ns ; -; -27.000 ns ; 15.63 MHz ( period = 64.000 ns ) ; LR_T[1] ; REG_P[0] ; TG42_IN ; TG42_IN ; 5.000 ns ; -21.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; $00047 ; /RESET ; TG42_IN ; TG42_IN ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -13.000 ns ; 43.48 MHz ( period = 23.000 ns ) ; $00009 ; $00009 ; TG42_IN ; TG42_IN ; 10.000 ns ; -7.000 ns ; 6.000 ns ; -; -13.000 ns ; 43.48 MHz ( period = 23.000 ns ) ; XCT[0] ; XCT[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; -7.000 ns ; 6.000 ns ; -; -13.000 ns ; 43.48 MHz ( period = 23.000 ns ) ; XCT[0] ; XCT[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; -7.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[4] ; WGR[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[0] ; WGR[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[1] ; WGR[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[3] ; WGR[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[2] ; WGR[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; $00021 ; WGR[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[0] ; WGR[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[1] ; WGR[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[3] ; WGR[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[2] ; WGR[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; $00021 ; WGR[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[0] ; WGR[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[1] ; WGR[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[3] ; WGR[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[2] ; WGR[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; $00021 ; WGR[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[0] ; WGR[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[1] ; WGR[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[3] ; WGR[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[2] ; WGR[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; $00021 ; WGR[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[0] ; WGR[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[1] ; WGR[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[3] ; WGR[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; WGR[2] ; WGR[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; $00021 ; WGR[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -10.000 ns ; 50.00 MHz ( period = 20.000 ns ) ; $00023 ; $00021 ; TG42_IN ; TG42_IN ; 10.000 ns ; -4.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; REG_P[1] ; REG_P[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; REG_P[0] ; REG_P[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; REG_P[1] ; REG_P[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; REG_P[0] ; REG_P[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; REG_P[1] ; REG_P[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; REG_P[0] ; REG_P[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; STWG[1] ; STWG[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; STWG[0] ; STWG[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; STWG[1] ; STWG[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; STWG[2] ; STWG[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; STWG[0] ; STWG[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; STWG[0] ; STWG[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -6.000 ns ; 62.50 MHz ( period = 16.000 ns ) ; CT_WG ; CT_WG ; TG42_IN ; TG42_IN ; 10.000 ns ; 0.000 ns ; 6.000 ns ; -; -5.800 ns ; 46.30 MHz ( period = 21.600 ns ) ; /RESET ; SINC_VT ; TG42_IN ; TG42_IN ; 5.000 ns ; 9.000 ns ; 14.800 ns ; -; -2.000 ns ; 83.33 MHz ( period = 12.000 ns ) ; lpm_counter:CT_rtl_0|dffs[0] ; $00021 ; TG42_IN ; TG42_IN ; 10.000 ns ; 12.000 ns ; 14.000 ns ; -; -2.000 ns ; 83.33 MHz ( period = 12.000 ns ) ; lpm_counter:CT_rtl_0|dffs[0] ; $00023 ; TG42_IN ; TG42_IN ; 10.000 ns ; 12.000 ns ; 14.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; FDD_1440 ; FDD_1440 ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[2] ; lpm_counter:CT_rtl_0|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[1] ; lpm_counter:CT_rtl_0|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[0] ; lpm_counter:CT_rtl_0|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[2] ; lpm_counter:CT_rtl_0|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CT_rtl_0|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[1] ; lpm_counter:CT_rtl_0|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[0] ; lpm_counter:CT_rtl_0|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[2] ; lpm_counter:CTH_rtl_2|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_HT ; lpm_counter:CTH_rtl_2|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[2] ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_HT ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[2] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[4] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_HT ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[2] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[4] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[5] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_HT ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[2] ; SINC_HT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[3] ; SINC_HT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[4] ; SINC_HT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTH_rtl_2|dffs[5] ; SINC_HT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[2] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[5] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[5] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[6] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[5] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[6] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[7] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[5] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[6] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[7] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[8] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[2] ; SINC_VT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[3] ; SINC_VT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[4] ; SINC_VT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[5] ; SINC_VT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[6] ; SINC_VT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[7] ; SINC_VT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CTV_rtl_1|dffs[8] ; SINC_VT ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[1] ; lpm_counter:CT_rtl_0|dffs[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[0] ; lpm_counter:CT_rtl_0|dffs[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; lpm_counter:CT_rtl_0|dffs[0] ; lpm_counter:CT_rtl_0|dffs[0] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; XCT[1] ; XCT[1] ; TG42_IN ; TG42_IN ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 5.200 ns ; Restricted to 125.0 MHz ( period = 8.0 ns ) ; XCT[1] ; $00021 ; TG42_IN ; TG42_IN ; 10.000 ns ; 20.000 ns ; 14.800 ns ; -; 5.200 ns ; Restricted to 125.0 MHz ( period = 8.0 ns ) ; XCT[1] ; $00023 ; TG42_IN ; TG42_IN ; 10.000 ns ; 20.000 ns ; 14.800 ns ; -; 7.200 ns ; Restricted to 125.0 MHz ( period = 8.0 ns ) ; FDD_1440 ; $00021 ; TG42_IN ; TG42_IN ; 10.000 ns ; 22.000 ns ; 14.800 ns ; -; 7.200 ns ; Restricted to 125.0 MHz ( period = 8.0 ns ) ; FDD_1440 ; $00023 ; TG42_IN ; TG42_IN ; 10.000 ns ; 22.000 ns ; 14.800 ns ; -+------------+---------------------------------------------+-------------------------------+-------------------------------+------------+----------+-----------------------------+---------------------------+-------------------------+ - - -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Setup: 'STE' ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ -; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[2] ; STE ; STE ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[2] ; STE ; STE ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[1] ; STE ; STE ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[1] ; STE ; STE ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[0] ; STE ; STE ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[0] ; STE ; STE ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[2] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[2] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[1] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[1] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[0] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[0] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[1] ; STWG[1] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[1] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[1] ; STWG[2] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[2] ; STWG[2] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[2] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[0] ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; CT_WG ; CT_WG ; STE ; STE ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ - - -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Setup: 'RSTB' ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ -; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[2] ; RSTB ; RSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[2] ; RSTB ; RSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[1] ; RSTB ; RSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[1] ; RSTB ; RSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[0] ; RSTB ; RSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[0] ; RSTB ; RSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[2] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[2] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[1] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[1] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[0] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[0] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[1] ; STWG[1] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[1] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[1] ; STWG[2] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[2] ; STWG[2] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[2] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[0] ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; CT_WG ; CT_WG ; RSTB ; RSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ - - -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Setup: 'WSTB' ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ -; Slack ; Actual fmax (period) ; From ; To ; From Clock ; To Clock ; Required Setup Relationship ; Required Longest P2P Time ; Actual Longest P2P Time ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[2] ; WSTB ; WSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[2] ; WSTB ; WSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[1] ; WSTB ; WSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[1] ; WSTB ; WSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[0] ; REG_P[0] ; WSTB ; WSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; -21.000 ns ; 19.23 MHz ( period = 52.000 ns ) ; LR_T[1] ; REG_P[0] ; WSTB ; WSTB ; 5.000 ns ; -15.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[2] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[2] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[1] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[1] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[1] ; REG_P[0] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; REG_P[0] ; REG_P[0] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[1] ; STWG[1] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[1] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[1] ; STWG[2] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[2] ; STWG[2] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[2] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; STWG[0] ; STWG[0] ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -; 0.000 ns ; 100.00 MHz ( period = 10.000 ns ) ; CT_WG ; CT_WG ; WSTB ; WSTB ; 10.000 ns ; 6.000 ns ; 6.000 ns ; -+------------+-----------------------------------+----------+----------+------------+----------+-----------------------------+---------------------------+-------------------------+ - - -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Hold: 'TG42_IN' ; -+---------------+-------------------------------+-------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ -; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; -+---------------+-------------------------------+-------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ -; -12.200 ns ; FDD_1440 ; $00021 ; TG42_IN ; TG42_IN ; 0.000 ns ; 27.000 ns ; 14.800 ns ; -; -12.200 ns ; FDD_1440 ; $00023 ; TG42_IN ; TG42_IN ; 0.000 ns ; 27.000 ns ; 14.800 ns ; -; -10.200 ns ; XCT[1] ; $00021 ; TG42_IN ; TG42_IN ; 0.000 ns ; 25.000 ns ; 14.800 ns ; -; -10.200 ns ; XCT[1] ; $00023 ; TG42_IN ; TG42_IN ; 0.000 ns ; 25.000 ns ; 14.800 ns ; -; -8.000 ns ; $00009 ; $00009 ; TG42_IN ; TG42_IN ; 0.000 ns ; 14.000 ns ; 6.000 ns ; -; -8.000 ns ; XCT[0] ; XCT[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 14.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[4] ; WGR[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[0] ; WGR[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[1] ; WGR[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[3] ; WGR[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[2] ; WGR[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; $00021 ; WGR[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[0] ; WGR[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[1] ; WGR[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[3] ; WGR[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[2] ; WGR[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; $00021 ; WGR[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[0] ; WGR[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[1] ; WGR[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[3] ; WGR[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[2] ; WGR[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; $00021 ; WGR[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[0] ; WGR[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[1] ; WGR[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[3] ; WGR[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[2] ; WGR[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; $00021 ; WGR[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[0] ; WGR[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[1] ; WGR[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[3] ; WGR[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; WGR[2] ; WGR[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; $00021 ; WGR[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -5.000 ns ; $00023 ; $00021 ; TG42_IN ; TG42_IN ; 0.000 ns ; 11.000 ns ; 6.000 ns ; -; -3.000 ns ; lpm_counter:CT_rtl_0|dffs[0] ; $00021 ; TG42_IN ; TG42_IN ; 0.000 ns ; 17.000 ns ; 14.000 ns ; -; -3.000 ns ; lpm_counter:CT_rtl_0|dffs[0] ; $00023 ; TG42_IN ; TG42_IN ; 0.000 ns ; 17.000 ns ; 14.000 ns ; -; -1.000 ns ; REG_P[1] ; REG_P[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; REG_P[0] ; REG_P[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; REG_P[1] ; REG_P[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; REG_P[0] ; REG_P[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; REG_P[1] ; REG_P[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; REG_P[0] ; REG_P[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; STWG[1] ; STWG[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; STWG[0] ; STWG[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; STWG[1] ; STWG[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; STWG[2] ; STWG[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; STWG[0] ; STWG[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; STWG[0] ; STWG[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; -1.000 ns ; CT_WG ; CT_WG ; TG42_IN ; TG42_IN ; 0.000 ns ; 7.000 ns ; 6.000 ns ; -; 5.000 ns ; FDD_1440 ; FDD_1440 ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[2] ; lpm_counter:CT_rtl_0|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[1] ; lpm_counter:CT_rtl_0|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[0] ; lpm_counter:CT_rtl_0|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[2] ; lpm_counter:CT_rtl_0|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[3] ; lpm_counter:CT_rtl_0|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[1] ; lpm_counter:CT_rtl_0|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[0] ; lpm_counter:CT_rtl_0|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[2] ; lpm_counter:CTH_rtl_2|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_HT ; lpm_counter:CTH_rtl_2|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[2] ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_HT ; lpm_counter:CTH_rtl_2|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[2] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[4] ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_HT ; lpm_counter:CTH_rtl_2|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[0] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[1] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[2] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[3] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[4] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[5] ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_HT ; lpm_counter:CTH_rtl_2|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[2] ; SINC_HT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[3] ; SINC_HT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[4] ; SINC_HT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTH_rtl_2|dffs[5] ; SINC_HT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[2] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[3] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[4] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[5] ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[5] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[5] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[6] ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[6] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[5] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[6] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[7] ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[7] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[0] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[1] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[2] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[3] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[4] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[5] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[6] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[7] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[8] ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; SINC_VT ; lpm_counter:CTV_rtl_1|dffs[8] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[2] ; SINC_VT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[3] ; SINC_VT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[4] ; SINC_VT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[5] ; SINC_VT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[6] ; SINC_VT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[7] ; SINC_VT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CTV_rtl_1|dffs[8] ; SINC_VT ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[1] ; lpm_counter:CT_rtl_0|dffs[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[0] ; lpm_counter:CT_rtl_0|dffs[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; lpm_counter:CT_rtl_0|dffs[0] ; lpm_counter:CT_rtl_0|dffs[0] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; XCT[0] ; XCT[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; XCT[1] ; XCT[1] ; TG42_IN ; TG42_IN ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 10.800 ns ; /RESET ; SINC_VT ; TG42_IN ; TG42_IN ; -5.000 ns ; 4.000 ns ; 14.800 ns ; -; 20.000 ns ; LR_T[0] ; REG_P[2] ; TG42_IN ; TG42_IN ; -5.000 ns ; -14.000 ns ; 6.000 ns ; -; 20.000 ns ; LR_T[1] ; REG_P[2] ; TG42_IN ; TG42_IN ; -5.000 ns ; -14.000 ns ; 6.000 ns ; -; 20.000 ns ; LR_T[0] ; REG_P[1] ; TG42_IN ; TG42_IN ; -5.000 ns ; -14.000 ns ; 6.000 ns ; -; 20.000 ns ; LR_T[1] ; REG_P[1] ; TG42_IN ; TG42_IN ; -5.000 ns ; -14.000 ns ; 6.000 ns ; -; 20.000 ns ; LR_T[0] ; REG_P[0] ; TG42_IN ; TG42_IN ; -5.000 ns ; -14.000 ns ; 6.000 ns ; -; 20.000 ns ; LR_T[1] ; REG_P[0] ; TG42_IN ; TG42_IN ; -5.000 ns ; -14.000 ns ; 6.000 ns ; -; 26.000 ns ; $00047 ; /RESET ; TG42_IN ; TG42_IN ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 44.000 ns ; /RESET ; $00053 ; TG42_IN ; TG42_IN ; -5.000 ns ; -30.000 ns ; 14.000 ns ; -; 44.000 ns ; /RESET ; $00052 ; TG42_IN ; TG42_IN ; -5.000 ns ; -30.000 ns ; 14.000 ns ; -; 52.000 ns ; /RESET ; $00051 ; TG42_IN ; TG42_IN ; -5.000 ns ; -30.000 ns ; 22.000 ns ; -; 52.000 ns ; /RESET ; $00050 ; TG42_IN ; TG42_IN ; -5.000 ns ; -30.000 ns ; 22.000 ns ; -+---------------+-------------------------------+-------------------------------+------------+----------+----------------------------+----------------------------+--------------------------+ - - -+--------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Hold: 'STE' ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ -; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ -; 5.000 ns ; REG_P[1] ; REG_P[2] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[2] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[1] ; REG_P[1] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[1] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[1] ; REG_P[0] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[0] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[1] ; STWG[1] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[1] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[1] ; STWG[2] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[2] ; STWG[2] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[2] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[0] ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; CT_WG ; CT_WG ; STE ; STE ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[2] ; STE ; STE ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[2] ; STE ; STE ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[1] ; STE ; STE ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[1] ; STE ; STE ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[0] ; STE ; STE ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[0] ; STE ; STE ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ - - -+--------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Hold: 'RSTB' ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ -; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ -; 5.000 ns ; REG_P[1] ; REG_P[2] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[2] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[1] ; REG_P[1] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[1] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[1] ; REG_P[0] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[0] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[1] ; STWG[1] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[1] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[1] ; STWG[2] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[2] ; STWG[2] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[2] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[0] ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; CT_WG ; CT_WG ; RSTB ; RSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[2] ; RSTB ; RSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[2] ; RSTB ; RSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[1] ; RSTB ; RSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[1] ; RSTB ; RSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[0] ; RSTB ; RSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[0] ; RSTB ; RSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ - - -+--------------------------------------------------------------------------------------------------------------------------------------------------+ -; Clock Hold: 'WSTB' ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ -; Minimum Slack ; From ; To ; From Clock ; To Clock ; Required Hold Relationship ; Required Shortest P2P Time ; Actual Shortest P2P Time ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ -; 5.000 ns ; REG_P[1] ; REG_P[2] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[2] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[1] ; REG_P[1] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[1] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[1] ; REG_P[0] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; REG_P[0] ; REG_P[0] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[1] ; STWG[1] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[1] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[1] ; STWG[2] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[2] ; STWG[2] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[2] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; STWG[0] ; STWG[0] ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 5.000 ns ; CT_WG ; CT_WG ; WSTB ; WSTB ; 0.000 ns ; 1.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[2] ; WSTB ; WSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[2] ; WSTB ; WSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[1] ; WSTB ; WSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[1] ; WSTB ; WSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[0] ; REG_P[0] ; WSTB ; WSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -; 26.000 ns ; LR_T[1] ; REG_P[0] ; WSTB ; WSTB ; -5.000 ns ; -20.000 ns ; 6.000 ns ; -+---------------+----------+----------+------------+----------+----------------------------+----------------------------+--------------------------+ - - -+--------------------------------------------------------------------+ -; tsu ; -+-------+--------------+------------+----------+----------+----------+ -; Slack ; Required tsu ; Actual tsu ; From ; To ; To Clock ; -+-------+--------------+------------+----------+----------+----------+ -; N/A ; None ; 23.800 ns ; FDD_C[2] ; $00052 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; FDD_C[2] ; $00053 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[0] ; $00052 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[0] ; $00053 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[2] ; $00052 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[2] ; $00053 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[2] ; $00050 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[2] ; $00051 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; FDD_C[1] ; $00052 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; FDD_C[1] ; $00053 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; FDD_C[1] ; $00050 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; FDD_C[1] ; $00051 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; FDD_C[0] ; $00052 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; FDD_C[0] ; $00053 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[1] ; $00052 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[1] ; $00053 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[3] ; $00052 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[3] ; $00053 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[3] ; $00050 ; TG42_IN ; -; N/A ; None ; 23.800 ns ; HDD_C[3] ; $00051 ; TG42_IN ; -; N/A ; None ; 23.000 ns ; FDD_C[2] ; $00050 ; TG42_IN ; -; N/A ; None ; 23.000 ns ; FDD_C[2] ; $00051 ; TG42_IN ; -; N/A ; None ; 23.000 ns ; HDD_C[0] ; $00050 ; TG42_IN ; -; N/A ; None ; 23.000 ns ; HDD_C[0] ; $00051 ; TG42_IN ; -; N/A ; None ; 23.000 ns ; FDD_C[0] ; $00050 ; TG42_IN ; -; N/A ; None ; 23.000 ns ; FDD_C[0] ; $00051 ; TG42_IN ; -; N/A ; None ; 23.000 ns ; HDD_C[1] ; $00050 ; TG42_IN ; -; N/A ; None ; 23.000 ns ; HDD_C[1] ; $00051 ; TG42_IN ; -; N/A ; None ; 7.000 ns ; WR_CNF ; HDD_CLK ; TG42_IN ; -; N/A ; None ; 7.000 ns ; FDD_C[2] ; HDD_CLK ; TG42_IN ; -; N/A ; None ; 7.000 ns ; HDD_C[0] ; HDD_CLK ; TG42_IN ; -; N/A ; None ; -1.000 ns ; D0 ; FDD_1440 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[0] ; $00041 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[0] ; $00042 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[0] ; $00043 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[0] ; $00044 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[0] ; $00045 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[0] ; $00046 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[2] ; $00041 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[2] ; $00042 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[2] ; $00043 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[2] ; $00044 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[2] ; $00045 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[2] ; $00046 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[2] ; $00048 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[2] ; $00049 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[1] ; $00041 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[1] ; $00042 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[1] ; $00043 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[1] ; $00044 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[1] ; $00045 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[1] ; $00046 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[1] ; $00048 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[1] ; $00049 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[0] ; $00041 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[0] ; $00042 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[0] ; $00043 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[0] ; $00044 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[0] ; $00045 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; FDD_C[0] ; $00046 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[1] ; $00041 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[1] ; $00042 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[1] ; $00043 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[1] ; $00044 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[1] ; $00045 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[1] ; $00046 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[1] ; $00048 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[1] ; $00049 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[3] ; $00041 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[3] ; $00042 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[3] ; $00043 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[3] ; $00044 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[3] ; $00045 ; TG42_IN ; -; N/A ; None ; -1.000 ns ; HDD_C[3] ; $00046 ; TG42_IN ; -; N/A ; None ; -9.000 ns ; RDAT ; $00023 ; TG42_IN ; -; N/A ; None ; -9.000 ns ; RDAT ; $00021 ; TG42_IN ; -; N/A ; None ; -18.200 ns ; FDD_C[2] ; SINC_VT ; TG42_IN ; -; N/A ; None ; -18.200 ns ; HDD_C[0] ; SINC_VT ; TG42_IN ; -; N/A ; None ; -18.200 ns ; HDD_C[2] ; SINC_VT ; TG42_IN ; -; N/A ; None ; -18.200 ns ; FDD_C[1] ; SINC_VT ; TG42_IN ; -; N/A ; None ; -18.200 ns ; FDD_C[0] ; SINC_VT ; TG42_IN ; -; N/A ; None ; -18.200 ns ; HDD_C[1] ; SINC_VT ; TG42_IN ; -; N/A ; None ; -18.200 ns ; HDD_C[3] ; SINC_VT ; TG42_IN ; -; N/A ; None ; -19.000 ns ; EPM_RES ; /RESET ; TG42_IN ; -; N/A ; None ; -35.000 ns ; SR ; LR_T[0] ; STE ; -; N/A ; None ; -35.000 ns ; SR ; LR_T[0] ; RSTB ; -; N/A ; None ; -35.000 ns ; SR ; LR_T[0] ; WSTB ; -; N/A ; None ; -35.000 ns ; TR43 ; LR_T[1] ; STE ; -; N/A ; None ; -35.000 ns ; TR43 ; LR_T[1] ; RSTB ; -; N/A ; None ; -35.000 ns ; TR43 ; LR_T[1] ; WSTB ; -; N/A ; None ; -35.000 ns ; TR43 ; LR_T[0] ; STE ; -; N/A ; None ; -35.000 ns ; TR43 ; LR_T[0] ; RSTB ; -; N/A ; None ; -35.000 ns ; TR43 ; LR_T[0] ; WSTB ; -; N/A ; None ; -35.000 ns ; WD ; LR_T[1] ; STE ; -; N/A ; None ; -35.000 ns ; WD ; LR_T[1] ; RSTB ; -; N/A ; None ; -35.000 ns ; WD ; LR_T[1] ; WSTB ; -; N/A ; None ; -35.000 ns ; WD ; LR_T[0] ; STE ; -; N/A ; None ; -35.000 ns ; WD ; LR_T[0] ; RSTB ; -; N/A ; None ; -35.000 ns ; WD ; LR_T[0] ; WSTB ; -; N/A ; None ; -35.000 ns ; SL ; LR_T[1] ; STE ; -; N/A ; None ; -35.000 ns ; SL ; LR_T[1] ; RSTB ; -; N/A ; None ; -35.000 ns ; SL ; LR_T[1] ; WSTB ; -; N/A ; None ; -35.000 ns ; PW_GOOD ; $00047 ; TG42_IN ; -; N/A ; None ; -40.000 ns ; SR ; LR_T[0] ; TG42_IN ; -; N/A ; None ; -40.000 ns ; TR43 ; LR_T[1] ; TG42_IN ; -; N/A ; None ; -40.000 ns ; TR43 ; LR_T[0] ; TG42_IN ; -; N/A ; None ; -40.000 ns ; WD ; LR_T[1] ; TG42_IN ; -; N/A ; None ; -40.000 ns ; WD ; LR_T[0] ; TG42_IN ; -; N/A ; None ; -40.000 ns ; SL ; LR_T[1] ; TG42_IN ; -+-------+--------------+------------+----------+----------+----------+ - - -+---------------------------------------------------------------------------------------------+ -; tco ; -+-------+--------------+------------+-------------------------------+------------+------------+ -; Slack ; Required tco ; Actual tco ; From ; To ; From Clock ; -+-------+--------------+------------+-------------------------------+------------+------------+ -; N/A ; None ; 50.000 ns ; STWG[2] ; CLK_WG ; TG42_IN ; -; N/A ; None ; 47.000 ns ; $00047 ; XHD_RES ; TG42_IN ; -; N/A ; None ; 47.000 ns ; SINC_VT ; SINC ; TG42_IN ; -; N/A ; None ; 42.000 ns ; REG_P[2] ; WDAT ; TG42_IN ; -; N/A ; None ; 39.000 ns ; lpm_counter:CTV_rtl_1|dffs[8] ; SINC_2 ; TG42_IN ; -; N/A ; None ; 39.000 ns ; WGR[4] ; QDAT ; TG42_IN ; -; N/A ; None ; 39.000 ns ; STWG[2] ; CLK_WG ; STE ; -; N/A ; None ; 39.000 ns ; STWG[2] ; CLK_WG ; RSTB ; -; N/A ; None ; 39.000 ns ; STWG[2] ; CLK_WG ; WSTB ; -; N/A ; None ; 39.000 ns ; $00021 ; FDAT ; TG42_IN ; -; N/A ; None ; 39.000 ns ; SINC_HT ; SINC ; TG42_IN ; -; N/A ; None ; 39.000 ns ; SINC_VT ; SINC_V ; TG42_IN ; -; N/A ; None ; 36.000 ns ; $00009 ; CLK14 ; TG42_IN ; -; N/A ; None ; 31.000 ns ; /RESET ; /CONF_X ; TG42_IN ; -; N/A ; None ; 31.000 ns ; lpm_counter:CTH_rtl_2|dffs[5] ; SINC_1 ; TG42_IN ; -; N/A ; None ; 31.000 ns ; REG_P[2] ; WDAT ; STE ; -; N/A ; None ; 31.000 ns ; REG_P[2] ; WDAT ; RSTB ; -; N/A ; None ; 31.000 ns ; REG_P[2] ; WDAT ; WSTB ; -; N/A ; None ; 31.000 ns ; SINC_HT ; SINC_H ; TG42_IN ; -; N/A ; None ; 23.000 ns ; lpm_counter:CT_rtl_0|dffs[3] ; AUD ; TG42_IN ; -; N/A ; None ; 21.000 ns ; $00049 ; HD_DIR ; TG42_IN ; -; N/A ; None ; 15.000 ns ; XCT[1] ; CLKZZ ; TG42_IN ; -; N/A ; None ; 13.000 ns ; $00049 ; XHD_RD ; TG42_IN ; -; N/A ; None ; 13.000 ns ; $00048 ; XHD_WR ; TG42_IN ; -; N/A ; None ; 13.000 ns ; FDD_1440 ; 10K_D0 ; TG42_IN ; -; N/A ; None ; 13.000 ns ; $00043 ; /WG_RD ; TG42_IN ; -; N/A ; None ; 13.000 ns ; $00042 ; /WG_WR ; TG42_IN ; -; N/A ; None ; 13.000 ns ; $00041 ; WR_PDOS ; TG42_IN ; -; N/A ; None ; 13.000 ns ; $00044 ; CMOS_DWR ; TG42_IN ; -; N/A ; None ; 13.000 ns ; $00045 ; CMOS_AS ; TG42_IN ; -; N/A ; None ; 13.000 ns ; $00046 ; CMOS_DRD ; TG42_IN ; -; N/A ; None ; 5.000 ns ; $00051 ; XHD1_CS[2] ; TG42_IN ; -; N/A ; None ; 5.000 ns ; $00050 ; XHD1_CS[1] ; TG42_IN ; -; N/A ; None ; 5.000 ns ; HDD_CLK ; 10K_CLK ; TG42_IN ; -; N/A ; None ; 5.000 ns ; $00053 ; XHD2_CS[2] ; TG42_IN ; -; N/A ; None ; 5.000 ns ; $00052 ; XHD2_CS[1] ; TG42_IN ; -+-------+--------------+------------+-------------------------------+------------+------------+ - - -+------------------------------------------------------------------+ -; tpd ; -+-------+-------------------+-----------------+---------+----------+ -; Slack ; Required P2P Time ; Actual P2P Time ; From ; To ; -+-------+-------------------+-----------------+---------+----------+ -; N/A ; None ; 10.000 ns ; TG42_IN ; TG42_OUT ; -; N/A ; None ; 10.000 ns ; TG42_IN ; TG42_BUF ; -+-------+-------------------+-----------------+---------+----------+ - - -+---------------------------------------------------------------------------+ -; th ; -+---------------+-------------+------------+----------+----------+----------+ -; Minimum Slack ; Required th ; Actual th ; From ; To ; To Clock ; -+---------------+-------------+------------+----------+----------+----------+ -; N/A ; None ; 51.000 ns ; SR ; LR_T[0] ; TG42_IN ; -; N/A ; None ; 51.000 ns ; TR43 ; LR_T[1] ; TG42_IN ; -; N/A ; None ; 51.000 ns ; TR43 ; LR_T[0] ; TG42_IN ; -; N/A ; None ; 51.000 ns ; WD ; LR_T[1] ; TG42_IN ; -; N/A ; None ; 51.000 ns ; WD ; LR_T[0] ; TG42_IN ; -; N/A ; None ; 51.000 ns ; SL ; LR_T[1] ; TG42_IN ; -; N/A ; None ; 40.000 ns ; SR ; LR_T[0] ; STE ; -; N/A ; None ; 40.000 ns ; SR ; LR_T[0] ; RSTB ; -; N/A ; None ; 40.000 ns ; SR ; LR_T[0] ; WSTB ; -; N/A ; None ; 40.000 ns ; TR43 ; LR_T[1] ; STE ; -; N/A ; None ; 40.000 ns ; TR43 ; LR_T[1] ; RSTB ; -; N/A ; None ; 40.000 ns ; TR43 ; LR_T[1] ; WSTB ; -; N/A ; None ; 40.000 ns ; TR43 ; LR_T[0] ; STE ; -; N/A ; None ; 40.000 ns ; TR43 ; LR_T[0] ; RSTB ; -; N/A ; None ; 40.000 ns ; TR43 ; LR_T[0] ; WSTB ; -; N/A ; None ; 40.000 ns ; WD ; LR_T[1] ; STE ; -; N/A ; None ; 40.000 ns ; WD ; LR_T[1] ; RSTB ; -; N/A ; None ; 40.000 ns ; WD ; LR_T[1] ; WSTB ; -; N/A ; None ; 40.000 ns ; WD ; LR_T[0] ; STE ; -; N/A ; None ; 40.000 ns ; WD ; LR_T[0] ; RSTB ; -; N/A ; None ; 40.000 ns ; WD ; LR_T[0] ; WSTB ; -; N/A ; None ; 40.000 ns ; SL ; LR_T[1] ; STE ; -; N/A ; None ; 40.000 ns ; SL ; LR_T[1] ; RSTB ; -; N/A ; None ; 40.000 ns ; SL ; LR_T[1] ; WSTB ; -; N/A ; None ; 40.000 ns ; PW_GOOD ; $00047 ; TG42_IN ; -; N/A ; None ; 24.000 ns ; RDAT ; $00023 ; TG42_IN ; -; N/A ; None ; 24.000 ns ; RDAT ; $00021 ; TG42_IN ; -; N/A ; None ; 24.000 ns ; EPM_RES ; /RESET ; TG42_IN ; -; N/A ; None ; 23.200 ns ; FDD_C[2] ; SINC_VT ; TG42_IN ; -; N/A ; None ; 23.200 ns ; HDD_C[0] ; SINC_VT ; TG42_IN ; -; N/A ; None ; 23.200 ns ; HDD_C[2] ; SINC_VT ; TG42_IN ; -; N/A ; None ; 23.200 ns ; FDD_C[1] ; SINC_VT ; TG42_IN ; -; N/A ; None ; 23.200 ns ; FDD_C[0] ; SINC_VT ; TG42_IN ; -; N/A ; None ; 23.200 ns ; HDD_C[1] ; SINC_VT ; TG42_IN ; -; N/A ; None ; 23.200 ns ; HDD_C[3] ; SINC_VT ; TG42_IN ; -; N/A ; None ; 6.000 ns ; D0 ; FDD_1440 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[0] ; $00041 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[0] ; $00042 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[0] ; $00043 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[0] ; $00044 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[0] ; $00045 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[0] ; $00046 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[2] ; $00041 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[2] ; $00042 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[2] ; $00043 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[2] ; $00044 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[2] ; $00045 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[2] ; $00046 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[2] ; $00048 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[2] ; $00049 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[1] ; $00041 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[1] ; $00042 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[1] ; $00043 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[1] ; $00044 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[1] ; $00045 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[1] ; $00046 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[1] ; $00048 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[1] ; $00049 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[0] ; $00041 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[0] ; $00042 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[0] ; $00043 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[0] ; $00044 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[0] ; $00045 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; FDD_C[0] ; $00046 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[1] ; $00041 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[1] ; $00042 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[1] ; $00043 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[1] ; $00044 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[1] ; $00045 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[1] ; $00046 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[1] ; $00048 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[1] ; $00049 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[3] ; $00041 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[3] ; $00042 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[3] ; $00043 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[3] ; $00044 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[3] ; $00045 ; TG42_IN ; -; N/A ; None ; 6.000 ns ; HDD_C[3] ; $00046 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; WR_CNF ; HDD_CLK ; TG42_IN ; -; N/A ; None ; -2.000 ns ; FDD_C[2] ; HDD_CLK ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[0] ; HDD_CLK ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[2] ; $00052 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[2] ; $00053 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[2] ; $00050 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[2] ; $00051 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[1] ; $00052 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[1] ; $00053 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[1] ; $00050 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[1] ; $00051 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[3] ; $00052 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[3] ; $00053 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[3] ; $00050 ; TG42_IN ; -; N/A ; None ; -2.000 ns ; HDD_C[3] ; $00051 ; TG42_IN ; -; N/A ; None ; -7.000 ns ; FDD_C[2] ; $00052 ; TG42_IN ; -; N/A ; None ; -7.000 ns ; FDD_C[2] ; $00053 ; TG42_IN ; -; N/A ; None ; -7.000 ns ; HDD_C[0] ; $00052 ; TG42_IN ; -; N/A ; None ; -7.000 ns ; HDD_C[0] ; $00053 ; TG42_IN ; -; N/A ; None ; -7.000 ns ; FDD_C[1] ; $00052 ; TG42_IN ; -; N/A ; None ; -7.000 ns ; FDD_C[1] ; $00053 ; TG42_IN ; -; N/A ; None ; -7.000 ns ; FDD_C[0] ; $00052 ; TG42_IN ; -; N/A ; None ; -7.000 ns ; FDD_C[0] ; $00053 ; TG42_IN ; -; N/A ; None ; -18.000 ns ; FDD_C[2] ; $00050 ; TG42_IN ; -; N/A ; None ; -18.000 ns ; FDD_C[2] ; $00051 ; TG42_IN ; -; N/A ; None ; -18.000 ns ; HDD_C[0] ; $00050 ; TG42_IN ; -; N/A ; None ; -18.000 ns ; HDD_C[0] ; $00051 ; TG42_IN ; -; N/A ; None ; -18.000 ns ; FDD_C[0] ; $00050 ; TG42_IN ; -; N/A ; None ; -18.000 ns ; FDD_C[0] ; $00051 ; TG42_IN ; -; N/A ; None ; -18.800 ns ; FDD_C[1] ; $00050 ; TG42_IN ; -; N/A ; None ; -18.800 ns ; FDD_C[1] ; $00051 ; TG42_IN ; -+---------------+-------------+------------+----------+----------+----------+ - - -+--------------------------+ -; Timing Analyzer Messages ; -+--------------------------+ -Info: ******************************************************************* -Info: Running Quartus II Classic Timing Analyzer - Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Web Edition - Info: Processing started: Sun Aug 28 03:30:43 2022 -Info: Command: quartus_tan --read_settings_files=off --write_settings_files=off sp2_max -c sp2_max -Info: Started post-fitting delay annotation -Info: Delay annotation completed successfully -Warning: Timing Analysis does not support the analysis of latches as synchronous elements for the currently selected device family -Warning: Found combinational loop of 2 nodes - Warning: Node "RDAT_X~11" - Warning: Node "RDAT_X~6" -Warning: Found combinational loop of 1 nodes - Warning: Node "TURBING~5" -Warning: Found combinational loop of 3 nodes - Warning: Node "THDD~2" - Warning: Node "NTHDD~13" - Warning: Node "NTHDD~11" -Warning: Found combinational loop of 2 nodes - Warning: Node "NT320~12" - Warning: Node "NT320~2" -Warning: Found pins functioning as undefined clocks and/or memory enables - Info: Assuming node "TG42_IN" is an undefined clock - Info: Assuming node "STE" is an undefined clock - Info: Assuming node "RSTB" is an undefined clock - Info: Assuming node "WSTB" is an undefined clock -Warning: Found 20 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew - Info: Detected gated clock "CT_WG1~8bal" as buffer - Info: Detected ripple clock "STWG[2]" as buffer - Info: Detected gated clock "STWG[2]~6bal" as buffer - Info: Detected gated clock "CT_WG~6" as buffer - Info: Detected gated clock "CT_WG~5" as buffer - Info: Detected gated clock "CT_WG~4" as buffer - Info: Detected ripple clock "CT_WG" as buffer - Info: Detected gated clock "TURBING~5" as buffer - Info: Detected ripple clock "FDD_1440" as buffer - Info: Detected ripple clock "HDD_CLK" as buffer - Info: Detected ripple clock "lpm_counter:CT_rtl_0|dffs[3]" as buffer - Info: Detected ripple clock "SINC_HT" as buffer - Info: Detected ripple clock "SINC_VT" as buffer - Info: Detected ripple clock "lpm_counter:CT_rtl_0|dffs[0]" as buffer - Info: Detected gated clock "XCT[2]~4" as buffer - Info: Detected gated clock "XCT[2]~3" as buffer - Info: Detected gated clock "XCT[2]~12" as buffer - Info: Detected gated clock "XCT[2]~11" as buffer - Info: Detected ripple clock "XCT[0]" as buffer - Info: Detected ripple clock "XCT[1]" as buffer -Info: Slack time is -47.0 ns for clock "TG42_IN" between source register "/RESET" and destination register "$00051" - Info: Fmax is 9.62 MHz (period= 104.0 ns) - Info: + Largest register to register requirement is -25.000 ns - Info: + Setup relationship between source and destination is 5.000 ns - Info: + Latch edge is 10.000 ns - Info: Clock period of Destination clock "TG42_IN" is 10.000 ns with offset of 0.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Destination register is 1 - Info: - Launch edge is 5.000 ns - Info: Clock period of Source clock "TG42_IN" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Source register is 1 - Info: + Largest clock skew is -26.000 ns - Info: + Shortest clock path from clock "TG42_IN" to destination register is 1.500 ns - Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN' - Info: 2: + IC(0.000 ns) + CELL(0.000 ns) = 1.500 ns; Loc. = LC121; Fanout = 1; REG Node = '$00051' - Info: Total cell delay = 1.500 ns ( 100.00 % ) - Info: - Longest clock path from clock "TG42_IN" to source register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN' - Info: 2: + IC(0.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = SEXP49; Fanout = 1; COMB Node = 'XCT[2]~4' - Info: 3: + IC(0.000 ns) + CELL(7.000 ns) = 13.500 ns; Loc. = LC56; Fanout = 18; REG Node = 'XCT[1]' - Info: 4: + IC(1.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC53; Fanout = 10; REG Node = 'lpm_counter:CT_rtl_0|dffs[3]' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC85; Fanout = 19; REG Node = '/RESET' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Micro clock to output delay of source is 2.000 ns - Info: - Micro setup delay of destination is 2.000 ns - Info: - Longest register to register delay is 22.000 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC85; Fanout = 19; REG Node = '/RESET' - Info: 2: + IC(0.000 ns) + CELL(16.000 ns) = 16.000 ns; Loc. = LC114; Fanout = 14; COMB LOOP Node = 'THDD~2' - Info: Loc. = LC119; Node "NTHDD~11" - Info: Loc. = LC114; Node "THDD~2" - Info: Loc. = LC118; Node "NTHDD~13" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 22.000 ns; Loc. = LC121; Fanout = 1; REG Node = '$00051' - Info: Total cell delay = 21.000 ns ( 95.45 % ) - Info: Total interconnect delay = 1.000 ns ( 4.55 % ) -Warning: Can't achieve timing requirement Clock Setup: 'TG42_IN' along 57 path(s). See Report window for details. -Info: Slack time is -21.0 ns for clock "STE" between source register "LR_T[0]" and destination register "REG_P[2]" - Info: Fmax is 19.23 MHz (period= 52.0 ns) - Info: + Largest register to register requirement is -15.000 ns - Info: + Setup relationship between source and destination is 5.000 ns - Info: + Latch edge is 5.000 ns - Info: Clock period of Destination clock "STE" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Destination register is 1 - Info: - Launch edge is 0.000 ns - Info: Clock period of Source clock "STE" is 10.000 ns with offset of 0.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Source register is 1 - Info: + Largest clock skew is -16.000 ns - Info: + Shortest clock path from clock "STE" to destination register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Longest clock path from clock "STE" to source register is 43.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG[2]~6bal' - Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG[2]' - Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T[0]' - Info: Total cell delay = 39.500 ns ( 90.80 % ) - Info: Total interconnect delay = 4.000 ns ( 9.20 % ) - Info: - Micro clock to output delay of source is 2.000 ns - Info: - Micro setup delay of destination is 2.000 ns - Info: - Longest register to register delay is 6.000 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T[0]' - Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 5.000 ns ( 83.33 % ) - Info: Total interconnect delay = 1.000 ns ( 16.67 % ) -Warning: Can't achieve timing requirement Clock Setup: 'STE' along 6 path(s). See Report window for details. -Info: Slack time is -21.0 ns for clock "RSTB" between source register "LR_T[0]" and destination register "REG_P[2]" - Info: Fmax is 19.23 MHz (period= 52.0 ns) - Info: + Largest register to register requirement is -15.000 ns - Info: + Setup relationship between source and destination is 5.000 ns - Info: + Latch edge is 5.000 ns - Info: Clock period of Destination clock "RSTB" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Destination register is 1 - Info: - Launch edge is 0.000 ns - Info: Clock period of Source clock "RSTB" is 10.000 ns with offset of 0.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Source register is 1 - Info: + Largest clock skew is -16.000 ns - Info: + Shortest clock path from clock "RSTB" to destination register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Longest clock path from clock "RSTB" to source register is 43.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG[2]~6bal' - Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG[2]' - Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T[0]' - Info: Total cell delay = 39.500 ns ( 90.80 % ) - Info: Total interconnect delay = 4.000 ns ( 9.20 % ) - Info: - Micro clock to output delay of source is 2.000 ns - Info: - Micro setup delay of destination is 2.000 ns - Info: - Longest register to register delay is 6.000 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T[0]' - Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 5.000 ns ( 83.33 % ) - Info: Total interconnect delay = 1.000 ns ( 16.67 % ) -Warning: Can't achieve timing requirement Clock Setup: 'RSTB' along 6 path(s). See Report window for details. -Info: Slack time is -21.0 ns for clock "WSTB" between source register "LR_T[0]" and destination register "REG_P[2]" - Info: Fmax is 19.23 MHz (period= 52.0 ns) - Info: + Largest register to register requirement is -15.000 ns - Info: + Setup relationship between source and destination is 5.000 ns - Info: + Latch edge is 5.000 ns - Info: Clock period of Destination clock "WSTB" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Destination register is 1 - Info: - Launch edge is 0.000 ns - Info: Clock period of Source clock "WSTB" is 10.000 ns with offset of 0.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Source register is 1 - Info: + Largest clock skew is -16.000 ns - Info: + Shortest clock path from clock "WSTB" to destination register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Longest clock path from clock "WSTB" to source register is 43.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG[2]~6bal' - Info: 6: + IC(1.000 ns) + CELL(7.000 ns) = 37.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG[2]' - Info: 7: + IC(1.000 ns) + CELL(5.000 ns) = 43.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T[0]' - Info: Total cell delay = 39.500 ns ( 90.80 % ) - Info: Total interconnect delay = 4.000 ns ( 9.20 % ) - Info: - Micro clock to output delay of source is 2.000 ns - Info: - Micro setup delay of destination is 2.000 ns - Info: - Longest register to register delay is 6.000 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T[0]' - Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 5.000 ns ( 83.33 % ) - Info: Total interconnect delay = 1.000 ns ( 16.67 % ) -Warning: Can't achieve timing requirement Clock Setup: 'WSTB' along 6 path(s). See Report window for details. -Info: Minimum slack time is -12.2 ns for clock "TG42_IN" between source register "FDD_1440" and destination register "$00021" - Info: + Shortest register to register delay is 14.800 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440' - Info: 2: + IC(0.000 ns) + CELL(8.800 ns) = 8.800 ns; Loc. = LC21; Fanout = 6; COMB LOOP Node = 'RDAT_X~6' - Info: Loc. = LC21; Node "RDAT_X~6" - Info: Loc. = LC20; Node "RDAT_X~11" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.800 ns; Loc. = LC17; Fanout = 12; REG Node = '$00021' - Info: Total cell delay = 13.800 ns ( 93.24 % ) - Info: Total interconnect delay = 1.000 ns ( 6.76 % ) - Info: - Smallest register to register requirement is 27.000 ns - Info: + Hold relationship between source and destination is 0.000 ns - Info: + Latch edge is 0.000 ns - Info: Clock period of Destination clock "TG42_IN" is 10.000 ns with offset of 0.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Destination register is 1 - Info: Multicycle Hold factor for Destination register is 1 - Info: - Launch edge is 0.000 ns - Info: Clock period of Source clock "TG42_IN" is 10.000 ns with offset of 0.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Source register is 1 - Info: Multicycle Hold factor for Source register is 1 - Info: + Smallest clock skew is 26.000 ns - Info: + Longest clock path from clock "TG42_IN" to destination register is 35.500 ns - Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN' - Info: 2: + IC(0.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = SEXP49; Fanout = 1; COMB Node = 'XCT[2]~4' - Info: 3: + IC(0.000 ns) + CELL(7.000 ns) = 13.500 ns; Loc. = LC56; Fanout = 18; REG Node = 'XCT[1]' - Info: 4: + IC(1.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC122; Fanout = 9; REG Node = 'lpm_counter:CT_rtl_0|dffs[0]' - Info: 5: + IC(1.000 ns) + CELL(7.000 ns) = 29.500 ns; Loc. = LC28; Fanout = 7; COMB Node = 'CT_WG1~8bal' - Info: 6: + IC(1.000 ns) + CELL(5.000 ns) = 35.500 ns; Loc. = LC17; Fanout = 12; REG Node = '$00021' - Info: Total cell delay = 32.500 ns ( 91.55 % ) - Info: Total interconnect delay = 3.000 ns ( 8.45 % ) - Info: - Shortest clock path from clock "TG42_IN" to source register is 9.500 ns - Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN' - Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK' - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 9.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440' - Info: Total cell delay = 8.500 ns ( 89.47 % ) - Info: Total interconnect delay = 1.000 ns ( 10.53 % ) - Info: - Micro clock to output delay of source is 2.000 ns - Info: + Micro hold delay of destination is 3.000 ns -Warning: Can't achieve minimum setup and hold requirement TG42_IN along 48 path(s). See Report window for details. -Info: Minimum slack time is 5.0 ns for clock "STE" between source register "REG_P[1]" and destination register "REG_P[2]" - Info: + Shortest register to register delay is 6.000 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P[1]' - Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 5.000 ns ( 83.33 % ) - Info: Total interconnect delay = 1.000 ns ( 16.67 % ) - Info: - Smallest register to register requirement is 1.000 ns - Info: + Hold relationship between source and destination is 0.000 ns - Info: + Latch edge is 5.000 ns - Info: Clock period of Destination clock "STE" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Destination register is 1 - Info: Multicycle Hold factor for Destination register is 1 - Info: - Launch edge is 5.000 ns - Info: Clock period of Source clock "STE" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Source register is 1 - Info: Multicycle Hold factor for Source register is 1 - Info: + Smallest clock skew is 0.000 ns - Info: + Longest clock path from clock "STE" to destination register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Shortest clock path from clock "STE" to source register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_94; Fanout = 4; CLK Node = 'STE' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P[1]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Micro clock to output delay of source is 2.000 ns - Info: + Micro hold delay of destination is 3.000 ns -Info: Minimum slack time is 5.0 ns for clock "RSTB" between source register "REG_P[1]" and destination register "REG_P[2]" - Info: + Shortest register to register delay is 6.000 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P[1]' - Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 5.000 ns ( 83.33 % ) - Info: Total interconnect delay = 1.000 ns ( 16.67 % ) - Info: - Smallest register to register requirement is 1.000 ns - Info: + Hold relationship between source and destination is 0.000 ns - Info: + Latch edge is 5.000 ns - Info: Clock period of Destination clock "RSTB" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Destination register is 1 - Info: Multicycle Hold factor for Destination register is 1 - Info: - Launch edge is 5.000 ns - Info: Clock period of Source clock "RSTB" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Source register is 1 - Info: Multicycle Hold factor for Source register is 1 - Info: + Smallest clock skew is 0.000 ns - Info: + Longest clock path from clock "RSTB" to destination register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Shortest clock path from clock "RSTB" to source register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_25; Fanout = 2; CLK Node = 'RSTB' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P[1]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Micro clock to output delay of source is 2.000 ns - Info: + Micro hold delay of destination is 3.000 ns -Info: Minimum slack time is 5.0 ns for clock "WSTB" between source register "REG_P[1]" and destination register "REG_P[2]" - Info: + Shortest register to register delay is 6.000 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P[1]' - Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.000 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 5.000 ns ( 83.33 % ) - Info: Total interconnect delay = 1.000 ns ( 16.67 % ) - Info: - Smallest register to register requirement is 1.000 ns - Info: + Hold relationship between source and destination is 0.000 ns - Info: + Latch edge is 5.000 ns - Info: Clock period of Destination clock "WSTB" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Destination register is 1 - Info: Multicycle Hold factor for Destination register is 1 - Info: - Launch edge is 5.000 ns - Info: Clock period of Source clock "WSTB" is 10.000 ns with inverted offset of 5.000 ns and duty cycle of 50 - Info: Multicycle Setup factor for Source register is 1 - Info: Multicycle Hold factor for Source register is 1 - Info: + Smallest clock skew is 0.000 ns - Info: + Longest clock path from clock "WSTB" to destination register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC8; Fanout = 1; REG Node = 'REG_P[2]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Shortest clock path from clock "WSTB" to source register is 27.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_10; Fanout = 2; CLK Node = 'WSTB' - Info: 2: + IC(0.000 ns) + CELL(8.000 ns) = 8.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 14.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 4: + IC(0.000 ns) + CELL(7.000 ns) = 21.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 27.500 ns; Loc. = LC2; Fanout = 3; REG Node = 'REG_P[1]' - Info: Total cell delay = 25.500 ns ( 92.73 % ) - Info: Total interconnect delay = 2.000 ns ( 7.27 % ) - Info: - Micro clock to output delay of source is 2.000 ns - Info: + Micro hold delay of destination is 3.000 ns -Info: tsu for register "$00052" (data pin = "FDD_C[2]", clock pin = "TG42_IN") is 23.800 ns - Info: + Longest pin to register delay is 23.300 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_46; Fanout = 20; PIN Node = 'FDD_C[2]' - Info: 2: + IC(0.000 ns) + CELL(16.800 ns) = 17.300 ns; Loc. = LC119; Fanout = 10; COMB LOOP Node = 'NTHDD~11' - Info: Loc. = LC119; Node "NTHDD~11" - Info: Loc. = LC114; Node "THDD~2" - Info: Loc. = LC118; Node "NTHDD~13" - Info: 3: + IC(1.000 ns) + CELL(5.000 ns) = 23.300 ns; Loc. = LC123; Fanout = 1; REG Node = '$00052' - Info: Total cell delay = 22.300 ns ( 95.71 % ) - Info: Total interconnect delay = 1.000 ns ( 4.29 % ) - Info: + Micro setup delay of destination is 2.000 ns - Info: - Shortest clock path from clock "TG42_IN" to destination register is 1.500 ns - Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN' - Info: 2: + IC(0.000 ns) + CELL(0.000 ns) = 1.500 ns; Loc. = LC123; Fanout = 1; REG Node = '$00052' - Info: Total cell delay = 1.500 ns ( 100.00 % ) -Info: tco from clock "TG42_IN" to destination pin "CLK_WG" through register "STWG[2]" is 50.000 ns - Info: + Longest clock path from clock "TG42_IN" to source register is 46.500 ns - Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN' - Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK' - Info: 3: + IC(1.000 ns) + CELL(7.000 ns) = 11.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440' - Info: 4: + IC(0.000 ns) + CELL(8.000 ns) = 19.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 25.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 6: + IC(0.000 ns) + CELL(7.000 ns) = 32.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 7: + IC(1.000 ns) + CELL(7.000 ns) = 40.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG[2]~6bal' - Info: 8: + IC(1.000 ns) + CELL(5.000 ns) = 46.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG[2]' - Info: Total cell delay = 42.500 ns ( 91.40 % ) - Info: Total interconnect delay = 4.000 ns ( 8.60 % ) - Info: + Micro clock to output delay of source is 2.000 ns - Info: + Longest register to pin delay is 1.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.000 ns) = 0.000 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG[2]' - Info: 2: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_13; Fanout = 0; PIN Node = 'CLK_WG' - Info: Total cell delay = 1.500 ns ( 100.00 % ) -Info: Longest tpd from source pin "TG42_IN" to destination pin "TG42_OUT" is 10.000 ns - Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN' - Info: 2: + IC(0.000 ns) + CELL(7.000 ns) = 8.500 ns; Loc. = LC128; Fanout = 1; COMB Node = '$00003~3' - Info: 3: + IC(0.000 ns) + CELL(1.500 ns) = 10.000 ns; Loc. = PIN_85; Fanout = 0; PIN Node = 'TG42_OUT' - Info: Total cell delay = 10.000 ns ( 100.00 % ) -Info: th for register "LR_T[0]" (data pin = "SR", clock pin = "TG42_IN") is 51.000 ns - Info: + Longest clock path from clock "TG42_IN" to destination register is 54.500 ns - Info: 1: + IC(0.000 ns) + CELL(1.500 ns) = 1.500 ns; Loc. = PIN_87; Fanout = 11; CLK Node = 'TG42_IN' - Info: 2: + IC(0.000 ns) + CELL(2.000 ns) = 3.500 ns; Loc. = LC88; Fanout = 10; REG Node = 'HDD_CLK' - Info: 3: + IC(1.000 ns) + CELL(7.000 ns) = 11.500 ns; Loc. = LC91; Fanout = 13; REG Node = 'FDD_1440' - Info: 4: + IC(0.000 ns) + CELL(8.000 ns) = 19.500 ns; Loc. = LC32; Fanout = 3; COMB LOOP Node = 'TURBING~5' - Info: Loc. = LC32; Node "TURBING~5" - Info: 5: + IC(1.000 ns) + CELL(5.000 ns) = 25.500 ns; Loc. = SEXP17; Fanout = 1; COMB Node = 'CT_WG~6' - Info: 6: + IC(0.000 ns) + CELL(7.000 ns) = 32.500 ns; Loc. = LC26; Fanout = 8; REG Node = 'CT_WG' - Info: 7: + IC(1.000 ns) + CELL(7.000 ns) = 40.500 ns; Loc. = LC16; Fanout = 3; COMB Node = 'STWG[2]~6bal' - Info: 8: + IC(1.000 ns) + CELL(7.000 ns) = 48.500 ns; Loc. = LC19; Fanout = 6; REG Node = 'STWG[2]' - Info: 9: + IC(1.000 ns) + CELL(5.000 ns) = 54.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T[0]' - Info: Total cell delay = 49.500 ns ( 90.83 % ) - Info: Total interconnect delay = 5.000 ns ( 9.17 % ) - Info: + Micro hold delay of destination is 3.000 ns - Info: - Shortest pin to register delay is 6.500 ns - Info: 1: + IC(0.000 ns) + CELL(0.500 ns) = 0.500 ns; Loc. = PIN_29; Fanout = 1; PIN Node = 'SR' - Info: 2: + IC(1.000 ns) + CELL(5.000 ns) = 6.500 ns; Loc. = LC10; Fanout = 4; REG Node = 'LR_T[0]' - Info: Total cell delay = 5.500 ns ( 84.62 % ) - Info: Total interconnect delay = 1.000 ns ( 15.38 % ) -Critical Warning: Timing requirements for slow timing model timing analysis were not met. See Report window for details. -Info: Quartus II Classic Timing Analyzer was successful. 0 errors, 21 warnings - Info: Peak virtual memory: 185 megabytes - Info: Processing ended: Sun Aug 28 03:30:43 2022 - Info: Elapsed time: 00:00:00 - Info: Total CPU time (on all processors): 00:00:00 - - diff --git a/src/altera/quartus/max/sp2_max.tan.summary b/src/altera/quartus/max/sp2_max.tan.summary deleted file mode 100644 index 9aa9881..0000000 --- a/src/altera/quartus/max/sp2_max.tan.summary +++ /dev/null @@ -1,136 +0,0 @@ --------------------------------------------------------------------------------------- -Timing Analyzer Summary --------------------------------------------------------------------------------------- - -Type : Worst-case tsu -Slack : N/A -Required Time : None -Actual Time : 23.800 ns -From : HDD_C[3] -To : $00051 -From Clock : -- -To Clock : TG42_IN -Failed Paths : 0 - -Type : Worst-case tco -Slack : N/A -Required Time : None -Actual Time : 50.000 ns -From : STWG[2] -To : CLK_WG -From Clock : TG42_IN -To Clock : -- -Failed Paths : 0 - -Type : Worst-case tpd -Slack : N/A -Required Time : None -Actual Time : 10.000 ns -From : TG42_IN -To : TG42_BUF -From Clock : -- -To Clock : -- -Failed Paths : 0 - -Type : Worst-case th -Slack : N/A -Required Time : None -Actual Time : 51.000 ns -From : SL -To : LR_T[1] -From Clock : -- -To Clock : TG42_IN -Failed Paths : 0 - -Type : Clock Setup: 'TG42_IN' -Slack : -47.000 ns -Required Time : 100.00 MHz ( period = 10.000 ns ) -Actual Time : 9.62 MHz ( period = 104.000 ns ) -From : /RESET -To : $00051 -From Clock : TG42_IN -To Clock : TG42_IN -Failed Paths : 57 - -Type : Clock Setup: 'STE' -Slack : -21.000 ns -Required Time : 100.00 MHz ( period = 10.000 ns ) -Actual Time : 19.23 MHz ( period = 52.000 ns ) -From : LR_T[0] -To : REG_P[2] -From Clock : STE -To Clock : STE -Failed Paths : 6 - -Type : Clock Setup: 'RSTB' -Slack : -21.000 ns -Required Time : 100.00 MHz ( period = 10.000 ns ) -Actual Time : 19.23 MHz ( period = 52.000 ns ) -From : LR_T[0] -To : REG_P[2] -From Clock : RSTB -To Clock : RSTB -Failed Paths : 6 - -Type : Clock Setup: 'WSTB' -Slack : -21.000 ns -Required Time : 100.00 MHz ( period = 10.000 ns ) -Actual Time : 19.23 MHz ( period = 52.000 ns ) -From : LR_T[0] -To : REG_P[2] -From Clock : WSTB -To Clock : WSTB -Failed Paths : 6 - -Type : Clock Hold: 'TG42_IN' -Slack : -12.200 ns -Required Time : 100.00 MHz ( period = 10.000 ns ) -Actual Time : N/A -From : FDD_1440 -To : $00021 -From Clock : TG42_IN -To Clock : TG42_IN -Failed Paths : 48 - -Type : Clock Hold: 'STE' -Slack : 5.000 ns -Required Time : 100.00 MHz ( period = 10.000 ns ) -Actual Time : N/A -From : REG_P[1] -To : REG_P[2] -From Clock : STE -To Clock : STE -Failed Paths : 0 - -Type : Clock Hold: 'RSTB' -Slack : 5.000 ns -Required Time : 100.00 MHz ( period = 10.000 ns ) -Actual Time : N/A -From : REG_P[1] -To : REG_P[2] -From Clock : RSTB -To Clock : RSTB -Failed Paths : 0 - -Type : Clock Hold: 'WSTB' -Slack : 5.000 ns -Required Time : 100.00 MHz ( period = 10.000 ns ) -Actual Time : N/A -From : REG_P[1] -To : REG_P[2] -From Clock : WSTB -To Clock : WSTB -Failed Paths : 0 - -Type : Total number of failed paths -Slack : -Required Time : -Actual Time : -From : -To : -From Clock : -To Clock : -Failed Paths : 123 - --------------------------------------------------------------------------------------- - diff --git a/src/altera/quartus/max/sp2_max.tdf b/src/altera/quartus/max/sp2_max.tdf deleted file mode 100644 index b24582c..0000000 --- a/src/altera/quartus/max/sp2_max.tdf +++ /dev/null @@ -1,499 +0,0 @@ - -TITLE "SINC_controller"; - -PARAMETERS - ( - G_MODE = 1, -- 1 on LCELL, 0 - on EXP - - NUM = "NO", - NUMBER1 = B"00100000X", -- 0 - sinc - NUMBER2 = B"00110111X", -- 7 - NUMBER3 = B"01001101X", -- D - NUMBER4 = B"01010010X", -- 2 - NUMBER5 = B"00100000X", -- - NUMBER6 = B"00100000X", -- - NUMBER7 = B"00100000X" -- - ); - -SUBDESIGN SP2_MAX - ( - - TG42_IN : INPUT; - TG42_OUT : OUTPUT; - TG42_BUF : OUTPUT; - CLKZZ : BIDIR; - CLK14 : OUTPUT; - - AUD : OUTPUT; -- clk for timers - BEEP : OUTPUT; - - CMOS_DRD : OUTPUT; - CMOS_AS : OUTPUT; - CMOS_DWR : OUTPUT; - - WR_PDOS : OUTPUT; - WD : INPUT; - WSTB : INPUT; - SR,SL : INPUT; - RSTB : INPUT; - TR43 : INPUT; - CLK_WG : OUTPUT; - FDAT : OUTPUT; - QDAT : OUTPUT; - RDAT : INPUT; - /WG_WR : OUTPUT; - /WG_RD : OUTPUT; - STE : INPUT; - DENS_X : OUTPUT; - WDAT : OUTPUT; - - --- XA[2..0] : BIDIR; - XA[2..0] : INPUT; - XACS : INPUT; --- SINC_1 : OUTPUT; - SINC_1 : BIDIR; - SINC_2 : BIDIR; - - HDD_C[3..0] : INPUT; - FDD_C[2..0] : INPUT; - - HD_DIR : OUTPUT; - HD_CS : OUTPUT; - - /CONF_X : BIDIR; - 10K_CLK : OUTPUT; - WR_CNF : INPUT; - 10K_D0 : OUTPUT; - D0 : INPUT; - - VGA_IN : INPUT; --- WR_COL : INPUT; - SINC_V : OUTPUT; - SINC_H : OUTPUT; - SINC : OUTPUT; - SINC_IN : INPUT; - - XHD_RES : OUTPUT; - XHD_WR : OUTPUT; - XHD_RD : OUTPUT; - - XHD1_CS[2..1] : OUTPUT; - XHD2_CS[2..1] : OUTPUT; - XHR_RDY : INPUT; - - EPM_RES : INPUT; - PW_GOOD : INPUT; - - UNUSED65 : INPUT; -- was GND65, hack for 3000 family - UNUSED33 : INPUT; -- was GND33, hack for 3000 family - UNUSED1 : INPUT; - UNUSED2 : INPUT; - UNUSED5 : INPUT; - UNUSED7 : INPUT; - UNUSED22 : INPUT; - UNUSED24 : INPUT; - UNUSED27 : INPUT; - UNUSED28 : INPUT; - UNUSED49 : INPUT; - UNUSED50 : INPUT; - UNUSED53 : INPUT; - UNUSED55 : INPUT; - UNUSED63 : INPUT; - UNUSED70 : INPUT; - UNUSED72 : INPUT; - UNUSED77 : INPUT; - UNUSED78 : INPUT; - - - - ) -VARIABLE - - XCT[2..0] : DFF; - CNF_ON : NODE; - CNF_OFF : NODE; - - CLK42 : NODE; - - CT[3..0] : DFF; - CTH[5..0] : DFF; - CTV[8..0] : DFFE; - - SINC_HT : DFF; - SINC_VT : DFFE; - - TURBING : NODE; - FDD_1440 : NODE; - NFDD_1440 : NODE; - - CT_WG : NODE; - CT_WG1 : NODE; - - STWG[2..0] : DFF; - CLK_PRC : NODE; - WGR[4..0] : DFF; - RDAT_X : NODE; - - REG_P[2..0] : DFF; - - /RESET : NODE; - - - S144,S720 : NODE; - - SHDD1,SHDD2 : NODE; - THDD : NODE; - NTHDD : NODE; - - NO_HDD : NODE; - - S320,S312 : NODE; - T320 : NODE; - NT320 : NODE; - - SOFT_RESET : NODE; - SOFT_RESET2 : NODE; - - HDD_CLK : NODE; - - LR_T[1..0] : DFF; - - EXP_X : NODE; - EXP_Y : NODE; - - CTV8M : DFF; - - CTV8C : NODE; - - FN_NUM : NODE; - -BEGIN - - /RESET = DFF((EPM_RES & XHD_RES),!CT3,SOFT_RESET,); - --- /RESET = (EXP(!EPM_RES & EXP(EXP(EXP(EPM_RES)))) & SOFT_RESET); - - EXP_X = EXP(TG42_IN); - EXP_Y = EXP(TG42_IN); - - IF (G_MODE == 0) GENERATE - TG42_OUT = LCELL(EXP_X); - ELSE GENERATE - TG42_OUT = LCELL(TG42_BUF); - END GENERATE; - - TG42_BUF = LCELL(!TG42_IN); - - CLK42 = TG42_IN; - --- CT[].clk = CLK14; - CT[].clk = XCT1; - CT[] = CT[] + 1; - --- === horizontal sinc ===== - - CTH[].clk = !CT3; - SINC_HT.clk = !CT3; - - IF !((CTH[] == B"XXXX11") & SINC_HT) THEN - CTH[] = CTH[] + 1; - ELSE - CTH[] = GND; - END IF; - --- SINC_1 = CTH5; - SINC_1 = TRI(CTH5,VCC); - SINC_2 = TRI(CTV8,VCC); - - SINC_HT.d = (CTH[] == B"1101XX"); - - SINC_H = SINC_HT; - --- === vertical sinc ======= - --- CTV[].clk = !CT3; --- SINC_VT.clk = !CT3; - - CTV[].clk = SINC_HT; - SINC_VT.clk = SINC_HT; - - CTV8M.clk = SINC_HT; - --- CTV[].ena = (CTH[] == B"110111"); --- SINC_VT.ena = (CTH[] == B"110111"); - CTV[].ena = VCC; - SINC_VT.ena = VCC; - --- IF (CTV[] == B"100111111") THEN - - IF (NUM == "YES") GENERATE - - FN_NUM =( - (CTV[8..0] == NUMBER1) or - (CTV[8..0] == NUMBER2) or - (CTV[8..0] == NUMBER3) or - (CTV[8..0] == NUMBER4) or - (CTV[8..0] == NUMBER5) or - (CTV[8..0] == NUMBER6) or - (CTV[8..0] == NUMBER7) - ) & !NO_HDD; - - ELSE GENERATE - - FN_NUM = GND; - - END GENERATE; - - - IF EXP((CTV[] == B"XXXXXXX11") & SINC_VT) THEN - - (CTV[8..0]) = ((CTV[8..0]) + 1) xor (CTV8M,B"00000000"); - CTV8M = FN_NUM; - - ELSE - CTV[7..0] = GND; - CTV8M = GND; - CTV8 = GND; - END IF; - - SINC_VT.d = ((CTV[8..0] == B"1001111XX") or ((CTV[8..0] == B"1001101XX")) & NT320); - - SINC_V = SINC_VT; - - SINC = SINC_V xor SINC_H; - --- ============================= - --- ========================================= --- divide by 6 - - XCT[].clk = (TG42_IN xor !XCT1); - XCT[].d = XCT[] + 1; - --- CLKZZ = 14 MHz - - CLKZZ = TRI(XCT1,CNF_OFF); - CLK14 = DFF(!CLK14,XCT0,,); - --- test exists - --- CNF_OFF = EXP(CNF_ON & /RESET); --- CNF_ON = EXP(CNF_OFF & XACS); - - CNF_OFF = DFF(GND,GND,XACS,/RESET); - CNF_ON = !CNF_OFF; - --- ========================================= - --- ======== FDD controller ================== - - TURBING = EXP(EXP(TURBING & !WSTB & !RSTB) & !STE & NFDD_1440); --- TURBING = GND; - - CT_WG = TFF(VCC,(XCT1 xor (CT_WG & TURBING)),,); - - STWG[].clk = (CT_WG xor STWG2); - STWG[].d = STWG[] + 1; - - CLK_WG = STWG2; - --- CLK_PRC = STWG0; - CLK_PRC = CT_WG; - - CT_WG1 = EXP(EXP(XCT1 & FDD_1440) & EXP(CT0 & NFDD_1440)); - - WGR[].clk = CT_WG1; - - IF !FDAT THEN - TABLE WGR[3..0] => WGR[3..0].d; - 0 => 4; 1 => 5; 2 => 4; 3 => 5; - 4 => 6; 5 => 7; 6 => 8; 7 => 8; - 8 => 9; 9 => 9; 10 => 10; 11 => 11; - 12 => 12; 13 => 13; 14 => 14; 15 => 15; - END TABLE; - WGR4.d = WGR4; - ELSE - IF WGR[3..0] == 0 THEN - WGR[3..0].d = 3; - WGR4.d = WGR4; - ELSE - WGR[].d = WGR[] + 1; - END IF; - END IF; - - QDAT = WGR4; - RDAT_X = EXP(EXP(RDAT_X & EXP(!RDAT & !CT_WG1)) & EXP(RDAT & !CT_WG1)); --- FDAT = DFF((RDAT_X or !DFF(RDAT_X,CT_WG1,,)),CT_WG1,,); - FDAT = DFF((RDAT_X or EXP(DFF(RDAT_X,CT_WG1,,))),CT_WG1,,); --- ========================================================== --- now not complete! - - AUD = CT3; - BEEP = GND; - --- /CONF_X = TRI(GND,!/RESET); - - /CONF_X = OPNDRN(/RESET); - --- 10K_CLK = WR_CNF; -- now not protect! - - 10K_CLK = DFF((WR_CNF & CNF_OFF) or ((HDD_C0 or FDD_C2) & CNF_ON),CLK42,,); - - 10K_D0 = DFFE(D0,10K_CLK,S720,(S144 & /RESET),CNF_OFF); - - DENS_X = VCC; - --- === now NOT PRECOMP! ===== - --- WDAT = WD; - - WDAT = REG_P2; - - REG_P[].clk = !CLK_PRC; - --- CASE WD IS --- WHEN 1 => REG_P[].d = (GND,SL,!(SL or SR),SR); --- WHEN 0 => REG_P[].d = (EXP(EXP(REG_P2)),REG_P[1..0],GND); --- END CASE; - --- CASE (DFF(WD,CLK_WG,,),DFF((SL & TR43),CLK_WG,,),DFF((SR & TR43),CLK_WG,,)) IS - - LR_T[].clk = STWG2; --- LR_T[].clk = CLK_WG; - - LR_T[].d = ((WD & !(SL & TR43)),(WD & !(SR & TR43))); - - CASE LR_T[] IS - WHEN 0 => REG_P[1..0] = (REG_P[1..0] - 1) & EXP(REG_P[1..0] == 0); - REG_P[2] = EXP(EXP(REG_P[1..0] == 1)); --- REG_P[2] = (REG_P[1..0] == 1); - WHEN 1 => REG_P[1..0] = 1; REG_P[2] = GND; - WHEN 2 => REG_P[1..0] = 3; REG_P[2] = GND; - WHEN 3 => REG_P[1..0] = 2; REG_P[2] = GND; - END CASE; -% - CASE (WD,DFF((SL & TR43),CLK_WG,,),DFF((SR & TR43),CLK_WG,,)) IS - WHEN B"0XX" => REG_P[1..0] = (REG_P[1..0] - 1) & EXP(REG_P[1..0] == 0); - WHEN B"100" => REG_P[1..0] = 2; - WHEN B"110" => REG_P[1..0] = 1; - WHEN B"101" => REG_P[1..0] = 3; - WHEN B"111" => REG_P[1..0] = 2; - END CASE; -% - -% - CASE WD IS - WHEN 0 => REG_P[3] = EXP(EXP(REG_P[1..0] == 1)); - WHEN 1 => REG_P[3] = GND; - END CASE; -% - --- === Port Controls ==================================== -% - FDD_C0 - 0 - WG93 / 1 - kmps/ p_dos - FDD_C1 - 0 - write / 1 - read - FDD_C2 - 0 - no / 1 - CS_WG/ strobe - - HDD_C0 - strobe - HDD_C[2..1] = 00 - SYS_FN, 01 - SYS_FN, 10 - HDD1/2, 11 - CMOS - HDD_C3 - 0 - HD_CS1, 1 HD_CS3 / 0 CMOS_DAT, 1 - CMOS_ADR - - HDD_C[3..0] = 0001, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set 1.44/720 - HDD_C[3..0] = 1001, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set 320/312 lines - HDD_C[3..0] = 0011, FDD_C[2..1] = 00; -> FDD_C0 = 1/0 -> set HDD1/HDD2 - HDD_C[3..0] = 1011, FDD_C[2..1] = 00; -> FDD_C0 = 0 -> soft_reset! - HDD_C[3..0] = X101, FDD_C[2..1] = XX; -> HDD1/2 rd/wr - -% - - SOFT_RESET = !((HDD_C[] == B"1011") & (FDD_C[] == B"000")); - SOFT_RESET2 = !((HDD_C[] == B"1011") & (FDD_C[] == B"001")); - --- FDD switch - --- NFDD_1440 = EXP(FDD_1440 & S720 & /RESET); --- FDD_1440 = EXP(NFDD_1440 & S144); - FDD_1440 = 10K_D0; - NFDD_1440 = !10K_D0; - - S144 = EXP((HDD_C[] == B"0001") & (FDD_C[] == B"001")); - S720 = EXP((HDD_C[] == B"0001") & (FDD_C[] == B"000")); - --- Screen Switch - - T320 = EXP(NT320 & S320 & /RESET); - NT320 = EXP(T320 & S312); - - S312 = EXP((HDD_C[] == B"1001") & (FDD_C[] == B"001")); - S320 = EXP((HDD_C[] == B"1001") & (FDD_C[] == B"000")); - --- HDD Switch - --- THDD = EXP(NTHDD & SHDD2 & /RESET); --- NTHDD = EXP(THDD & SHDD1); - - THDD = EXP(NTHDD & NO_HDD & SHDD2 & /RESET & SOFT_RESET2); - NTHDD = EXP(THDD & NO_HDD & SHDD1 & /RESET & SOFT_RESET2); - NO_HDD = EXP(NTHDD & THDD & SHDD1 & SHDD2); - - SHDD2 = EXP((HDD_C[] == B"0011") & (FDD_C[] == B"001")); - SHDD1 = EXP((HDD_C[] == B"0011") & (FDD_C[] == B"000")); - --- Control signals - - WR_PDOS = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - /WG_WR = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X00")),HDD_CLK,,FDD_C2); - /WG_RD = DFF(!((HDD_C[] == 0) & (FDD_C[] == B"X10")),HDD_CLK,,FDD_C2); - - CMOS_DWR = DFF(!((HDD_C[] == B"1110") & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - CMOS_AS =!DFF(!((HDD_C[] == B"0110") & (FDD_C[] == B"X01")),HDD_CLK,,FDD_C2); - CMOS_DRD = DFF(!((HDD_C[] == B"1110") & (FDD_C[] == B"X10")),HDD_CLK,,FDD_C2); - --- HD_DIR = !HDD_C1; -- ???????????? - HD_DIR = XHD_RD; - --- HD_CS = GND; --- HD_CS = CTV8M; - HD_CS = (CTV8M and /RESET); - - --- HD_CS = !/RESET; - --- XHD_RES = VCC; - --- XHD_RES = DFF(PW_GOOD,SINC_V,,); - XHD_RES = DFF(PW_GOOD,SINC_V,EPM_RES,); - --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),CLK42,,); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),CLK42,,); - --- HDD_CLK = EXP(EXP(HDD_C0)); - HDD_CLK = 10K_CLK; - --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1 or !HDD_CLK),CLK42,,HDD_C0); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1 or !HDD_CLK),CLK42,,HDD_C0); --- XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),HDD_CLK,,HDD_C0); --- XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),HDD_CLK,,HDD_C0); - XHD_WR = DFF((!(HDD_C[] == B"X101") or FDD_C1),HDD_CLK,,(HDD_C0 and /RESET)); - XHD_RD = DFF((!(HDD_C[] == B"X101") or !FDD_C1),HDD_CLK,,(HDD_C0 and /RESET)); - --- XHD1_CS1 = DFF(!((HDD_C[] == B"010X") & NTHDD),CLK42,,); --- XHD1_CS2 = DFF(!((HDD_C[] == B"110X") & NTHDD),CLK42,,); - --- XHD2_CS1 = DFF(!((HDD_C[] == B"010X") & THDD),CLK42,,); --- XHD2_CS2 = DFF(!((HDD_C[] == B"110X") & THDD),CLK42,,); - --- XHD1_CS1 = DFF((!(HDD_C[] == B"010X") or THDD),CLK42,,); --- XHD1_CS2 = DFF((!(HDD_C[] == B"110X") or THDD),CLK42,,); - XHD1_CS1 = DFF((!(HDD_C[] == B"010X") or THDD),CLK42,,/RESET); - XHD1_CS2 = DFF((!(HDD_C[] == B"110X") or THDD),CLK42,,/RESET); - --- XHD2_CS1 = DFF((!(HDD_C[] == B"010X") or NTHDD),CLK42,,); --- XHD2_CS2 = DFF((!(HDD_C[] == B"110X") or NTHDD),CLK42,,); - XHD2_CS1 = DFF((!(HDD_C[] == B"010X") or NTHDD),CLK42,,/RESET); - XHD2_CS2 = DFF((!(HDD_C[] == B"110X") or NTHDD),CLK42,,/RESET); - - -END; - diff --git a/src/bin/Altera0pak.c b/src/bin/Altera0pak.c deleted file mode 100644 index 900cad0..0000000 --- a/src/bin/Altera0pak.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Altera zero packer and depacker by Shaos (2017,2021) */ - -#include -#include -#include - -int main(int argc, char** argv) -{ - int b,i,n; - long l,maxzero,nonzero,nzero,sz,current=0; - FILE *f,*fo; - if(argc<3) - { - printf("\n\t%s imgfilename packedfilename\nor",argv[0]); - printf("\n\t%s -d packedfilename depackedfile\n",argv[0]); - return 0; - } - if(argv[1][0]=='-' && argv[1][1]=='d') - { - f = fopen(argv[2],"rb"); - if(f==NULL) return -1; - if(argc==3) fo = fopen("Altera.bin","wb"); - else fo = fopen(argv[3],"wb"); - if(fo==NULL){fclose(f);return -2;} - fseek(f,0,SEEK_END); - sz = ftell(f); - printf("Size=%li\n",sz); - fseek(f,0,SEEK_SET); - printf("Depack %s (size=%li)\n",argv[2],sz); - for(l=0;lmaxzero) maxzero=nzero; - current+=2; - fputc(0,fo); - fputc(nzero,fo); - } - if(b) - { - nzero = 0; - nonzero++; - current++; - fputc(b,fo); - } - else nzero = 1; - } - else nzero++; - } - if(nzero) - { - if(nzero>maxzero) maxzero=nzero; - current+=2; - fputc(0,fo); - fputc(nzero,fo); - } - printf("maxzero=%li nonzero=%li current=%li\n",maxzero,nonzero,current); - fclose(fo); - fclose(f); - return 0; -} diff --git a/src/bin/Altera0pak.exe b/src/bin/Altera0pak.exe deleted file mode 100644 index 29cef85..0000000 Binary files a/src/bin/Altera0pak.exe and /dev/null differ diff --git a/src/bin/_SPRIN.BIN b/src/bin/_SPRIN.BIN deleted file mode 100644 index 51b0eae..0000000 Binary files a/src/bin/_SPRIN.BIN and /dev/null differ diff --git a/src/bin/disk3.dpr b/src/bin/disk3.dpr deleted file mode 100644 index 6dafd9c..0000000 --- a/src/bin/disk3.dpr +++ /dev/null @@ -1,172 +0,0 @@ -program disk3; - -{$APPTYPE CONSOLE} - -uses - Classes, - SysUtils; - -function vall(s: string): longint; -begin - try - result:= strtoint(s); - except - result:= 0; - end; -end; -function strr(n: longint): string; -begin - try - result:= inttostr(n); - except - result:= '0'; - end; -end; -procedure SplitParams(const splitter: string; const params: string; var dest: TStringList); -var - p: longint; - tmp: string; -begin - if not Assigned(dest) then - exit; - - dest.Clear; - tmp:= params; - p:= pos(splitter, tmp); - - while (p > 0) do - begin - dest.Add(copy(tmp, 1, p-1)); - tmp:= copy(tmp, p+1, length(tmp) - p); - p:= pos(splitter, tmp); - end; - dest.Add(tmp); -end; - -procedure help; -begin - writeln('DISK3: Sprinter FW builder'); - writeln('Copyright (c) 2021 Sprinter Team'); - writeln('Usage:'); - writeln(' disk3.exe '); - writeln('Offsets and data length could be in dec or hex values: 16384 or 4000H'); - writeln; -end; - -const - MAX_BUF_SIZE = 1024 * 512; - -var - items_list: TStringList; - s: string; - o_ofs, data_len, i_ofs: longint; - o_file_name, i_file_name: string; - o_file, i_file: file of byte; - i, readed: longint; - - buf: array of byte; - -begin -// DISK3.COM OUTPUT_FILE INPUT_FILE OUTPUT_OFFSET,LENGHT,INPUT_OFFSET - - // check incoming values - if ParamCount < 3 then - begin - help; - exit; - end; - - o_file_name:= ParamStr(1); - if trim(o_file_name) = '' then - begin - writeln('ERROR: output file name is not specified'); - exit; - end; - - i_file_name:= ParamStr(2); - if trim(o_file_name) = '' then - begin - writeln('ERROR: input file name is not specified'); - exit; - end; - - // parse offsets - items_list:= TStringList.Create; - - SplitParams(',', ParamStr(3), items_list); - - s:= '0'; - if items_list.Count >= 1 then - s:= items_list[0]; - if UpperCase(s[length(s)]) = 'H' then - s:= '$' + copy(s, 1, length(s)-1); - o_ofs:= vall(s); - - s:= '0'; - if items_list.Count >= 2 then - s:= items_list[1]; - if UpperCase(s[length(s)]) = 'H' then - s:= '$' + copy(s, 1, length(s)-1); - data_len:= vall(s); - - s:= '0'; - if items_list.Count >= 3 then - s:= items_list[2]; - if UpperCase(s[length(s)]) = 'H' then - s:= '$' + copy(s, 1, length(s)-1); - i_ofs:= vall(s); - - items_list.Free; - - // work params - write('<'+o_file_name+'> <'+i_file_name+'> <'+inttohex(o_ofs,1)+'h, '+inttohex(data_len,1)+'h, '+inttohex(i_ofs,1)+'h>'); - - // check buffer size - if (data_len > MAX_BUF_SIZE) then - begin - writeln('ERROR: DATA_LENGTH='+strr(data_len)+', MAX_BUF_SIZE='+strr(MAX_BUF_SIZE)); - exit; - end; - - // create new buffer - SetLength(buf, MAX_BUF_SIZE); - FillChar(buf[0], length(buf), $FF); - - // load src file -{$I-} - FileMode:= fmOpenRead; - AssignFile(i_file, i_file_name); - reset(i_file); - Seek(i_file, i_ofs); - BlockRead(i_file, buf[0], data_len, readed); - CloseFile(i_file); -{$I+} - i:= IOResult; - if (i > 0) then - begin - writeln('ERROR: IOResult='+strr(i)+' during loading input file. Readed '+inttohex(readed,1)+'h'); - exit; - end; - write(', readed '+inttohex(readed,1)+'h'); - - // write buffer to output file -{$I-} - FileMode:= fmOpenReadWrite; - AssignFile(o_file, o_file_name); - reset(o_file); - if IOResult <> 0 then - rewrite(o_file); - Seek(o_file, o_ofs); - BlockWrite(o_file, buf[0], data_len); - CloseFile(o_file); -{$I+} - i:= IOResult; - if (i > 0) then - begin - writeln('ERROR: IOResult='+strr(i)+' during writing to output file'); - exit; - end; - - // finish - writeln(', OK'); -end. diff --git a/src/bin/disk3.exe b/src/bin/disk3.exe deleted file mode 100644 index a902a2d..0000000 Binary files a/src/bin/disk3.exe and /dev/null differ diff --git a/src/bin/lz4ultra b/src/bin/lz4ultra deleted file mode 100644 index a92eb83..0000000 Binary files a/src/bin/lz4ultra and /dev/null differ diff --git a/src/bin/make_num.c b/src/bin/make_num.c deleted file mode 100644 index 5b1c3a1..0000000 --- a/src/bin/make_num.c +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include - -int main(int argc, char** argv) -{ - FILE *f; - unsigned int l,sz,bb,ll; - unsigned short b[4]; - f = fopen(argv[1],"rb"); - if(f==NULL) return -1; - fseek(f,0,SEEK_END); - sz = ftell(f); - fseek(f,0,SEEK_SET); - printf("SIZE: %u\n",sz); - b[0] = b[1] = b[2] = b[3] = 0; - for(l=0;l= 0x100) - { - b[0] &= 0xFF; - b[1] += bb; - if(b[1] >= 0x100) - { - b[1] &= 0xFF; - b[2] += bb; - if(b[2] >= 0x100) - { - b[2] &= 0xFF; - b[3] += bb; - if(b[3] >= 0x100) - b[3] &= 0xFF; - } - } - } - } - fclose(f); - printf("SUM: %2.2X %2.2X %2.2X %2.2X\n",b[0],b[1],b[2],b[3]); - return 0; -} diff --git a/src/bin/make_num.exe b/src/bin/make_num.exe deleted file mode 100644 index 2ac8ea7..0000000 Binary files a/src/bin/make_num.exe and /dev/null differ diff --git a/src/bin/transttf.dpr b/src/bin/transttf.dpr deleted file mode 100644 index e55e0f1..0000000 --- a/src/bin/transttf.dpr +++ /dev/null @@ -1,77 +0,0 @@ -program transttf; - -{$APPTYPE CONSOLE} - -uses - Convert, - CLasses; - -var - fb: file; - f: textfile; - s: string; - tsl: TStringList; - i, k: longint; - b: byte; - buf: array[0..1000] of byte; -begin - writeln('transform ttf-file to binary'); - writeln('Copyright (c) 2021 Sprinter Team'); - - if ParamCount < 1 then - begin - writeln('usage:'); - writeln(' transttf.exe '); - exit; - end; - -{$I-} - if ParamStr(2) <> '' then - AssignFile(fb, ParamStr(2)) - else - AssignFile(fb, ParamStr(1)+'.bin'); - rewrite(fb, 1); - - AssignFile(f, ParamStr(1)); - reset(f); - - i:= 1; - while not EOF(f) do - begin - readln(f, s); - - if s[length(s)] <> ',' then - s:= s + ','; - - tsl:= TStringList.Create; - tsl.Delimiter:= ','; //comma delimiter - tsl.QuoteChar:= #0; - tsl.StrictDelimiter := True; - tsl.DelimitedText:= s; - -// writeln('count: '+strr(tsl.Count)+', s=['+s+']'); - - for k:= 0 to sizeof(buf) do - buf[k]:= 0; - - for k:= 0 to tsl.Count-1 do - begin - b:= vall(tsl.Strings[k]); - buf[k]:= b; - end; - - BlockWrite(fb, buf, tsl.Count-1); - - inc(i); - end; - - - CloseFile(f); - - CloseFile(fb); - - IOResult; -{$I+} - - writeln('transform done.'); -end. \ No newline at end of file diff --git a/src/bin/transttf.exe b/src/bin/transttf.exe deleted file mode 100644 index ecc83e5..0000000 Binary files a/src/bin/transttf.exe and /dev/null differ diff --git a/src/bios/logo/use/New_Year.inc b/src/bios/logo/use/New_Year.inc deleted file mode 100644 index 5489409..0000000 --- a/src/bios/logo/use/New_Year.inc +++ /dev/null @@ -1,16 +0,0 @@ - MODULE _mNewYear - - LUA PASS1 - make_pic_files ("./src/bios/logo/use/NY_Kokoshnik", 0, 1) - make_pic_files ("./src/bios/logo/use/NY_mustache", 0, 1) - print() - ENDLUA - - BYTE 2 ; количество спрайтов - EasterTable 48, 42, 13, 2, sprite1 - EasterTable 37, 6, 69, 26, sprite2 -sprite1: INCBIN './src/bios/logo/use/NY_Kokoshnik_DAT.bin' -sprite2: INCBIN './src/bios/logo/use/NY_mustache_DAT.bin' - - ENDMODULE -; \ No newline at end of file