User Tag List

Страница 7 из 9 ПерваяПервая ... 3456789 ПоследняяПоследняя
Показано с 61 по 70 из 89

Тема: Потроха CP/M 2.2

  1. #61
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,124
    Спасибо Благодарностей отдано 
    808
    Спасибо Благодарностей получено 
    665
    Поблагодарили
    408 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    tnt23, мне трудно выкатить готовый пример, потому что у меня тут все уже давно в виде фарша. Если охота самому испытать удовольствие без купюр,
    https://britzl.github.io/roguearchive/
    Кажется, я корпел над lrogue-5.3.zip
    Больше игр нет

  2. #61
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #62
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,124
    Спасибо Благодарностей отдано 
    808
    Спасибо Благодарностей получено 
    665
    Поблагодарили
    408 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ацтек проглотил жертвенный сорец без единого ругательства, за что ему зачет. Но выкатил 5152 байта наигустейшего DAD SP. Код немножко напоминает результат работы movfuscator-а. Могила.

    - - - Добавлено - - -

    Пример:

    исходный код

    Скрытый текст

    Код:
    is_pack_letter(c, mask)
    short *c;
    unsigned short *mask;
    {
    	if (((*c == '?') || (*c == '!') || (*c == ':') || (*c == '=') ||
    		(*c == ')') || (*c == ']') || (*c == '/') || (*c == ','))) {
    		switch(*c) {
    		case '?':
    			*mask = SCROLL;
    			break;
    		case '!':
    			*mask = POTION;
    			break;
    		case ':':
    			*mask = FOOD;
    			break;
    		case ')':
    			*mask = WEAPON;
    			break;
    		case ']':
    			*mask = ARMOR;
    			break;
    		case '/':
    			*mask = WAND;
    			break;
    		case '=':
    			*mask = RING;
    			break;
    		case ',':
    			*mask = AMULET;
    			break;
    		}
    		*c = LIST;
    		return(1);
    	}
    	return(((*c >= 'a') && (*c <= 'z')) || (*c == CANCEL) || (*c == LIST));
    }
    [свернуть]


    результат

    Скрытый текст

    Код:
     2512    10d3                    	.112 EQU 0
     2513    10d3                    		PUBLIC is_pack__
     2514    10d3   11 xx xx         	is_pack__:	lxi d,.116
     2515    10d6   cd xx xx         		call csave
     2516    10d9   21 xx xx         		LXI H,8-.116
     2517    10dc   39               		DAD SP
     2518    10dd   5e               		MOV E,M
     2519    10de   23               		INX H
     2520    10df   56               		MOV D,M
     2521    10e0   eb               		XCHG
     2522    10e1   5e               		MOV E,M
     2523    10e2   23               		INX H
     2524    10e3   56               		MOV D,M
     2525    10e4   21 3f 00         		LXI H,63
     2526    10e7   cd xx xx         		CALL .eq
     2527    10ea   c2 xx xx         		JNZ .118
     2528    10ed   21 xx xx         		LXI H,8-.116
     2529    10f0   39               		DAD SP
     2530    10f1   5e               		MOV E,M
     2531    10f2   23               		INX H
     2532    10f3   56               		MOV D,M
     2533    10f4   eb               		XCHG
     2534    10f5   5e               		MOV E,M
     2535    10f6   23               		INX H
     2536    10f7   56               		MOV D,M
     2537    10f8   21 21 00         		LXI H,33
     2538    10fb   cd xx xx         		CALL .eq
     2539    10fe   c2 xx xx         		JNZ .118
     2540    1101   21 xx xx         		LXI H,8-.116
     2541    1104   39               		DAD SP
     2542    1105   5e               		MOV E,M
     2543    1106   23               		INX H
     2544    1107   56               		MOV D,M
     2545    1108   eb               		XCHG
     2546    1109   5e               		MOV E,M
     2547    110a   23               		INX H
     2548    110b   56               		MOV D,M
     2549    110c   21 3a 00         		LXI H,58
     2550    110f   cd xx xx         		CALL .eq
     2551    1112   c2 xx xx         		JNZ .118
     2552    1115   21 xx xx         		LXI H,8-.116
     2553    1118   39               		DAD SP
     2554    1119   5e               		MOV E,M
     2555    111a   23               		INX H
     2556    111b   56               		MOV D,M
     2557    111c   eb               		XCHG
     2558    111d   5e               		MOV E,M
     2559    111e   23               		INX H
     2560    111f   56               		MOV D,M
     2561    1120   21 3d 00         		LXI H,61
     2562    1123   cd xx xx         		CALL .eq
     2563    1126   c2 xx xx         		JNZ .118
     2564    1129   21 xx xx         		LXI H,8-.116
     2565    112c   39               		DAD SP
     2566    112d   5e               		MOV E,M
     2567    112e   23               		INX H
     2568    112f   56               		MOV D,M
     2569    1130   eb               		XCHG
     2570    1131   5e               		MOV E,M
     2571    1132   23               		INX H
     2572    1133   56               		MOV D,M
     2573    1134   21 29 00         		LXI H,41
     2574    1137   cd xx xx         		CALL .eq
     2575    113a   c2 xx xx         		JNZ .118
     2576    113d   21 xx xx         		LXI H,8-.116
     2577    1140   39               		DAD SP
     2578    1141   5e               		MOV E,M
     2579    1142   23               		INX H
     2580    1143   56               		MOV D,M
     2581    1144   eb               		XCHG
     2582    1145   5e               		MOV E,M
     2583    1146   23               		INX H
     2584    1147   56               		MOV D,M
     2585    1148   21 5d 00         		LXI H,93
     2586    114b   cd xx xx         		CALL .eq
     2587    114e   c2 xx xx         		JNZ .118
     2588    1151   21 xx xx         		LXI H,8-.116
     2589    1154   39               		DAD SP
     2590    1155   5e               		MOV E,M
     2591    1156   23               		INX H
     2592    1157   56               		MOV D,M
     2593    1158   eb               		XCHG
     2594    1159   5e               		MOV E,M
     2595    115a   23               		INX H
     2596    115b   56               		MOV D,M
     2597    115c   21 2f 00         		LXI H,47
     2598    115f   cd xx xx         		CALL .eq
     2599    1162   c2 xx xx         		JNZ .118
     2600    1165   21 xx xx         		LXI H,8-.116
     2601    1168   39               		DAD SP
     2602    1169   5e               		MOV E,M
     2603    116a   23               		INX H
     2604    116b   56               		MOV D,M
     2605    116c   eb               		XCHG
     2606    116d   5e               		MOV E,M
     2607    116e   23               		INX H
     2608    116f   56               		MOV D,M
     2609    1170   21 2c 00         		LXI H,44
     2610    1173   cd xx xx         		CALL .eq
     2611    1176   ca xx xx         		JZ .117
     2612    1179                    	.118:
     2613    1179   21 xx xx         		LXI H,8-.116
     2614    117c   39               		DAD SP
     2615    117d   5e               		MOV E,M
     2616    117e   23               		INX H
     2617    117f   56               		MOV D,M
     2618    1180   eb               		XCHG
     2619    1181   5e               		MOV E,M
     2620    1182   23               		INX H
     2621    1183   56               		MOV D,M
     2622    1184   eb               		XCHG
     2623    1185   c3 xx xx         		JMP .119
     2624    1188                    	.121:
     2625    1188   21 04 00         		LXI H,4
     2626    118b   e5               		PUSH H
     2627    118c   21 xx xx         		LXI H,12-.116
     2628    118f   39               		DAD SP
     2629    1190   5e               		MOV E,M
     2630    1191   23               		INX H
     2631    1192   56               		MOV D,M
     2632    1193   eb               		XCHG
     2633    1194   d1               		POP D
     2634    1195   73               		MOV M,E
     2635    1196   23               		INX H
     2636    1197   72               		MOV M,D
     2637    1198   c3 xx xx         		JMP .120
     2638    119b                    	.122:
     2639    119b   21 08 00         		LXI H,8
     2640    119e   e5               		PUSH H
     2641    119f   21 xx xx         		LXI H,12-.116
     2642    11a2   39               		DAD SP
     2643    11a3   5e               		MOV E,M
     2644    11a4   23               		INX H
     2645    11a5   56               		MOV D,M
     2646    11a6   eb               		XCHG
     2647    11a7   d1               		POP D
     2648    11a8   73               		MOV M,E
     2649    11a9   23               		INX H
     2650    11aa   72               		MOV M,D
     2651    11ab   c3 xx xx         		JMP .120
     2652    11ae                    	.123:
     2653    11ae   21 20 00         		LXI H,32
     2654    11b1   e5               		PUSH H
     2655    11b2   21 xx xx         		LXI H,12-.116
     2656    11b5   39               		DAD SP
     2657    11b6   5e               		MOV E,M
     2658    11b7   23               		INX H
     2659    11b8   56               		MOV D,M
     2660    11b9   eb               		XCHG
     2661    11ba   d1               		POP D
     2662    11bb   73               		MOV M,E
     2663    11bc   23               		INX H
     2664    11bd   72               		MOV M,D
     2665    11be   c3 xx xx         		JMP .120
     2666    11c1                    	.124:
     2667    11c1   21 02 00         		LXI H,2
     2668    11c4   e5               		PUSH H
     2669    11c5   21 xx xx         		LXI H,12-.116
     2670    11c8   39               		DAD SP
     2671    11c9   5e               		MOV E,M
     2672    11ca   23               		INX H
     2673    11cb   56               		MOV D,M
     2674    11cc   eb               		XCHG
     2675    11cd   d1               		POP D
     2676    11ce   73               		MOV M,E
     2677    11cf   23               		INX H
     2678    11d0   72               		MOV M,D
     2679    11d1   c3 xx xx         		JMP .120
     2680    11d4                    	.125:
     2681    11d4   21 01 00         		LXI H,1
     2682    11d7   e5               		PUSH H
     2683    11d8   21 xx xx         		LXI H,12-.116
     2684    11db   39               		DAD SP
     2685    11dc   5e               		MOV E,M
     2686    11dd   23               		INX H
     2687    11de   56               		MOV D,M
     2688    11df   eb               		XCHG
     2689    11e0   d1               		POP D
     2690    11e1   73               		MOV M,E
     2691    11e2   23               		INX H
     2692    11e3   72               		MOV M,D
     2693    11e4   c3 xx xx         		JMP .120
     2694    11e7                    	.126:
     2695    11e7   21 40 00         		LXI H,64
     2696    11ea   e5               		PUSH H
     2697    11eb   21 xx xx         		LXI H,12-.116
     2698    11ee   39               		DAD SP
     2699    11ef   5e               		MOV E,M
     2700    11f0   23               		INX H
     2701    11f1   56               		MOV D,M
     2702    11f2   eb               		XCHG
     2703    11f3   d1               		POP D
     2704    11f4   73               		MOV M,E
     2705    11f5   23               		INX H
     2706    11f6   72               		MOV M,D
     2707    11f7   c3 xx xx         		JMP .120
     2708    11fa                    	.127:
     2709    11fa   21 80 00         		LXI H,128
     2710    11fd   e5               		PUSH H
     2711    11fe   21 xx xx         		LXI H,12-.116
     2712    1201   39               		DAD SP
     2713    1202   5e               		MOV E,M
     2714    1203   23               		INX H
     2715    1204   56               		MOV D,M
     2716    1205   eb               		XCHG
     2717    1206   d1               		POP D
     2718    1207   73               		MOV M,E
     2719    1208   23               		INX H
     2720    1209   72               		MOV M,D
     2721    120a   c3 xx xx         		JMP .120
     2722    120d                    	.128:
     2723    120d   21 00 01         		LXI H,256
     2724    1210   e5               		PUSH H
     2725    1211   21 xx xx         		LXI H,12-.116
     2726    1214   39               		DAD SP
     2727    1215   5e               		MOV E,M
     2728    1216   23               		INX H
     2729    1217   56               		MOV D,M
     2730    1218   eb               		XCHG
     2731    1219   d1               		POP D
     2732    121a   73               		MOV M,E
     2733    121b   23               		INX H
     2734    121c   72               		MOV M,D
     2735    121d   c3 xx xx         		JMP .120
     2736    1220                    	.119:
     2737    1220   cd xx xx         		CALL .swt
     2738    1223   08 00            		DW 8
     2739    1225   21 00 xx xx      		DW 33,.122
     2740    1229   29 00 xx xx      		DW 41,.124
     2741    122d   2c 00 xx xx      		DW 44,.128
     2742    1231   2f 00 xx xx      		DW 47,.126
     2743    1235   3a 00 xx xx      		DW 58,.123
     2744    1239   3d 00 xx xx      		DW 61,.127
     2745    123d   3f 00 xx xx      		DW 63,.121
     2746    1241   5d 00 xx xx      		DW 93,.125
     2747    1245   xx xx            		DW .120
     2748    1247                    	.120:
     2749    1247   21 2a 00         		LXI H,42
     2750    124a   e5               		PUSH H
     2751    124b   21 xx xx         		LXI H,10-.116
     2752    124e   39               		DAD SP
     2753    124f   5e               		MOV E,M
     2754    1250   23               		INX H
     2755    1251   56               		MOV D,M
     2756    1252   eb               		XCHG
     2757    1253   d1               		POP D
     2758    1254   73               		MOV M,E
     2759    1255   23               		INX H
     2760    1256   72               		MOV M,D
     2761    1257   21 01 00         		LXI H,1
     2762    125a   c9               		RET
     2763    125b                    	.117:
     2764    125b   21 xx xx         		LXI H,8-.116
     2765    125e   39               		DAD SP
     2766    125f   5e               		MOV E,M
     2767    1260   23               		INX H
     2768    1261   56               		MOV D,M
     2769    1262   eb               		XCHG
     2770    1263   5e               		MOV E,M
     2771    1264   23               		INX H
     2772    1265   56               		MOV D,M
     2773    1266   21 61 00         		LXI H,97
     2774    1269   cd xx xx         		CALL .ge
     2775    126c   ca xx xx         		JZ .130
     2776    126f   21 xx xx         		LXI H,8-.116
     2777    1272   39               		DAD SP
     2778    1273   5e               		MOV E,M
     2779    1274   23               		INX H
     2780    1275   56               		MOV D,M
     2781    1276   eb               		XCHG
     2782    1277   5e               		MOV E,M
     2783    1278   23               		INX H
     2784    1279   56               		MOV D,M
     2785    127a   21 7a 00         		LXI H,122
     2786    127d   cd xx xx         		CALL .le
     2787    1280   c2 xx xx         		JNZ .129
     2788    1283                    	.130:
     2789    1283   21 xx xx         		LXI H,8-.116
     2790    1286   39               		DAD SP
     2791    1287   5e               		MOV E,M
     2792    1288   23               		INX H
     2793    1289   56               		MOV D,M
     2794    128a   eb               		XCHG
     2795    128b   5e               		MOV E,M
     2796    128c   23               		INX H
     2797    128d   56               		MOV D,M
     2798    128e   21 1b 00         		LXI H,27
     2799    1291   cd xx xx         		CALL .eq
     2800    1294   c2 xx xx         		JNZ .129
     2801    1297   21 xx xx         		LXI H,8-.116
     2802    129a   39               		DAD SP
     2803    129b   5e               		MOV E,M
     2804    129c   23               		INX H
     2805    129d   56               		MOV D,M
     2806    129e   eb               		XCHG
     2807    129f   5e               		MOV E,M
     2808    12a0   23               		INX H
     2809    12a1   56               		MOV D,M
     2810    12a2   21 2a 00         		LXI H,42
     2811    12a5   cd xx xx         		CALL .eq
     2812    12a8   c2 xx xx         		JNZ .129
     2813    12ab   21 00 00         		LXI H,0
     2814    12ae   c3 xx xx         		JMP .131
     2815    12b1                    	.129:
     2816    12b1   21 01 00         		LXI H,1
     2817    12b4                    	.131:
     2818    12b4   c9               		RET
    [свернуть]


    Тут конечно нельзя не поехидничать и над оригинальным стилем исходника.

    - - - Добавлено - - -

    ... то есть одна функция is_pack_letter() =481 байт.

    BDS C эту же процедуру переварил в 316 байт. Переписанную с использованием index() - 177. Кстати, структуры в нем в каком-то виде все-таки есть. Это не повод для оптимизма, конечно же. Ничего сложнее этой функции скомпилировать им решительно невозможно.
    Больше игр нет

  4. #63
    Guru Аватар для tnt23
    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,634
    Спасибо Благодарностей отдано 
    404
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    63 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Ацтек проглотил жертвенный сорец без единого ругательства, за что ему зачет. Но выкатил 5152 байта наигустейшего DAD SP.
    Это в чистом виде код, без примеси fprintf, lseek и проч.?

  5. #64
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,852
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    результат
    Ничем не отличается от С-80. Всё честно, без единого намёка на оптимизацию.

  6. #65
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,124
    Спасибо Благодарностей отдано 
    808
    Спасибо Благодарностей получено 
    665
    Поблагодарили
    408 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    Это в чистом виде код, без примеси fprintf, lseek и проч.?
    В чистом, по ассемблерному листингу.

    - - - Добавлено - - -

    Цитата Сообщение от b2m Посмотреть сообщение
    Ничем не отличается от С-80. Всё честно, без единого намёка на оптимизацию.
    И все операции приводятся к 16-битным, даже сравнение char константы и переменной типа char. Против такого даже ручками код не повертишь.

    В частном случае именно rogue, не грех было бы и саму программу переписать. Игровое поле у них массив short 80x25, все барахло хранится в связных списках, хорошо, что не двунаправленных. При том, что там 3-10 элементов, dadfuscator-ного кода на их обслуживание получаются десятки килобайт. Ну и перлы вроде вот этого свича с двойной перепроверкой, хотя их не так много наверное. Я изначально наугад взял функцию, которая не ссылается на внешние типы.

    А кстати, известно хоть что-нибудь про этот C-80? Откуда он родом?
    Больше игр нет

  7. #66
    Guru Аватар для tnt23
    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,634
    Спасибо Благодарностей отдано 
    404
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    63 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Игровое поле у них массив short 80x25
    Уж так обидно, так обидно. Хорошие программы под CP/M позволяли как-то хоть приноравливаться к разным диким сочетаниям количества строк и столбцов, характерным для эпохи бурного расцвета терминалов и заката эпохи хиппи.
    Плохие программы вроде LADDER хотят именно 80x25.

  8. #67
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,124
    Спасибо Благодарностей отдано 
    808
    Спасибо Благодарностей получено 
    665
    Поблагодарили
    408 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    Уж так обидно, так обидно. Хорошие программы под CP/M позволяли как-то хоть приноравливаться к разным диким сочетаниям количества строк и столбцов, характерным для эпохи бурного расцвета терминалов и заката эпохи хиппи.
    Плохие программы вроде LADDER хотят именно 80x25.
    rogue родом с pdp-11, о терминалах с меньшим числом столбцов никто там не слышал. Я больше переживаю, что памяти и так нет, а массив в котором заведомо буковки огроменный и объявлен как short. Впрочем, это не оригинальный rogue. Это наиболее древний из доступных в сорцах, при этом может быть ни на чем меньше линукса 0.93 его никогда не собирали.

    А что, Okeah не умеет 80х25?
    Больше игр нет

  9. #68
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,852
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    И все операции приводятся к 16-битным, даже сравнение char константы и переменной типа char. Против такого даже ручками код не повертишь.
    Дык там вроде short *c, а это далеко не char. Попробуй изменить на char.

  10. #69
    Guru Аватар для tnt23
    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,634
    Спасибо Благодарностей отдано 
    404
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    63 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    rogue родом с pdp-11, о терминалах с меньшим числом столбцов никто там не слышал. Я больше переживаю, что памяти и так нет, а массив в котором заведомо буковки огроменный и объявлен как short. Впрочем, это не оригинальный rogue. Это наиболее древний из доступных в сорцах, при этом может быть ни на чем меньше линукса 0.93 его никогда не собирали.

    А что, Okeah не умеет 80х25?
    Максимум 64x25 или 24 в одноцвете. Зато у Океана есть квазипамять.

  11. #70
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,878
    Спасибо Благодарностей отдано 
    665
    Спасибо Благодарностей получено 
    1,884
    Поблагодарили
    1,070 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    Максимум 64x25 или 24 в одноцвете.
    Может готового драйвера под 80x25 нет, но принципиальная возможность (разрешение>480x200) есть. А то так можно сказать, что и у вектора и корвета максимум 64 символа в строке. Хотя надо признать, что несмотря на принципиальную возможность ее вряд ли реализуют на практике.

Страница 7 из 9 ПерваяПервая ... 3456789 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •