/** * compile one file if filename is NULL redirect do to stdin/stdout * @param file filename * @return */ void compile(char *file) { if (file == NULL || filename_typeof(file) == 'c') { global_table_index = 0; local_table_index = NUMBER_OF_GLOBALS; while_table_index = 0; tag_table_index = 0; inclsp = iflevel = skiplevel = swstp = litptr = stkp = errcnt = ncmp = lastst = //quote[1] = 0; input2 = -1; //quote[0] = '"'; cmode = 1; glbflag = 1; nxtlab = 0; litlab = getlabel(); defmac("end\tmemory"); //add_global("memory", ARRAY, CCHAR, 0, EXTERN); //add_global("stack", ARRAY, CCHAR, 0, EXTERN); rglobal_table_index = global_table_index; //rglbptr = glbptr; //add_global("etext", ARRAY, CCHAR, 0, EXTERN); //add_global("edata", ARRAY, CCHAR, 0, EXTERN); defmac("short\tint"); initmac(); // compiler body if (file == NULL) { input = 0; } else if (!openin(file)) return; if (file == NULL) { output = 1; } else if (!openout()) return; header(); code_segment_gtext(); parse(); close(input); data_segment_gdata(); dumplits(); dumpglbs(); errorsummary(); trailer(); oflush(); close(output); pl(""); errs = errs || errfile; } else { writee("Don't understand file "); writee(file); errs = 1; } }
void #endif setup_sym() { defmac("Z80") ; defmac("SMALL_C") ; /* dummy symbols for pointers to char, int, double */ /* note that the symbol names are not valid C variables */ dummy_sym[0] = 0 ; dummy_sym[CCHAR] = addglb("0ch", POINTER, CCHAR, 0, STATIK, 0,0) ; dummy_sym[CINT] = addglb("0int", POINTER, CINT, 0, STATIK, 0,0) ; dummy_sym[DOUBLE] = addglb("0dbl", POINTER,DOUBLE,0,STATIK, 0,0) ; dummy_sym[LONG] = addglb("0lng", POINTER, LONG, 0, STATIK, 0,0) ; dummy_sym[CPTR] = addglb("0cpt", POINTER, CPTR, 0, STATIK, 0,0) ; dummy_sym[VOID] = addglb("0vd", POINTER, VOID, 0 , STATIK, 0,0) ; }
int main(int argc, char *argv[]) { char *param = NULL, *bp; int i; macptr = 0; ctext = 0; errs = 0; aflag = 1; uflag = 0; for (i=1; i<argc; i++) { param = argv[i]; if (*param == '-') { while (*++param) { switch (*param) { case 't': case 'T': // output c source as asm comments ctext = 1; break; case 'a': case 'A': // no argument count in A to function calls aflag = 0; break; case 'u': case 'U': // use undocumented 8085 instructions uflag = 1; break; case 'd': case 'D': // define macro bp = ++param; if (!*param) usage(); while (*param && *param != '=') param++; if (*param == '=') *param = '\t'; while (*param) param++; param--; defmac(bp); break; default: usage(); } } } else { usage(); break; } } if (i == argc) { compile(NULL); // training mode - read code from stdin exit(errs != 0); } usage(); }
void initmac(void) { defmac("cpm\t1"); defmac("I8080\t1"); defmac("RMAC\t1"); defmac("smallc\t1"); }
void initmac() { //defmac("cpm\t1"); defmac("I8080\t1"); defmac("RMAC\t1"); defmac("smallc\t1"); }
int main (int argc, char *argv[]) { char *p, *pp, *bp; char **oldargv = argv; char **link_lib; long smacptr; int first = 1; char *asmdefs_global_end; macptr = 0; ctext = 0; argc--; argv++; errs = 0; sflag = 0; cdflag = 0; verboseflag = 0; startup_incl = 0; optimize = 2; /* -O2 by default */ overlayflag = 0; asmdefs[0] = '\0'; while ((p = *argv++)) { if (*p == '-') { while (*++p) switch (*p) { case 't': case 'T': ctext = 1; break; case 'c': if ((*(p + 1) == 'd')) { cdflag = 1; /* pass '-cd' to assembler */ p++; break; } else { usage(oldargv[0]); break; } case 's': if (strncmp(p, "scd", 3) == 0) { cdflag = 2; /* pass '-scd' to assembler */ p += 2; break; } else if (strncmp(p, "sgx", 3) == 0) { strcat(asmdefs, "_SGX = 1\n"); defmac("_SGX"); p += 2; break; } /* fallthrough */ case 'S': sflag = 1; break; /* defines to pass to assembler */ case 'a': if (strncmp(p, "acd", 3) == 0) { cdflag = 2; /* pass '-scd' to assembler */ strcat(asmdefs, "_AC = 1\n"); defmac("_AC"); p += 2; break; } /* fallthrough */ case 'A': bp = ++p; if (!*p) usage(oldargv[0]); while (*p && *p != '=') p++; strncat(asmdefs, bp, (p - bp)); /* if (*p == '=') *p = '\t'; */ bp = ++p; strcat(asmdefs, "\t= "); if (*bp == '\0') strcat(asmdefs, "1\n"); else { strcat(asmdefs, bp); strcat(asmdefs, "\n"); } break; case 'v': verboseflag++; if (verboseflag > 1) ctext = 1; /* "C" code in asm output */ break; case 'd': case 'D': bp = ++p; if (!*p) usage(oldargv[0]); while (*p && *p != '=') p++; if (*p == '=') *p = '\t'; while (*p) p++; p--; defmac(bp); break; case 'o': if (strncmp(p, "over", 4) == 0) { overlayflag = 1; if (strncmp(p, "overlay", 7) == 0) p += 6; else p += 3; } else { bp = ++p; while (*p && *p != ' ' && *p != '\t') p++; memcpy(user_outfile, bp, p - bp); user_outfile[p - bp] = 0; p--; } break; case 'O': /* David, made -O equal to -O2 * I'm too lazy to tape -O2 each time :) */ if (!p[1]) optimize = 2; else optimize = atoi(++p); break; case 'f': p++; if (!strcmp(p, "no-recursive")) { user_norecurse = 1; p += 11; } else if (!strcmp(p, "recursive")) { user_norecurse = 0; p += 8; } else if (!strcmp(p, "no-short-enums")) { user_short_enums = 0; p += 13; } else if (!strcmp(p, "short-enums")) { user_short_enums = 1; p += 10; } else goto unknown_option; break; case 'l': bp = ++p; while (*p && *p != ' ' && *p != '\t') p++; link_libs = realloc(link_libs, (link_lib_ptr + 2) * sizeof(*link_libs)); link_libs[link_lib_ptr] = malloc(p - bp + 1); memcpy(link_libs[link_lib_ptr], bp, p - bp); link_libs[link_lib_ptr][p - bp] = 0; strcat(asmdefs, "LINK_"); strcat(asmdefs, link_libs[link_lib_ptr]); strcat(asmdefs, "\t= 1\n"); link_libs[++link_lib_ptr] = 0; p--; break; case 'm': if (!strcmp(p + 1, "small")) { strcat(asmdefs, "SMALL\t= 1\n"); p += 5; } else { unknown_option: fprintf(stderr, "unknown option %s\n", p); exit(1); } break; default: usage(oldargv[0]); } } else { infiles = realloc(infiles, (infile_ptr + 2) * sizeof(*infiles)); infiles[infile_ptr++] = p; infiles[infile_ptr] = 0; } } smacptr = macptr; if (!infiles) usage(oldargv[0]); printf(HUC_VERSION); printf("\n"); init_path(); /* Remember the first file, it will be used as the base for the output file name unless there is a user-specified outfile. */ p = pp = infiles[0]; /* Labels count is not reset for each file because labels are global and conflicts would arise. */ nxtlab = 0; link_lib = link_libs; infile_ptr = 1; /* Remember where the global assembler defines end so we can reset to that point for each file. */ /* XXX: Even if we don't repeat the local asm defines, they are still defined because we compile everything into one assembly file. */ asmdefs_global_end = asmdefs + strlen(asmdefs); while (p) { errfile = 0; /* Truncate asm defines to the point where global defines end. */ asmdefs_global_end[0] = 0; if (extension(p) == 'c' || extension(p) == 'C') { glbptr = STARTGLB; locptr = STARTLOC; wsptr = ws; inclsp = iflevel = skiplevel = swstp = litptr = stkp = errcnt = ncmp = lastst = quote[1] = const_nb = line_number = 0; macptr = smacptr; input2 = NULL; quote[0] = '"'; cmode = 1; glbflag = 1; litlab = getlabel(); member_table_index = 0; memset(member_table, 0, sizeof(member_table)); tag_table_index = 0; norecurse = user_norecurse; typedef_ptr = 0; enum_ptr = 0; enum_type_ptr = 0; memset(fastcall_tbl, 0, sizeof(fastcall_tbl)); defpragma(); /* Macros and globals have to be reset for each file, so we have to define the defaults all over each time. */ defmac("__end\t__memory"); addglb("__memory", ARRAY, CCHAR, 0, EXTERN, 0); addglb("stack", ARRAY, CCHAR, 0, EXTERN, 0); rglbptr = glbptr; addglb("etext", ARRAY, CCHAR, 0, EXTERN, 0); addglb("edata", ARRAY, CCHAR, 0, EXTERN, 0); /* PCE specific externs */ addglb("font_base", VARIABLE, CINT, 0, EXTERN, 0); addglb_far("vdc", CINT); addglb_far("vram", CCHAR); /* end specific externs */ defmac("huc6280\t1"); defmac("huc\t1"); if (cdflag == 1) defmac("_CD\t1"); else if (cdflag == 2) defmac("_SCD\t1"); else defmac("_ROM\t1"); if (overlayflag == 1) defmac("_OVERLAY\t1"); // initmac(); /* * compiler body */ if (!openin(p)) exit(1); if (first && !openout()) exit(1); if (first) header(); asmdefines(); // gtext (); parse(); fclose(input); // gdata (); dumplits(); dumpglbs(); errorsummary(); // trailer (); pl(""); errs = errs || errfile; } else { fputs("Don't understand file ", stderr); fputs(p, stderr); fputc('\n', stderr); exit(1); } p = infiles[infile_ptr]; if (!p && link_lib && *link_lib) { /* No more command-line files, continue with libraries. */ p = lib_to_file(*link_lib); if (!p) { fprintf(stderr, "cannot find library %s\n", *link_lib); exit(1); } link_lib++; } else infile_ptr++; first = 0; } dumpfinal(); fclose(output); if (!errs && !sflag) { if (user_outfile[0]) errs = errs || assemble(user_outfile); else errs = errs || assemble(pp); } exit(errs != 0); }
void SetDefine(char *arg) { defmac(arg+1); }
void initmac(void) { defmac("smallc\t1"); }
/* * mainloop() - * основной цикл работы редактора */ mainloop() { int i,m,first=1; register int j; int clsave,ccsave; int k; /* Хитрости с экономией памяти */ register int *lre1= &lread1; #define lread1 (*lre1) int thiscol, thisrow; char ich[8], *cp; /* Для команд с тремя вариантами аргументов */ int (*lnfun)(),(*spfun)(); int openlines(), openspaces(), closelines(),closespaces(),picklines(), pickspaces(); /* === */ extern int templ[4]; struct viewport *oport; /* * Обработка одного символа или команды * ==================================== */ if (cursorline== 0) oldcline = 1; if (cursorcol == 0) oldccol = 1; #ifndef lint goto funcdone; #endif FOREVER { csrsw = clrsw = 0; read1(); if (errsw) { errsw = 0; clrsw = 1; goto errclear; } /* * Редактирование в строке */ if ((! CTRLCHAR) || lread1 == CCCTRLQUOTE || lread1 == CCBACKSPACE || lread1 == CCDELCH) { /* Отмена в 1 колонке */ if (lread1 == CCBACKSPACE && cursorcol == 0) { lread1 = -1; goto contin; } if (openwrite[curfile] == 0) goto nowriterr; /* Строки у нас нет? Дай! */ if (clineno != (i = curwksp->ulhclno+cursorline)) getlin(i); /* исключение символа */ if (lread1==CCDELCH || (imodesw && lread1==CCBACKSPACE) ) { thiscol = cursorcol + curwksp->ulhccno; thisrow = cursorline; if (lread1 == CCBACKSPACE) thiscol--; if (ncline < thiscol + 2) { if (lread1 == CCBACKSPACE) movecursor(LT); lread1 = -1; goto contin; } for (i=thiscol;i<ncline-2;i++) cline[i] = cline[i+1]; ncline--; thiscol -= curwksp->ulhccno; putup(-(1+thiscol),cursorline); poscursor(thiscol,thisrow); fcline = 1; lread1 = -1; goto contin; } /* Проверка на границу окна */ if (cursorcol > curport->rtext) { if (fcline) { putline(0); movep(defrport); goto contin; } else goto margerr; } fcline = 1; if (j = (lread1 == CCBACKSPACE)) { movecursor(LT); lread1 = ' '; } if ((i = cursorcol + curwksp->ulhccno) >= (lcline - 2)) excline(i+2); if (i >= ncline-1) { for (k=ncline-1; k<=i; k++) cline[k] = ' '; cline[i+1] = NEWLINE; ncline = i+2; } else if (imodesw) { thiscol = cursorcol + curwksp->ulhccno; thisrow = cursorline; if (ncline >= lcline) excline(ncline+1); for (i=ncline;i>thiscol;i--) cline[i] = cline[i-1]; ncline++; thiscol -= curwksp->ulhccno; putup(-(1+thiscol),cursorline); poscursor(thiscol,thisrow); } /* Выставим границу */ if (cursorcol >= curport->rtext) curport->redit = curport->rtext + 1; /* Замена символа */ if(lread1==CCCTRLQUOTE) lread1 = esc0; if (cursorcol == curport->rtext - 10) putcha(COBELL); cline[i] = lread1; putch(lread1,1); /* Если переехали границу */ curport->redit = curport->rtext; if (j) movecursor(LT); lread1 = -1; goto contin; } /* Сдвиг вниз, если последняя строка */ if (lread1 == CCRETURN ) { putline(0); if ( cursorline == curport->btext) movew(defplline); if((i=curwksp->ulhccno) !=0) movep(-i); movecursor(lread1); lread1= -1; goto errclear; } /* * Если команда перемещения */ if (lread1<=BT) { movecursor(lread1); if (lread1 <= VMOTCODE ) { putline(0); if(curspos) goto newnumber; } lread1 = -1; goto contin; } /* Если граница поля */ if (cursorcol > curport->rtext) poscursor(curport->rtext,cursorline); putline(0); if (lread1 == CCQUIT) { if (endit() == 0) goto funcdone; gosw = 0; return; } switch (lread1) { case CCENTER: goto gotarg; case CCLPORT: movep(- deflport); goto funcdone; case CCSETFILE: switchfile(); goto funcdone; case CCCHPORT: chgport(-1); goto funcdone; case CCOPEN: if (openwrite[curfile]==0) goto nowriterr; openlines(curwksp->ulhclno + cursorline,definsert); goto funcdone; case CCMISRCH: search(-1); goto funcdone; case CCCLOSE: if (openwrite[curfile]==0) goto nowriterr; closelines(curwksp->ulhclno + cursorline, defdelete); goto funcdone; case CCPUT: if (openwrite[curfile]==0) goto nowriterr; if (pickbuf->nrows == 0) goto nopickerr; put(pickbuf,curwksp->ulhclno+cursorline, curwksp->ulhccno+cursorcol); goto funcdone; case CCPICK: picklines(curwksp->ulhclno + cursorline, defpick); goto funcdone; case CCINSMODE: imodesw = 1 - imodesw; /* change it */ goto funcdone; case CCGOTO: gtfcn(0); goto funcdone; case CCMIPAGE: movew(- defmipage * (1+curport->btext)); goto funcdone; case CCPLSRCH: search(1); goto funcdone; case CCRPORT: movep(defrport); goto funcdone; case CCPLLINE: movew(defplline); goto funcdone; case CCDELCH: goto notimperr; case CCSAVEFILE: savefile(NULL,curfile); goto funcdone; case CCMILINE: movew(-defmiline); goto funcdone; case CCDOCMD: goto notstrerr; case CCPLPAGE: movew(defplpage * (1+curport->btext)); goto funcdone; case CCMAKEPORT: makeport(deffile); goto funcdone; case CCTABS: settab(curwksp->ulhccno + cursorcol); goto funcdone; /* case CCMOVELEFT: */ /* case CCTAB: */ /* case CCMOVEDOWN: */ /* case CCHOME: */ /* case CCRETURN: */ /* case CCMOVEUP: */ default: goto badkeyerr; } /* Повтор ввода аргумента */ reparg: read1(); if(CTRLCHAR) goto yesarg; else goto noargerr; /* * Дай аргумент! */ gotarg: param(0); yesarg: if (lread1 == CCQUIT ) { if (paraml>0 && (dechars(paramv,paraml),*paramv) == 'a') { gosw = 0; if (*(paramv+1) != 'd') return; cleanup(); inputfile = -1; /* to force a dump */ fatal("ABORTED"); } if (endit() == 0) goto funcdone; gosw = 1; return; } switch (lread1) { case CCENTER: goto funcdone; case CCLPORT: if (paramtype <= 0) goto notstrerr; if (s2i(paramv,&i)) goto notinterr; movep(-i); goto funcdone; case CCSETFILE: if (paramtype <= 0) goto notstrerr; if (paramv == 0) goto noargerr; if ( use0flg || !inputfile) dechars(paramv,paraml); use0flg=1; editfile(paramv,0,0,1,1); goto funcdone; case CCCHPORT: if (paramtype <= 0) goto notstrerr; if (s2i(paramv,&i)) goto notinterr; if (i <= 0) goto notposerr; chgport(i-1); goto funcdone; case CCOPEN: if (openwrite[curfile]==0) goto nowriterr; if (paramtype == 0) { splitline(curwksp->ulhclno + paramr0, paramc0 + curwksp->ulhccno); goto funcdone; } else { lnfun = openlines; spfun = openspaces; goto spdir; }; case CCMISRCH: case CCPLSRCH: if (paramtype <= 0) goto notstrerr; if (paramv == 0) goto noargerr; if (searchkey) free(searchkey); searchkey = paramv; paraml = 0; search(lread1==CCPLSRCH?1:-1); goto funcdone; case CCCLOSE: if (openwrite[curfile]==0) goto nowriterr; if (paramtype == 0) combineline(curwksp->ulhclno + paramr0, paramc0 + curwksp->ulhccno); else { if(paramtype > 0 && paramv && paramv[0]=='>') { msrbuf(deletebuf,paramv+1,0); goto funcdone; } lnfun = closelines; spfun = closespaces; goto spdir; } goto funcdone; case CCPUT: if (paramtype > 0 && paramv && paramv[0]=='$' ) { if (msrbuf(pickbuf,paramv+1,1))goto errclear; goto funcdone; } if (paramtype != 0) goto notstrerr; if (openwrite[curfile]==0) goto nowriterr; if (deletebuf->nrows == 0) goto nodelerr; put(deletebuf,curwksp->ulhclno+cursorline, curwksp->ulhccno+cursorcol); goto funcdone; case CCMOVELEFT: case CCTAB: case CCMOVEDOWN: case CCHOME: case CCMOVEUP: case CCMOVERIGHT: case CCBACKTAB: if (s2i(paramv,&i)) goto notinterr; if (i <= 0) goto notposerr; m = ((lread1<=BT) ? lread1:0); while (--i >= 0) movecursor(m); goto funcdone; case CCRETURN: if(paramtype <=0|| !paramv) goto notimperr; dechars(paramv,paraml); switch (paramv[0]) { case '>': msvtag(paramv+1); goto funcdone; case '$': if(mdeftag(paramv+1)){ lread1= -1; goto reparg; } else goto funcdone; case 'w': if(paramv[1]==' ' && paramv[2]=='+') openwrite[curwksp->wfile]=1; else openwrite[curwksp->wfile]=0; goto funcdone; case 'k': defkey(); goto funcdone; case 'r': rescreen(-1); goto funcdone; /* Восттановить экран */ case 'd': if(paramv[1]==' ') defmac(¶mv[2]); goto funcdone; case 'q': lread1=CCQUIT; if(paramv[1]=='a') { gosw=0; return; } goto contin; default: goto noargerr; } case CCPICK: if (paramtype == 0) goto notimperr; if (paramtype > 0 && paramv && paramv[0]=='>') { msrbuf(pickbuf,paramv+1,0); goto funcdone; } lnfun = picklines; spfun = pickspaces; goto spdir; case CCINSMODE: imodesw = 1 - imodesw; /* Щелкнем!! */ goto funcdone; case CCGOTO: if (paramtype == 0) gtfcn(nlines[curfile]); else if (paramtype > 0) { if(paramv && paramv[0]=='$') { mgotag(paramv+1); goto funcdone; } if (s2i(paramv,&i)) goto notinterr; gtfcn(i-1); } else goto noargerr; goto funcdone; case CCMIPAGE: if (paramtype <= 0) goto notstrerr; if (s2i(paramv,&i)) goto notinterr; movew(- i * (1 + curport->btext)); goto funcdone; case CCRPORT: if (paramtype <= 0) goto notstrerr; if (s2i(paramv,&i)) goto notinterr; movep(i); goto funcdone; case CCPLLINE: if (paramtype < 0) goto notstrerr; else if (paramtype == 0) movew(cursorline); else if (paramtype > 0) { if (s2i(paramv,&i)) goto notinterr; movew(i); } goto funcdone; case CCDELCH: goto notimperr; case CCSAVEFILE: if (paramtype <= 0) goto notstrerr; if (paramv == 0) goto noargerr; dechars(paramv,paraml); savefile(paramv,curfile); goto funcdone; case CCMILINE: if (paramtype < 0) goto notstrerr; else if (paramtype == 0) movew(cursorline - curport->btext); else if (paramtype > 0) { if (s2i(paramv,&i)) goto notinterr; movew(-i); } goto funcdone; case CCDOCMD: if(paramtype<=0) goto notstrerr; dechars(paramv,paraml); if (openwrite[curfile] == 0) goto nowriterr; callexec(); goto funcdone; case CCPLPAGE: if (paramtype <= 0) goto notstrerr; if (s2i(paramv,&i)) goto notinterr; movew(i * (1 + curport->btext)); goto funcdone; case CCMAKEPORT: if (paramtype == 0) removeport(); else if (paramtype < 0) goto notstrerr; else { dechars(paramv,paraml); makeport(paramv); } goto funcdone; case CCTABS: clrtab(curwksp->ulhccno + cursorcol); goto funcdone; default: goto badkeyerr; } spdir: if (paramtype > 0) { if(paramv[0] == '$') { if(mdeftag(paramv+1)) goto spdir; else goto funcdone; } if (s2i(paramv,&i)) goto notinterr; if (i <= 0) goto notposerr; (*lnfun)(curwksp->ulhclno + cursorline, i); } else { if (paramc1 == paramc0) { (*lnfun)(curwksp->ulhclno+paramr0, (paramr1-paramr0)+1); } else (*spfun)(curwksp->ulhclno + paramr0, curwksp->ulhccno + paramc0, (paramc1-paramc0), (paramr1-paramr0) + 1); } goto funcdone; badkeyerr: error(DIAG("Illegal key or unnown macro","Неизвестная клавиша или макро")); goto funcdone; notstrerr: error(DIAG("Argument must be a string.","Аргумент должен быть строкой")); goto funcdone; noargerr: error(DIAG("Invalid argument.","Плохой аргумент")); goto funcdone; notinterr: error(DIAG("Argument must be numerik.","Аргумент должен быть числом")); goto funcdone; notposerr: error(DIAG("Argument must be positive.","Аргумент должен быть положительным")); goto funcdone; nopickerr: error(DIAG("Nothing in the pick buffer.","Буфер вставок пуст")); goto funcdone; nodelerr: error (DIAG("Nothing in the close buffer.","Буфер убранных строк пуст")); goto funcdone; notimperr: error(DIAG("Feature not implemented yet.","Еще не определено.")); goto funcdone; margerr: error("Margin stusk; move cursor to free."); goto funcdone; nowriterr: error(DIAG("You cannot modify this file!","Вы не можете изменить этот файл.")); goto funcdone; funcdone: clrsw = 1; newnumber: lread1 = -1; /* signify char read was used */ errclear: oport = curport; k = cursorline; j = cursorcol; switchport(¶mport); paramport.redit = PARAMRINFO; if (clrsw) { if (!errsw && !first) { poscursor(0,0); info(blanks,PARAMRINFO); } poscursor(PARAMREDIT+2,0); if (oport->wksp->wfile) { info(DIAG("file ","файл "),PARAMRINFO); info(openfnames[oport->wksp->wfile],PARAMRINFO); } info(DIAG(" line "," строка: "),PARAMRINFO); clsave = cursorline; first=0; ccsave = cursorcol; } poscursor(ccsave,clsave); i = oport->wksp->ulhclno + k + 1; /* Рисуем номер строки */ cp = ich + 8; *--cp = '\0'; do (*--cp = '0' + (i % 10)); while (i = i/10); info(cp,PARAMRINFO); *cp = '\0'; while (cp != ich) *--cp = ' '; info(ich,PARAMRINFO); switchport(oport); paramport.redit = PARAMREDIT; poscursor(j,k); if (csrsw) { putch(COCURS,1); poscursor(j,k); dumpcbuf(); sleep(1); putup(k,k); poscursor(j,k); } if (imodesw && clrsw && !errsw) telluser(DIAG(" ***** i n s e r t m o d e *****"," * * * * режим вставки * * * * "),0); contin: ; } #undef lread1 }
initmac() { defmac("mc6809\t1"); defmac("mitas09\t1"); defmac("smallc\t1"); }