home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / APPS / DVI_MGR / dvimgr_s.lzh / dvimgr / machdefs.h < prev    next >
Text File  |  1993-08-06  |  27KB  |  910 lines

  1. /* -*-C-*- machdefs.h */
  2. /*-->machdefs*/
  3. /**********************************************************************/
  4. /****************************** machdefs ******************************/
  5. /**********************************************************************/
  6.  
  7. /*--------------------------------------------------------------------*/
  8. /* Modified for use with DVIDECW driver     (13.02.90)              */
  9. /* Changed FONTPATH, FONTLIST and DVIHELP symbols for OS_VMS          */
  10. /*--------------------------------------------------------------------*/
  11.  
  12. /*--------------------------------------------------------------------*/
  13. /* Modified for use with MGR under OS-9/68k                           */
  14. /* Added new symbols OS_OSK and OSK_MGR.             23-Jun-1993  lcs */
  15. /*--------------------------------------------------------------------*/
  16.  
  17. /***********************************************************************
  18.  
  19. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  20. This file should contain definitions for symbols used for all  operating
  21. system /  implementation  dependencies, and  if  the driver  family  has
  22. already been implemented on  you machine, this should  be the only  file
  23. requiring changes.
  24.  
  25. How to change this file:
  26.     * locate the operating system and implementation definitions;
  27.       they are surrounded by "=====" comment strings.
  28.     * comment out the definitions you do not want, and select the
  29.       ones for your system
  30.     * if adding a new operating system, create a new symbol OS_xxx
  31.       for it and add a new #if OS_xxx ... #endif section for its
  32.       changes.
  33.         * if adding a new implementation for an existing operating
  34.       system, create a new symbol for it and add appropriate
  35.       conditionals inside its #if OS_xxx ... #end section.
  36.     * if you must replace a standard C library function, replace
  37.       instances of its use in the source code with an upper-case
  38.       equivalent (e.g. ungetc --> UNGETC), then define the
  39.       upper-case name below in the generic section, plus the
  40.       operating-system section.
  41.  
  42. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  43.  
  44. List of symbols actually used for #if's [14-Aug-87]
  45.  
  46. Flags and strings:
  47.     ALLOW_INTERRUPT    -- allow interactive interrupt
  48.     ANSI_PROTOTYPES    -- draft ANSI C function prototype declarations are
  49.                supported
  50.     ANSI_LIBRARY    -- draft ANSI C library functions conformance
  51.     ARITHRSHIFT    -- implementation uses arithmetic (not logical) right
  52.                shift
  53.     DVIHELP        -- how to find documentation (for usage())
  54.     DVIPREFIX    -- prefix to standard 3-character extension of output
  55.                and log files
  56.     FASTZERO    -- fast bitmap zeroing by external assembly language
  57.                routine
  58.     FONTLIST    -- font type search list (PK, GF, PXL)
  59.     FONTPATH    -- font directory path
  60.     HIRES        -- high resolution variant of bitmap output
  61.     HOST_WORD_SIZE    -- host integer word size in bits
  62.         PS_MAXWIDTH    -- approximate line width limit for PostScript output
  63.     PS_SHORTLINES    -- shorter output lines in PostScript
  64.     PS_XONXOFFBUG    -- PostScript version 23.0 Xon/Xoff bug workaround
  65.     PXLID        -- TeX PXL file ID
  66.     RB_OPEN        -- fopen() mode flags for binary read
  67.     SEGMEM        -- segmented memory (Intel); bitmap is raster vector
  68.     STDRES        -- standard resolution (200 dpi)
  69.     SUBPATH        -- substitution font file path
  70.     TEXFONTS    -- TeX font file path environment variable
  71.     TEXINPUTS    -- TeX input file path environment variable
  72.     USEGLOBALMAG    -- allow runtime global magnification scaling
  73.     VIRTUAL_FONTS    -- implement virtual font caching
  74.     WB_OPEN        -- fopen() mode flags for binary write
  75.     ZAPTHISOUT    -- remove some obsolete code
  76.  
  77. Alternate library routines  for misfeature workarounds  (these have  the
  78. same names as standard library routines, but upper-cased):
  79.     EXIT
  80.     FOPEN
  81.     FSEEK
  82.     FTELL
  83.     GETENV
  84.     MALLOC(n)
  85.     READ
  86.     REWIND(fp)
  87.     UNGETC
  88.  
  89. C Implementations:
  90.     ATT        -- AT&T Unix (System III, V)
  91.     BSD41        -- Berkeley 4.1BSD
  92.     BSD42        -- Berkeley 4.2BSD
  93.     HPUX        -- HP 9000 series Unix (System V based)
  94.     IBM_PC_LATTICE    -- IBM PC Lattice C compiler
  95.     IBM_PC_MICROSOFT-- IBM PC Microsoft Version 3.x or later C compiler
  96.     IBM_PC_WIZARD    -- IBM PC Wizard C compiler
  97.     KCC_20        -- SRI's KCC Compiler on TOPS-20
  98.     PCC_20        -- Portable C Compiler on TOPS-20
  99.  
  100. Operating systems:
  101.     OS_ATARI    -- Atari 520ST+ TOS (similar to MS DOS)
  102.         OS_OSK          -- Microware OS-9/68k
  103.     OS_PCDOS    -- IBM (and clones) PC DOS and MS DOS
  104.     OS_TOPS20    -- DEC-20 TOPS-20
  105.     OS_UNIX        -- Unix (almost any variant)
  106.     OS_VAXVMS    -- VAX VMS
  107.  
  108. Device names (defined in each DVIxxx.C file):
  109.     APPLEIMAGEWRITER -- Apple ImageWriter printer
  110.     BBNBITGRAPH    -- BBN BitGraph terminal
  111.     CANON_A2    -- Canon LBP-8 A2 laser printer
  112.     DECLA75        -- DEC LA75 printer
  113.     DECLN03PLUS    -- DEC LN03-PLUS laser printer
  114.     EPSON        -- Epson 9-pin family dot-matrix printer
  115.     GOLDENDAWNGL100    -- Golden Dawn GL100 laser printer
  116.     HPJETPLUS    -- Hewlett-Packard Laser Jet Plus (downloaded fonts)
  117.     HPLASERJET    -- Hewlett-Packard Laser Jet (bitmap display)
  118.     IMPRESS        -- imPRESS (IMAGEN laser printer)
  119.     MPISPRINTER    -- MPI Sprinter printer
  120.     OKIDATA2410    -- OKIData 2410 printer
  121.     POSTSCRIPT    -- Adobe PostScript (Apple LaserWriter laser printer)
  122.     PRINTRONIX    -- Printronix (DEC LXY-11, C-Itoh) printer
  123.     TOSHIBAP1351    -- Toshiba P-1351 dot matrix printer
  124.  
  125. ***********************************************************************/
  126.  
  127. /**********************************************************************
  128. Define all symbols for devices, operating systems, and implementations
  129. to be explicitly 0, unless it is expected that they might be set at
  130. compile time.
  131. ***********************************************************************/
  132.  
  133. #define ALLOW_INTERRUPT    0
  134. #define ANSI_PROTOTYPES    0
  135.  
  136. #ifndef ANSI_LIBRARY        /* may be specified at compile time */
  137. #define ANSI_LIBRARY    0
  138. #endif
  139.  
  140. #if    ANSI_LIBRARY
  141. #undef ANSI_PROTOTYPES
  142. #define ANSI_PROTOTYPES    1    /* If library conforms, declarations do too */
  143. #endif
  144.  
  145. #define ARITHRSHIFT    1 /* most C compilers use arithmetic right shift */
  146. #define DISKFULL(fp)    (ferror(fp) && (errno == ENOSPC))
  147. #define DVIEXT        ".dvi"
  148. #define DVIPREFIX    "dvi-"
  149. #define EXIT        exit
  150. #define FASTZERO    0
  151.  
  152. /* The following definitions work for at least PCC-20, BSD 4.2 and  4.3,
  153. and HPUX;  VAX  VMS  has  an extra  level  of  indirection.   Check  the
  154. definition of fileno(fp) in stdio.h; on PCC-20, it is
  155.     #define fileno(p) ((p)->_file)
  156. */
  157. #define FILE_CNT(fp)    (fp)->_cnt
  158. #define FILE_BASE(fp)    (fp)->_base
  159. #define FILE_PTR(fp)    (fp)->_ptr
  160.  
  161. /* #define FONTLIST    0 -- can be set at compile time */
  162. /* #define FONTPATH    0 -- can be set at compile time */
  163.  
  164. #define FOPEN        fopen
  165. #define FSEEK        fseek
  166. #define FTELL        ftell
  167. #define GETENV        getenv
  168. #define HIRES        0
  169. #define MALLOC(n)    malloc(n)
  170. #define MAXDRIFT    2    /* we insist that
  171.                 abs|(hh-pixel_round(h))<=MAXDRIFT| */
  172.  
  173. /* MAXOPEN  should  be 6  less  than the  system  limit on  open  files,
  174. allowing for  files  open  on stdin,  stdout,  stderr,  .dvi,  .dvi-log,
  175. .dvi-xxx, plus MAXOPEN font  files.  It may  be additionally limited  by
  176. the amount of memory available for buffers (e.g. IBM PC). */
  177. #define MAXOPEN        14
  178.  
  179. /* #define PS_MAXWIDTH  72 -- can be set at compile time */
  180.  
  181. /* #define PS_SHORTLINES 0 -- can be set at compile time */
  182.  
  183. #define PS_XONXOFFBUG    0
  184. #define PXLID        0
  185. #define RB_OPEN        "r"
  186.  
  187. /* For virtual font caching to succeed, read() must return the requested
  188. number of bytes, and  preferably do this  with one system   call  and no
  189. double buffering. */
  190.  
  191. #define READ        read
  192.  
  193. /* In  many  implementations, rewind(fp)  is  defined as  equivalent  to
  194. fseek(fp,0L,0).  In  some, however  (e.g.  PCC-20,  and probably  others
  195. based on PCC), it additionally discards input buffer contents, which may
  196. cause unnecessary I/O, and in the case of virtual font caching,   clears
  197. the cache.  Defining  it in  terms of fseek()  should be  okay, but  the
  198. implementation of fseek() should be checked. */
  199.  
  200. #define REWIND(fp)    FSEEK(fp,0L,0)
  201.  
  202. #define SEGMEM        0    /* may be reset by dvixxx for big bitmaps */
  203. #define STDRES        0
  204.  
  205. /* #define SUBPATH    0 -- can be set at compile time */
  206.  
  207. #define SUBEXT        ".sub"
  208. #define SUBNAME        "texfonts"
  209.  
  210. /* #define TEXFONTS    0 -- can be set at compile time */
  211. /* #define TEXINPUTS    0 -- can be set at compile time */
  212.  
  213. #define UNGETC        ungetc
  214. #define USEGLOBALMAG    0
  215. #define WB_OPEN        "w"
  216. #define ZAPTHISOUT    0
  217.  
  218.  
  219. /**********************************************************************/
  220. /* Clear all implementation/operating-system flags--reset later */
  221.  
  222. #define ATT        0    /* define zero or one of these */
  223. #define BSD41        0
  224. #define BSD42        0
  225. #define HPUX        0
  226. #define IBM_PC_LATTICE    0
  227. #define IBM_PC_MICROSOFT    0
  228. #define IBM_PC_WIZARD    0
  229. #define KCC_20        0
  230. #define PCC_20        0
  231.  
  232. #define OS_ATARI    0    /* define one of these */
  233. #define OS_OSK          1
  234. #define OS_PCDOS    0
  235. #define OS_TOPS20    0
  236. #define OS_UNIX        0
  237. #define OS_VAXVMS    0
  238.  
  239. #define APPLEIMAGEWRITER    0    /* one will be defined by DVIxxx */
  240. #define BBNBITGRAPH    0
  241. #define CANON_A2    0
  242. #define DECLA75        0
  243. #define DECLN03PLUS    0
  244. #define EPSON        0
  245. #define GOLDENDAWNGL100    0
  246. #define HPJETPLUS    0
  247. #define HPLASERJET    0
  248. #define IMPRESS        0
  249. #define MPISPRINTER    0
  250. #define OKIDATA2410    0
  251. #define POSTSCRIPT    0
  252. #define PRINTRONIX    0
  253. #define TOSHIBAP1351    0
  254. #define VIRTUAL_FONTS    0
  255.  
  256.  
  257. /***********************************************************************
  258. Define operating system and implementation  here.  Since these have  all
  259. been explicitly set  to 0  above, we  issue #undef's  to avoid  compiler
  260. macro redefinition warning messages.
  261. ***********************************************************************/
  262.  
  263. /*====================
  264. #undef PCC_20
  265. #undef OS_TOPS20
  266. #define PCC_20        1
  267. #define OS_TOPS20    1
  268. ====================*/
  269.  
  270. /*====================
  271. #undef KCC_20
  272. #undef OS_TOPS20
  273. #define KCC_20        1
  274. #define OS_TOPS20    1
  275. ====================*/
  276.  
  277. /*====================
  278. #undef  OS_ATARI
  279. #define OS_ATARI    1
  280. ====================*/
  281.  
  282. #undef  OS_OSK
  283. #define OS_OSK      1
  284.  
  285. /*====================
  286. #undef  IBM_PC_LATTICE
  287. #undef  OS_PCDOS
  288. #define IBM_PC_LATTICE    1
  289. #define OS_PCDOS    1
  290. ====================*/
  291.  
  292. /*
  293. #undef  IBM_PC_MICROSOFT
  294. #undef  OS_PCDOS
  295. #define IBM_PC_MICROSOFT    1
  296. #define OS_PCDOS    1
  297. */
  298.  
  299. /*====================
  300. #undef  IBM_PC_WIZARD
  301. #undef  OS_PCDOS
  302. #define IBM_PC_WIZARD    1
  303. #define OS_PCDOS    1
  304. ====================*/
  305.  
  306. /*====================
  307. #undef  OS_VAXVMS
  308. #define OS_VAXVMS    1
  309. ====================*/
  310.  
  311. #if    (OS_ATARI | OS_OSK | OS_PCDOS | OS_TOPS20 | OS_UNIX | OS_VAXVMS)
  312. #else
  313. #undef  OS_UNIX
  314. #define OS_UNIX        1        /* provide default operating system */
  315. #endif
  316.  
  317.  
  318. /**********************************************************************/
  319.  
  320. #if    OS_ATARI
  321.  
  322. #undef  BSD42
  323. #define BSD42        1
  324.  
  325. #undef  DISKFULL
  326. #define DISKFULL(fp)    ferror(fp)
  327.  
  328. #define DVIHELP     "type e:\\tex\\dvi.hlp"
  329.  
  330. #ifdef  FONTLIST     /* can be set at compile time */
  331. #else
  332. #define FONTLIST    "PK-GF-PXL"    /* preferred search order */
  333. #endif /* FONTLIST */
  334.  
  335. #ifdef FONTPATH         /* can be set at compile time */
  336. #else
  337. #define FONTPATH    "e:\\tex\\fonts\\"
  338. #endif
  339.  
  340. #define HOST_WORD_SIZE    32    /* must be 32 or larger -- used in */
  341.                 /* signex to pack 8-bit bytes back */
  342.                 /* into integer values, and in dispchar */
  343.                 /* and fillrect for managing character */
  344.                 /* raster storage. */
  345. #define MAXFNAME    64    /* longest host complete filename */
  346.  
  347. #ifndef PS_MAXWIDTH
  348. #define PS_MAXWIDTH    72
  349. #endif
  350.  
  351. #ifndef PS_SHORTLINES
  352. #define PS_SHORTLINES    1
  353. #endif
  354.  
  355. #ifdef SUBPATH            /* can be set at compile time */
  356. #else
  357. #define SUBPATH     "e:\\tex\\inputs\\"
  358. #endif
  359.  
  360. #ifdef TEXINPUTS        /* can be set at compile time */
  361. #else
  362. #define TEXINPUTS    "TEXINPUTS"
  363. #endif
  364.  
  365. #define TEXFONTS    "TEXFONTS"
  366.  
  367. #endif /* OS_ATARI */
  368.  
  369.  
  370.  
  371. /**********************************************************************/
  372.  
  373. #if    OS_OSK           /* 23-Jun-1993  lcs */
  374.  
  375. #undef BSD42
  376. #define BSD42        0
  377.  
  378. #undef  DVIPREFIX
  379. #define DVIPREFIX    "dvi_log"
  380.  
  381. #define DVIHELP        "man dvimgr"
  382.  
  383. #ifdef FONTLIST        /* can be set at compile time */
  384. #else
  385. #define FONTLIST    "PK-GF-PXL"    /* preferred search order */
  386. #endif /* FONTLIST */
  387.  
  388. #ifdef FONTPATH            /* can be set at compile time */
  389. #else
  390. #define FONTPATH    "/h0/usr/system/tex/fonts/"
  391. #endif
  392.  
  393. #undef MAXOPEN
  394.  
  395. #define MAXFNAME    256     /* Hope this will be long enough. */
  396. #define MAXOPEN        26
  397.  
  398. #ifndef PS_MAXWIDTH
  399. #define PS_MAXWIDTH    72
  400. #endif
  401.  
  402. #ifndef PS_SHORTLINES
  403. #define PS_SHORTLINES    1       /* some Unix utilities fail with long lines */
  404. #endif
  405.  
  406. #ifdef SUBPATH            /* can be set at compile time */
  407. #else
  408. #define SUBPATH        "/h0/usr/system/tex/macros/"
  409. #endif
  410.  
  411. #if    TEXINPUTS        /* can be set at compile time */
  412. #else
  413. #define TEXINPUTS    "TEXINPUTS"
  414. #endif
  415.  
  416. #if    TEXFONTS            /* can be set at compile time */
  417. #else
  418. #define TEXFONTS    "TEXFONTS"
  419. #endif
  420.  
  421. #define HOST_WORD_SIZE    32    /* must be 32 or larger -- used in */
  422.                 /* signex to pack 8-bit bytes back */
  423.                 /* into integer values, and in dispchar */
  424.                 /* and fillrect for managing character */
  425.                 /* raster storage. */
  426. #endif /* OS_OSK */
  427.  
  428.  
  429.  
  430. /**********************************************************************/
  431.  
  432. #if    OS_PCDOS
  433.  
  434. #if    IBM_PC_MICROSOFT
  435. #undef ANSI_PROTOTYPES
  436. #define ANSI_PROTOTYPES    1
  437.  
  438. /*
  439. Argument type checking in MSC Version 4.0 is selected by LINT_ARGS.
  440. MSC Version 5.0 has it selected by default.  For Version 5.0,
  441. ANSI_LIBRARY should be defined at compile time so as to get
  442. ANSI-conformant library function declarations.
  443. Treating float as double eliminates lots of data conversion warnings with 
  444. both Versions 4.0 and 5.0.
  445. */
  446. #define float double    
  447. #define LINT_ARGS    1
  448.  
  449. #undef MALLOC
  450. #define MALLOC(n)    calloc(n,1)
  451. #endif /* IBM_PC_MICROSOFT */
  452.  
  453. #define DVIHELP        "type d:\\tex\\dvi.hlp"
  454.  
  455. #undef DVIPREFIX
  456. #define DVIPREFIX    ""
  457.  
  458. #ifdef FONTLIST        /* can be set at compile time */
  459. #else
  460. #define FONTLIST    "PK-GF-PXL"    /* preferred search order */
  461. #endif /* FONTLIST */
  462.  
  463. #ifdef FONTPATH            /* can be set at compile time */
  464. #else
  465. #define FONTPATH    "d:\\tex\\fonts\\"
  466. #endif /* FONTPATH */
  467.  
  468. #define HOST_WORD_SIZE    32    /* must be 32 or larger -- used in */
  469.                 /* signex to pack 8-bit bytes back */
  470.                 /* into integer values, and in dispchar */
  471.                 /* and fillrect for managing character */
  472.                 /* raster storage. */
  473. #define MAXFNAME    64    /* longest host complete filename */
  474.  
  475. #undef MAXOPEN
  476. #define MAXOPEN        5    /* limit on number of open font files */
  477.  
  478. #ifndef PS_MAXWIDTH
  479. #define PS_MAXWIDTH    72
  480. #endif
  481.  
  482. #ifndef PS_SHORTLINES
  483. #define PS_SHORTLINES    1
  484. #endif
  485.  
  486. #undef  RB_OPEN
  487. #define RB_OPEN        "rb"
  488.  
  489. #ifdef SUBPATH            /* can be set at compile time */
  490. #else
  491. #define SUBPATH        "d:\\tex\\inputs\\"
  492. #endif
  493.  
  494. #if    TEXINPUTS        /* can be set at compile time */
  495. #else
  496. #define TEXINPUTS    "TEXINPUTS"
  497. #endif
  498.  
  499. #define TEXFONTS    "TEXFONTS"
  500.  
  501. #if    IBM_PC_MICROSOFT
  502. #undef VIRTUAL_FONTS
  503. #define VIRTUAL_FONTS    1
  504. #endif
  505.  
  506. #undef  WB_OPEN
  507. #define WB_OPEN        "wb"
  508.  
  509. #endif /* OS_PCDOS */
  510.  
  511.  
  512. /***********************************************************************/
  513. #if    OS_TOPS20
  514.  
  515. /************************************************************************
  516. **
  517. **  Adapted for the DEC-20 TOPS-20  operating system with Jay  Lepreau's
  518. **  PCC-20  by  Nelson  H.F.    Beebe,  College  of  Science   Computer,
  519. **  University of Utah, Salt Lake City, UT 84112, Tel: (801) 581-5254.
  520. **
  521. **  The PCC_20 switch is  used to get around  variations on the  DEC-20.
  522. **  The major one is  that text files have  7-bit bytes, while the  .DVI
  523. **  file and the font files have 8-bit bytes.  For the latter, we use  a
  524. **  routine f20open which provides  the necessary interface for  opening
  525. **  with a ddifferent byte size.  PCC-20 follows many other C  compilers
  526. **  in that only the first 8 characters of identifiers are looked at, so
  527. **  massive substitutions  were  necessary  in the  file  commands.h  to
  528. **  shorten the long names there.
  529. **
  530. **  The PCC_20 switch is also used  to get variant font directory  names
  531. **  and to select TOPS-20 jsys  code.  TOPS-20 is a wonderous  operating
  532. **  system with  capabilities far  beyond  most of  its  contemporaries.
  533. **  Like Topsy, it  just grew, and  consequently, its many  capabilities
  534. **  are not  well  integrated.     The terminal  control  jsys'es  (MTOPR,
  535. **  RFMOD, SFMOD, STPAR, RFCOC, SFCOC and TLINK) are particularly poorly
  536. **  done -- RFMOD returns  the JFN mode word,  particular bits of  which
  537. **  must be set by SFMOD,  STPAR, and TLINK.  Why  could there not be  a
  538. **  "return  the  terminal  state"  and  "restore  the  terminal  state"
  539. **  jsys'es?  Some of this  may in fact be  already integrated into  the
  540. **  PCC-20 C run-time library, but since it is totally undocumented  (an
  541. **  all-too common problem with C),  it is essentially unusable in  that
  542. **  form.
  543. **
  544. **  The OS_TOPS20 switch is used in one place to get ioctl.h included at
  545. **  the right point, and in several places to get error messages  output
  546. **  with Tops-20 conventions in  column 1: query  (?)  causes batch  job
  547. **  abort, percent (%) flags a warning.
  548. **
  549. ***********************************************************************/
  550.  
  551. #if    KCC_20
  552. /* KCC wants all #if symbols defined before use. */
  553. #ifndef FONTLIST
  554. #define FONTLIST "PK-GF-PXL"
  555. #endif
  556.  
  557. #ifndef FONTPATH
  558. #define FONTPATH "TEXFONTS:"
  559. #endif
  560.  
  561. #ifndef SUBPATH
  562. #define SUBPATH "TEXINPUTS:"
  563. #endif
  564.  
  565. #ifndef TEXFONTS
  566. #define TEXFONTS "TEXFONTS:"
  567. #endif
  568.  
  569. #ifndef TEXINPUTS
  570. #define TEXINPUTS "TEXINPUTS:"
  571. #endif
  572.  
  573. #undef VIRTUAL_FONTS
  574. #define VIRTUAL_FONTS 0        /* cannot support this yet */
  575.  
  576. #endif
  577.  
  578. #if    KCC_20
  579. #include <jsys.h>
  580. /* KCC-20 and PCC-20  have similar enough JSYS  interfaces that we  just
  581. define values for KCC-20 using PCC-20 names. */
  582. #define JSchfdb    CHFDB
  583. #define JSmtopr    MTOPR
  584. #define JSrfcoc    RFCOC
  585. #define JSrfmod    RFMOD
  586. #define JSsfcoc    SFCOC
  587. #define JSsfmod    SFMOD
  588. #define JSsti    STI
  589. #define JSstpar    STPAR
  590. #define JStlink    TLINK
  591. #define Getmask(name)      ( 1?name )
  592. #define Getshift(name)     ( 0?name )
  593. #define Absmask(name) ( (1?name) << (0?name) )    /* maybe use this one */
  594. #define Value(name)   ( (1?name) << (0?name) )    /* maybe use this one */
  595. #define makefield(name, value)    ( ((value) & Getmask(name)) << Getshift(name) )
  596. #define getfield(var, name)    ( (var) >> Getshift(name) & Getmask(name) )
  597. #define setfield(var, name, value) ( (var) = ((var) & ~Absmask(name)) |\
  598.     makefield(name, value) )
  599. #endif
  600.  
  601. #if    PCC_20
  602. #undef  ARITHRSHIFT
  603. #define ARITHRSHIFT    0    /* PCC-20 uses logical right shift */
  604. #undef  DISKFULL
  605. #define DISKFULL(fp)    ferror(fp)    /* PCC-20 does not always set errno */
  606. #endif
  607.  
  608. #define DVIHELP    "help dvi\nor\ntype hlp:dvi.hlp\nor\nxinfo local clsc dvi"
  609.  
  610. #if    PCC_20
  611. #undef FASTZERO
  612. #define FASTZERO    1    /* for fast assembly language memory zeroing */
  613. #endif
  614.  
  615. #ifdef FONTLIST        /* can be set at compile time */
  616. #else
  617. #define FONTLIST    "PK-GF-PXL"    /* preferred search order */
  618. #endif /* FONTLIST */
  619.  
  620. #ifdef FONTPATH            /* can be set at compile time */
  621. #else
  622. #define FONTPATH    "/texfonts/"
  623. #endif
  624.  
  625. #undef FOPEN
  626. #define FOPEN        f20open    /* private version for 8-bit binary */
  627.  
  628. #define HOST_WORD_SIZE    36
  629.  
  630. #undef MAXFNAME
  631. #define MAXFNAME    256    /* longest host complete filename */
  632.  
  633. #ifdef KCC_20
  634. #undef MAXOPEN
  635. #define MAXOPEN        26
  636. #endif
  637.  
  638. #ifdef PCC_20
  639. #undef MAXOPEN
  640. #define MAXOPEN        14
  641. #endif
  642.  
  643. #ifndef PS_MAXWIDTH
  644. #define PS_MAXWIDTH    72
  645. #endif
  646.  
  647. #ifndef PS_SHORTLINES
  648. #define PS_SHORTLINES    1
  649. #endif
  650.  
  651. #undef  RB_OPEN
  652. #define RB_OPEN        "rb"
  653.  
  654. #ifdef PCC_20
  655. #undef READ
  656. #define READ        _read    /* fast version with one system call */
  657. #endif
  658.                 /* and single buffering */
  659. #ifdef SUBPATH
  660. #else
  661. #define SUBPATH        "/texinputs/"
  662. #endif
  663.  
  664. #ifdef TEXFONTS            /* can be set at compile time */
  665. #else
  666. #define TEXFONTS    "TEXFONTS"
  667. #endif
  668.  
  669. #ifdef TEXINPUTS        /* can be set at compile time */
  670. #else
  671. #define TEXINPUTS    "TEXINPUTS"
  672. #endif
  673.  
  674. #if    PCC_20
  675. #undef VIRTUAL_FONTS
  676. #define VIRTUAL_FONTS    1
  677. #endif
  678.  
  679. #undef  WB_OPEN
  680. #define WB_OPEN        "wb"
  681.  
  682. /**********************************************************************/
  683. /* The following definitions (down to the endif) are taken from */
  684. /* monsym.h.   It is too big for CPP to handle, so this kludge is */
  685. /* necessary until CPP's tables can be enlarged. */
  686.  
  687. /* selected fields for CHFDB% */
  688. #define CF_nud        01:35-0        /* no update directory */
  689. #define CF_dsp        0777:35-17    /* fdb displacement */
  690. #define CF_jfn        0777777:35-35    /* jfn */
  691.  
  692. #define FBbyv        011        /* retention+bytesize+mode,,# of pages*/
  693. #define FB_ret        077:35-5    /* retention count */
  694.  
  695.  
  696. /* tty mode definitions */
  697.  
  698. #define MOrlw        030        /* read width */
  699. #define MOslw        031        /* set width */
  700. #define MOrll        032        /* read length */
  701. #define MOsll        033        /* set length */
  702.  
  703. #define MOsnt        034        /* set tty non-terminal status */
  704. #define MOsmn        01        /* no system messages(i.e. suppress) */
  705. #define MOsmy        00        /* yes system messages(default) */
  706. #define MOrnt        035        /* read tty non-terminal status */
  707.  
  708. /* fields of jfn mode word */
  709.  
  710. #define TT_osp        01:35-0        /* output suppress */
  711. #define TT_mff        01:35-1        /* mechanical formfeed present */
  712. #define TT_tab        01:35-2        /* mechanical tab present */
  713. #define TT_lca        01:35-3        /* lower case capabilities present */
  714. #define TT_len        0177:35-10    /* page length */
  715. #define TT_wid        0177:35-17    /* page width */
  716. #define TT_wak        017:35-23    /* wakeup field */
  717. #define TT_wk0        01:35-18    /* wakeup class 0 (unused) */
  718. #define TT_ign        01:35-19    /* ignore tt_wak on sfmod */
  719. #define TT_wkf        01:35-20    /* wakeup on formating control chars */
  720. #define TT_wkn        01:35-21    /* wakeup on non-formatting controls */
  721. #define TT_wkp        01:35-22    /* wakeup on punctuation */
  722. #define TT_wka        01:35-23    /* wakeup on alphanumerics */
  723. #define TT_eco        01:35-24    /* echos on */
  724. #define TT_ecm        01:35-25    /* echo mode */
  725. #define TT_alk        01:35-26    /* allow links */
  726. #define TT_aad        01:35-27    /* allow advice (not implemented) */
  727. #define TT_dam        03:35-29    /* data mode */
  728. #define TTbin        00        /* binary */
  729. #define TTasc        01        /* ascii */
  730. #define TTato        02        /* ascii and translate output only */
  731. #define TTate        03        /* ascii and translate echos only */
  732. #define TT_uoc        01:35-30    /* upper case output control */
  733. #define TT_lic        01:35-31    /* lower case input control */
  734. #define TT_dum        03:35-33    /* duplex mode */
  735. #define TTfdx        00        /* full duplex */
  736. #define TT0dx        01        /* not used, reserved */
  737. #define TThdx        02        /* half duplex (character) */
  738. #define TTldx        03        /* line half duplex */
  739. #define TT_pgm        01:35-34    /* page mode */
  740. #define TT_car        01:35-35    /* carrier state */
  741.  
  742. /* tlink */
  743.  
  744. #define TL_cro        01:35-0        /* clear remote to object link */
  745. #define TL_cor        01:35-1        /* clear object to remote link */
  746. #define TL_eor        01:35-2        /* establist object to remote link */
  747. #define TL_ero        01:35-3        /* establish remote to object link */
  748. #define TL_sab        01:35-4        /* set accept bit for object */
  749. #define TL_abs        01:35-5        /* accept bit state */
  750. #define TL_sta        01:35-6        /* set or clear advice */
  751. #define TL_aad        01:35-7        /* accept advice */
  752. #define TL_obj        0777777:35-35    /* object designator */
  753.  
  754. #endif /* OS_TOPS20 */
  755.  
  756. /**********************************************************************/
  757.  
  758. #if    OS_UNIX
  759.  
  760. #undef BSD42
  761. #define BSD42        1        /* want DVISPOOL code in dviterm.h */
  762.  
  763. #define DVIHELP        "man dvi\nor\napropos dvi"
  764.  
  765. #ifdef FONTLIST        /* can be set at compile time */
  766. #else
  767. #define FONTLIST    "PK-GF-PXL"    /* preferred search order */
  768. #endif /* FONTLIST */
  769.  
  770. #ifdef FONTPATH            /* can be set at compile time */
  771. #else
  772. #define FONTPATH    "/usr/lib/tex/fonts/"
  773. #endif
  774.  
  775. #undef MAXOPEN
  776.  
  777. #if    HPUX
  778. #define MAXFNAME    1024    /* longest host complete filename */
  779. #define MAXOPEN        50
  780. #else  /* NOT HPUX */
  781. #define MAXFNAME    256    /* longest host complete filename */
  782. #define MAXOPEN        14
  783. #endif /* HPUX */
  784.  
  785. #ifndef PS_MAXWIDTH
  786. #define PS_MAXWIDTH    72
  787. #endif
  788.  
  789. #ifndef PS_SHORTLINES
  790. #define PS_SHORTLINES    1       /* some Unix utilities fail with long lines */
  791. #endif
  792.  
  793. #ifdef SUBPATH            /* can be set at compile time */
  794. #else
  795. #define SUBPATH        "/usr/lib/tex/macros/"
  796. #endif
  797.  
  798. #if    TEXINPUTS        /* can be set at compile time */
  799. #else
  800. #define TEXINPUTS    "TEXINPUTS"
  801. #endif
  802.  
  803. #if    TEXFONTS            /* can be set at compile time */
  804. #else
  805. #define TEXFONTS    "TEXFONTS"
  806. #endif
  807.  
  808. #define HOST_WORD_SIZE    32    /* must be 32 or larger -- used in */
  809.                 /* signex to pack 8-bit bytes back */
  810.                 /* into integer values, and in dispchar */
  811.                 /* and fillrect for managing character */
  812.                 /* raster storage. */
  813. #endif /* OS_UNIX */
  814.  
  815.  
  816. /**********************************************************************/
  817.  
  818. #if    OS_VAXVMS
  819.  
  820. /***********************************************************************
  821. ** Several standard Unix library functions do not work properly with VMS
  822. ** C, or are not implemented:
  823. **
  824. **    exit()        -- wrong conventions for return code
  825. **    fseek()        -- fails on record-oriented files
  826. **    ftell()        -- fails on record-oriented files
  827. **    getchar()    -- waits for <CR> to be typed
  828. **    getenv()    -- colon- and case-sensitive
  829. **    getlogin()    -- not implemented
  830. **    qsort()        -- not implemented
  831. **    tell()        -- not implemented
  832. **    ungetc()    -- fails for any character with high-order bit set
  833. **    unlink()    -- not implemented (equivalent available)
  834. **
  835. ** The  file  VAXVMS.C  contains   workarounds;  it  must  be   compiled
  836. ** separately and loaded with each of the DVI drivers.
  837. ***********************************************************************/
  838.  
  839. #include <jpidef.h>        /* need for getjpi() in openfont() */
  840.  
  841. #define DVIHELP        "type tex$doc:DVIXXX.hlp"
  842. #define EXIT        vms_exit
  843.  
  844. #define FILE_CNT(fp)    (*fp)->_cnt
  845. #define FILE_BASE(fp)    (*fp)->_base
  846. #define FILE_PTR(fp)    (*fp)->_ptr
  847.  
  848. #ifndef FONTLIST        /* can be set at compile time */
  849. #define FONTLIST    "PK"    /* preferred search order */
  850. #endif /* FONTLIST */
  851.  
  852. #ifndef FONTPATH        /* can be set at compile time */
  853. #define FONTPATH    "TEX_FONTS:" /* Kellerman & Smith VMS TeX */
  854. #endif /* FONTPATH */
  855.  
  856. #define FSEEK        vms_fseek
  857. #define FTELL        vms_ftell
  858. #define GETENV        vms_getenv
  859. #define HOST_WORD_SIZE    32    /* must be 32 or larger -- used in */
  860.                 /* signex to pack 8-bit bytes back */
  861.                 /* into integer values, and in dispchar */
  862.                 /* and fillrect for managing character */
  863.                 /* raster storage. */
  864.  
  865. #define MAXFNAME    256    /* longest host complete filename */
  866.  
  867. #undef MAXOPEN
  868. #define MAXOPEN        14
  869.  
  870. #undef  RB_OPEN
  871. #define RB_OPEN        "rb"
  872.  
  873. #ifndef PS_MAXWIDTH
  874. #define PS_MAXWIDTH    72
  875. #endif
  876.  
  877. #ifndef  PS_SHORTLINES
  878. #define PS_SHORTLINES    1       /* VMS has trouble with long lines */
  879. #endif
  880.  
  881. #define READ        vms_read /* ordinary read() returns only one disk */
  882.                 /* at each call */
  883.  
  884. #ifndef SUBPATH            /* can be set at compile time */
  885. #define SUBPATH        "TEX_INPUTS:" /* Kellerman & Smith VMS TeX */
  886. #endif
  887.  
  888. #ifndef TEXINPUTS        /* can be set at compile time */
  889. #define TEXINPUTS    "TEX_INPUTS:"
  890. #endif
  891.  
  892. #ifndef TEXFONTS        /* can be set at compile time */
  893. #define TEXFONTS    "TEX_FONTS:"
  894. #endif
  895.  
  896. #define UNGETC        vms_ungetc
  897.  
  898. /* VIRTUAL_FONTS cannot be implemented  yet.  The code  works, but the
  899. calls to FSEEK() (vms_seek) result in _filbuf() being called to refill
  900. the buffer, obviating the pre-buffering.  Additional code in case 0 of
  901. vms_seek() can probably be developed to avoid this, but I have run out
  902. of time for now. */
  903.  
  904. #undef  WB_OPEN
  905. #define WB_OPEN        "wb"
  906.  
  907. #endif /* OS_VAXVMS */
  908.  
  909. /**********************************************************************/
  910.