home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #4 / amigaacscoverdisc1998-041998.iso / utilities / shareware / dev / ucb_logoppc / source / globals.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-21  |  15.7 KB  |  537 lines

  1. /*
  2.  *      globals.h       logo global references module           dvb
  3.  *
  4.  * Copyright (C) 1993 by the Regents of the University of California
  5.  *
  6.  *      This program is free software; you can redistribute it and/or modify
  7.  *      it under the terms of the GNU General Public License as published by
  8.  *      the Free Software Foundation; either version 2 of the License, or
  9.  *      (at your option) any later version.
  10.  *
  11.  *      This program is distributed in the hope that it will be useful,
  12.  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  *      GNU General Public License for more details.
  15.  *
  16.  *      You should have received a copy of the GNU General Public License
  17.  *      along with this program; if not, write to the Free Software
  18.  *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  *
  20.  */
  21.  
  22. /* main.c */
  23. extern NODE **bottom_stack; /*GC*/
  24. extern NODE *current_line, *exec_list;
  25. extern int main(int, char *[]);
  26. extern void unblock_input(void);
  27. extern NODE **bottom_stack;
  28.  
  29. #ifdef AMIGA
  30. #include "amiterm.h"
  31. #endif
  32.  
  33. #if defined(__ZTC__) || defined(WIN32)
  34. void logo_stop(int);
  35. void logo_pause(int);
  36. #else
  37. void logo_stop(void);
  38. void logo_pause(void);
  39. #endif
  40.  
  41. #ifndef TIOCSTI
  42. #include <setjmp.h>
  43. extern jmp_buf iblk_buf;
  44. #endif
  45.  
  46. /* logodata.c */
  47. extern char *strnzcpy(char *, char *, int);
  48. extern char *word_strnzcpy(char *, NODE *, int);
  49. extern char *noparity_strnzcpy(char *, char *, int);
  50. extern char *mend_strnzcpy(char *, char *, int);
  51. extern char *mend_nosemi(char *, char *, int);
  52. extern char *low_strnzcpy(char *, char *, int);
  53. extern char *cap_strnzcpy(char *, char *, int);
  54. extern char *noparitylow_strnzcpy(char *, char *, int);
  55. extern int low_strncmp(char *, char *, int);
  56. extern int noparity_strncmp(char *, char *, int);
  57. extern int noparitylow_strncmp(char *, char *, int);
  58. extern NODE *make_strnode(char *, struct string_block *, int,
  59.            NODETYPES, char *(*)());
  60. extern void make_runparse(NODE *);
  61. extern NODE *make_quote(NODE *);
  62. extern NODE *maybe_quote(NODE *);
  63. extern NODE *make_caseobj(NODE *, NODE *);
  64. extern NODE *make_colon(NODE *);
  65. extern NODE *make_intnode(FIXNUM);
  66. extern NODE *make_floatnode(FLONUM);
  67. extern NODE *cnv_node_to_numnode(NODE *);
  68. extern NODE *cnv_node_to_strnode(NODE *);
  69. extern NODE *make_static_strnode(char *);
  70. extern NODE *cons_list(int, ...);
  71. extern NODE *make_array(int);
  72. extern NODE *llowercase(NODE *);
  73. extern NODE *luppercase(NODE *);
  74. extern NODE *lgprop(NODE *);
  75. extern NODE *lpprop(NODE *);
  76. extern NODE *lremprop(NODE *);
  77. extern NODE *copy_list(NODE *);
  78. extern NODE *lplist(NODE *);
  79.  
  80. #ifdef ecma
  81. extern char ecma_array[], special_chars[];
  82. extern char ecma_set(int);
  83. extern char ecma_clear(int);
  84. extern int ecma_size;
  85. extern int ecma_get(int);
  86. #endif
  87.  
  88. /* mem.c */
  89. extern NODE *free_list;
  90. extern struct segment *segment_list;
  91. extern NODE *oldyoungs;
  92. extern BOOLEAN inside_gc, int_during_gc;
  93. extern BOOLEAN addseg(void);
  94. extern NODETYPES nodetype(NODE *);
  95. extern void check_valid_oldyoung(NODE *old, NODE *new);
  96. extern void setobject(NODE *, NODE *);
  97. extern void setcar(NODE *, NODE *);
  98. extern void setcdr(NODE *, NODE *);
  99. extern NODE *newnode(NODETYPES);
  100. extern NODE *cons(NODE *, NODE *);
  101. extern void mark(NODE *);
  102. extern void gc(BOOLEAN);
  103. extern NODE *lgc(NODE *);
  104. extern NODE *lnodes(NODE *);
  105. extern void fill_reserve_tank(void);
  106. extern void use_reserve_tank(void);
  107. extern void check_reserve_tank(void);
  108.  
  109. /* parse.c */
  110. extern FILE *loadstream, *writestream, *readstream, *dribblestream;
  111. extern int input_blocking;
  112. extern NODE *current_line, *deepend_proc_name;
  113. extern NODE *reader(FILE *, char *);
  114. extern NODE *parser(NODE *, BOOLEAN);
  115. extern NODE *lparse(NODE *);
  116. extern NODE *runparse(NODE *);
  117. extern NODE *lrunparse(NODE *);
  118.  
  119. /* math.c */
  120. extern int numberp(NODE *);
  121. extern NODE *lrandom(NODE *);
  122. extern NODE *lrerandom(NODE *);
  123. extern void math_init(void);
  124. extern FLONUM degrad;
  125. extern NODE *ladd(NODE *);
  126. extern NODE *lsub(NODE *);
  127. extern NODE *lmul(NODE *);
  128. extern NODE *ldivide(NODE *);
  129. extern NODE *lremainder(NODE *);
  130. extern NODE *lmodulo(NODE *);
  131. extern NODE *lbitand(NODE *);
  132. extern NODE *lbitor(NODE *);
  133. extern NODE *lbitxor(NODE *);
  134. extern NODE *lashift(NODE *);
  135. extern NODE *llshift(NODE *);
  136. extern NODE *lbitnot(NODE *);
  137. extern NODE *lsin(NODE *);
  138. extern NODE *lcos(NODE *);
  139. extern NODE *latan(NODE *);
  140. extern NODE *lradsin(NODE *);
  141. extern NODE *lradcos(NODE *);
  142. extern NODE *lradatan(NODE *);
  143. extern NODE *lsqrt(NODE *);
  144. extern NODE *linteg(NODE *);
  145. extern NODE *lround(NODE *);
  146. extern NODE *lexp(NODE *);
  147. extern NODE *llog10(NODE *);
  148. extern NODE *lln(NODE *);
  149. extern NODE *lpower(NODE *);
  150. extern NODE *torf(BOOLEAN);
  151. extern NODE *llessp(NODE *);
  152. extern NODE *lgreaterp(NODE *);
  153. extern int compare_node(NODE *, NODE *, BOOLEAN);
  154. extern BOOLEAN equalp_help(NODE *, NODE *, BOOLEAN);
  155. extern NODE *lequalp(NODE *);
  156. extern NODE *l_eq(NODE *);
  157. extern NODE *lbeforep(NODE *);
  158.  
  159. /* intern.c */
  160. extern NODE *hash_table[HASH_LEN];
  161. void map_oblist(void (*)());
  162. extern NODE *make_instance(NODE *, NODE *);
  163. extern NODE *intern(NODE *);
  164.  
  165. /* print.c */
  166. extern int print_stringlen;
  167. extern char *print_stringptr;
  168. extern int x_margin, y_margin;
  169. extern BOOLEAN print_backslashes;
  170. extern void update_coords(char);
  171. extern void print_char(FILE *, char);
  172. extern void print_space(FILE *);
  173. extern void ndprintf(FILE *, char *, ...);
  174. extern void real_print_help(FILE *, NODE *, int, int);
  175. extern void print_help(FILE *, NODE *);
  176. extern void print_node(FILE *, NODE *);
  177. extern void print_nobrak(FILE *, NODE *);
  178. extern void new_line(FILE *);
  179. extern NODE *lshow(NODE *);
  180. extern void typestring(char *,NODE *,int);
  181. extern NODE *ltype(NODE *);
  182. extern NODE *lprint(NODE *);
  183.  
  184. /* init.c */
  185. extern NODE *True, *False, *Left_Paren, *Right_Paren, *Toplevel, *SYstem, *Error;
  186. extern NODE *End, *Redefp, *Caseignoredp, *Erract, *Printdepthlimit;
  187. extern NODE *Printwidthlimit, *Pause, *LoadNoisily;
  188. extern NODE *If, *Ifelse, *To, *Macro, *Unbound, *Not_Enough_Node;
  189. extern NODE *Minus_Sign, *Minus_Tight, *Startup, *Query, *OutPut, *Op, *Stop;
  190. extern NODE *Goto, *TAg;
  191. extern NODE *Null_Word;
  192. extern void init(void);
  193.  
  194. /* wrksp.c */
  195. extern char *editor, *editorname, *tempdir;
  196. extern int to_pending;
  197. extern NODE *ltext(NODE *);
  198. extern NODE *lfulltext(NODE *);
  199. extern NODE *ldefine(NODE *);
  200. extern NODE *ldefmacro(NODE *);
  201. extern NODE *anonymous_function(NODE *);
  202. extern NODE *lmacro(NODE *);
  203. extern NODE *lto(NODE *);
  204. extern NODE *lmake(NODE *);
  205. extern NODE *llocal(NODE *);
  206. extern NODE *cnt_list, *cnt_last;
  207. extern NODE *lcontents(NODE *);
  208. extern NODE *lburied(NODE *);
  209. extern NODE *lprocedures(NODE *);
  210. extern NODE *lnames(NODE *);
  211. extern NODE *lplists(NODE *);
  212. extern NODE *lpo(NODE *);
  213. extern NODE *lpot(NODE *);
  214. extern NODE *lerase(NODE *);
  215. extern NODE *lerall(NODE *);
  216. extern NODE *lerps(NODE *);
  217. extern NODE *lerns(NODE *);
  218. extern NODE *lerpls(NODE *);
  219. extern NODE *lbury(NODE *);
  220. extern NODE *ltrace(NODE *);
  221. extern NODE *lstep(NODE *);
  222. extern NODE *lunbury(NODE *);
  223. extern NODE *luntrace(NODE *);
  224. extern NODE *lunstep(NODE *);
  225. extern char *addsep(char *);
  226. extern NODE *ledit(NODE *);
  227. extern NODE *lthing(NODE *);
  228. extern NODE *lnamep(NODE *);
  229. extern NODE *lprocedurep(NODE *);
  230. extern NODE *lprimitivep(NODE *);
  231. extern NODE *ldefinedp(NODE *);
  232. extern NODE *lmacrop(NODE *);
  233. extern NODE *lcopydef(NODE *);
  234. extern NODE *lhelp(NODE *);
  235.  
  236. /* error.c */
  237. extern NODE *throw_node;
  238. extern NODE *err_mesg;
  239. extern ERR_TYPES erract_errtype;
  240. extern void err_print(void);
  241. extern NODE *err_logo(ERR_TYPES, NODE *);
  242. extern NODE *lerror(NODE *);
  243. extern NODE *lpause(NODE *);
  244. extern NODE *lcontinue(NODE *);
  245.  
  246. /* eval.c */
  247. extern NODE *fun, *ufun, *last_ufun, *this_line, *last_line, *didnt_get_output;
  248. extern NODE *var, *var_stack, *output_node, *last_call, *didnt_output_name;
  249. extern CTRLTYPE stopping_flag;
  250. extern char *logolib, *helpfiles;
  251. extern FIXNUM tailcall, val_status, dont_fix_ift, user_repcount;
  252. extern NODE *qm_list;
  253. extern void spop(NODE **);
  254. extern void spush(NODE *, NODE **);
  255. extern void eval_driver(NODE *);
  256. extern NODE *err_eval_driver(NODE *);
  257. extern NODE *lapply(NODE *);
  258. extern NODE *lqm(NODE *);
  259. extern void tell_shadow(NODE *);
  260. extern int not_local(NODE *, NODE *);
  261.  
  262. /* lists.c */
  263. extern NODE *lbutfirst(NODE *);
  264. extern NODE *lbutlast(NODE *);
  265. extern NODE *lfirst(NODE *);
  266. extern NODE *lfirsts(NODE *);
  267. extern NODE *lbfs(NODE *);
  268. extern NODE *llast(NODE *);
  269. extern NODE *llist(NODE *);
  270. extern NODE *lemptyp(NODE *);
  271. extern NODE *lascii(NODE *);
  272. extern NODE *lrawascii(NODE *);
  273. extern NODE *lbackslashedp(NODE *);
  274. extern NODE *lchar(NODE *);
  275. extern NODE *lcount(NODE *);
  276. extern NODE *lfput(NODE *);
  277. extern NODE *llput(NODE *);
  278. extern NODE *string_arg(NODE *);
  279. extern NODE *lword(NODE *);
  280. extern NODE *lsentence(NODE *);
  281. extern NODE *lwordp(NODE *);
  282. extern NODE *llistp(NODE *);
  283. extern NODE *lnumberp(NODE *);
  284. extern NODE *larrayp(NODE *);
  285. extern NODE *lmemberp(NODE *);
  286. extern NODE *lsubstringp(NODE *);
  287. extern NODE *lmember(NODE *);
  288. extern NODE *integer_arg(NODE *);
  289. extern FIXNUM int_arg(NODE *);
  290. extern NODE *litem(NODE *);
  291. extern NODE *lsetitem(NODE *);
  292. extern NODE *l_setitem(NODE *);
  293. extern NODE *larray(NODE *);
  294. extern NODE *lform(NODE *);
  295. extern NODE *l_setfirst(NODE *);
  296. extern NODE *l_setbf(NODE *);
  297.  
  298. /* files.c */
  299. extern NODE *file_list;
  300. extern NODE *reader_name, *writer_name;
  301. extern NODE *ldribble(NODE *);
  302. extern NODE *lnodribble(NODE *);
  303. extern NODE *lopenread(NODE *);
  304. extern NODE *lopenwrite(NODE *);
  305. extern NODE *lopenappend(NODE *);
  306. extern NODE *lopenupdate(NODE *);
  307. extern NODE *lallopen(NODE *);
  308. extern NODE *lclose(NODE *);
  309. extern NODE *lsetwrite(NODE *);
  310. extern NODE *lsetread(NODE *);
  311. extern NODE *lreader(NODE *);
  312. extern NODE *lwriter(NODE *);
  313. extern NODE *lerasefile(NODE *);
  314. extern NODE *lsave(NODE *);
  315. extern void silent_load(NODE *, char *);
  316. extern NODE *lload(NODE *);
  317. extern NODE *lreadlist(NODE *);
  318. extern NODE *lreadword(NODE *);
  319. extern NODE *lreadchar(NODE *);
  320. extern NODE *lreadchars(NODE *);
  321. extern NODE *leofp(NODE *);
  322. extern NODE *lkeyp(NODE *);
  323. extern NODE *lreadpos(NODE *);
  324. extern NODE *lsetreadpos(NODE *);
  325. extern NODE *lwritepos(NODE *);
  326. extern NODE *lsetwritepos(NODE *);
  327.  
  328. /* coms.c */
  329. extern FIXNUM ift_iff_flag;
  330. extern NODE *make_cont(enum labels, NODE *);
  331. extern NODE *loutput(NODE *);
  332. extern NODE *lstop(NODE *);
  333. extern NODE *lthrow(NODE *);
  334. extern NODE *lcatch(NODE *);
  335. extern NODE *lgoto(NODE *);
  336. extern NODE *ltag(NODE *);
  337. extern NODE *lnot(NODE *);
  338. extern NODE *land(NODE *);
  339. extern NODE *lor(NODE *);
  340. extern NODE *lif(NODE *);
  341. extern NODE *lifelse(NODE *);
  342. extern NODE *lrun(NODE *);
  343. extern NODE *lrunresult(NODE *);
  344. extern NODE *pos_int_arg(NODE *);
  345. extern NODE *lrepeat(NODE *);
  346. extern NODE *lrepcount(NODE *);
  347. extern NODE *lforever(NODE *);
  348. extern NODE *ltest(NODE *);
  349. extern NODE *liftrue(NODE *);
  350. extern NODE *liffalse(NODE *);
  351. extern void prepare_to_exit(BOOLEAN);
  352. extern NODE *lbye(NODE *);
  353. extern NODE *lwait(NODE *);
  354. extern NODE *lshell(NODE *);
  355.  
  356. /* term.c */
  357. extern int x_coord, y_coord, x_max, y_max;
  358. extern int interactive;
  359. extern void term_init(void);
  360. extern void charmode_on(void);
  361. extern void charmode_off(void);
  362. extern NODE *lcleartext(NODE *);
  363. extern NODE *lcursor(NODE *);
  364. extern NODE *lsetcursor(NODE *);
  365. extern NODE *lsetmargins(NODE *);
  366. extern NODE *lstandout(NODE *);
  367.  
  368. /* libloc.c */
  369. extern char *libloc, *helploc, *temploc, *separator;
  370.  
  371. /* paren.c */
  372. extern NODE *the_generation;
  373. extern void untreeify_proc(NODE *);
  374. extern void make_tree_from_body(NODE *);
  375. extern void make_tree(NODE *);
  376.  
  377. /* graphics.c */
  378. extern mode_type current_mode;
  379. extern FLONUM turtle_x, turtle_y, turtle_heading, x_scale, y_scale;
  380. extern BOOLEAN turtle_shown;
  381. extern BOOLEAN refresh_p;
  382. extern FIXNUM g_round(FLONUM);
  383. void draw_turtle(void);
  384. extern NODE *numeric_arg(NODE *);
  385. extern NODE *lright(NODE *);
  386. extern NODE *lleft(NODE *);
  387. extern NODE *lforward(NODE *);
  388. extern NODE *lback(NODE *);
  389. extern NODE *lshowturtle(NODE *);
  390. extern NODE *lhideturtle(NODE *);
  391. extern NODE *lshownp(NODE *);
  392. extern NODE *lsetheading(NODE *);
  393. extern NODE *lheading(NODE *);
  394. extern NODE *pos_int_vector_arg(NODE *);
  395. extern NODE *ltowards(NODE *);
  396. extern NODE *lpos(NODE *);
  397. extern NODE *lscrunch(NODE *);
  398. extern NODE *lhome(NODE *);
  399. extern NODE *lclearscreen(NODE *);
  400. extern NODE *lclean(NODE *);
  401. extern NODE *lsetpos(NODE *);
  402. extern NODE *lsetxy(NODE *);
  403. extern NODE *lsetx(NODE *);
  404. extern NODE *lsety(NODE *);
  405. extern NODE *lwrap(NODE *);
  406. extern NODE *lfence(NODE *);
  407. extern NODE *lwindow(NODE *);
  408. extern NODE *lfill(NODE *);
  409. extern NODE *llabel(NODE *);
  410. extern NODE *ltextscreen(NODE *);
  411. extern NODE *lsplitscreen(NODE *);
  412. extern NODE *lfullscreen(NODE *);
  413. extern NODE *lpendownp(NODE *);
  414. extern NODE *lpenmode(NODE *);
  415. extern NODE *lpencolor(NODE *);
  416. extern NODE *lbackground(NODE *);
  417. extern NODE *lpensize(NODE *);
  418. extern NODE *lpenpattern(NODE *);
  419. extern NODE *lpendown(NODE *);
  420. extern NODE *lpenup(NODE *);
  421. extern NODE *lpenpaint(NODE *);
  422. extern NODE *lpenerase(NODE *);
  423. extern NODE *lpenreverse(NODE *);
  424. extern NODE *lsetpencolor(NODE *);
  425. extern NODE *lsetbackground(NODE *);
  426. extern NODE *lsetpalette(NODE *);
  427. extern NODE *lpalette(NODE *);
  428. extern NODE *lsetpensize(NODE *);
  429. extern NODE *lsetpenpattern(NODE *);
  430. extern NODE *lsetscrunch(NODE *);
  431. extern NODE *lmousepos(NODE *);
  432. extern NODE *lbuttonp(NODE *);
  433. extern NODE *ltone(NODE *);
  434. extern NODE *larc(NODE *);
  435. extern NODE *lrefresh(NODE *);
  436. extern NODE *lnorefresh(NODE *);
  437. extern void redraw_graphics(void);
  438. extern void resize_record(int, int);
  439.  
  440. #ifdef mac
  441.  
  442. #define SIGQUIT SIGABRT
  443.  
  444. /* macterm.c */
  445. extern void init_mac_memory(void);
  446. extern BOOLEAN check_mac_stop(void);
  447. extern void  term_init_mac(void);
  448. extern void mac_gotoxy(int, int);
  449. extern NODE *lsetwindowtitle(NODE *);
  450. extern NODE *lsettextfont(NODE *);
  451. extern NODE *lsettextsize(NODE *);
  452. extern NODE *lsettextstyle(NODE *);
  453. extern NODE *lsetwindowsize(NODE *);
  454. extern NODE *lsetwindowxy(NODE *);
  455. extern NODE *lnewconsole(NODE *);
  456. extern NODE *lgraphtext(NODE *);
  457. extern NODE *lregulartext(NODE *);
  458. extern NODE *lcaninverse(NODE *);
  459.  
  460. extern BOOLEAN mac_edit();
  461. extern WindowPtr graphics_window, listener_window;
  462. #endif
  463.  
  464. #ifdef __ZTC__   /* ztcterm.c */
  465. extern BOOLEAN in_graphics_mode, in_splitscreen;
  466. extern int ibm_screen_bottom;
  467. #include <fg.h>
  468. extern fg_coord_t MaxX, MaxY;
  469. extern void outtext(char *);
  470. extern void init_ibm_memory(void);
  471. extern volatile int ctrl_c_count;
  472. extern BOOLEAN check_ibm_stop(void);
  473. extern void term_init_ibm(void);
  474. extern void ibm_gotoxy(int, int);
  475. extern void ibm_clear_text(void);
  476. extern void ibm_clear_screen(void);
  477. extern void ibm_plain_mode(void);
  478. extern void ibm_bold_mode(void);
  479. extern void erase_graphics_top(void);
  480. extern void ztc_set_penc(FIXNUM);
  481. extern void t_screen(void);
  482. extern void s_screen(void);
  483. extern void check_scroll(void);
  484. extern void ztc_put_char(int);
  485. extern void fix_cursor(void);
  486. extern void zflush(void);
  487. extern void newline_bugfix(void);
  488. extern void ztc_getcr(void);
  489. #endif
  490.  
  491. #ifdef x_window
  492. /* xgraphics.c */
  493. extern void x_window_init(int, char **);
  494. #endif
  495.  
  496. #ifdef WIN32
  497. /* Win32trm.c */
  498.  
  499. #undef WIN32_DEBUG
  500.  
  501. #undef CONSOLE
  502.  
  503. #ifdef WIN32_DEBUG
  504. extern void WinDebug(char *);
  505. #endif
  506.  
  507. extern int in_graphics_mode, in_splitscreen, cur_len, read_index;
  508. extern char *read_line, buffered_char;
  509. extern int char_mode;
  510. extern int line_avail, char_avail;
  511. extern void win32_advance_line(void);
  512. extern char *eight_dot_three(char *);
  513. extern BOOLEAN check_ibm_stop(void);
  514. extern NODE* win32_lsetcursor(NODE *);
  515. extern int win32_putc(char, FILE*);
  516. extern void win32_charmode_off(void), win32_charmode_on(void);
  517. extern void win32_repaint_screen(void);
  518. extern void win32_clear_text(void);
  519. extern void ibm_plain_mode(void);
  520. extern void ibm_bold_mode(void);
  521. extern void win32_update_text(void);
  522. extern void moveto(int, int);
  523. extern void lineto(int, int);
  524. extern void draw_string(char *);
  525. extern int win32_screen_bottom(void);
  526. extern void win32_text_cursor(void);
  527.  
  528. #define SIGQUIT SIGABRT
  529.  
  530. #endif
  531.  
  532. #ifdef WIN32
  533. #define rd_putc win32_putc
  534. #else /* !WIN32 */
  535. #define rd_putc putc
  536. #endif
  537.