約 2,804,633 件
https://w.atwiki.jp/gamemusicbest100/pages/6535.html
Z.O.E 2173 TESTAMENT 機種:GBA 作曲者:藤原達也、中村進 開発元:ウィンキーソフト 発売元:コナミ 発売年:2001 概要 ロボットアクションゲームである「Z.O.E」シリーズの外伝作。 ジャンルはアクションではなくSRPGで、時系列には『ANUBIS』より1年前の物語を描く。 開発はスーパーロボット大戦シリーズを開発したウィンキーソフトで、この作品も全体的にスパロボらしい作りになっている。 攻撃時や防御時にプレイヤーが自ら機体を操縦することで、戦闘結果に影響を与える"IAS戦闘システム"が特徴。 BGMはウィンキーソフトのスタッフが作曲。インターミッションの音楽がオシャレ。 収録曲(仮曲名) 曲名 作・編曲者 補足 順位 Z.O.E. 2173 タイトル画面 KONAMI43位 Intermission インターミッション Subtitle Strategy Explanation Transient Repose Conversation with Friends Every Day Day In, Day Out Sadness Pulse Onward to Victory 味方援軍イベント Danger Promise of Reunion Tragedy ストーリー導入 Uncontrollable Fear Atrocity Mystery Tension Enemy Mine Black Ops Impact Offense and Defense Sortie 味方攻撃時フェイズ Galactica Sudden Assault 敵攻撃時フェイズ Counterattack Wetworks Myona's Theme ミオナのテーマ Reunion Song Final Battle 最終話ステージ Ending Part 1 エピローグ1 Ending Part 2 エピローグ2 Staff Roll スタッフロール
https://w.atwiki.jp/prdj/pages/623.html
Pathfinder Society Scenario #13 The Prince of Augustana 年老いた乞食が不潔で傷ついた姿で、アウグスターナ Augustana のパスファインダー協会支部の戸口に現れ、自分をアンドーランの唯一の正当なる皇帝であると認めよと要求した時、冒険団長 Wallace は彼を追い払おうと考えた。しかし、老いた乞食は wayfinder を示し、アウグスターナの街路の地下のデーモンと他の世界へのポータルについて語り、Wallace は調査のため君をアブサロムから呼び寄せた。君は下水道、群れなすもの、聖域を突破して真実を明らかにするのか? それともアウグスターナの地下の危険が君をむさぼりつくすのか? 著者 Craig Shackleton この製品は1~5レベルのキャラクター(レベル帯:1~2、4~5)のためにデザインされたパスファインダー協会シナリオである。このシナリオはパスファインダー協会加盟プレイを遊ぶためにデザインされているが、いかなるワールドで使用するのにも簡単に改変できる。このシナリオはOpen Game License(OGL)が適用され、世界でもっとも人気のあるファンタジー・ロールプレイング・ゲームの3.5版の使用が適している。 カテゴリ:Pathfinder Society Scenario │ 製品リスト
https://w.atwiki.jp/dtlog/pages/69.html
DTam DT Autonomic Machinery DTコンピュータ搭載の自立型ロボットの総称。無人兵器など概して戦闘用のものが多いが、人語を解するなどインターフェイスは充実している。
https://w.atwiki.jp/801films/pages/64.html
Spartacus - Blood and Sand (2010) Spartacus - Gods of the Arena (2011) (この項、漸次修正・加筆予定) tag index - / -
https://w.atwiki.jp/hosei-el/pages/38.html
#include stdio.h #include stdlib.h #include string.h /* シンボル・エントリ数の定義 */ #define ENTRIE 255 /* エントリ数の定義 */ /* メモリ・エントリ数の定義 */ #define ADDR 255 /* エントリ数の定義 */ /* ID用エントリ位置の定義 */ #define Locate_of_OS 100 /* SVC位置の定義 */ #define Locate_of_ID 110 /* ID位置の定義 */ /* 命令定義 */ /* Data Transfer Instructions (need operand) */ #define LDA 100 #define LDX 101 #define LDS 102 #define LDF 103 #define STA 104 #define STX 105 #define STS 106 #define STF 107 #define PSH 108 #define POP 109 #define CLR 110 #define SET 111 /* Arithmetic Instructions (need operand) */ #define ADA 112 #define ADX 113 #define ADS 114 #define ADF 115 #define SBA 116 #define SBX 117 #define SBS 118 #define SBF 119 #define MUL 120 #define DIV 121 #define MOD 122 #define INC 123 #define DEC 124 #define NEG 125 /* Comparison Instructions (need operand) */ #define CMA 126 #define CMX 127 #define CMS 128 #define CMF 129 #define TST 130 /* Logical Instructions (need operand) */ #define AND 131 #define OR 132 #define XOR 133 #define COM 134 /* Jump Instructions (need operand) */ #define JMP 135 #define JSR 136 #define INT 137 #define JEQ 138 #define JNE 139 #define JLT 140 #define JGE 141 #define JLE 142 #define JGT 143 #define JOV 144 #define JNO 145 /* Character Instructions (need operad) */ #define LDC 146 #define STC 147 /* Specialized Looping Instructions */ #define AOC 148 #define SOJ 149 /* Subroutine Entry and Exit Instructions */ #define BGN 150 #define FIN 151 /* I/O Instructions */ #define INB 152 #define OUTB 153 #define INW 154 #define OUTW 155 /* Data Transfer Instructions (don t need operand) */ #define TAX 160 #define TAS 161 #define TAF 162 #define TXA 163 #define TXS 164 #define TXF 165 #define TSA 166 #define TSX 167 #define TSF 168 #define TFA 169 #define TFX 170 #define TFS 171 #define PSHA 172 #define PSHX 173 #define PSHF 174 #define POPA 175 #define POPX 176 #define POPF 177 /* Arithmetic Instructions (don t need operand) */ #define NEGA 178 /* Logical Instructions (don t need operand) */ #define COMA 179 #define SHRA 180 #define SHLA 181 #define RTRA 182 #define RTLA 183 #define RROA 184 #define RLOA 185 #define ASHA 186 /* Jump Instructions (don t need operand) */ #define RTN 187 #define IRTN 188 /* Miscellaneous Instructions */ #define SOV 189 #define COV 190 #define SEQ 191 #define CEQ 192 #define SLT 193 #define CLT 194 #define SIE 195 #define CIE 196 #define NOP 197 #define HLT 198 /* Assembler order */ #define EQU 200 #define WORD 201 #define BLKW 202 #define END 203 #define CHAR 204 /* アドレッシング・モードの定義 */ #define SH 250 /* ♯ */ #define PL 251 /* + */ #define AS 252 /* * */ #define AN 253 /* & */ #define EX 254 /* ! */ /* その他の定義 */ #define SP 260 /* 空白 */ #define RET 261 /* リターン・コード */ #define KORON 262 /* コロン */ #define SEMI 263 /* セミコロン */ #define KOMMA 264 /* カンマ */ #define DOT 265 /* ドット */ #define ID 266 /* 識別子 */ #define NUM 267 /* 数値 */ #define HEX 268 /* 16進数 */ #define EXPR 269 /* 数式 */ #define MI 270 /* - */ #define DI 271 /* / */ #define ATMARK 272 /* @ */ #define SQ 273 /* ’ */ #define LETTER 274 /* 文字 */ /* エラーの定義 */ #define ERR 300 /* リストファイル作成用の定義 */ #define STR 10 #define CODE 11 #define OPR 12 #define NO_OP 13 #define WITH_OP 14 void assemble(char *); /* アセンブル・ルーチン */ void initial(char); /* 初期化ルーチン */ void syntax(char); /* 構文解析ルーチン */ int lexical(void); /* 字句解析ルーチン */ int lookup(void); /* 単語検索ルーチン */ void install(void); /* ID挿入ルーチン */ void list(char); /* routine of list */ void stmt(char,char); /* routine of stmt */ void w_op(char); /* routine of w_op */ void no_op(char); /* routine of no_op */ void a_equ(char); /* routine of equ */ void a_end(char); /* routine of end */ void a_wd(char); /* routine of word */ void a_blkw(char); /* routine of blkw */ void a_ch(char); /* routine of char */ void formula(char,char); /* routine of formula */ char factor(char,char); /* routine of factor */ void frest(char,char); /* routine of frest */ void def_adr(char); /* routine of define address */ void def_var(void); /* routine of define variable */ void mode(char); /* routine of addressing mode */ void opr(char); /* routine of operand */ void negative(char,int); /* routine of negative */ void dws(void); /* routine of delete ws */ void omit(char); /* オミット・ルーチン */ void adr_check(char,int); /* アドレス・チェック・ルーチン */ void error(char); /* エラー処理ルーチン */ void make_filename(char *,char); /* ファイル名生成ルーチン */ void make_list(int,int); /* リスト作成ルーチン */ void write_list(char,char); /* リスト書き出しルーチン */ void write_obj(void); /* オブジェクト書き出しルーチン */ char err, /* エラーフラグ */ Alloc_Mem, /* メモリ割付フラグ */ Alloc_op, /* 命令割付フラグ */ word[32], /* 単語用バッファ */ *wp; /* word用ポインタ */ int nexttoken, /* 次トークン */ line, /* 行番号 */ adr, /* メモリ・アドレス */ adr_width, /* アドレス幅 */ source, /* 演算ソース */ calc_result, /* 演算結果 */ *code, /* binary用ポインタ */ binary[4096]; /* 出力コード */ FILE *ifile, /* 入力ファイル用ポインタ */ *ofile, /* 出力ファイル用ポインタ */ *replace; /* 位置保持用ポインタ */ struct symbol_table { /* シンボル・テーブル */ char valid, /* 有効ビット */ symbol[32]; /* シンボル */ int token, /* トークン */ attr; /* アトリビュート */ } entrie[ENTRIE], /* エントリ */ *new2, /* 新規ID用ポインタ */ *match; /* シンボル位置保持用ポインタ */ struct address { /* メモリ・アドレス */ int head, /* 先頭アドレス */ tail; /* 最終アドレス */ } mem[ADDR], /* メモリ・エントリ */ *address; /* アドレス用ポインタ */ /****************/ /* メイン */ /****************/ int main(int argc , char **argv) { if (argc!=2) { /* if string no. is not 2 */ printf("Usage cusp [filename]\n"); /* print usage */ printf("\n"); printf("filename cusp source file name\n"); exit(1); /* 強制終了 */ } if ((*argv[1]== - || *argv[1]== / ) /* if input string is help */ (*(argv[1]+1)== H || *(argv[1]+1)== h )) { printf("Usage cusp [filename]\n"); /* print usage */ printf("\n"); printf("filename cusp source file name\n"); exit(1); /* 強制終了 */ } else { /* input sting is filename */ ifile=fopen(argv[1],"r"); /* open input file */ if (ifile==NULL) { /* if file pointer is NULL */ printf("No such file.\n"); /* print error */ printf("Please retry.\n"); exit(1); /* compulsory exit */ } } assemble(argv[1]); } /******************************/ /* アセンブル・ルーチン */ /******************************/ void assemble(char *file) { unsigned int i; /* variable initialization */ initial(1); /* buffer initialize */ initial(2); /* table initialize */ printf("Now, assemble source program.\n\n"); /* execute first pass */ syntax(1); /* call first pass */ /* ID check */ for (i=Locate_of_ID; entrie[i] new2;i++) { if (entrie[i].valid==0) { printf(" ID %s is not defined.\n",entrie[i].symbol); err=1; } } if (err==1) { printf("\nSource program has error.\n"); printf("Check source program.\n"); fclose(ifile); exit(1); } else { for (i=Locate_of_ID; entrie[i] new2;i++) printf("symbol %s\tattr %d\n",entrie[i].symbol,entrie[i].attr); printf("\nAssemble was successfully completed.\n"); printf("Now, linking.\n"); initial(3); make_filename(file, l ); /* make list-filename */ syntax(2); /* call second pass */ fclose(ofile); /* close output-file */ fclose(ifile); /* close input-file */ make_filename(file, o ); /* make object-filename */ write_obj(); /* make object */ if (err==0) printf("\nLink was successfully completed.\n"); } } /************************/ /* 初期化ルーチン */ /************************/ void initial(char type) { int i,j; /* カウンタ */ switch (type) { case 1 /* ワードの初期化 */ for (i=0;i 32;i++) word[i]= \0 ; /* wordの初期化 */ wp=word; /* ポインタ移動 */ break; case 2 /* シンボル及び他変数の初期化 */ Alloc_Mem=0; /* メモリ割り付けフラグの初期化 */ Alloc_op=0; /* 命令割付フラグの初期化 */ line=1; /* 行番号の初期化 */ adr=10; /* アドレスの初期化 */ new2= entrie[Locate_of_ID]; /* ポインタの設定 */ match= entrie[Locate_of_OS]; /* ポインタの設定 */ address= mem[0]; for (i=0;i ENTRIE;i++) { /* エントリの初期化 */ entrie[i].valid=0; /* initialize valid */ entrie[i].attr=0; /* initialize attribute */ entrie[i].token=0; /* initialize token */ for (j=0;j 32;j++) /* initialize symbol */ entrie[i].symbol[j]= \0 ; } for (i=0;i Locate_of_ID;i++) /* 有効ビットの設定 */ entrie[i].valid=1; for (i=Locate_of_OS;i Locate_of_ID;i++) /* トークンの設定 */ entrie[i].token=ID; for (i=0;i ADDR;i++) { /* メモリの初期化 */ mem[i].head=0; /* initailize head */ mem[i].tail=0; /* initialize tail */ } /* テーブルの初期化 */ strcpy(entrie[0].symbol,"LDA"); entrie[0].token=LDA; entrie[0].attr=0x000000; strcpy(entrie[1].symbol,"LDX"); entrie[1].token=LDX; entrie[1].attr=0x010000; strcpy(entrie[2].symbol,"LDS"); entrie[2].token=LDS; entrie[2].attr=0x020000; strcpy(entrie[3].symbol,"LDF"); entrie[3].token=103; entrie[3].attr=0x030000; strcpy(entrie[4].symbol,"STA"); entrie[4].token=104; entrie[4].attr=0x040000; strcpy(entrie[5].symbol,"STX"); entrie[5].token=105; entrie[5].attr=0x050000; strcpy(entrie[6].symbol,"STS"); entrie[6].token=106; entrie[6].attr=0x060000; strcpy(entrie[7].symbol,"STF"); entrie[7].token=107; entrie[7].attr=0x070000; strcpy(entrie[8].symbol,"PSH"); entrie[8].token=108; entrie[8].attr=0x080000; strcpy(entrie[9].symbol,"POP"); entrie[9].token=109; entrie[9].attr=0x090000; strcpy(entrie[10].symbol,"CLR"); entrie[10].token=110; entrie[10].attr=0x0a0000; strcpy(entrie[11].symbol,"SET"); entrie[11].token=111; entrie[11].attr=0x0b0000; strcpy(entrie[12].symbol,"ADA"); entrie[12].token=112; entrie[12].attr=0x100000; strcpy(entrie[13].symbol,"ADX"); entrie[13].token=113; entrie[13].attr=0x110000; strcpy(entrie[14].symbol,"ADS"); entrie[14].token=114; entrie[14].attr=0x120000; strcpy(entrie[15].symbol,"ADF"); entrie[15].token=115; entrie[15].attr=0x130000; strcpy(entrie[16].symbol,"SBA"); entrie[16].token=116; entrie[16].attr=0x140000; strcpy(entrie[17].symbol,"SBX"); entrie[17].token=117; entrie[17].attr=0x150000; strcpy(entrie[18].symbol,"SBS"); entrie[18].token=118; entrie[18].attr=0x160000; strcpy(entrie[19].symbol,"SBF"); entrie[19].token=119; entrie[19].attr=0x170000; strcpy(entrie[20].symbol,"MUL"); entrie[20].token=120; entrie[20].attr=0x180000; strcpy(entrie[21].symbol,"DIV"); entrie[21].token=121; entrie[21].attr=0x190000; strcpy(entrie[22].symbol,"MOD"); entrie[22].token=122; entrie[22].attr=0x1a0000; strcpy(entrie[23].symbol,"INC"); entrie[23].token=123; entrie[23].attr=0x1b0000; strcpy(entrie[24].symbol,"DEC"); entrie[24].token=124; entrie[24].attr=0x1c0000; strcpy(entrie[25].symbol,"NEG"); entrie[25].token=125; entrie[25].attr=0x1d0000; strcpy(entrie[26].symbol,"CMA"); entrie[26].token=126; entrie[26].attr=0x200000; strcpy(entrie[27].symbol,"CMX"); entrie[27].token=127; entrie[27].attr=0x210000; strcpy(entrie[28].symbol,"CMS"); entrie[28].token=128; entrie[28].attr=0x220000; strcpy(entrie[29].symbol,"CMF"); entrie[29].token=129; entrie[29].attr=0x230000; strcpy(entrie[30].symbol,"TST"); entrie[30].token=130; entrie[30].attr=0x240000; strcpy(entrie[31].symbol,"AND"); entrie[31].token=131; entrie[31].attr=0x300000; strcpy(entrie[32].symbol,"OR"); entrie[32].token=132; entrie[32].attr=0x310000; strcpy(entrie[33].symbol,"XOR"); entrie[33].token=133; entrie[33].attr=0x320000; strcpy(entrie[34].symbol,"COM"); entrie[34].token=134; entrie[34].attr=0x330000; strcpy(entrie[35].symbol,"JMP"); entrie[35].token=135; entrie[35].attr=0x400000; strcpy(entrie[36].symbol,"JSR"); entrie[36].token=136; entrie[36].attr=0x410000; strcpy(entrie[37].symbol,"INT"); entrie[37].token=137; entrie[37].attr=0x420000; strcpy(entrie[38].symbol,"JEQ"); entrie[38].token=138; entrie[38].attr=0x480000; strcpy(entrie[39].symbol,"JNE"); entrie[39].token=139; entrie[39].attr=0x490000; strcpy(entrie[40].symbol,"JLT"); entrie[40].token=140; entrie[40].attr=0x4a0000; strcpy(entrie[41].symbol,"JGE"); entrie[41].token=141; entrie[41].attr=0x4b0000; strcpy(entrie[42].symbol,"JLE"); entrie[42].token=142; entrie[42].attr=0x4c0000; strcpy(entrie[43].symbol,"JGT"); entrie[43].token=143; entrie[43].attr=0x4d0000; strcpy(entrie[44].symbol,"JOV"); entrie[44].token=144; entrie[44].attr=0x4e0000; strcpy(entrie[45].symbol,"JNO"); entrie[45].token=145; entrie[45].attr=0x4f0000; strcpy(entrie[46].symbol,"LDC"); entrie[46].token=146; entrie[46].attr=0x500000; strcpy(entrie[47].symbol,"STC"); entrie[47].token=147; entrie[47].attr=0x510000; strcpy(entrie[48].symbol,"AOC"); entrie[48].token=148; entrie[48].attr=0x600000; strcpy(entrie[49].symbol,"SOJ"); entrie[49].token=149; entrie[49].attr=0x610000; strcpy(entrie[50].symbol,"BGN"); entrie[50].token=150; entrie[50].attr=0x680000; strcpy(entrie[51].symbol,"FIN"); entrie[51].token=151; entrie[51].attr=0x690000; strcpy(entrie[52].symbol,"INB"); entrie[52].token=152; entrie[52].attr=0x700000; strcpy(entrie[53].symbol,"OUTB"); entrie[53].token=153; entrie[53].attr=0x710000; strcpy(entrie[54].symbol,"INW"); entrie[54].token=154; entrie[54].attr=0x720000; strcpy(entrie[55].symbol,"OUTW"); entrie[55].token=155; entrie[55].attr=0x730000; strcpy(entrie[56].symbol,"TAX"); entrie[56].token=160; entrie[56].attr=0xfff000; strcpy(entrie[57].symbol,"TAS"); entrie[57].token=161; entrie[57].attr=0xfff001; strcpy(entrie[58].symbol,"TAF"); entrie[58].token=162; entrie[58].attr=0xfff002; strcpy(entrie[59].symbol,"TXA"); entrie[59].token=163; entrie[59].attr=0xfff003; strcpy(entrie[60].symbol,"TXS"); entrie[60].token=164; entrie[60].attr=0xfff004; strcpy(entrie[61].symbol,"TXF"); entrie[61].token=165; entrie[61].attr=0xfff005; strcpy(entrie[62].symbol,"TSA"); entrie[62].token=166; entrie[62].attr=0xfff006; strcpy(entrie[63].symbol,"TSX"); entrie[63].token=167; entrie[63].attr=0xfff007; strcpy(entrie[64].symbol,"TSF"); entrie[64].token=168; entrie[64].attr=0xfff008; strcpy(entrie[65].symbol,"TFA"); entrie[65].token=169; entrie[65].attr=0xfff009; strcpy(entrie[66].symbol,"TFX"); entrie[66].token=170; entrie[66].attr=0xfff00a; strcpy(entrie[67].symbol,"TFS"); entrie[67].token=171; entrie[67].attr=0xfff00b; strcpy(entrie[68].symbol,"PSHA"); entrie[68].token=172; entrie[68].attr=0xfff010; strcpy(entrie[69].symbol,"PSHX"); entrie[69].token=173; entrie[69].attr=0xfff011; strcpy(entrie[70].symbol,"PSHF"); entrie[70].token=174; entrie[70].attr=0xfff012; strcpy(entrie[71].symbol,"POPA"); entrie[71].token=175; entrie[71].attr=0xfff013; strcpy(entrie[72].symbol,"POPX"); entrie[72].token=176; entrie[72].attr=0xfff014; strcpy(entrie[73].symbol,"POPF"); entrie[73].token=177; entrie[73].attr=0xfff015; strcpy(entrie[74].symbol,"NEGA"); entrie[74].token=178; entrie[74].attr=0xfff020; strcpy(entrie[75].symbol,"COMA"); entrie[75].token=179; entrie[75].attr=0xfff021; strcpy(entrie[76].symbol,"SHRA"); entrie[76].token=180; entrie[76].attr=0xfff022; strcpy(entrie[77].symbol,"SHLA"); entrie[77].token=181; entrie[77].attr=0xfff023; strcpy(entrie[78].symbol,"RTRA"); entrie[78].token=182; entrie[78].attr=0xfff024; strcpy(entrie[79].symbol,"RTLA"); entrie[79].token=183; entrie[79].attr=0xfff025; strcpy(entrie[80].symbol,"RROA"); entrie[80].token=184; entrie[80].attr=0xfff026; strcpy(entrie[81].symbol,"RLOA"); entrie[81].token=185; entrie[81].attr=0xfff027; strcpy(entrie[82].symbol,"ASHA"); entrie[82].token=186; entrie[82].attr=0xfff028; strcpy(entrie[83].symbol,"RTN"); entrie[83].token=187; entrie[83].attr=0xfff040; strcpy(entrie[84].symbol,"IRTN"); entrie[84].token=188; entrie[84].attr=0xfff041; strcpy(entrie[85].symbol,"SOV"); entrie[85].token=189; entrie[85].attr=0xfff030; strcpy(entrie[86].symbol,"COV"); entrie[86].token=190; entrie[86].attr=0xfff031; strcpy(entrie[87].symbol,"SEQ"); entrie[87].token=191; entrie[87].attr=0xfff034; strcpy(entrie[88].symbol,"CEQ"); entrie[88].token=192; entrie[88].attr=0xfff035; strcpy(entrie[89].symbol,"SLT"); entrie[89].token=193; entrie[89].attr=0xfff036; strcpy(entrie[90].symbol,"CLT"); entrie[90].token=194; entrie[90].attr=0xfff037; strcpy(entrie[91].symbol,"SIE"); entrie[91].token=195; entrie[91].attr=0xfff032; strcpy(entrie[92].symbol,"CIE"); entrie[92].token=196; entrie[92].attr=0xfff033; strcpy(entrie[93].symbol,"NOP"); entrie[93].token=197; entrie[93].attr=0xfff034; strcpy(entrie[94].symbol,"HLT"); entrie[94].token=198; entrie[94].attr=0xffffff; /* アセンブラ指令の登録 */ strcpy(entrie[95].symbol,".EQU"); entrie[95].token=200; strcpy(entrie[96].symbol,".WORD"); entrie[96].token=201; strcpy(entrie[97].symbol,".BLKW"); entrie[97].token=202; strcpy(entrie[98].symbol,".END"); entrie[98].token=203; strcpy(entrie[99].symbol,".CHAR"); entrie[99].token=204; /* 予約語の登録 */ strcpy(entrie[100].symbol,"GET_NUM"); entrie[100].attr=0xe01; strcpy(entrie[101].symbol,"PUT_NUM"); entrie[101].attr=0xe00; strcpy(entrie[102].symbol,"PUT_NUM2"); entrie[102].attr=0xe07; strcpy(entrie[103].symbol,"GET_STR"); entrie[103].attr=0xe04; strcpy(entrie[104].symbol,"PUT_STR"); entrie[104].attr=0xe05; strcpy(entrie[105].symbol,"PUT_CHR"); entrie[105].attr=0xe08; strcpy(entrie[106].symbol,"PUT_NL"); entrie[106].attr=0xe06; strcpy(entrie[107].symbol,"TO_STR"); entrie[107].attr=0xe02; strcpy(entrie[108].symbol,"FRM_STR"); entrie[108].attr=0xe03; strcpy(entrie[109].symbol,"GET_CHR"); entrie[109].attr=0xe09; break; case 3 /* パス移行時の初期化 */ adr=0; /* initialize adr */ line=1; /* initialize line number */ for (i=0;i 4096;i++) binary[i]=0; /* initialize output code */ code=binary; /* set pointer */ address= mem[0]; /* initialize pointer */ fseek(ifile,0L,0); /* set file pointer */ break; } } /**************************/ /* 構文解析ルーチン */ /**************************/ void syntax(char pass) { while (1) { dws(); /* delete white space */ if (EOF==nexttoken) break; /* token is EOF break */ else list(pass); /* token is other list */ } } /*************************/ /* routine of list */ /*************************/ void list(char pass) { switch (pass) { case 1 /* first pass */ if (ID==nexttoken) { /* token is ID */ /* check id */ if ((strcmp(match- symbol,word))==0) { if (match- valid==1) error(1); /* valid=1 error */ else { match- valid=1; /* valid=1 */ match- attr=adr; /* attr=memory addr */ } } else { (new2-1)- valid=1; /* valid=1 */ (new2-1)- attr=adr; /* attr=memory addr */ } initial(1); /* get new2 token */ /* この辺があやしい*/ nexttoken=lexical(); if (KORON!=nexttoken) error(2); dws(); stmt(pass,1); /* call stmt */ } else if (RET==nexttoken) ; /* token is RET */ else stmt(pass,0); break; case 2 /* second pass */ if (ID==nexttoken) { /* if token is ID */ fprintf(ofile,"%4d %4d ",line,adr); /* write output-file */ write_list(STR,NULL); write_list( ,NULL); fprintf(ofile,"\t"); fseek(ifile,1L,1); /* move file pointer */ dws(); /* delete white space */ stmt(pass,1); /* call stmt */ } else if (RET==nexttoken) /* if token is return */ fprintf(ofile,"%4d\n",line-1); else /* if token is other */ stmt(pass,0); /* call stmt */ break; } } /*************************/ /* routine of stmt */ /*************************/ void stmt(char pass,char type) { switch (pass) { case 1 /* first pass */ if (nexttoken==EQU || nexttoken==END) { /* if token is equ or end */ if (type==1) error(5); /* if type is 1 */ if (nexttoken==EQU) a_equ(pass); /* if token is equ */ else a_end(pass); /* if token is end */ } else if (nexttoken==WORD) /* if token is word */ a_wd(pass); /* call word */ else if (nexttoken==BLKW) /* if token is blkw */ a_blkw(pass); /* call blkw */ else if (nexttoken==CHAR) /* if token is char */ a_ch(pass); /* call char */ else if (nexttoken =LDA nexttoken =OUTW) /* if token is WithOperand */ w_op(pass); /* call w_op */ else if (nexttoken =TAX nexttoken =HLT) /* ir token is NoOperand */ no_op(pass); /* call no_op */ else /* token is other else */ error(0); /* call error */ break; case 2 /* second pass */ if (EQU==nexttoken) { /* if token is equ */ fprintf(ofile,"%4d \t\t",line); /* write list-file */ write_list(STR,NULL); fprintf(ofile,"\t"); a_equ(pass); /* call a_equ */ } else if (WORD==nexttoken) { /* if token is word */ if (type==0) /* write list-file */ fprintf(ofile,"%4d %4d \t\t",line,adr); write_list(STR,NULL); fprintf(ofile,"\t"); a_wd(pass); /* call a_wd */ } else if (BLKW==nexttoken) { /* if token is blkw */ if (type==0) /* write list-file */ fprintf(ofile,"%4d %4d \t\t",line,adr); write_list(STR,NULL); fprintf(ofile,"\t"); a_blkw(pass); /* call a_blkw */ } else if (CHAR==nexttoken) { /* if token is char */ if (type==0) /* write list-file */ fprintf(ofile,"%4d %4d \t\t",line,adr); write_list(STR,NULL); fprintf(ofile,"\t"); a_ch(pass); /* call a_char */ } else if (END==nexttoken) { /* if token is end */ fprintf(ofile,"%4d \t\t",line); /* write list-file */ write_list(STR,NULL); fprintf(ofile,"\n"); a_end(pass); /* call a_end */ } else if (nexttoken =LDA nexttoken =OUTW) { if (type==0) fprintf(ofile,"%4d %4d \t\t",line,adr); w_op(pass); } else if (nexttoken =TAX nexttoken =HLT) { if (type==0) fprintf(ofile,"%4d %4d \t\t",line,adr); no_op(pass); } break; } } /************************/ /* routine of equ */ /************************/ void a_equ(char pass) { switch (pass) { case 1 /* first pass */ initial(1); /* initialize buffer */ nexttoken=lexical(); /* get token */ if (SP==nexttoken) { /* token is white space */ dws(); /* delete white space */ if (ATMARK==nexttoken) /* token is @ */ def_adr(pass); /* call define address */ else if (ID==nexttoken) { /* token is ID */ if (Alloc_Mem==0) error(30); def_var(); /* call define variable */ } else if (RET==nexttoken) { if (Alloc_Mem==0) error(30); error(17); } else { if (Alloc_Mem==0) error(30); error(18); omit(0); } } else if (RET==nexttoken) { /* token is RET */ error(9); /* call error process */ } else { error(10); /* call error process */ omit(0); /* token omit */ } break; case 2 /* second pass */ dws(); /* delete white space */ if (ATMARK==nexttoken) { /* if token is @ */ write_list( @ ,NULL); def_adr(pass); /* call def_adr */ } else if (ID==nexttoken) { /* if token is ID */ write_list(STR,NULL); dws(); /* delete white space */ write_list(STR,NULL); /* write list-file */ fprintf(ofile,"\t"); while (RET!=nexttoken) { dws(); /* delete white space */ write_list(STR,NULL); /* write list-file */ } fprintf(ofile,"\n"); } break; } } /************************/ /* routine of end */ /************************/ void a_end(char pass) { switch (pass) { case 1 /* first pass */ if (Alloc_Mem==0) error(30); omit(1); /* call omit */ break; case 2 /* second pass */ omit(0); /* omit token */ break; } } /*************************/ /* routine of word */ /*************************/ void a_wd(char pass) { int c; switch (pass) { case 1 /* first pass */ if (Alloc_Mem==0) error(30); else Alloc_op=1; initial(1); /* initialize buffer */ nexttoken=lexical(); /* get token */ if (RET==nexttoken) ; /* token is RET */ else if (SP==nexttoken) { /* token is white space */ dws(); /* delete white space */ if (RET==nexttoken) ; else if (ID==nexttoken || NUM==nexttoken || HEX==nexttoken || SQ==nexttoken) { formula(1,0); /* call formula */ omit(1); } else if (MI==nexttoken) /* if token is - */ negative(pass,WORD); /* call negative */ else { error(10); /* call error process */ omit(0); /* call omit */ } } else { /* token is not white space */ error(10); /* call error process */ omit(0); /* call omit */ } adr++; /* address increment */ adr_check(0,1); /* address check */ break; case 2 /* second pass */ dws(); /* delete white space */ if (RET==nexttoken) { /* token is return */ *code=0; /* data substitution */ make_list(WORD,NULL); /* call make_list */ code++; /* pointer increment */ } else if (NUM==nexttoken || HEX==nexttoken || ID==nexttoken || SQ==nexttoken) { /* token is ID,number,hex, */ formula(2,1); /* call formula */ if ((calc_result 0xff000000)!=0 (calc_result 0xff000000)!=0xff000000) /* result check */ error(50); *code=calc_result; /* data substitution */ make_list(WORD,NULL); *code =0x00ffffff; /* masking */ code++; /* pointer increment */ omit(0); /* omit token */ } else if (MI==nexttoken) /* token is - */ negative(pass,WORD); /* call negative */ adr++; /* address increment */ break; } } /*************************/ /* routine of blkw */ /*************************/ void a_blkw(char pass) { int i, /* カウンタ */ dat; /* データ */ switch (pass) { case 1 /* first pass */ if (Alloc_Mem==0) error(30); else Alloc_op=1; initial(1); /* initialize buffer */ nexttoken=lexical(); /* get token */ if (SP==nexttoken) { /* token is white space */ dws(); /* delete white space */ if (ID==nexttoken || NUM==nexttoken || HEX==nexttoken || SQ==nexttoken) { formula(pass,1); /* call formula */ if ((calc_result 0xfffff000)!=0) /* size check */ error(12); else adr_width=calc_result; /* data substitution */ if (RET==nexttoken) ; /* token is ret */ else if (KOMMA==nexttoken) { /* token is , */ dws(); /* delete white space */ if (ID==nexttoken || NUM==nexttoken || HEX==nexttoken || SQ==nexttoken) { formula(pass,0); /* call formula */ omit(1); } else if (MI==nexttoken) /* if token is - */ negative(pass,BLKW); /* call negative */ else if (RET==nexttoken) /* if token is return */ error(9); /* call error */ else { /* if token is other */ error(10); /* call error */ omit(0); /* token omit */ } } else if (SP==nexttoken) { /* token is white space */ dws(); /* delete white space */ if (RET==nexttoken) ; /* token is ret */ else if (KOMMA==nexttoken) { /* token is , */ dws(); /* delete white space */ if (ID==nexttoken || NUM==nexttoken || HEX==nexttoken || SQ==nexttoken) { formula(pass,0); /* call formula */ omit(1); /* omit token */ } else if (MI==nexttoken) /* if token is - */ negative(pass,BLKW); /* call negative */ else if (RET==nexttoken) /* if token is return */ error(9); /* call error */ else { /* if token is other */ error(10); /* call error */ omit(0); /* omit token */ } } else { error(10); /* call error process */ omit(0); /* omit token */ } } } else if (RET==nexttoken) /* if token is return */ error(9); /* call error */ else { /* token is other code */ error(10); /* call error process */ omit(0); /* token omit */ } } else if (RET==nexttoken) error(9); else { /* token is other code */ error(10); /* call error process */ omit(0); /* call omit */ } adr+=adr_width; /* calculation address */ adr_check(1,adr_width); /* address check */ break; case 2 /* second pass */ dws(); /* delete white space */ formula(pass,1); /* call formula */ adr_width=calc_result; /* data substitution */ if (RET==nexttoken) { /* token is return */ for (i=0;i adr_width;i++) { *code=0; make_list(BLKW,i); code++; adr++; } } else if (KOMMA==nexttoken) { /* token is , */ write_list(STR,NULL); fprintf(ofile,"\t"); dws(); /* delete white space */ if (NUM==nexttoken || HEX==nexttoken || ID==nexttoken || SQ==nexttoken) { /* token is number,hex,id, */ formula(2,1); /* call formula */ if ((calc_result 0xff000000)!=0 (calc_result 0xff000000)!=0xff000000) error (50); for (i=0;i adr_width;i++) { *code=calc_result; make_list(BLKW,i); *code =0x00ffffff; code++; adr++; } } else /* token is other */ negative(pass,BLKW); /* call negative */ } else { /* token is space */ dws(); /* delete white space */ if (RET==nexttoken) { /* token is return */ for (i=0;i adr_width;i++) { *code=0; make_list(BLKW,i); code++; adr++; } } else if (KOMMA==nexttoken) { /* token is , */ write_list(STR,NULL); fprintf(ofile,"\t"); dws(); /* delete white space */ if (NUM==nexttoken || HEX==nexttoken || ID==nexttoken || SQ==nexttoken) { /* token is number,hex,id, */ formula(2,1); /* call formula */ if ((calc_result 0xff000000)!=0 (calc_result 0xff000000)!=0xff000000) error (50); for (i=0;i adr_width;i++) { *code=calc_result; /* data substitution */ make_list(BLKW,i); *code =0x00ffffff; code++; adr++; } } else /* token is other */ negative(pass,BLKW); /* call negative */ } } break; } } /*************************/ /* routine of char */ /*************************/ void a_ch(char pass) { char i, flag; int string_length, c; string_length=0; switch (pass) { case 1 /* first pass */ if (Alloc_Mem==0) error(30); else Alloc_op=1; initial(1); /* get token */ nexttoken=lexical(); if (SP==nexttoken) { /* token is white space */ dws(); /* delete white space */ if (SQ==nexttoken) { /* token is */ while (1) { /* loop */ c=getc(ifile); /* get character */ if (c== \ ) { /* if c is */ flag=0; /* flag off */ break; /* loop break */ } else if (c== \\ ) { /* if c is \ */ c=getc(ifile); /* get new2 character */ if (c== \n || c==EOF) { /* if c is return or EOF */ error(6); /* call error */ flag=1; /* flag on */ break; /* loop break */ } else /* c is other else */ string_length++; /* increment length */ } else if (c== \n || c==EOF) { /* if c is return or EOF */ error(6); /* call error */ flag=1; /* flag on */ break; /* loop break */ } else /* c is other else */ string_length++; } if (flag==0) { dws(); /* delete white space */ if (KOMMA==nexttoken) { /* token is , */ dws(); /* delete white space */ if (ID==nexttoken) { /* token is ID */ if ((strcmp(match- symbol,word))==0) { if (match- valid==1) { error(7); omit(0); } else { match- valid=1; match- attr=string_length; omit(1); } } else { (new2-1)- valid=1; (new2-1)- attr=string_length; omit(1); } } else if (RET==nexttoken) /* error */ error(9); /* call error process */ else { error(10); /* call error process */ omit(0); /* omit token */ } } else if (RET==nexttoken) ; else { error(10); /* call error process */ omit(0); /* token omit */ } } } else if (RET==nexttoken) /* token is return */ error(9); /* call error process */ else { error(10); /* call error process */ omit(0); /* omit token */ } } else if (RET==nexttoken) error(9); else { error(10); omit(0); } /* calculation address width */ if ((string_length%3)==0) adr_width=string_length/3; else adr_width=string_length/3+1; adr+=adr_width; /* calulate address */ adr_check(1,adr_width); /* address check */ break; case 2 /* second pass */ dws(); /* delete white space */ flag=0; /* set flag */ string_length=0; while (1) { if (string_length==0) flag|=0x02; else flag =0xfd; for (i=2;i =0;i--) { /* loop */ c=getc(ifile); /* get character */ if (c== \ ) { /* if c is */ flag|=0x01; /* flag on */ break; /* loop break */ } else if (c== \\ ) { /* if c is \ */ c=getc(ifile); /* get new2 character */ c =(i*8); /* chnage c */ *code|=c; string_length++; } else { /* c is other else */ c =(i*8); /* shift c */ *code|=c; /* calculation data */ string_length++; } } if ((flag 0x02)==0 *code!=0) fprintf(ofile," %4d \t\t\t",adr); make_list(CHAR,flag); code++; /* pointer increment */ adr++; /* address increment */ if ((flag 0x01)==1) { if ((string_length%3)==0) {code--; adr--;} break; } } break; } } /*************************/ /* routine of w_op */ /*************************/ void w_op(char pass) { switch (pass) { case 1 /* first pass */ if (Alloc_Mem==0) error(30); /* allocate check */ else Alloc_op=1; mode(pass); /* call mode */ adr++; /* address increment */ adr_check(0,1); /* address check */ break; case 2 /* second pass */ write_list(STR,NULL); *code|=match- attr; /* data substitution */ mode(pass); /* call mode */ make_list(WITH_OP,NULL); /* call make_list */ code++; /* pointer increment */ adr++; /* address increment */ break; } } /**************************/ /* routine of no_op */ /**************************/ void no_op(char pass) { switch (pass) { case 1 /* first pass */ if (Alloc_Mem==0) error(30); /* allocate check */ else Alloc_op=1; omit(1); /* token read */ adr++; /* address increment */ adr_check(0,1); /* address check */ break; case 2 /* second pass */ write_list(STR,NULL); *code|=match- attr; /* data substitution */ make_list(NO_OP,NULL); code++; /* pointer increment */ adr++; /* adress increment */ omit(0); /* omit token */ break; } } /***********************************/ /* routine of define address */ /***********************************/ void def_adr(char pass) { unsigned int i, /* カウンタ */ tmp; /* テンポラリ */ switch (pass) { case 1 /* first pass */ dws(); /* delete white space */ if (KOMMA==nexttoken) { /* token is , */ dws(); /* delete white space */ if (NUM==nexttoken) { /* token is number */ if (atoi(word) 0xfff) { error(13); omit(0); } else { if (Alloc_Mem==0) Alloc_Mem=1; if (address== mem[0]) { adr=atoi(word); /* address = number */ address- head=adr; /* head = adr */ address++; } else { adr=atoi(word); /* address = number */ if (Alloc_op==1) Alloc_op=0; else address--; for (i=0; mem[i] address;i++) { if (mem[i].head =adr mem[i].tail =adr) error(31); else if (adr =0xe00 adr =0xe08) error(31); else ; } address- head=adr; /* head = adr */ address++; /* address increment */ } omit(1); /* token omit */ } } else if (HEX==nexttoken) { /* token is hexadecimal */ if (word[4]!= \0 ) { /* digit is not fit */ error(14); omit(0); } else { if (Alloc_Mem==0) Alloc_Mem=1; if (address== mem[0]) { wp=word; /* address = number */ wp++; /* pointer increment */ sscanf(wp,"%x", adr); /* data read */ address- head=adr; /* head = adr */ address++; /* address increment */ } else { wp=word; /* address = number */ wp++; /* pointer increment */ sscanf(wp,"%x", adr); /* data read */ if (Alloc_op==1) Alloc_op=0; else address--; for (i=0; mem[i] address;i++) { if (mem[i].head =adr mem[i].tail =adr) error(31); else if (adr =0xe00 adr =0xe08) error(31); else ; } address- head=adr; /* head = adr */ address++; /* address increment */ } omit(1); /* token omit */ } } else if (RET==nexttoken) error(9); else { error(10); omit(0); } } else if (RET==nexttoken) /* token is return */ error(9); /* call error process */ else { error(10); /* call error process */ omit(0); /* token omit */ } break; case 2 /* second pass */ dws(); /* delete white space */ write_list(STR,NULL); /* write list-file */ fprintf(ofile,"\t"); dws(); /* delete white space */ if (NUM==nexttoken) { /* if token is number */ write_list(STR,NULL); /* write list-file */ fprintf(ofile,"\n"); code= binary[atoi(word)]; /* set location */ adr=atoi(word); /* define address */ } else { /* if token is hexadecimal */ write_list(STR,NULL); /* write list-file */ fprintf(ofile,"\n"); wp=word; /* set pointer */ wp++; /* pointer increment */ sscanf(wp,"%x", tmp); /* data read */ code= binary[tmp]; /* set location */ adr=tmp; /* define address */ } omit(0); break; } } /************************************/ /* routine of define variable */ /************************************/ void def_var(void) { char id[32]; int c; struct symbol_table *left; strcpy(id,word); /* string copy */ if ((strcmp(match- symbol,id))==0) { left=match; /* pointer set */ if (left- valid==1) error(7); /* ID valid → error */ } else { left=(new2-1); /* pointer set */ } dws(); /* delete white space */ if (KOMMA==nexttoken) { /* token is , */ dws(); /* delete white space */ if (ID==nexttoken || NUM==nexttoken /* token is ID,number,hex, */ || HEX==nexttoken || SQ==nexttoken) { formula(1,1); /* call formula */ if ((calc_result 0xff000000)!=0 (calc_result 0xff000000)!=0xff000000) { error(19); omit(0); } else { left- valid=1; /* valid on */ left- attr=calc_result; /* attr = result */ omit(1); /* read token */ } } else if (MI==nexttoken) { /* token is - */ initial(1); /* get new2 token */ nexttoken=lexical(); if (NUM==nexttoken) { /* token is number */ if (atoi(word) 0x800000) { /* number don t fit */ error(16); /* call error */ omit(0); /* token omit */ } else { /* number fit */ left- valid=1; /* valid on */ left- attr=-(atoi(word)); /* attr = number */ omit(1); /* read token */ } } else if (ID==nexttoken) { if ((strcmp(match- symbol,word))==0) { if (match- valid==0) { error(4); omit(0); } else { left- valid=1; left- attr=-match- attr; omit(1); } } else { if ((new2-1)- valid==0) { error(4); omit(0); } else { left- valid=1; left- attr=-match- attr; omit(1); } } } else if (RET==nexttoken) error(9); else { error(10); omit(0); } } else if (RET==nexttoken) /* token is return */ error(9); /* call error process */ else { error(10); /* call error process */ omit(0); /* token omit */ } } else if (RET==nexttoken) /* token is return */ error(9); /* call error process */ else { error(10); /* call error process */ omit(0); /* token omit */ } } /************************************/ /* routine of addressing mode */ /************************************/ void mode(char pass) { switch (pass) { case 1 /* first pass */ dws(); /* delete white space */ if (PL==nexttoken || SH==nexttoken || AS==nexttoken || AN==nexttoken) { dws(); /* delete white space */ if (EX==nexttoken) { dws(); /* delete white space */ opr(pass); /* call operand */ } else opr(pass); } else if (EX==nexttoken) { /* token is ! */ dws(); /* delete white space */ opr(pass); /* call operand */ } else opr(pass); break; case 2 /* second pass */ dws(); /* delete white space */ if (SH==nexttoken) { /* if token is # */ make_list(SH,NULL); dws(); /* delete white space */ if (EX==nexttoken) { /* if token is ! */ make_list(EX,NULL); *code|=(0x1 12); /* modify data */ dws(); /* delete white space */ opr(pass); /* call operand */ } else { /* else */ *code|=(0 12); /* modify data */ opr(pass); /* call operand */ } } else if (PL==nexttoken) { /* if token is + */ make_list(PL,NULL); /* call make_list */ dws(); /* delete white space */ if (EX==nexttoken) { /* if token is ! */ make_list(EX,NULL); *code|=(0x5 12); /* modify data */ dws(); /* delete white space */ opr(pass); /* call operand */ } else { /* else */ *code|=(0x4 12); /* modify data */ opr(pass); /* call operand */ } } else if (AS==nexttoken) { /* if token is * */ make_list(AS,NULL); dws(); /* delete white space */ if (EX==nexttoken) { /* if token is ! */ make_list(EX,NULL); *code|=(0x7 12); /* modify data */ dws(); /* delete white space */ opr(pass); /* call operand */ } else { /* else */ *code|=(0x6 12); /* modify data */ opr(pass); /* call operand */ } } else if (AN==nexttoken) { /* if token is */ make_list(AN,NULL); dws(); /* delete white space */ if (EX==nexttoken) { /* if token is ! */ make_list(EX,NULL); *code|=(0x9 12); /* modify data */ dws(); /* delete white space */ opr(pass); /* call operand */ } else { /* else */ *code|=(0x8 12); /* modify data */ opr(pass); /* call operand */ } } else if (EX==nexttoken) { /* if token is ! */ fprintf(ofile,"\t"); make_list(EX,NULL); *code|=(0x3 12); /* modify data */ dws(); /* delete white space */ opr(pass); /* call operand */ } else { fprintf(ofile,"\t"); *code|=(0x2 12); opr(pass); } break; } } /****************************/ /* routine of operand */ /****************************/ void opr(char pass) { int c, tmp; switch (pass) { case 1 /* first pass */ if (ID==nexttoken) omit(1); else if (NUM==nexttoken) { /* token is number */ if (atoi(word) 0x7ff) { /* number don t fit */ error(15); /* call error */ omit(0); /* omit token */ } else omit(1); } else if (HEX==nexttoken) { /* token is hexadecimal */ if (word[4]!= \0 ) { /* digit is not fit */ error(14); /* call error */ omit(0); /* omit token */ } else omit(1); } else if (SQ==nexttoken) { /* token is */ fseek(ifile,1L,1); /* fp increment */ c=getc(ifile); /* get new2 character */ /* character judgement */ if (c== \ ) omit(1); else if (c== \n ) error(10); else {error(10); omit(0);} } else if (MI==nexttoken) /* token is - */ negative(pass,OPR); /* call negative */ else if (RET==nexttoken) /* if token is return */ error(9); /* call error */ else { error(10); omit(0); } break; case 2 /* second pass */ if (ID==nexttoken) { /* if token is ID */ write_list(STR,NULL); if ((match- attr 0xfffff000)!=0 /* size check */ (match- attr 0xfffff000)!=0xfffff000) error(51); *code|=(match- attr 0x00000fff); /* modify data */ omit(0); /* omit token */ } else if (NUM==nexttoken) { /* if token is number */ write_list(STR,NULL); *code|=(atoi(word) 0x00000fff); /* modify data */ omit(0); /* omit token */ } else if (HEX==nexttoken) { /* if token is hexadecimal */ write_list(STR,NULL); wp=word; /* set pointer */ wp++; sscanf(wp,"%x", tmp); /* data read */ *code|=(tmp 0x00000fff); /* modify data */ omit(0); /* omit token */ } else if (SQ==nexttoken) { /* if token is */ write_list(STR,NULL); c=getc(ifile); /* get character */ write_list(c,NULL); fprintf(ofile,"\ "); *code|=(c 0x00000fff); /* modify data */ omit(0); /* omit token */ } else /* if token is - */ negative(pass,OPR); /* call negative */ break; } } /************************************/ /* routine of negative number */ /************************************/ void negative(char pass,int type) { int i, /* カウンタ */ tmp; /* テンポラリ */ switch (pass) { case 1 /* first pass */ initial(1); /* initialize buffer */ nexttoken=lexical(); /* get new2 token */ if (ID==nexttoken) /* if token is ID */ omit(1); /* omit token */ else if (NUM==nexttoken) { /* if token is number */ if (type==OPR) { /* if type is operand */ if (atoi(word) 0x800) { /* check result not correct */ error(16); /* call error */ omit(0); /* omit token */ } else /* check result correct */ omit(1); } else { /* if type is another */ if (atoi(word) 0x800000) { /* check result not correct */ error(16); /* call error */ omit(0); } else /* check result correct */ omit(1); } } else if (RET==nexttoken) /* if token is return */ error(9); /* call error */ else { /* token is other code */ error(10); /* call error process */ omit(0); /* call omit */ } break; case 2 /* second pass */ write_list(STR,NULL); initial(1); /* get new2 token */ nexttoken=lexical(); write_list(STR,NULL); if (ID==nexttoken) { /* token is ID */ if (type==WORD) { *code=-match- attr; make_list(WORD,NULL); *code =0x00ffffff; code++; } else if (type==OPR) { if ((match- attr 0xfffff000)!=0 /* size check */ (match- attr 0xfffff000)!=0xfffff000) error(51); tmp=-match- attr; *code|=(tmp 0x00000fff); } else if (type==BLKW) { for (i=0;i adr_width;i++) { *code=-match- attr; make_list(BLKW,i); *code =0x00ffffff; code++; adr++; } } } else { /* token is number */ if (type==WORD) { /* if type is word */ *code=-atoi(word); /* data substitution */ make_list(WORD,NULL); *code =0x00ffffff; /* masking */ code++; /* pointer increment */ } else if (type==OPR) { tmp=-atoi(word); /* read number */ *code|=(tmp 0x00000fff); /* modify data */ } else if (type==BLKW) { for (i=0;i adr_width;i++) { *code=-atoi(word); /* data substitution */ make_list(BLKW,i); *code =0x00ffffff; code++; adr++; } } } omit(0); /* omit token */ break; } } /****************************/ /* routine of formula */ /****************************/ void formula(char pass,char type) { char ret; ret=factor(pass,type); /* call factor */ calc_result=source; if (ret==0) frest(pass,type); /* call frest */ } /***************************/ /* routine of factor */ /***************************/ char factor(char pass,char type) { int c; if (ID==nexttoken) { /* token is ID */ if (pass==2) write_list(STR,NULL); /* if 2nd pass write list */ if (type==1) { if ((strcmp(match- symbol,word))==0) { if (match- valid==0) { /* ID is invalid */ error(4); /* call error */ omit(0); /* call omit */ return 1; } else { source=match- attr; return 0; } } else { if ((new2-1)- valid==0) { /* ID is invalid */ error(4); /* call error */ omit(0); /* call omit */ return 1; } else { source=(new2-1)- attr; return 0; } } } else return 0; } else if (NUM==nexttoken) { /* token is number */ if (atoi(word) 0x7fffff) { /* number don t fit */ error(15); /* call error */ return 1; /* return 1 */ } if (pass==2) /* if 2nd pass */ write_list(STR,NULL); /* write list-file */ if (type==1) source=atoi(word); /* source = number */ return 0; /* return 0 */ } else if (HEX==nexttoken) { /* token is hexadecimal */ if (word[7]!= \0 ) { /* size don t fit */ error(14); /* call error */ return 1; /* return 1 */ } if (pass==2) /* if 2nd pass */ write_list(STR,NULL); /* write list-file */ if (type==1) { wp=word; /* set pointer */ wp++; /* pointer increment */ sscanf(wp,"%x", source); /* source = hex */ if ((source 0x00800000)!=0) source|=0xff000000; } return 0; /* return 0 */ } else if (SQ==nexttoken) { /* token is */ if (type==1) { c=getc(ifile); /* character get */ source=c; /* data substitution */ if (pass==2) { /* if 2nd pass */ fprintf(ofile,"\ "); /* write list-file */ write_list(c,NULL); fprintf(ofile,"\ "); } } else fseek(ifile,1L,1); c=getc(ifile); /* character get */ /* character judgement */ if (c== \ ) return 0; else if (c== \n ) {error(10); return 1;} else {error(10); omit(0); return 1;} } else if (RET==nexttoken) { /* token is ret */ error(9); /* call error */ return 1; /* return 1 */ } else { error(10); /* call error */ omit(0); /* omit token */ return 1; /* return 1 */ } } /**************************/ /* routine of frest */ /**************************/ void frest(char pass,char type) { char ret; while (1) { initial(1); /* initialize buffer */ nexttoken=lexical(); /* get token */ if (PL==nexttoken) { /* token is + */ if (pass==2) write_list(STR,NULL); initial(1); /* initialize buffer */ nexttoken=lexical(); /* get token */ ret=factor(pass,type); /* call factor */ if (ret==1) break; if (type==1) calc_result+=source; } else if (MI==nexttoken) { /* token is - */ if (pass==2) write_list(STR,NULL); initial(1); /* initialize buffer */ nexttoken=lexical(); /* get token */ ret=factor(pass,type); /* call factor */ if (ret==1) break; if (type==1) calc_result-=source; } else if (AS==nexttoken) { /* token is * */ if (pass==2) write_list(STR,NULL); initial(1); /* initialize buffer */ nexttoken=lexical(); /* get token */ ret=factor(pass,type); /* call factor */ if (ret==1) break; if (type==1) calc_result*=source; } else if (DI==nexttoken) { /* token is / */ if (pass==2) write_list(STR,NULL); initial(1); /* initialize buffer */ nexttoken=lexical(); /* get token */ ret=factor(pass,type); /* call factor */ if (ret==1) break; if (type==1) calc_result/=source; } else break; } } /**************************************/ /* アドレス・チェック・ルーチン */ /**************************************/ void adr_check(char type,int width) { unsigned int i,j; /* カウンタ */ switch (type) { case 0 /* case of word,w_op,no_op */ if ((address-1)!= mem[0]) { for (i=0; mem[i] (address-1);i++) { if (mem[i].head =(adr-1) mem[i].tail =(adr-1)) error(32); } if ((adr-1) =0xe00 (adr-1) =0xe08) error(33); } break; case 1 /* case of blkw,char */ if ((address-1)!= mem[0]) { for (i=0; mem[i] (address-1);i++) { for (j=1;j =width;j++) { if (mem[i].head =(adr-j) mem[i].tail =(adr-j)) error(32); } } for (j=1;j =width;j++) { if ((adr-j) =0xe00 (adr-j) =0xe08) error(33); } } break; } (address-1)- tail=adr-1; } /**************************/ /* 字句解析ルーチン */ /**************************/ int lexical(void) { char state; /* 状態 */ int c, /* 文字取り込み用バッファ */ token; /* トークン */ state=0; /* initialize state */ replace=ifile; /* copy pointer */ while (1) { switch (state) { case 0 /* 初期状態 */ c=getc(ifile); /* 新規文字の取り込み */ if (c==EOF) /* c is EOF */ return EOF; /* data return */ else if (c== || c== \t ) /* c is space or tab */ return SP; /* data return */ else if (c== \r ) ; /* c is \CR */ else if (c== \n ) { /* c is return */ line++; /* 行番号の増加 */ return RET; /* RETのリターン */ } else if (c== , ) { /* c is KOMMA */ *wp=(char)c; return KOMMA; /* return KOMMA */ } /* c is ; */ else if (c== ; ) { while (1) { /* loop */ c=getc(ifile); /* get character */ if (c== \n ) { /* if c is return */ line++; /* increment line no. */ return RET; /* return data */ } else if (c==EOF) /* if c is EOF */ return EOF; /* return data */ else ; /* c is other else */ } } else if (c== # ) { /* c is # */ *wp=(char)c; return SH; /* ♯のリターン */ } else if (c== + ) { /* c is + */ *wp=(char)c; return PL; /* +のリターン */ } else if (c== * ) { /* c is * */ *wp=(char)c; return AS; /* *のリターン */ } else if (c== ) { /* c is */ *wp=(char)c; return AN; /* &のリターン */ } else if (c== ! ) { /* c is ! */ *wp=(char)c; return EX; /* !のリターン */ } else if (c== \ ) { /* c is */ *wp=(char)c; return SQ; /* ’のリターン */ } else if (c== - ) { /* c is - */ *wp=(char)c; /* copy character */ return MI; /* data return */ } else if (c== / ) { /* c is / */ *wp=(char)c; /* copy character */ return DI; /* data return */ } else if (c== ) { /* c is */ *wp=(char)c; /* copy character */ return KORON; /* data return */ } else if (c== @ ) { /* c is @ */ *wp=(char)c; /* copy character */ return ATMARK; /* data return */ } else if ((c = A c = Z ) || (c = a c = z )) { *wp=(char)c; /* 文字のコピー */ wp++; /* ポインタの移動 */ state=1; /* state=1 */ } else if (c = 0 c = 9 ) { /* c is number */ *wp=(char)c; /* 文字のコピー */ wp++; /* ポインタの移動 */ state=3; /* state=2 */ } else if (c== $ ) { /* c is dollar */ *wp=(char)c; /* 文字のコピー */ wp++; /* ポインタの移動 */ state=5; /* state=5 */ } else if (c== _ ) { /* c is underbar */ *wp=(char)c; /* 文字のコピー */ wp++; /* pointer increment */ state=1; /* change state */ } else if (c== . ) { /* c is dot */ *wp=(char)c; /* copy character */ wp++; /* pointer increment */ state=1; /* change state */ } /* c is other letter */ else { error(11); return ERR; } break; case 1 /* alphabet or underbar is appeared */ c=getc(ifile); /* 新規文字の取り込み */ if ((c = A c = Z ) || (c = a c = z )) { *wp=(char)c; /* 文字のコピー */ wp++; /* ポインタの移動 */ state=1; /* state=1 */ } else if (c = 0 c = 9 ) { *wp=(char)c; /* 文字のコピー */ wp++; /* ポインタの移動 */ state=1; /* state=1 */ } else if (c== _ ) { *wp=(char)c; wp++; state=1; } else { ungetc(c,ifile); /* 文字のリターン */ token=lookup(); /* 単語検索 */ return token; /* トークンのリターン */ } break; case 3 /* number is appeared */ c=getc(ifile); /* 新規文字の取り込み */ if (c = 0 c = 9 ) { *wp=(char)c; /* 文字のコピー */ wp++; /* ポインタの移動 */ state=3; /* state=3 */ } else { ungetc(c,ifile); /* 文字のリターン */ return NUM; /* 数字のリターン */ } break; case 5 /* dollar is appeared */ c=getc(ifile); /* 新規文字の取り込み */ if ((c = 0 c = 9 ) || (c = a c = f ) || (c = A c = F )) { *wp=(char)c; /* 文字のコピー */ wp++; /* ポインタの移動 */ state=5; /* state=5 */ } else { ungetc(c,ifile); /* 文字のリターン */ return HEX; /* HEXのリターン */ } break; } } } /**************************/ /* 単語検索ルーチン */ /**************************/ int lookup(void) { unsigned char i; /* カウンタ */ char buf[32], /* バッファ */ *bp; /* buf用ポインタ */ bp=buf; /* ポインタの移動 */ wp=word; /* 同上 */ for (i=0;i 32;i++) { if (*wp = a *wp = z ) /* if letter is lower */ *bp=*wp-0x20; /* 大文字へ変換 */ else *bp=*wp; /* letter is upper → copy */ wp++; /* ポインタの移動 */ bp++; /* 同上 */ } /* 命令の検索 */ for (i=0;i =Locate_of_OS-1;i++) { if ((strcmp(entrie[i].symbol,buf))==0) { match= entrie[i]; /* set pointer */ return entrie[i].token; /* return token */ } } /* IDの検索 */ for (i=Locate_of_OS;i ENTRIE;i++) { if ((strcmp(entrie[i].symbol,word))==0) { match= entrie[i]; /* set pointer */ return ID; /* return ID */ } } /* IDの登録 */ install(); /* IDの挿入 */ return ID; /* IDのリターン */ } /**************************/ /* ID挿入ルーチン */ /**************************/ void install(void) { strcpy(new2- symbol,word); /* string copy */ new2- token=ID; /* setup token */ new2++; /* move pointer */ } /**************************/ /* 空白除去ルーチン */ /**************************/ void dws(void) { initial(1); /* get token */ nexttoken=lexical(); while (SP==nexttoken) { initial(1); /* initialize word */ nexttoken=lexical(); /* get nexttoken */ } } /****************************/ /* オミット・ルーチン */ /****************************/ void omit(char type) { switch (type) { case 0 while (RET!=nexttoken) { initial(1); /* initialize word */ nexttoken=lexical(); /* get nexttoken */ if (EOF==nexttoken) break; } break; case 1 while (RET!=nexttoken) { initial(1); nexttoken=lexical(); if (SP==nexttoken) ; else if (RET==nexttoken) ; else if (EOF==nexttoken) break; else { error(10); omit(0); } } break; } } /****************************/ /* エラー処理ルーチン */ /****************************/ void error(char type) { switch (type) { case 0 printf("line %3d\toperation nothing.\n",line); omit(0); break; case 1 printf("line %3d\tlabel is overlapped.\n",line); break; case 2 printf("line %3d\tcolon is missing after label.\n",line); ifile=replace; break; case 3 printf("line %3d\tusing invalid order.\n",line); omit(0); break; case 4 printf("line %3d\tused ID is not defined.\n",line); break; case 5 printf("line %3d\tlabel is exist before equ or end .\n",line); break; case 6 printf("line %3d\tstring is not finished.\n",line); break; case 7 printf("line %3d\tdeclared ID is already used.\n",line); break; case 9 printf("line %3d\tsyntax error.\n",line-1); break; case 10 printf("line %3d\tsyntax error.\n",line); break; case 11 printf("line %3d\tprohibited character is used.\n",line); break; case 12 printf("line %3d\tdeclared memory size is not correct.\n",line); break; case 13 printf("line %3d\tdeclared memory address is too large.\n",line); break; case 14 printf("line %3d\ttoo many digits.\n",line); break; case 15 printf("line %3d\tnumber is too large.\n",line); break; case 16 printf("line %3d\tnumber is too small.\n",line); break; case 17 printf("line %3d\tdon t declare @ or ID.\n",line-1); break; case 18 printf("line %3d\tdon t declare @ or ID.\n",line); break; case 19 printf("line %3d\tdeclared number don t fit memory size.\n",line); break; case 30 printf("Fatal Error don t declare allocated memory address.\n"); fclose(ifile); exit(1); break; case 31 printf("line %3d\tFatal memory address is overlapped.\n",line); fclose(ifile); exit(1); break; case 32 printf("line %3d\tFatal memory address is overlapped.\n",line-1); fclose(ifile); exit(1); break; case 33 printf("line %3d\tFatal reservation memory address is using.\n",line-1); fclose(ifile); exit(1); break; case 50 printf("line %3d\tWarning calculation result is over size.\n",line); break; case 51 printf("line %3d\tWarning operand size is too large.\n",line); break; } err=1; } /********************************/ /* ファイル名生成ルーチン */ /********************************/ void make_filename(char *file,char type) { char obj[50], /* オブジェクト・ファイル名 */ *op; /* obj用ポインタ */ unsigned char i; /* カウンタ */ for (i=0;i 50;i++) obj[i]= \0 ; /* initialize obj */ op=obj; /* set pointer */ strcpy(op,file); /* string copy */ for (;*op!= \0 ;op++) { if (*op== . ) { for (;*op!= \0 ;op++) *op= \0 ; break; } } /* conbine file-name */ if (type== l ) strcat(obj,".lst"); else strcat(obj,".obj"); ofile=fopen(obj,"wt"); /* open output-file */ } /************************************/ /* リストファイル作成ルーチン */ /************************************/ void make_list(int type,int count) { int i, tmp; if (type==WITH_OP) { fprintf(ofile,"\t\t\t"); write_list(CODE,1); fprintf(ofile,"\n"); } else if (type==NO_OP) { /* if type is n_op */ fprintf(ofile,"\t\t\t\t"); /* write list-file */ write_list(CODE,3); fprintf(ofile,"\n"); } else if (type==BLKW) { /* if type is blkw */ if (count==0) { /* if count is 0 */ fprintf(ofile,"\t\t"); /* write list-file */ write_list(CODE,2); fprintf(ofile,"\n"); } else { /* count is not 0 */ fprintf(ofile," %4d \t\t\t\t\t\t",adr); write_list(CODE,2); /* write list-file */ fprintf(ofile,"\n"); } } else if (type==CHAR) { if (*code!=0) { for (i=16;i =0;i=i-8) { tmp=(*code i) 0x000000ff; if (tmp!=0) fprintf(ofile,"%c",tmp); } if ((count 0x01)==1) { dws(); if (RET!=nexttoken) { fprintf(ofile," "); write_list(STR,NULL); dws(); write_list(STR,NULL); fprintf(ofile,"\t\t"); omit(0); } else fprintf(ofile,"\t\t\t"); } else fprintf(ofile,"\t\t\t"); write_list(CODE,3); fprintf(ofile,"\n"); } else { dws(); if (RET!=nexttoken) { fprintf(ofile," \t\t\t\t"); write_list(STR,NULL); dws(); write_list(STR,NULL); fprintf(ofile,"\n"); omit(0); } } } else if (type==WORD) { /* if type is word */ fprintf(ofile,"\t\t\t"); /* write list-file */ write_list(CODE,2); fprintf(ofile,"\n"); } else if (type==EX) { /* if type is EX */ write_list(STR,NULL); fprintf(ofile," "); } else { write_list(STR,NULL); fprintf(ofile,"\t"); } } /****************************************/ /* リストファイル書き出しルーチン */ /* type 1 → 分割表示 */ /* type 2 → 10進表示 */ /* type 3 → 変更なし */ /****************************************/ void write_list(char ch,char type) { if (ch==STR) /* if ch is string */ fprintf(ofile,"%s",word); /* write word to list-file */ else if (ch==CODE) { /* if ch is code */ if (type==1) { /* if type = 1 */ fprintf(ofile,"%02x",*code 16); fprintf(ofile," | "); fprintf(ofile,"%x",(*code 12) 0x0000000f); fprintf(ofile," | "); fprintf(ofile,"%03x",*code 0x00000fff); } else if (type==2) /* if type = 2 */ fprintf(ofile,"%d",*code); /* write code to list-file */ else if (type==3) /* if type = 3 */ fprintf(ofile,"%06x",*code); /* write code to list-file */ } else /* if ch is other character */ fprintf(ofile,"%c",ch); /* write char to list-file */ } /**************************************/ /* オブジェクト書き出しルーチン */ /**************************************/ void write_obj(void) { int i, /* カウンタ */ last; /* 最終行 */ last=0; /* initialize last */ /* calculation last address */ for (i=0;i ADDR;i++) if (mem[i].tail last) last=mem[i].tail; fprintf(ofile,"%x\n",mem[0].head); /* make object file */ for (i=0;i =last;i++) fprintf(ofile,"%06x\n",binary[i]); fclose(ofile); }
https://w.atwiki.jp/cohstatsjp/pages/237.html
Infantry Tank Buster Heavy Infantry Contents 1 Tank Buster Heavy Infantry Veterancy 2 Tactics 3 History 4 Requires 4.1 Kampfgruppe Kompanie Upgrade 5 Built From 5.1 Kampfgruppe Kompanie 6 Can Construct 6.1 Logistik Kompanie 6.2 Kampfgruppe Kompanie 6.3 Panzer-Jager Kommand 6.4 Panzer-Support Kommand 7 Doctrinal Abilities 7.1 Road Blocks 7.2 Scorched Earth 7.3 Booby Trap Building 7.4 Booby Traps 7.5 Tank Awareness 7.6 Teller Mines 7.7 Double Infantry AT Efforts 8 Squad Abilities 8.1 Repair 8.2 Throw Anti Tank Grenade 8.3 Throw Incendiary Grenade 8.4 Advanced Repair 8.5 Sprint 9 Squad Upgrades 9.1 Field Craft 9.2 Increase Squad Sizes 9.3 Advanced Repair 9.4 Anti Tank Grenades 9.5 Incendiary Grenades 9.6 Group Zeal 9.7 Veteran Sergeant 10 Squad Weapons 10.1 Panzer Elite Kar98K 10.2 Panzer Elite Panzerschreck 10.3 Incendiary Grenade 10.4 Anti Tank Grenade 10.5 Booby Trap 10.6 Teller Mine Tank Buster Heavy Infantry Squad Size 3 Capture Rate 0.75 Sup Threshold 0.2 Health 165 Sight 35 Pin Threshold 0.65 Cost 255 Detection 7/0 Recovery Rate 0.007 Hotkey G Population 3 Time 25.5 Retreat Modifier 0.5 Target Type infantry_soldier Upkeep 6.0048 Reinforce Cost 0.53 Critical Type infantry Squad Slots 5 Reinforce Time 1 Tank Buster Heavy Infantry Veterancy [Expand][Hide] Received Damage Received Suppression Maximum Health Health Regeneration 0.95 0.85 1.1 3.36/min Accuracy Reload Cooldown Penetration 1.15 0.9 0.9 1.15 12 Vet-Exp Received Damage Received Suppression Maximum Health Health Regeneration 0.95 0.85 1.1 3.36/min Accuracy Reload Cooldown Penetration 1.15 0.9 0.9 1.15 26 Vet-Exp Received Damage Received Suppression Maximum Health Health Regeneration Received Accuracy 0.95 0.85 1.1 3.36/min 0.95 Accuracy Reload Cooldown Penetration 1.15 0.9 0.9 1.15 40 Vet-Exp Tactics A Panzerschreck in an enemy s hands should be prevented at all costs. If a Panzershreck is dropped by your squad, make every effort to retrieve it. Tank Busters can be produced through the HQ also, it is a good idea on munitions heavy maps to build standard Panzer Grenadier s and use the Panzerschreck upgrade to save 105 manpower! When using the Tank Destroyer doctrine one of the end tree abilities gives your Tank Buster squads an extra panzershrek. History Panzergrenadiers were the infantry assigned to Panzer and Panzergrenadier divisions, and were the bulk of the fighting force in those formations. Transported either in trucks or SdKfz 251/1 half-tracks, the role of the Panzergrenadier was to support the tanks when in offense, or defend ground recently secured by the tanks. Their squads were armed with twice as many MG34 or MG42 light machine-guns than the regular Grenadiers, and their support weapons were nearly all towed or mounted in vehicles. The Panzergrenadiers in Company of Heroes appear to be from the Panzeraufklärungsabteilung (Mechanized Reconnaissance Battalion) of a Panzer or Panzergrenadier division, due to the SdKfz 250 light half-tracks they are using, and the reference to Spähtrupp in their speech (Spähtrupp means scout patrol). Requires Kampfgruppe Kompanie Upgrade [Expand][Hide] Cost 16035 Time 40 Hotkey U Effects Allows Grenadier Tank Buster squads to be built and unlocks the panzerschreck upgrade on Panzer Grenadier squads. ESee Upgrade Kampfgruppe Kompanie Upgrade for details. Built From Kampfgruppe Kompanie [Expand][Hide] Health 1000 Target Type building Cost 22020 Critical Type building Time 115 Hotkey K Effects Makes available the Infantry Halftrack, Mortar Halftrack, and Tank Buster Squads. Available upgrades can increase territory capture rate of Infantry squads and improve their repair skills. ESee Structure Kampfgruppe Kompanie for details. Can Construct Logistik Kompanie [Expand][Hide] Health 1000 Target Type building Cost 22020 Critical Type building Time 115 Hotkey L Effects Makes available the Scout Car, Munitions Halftrack and 250/3 Funkwagen Vampire Halftrack. Upgrades will equip squads with Anti Tank Grenades and increase the size of infantry squads. ESee Structure Logistik Kompanie for details. Kampfgruppe Kompanie [Expand][Hide] Health 1000 Target Type building Cost 22020 Critical Type building Time 115 Hotkey K Effects Makes available the Infantry Halftrack, Mortar Halftrack, and Tank Buster Squads. Available upgrades can increase territory capture rate of Infantry squads and improve their repair skills. ESee Structure Kampfgruppe Kompanie for details. Panzer-Jager Kommand [Expand][Hide] Health 1000 Target Type building Cost 22030 Critical Type building Time 115 Hotkey J Effects Initially produces Assault Grenadiers and a 20mm Armored Car. Can be upgraded to produce the Marder III Tank Hunter. Infantry can be improved via the Group Zeal upgrade. ESee Structure Panzer-Jager Kommand for details. Panzer-Support Kommand [Expand][Hide] Health 1000 Target Type building Cost 22030 Critical Type building Time 115 Hotkey S Effects Initially produces the 250/10 Light Anti Tank Halftrack and Bergetiger Repair and Recovery vehicle. Can be upgraded to produce the Panzer IV Infantry Support Tank. A Veteran Sergeant makes squads tougher, harder to suppress, and gain experience more rapidly. ESee Structure Panzer-Support Kommand for details. Doctrinal Abilities Road Blocks [Expand][Hide] Health 750 Target Type defenses Cost Critical Type defenses Time 20 Hotkey R Effects Road Blocks are extremely tough piles of junk material scraped together to block off an area. Roadblocks must be destroyed and cannot be crushed by any tank. ESee Structure Road Blocks for details. Scorched Earth [Expand][Hide] Cost Activation targeted Duration _ Target tp_entity Recharge 0 Hotkey C Effects Disable a Strategic Point so it cannot be captured. ESee Ability Scorched Earth for details. Booby Trap Building [Expand][Hide] Cost Activation targeted Duration _ Target tp_any Recharge 10 Hotkey Effects Order this squad to prepare the target building with booby traps that will be triggered by enemy units. ESee Ability Booby Trap Building for details. Booby Traps [Expand][Hide] Cost Activation targeted Duration _ Target tp_any Recharge 25 Hotkey Y Effects Wire strategic points and ambient buildings to explode when enemies begin capturing point, or enter building. ESee Ability Booby Traps for details. Tank Awareness [Expand][Hide] Cost 1 Time Hotkey Effects Panzer Elite infantry use their improved battlefield skills to detect enemy tanks at ranges beyond which they can see. ESee Upgrade Tank Awareness for details. Teller Mines [Expand][Hide] Cost 1 Time Hotkey Effects Panzer Elite infantry can deploy Teller Mines. These weapons require great mass to trigger, meaning only vehicles will cause the mine to explode. ESee Upgrade Teller Mines for details. Double Infantry AT Efforts [Expand][Hide] Cost 3 Time Hotkey Effects Panzerschreck upgrades now provide two Panzerschrecks, and AT grenade abilities now throw two AT Grenades. ESee Upgrade Double Infantry AT Efforts for details. Squad Abilities Repair [Expand][Hide] Cost Activation targeted Duration 0 Target tp_entity_and_squad_entity Recharge 0 Hotkey E Effects Repair a Structure or Vehicle for a nominal Resource cost. ESee Ability Repair for details. Throw Anti Tank Grenade [Expand][Hide] Cost 20 Activation targeted Duration _ Target tp_any Recharge 240 Hotkey K Effects Throw an effective Anti Tank Grenade. This Grenade is not effective against infantry units in cover. ESee Ability Throw Anti Tank Grenade for details. Throw Incendiary Grenade [Expand][Hide] Cost 15 Activation targeted Duration _ Target tp_any Recharge 240 Hotkey N Effects The squad will throw a chemical Incendiary Grenade that will burn the selected area for a period of time. ESee Ability Throw Incendiary Grenade for details. Advanced Repair [Expand][Hide] Cost Activation targeted Duration 0 Target tp_entity_and_squad_entity Recharge 0 Hotkey E Effects Repair a Structure or Vehicle for a nominal Resource cost. ESee Ability Advanced Repair for details. Sprint [Expand][Hide] Cost Activation timed Duration 15 Target tp_any Recharge 60 Hotkey S Effects Sprinting will make a squad move faster for a short time. ESee Ability Sprint for details. Squad Upgrades Field Craft [Expand][Hide] Cost 16020 Time 35 Hotkey C Effects Increase the Capture Rate of your Panzer Grenadier, Assault Grenadier, and Tank Buster squads. When static, these squads are also trained to spot enemy mines. ESee Upgrade Field Craft for details. Increase Squad Sizes [Expand][Hide] Cost 16025 Time 35 Hotkey I Effects Increase Panzer Grenadier, Assault Grenadier, and Tank Buster squad sizes. ESee Upgrade Increase Squad Sizes for details. Advanced Repair [Expand][Hide] Cost 22035 Time 35 Hotkey E Effects Upgrade the repair rate of your Panzer Grenadiers, Assault Grenadiers, and Tank Busters. ESee Upgrade Advanced Repair for details. Anti Tank Grenades [Expand][Hide] Cost 15020 Time 35 Hotkey A Effects Enables Anti Tank Grenades on your Panzer Grenadier, Assault Grenadier, and Tank Buster squads. ESee Upgrade Anti Tank Grenades for details. Incendiary Grenades [Expand][Hide] Cost 12020 Time 35 Hotkey N Effects Enables most Panzer Infantry with Incendiary Grenades that will burn an area for a period of time. ESee Upgrade Incendiary Grenades for details. Group Zeal [Expand][Hide] Cost 24040 Time 35 Hotkey Z Effects Panzer Grenadiers, Assault Grenadiers, and Tank Busters are tougher when grouped together. ESee Upgrade Group Zeal for details. Veteran Sergeant [Expand][Hide] Cost 24040 Time 35 Hotkey V Effects Upgrade your Panzer Grenadier, Assault Grenadier, and Tank Buster squads with a Veteran Sergeant who increases the rate squads receive veterancy and reduces the amount of suppression they receive. ESee Upgrade Veteran Sergeant for details. Squad Weapons Panzer Elite Kar98K [Expand][Hide] Weapon Panzer Elite Kar98K See Weapon Panzer Elite Kar98K for details. Panzer Elite Panzerschreck [Expand][Hide] Weapon Panzer Elite Panzerschreck See Weapon Panzer Elite Panzerschreck for details. Incendiary Grenade [Expand][Hide] Weapon Incendiary Grenade See Weapon Incendiary Grenade for details. Anti Tank Grenade [Expand][Hide] Weapon Anti Tank Grenade See Weapon Anti Tank Grenade for details. Booby Trap [Expand][Hide] Weapon Booby Trap See Weapon Booby Trap for details. Teller Mine [Expand][Hide] Weapon Teller Mine See Weapon Teller Mine for details. Retrieved from http //coh-stats.com/Infantry Tank_Buster_Heavy_Infantry
https://w.atwiki.jp/voice2012/pages/195.html
タスク :Mへ【R H⇒要再送】と題し、バイヤーIDとアイテム番号、再送先住所をタスクする 要対応処理:R Hシートの更新 (再送先住所を記載) 管理表転記事項:再送予定 Thank you for your message. We will let our shipping department for your request. Please look forward for your item to be delivered. If there is anything that is not clear to you, please do not hesitate to contact us before putting your feedback. We are happy to help and take responsibility for our customers that are not happy with us. We look forward to deal with you again in the future. Sincerely yours, vinyl.garage.japon
https://w.atwiki.jp/wow_ui/pages/17.html
GERONIMO_HAM_SPHERE GERONIMO_HAM_SPHERE101.zip
https://w.atwiki.jp/postal2-wiki/pages/37.html
基本的にSteamフォーラムやRWSフォーラムの公式投稿の和訳 http //steamcommunity.com/app/223470/discussions/0/828938532551712762/ FAQ (Controller support, Eternal Damnation, Russian localization ect) POSTAL 2 一般的な話題 よくある質問Mac / Linuxでやってんだけど、Workshopとか他のアップデートが見つかんない ロシア語とかポーランド語とか他の言語のローカライズパックは追加される? フルコントローラサポートの予定は? Eternal Damnation はSteam Workshopに来るかな? じゃあ、A Very POSTAL Christmasについてはどう? Steam版じゃなくてGOG版とかのアップデートの予定は? 新しい武器やAWの武器はどこ?見つからないんだけど 新要素が好きじゃない。古き良きPOSTAL 2よ、戻ってこい! トレイラーで使われている曲はなに? 実績がとれない! よくある質問 Mac / Linuxでやってんだけど、Workshopとか他のアップデートが見つかんない 全部の要素を含んだ Mac / Linux 用の 1415 ビルドの用意は終わったよ。もうすぐアップデートします。 ロシア語とかポーランド語とか他の言語のローカライズパックは追加される? そうしたいのは山々だけど、残念ながら権利を所有してないんだ。Steamで公式にリリースされることはないだろうね。 ロシア語とポーランド語は申し訳ないけど絶対に来ないよ。でも、日本語は将来的に可能だよ。 フルコントローラサポートの予定は? POSTAL 2のBig Picture の完全サポートのためのロードマップ上にあるよ。 (サポートする予定です) Eternal Damnation はSteam Workshopに来るかな? もちろんさ! RWSのチームで調整と改善をしたバージョンを作っているよ。いつまでとはハッキリと言えないけど、今年のいつかには終わるでしょう。 じゃあ、A Very POSTAL Christmasについてはどう? MODの作者と会って話す予定。少しでも彼が乗り気だったら今年の終わり頃までにはリリースされるんじゃないかな。 Steam版じゃなくてGOG版とかのアップデートの予定は? あるよ。Steam版の大方のアップデートが終わったので、すべてのDRMフリー版のPOSTAL 2はいつかはね。 新しい武器やAWの武器はどこ?見つからないんだけど 新しい武器やAWの武器は一週間のうちいつでも入手できるよ。一部の武器は特定の日数後に出現するよ。屋根の上や裏庭などいろいろな場所を注意深く探してみよう。 新要素が好きじゃない。古き良きPOSTAL 2よ、戻ってこい! POSTAL 2 Classic(Version 1409)はベータへの参加で有効になるよ! SteamライブラリのPostal 2 Completeを右クリックして、プロパティを選んで、「ベータ」のタブに移動して、「参加希望のベータを選択してください」から「1409」を選択しよう。 トレイラーで使われている曲はなに? A Fall To Break の Pick Up The Pieces って曲だよ。 公式のフェイスブックページはこちらそして、歌詞付きのビデオはこちら。 実績がとれない! 実績の解除に問題があったら、以下のことを試してみて。 Mac と Linux ユーザーが実績を解除できない - ごめんね、なるべく早く改善パッチを配信できるように頑張ってるよ!(*1) チートをオフにする - チートがオンになっていると実績は向こうになってます。また、チート中に作られたセーブデータには「恥のアスタリスク(*)」が付けられます。実績を獲得したい場合は、チートを使っていないセーブデータを新しく作ってください。(*2)NOTE There is an issue in 1412 and 1412 Hotfix 1 where simply having cheats on would disable achievements, even if you haven t actually used any cheats. The next hotfix will address this issue, but in the meantime you can disable cheats by bringing down the console with the `/~ key and entering the command "sissy". This disables cheats and allows you to get achievements once again. 古いセーブデータを使わない - 古いセーブデータはパッチと互換性がありません。プレイすることはできますが、ゲームがクラッシュしたり奇妙な動作をする可能性があります。実績の獲得には、新しいセーブデータが必要です。(*3) Config file issues - We just released a hotfix to address some configuration file issues. You ll know you got the hotfix when you restart POSTAL 2 Complete and your video settings appear to have reset. Once you get the hotfix, try getting achievements again. Verify cache - When all else fails, fall back on that old reliable Steam cache verification. Right-click on POSTAL 2 Complete, hit Properties, hit Local Files, then click "Verify Integrity of Game Cache". Any corrupted files will then be re-downloaded. Last resort - If none of the above solutions work, your last resort is to do a complete uninstall of the game, then reinstall it. Hope this helps, and have fun hunting down those achievements!
https://w.atwiki.jp/ysdtank-2nd/pages/23.html
User Name ID PASS Umbobo uminchu inaba EG6civic SiRll LAlongbow Recorder_JP UFO_of_END Black_Genmai mm297chiha otisteo airaaan HNHR kawausokun kupts_glock marsaku marubou sagary uesama TankAcademy 名前 コメント .