/***************************************************************************** * init_echo * * 引数: * なし * * 返り値: * エラー番号 * E_OK 正常終了 * * 機能: * * */ ER init_echo (void) { ER err; T_CTSK pktsk; err = def_dev (L"ECHO", CHAR, ANY_DEVICE, &deviceid); if (err != E_OK) { printf ("cannot initialize for echo device. err = %d\n", err); return (err); } DPRINTF(("init_echo: setup\n")); pktsk.tskatr = TA_HLNG; pktsk.startaddr = echo_server; pktsk.itskpri = 1; pktsk.stksz = PAGE_SIZE * 2; pktsk.addrmap = NULL; err = new_task (&pktsk, &taskid, TRUE); if (err != E_OK) { printf ("cannot create task for echo. err = %d\n", err); return (err); } printf ("echo: TASK ID = %d\n", taskid); return (E_OK); }
// Pre-define devices. B.A. : Return value change from void to int int predef_dev(struct prog_info *pi) { int i; char temp[MAX_DEV_NAME+1]; def_dev(pi); for (i=0;(!i)||(device_list[i].name);i++) { strncpy(temp,DEV_PREFIX,MAX_DEV_NAME); if (!i) strncat(temp,DEF_DEV_NAME,MAX_DEV_NAME); else strncat(temp,device_list[i].name,MAX_DEV_NAME); strncat(temp,DEV_SUFFIX,MAX_DEV_NAME); /* B.A. : New. Forward references allowed. But check, if everything is ok ... */ if(pi->pass==PASS_1) { /* Pass 1 */ if(test_constant(pi,temp,NULL)!=NULL) { fprintf(stderr,"Error: Can't define symbol %s twice. Please don't use predefined symbols !\n", temp); return(False); } if(def_const(pi, temp, i)==False) return(False); } else { /* Pass 2 */ int j; if(get_constant(pi, temp, &j)==False) { /* Defined in Pass 1 and now missing ? */ fprintf(stderr,"Constant %s is missing in pass 2\n",temp); return(False); } if(i != j) { fprintf(stderr,"Constant %s changed value from %d in pass1 to %d in pass 2\n",temp,j,i); return(False); } /* OK. definition is unchanged */ } } return(True); }
/***************************************************************************** * init_gdc7220 --- PD7220 の初期化 * * 引数: * なし * * 返り値: * エラー番号 * E_OK 正常終了 * * 機能: * グラフィック GDC の初期化を行う。 * 画面設定する: * サイズ: 640x400 * カラー数: 16 Color * * * 処理概要: * 1. RESETコマンドの発行 * 2. 動作モードの選択 * 3. 表示の開始 * * 4. ドライバ登録の実行 * */ ER init_pd7220 (void) { ER err; T_CTSK pktsk; /* err = gdc_reset (); CHK_ERR; err = gdc_sync (MODE_DISP, 80, 0x08, 0x07, 0, 0, 0, 400, 0); CHK_ERR; */ gdc_display (); err = def_dev (L"DSP", CHAR, ANY_DEVICE, &deviceid); if (err != E_OK) { printf ("cannot initialize for PD7220 device. err = %d\n", err); return (err); } pktsk.tskatr = TA_HLNG; pktsk.startaddr = gdc_server; pktsk.itskpri = 1; pktsk.stksz = PAGE_SIZE * 2; pktsk.addrmap = NULL; err = new_task (&pktsk, &taskid, TRUE); if (err != E_OK) { printf ("cannot create task for PD7220. err = %d\n", err); return (err); } printf ("PD7220: TASK ID = %d\n", taskid); return (E_OK); }
struct device *get_device(struct prog_info *pi, char *name) { int i = 1; LastDevice = 0; if(name == NULL) { def_dev(pi); return(&device_list[0]); } while(device_list[i].name) { if(!nocase_strcmp(name, device_list[i].name)) { LastDevice=i; def_dev(pi); return(&device_list[i]); } i++; } def_dev(pi); return(NULL); }