home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume16 / nethack31 / patch2gg < prev    next >
Internet Message Format  |  1993-06-16  |  38KB

  1. Path: uunet!gatech!howland.reston.ans.net!europa.eng.gtefsd.com!emory!ogicse!news.tek.com!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v17i108:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch2gg/33
  5. Message-ID: <1v8j4k$jf9@ying.cna.tek.com>
  6. Date: 11 Jun 93 00:20:36 GMT
  7. Article-I.D.: ying.1v8j4k$jf9
  8. Organization: Tektronix, Inc, Redmond, OR, USA
  9. Lines: 1260
  10. Approved: billr@saab.CNA.TEK.COM
  11. NNTP-Posting-Host: saab.cna.tek.com
  12. Xref: uunet comp.sources.games:1784
  13.  
  14. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  15. Posting-number: Volume 17, Issue 108
  16. Archive-name: nethack31/Patch2gg
  17. Patch-To: nethack31: Volume 16, Issue 1-116
  18. Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11
  19.  
  20.  
  21.  
  22. #! /bin/sh
  23. # This is a shell archive.  Remove anything before this line, then unpack
  24. # it by saving it into a file and typing "sh file".  To overwrite existing
  25. # files, type "sh file -c".  You can also feed this as standard input via
  26. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  27. # will see the following message at the end:
  28. #        "End of archive 33 (of 33)."
  29. # Contents:  include/mactty.h sys/amiga/winstr.c sys/winnt/nhincl.mak
  30. # Wrapped by billr@saab on Thu Jun 10 16:55:09 1993
  31. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  32. if test -f 'include/mactty.h' -a "${1}" != "-c" ; then 
  33.   echo shar: Renaming existing file \"'include/mactty.h'\" to \"'include/mactty.h.orig'\"
  34.   mv -f 'include/mactty.h' 'include/mactty.h.orig'
  35. fi
  36. echo shar: Extracting \"'include/mactty.h'\" \(13365 characters\)
  37. sed "s/^X//" >'include/mactty.h' <<'END_OF_FILE'
  38. X/*    SCCS Id: @(#)mactty.h    3.1    93/03/01            */
  39. X/* Copyright (c) Jon W{tte 1993.                    */
  40. X/* NetHack may be freely redistributed.  See license for details.    */
  41. X
  42. X/*
  43. X * This header is the supported external interface for the "tty" window
  44. X * package. This package sports care-free handling of "dumb" tty windows 
  45. X * (preferrably using monospaced fonts) - it does NOT remember the strings
  46. X * sent to it; rather, it uses an offscreen bitmap.
  47. X * 
  48. X * For best performance, make sure it is aligned on a 32-pixel boundary
  49. X * (or at least a 16-pixel one) in black & white. For 24bit color,
  50. X * alignment doesn't matter, and for 8-bit color, alignment to every
  51. X * fourth pixel is most efficient.
  52. X *
  53. X * (c) Copyright 1993 Jon W{tte
  54. X */
  55. X
  56. X/*
  57. X * You should really not poke in the structures used by the tty window.
  58. X * However, since it uses the wRefCon of windows (by calling GetWRefCon
  59. X * and SetWRefCon) you lose that possibility. If you still want to store
  60. X * information about a window, the FIRST location _pointed to_ by the
  61. X * wRefCon will be a void * that you can use for whatever reasons. Don't
  62. X * take the address of this variable and expect it to stay the same
  63. X * across calls to the tty window.
  64. X *
  65. X * void * my_config_ptr = * ( void * * ) GetWRefCon ( tty_window ) ;
  66. X */
  67. X
  68. X/*
  69. X * The library uses the window's port temporarily through SetPortBits;
  70. X * that means you shouldn't do any funky things to the clipping region
  71. X * etc. Actually, you shouldn't even resize the window, as that will clip
  72. X * new drawing.
  73. X *
  74. X * Also, if you use this library under Pascal, remember that the string
  75. X * passed to add_tty_string() is a "C" style string with NO length byte,
  76. X * and a terminating zero byte at the end instead.
  77. X */
  78. X
  79. X#ifndef _H_tty_public
  80. X# define _H_tty_public
  81. X
  82. X#include <Windows.h>
  83. X#include <QDOffscreen.h>
  84. X#include <Fonts.h>
  85. X#include <Memory.h>
  86. X#include <OSUtils.h>
  87. X#include <Errors.h>
  88. X#include <GestaltEqu.h>
  89. X#include <Palettes.h>
  90. X#include <Desk.h>
  91. X#include <DiskInit.h>
  92. X#include <OSEvents.h>
  93. X
  94. X
  95. X/*
  96. X * If you export this library to Pascal, which doesn't have vsprintf
  97. X * to rely on, you will need to change this define to 0
  98. X */
  99. X#define PRINTF_TTY 1
  100. X/*
  101. X * If you want the functions getchar_tty and gets_tty, you have to define
  102. X * this. Currently not supported.
  103. X */
  104. X#define TTY_INPUT 0
  105. X/*
  106. X * If you want some fancy operations that not a normal TTY device normally
  107. X * supports, use EXTENDED_SUPPORT. For frames, area erases and area scrolls,
  108. X * plus bitmap graphics - RESOLUTION DEPENDENT, be sure to call
  109. X * get_tty_metrics and use those limits.
  110. X */
  111. X#define EXTENDED_SUPPORT 1
  112. X/*
  113. X * if you print a lot of single characters, accumulating each one in a
  114. X * clipping region will take too much time. Instead, define this, which
  115. X * will clip in rects.
  116. X */
  117. X#define CLIP_RECT_ONLY 1
  118. X
  119. Xtypedef enum tty_attrib {
  120. X
  121. X/*
  122. X * Flags relating to the general functioning of the window.
  123. X * These flags are passed at create_tty time, and changing them
  124. X * later will clear the screen.
  125. X */
  126. X    TTY_ATTRIB_FLAGS ,
  127. X/*
  128. X * When using proportional fonts, this will place each character
  129. X * separately, ensuring aligned columns (but looking ugly and taking
  130. X * time)
  131. X */
  132. X# define TA_MOVE_EACH_CHAR 1L
  133. X/*
  134. X * This means draw each change as it occurs instead of collecting the area
  135. X * and draw it all at once at update_tty() - slower, but more reliable.
  136. X */
  137. X# define TA_ALWAYS_REFRESH 2L
  138. X/*
  139. X * When reaching the right end, we either just stop drawing, or wrap to the
  140. X * next line.
  141. X */
  142. X# define TA_WRAP_AROUND 4L
  143. X/*
  144. X * Overstrike means that characters are added on top of each other; i e don't
  145. X * clear the letter beneath. This is faster, using srcOr under QuickDraw
  146. X */
  147. X# define TA_OVERSTRIKE 8L
  148. X/*
  149. X * We may want the window not to scroll when we reach the end line,
  150. X * but stop drawing instead.
  151. X */
  152. X# define TA_INHIBIT_VERT_SCROLL 16L
  153. X
  154. X/*
  155. X * Foreground and background colors. These only affect characters
  156. X * drawn by subsequent calls; not what's already there (but it does
  157. X * affect clears)
  158. X * On b/w screens these do nothing.
  159. X */
  160. X    TTY_ATTRIB_FOREGROUND ,
  161. X    TTY_ATTRIB_BACKGROUND ,
  162. X# define TA_RGB_TO_TTY(r) ((((long)((r).red>>8)&0xff)<<16)+\
  163. X    (((long)((r).green>>8)&0xff)<<8)+((long)((r).blue>>8)&0xff))
  164. X
  165. X/*
  166. X * Attributes relating to the cursor, and character set mappings
  167. X */
  168. X    TTY_ATTRIB_CURSOR ,
  169. X/*
  170. X * Blinking cursor is more noticeable when it's idle
  171. X */
  172. X# define TA_BLINKING_CURSOR 1L
  173. X/*
  174. X * When handling input, do we echo characters as they are typed?
  175. X */
  176. X# define TA_ECHO_INPUT 2L
  177. X/*
  178. X * Do we return each character code separately, or map delete etc? Note
  179. X * that non-raw input means getchar won't return anything until the user
  180. X * has typed a return.
  181. X */
  182. X# define TA_RAW_INPUT 4L
  183. X/*
  184. X * Do we print every character as it is (including BS, NL and CR!) or do
  185. X * do we interpret characters such as NL, BS and CR?
  186. X */
  187. X# define TA_RAW_OUTPUT 8L
  188. X/*
  189. X * When getting a NL, do we also move to the left?
  190. X */
  191. X# define TA_NL_ADD_CR 16L
  192. X/*
  193. X * When getting a CR, do we also move down?
  194. X */
  195. X# define TA_CR_ADD_NL 32L
  196. X/*
  197. X * Wait for input or return what we've got?
  198. X */
  199. X# define TA_NONBLOCKING_IO 64L
  200. X
  201. X/*
  202. X * A callback function for command keys entered when locked in an input loop.
  203. X * Calling convention:
  204. X * pascal void callback_function ( EventRecord * event , WindowPtr window ) ;
  205. X */
  206. X    TTY_COMMAND_KEY_CALLBACK ,
  207. X/*
  208. X * This function is called to allocate memory for the window. Note that
  209. X * create_tty doesn't create any memory (except that created by GetNewWindow)
  210. X * but init_tty_name and init_tty_number do allocate memory.
  211. X * Calling convention:
  212. X * pascal short allocate_memory ( WindowPtr window , void * * to_alloc ,
  213. X *     long size ) ;
  214. X * should return 0 for success, and error code for fail.
  215. X */
  216. X    TTY_ALLOCATE_MEMORY_FUNCTION ,
  217. X/*
  218. X * This is the counterpart to the allocate function, called to free memory.
  219. X * Calling convention:
  220. X * pascal short free_memory ( WindowPtr window , void * to_free ) ;
  221. X * should return 0 for success, and error code for fail.
  222. X */
  223. X    TTY_FREE_MEMORY_FUNCTION ,
  224. X/*
  225. X * Use this function to beep, for instance for too large buffer or for
  226. X * printing a bell character in non-RAW mode.
  227. X * pascal void ( * tty_beep ) ( WindowPtr window ) ;
  228. X */
  229. X     TTY_BEEP_FUNCTION ,
  230. X/*
  231. X * Use this macro to cast a function pointer to a tty attribute; this will help
  232. X * portability to systems where a function pointer doesn't fit in a long
  233. X */
  234. X# define TA_ATTRIB_FUNC(x) ((long)(x))
  235. X
  236. X/*
  237. X * This symbolic constant is used to check the number of attributes
  238. X */
  239. X    TTY_NUMBER_ATTRIBUTES
  240. X
  241. X} tty_attrib ;
  242. X
  243. X/*
  244. X * Character returned by end-of-file condition
  245. X */
  246. X# define TTY_EOF -1
  247. X
  248. X
  249. X/*
  250. X * Create the window according to a resource WIND template.
  251. X * The window pointer pointed to by window should be NULL to
  252. X * allocate the window record dynamically, or point to a
  253. X * WindowRecord structure already allocated.
  254. X *
  255. X * Passing in_color means you have to be sure there's color support;
  256. X * on the Mac, this means 32bit QuickDraw present, else it will
  257. X * crash. Not passing in_color means everything's rendered in
  258. X * black & white.
  259. X */
  260. Xextern pascal short create_tty ( WindowPtr * window , short resource_id ,
  261. X    Boolean in_color ) ;
  262. X
  263. X/*
  264. X * Use init_tty_name or init_tty_number to initialize a window
  265. X * once allocated by create_tty. Size parameters are in characters.
  266. X */
  267. Xextern pascal short init_tty_name ( WindowPtr window ,
  268. X    unsigned char * font_name , short font_size , short x_size ,
  269. X    short y_size ) ;
  270. Xextern pascal short init_tty_number ( WindowPtr window , short font_number ,
  271. X    short font_size , short x_size , short y_size ) ;
  272. X
  273. X/*
  274. X * Close and deallocate a window and its data
  275. X */
  276. Xextern pascal short destroy_tty ( WindowPtr window ) ;
  277. X
  278. X/*
  279. X * Change the font and font size used in the window for drawing after
  280. X * the calls are made. To change the coordinate system, be sure to call
  281. X * force_tty_coordinate_system_recalc() - else it may look strange if
  282. X * the new font doesn't match the old one.
  283. X */
  284. Xextern pascal short set_tty_font_name ( WindowPtr window ,
  285. X    unsigned char * name ) ;
  286. Xextern pascal short set_tty_font_number ( WindowPtr window , short number ) ;
  287. Xextern pascal short set_tty_font_size ( WindowPtr window , short size ) ;
  288. Xextern pascal short force_tty_coordinate_system_recalc ( WindowPtr window ) ;
  289. X
  290. X/*
  291. X * Getting some metrics about the tty and its drawing.
  292. X */
  293. Xextern pascal short get_tty_metrics ( WindowPtr window , short * x_size ,
  294. X    short * y_size , short * x_size_pixels , short * y_size_pixels ,
  295. X    short * font_number , short * font_size ,
  296. X    short * char_width , short * row_height ) ;
  297. X
  298. X/*
  299. X * The basic move cursor function. 0,0 is topleft.
  300. X */
  301. Xextern pascal short move_tty_cursor ( WindowPtr window , short x_pos ,
  302. X    short y_pos ) ;
  303. X
  304. X/*
  305. X * Return the location of the tty cursor
  306. X */
  307. Xextern pascal short get_tty_cursor ( WindowPtr window , short * x_pos ,
  308. X    short * y_pos ) ;
  309. X
  310. X/*
  311. X * Flush all changes done to a tty to the screen (see TA_ALWAYS_UPDATE above)
  312. X */
  313. Xextern pascal short update_tty ( WindowPtr window ) ;
  314. X
  315. X/*
  316. X * Add a character to the tty and update the cursor position
  317. X */
  318. Xextern pascal short add_tty_char ( WindowPtr window , short character ) ;
  319. X
  320. X/*
  321. X * Add a string of characters to the tty and update the cursor
  322. X * position. The string is 0-terminated!
  323. X */
  324. Xextern pascal short add_tty_string ( WindowPtr window , const char * string ) ;
  325. X
  326. X#if PRINTF_TTY
  327. X/*
  328. X * The cool, standard C printf function, here for convenience. Requires
  329. X * vsprintf in the libraries. Change the PRINTF_TTY define to remove it.
  330. X */
  331. Xextern short printf_tty ( WindowPtr window , const char * format , ... ) ;
  332. X#endif
  333. X
  334. X/*
  335. X * Change or read an attribute of the tty. Note that some attribute changes
  336. X * may clear the screen. See the above enum and defines for values.
  337. X * Attributes can be both function pointers and special flag values.
  338. X */
  339. Xextern pascal short get_tty_attrib ( WindowPtr window , tty_attrib attrib ,
  340. X    long * value ) ;
  341. Xextern pascal short set_tty_attrib ( WindowPtr window , tty_attrib attrib ,
  342. X    long value ) ;
  343. X
  344. X/*
  345. X * Scroll the actual TTY image, in characters, positive means up/left
  346. X * scroll_tty ( my_tty , 0 , 1 ) means a linefeed. Is always carried out
  347. X * directly, regardless of the wait-update setting. Does updates before
  348. X * scrolling.
  349. X */
  350. Xextern pascal short scroll_tty ( WindowPtr window , short delta_x ,
  351. X    short delta_y ) ;
  352. X
  353. X/*
  354. X * Erase the offscreen bitmap and move the cursor to 0,0. Re-init some window
  355. X * values (font etc) Is always carried out directly on-screen, regardless of
  356. X * the wait-for-update setting. Clears update area.
  357. X */
  358. Xextern pascal short clear_tty ( WindowPtr window ) ;
  359. X
  360. X/*
  361. X * We changed our mind about the size we want to draw in - in characters.
  362. X * You need to change the window size separately with SizeWindow.
  363. X */
  364. Xextern pascal short resize_tty_area ( WindowPtr window , short x_size ,
  365. X    short y_size ) ;
  366. X
  367. X/*
  368. X * Call this function after calling WaitNextEvent in your program. It will
  369. X * return 0 if this was an event handled by the tty window, and you can go
  370. X * right back to calling WaitNextEvent. Non-0 means you handle the event.
  371. X */
  372. Xextern pascal short handle_tty_event ( WindowPtr window ,
  373. X    EventRecord * event ) ;
  374. X
  375. X/*
  376. X * For screen dumps, open the printer port and call this function. Can be used
  377. X * for clipboard as well (only for a PICT, though; this library doesn't concern
  378. X * itself with characters, just bitmaps)
  379. X */
  380. Xextern pascal short image_tty ( WindowPtr window ) ;
  381. X
  382. X#if TTY_INPUT
  383. X/*
  384. X * Enter an internal event loop to read a character, that is returned in the
  385. X * character parameter. Note that several callback attributes may be called
  386. X * here to handle events the tty cannot handle itself. To handle command keys,
  387. X * you can install a command key handler. Note that if input isn't raw, you
  388. X * will not get any input until return is pressed.
  389. X */
  390. Xextern pascal short getchar_tty ( WindowPtr window , short * character ) ;
  391. X
  392. X/*
  393. X * Read an entire string, bounded by the length specified.
  394. X */
  395. Xextern pascal short gets_tty ( WindowPtr window , char * buffer ,
  396. X    short buffer_length ) ;
  397. X
  398. X#endif /* TTY_INPUT */
  399. X
  400. X#if EXTENDED_SUPPORT
  401. X
  402. X/*
  403. X * Various versions of delete character/s, insert line/s etc can be handled by
  404. X * this general-purpose function. Negative num_ means delete, positive means
  405. X * insert, and you can never be sure which of row and col operations come first
  406. X * if you specify both...
  407. X */
  408. Xextern pascal short mangle_tty_rows_columns ( WindowPtr window ,
  409. X    short from_row , short num_rows , short from_col , short num_cols ) ;
  410. X
  411. X/*
  412. X * For erasing just an area of characters
  413. X */
  414. Xextern pascal short clear_tty_window ( WindowPtr window , short from_row ,
  415. X    short from_col , short to_row , short to_col ) ;
  416. X
  417. X/*
  418. X * For framing an area without using grahpics characters.
  419. X * Note that the given limits are those used for framing, you should not
  420. X * draw in them. frame_fatness should typically be 1-5, and may be clipped
  421. X * if it is too large.
  422. X */
  423. Xextern pascal short frame_tty_window ( WindowPtr window , short from_row ,
  424. X    short from_col , short to_row , short to_col , short frame_fatness ) ;
  425. X
  426. X/*
  427. X * For inverting specific characters after the fact. May look funny in color.
  428. X */
  429. Xextern pascal short invert_tty_window ( WindowPtr window , short from_row ,
  430. X    short from_col , short to_row , short to_col ) ;
  431. X
  432. X/*
  433. X * For drawing lines on the tty - VERY DEVICE DEPENDENT. Use get_tty_metrics.
  434. X */
  435. Xextern pascal short draw_tty_line ( WindowPtr window , short from_x ,
  436. X    short from_y , short to_x , short to_y ) ;
  437. X
  438. X#endif /* EXTENDED_SUPPORT */
  439. X
  440. X#endif /* _H_tty_public */
  441. END_OF_FILE
  442. if test 13365 -ne `wc -c <'include/mactty.h'`; then
  443.     echo shar: \"'include/mactty.h'\" unpacked with wrong size!
  444. fi
  445. # end of 'include/mactty.h'
  446. if test -f 'sys/amiga/winstr.c' -a "${1}" != "-c" ; then 
  447.   echo shar: Renaming existing file \"'sys/amiga/winstr.c'\" to \"'sys/amiga/winstr.c.orig'\"
  448.   mv -f 'sys/amiga/winstr.c' 'sys/amiga/winstr.c.orig'
  449. fi
  450. echo shar: Extracting \"'sys/amiga/winstr.c'\" \(10222 characters\)
  451. sed "s/^X//" >'sys/amiga/winstr.c' <<'END_OF_FILE'
  452. X/*    SCCS Id: @(#)winstr.c    3.1    93/04/02 */
  453. X/* Copyright (c) Gregg Wonderly, Naperville, Illinois,  1991,1992,1993. */
  454. X/* NetHack may be freely redistributed.  See license for details. */
  455. X
  456. X#include "amiga:windefs.h"
  457. X#include "amiga:winext.h"
  458. X#include "amiga:winproto.h"
  459. X
  460. X/* Put a string into the indicated window using the indicated attribute */
  461. X
  462. Xvoid
  463. Xamii_putstr(window,attr,str)
  464. X    winid window;
  465. X    int attr;
  466. X    const char *str;
  467. X{
  468. X    struct Window *w;
  469. X    register struct amii_WinDesc *cw;
  470. X    register char *ob;
  471. X    int i, j, n0, bottom, totalvis, wheight;
  472. X
  473. X#ifdef    VIEWWINDOW
  474. X    /* Never write text in MAP it would be too small to read */
  475. X    if( window == WIN_MAP )
  476. X    window = WIN_MESSAGE;
  477. X#endif
  478. X    /* Always try to avoid a panic when there is no window */
  479. X    if( window == WIN_ERR )
  480. X    {
  481. X    window = WIN_BASE;
  482. X    if( window == WIN_ERR )
  483. X        window = WIN_BASE = amii_create_nhwindow( NHW_BASE );
  484. X    }
  485. X
  486. X    if( window == WIN_ERR || ( cw = amii_wins[window] ) == NULL )
  487. X    {
  488. X    flags.window_inited=0;
  489. X    panic(winpanicstr,window, "putstr");
  490. X    }
  491. X
  492. X    w = cw->win;
  493. X
  494. X    if(!str) return;
  495. X    amiIDisplay->lastwin = window;    /* do we care??? */
  496. X
  497. X    /* NHW_MENU windows are not opened immediately, so check if we
  498. X     * have the window pointer yet
  499. X     */
  500. X
  501. X    if( w )
  502. X    {
  503. X    /* Force the drawing mode and pen colors */
  504. X
  505. X    SetDrMd( w->RPort, JAM2 );
  506. X    if( cw->type == NHW_STATUS )
  507. X        SetAPen( w->RPort, attr ? C_WHITE : C_RED );
  508. X    else if( cw->type == NHW_MESSAGE )
  509. X        SetAPen( w->RPort, attr ? C_RED : C_WHITE );
  510. X    else
  511. X        SetAPen( w->RPort, attr ? C_RED : C_WHITE );
  512. X    SetBPen( w->RPort, C_BLACK );
  513. X    }
  514. X    else if( cw->type != NHW_MENU && cw->type != NHW_TEXT )
  515. X    {
  516. X    panic( "NULL window pointer in putstr 2: %d", window );
  517. X    }
  518. X
  519. X    /* Okay now do the work for each type */
  520. X
  521. X    switch(cw->type)
  522. X    {
  523. X#define MORE_FUDGE  10  /* 8 for --more--, 1 for preceeding sp, 1 for */
  524. X        /* putstr pad */
  525. X    case NHW_MESSAGE:
  526. X        bottom = w->Height - w->BorderTop - w->BorderBottom - 2;
  527. X        bottom /= w->RPort->TxHeight;
  528. X        if( bottom > 0 )
  529. X        --bottom;
  530. X
  531. X    wheight = ( w->Height - w->BorderTop -
  532. X                w->BorderBottom - 3 ) / w->RPort->TxHeight;
  533. X    
  534. X    if( attr != -1 && scrollmsg )
  535. X    {
  536. X        if( ++cw->disprows > wheight )
  537. X        {
  538. X        outmore( cw );
  539. X        cw->disprows = 1; /* count this line... */
  540. X        }
  541. X        else
  542. X        {
  543. X        ScrollRaster( w->RPort, 0, w->RPort->TxHeight,
  544. X            w->BorderLeft-1, w->BorderTop+1,
  545. X            w->Width - w->BorderRight-1,
  546. X            w->Height - w->BorderBottom - 1 );
  547. X        }
  548. X        amii_curs( WIN_MESSAGE, 1, bottom );
  549. X    }
  550. X
  551. X    strncpy( toplines, str, BUFSZ );
  552. X    toplines[ BUFSZ - 1 ] = 0;
  553. X
  554. X    /* For initial message to be visible, we need to explicitly position the
  555. X     * cursor.  This flag, cw->curx == -1 is used elsewhere to force the
  556. X     * cursor to be repositioned to the "bottom".
  557. X     */
  558. X    if( cw->curx == -1 )
  559. X    {
  560. X        amii_curs( WIN_MESSAGE, 1, bottom );
  561. X        cw->curx = 0;
  562. X    }
  563. X
  564. X    /* If used all of history lines, move them down */
  565. X
  566. X    if( cw->maxrow >= flags.msg_history )
  567. X    {
  568. X        if( cw->data[ 0 ] )
  569. X        free( cw->data[ 0 ] );
  570. X        memcpy( cw->data, &cw->data[ 1 ],
  571. X        ( flags.msg_history - 1 ) * sizeof( char * ) );
  572. X        cw->data[ flags.msg_history - 1 ] =
  573. X                (char *) alloc( strlen( toplines ) + 5 );
  574. X        strcpy( cw->data[ i = flags.msg_history - 1 ] +
  575. X                SOFF + (scrollmsg!=0), toplines );
  576. X    }
  577. X    else
  578. X    {
  579. X        /* Otherwise, allocate a new one and copy the line in */
  580. X        cw->data[ cw->maxrow ] = (char *)
  581. X                    alloc( strlen( toplines ) + 5 );
  582. X        strcpy( cw->data[ i = cw->maxrow++ ] +
  583. X                SOFF + (scrollmsg!=0), toplines );
  584. X    }
  585. X    cw->data[ i ][0] = 1;
  586. X    cw->data[ i ][1] = attr;
  587. X
  588. X    if( scrollmsg )
  589. X        cw->data[ i ][2] = (cw->wflags & FLMSG_FIRST ) ? '>' : ' ';
  590. X
  591. X    str = cw->data[i] + SOFF;
  592. X    if( strlen(str) >= (cw->cols-MORE_FUDGE) )
  593. X    {
  594. X        int i;
  595. X        char *p;
  596. X
  597. X        while( strlen( str ) >= (cw->cols-MORE_FUDGE) )
  598. X        {
  599. X        for(p=(&str[ cw->cols ])-MORE_FUDGE; !isspace(*p) && p != str;)
  600. X        {
  601. X            --p;
  602. X        }
  603. X        if( p == str )
  604. X            p = &str[ cw->cols ];
  605. X        outsubstr( cw, str, i = (long)p-(long)str );
  606. X        cw->curx += i;
  607. X        amii_cl_end( cw, cw->curx );
  608. X        str = p+1;
  609. X        }
  610. X
  611. X        if( *str )
  612. X        {
  613. X        outsubstr( cw, str, i = strlen( str ) );
  614. X        cw->curx += i;
  615. X        amii_cl_end( cw, cw->curx );
  616. X        }
  617. X    }
  618. X    else
  619. X    {
  620. X        outsubstr( cw, str, i = strlen( str ) );
  621. X        cw->curx += i;
  622. X        amii_cl_end( cw, cw->curx );
  623. X    }
  624. X    cw->wflags &= ~FLMSG_FIRST;
  625. X    for( totalvis = i = 0; i < cw->maxrow; ++i )
  626. X    {
  627. X        if( cw->data[i][1] == 0 )
  628. X        ++totalvis;
  629. X    }
  630. X    if( scrollmsg )
  631. X    {
  632. X        SetPropInfo( w, &MsgScroll,
  633. X          ( w->Height-w->BorderTop-w->BorderBottom ) / w->RPort->TxHeight,
  634. X          totalvis, totalvis );
  635. X    }
  636. X    i = strlen( toplines + SOFF );
  637. X    cw->maxcol = max( cw->maxcol, i );
  638. X    cw->vwy = cw->maxrow;
  639. X    break;
  640. X
  641. X    case NHW_STATUS:
  642. X    if( cw->data[ cw->cury ] == NULL )
  643. X        panic( "NULL pointer for status window" );
  644. X    ob = &cw->data[cw->cury][j = cw->curx];
  645. X    if(flags.botlx) *ob = 0;
  646. X
  647. X        /* Display when beam at top to avoid flicker... */
  648. X    WaitTOF();
  649. X    Text(w->RPort,str,strlen(str));
  650. X    if( cw->cols > strlen( str ) )
  651. X        TextSpaces( w->RPort, cw->cols - strlen( str ) );
  652. X
  653. X    (void) strncpy(cw->data[cw->cury], str, cw->cols );
  654. X    cw->data[cw->cury][cw->cols-1] = '\0'; /* null terminate */
  655. X    cw->cury = (cw->cury+1) % 2;
  656. X    cw->curx = 0;
  657. X    break;
  658. X
  659. X    case NHW_VIEWBOX:
  660. X    case NHW_VIEW:
  661. X    case NHW_MAP:
  662. X    case NHW_BASE:
  663. X    amii_curs(window, cw->curx+1, cw->cury);
  664. X    Text(w->RPort,str,strlen(str));
  665. X    cw->curx = 0;
  666. X        /* CR-LF is automatic in these windows */
  667. X    cw->cury++;
  668. X    break;
  669. X
  670. X    case NHW_MENU:
  671. X    case NHW_TEXT:
  672. X
  673. X    /* always grows one at a time, but alloc 12 at a time */
  674. X
  675. X    if( cw->cury >= cw->rows || !cw->data ) {
  676. X        char **tmp;
  677. X
  678. X        /* Allocate 12 more rows */
  679. X        cw->rows += 12;
  680. X        tmp = (char**) alloc(sizeof(char*) * cw->rows);
  681. X
  682. X        /* Copy the old lines */
  683. X        for(i=0; i<cw->cury; i++)
  684. X        tmp[i] = cw->data[i];
  685. X
  686. X        if( cw->data )
  687. X        free( cw->data );
  688. X
  689. X        cw->data = tmp;
  690. X
  691. X        /* Null out the unused entries. */
  692. X        for(i=cw->cury; i<cw->rows; i++)
  693. X        cw->data[i] = 0;
  694. X    }
  695. X
  696. X    if( !cw->data )
  697. X        panic("no data storage");
  698. X
  699. X        /* Shouldn't need to do this, but... */
  700. X
  701. X    if( cw->data && cw->data[cw->cury] )
  702. X        free( cw->data[cw->cury] );
  703. X
  704. X    n0 = strlen(str)+1;
  705. X    cw->data[cw->cury] = (char*) alloc(n0+SOFF);
  706. X
  707. X        /* avoid nuls, for convenience */
  708. X    cw->data[cw->cury][VATTR] = attr+1;
  709. X    cw->data[cw->cury][SEL_ITEM] = 0;
  710. X    Strcpy( cw->data[cw->cury] + SOFF, str);
  711. X
  712. X    if(n0 > cw->maxcol) cw->maxcol = n0;
  713. X    if(++cw->cury > cw->maxrow) cw->maxrow = cw->cury;
  714. X    break;
  715. X
  716. X    default:
  717. X    panic("Invalid or unset window type in putstr()");
  718. X    }
  719. X}
  720. X
  721. Xvoid
  722. Xoutmore( cw )
  723. X    register struct amii_WinDesc *cw;
  724. X{
  725. X    struct Window *w = cw->win;
  726. X
  727. X    if((cw->wflags & FLMAP_SKIP) == 0)
  728. X    {
  729. X    if( scrollmsg )
  730. X    {
  731. X        int bottom;
  732. X        bottom = w->Height - w->BorderTop - w->BorderBottom;
  733. X        bottom /= w->RPort->TxHeight;
  734. X        if( bottom > 0 )
  735. X        --bottom;
  736. X        ScrollRaster( w->RPort, 0, w->RPort->TxHeight,
  737. X            w->BorderLeft-1, w->BorderTop+1,
  738. X            w->Width - w->BorderRight-1,
  739. X            w->Height - w->BorderBottom - 1 );
  740. X        amii_curs( WIN_MESSAGE, 1, bottom );
  741. X        Text( w->RPort, "--more--", 9 );
  742. X    }
  743. X    else
  744. X        Text( w->RPort, " --more--", 9 );
  745. X
  746. X    /* Make sure there are no events in the queue */
  747. X    flushIDCMP( HackPort );
  748. X
  749. X    /* Allow mouse clicks to clear --more-- */
  750. X    WindowGetchar();
  751. X    if( lastevent.type == WEKEY && lastevent.un.key == '\33' )
  752. X        cw->wflags |= FLMAP_SKIP;
  753. X    }
  754. X    if( !scrollmsg )
  755. X    {
  756. X    amii_curs( WIN_MESSAGE, 1, 0 );
  757. X    amii_cl_end( cw, cw->curx );
  758. X    }
  759. X}
  760. X
  761. Xvoid
  762. Xoutsubstr( cw, str, len )
  763. X    register struct amii_WinDesc *cw;
  764. X    char *str;
  765. X    int len;
  766. X{
  767. X    struct Window *w = cw->win;
  768. X
  769. X    if( cw->curx )
  770. X    {
  771. X    /* Check if this string and --more-- fit, if not,
  772. X     * then put out --more-- and wait for a key.
  773. X     */
  774. X    if( (len + MORE_FUDGE ) + cw->curx >= cw->cols )
  775. X    {
  776. X        if( !scrollmsg )
  777. X        outmore( cw );
  778. X    }
  779. X    else if(topl_addspace)
  780. X    {
  781. X        /* Otherwise, move and put out a blank separator */
  782. X        Text( w->RPort, spaces, 1 );
  783. X        cw->curx += 1;
  784. X    }
  785. X    }
  786. X
  787. X    Text(w->RPort,str,len);
  788. X}
  789. X
  790. X/* Put a graphics character onto the screen */
  791. X
  792. Xvoid
  793. Xamii_putsym( st, i, y, c )
  794. X    winid st;
  795. X    int i, y;
  796. X    CHAR_P c;
  797. X{
  798. X    char buf[ 2 ];
  799. X    amii_curs( st, i, y );
  800. X    buf[ 0 ] = c;
  801. X    buf[ 1 ] = 0;
  802. X    amii_putstr( st, 0, buf );
  803. X}
  804. X
  805. X/* Add a line in the message window */
  806. X
  807. Xvoid
  808. Xamii_addtopl(s)
  809. X    const char *s;
  810. X{
  811. X    amii_putstr(WIN_MESSAGE,0,s);   /* is this right? */
  812. X}
  813. X
  814. Xvoid
  815. XTextSpaces( rp, nr )
  816. X    struct RastPort *rp;
  817. X    int nr;
  818. X{
  819. X    if( nr < 1 )
  820. X    return;
  821. X
  822. X    while (nr > sizeof(spaces) - 1)
  823. X    {
  824. X    Text(rp, spaces, (long)sizeof(spaces) - 1);
  825. X    nr -= sizeof(spaces) - 1;
  826. X    }
  827. X    if (nr > 0)
  828. X    Text(rp, spaces, (long)nr);
  829. X}
  830. X
  831. Xvoid
  832. Xamii_remember_topl()
  833. X{
  834. X    /* ignore for now.  I think this will be done automatically by
  835. X     * the code writing to the message window, but I could be wrong.
  836. X     */
  837. X}
  838. X
  839. Xint
  840. Xamii_doprev_message()
  841. X{
  842. X    struct amii_WinDesc *cw;
  843. X    struct Window *w;
  844. X    char *str;
  845. X
  846. X    if( WIN_MESSAGE == WIN_ERR ||
  847. X    ( cw = amii_wins[ WIN_MESSAGE ] ) == NULL || ( w = cw->win ) == NULL )
  848. X    {
  849. X    panic(winpanicstr,WIN_MESSAGE, "doprev_message");
  850. X    }
  851. X
  852. X    /* When an interlaced/tall screen is in use, the scroll bar will be there */
  853. X    if( scrollmsg )
  854. X    {
  855. X    struct Gadget *gd;
  856. X    struct PropInfo *pip;
  857. X    int hidden, topidx, i, total, wheight;
  858. X
  859. X    for( gd = w->FirstGadget; gd && gd->GadgetID != 1; )
  860. X        gd = gd->NextGadget;
  861. X
  862. X    if( gd )
  863. X    {
  864. X        pip = (struct PropInfo *)gd->SpecialInfo;
  865. X        wheight = ( w->Height - w->BorderTop -
  866. X                w->BorderBottom - 2 ) / w->RPort->TxHeight;
  867. X        hidden = max( cw->maxrow - wheight, 0 );
  868. X        topidx = (((ULONG)hidden * pip->VertPot) + (MAXPOT/2)) >> 16;
  869. X        for( total = i = 0; i < cw->maxrow; ++i )
  870. X        {
  871. X        if( cw->data[i][1] == 0 )
  872. X            ++total;
  873. X        }
  874. X
  875. X        i = 0;
  876. X        while( (--topidx) >= 0 && i < wheight/2 )
  877. X        {
  878. X        SetPropInfo( w, &MsgScroll, wheight, total, topidx );
  879. X        DisplayData( WIN_MESSAGE, topidx, -1 );
  880. X        ++i;
  881. X        }
  882. X    }
  883. X    return(0);
  884. X    }
  885. X
  886. X    if( --cw->vwy < 0 )
  887. X    {
  888. X    cw->maxcol = 0;
  889. X    DisplayBeep( NULL );
  890. X    str = "\0\0No more history saved...";
  891. X    }
  892. X    else
  893. X    str = cw->data[ cw->vwy ];
  894. X
  895. X    amii_cl_end(cw, 0);
  896. X    amii_curs( WIN_MESSAGE, 1, 0 );
  897. X    Text(w->RPort,str+SOFF,strlen(str+SOFF));
  898. X    cw->curx = cw->cols + 1;
  899. X
  900. X    return( 0 );
  901. X}
  902. END_OF_FILE
  903. if test 10222 -ne `wc -c <'sys/amiga/winstr.c'`; then
  904.     echo shar: \"'sys/amiga/winstr.c'\" unpacked with wrong size!
  905. fi
  906. # end of 'sys/amiga/winstr.c'
  907. if test -f 'sys/winnt/nhincl.mak' -a "${1}" != "-c" ; then 
  908.   echo shar: Renaming existing file \"'sys/winnt/nhincl.mak'\" to \"'sys/winnt/nhincl.mak.orig'\"
  909.   mv -f 'sys/winnt/nhincl.mak' 'sys/winnt/nhincl.mak.orig'
  910. fi
  911. echo shar: Extracting \"'sys/winnt/nhincl.mak'\" \(10322 characters\)
  912. sed "s/^X//" >'sys/winnt/nhincl.mak' <<'END_OF_FILE'
  913. X# =========================================================================
  914. X# NTWIN32.MAK - Win32 application master NMAKE definitions file for the
  915. X#               Microsoft Win32 SDK for Windows NT programming samples
  916. X# -------------------------------------------------------------------------
  917. X# NMAKE Options
  918. X#
  919. X# Use the table below to determine the extra options for NMAKE to
  920. X# generate various application debugging, profiling and performance tuning
  921. X# information.
  922. X#
  923. X# Application Information Type         Invoke NMAKE
  924. X# ----------------------------         ------------
  925. X# For No Debugging Info                nmake nodebug=1
  926. X# For Working Set Tuner Info           nmake tune=1
  927. X# For Call Attributed Profiling Info   nmake profile=1
  928. X#
  929. X# Note: Working Set Tuner and Call Attributed Profiling is for Intel
  930. X#       x86 systems only.
  931. X#
  932. X# Note: The three options above are mutually exclusive (you may use only
  933. X#       one at complile/link the application).
  934. X#
  935. X# Note: using the environment variables NODEBUG, TUNE, and PROFILE is an
  936. X#       alternate method for setting these options.
  937. X#
  938. X# Additional NMAKE Options             Invoke NMAKE
  939. X# ----------------------------         ------------
  940. X# For No ANSI NULL Compliance          nmake no_nansi=1
  941. X# (ANSI NULL is defined as PVOID 0)
  942. X#
  943. X# =========================================================================
  944. X
  945. X# -------------------------------------------------------------------------
  946. X# Get CPU Type - exit if CPU environment variable is not defined
  947. X# -------------------------------------------------------------------------
  948. X
  949. X# Intel i386 and i486 systems.
  950. X!IF "$(CPU)" == "i386"
  951. XCPUTYPE = 1
  952. X!ENDIF
  953. X
  954. X# MIPS R4000 systems.
  955. X!IF "$(CPU)" == "MIPS"
  956. XCPUTYPE = 2
  957. X!ENDIF
  958. X
  959. X!IFNDEF CPUTYPE
  960. X!ERROR  Must specify CPU environment variable ( CPU=i386 or CPU=MIPS )
  961. X!ENDIF
  962. X
  963. X# -------------------------------------------------------------------------
  964. X# Platform Dependent Binaries Declarations
  965. X#
  966. X# If you are using the old Mips compiler then
  967. X# cc     = cc
  968. X# cvtobj = mip2coff
  969. X# -------------------------------------------------------------------------
  970. X
  971. X# binary declarations for use on Intel i386 and i486 systems.
  972. X!IF "$(CPU)" == "i386"
  973. Xcc     = cl386
  974. Xcvtobj = REM !!! CVTOBJ is no longer necessary - please remove !!!
  975. X!ENDIF
  976. X
  977. X# binary declarations for use on self hosted MIPS R4000 systems.
  978. X!IF "$(CPU)" == "MIPS"
  979. Xcc     = mcl
  980. Xcvtobj = REM !!! CVTOBJ is no longer necessary - please remove !!!
  981. X!ENDIF
  982. X
  983. X# binary declarations common to all platforms.
  984. Xlink   = link32
  985. Ximplib = lib32
  986. Xrc     = rc
  987. Xcvtres = cvtres
  988. Xhc     = hc
  989. X
  990. X# -------------------------------------------------------------------------
  991. X# Platform Dependent Compile Flags - must be specified after $(cc)
  992. X#
  993. X# Note: Debug switches are on by default for current release
  994. X#
  995. X# These switches allow for source level debugging with WinDebug for local
  996. X# and global variables.
  997. X#
  998. X# Both compilers now use the same front end - you must still define either
  999. X# _X86_ or _MIPS_.  These have replaced the i386 and MIPS definitions which
  1000. X# are not ANSI compliant.
  1001. X#
  1002. X# i386 specific compiler flags:
  1003. X#   -G3  - generate 80386 instructions
  1004. X#   -Gz  - stdcall
  1005. X#
  1006. X# MS MIPS specific compiler flags:
  1007. X#
  1008. X#
  1009. X# Common compiler flags:
  1010. X#   -c   - compile without linking
  1011. X#   -W3  - Set warning level to level 3
  1012. X#   -Zi  - generate debugging information
  1013. X#   -Od  - disable all optimizations
  1014. X#   -Ox  - use maximum optimizations
  1015. X#   -Zd  - generate only public symbols and line numbers for debugging
  1016. X#
  1017. X# *** OLD MIPS ONLY ***
  1018. X#
  1019. X# The following definitions are for the old Mips compiler.
  1020. X#
  1021. X# OLD MIPS compiler flags:
  1022. X#   -c   - compile without linking
  1023. X#   -std - produce warnings for non-ANSI standard source code.
  1024. X#   -g2  - produce a symbol table for debugging
  1025. X#   -O   - invoke the global optimizer
  1026. X#   -EL  - produce object modules targeted for
  1027. X#          "little-endian" byte ordering
  1028. X# -------------------------------------------------------------------------
  1029. X
  1030. X# declarations common to all compilers.
  1031. Xccommon = -c -W0
  1032. X
  1033. X!IF "$(CPU)" == "i386"
  1034. Xcflags = $(ccommon) -G3 -D_X86_=1
  1035. Xscall  = -Gz
  1036. X!ELSE
  1037. Xcflags = $(ccommon) -D_MIPS_=1
  1038. Xscall  =
  1039. X!ENDIF
  1040. X
  1041. X!IF "$(CPU)" == "i386"
  1042. X!IFDEF NODEBUG
  1043. Xcdebug = -Ox
  1044. X!ELSE
  1045. X!IFDEF PROFILE
  1046. Xcdebug = -Gh -Zd -Ox
  1047. X!ELSE
  1048. X!IFDEF TUNE
  1049. Xcdebug = -Gh -Zd -Ox
  1050. X!ELSE
  1051. Xcdebug = -Zi -Od
  1052. X!ENDIF
  1053. X!ENDIF
  1054. X!ENDIF
  1055. X!ELSE
  1056. X!IFDEF NODEBUG
  1057. Xcdebug = -Ox
  1058. X!ELSE
  1059. Xcdebug = -Zi -Od
  1060. X!ENDIF
  1061. X!ENDIF
  1062. X
  1063. X# OLD MIPS Complile Flags
  1064. X!IF 0
  1065. X!IF "$(CPU)" == "MIPS"
  1066. Xcflags = -c -std -o $(*B).obj -EL -DMIPS=1 -D_MIPS_=1
  1067. X!IFDEF NODEBUG
  1068. Xcdebug =
  1069. X!ELSE
  1070. Xcdebug = -g2
  1071. X!ENDIF
  1072. X!ENDIF
  1073. X!ENDIF
  1074. X
  1075. X# -------------------------------------------------------------------------
  1076. X# Target Module & Subsystem Dependant Compile Defined Variables - must be
  1077. X#   specified after $(cc)
  1078. X#
  1079. X# The following is a table which indicates the various
  1080. X# acceptable combinations of CRTDLL and LIBC(MT) with
  1081. X# respect to DLLs and EXEs, along with the appropriate
  1082. X# compiler flags for each.
  1083. X#
  1084. X# Link EXE    Create Exe    Link DLL    Create DLL
  1085. X#   with        Using         with         Using
  1086. X# ----------------------------------------------------
  1087. X#  LIBC        CVARS          None        None      *
  1088. X#  LIBC        CVARS          LIBC        CVARS
  1089. X#  LIBC        CVARS          LIBCMT      CVARSMT
  1090. X#  LIBCMT      CVARSMT        None        None      *
  1091. X#  LIBCMT      CVARSMT        LIBC        CVARS
  1092. X#  LIBCMT      CVARSMT        LIBCMT      CVARSMT
  1093. X#  CRTDLL      CVARSDLL       None        None      *
  1094. X#  CRTDLL      CVARSDLL       LIBC        CVARS
  1095. X#  CRTDLL      CVARSDLL       LIBCMT      CVARSMT
  1096. X#  CRTDLL      CVARSDLL       CRTDLL      CVARSDLL  *
  1097. X#
  1098. X# Note: Any executable which accesses a DLL linked with CRTDLL.LIB must
  1099. X#       also link with CRTDLL.LIB instead of LIBC.LIB or LIBCMT.LIB.
  1100. X#       When using DLLs, it is recommended that all of the modules be
  1101. X#       linked with CRTDLL.LIB.
  1102. X#
  1103. X# * - Recommended Configurations
  1104. X#
  1105. X# -------------------------------------------------------------------------
  1106. X
  1107. X!IFDEF NO_ANSI
  1108. Xnoansi = -DNULL=0
  1109. X!ENDIF
  1110. Xcvars      = -DWIN32 $(noansi)
  1111. Xcvarsmt    = $(cvars) -D_MT
  1112. Xcvarsdll   = $(cvarsmt) -D_DLL
  1113. Xcvarsmtdll = $(cvarsmt) -D_DLL
  1114. X
  1115. X# For POSIX applications
  1116. Xpsxvars    = -D_POSIX_
  1117. X
  1118. X# resource compiler
  1119. Xrcvars = -DWIN32 $(noansi)
  1120. X
  1121. X# -------------------------------------------------------------------------
  1122. X# Platform Dependent Link Flags - must be specified after $(link)
  1123. X#
  1124. X# Note: $(DLLENTRY) should be appended to each -entry: flag on the link line.
  1125. X# -------------------------------------------------------------------------
  1126. X
  1127. X# declarations for use on Intel i386 and i486 systems.
  1128. X!IF "$(CPU)" == "i386"
  1129. XDLLENTRY = @12
  1130. X!ENDIF
  1131. X
  1132. X# declarations for use on self hosted MIPS R4000 systems.
  1133. X!IF "$(CPU)" == "MIPS"
  1134. XDLLENTRY =
  1135. X!ENDIF
  1136. X
  1137. X# -------------------------------------------------------------------------
  1138. X# Target Module Dependent Link Debug Flags - must be specified after $(link)
  1139. X#
  1140. X# These switches allow for source level debugging with WinDebug, profiling
  1141. X# or performance tuning.
  1142. X#
  1143. X# Note: Debug switches are on by default.
  1144. X# -------------------------------------------------------------------------
  1145. X
  1146. X!IF "$(CPU)" == "i386"
  1147. X!IFDEF NODEBUG
  1148. Xldebug =
  1149. X!ELSE
  1150. X!IFDEF PROFILE
  1151. Xldebug = -debug:partial -debugtype:coff
  1152. X!ELSE
  1153. X!IFDEF TUNE
  1154. Xldebug = -debug:partial -debugtype:coff
  1155. X!ELSE
  1156. Xldebug = -debug:full -debugtype:cv
  1157. X!ENDIF
  1158. X!ENDIF
  1159. X!ENDIF
  1160. X!ELSE
  1161. X!IFDEF NODEBUG
  1162. Xldebug =
  1163. X!ELSE
  1164. Xldebug = -debug:full -debugtype:cv
  1165. X!ENDIF
  1166. X!ENDIF
  1167. X
  1168. X# for compatibility with older style makefiles
  1169. Xlinkdebug = $(ldebug)
  1170. X
  1171. X# -------------------------------------------------------------------------
  1172. X# Subsystem Dependent Link Flags - must be specified after $(link)
  1173. X#
  1174. X# These switches allow for source level debugging with WinDebug for local
  1175. X# and global variables.
  1176. X# -------------------------------------------------------------------------
  1177. X
  1178. X# For applications that use the C-Runtime libraries
  1179. Xconlflags = -subsystem:console -entry:mainCRTStartup
  1180. Xguilflags = -subsystem:windows -entry:WinMainCRTStartup
  1181. X
  1182. X# For POSIX applications
  1183. Xpsxlflags = -subsystem:posix -entry:__PosixProcessStartup
  1184. X
  1185. X# for compatibility with older style makefiles
  1186. Xconflags  = $(conlflags)
  1187. Xguiflags  = $(guilflags)
  1188. Xpsxflags  = $(psxlflags)
  1189. X
  1190. X# -------------------------------------------------------------------------
  1191. X# C-Runtime Target Module Dependent Link Libraries
  1192. X#
  1193. X# Below is a table which describes which libraries to use depending on the
  1194. X# target module type, although the table specifically refers to Graphical
  1195. X# User Interface apps, the exact same dependancies apply to Console apps.
  1196. X# I.E. you could replace all occurences of GUI with CON in the following:
  1197. X#
  1198. X# Desired CRT  Libraries   Desired CRT  Libraries
  1199. X#   Library     to link      Library     to link
  1200. X#   for EXE     with EXE     for DLL     with DLL
  1201. X# ----------------------------------------------------
  1202. X#   LIBC       GUILIBS       None       None       *
  1203. X#   LIBC       GUILIBS       LIBC       GUILIBS
  1204. X#   LIBC       GUILIBS       LIBCMT     GUILIBSMT
  1205. X#   LIBCMT     GUILIBSMT     None       None       *
  1206. X#   LIBCMT     GUILIBSMT     LIBC       GUILIBS
  1207. X#   LIBCMT     GUILIBSMT     LIBCMT     GUILIBSMT
  1208. X#   CRTDLL     GUILIBSDLL    None       None       *
  1209. X#   CRTDLL     GUILIBSDLL    LIBC       GUILIBS
  1210. X#   CRTDLL     GUILIBSDLL    LIBCMT     GUILIBSMT
  1211. X#   CRTDLL     GUILIBSDLL    CRTDLL     GUILIBSDLL *
  1212. X#
  1213. X# * - Recommended Configurations.
  1214. X#
  1215. X# Note: Any executable which accesses a DLL linked with CRTDLL.LIB must
  1216. X#       also link with CRTDLL.LIB instead of LIBC.LIB or LIBCMT.LIB.
  1217. X#
  1218. X# Note: For POSIX applications, link with $(psxlibs)
  1219. X#
  1220. X# -------------------------------------------------------------------------
  1221. X
  1222. X# optional profiling and tuning libraries
  1223. X!IF "$(CPU)" == "i386"
  1224. X!IFDEF PROFILE
  1225. Xoptlibs = cap.lib
  1226. X!ELSE
  1227. X!IFDEF TUNE
  1228. Xoptlibs = wst.lib
  1229. X!ELSE
  1230. Xoptlibs =
  1231. X!ENDIF
  1232. X!ENDIF
  1233. X!ELSE
  1234. Xoptlibs =
  1235. X!ENDIF
  1236. X
  1237. X# basic subsystem specific libraries less the C-RunTime
  1238. Xbaselibs   = kernel32.lib ntdll.lib $(optlibs) 
  1239. Xwinlibs    = kernel32.lib ntdll.lib user32.lib gdi32.lib winspool.lib comdlg32.lib $(optlibs)
  1240. X
  1241. X# For applications that use the C-Runtime libraries
  1242. Xconlibs    = libc.lib $(baselibs)
  1243. Xconlibsmt  = libcmt.lib $(baselibs)
  1244. Xconlibsdll = crtdll.lib $(baselibs)
  1245. Xguilibs    = libc.lib $(winlibs)
  1246. Xguilibsmt  = libcmt.lib $(winlibs)
  1247. Xguilibsdll = crtdll.lib $(winlibs)
  1248. X
  1249. X# For POSIX applications
  1250. Xpsxlibs    = libcpsx.lib psxdll.lib psxrtl.lib $(baselibs)
  1251. END_OF_FILE
  1252. if test 10322 -ne `wc -c <'sys/winnt/nhincl.mak'`; then
  1253.     echo shar: \"'sys/winnt/nhincl.mak'\" unpacked with wrong size!
  1254. fi
  1255. # end of 'sys/winnt/nhincl.mak'
  1256. echo shar: End of archive 33 \(of 33\).
  1257. cp /dev/null ark33isdone
  1258. MISSING=""
  1259. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
  1260.     if test ! -f ark${I}isdone ; then
  1261.     MISSING="${MISSING} ${I}"
  1262.     fi
  1263. done
  1264. if test "${MISSING}" = "" ; then
  1265.     echo You have unpacked all 33 archives.
  1266.     echo "Now execute ./patchit.sh"
  1267.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1268. else
  1269.     echo You still need to unpack the following archives:
  1270.     echo "        " ${MISSING}
  1271. fi
  1272. ##  End of shell archive.
  1273. exit 0
  1274.