Для Спека? Очень смешно, аффтар, жжош, пейшы естчо.
За помощь спасибо. Но Вы не понимаете многих идей, положенных в основу XDev, чтобы давать адекватные советы. Мне совет показался в духе "придерусь хоть к чему-то, впрочем, мне всё не так".
- - - Добавлено - - -
SDCC в комплекте ZXDev 32-битный, тестился на XP, всё должно работать. Почему не работает? Возможно, Вы пытаетесь работать с библиотекой, собранной SDCC другой версии. Или что-то в таком роде.
- - - Добавлено - - -
Попробуйте пересобрать библиотеки. В XDev: File -> Open -> ZXDev/Lib/Mod/Console , F12. И так для всех остальных. Папка Bin должна присутствовать (в ней утилита для разрезания Си-файлов на куски, чтобы исправить родовой дефект Си и хоть в какой-то степени получить смарт-линковку).
- - - Добавлено - - -
Это не нужно. Всё должно работать даже в W2k.
Отдельный инсталлер не предусмотрен из-за той мысли, что для программиста не должно стать проблемой распаковать пару архивов. Можно конечно сделать автоматическую установку переменной окружения, да и то как-то сомнительно.
- - - Добавлено - - -
P.S. Вообще-то я конечно гоню, ведь библиотека юзается из той же версии SDCC, которой и собрана. Но Вы конечно согласитесь, что это проблема SDCC, а не ZXDev?
Последний раз редактировалось Oleg N. Cher; 31.01.2023 в 17:47.
Попробую восстановить систему Windows7 32 бит в другом разделе винчестера. Для чистоты эксперимента. В том разделе, с которым я работаю, наустановлено черт-те что. К тому же винчестер хотя и новый, но прежний рухнул напрочь, так что мне его умелец питерский за приличные деньги восстанавливал посекторно и кое-что восстановить не удалось. Пока это ни в чем себя не проявляло. Система стабильно работает, приложения вроде тоже все работают штатно.
Просто еще одного компа у меня нет из-за малогабаритной квартиры( есть проги, которые только на XP-ке идут и комп с этим большую часть времени стоит под письменным столом). А так попробовать надо с минимумом установленных приложений, может и исчезнет эта проклятая ошибка.
все так, возможно и setup от этого бы не спас. Будем разбираться. Но это не антивирус точно. Кстати Windows10 сегодня нещадно предупреждал меня об опасности установки и запуска и sdcc и Вашего софта. Если бы левый человек скачивал и ставил, то уже бы сто раз сдриснул.
Последний раз редактировалось andrews; 31.01.2023 в 19:00.
Увы, антивириям не нравится софт, собранный Оберон-линкерами. Не знаю, что можно с этим поделать.
- - - Добавлено - - -
Можно попробовать любую другую версию SDCC, которая заработает. Просто скопировать эти файлы в Bin:
sdar.exe
sdasz80.exe
sdcc.exe
sdcpp.exe
sdldz80.exe
На самом деле подход ZXDev НЕ ЗАБИРАЕТ у вас прямую возможность писать куски кода на Си, но ДАЁТ возможность писать на более высокоуровневом и логичном языке, который не разменивается на частности, позволяя программисту посмотреть на свой труд под другим углом. Убирание, вернее, снижение акцентов на низкоуровневые фичи стимулирует программиста писать более переносимый код. Если это нужно конечно.
Пример: порт игры Дурак с ZX на БК-001x. Если бы игра была с самого начала писана на Си, её пришлось бы для портирования просто переписать заново. Вряд ли сильно много кода с ZX-версии прямо легло бы на БК. Я же самолично проверил и убедился, что пишу так, что минимум 50% кода на Обероне переносимы между этими платформами обычным копипастом. Я понимаю, что г-ну Косореву это не интересно, но это так.
С подходом XDev программист получает возможность писать на одном языке для кучи ретро- и не ретро-платформ. Да, эта переносимость условная и со многими оговорками. Но здесь дело в железе, языки не виноваты. Они не в силах сделать железо совместимым. Писать на Си? Можно конечно, но Си не запрещает юзать фишки, поэтому их юзают. И получают очень плохо переносимый код. Нет стимулов разделять на переносимый и не переносимый. Это не надо для ретро? Возможно. Но мои интересы не ограничиваются только ретро.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В файле h:\XDevLite\ZXDev\Bin\compile.bat гадит строка следующего вида
SET Include=%Include% -I%ZXDev%\Lib\C -I%ZXDev%\Lib\Obj
она цепляет все, что в системе объявлено в INCLUDE
Стоит ее превратить в
SET Include= -I%ZXDev%\Lib\C -I%ZXDev%\Lib\Obj
и компилируется все превосходно!
Правда не понял, почему в Windows10 у меня было не так. Возможно там просто SET Include пустая.Код:1 ;-------------------------------------------------------- 2 ; File Created by SDCC : free open source ANSI-C Compiler 3 ; Version 4.2.0 #13081 (MINGW32) 4 ;-------------------------------------------------------- 5 .module HelloWorld 6 .optsdcc -mz80 7 8 ;-------------------------------------------------------- 9 ; Public variables in this module 10 ;-------------------------------------------------------- 11 .globl _main 12 .globl _Basic_Quit_DI 13 .globl _Basic_PRSTR_C_ROM_fastcall 14 .globl _Basic_PLOT_callee 15 .globl _Basic_PAUSE_DI 16 .globl _Basic_PAPER 17 .globl _Basic_INK 18 .globl _Basic_FLASH 19 .globl _Basic_DRAW_callee 20 .globl _Basic_CLS_ZX 21 .globl _Basic_BRIGHT 22 .globl _Basic_BORDER_fastcall 23 .globl _Basic_AT_ROM_callee 24 ;-------------------------------------------------------- 25 ; special function registers 26 ;-------------------------------------------------------- 27 ;-------------------------------------------------------- 28 ; ram data 29 ;-------------------------------------------------------- 30 .area _DATA 000000 31 _HelloWorld_x: 000000 32 .ds 2 000002 33 _HelloWorld__for__1: 000002 34 .ds 2 35 ;-------------------------------------------------------- 36 ; ram data 37 ;-------------------------------------------------------- 38 .area _INITIALIZED 39 ;-------------------------------------------------------- 40 ; absolute external ram data 41 ;-------------------------------------------------------- 42 .area _DABS (ABS) 43 ;-------------------------------------------------------- 44 ; global & static initialisations 45 ;-------------------------------------------------------- 46 .area _HOME 47 .area _GSINIT 48 .area _GSFINAL 49 .area _GSINIT 50 ;-------------------------------------------------------- 51 ; Home 52 ;-------------------------------------------------------- 53 .area _HOME 54 .area _HOME 55 ;-------------------------------------------------------- 56 ; code 57 ;-------------------------------------------------------- 58 .area _CODE 59 ;HelloWorld.c:14: int main (int argc, char **argv) 60 ; --------------------------------- 61 ; Function main 62 ; --------------------------------- 000000 63 _main:: 64 ;HelloWorld.c:20: Basic_Init(); 000000 F3 [ 4] 65 di 000001 FD CB 01 A6 [23] 66 res 4,1(iy) 000005 CD 42 16 [17] 67 call 0x1642 68 ;HelloWorld.c:21: Basic_BORDER(4); 000008 2E 04 [ 7] 69 ld l, #0x04 70 ; spillPairReg hl 71 ; spillPairReg hl 00000A CDr00r00 [17] 72 call _Basic_BORDER_fastcall 73 ;HelloWorld.c:22: Basic_PAPER(0); 00000D 2E 00 [ 7] 74 ld l, #0x00 75 ; spillPairReg hl 76 ; spillPairReg hl 00000F CDr00r00 [17] 77 call _Basic_PAPER 78 ;HelloWorld.c:23: Basic_CLS(); 000012 CDr00r00 [17] 79 call _Basic_CLS_ZX 80 ;HelloWorld.c:24: HelloWorld_x = 0; 000015 21 00 00 [10] 81 ld hl, #0x0000 000018 22r00r00 [16] 82 ld (_HelloWorld_x), hl 83 ;HelloWorld.c:25: HelloWorld__for__1 = 123; 00001B 2E 7B [ 7] 84 ld l, #0x7b 00001D 22r02r00 [16] 85 ld (_HelloWorld__for__1), hl 86 ;HelloWorld.c:26: do { 000020 87 00101$: 88 ;HelloWorld.c:27: Basic_INK(6); 000020 2E 06 [ 7] 89 ld l, #0x06 90 ; spillPairReg hl 91 ; spillPairReg hl 000022 CDr00r00 [17] 92 call _Basic_INK 93 ;HelloWorld.c:28: Basic_PLOT(HelloWorld_x, 127); 000025 3Ar00r00 [13] 94 ld a, (_HelloWorld_x+0) 95 ; spillPairReg hl 96 ; spillPairReg hl 000028 2E 7F [ 7] 97 ld l, #0x7f 00002A CDr00r00 [17] 98 call _Basic_PLOT_callee 99 ;HelloWorld.c:29: Basic_DRAW(10, 10); 100 ; spillPairReg hl 101 ; spillPairReg hl 00002D 3E 0A [ 7] 102 ld a,#0x0a 00002F 6F [ 4] 103 ld l,a 000030 CDr00r00 [17] 104 call _Basic_DRAW_callee 105 ;HelloWorld.c:30: Basic_INK(3); 000033 2E 03 [ 7] 106 ld l, #0x03 107 ; spillPairReg hl 108 ; spillPairReg hl 000035 CDr00r00 [17] 109 call _Basic_INK 110 ;HelloWorld.c:31: Basic_PLOT(HelloWorld_x, 37); 000038 3Ar00r00 [13] 111 ld a, (_HelloWorld_x+0) 112 ; spillPairReg hl 113 ; spillPairReg hl 00003B 2E 25 [ 7] 114 ld l, #0x25 00003D CDr00r00 [17] 115 call _Basic_PLOT_callee 116 ;HelloWorld.c:32: Basic_DRAW(10, 10); 117 ; spillPairReg hl 118 ; spillPairReg hl 000040 3E 0A [ 7] 119 ld a,#0x0a 000042 6F [ 4] 120 ld l,a 000043 CDr00r00 [17] 121 call _Basic_DRAW_callee 122 ;HelloWorld.c:33: HelloWorld_x += 2; 000046 2Ar00r00 [16] 123 ld hl, (_HelloWorld_x) 000049 23 [ 6] 124 inc hl 00004A 23 [ 6] 125 inc hl 00004B 22r00r00 [16] 126 ld (_HelloWorld_x), hl 127 ;HelloWorld.c:34: } while (--HelloWorld__for__1); 00004E 2Ar02r00 [16] 128 ld hl, (_HelloWorld__for__1) 000051 2B [ 6] 129 dec hl 000052 22r02r00 [16] 130 ld (_HelloWorld__for__1), hl 000055 3Ar03r00 [13] 131 ld a, (_HelloWorld__for__1+1) 000058 21r02r00 [10] 132 ld hl, #_HelloWorld__for__1 00005B B6 [ 7] 133 or a, (hl) 00005C 20 C2 [12] 134 jr NZ, 00101$ 135 ;HelloWorld.c:35: Basic_AT(11, 1); 00005E 2E 01 [ 7] 136 ld l, #0x01 137 ; spillPairReg hl 138 ; spillPairReg hl 000060 3E 0B [ 7] 139 ld a, #0x0b 000062 CDr00r00 [17] 140 call _Basic_AT_ROM_callee 141 ;HelloWorld.c:36: Basic_PAPER(1); 000065 2E 01 [ 7] 142 ld l, #0x01 143 ; spillPairReg hl 144 ; spillPairReg hl 000067 CDr00r00 [17] 145 call _Basic_PAPER 146 ;HelloWorld.c:37: Basic_INK(5); 00006A 2E 05 [ 7] 147 ld l, #0x05 148 ; spillPairReg hl 149 ; spillPairReg hl 00006C CDr00r00 [17] 150 call _Basic_INK 151 ;HelloWorld.c:38: Basic_BRIGHT(1); 00006F 2E 01 [ 7] 152 ld l, #0x01 153 ; spillPairReg hl 154 ; spillPairReg hl 000071 CDr00r00 [17] 155 call _Basic_BRIGHT 156 ;HelloWorld.c:39: Basic_FLASH(1); 000074 2E 01 [ 7] 157 ld l, #0x01 158 ; spillPairReg hl 159 ; spillPairReg hl 000076 CDr00r00 [17] 160 call _Basic_FLASH 161 ;HelloWorld.c:40: Basic_PRSTR((void*)" HELLO WORLD of ZX Spectrum ! "); 000079 21r8Dr00 [10] 162 ld hl, #___str_0 00007C CDr00r00 [17] 163 call _Basic_PRSTR_C_ROM_fastcall 164 ;HelloWorld.c:41: Basic_FLASH(0); 00007F 2E 00 [ 7] 165 ld l, #0x00 166 ; spillPairReg hl 167 ; spillPairReg hl 000081 CDr00r00 [17] 168 call _Basic_FLASH 169 ;HelloWorld.c:42: Basic_PAUSE(0); 000084 21 00 00 [10] 170 ld hl, #0x0000 000087 CDr00r00 [17] 171 call _Basic_PAUSE_DI 172 ;HelloWorld.c:43: Basic_Quit(); 173 ;HelloWorld.c:44: __FINI; 174 ;HelloWorld.c:45: } 00008A C3r00r00 [10] 175 jp _Basic_Quit_DI 00008D 176 ___str_0: 00008D 20 48 45 4C 4C 4F 20 177 .ascii " HELLO WORLD of ZX Spectrum ! " 57 4F 52 4C 44 20 6F 66 20 5A 58 20 53 70 65 63 74 72 75 6D 20 21 20 0000AB 00 178 .db 0x00 179 .area _CODE 180 .area _INITIALIZER 181 .area _CABS (ABS)
- - - Добавлено - - -
не влияет!
Последний раз редактировалось andrews; 31.01.2023 в 21:43.
Ага. Хотите сказать, что в Вашей системе переменная окружения Include уже была задана какой-то другой программой?
Дело в том, что батники Compile.bat и Build.bat ждут параметров в переменных. Видите менюшку XDev -> ZXDev Project Setup
Это меню нельзя использовать для настройки примеров ZXDev/Mod, оно предназначено для настройки проектов, которые хранятся в произвольном месте. Когда Вы нажимаете кнопку Save в папке Bin проекта автоматически создаются батники примерно такого вида:
Сообщение от Compile.batОни обращаются к тем самым батникам подсистемы - ZXDev/Bin/Compile.bat и Build.bat, передавая им нужные опции в переменных. Include тоже используется для этого.Сообщение от Build.bat
Не подскажете, какая именно софтина создаёт у Вас переменную окружения Include?
да я их сам руками насоздавал!
Вот
INCLUDE=h:\Program Files\DirectX SDK\Include;h:\Cg\include; h:\Fresh\include;g:\DM\include;g:\DM\include\stl;g :\DM\include\GL;h:\FASM\INCLUDE
вот это всё этот батник и засасывает не знаю зачем, а sdcc из-за этого дает ошибку!
- - - Добавлено - - -
я и не использовал
Ну просто на будущее. Ведь свои проекты удобно хранить вне подсистемы.
SDCC даёт ошибку из-за того, что ему подсовывается непонятно что в качестве опций командной строки
Кстати, если бы показали выхлоп, как я и предлагал, то сразу бы и поняли в чём проблема.
Ну да теперь всё норм и можно разрабатывать!
- - - Добавлено - - -
Понятно же зачем. Батник так и устроен, чтобы получать опции в этих переменных. А тут имя переменной совпало с используемой в Build.bat
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)