1{
2    This file is part of the Free Pascal run time library
3    for Netware.
4    Copyright (c) 1999-2005 by the Free Pascal development team.
5
6    See the file COPYING.FPC, included in this distribution,
7    for details about the copyright.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13**********************************************************************}
14
15unit nwsnut;
16
17interface
18
19{$mode objfpc}
20{$if defined (netware_clib)}
21uses nwserv;
22{$else}
23uses libc;
24{$endif}
25
26{$PACKRECORDS C}
27
28  const
29    External_library='nwsnut';
30
31  { constants
32    the constant CURRENT_NUT_VERSION is incremented when increased
33    functionality is added. An NLM can check this value which is placed
34    in the NUTInfo structure, version field, to determine if the NWSNUT
35    NLM contains sufficient functionality to support its requirements  }
36
37
38     CURRENT_NUT_VERSION = 405;
39  { the constant NUT_REVISION_LEVEL is incremented when a major change
40    in the behavior of NWSNUT is made. This value is not used by the calling
41    NLM, but rather by NWSNUT itself to determine what is expected of it
42    by the calling NLM  }
43     NUT_REVISION_LEVEL = 1;
44     SAVE = 1;
45     NO_SAVE = 0;
46     NOHEADER = 0;
47     NOBORDER = 0;
48     NO_HELP_CONTEXT = $ffff;
49     SINGLE = 1;
50     DOUBLE = 2;
51     CURSOR_OFF = 0;
52     CURSOR_ON = 1;
53     VIRTUAL = 0;
54     DIRECT = 1;
55     SEVERITY_INFORM  = 1;
56     SEVERITY_WARNING = 2;
57     SEVERITY_FATAL   = 3;
58  { text size minimization styles  }
59     SNORMAL    = 0;
60     SMINWIDTH  = 1;
61     SMINHEIGHT = 2;
62  { palettes to set screen colors.
63        background and foreground can be reversed with VREVERSE }
64     BW_PALETTE      = 0;  // white and black
65     NORMAL_PALETTE  = 1;  // white and dark blue
66     INIT_PALETTE    = 2;  // light blue and dark blue
67     HELP_PALETTE    = 3;  // green and black
68     ERROR_PALETTE   = 4;  // red and black
69     WARNING_PALETTE = 5;  // pink and white
70     OTHER_PALETTE   = 6;  // green and red
71  { text and portal justification styles  }
72     JRIGHT = 0;
73     JLEFT = 1;
74     JTOP = 2;
75     JBOTTOM = 3;
76     JCENTER = 4;
77     JTOPRIGHT = 5;
78     JTOPLEFT = 6;
79     JBOTTOMLEFT = 7;
80     JBOTTOMRIGHT = 8;
81  { video constants  }
82     V_UP = 6;
83     V_DOWN = 7;
84     LINE_OFFSET = 160;
85     EXPLODE_RATE = 45;
86     SCREEN_SPEED = 0;
87  { video attributes  }
88     VNORMAL = 0;
89     VINTENSE = 1;
90     VREVERSE = 2;
91     VBLINK = 3;
92     VIBLINK = 4;
93     VRBLINK = 5;
94  { header types  }
95     NO_HEADER = 0;
96     SMALL_HEADER = 1;
97     NORMAL_HEADER = 2;
98     LARGE_HEADER = 3;
99  { keyboard constants  }
100     KS_OFF = 0;
101     KS_ON = 1;
102     KS_INT = 2;
103     K_NORMAL = 0;
104     K_F1 = 1;
105     K_F2 = 2;
106     K_F3 = 3;
107     K_F4 = 4;
108     K_F5 = 5;
109     K_F6 = 6;
110     K_F7 = 7;
111     K_F8 = 8;
112     K_F9 = 9;
113     K_F10 = 10;
114     K_SF1 = 11;
115     K_SF2 = 12;
116     K_SF3 = 13;
117     K_SF4 = 14;
118     K_SF5 = 15;
119     K_SF6 = 16;
120     K_SF7 = 17;
121     K_SF8 = 18;
122     K_SF9 = 19;
123     K_SF10 = 20;
124     K_CF1 = 21;
125     K_CF2 = 22;
126     K_CF3 = 23;
127     K_CF4 = 24;
128     K_CF5 = 25;
129     K_CF6 = 26;
130     K_CF7 = 27;
131     K_CF8 = 28;
132     K_CF9 = 29;
133     K_CF10 = 30;
134     K_AF1 = 31;
135     K_AF2 = 32;
136     K_AF3 = 33;
137     K_AF4 = 34;
138     K_AF5 = 35;
139     K_AF6 = 36;
140     K_AF7 = 37;
141     K_AF8 = 38;
142     K_AF9 = 39;
143     K_AF10 = 40;
144     K_HELP = 1;
145     K_MODIFY = 3;
146     K_MARK = 5;
147     K_CANCEL = 7;
148     K_MODE = 9;
149     K_EXIT = 40;
150     K_ESCAPE = 41;
151     K_BACK = 42;
152     K_INSERT = 43;
153     K_DELETE = 44;
154     K_SELECT = 45;
155     K_CYCLE = 46;
156     K_UP = 47;
157     K_DOWN = 48;
158     K_LEFT = 49;
159     K_RIGHT = 50;
160     K_SUP = 51;
161     K_SDOWN = 52;
162     K_SLEFT = 53;
163     K_SRIGHT = 54;
164     K_PUP = 55;
165     K_PDOWN = 56;
166     K_FRIGHT = 57;
167     K_FLEFT = 58;
168     K_DELETE_END = 59;
169  {
170  For NWSUngetKey of function keys, use UGK_FUNCTION_KEY for the "type"
171  parameter and "K_F1" etc. for the "value" parameter
172   }
173     UGK_NORMAL_KEY = $00;
174     UGK_FUNCTION_KEY = $01;
175  {
176  For other special keys listed below, use UGK_NORMAL_KEY for the "value"
177  parameter, and the UGK_xxx for the "type" parameter.
178   }
179     UGK_ENTER_KEY = $02;
180     UGK_ESCAPE_KEY = $03;
181     UGK_BACKSPACE_KEY = $04;
182     UGK_DELETE_KEY = $05;
183     UGK_INSERT_KEY = $06;
184     UGK_CURSOR_UP_KEY = $07;
185     UGK_CURSOR_DOWN_KEY = $08;
186     UGK_CURSOR_RIGHT_KEY = $09;
187     UGK_CURSOR_LEFT_KEY = $0a;
188     UGK_CURSOR_HOME_KEY = $0b;
189     UGK_CURSOR_END_KEY = $0c;
190     UGK_CURSOR_PUP_KEY = $0d;
191     UGK_CURSOR_PDOWN_KEY = $0e;
192  {
193  Added in version 403
194
195  A special key type to cause LISTs to refresh. K_REFRESH_KEY may be returned
196  from an action procedure passed to NWSList, or another thread that wishes
197  to cause a list to refresh may call NWSUngetKey with the UGK version of this,
198  and it too will cause the list to be redrawn.
199
200  Use "type" = UGK_SPECIAL_KEY, and "value" = UGK_REFRESH_KEY
201   }
202     UGK_SPECIAL_KEY = 3;
203     UGK_REFRESH_KEY = $22222222;
204     K_REFRESH_KEY = UGK_REFRESH_KEY;
205     OLD_REFRESH_KEY = 222;
206  { available action keys for list  }
207     M_ESCAPE = $0001;
208     M_INSERT = $0002;
209     M_DELETE = $0004;
210     M_MODIFY = $0008;
211     M_SELECT = $0010;
212  { marked delete  }
213     M_MDELETE = $0020;
214     M_CYCLE = $0040;
215  { marked modify  }
216     M_MMODIFY = $0080;
217  { marked select  }
218     M_MSELECT = $0100;
219  { don't sort list  }
220     M_NO_SORT = $0200;
221  { allow the list to be refreshed  }
222     M_REFRESH = $0400;
223  { return values for EditString  }
224     E_ESCAPE = 1;
225     E_SELECT = 2;
226     E_EMPTY = 4;
227     E_CHANGE = 8;
228  { type values for EditString  }
229     EF_ANY = $0001;
230     EF_DECIMAL = $0002;
231     EF_HEX = $0004;
232     EF_NOSPACES = $0008;
233     EF_UPPER = $0010;
234     EF_DATE = $0020;
235     EF_TIME = $0040;
236     EF_FLOAT = $0080;
237     EF_SET = $0100;
238     EF_NOECHO = $0200;
239     EF_FILENAME = $0400;
240  { added in version 404  }
241     EF_MASK = $0800;
242  { and in version 405  }
243     EF_NOCONFIRM_EXIT = $1000;
244  { scroll bar stuff for NWSEditTextWithScrollBars, and NWSViewTextWithScrollBars  }
245  { which scroll bars to show  }
246     SHOW_VERTICAL_SCROLL_BAR = 2;
247     SHOW_HORIZONTAL_SCROLL_BAR = 4;
248  { when to show the scroll bars. Use ONLY one of these  }
249     CONSTANT_SCROLL_BARS = $0200;
250     TEXT_SENSITIVE_SCROLL_BARS = $0400;
251     CONSIDER_LOCKED_FIELDS = $0800;
252  { character and key constants  }
253
254          function F_H1 : longint;
255  { �  }  function F_H2 : longint;
256  { �  }  function F_V1 : longint;
257  { �  }  function F_V2 : longint;
258  { �  }  function F_UL1 : longint;
259  { �  }  function F_UR1 : longint;
260  { �  }  function F_LL1 : longint;
261  { �  }  function F_LR1 : longint;
262  { �  }  function F_UL2 : longint;
263  { �  }  function F_UR2 : longint;
264  { �  }  function F_LL2 : longint;
265  { �  }  function F_LR2 : longint;
266  { �  }  function F_UT1 : longint;
267  { �  }  function F_DT1 : longint;
268  { �  }  function F_LT1 : longint;
269  { �  }  function F_RT1 : longint;
270  { �  }  function F_UT2 : longint;
271  { �  }  function F_DT2 : longint;
272  { �  }  function F_LT2 : longint;
273  { �  }  function F_RT2 : longint;
274  { �  }  function F_X1 : longint;
275  { �  }  function F_X2 : longint;
276  {   }  function F_UP : longint;
277  {   }  function F_DOWN : longint;
278  {   }  function F_LEFT : longint;
279  {   }  function F_RIGHT : longint;
280  { �  }  function F_BG1 : longint;
281  { �  }  function F_BG2 : longint;
282  { �  }  function F_BG3 : longint;
283  { �  }  function F_BG4 : longint;
284
285
286  { form constants (control flags)  }
287  const
288     F_NOVERIFY = $00;
289     F_VERIFY = $10;
290     F_FORCE = $20;
291  { a flag to pass if no help is desired in the form  }
292     F_NO_HELP = $ffffffff;
293  {    fieldFlags Type masks     }
294  { normal editable field  }
295     NORMAL_FIELD = $00;
296  { non accessable  }
297     LOCKED_FIELD = $01;
298  { non editable  }
299     SECURE_FIELD = $02;
300  { verify field on form exit  }
301     REQUIRED_FIELD = $04;
302  { hidden fields are also locked  }
303     HIDDEN_FIELD = $09;
304  { prompt fields are also locked  }
305     PROMPT_FIELD = $11;
306  { field locked by user, not by NUT  }
307     ULOCKED_FIELD = $0100;
308  { MASKED_FIELD added in version 402  }
309  { display ' ' for text   }
310     MASKED_FIELD = $200;
311  { flag to cause form deselection
312                                             before action & verify routines
313                                             are called  }
314     FORM_DESELECT = $20;
315  { In case old flag was used  }
316     NO_FORM_DESELECT = $00;
317  { normal field controlled justify  }
318     DEFAULT_FORMAT = $00;
319  { right justification format  }
320     RIGHT_FORMAT = $40;
321  { left justification format  }
322     LEFT_FORMAT = $80;
323  { centering format  }
324     CENTER_FORMAT = $C0;
325     MAXPORTALS = 50;
326     MAXLISTS = 20;
327     SAVELISTS = 20;
328     MAXACTIONS = 60;
329     MAXFUNCTIONS = MAXACTIONS;
330     MAXHELP = 30;
331     NO_MESSAGE = $ffff;
332     DYNAMIC_MESSAGE_ONE = $fffe;
333     DYNAMIC_MESSAGE_TWO = $fffd;
334     DYNAMIC_MESSAGE_THREE = $fffc;
335     DYNAMIC_MESSAGE_FOUR = $fffb;
336     DYNAMIC_MESSAGE_FIVE = $fffa;
337     DYNAMIC_MESSAGE_SIX = $fff9;
338     DYNAMIC_MESSAGE_SEVEN = $fff8;
339     DYNAMIC_MESSAGE_EIGHT = $fff7;
340     DYNAMIC_MESSAGE_NINE = $fff6;
341     DYNAMIC_MESSAGE_TEN = $fff5;
342     DYNAMIC_MESSAGE_ELEVEN = $fff4;
343     DYNAMIC_MESSAGE_TWELVE = $fff3;
344     DYNAMIC_MESSAGE_THIRTEEN = $fff2;
345     DYNAMIC_MESSAGE_FOURTEEN = $fff1;
346     SYSTEM_MESSAGE = $8000;
347
348  function IS_DYNAMIC_MESSAGE(a : longint) : boolean;
349
350
351  type
352    PNUTInfo_ = ^TNUTInfo_;
353
354     PPCB_ = ^TPCB_;
355     TPCB_ = record
356          frameLine : longint;
357          frameColumn : longint;
358          frameHeight : longint;
359          frameWidth : longint;
360          virtualHeight : longint;
361          virtualWidth : longint;
362          cursorState : longint;
363          borderType : longint;
364          borderAttribute : longint;
365          saveFlag : word;
366          secondarySaveFlag : word;
367          directFlag : longint;
368          headerAttribute : longint;
369          portalLine : longint;
370          portalColumn : longint;
371          portalHeight : longint;
372          portalWidth : longint;
373          virtualLine : longint;
374          virtualColumn : longint;
375          cursorLine : longint;
376          cursorColumn : longint;
377          firstUpdateFlag : longint;
378          headerText : pchar;
379          headerText2 : pchar;
380          virtualScreen : pointer;
381          saveScreen : pointer;
382          screenID : TScr;
383          nutInfo : PNUTInfo_;
384          sequenceNumber : longint;
385          reserved1 : longint;
386          mtflags : longint;
387          borderPalette : longint;
388          showScrollBars : longint;
389          lastLine : longint;
390          longestLineLen : longint;
391          verticalScroll : longint;
392          horizontalScroll : longint;
393          oldVertical : longint;
394          oldHorizontal : longint;
395          deHighlightFunction : procedure (para1:PNUTInfo_; para2:PPCB_);cdecl;
396          reHighlightFunction : procedure (para1:PNUTInfo_; para2:PPCB_); cdecl;
397          reportPortalUpdate : procedure (para1:PPCB_; para2:PNUTInfo_; updateType:longint); cdecl;
398       end;
399     TPCB = TPCB_;
400     PPCB = ^TPCB;
401
402     PHS_ = ^THS_;
403     THS_ = record
404          nextScreen      : longint;
405          previousScreen  : longint;
406          frameLine       : longint;
407          frameColumn     : longint;
408          frameHeight     : longint;
409          frameWidth      : longint;
410          virtualHeight   : longint;
411          virtualWidth    : longint;
412          cursorState     : longint;
413          borderType      : longint;
414          borderAttribute : longint;
415          saveFlag        : longint;
416          directFlag      : longint;
417          headerAttribute : longint;
418          headerText      : pchar;
419          text            : pchar;
420       end;
421     THELP_SCREEN = THS_;
422     PHELP_SCREEN = ^THELP_SCREEN;
423
424     PLIST_STRUCT = ^TLIST_STRUCT;
425     TLIST_STRUCT = record
426          prev           : PLIST_STRUCT;
427          next           : PLIST_STRUCT;
428          otherInfo      : pointer;
429          marked         : longint;
430          flags          : word;
431          maxSkew        : word;
432          entryProcedure : procedure (listElement:PLIST_STRUCT; displayLine:longint; NUTInfoStructure:pointer);cdecl;
433          extra          : longint;
434          text           : array[0..0] of char;
435       end;
436     TLIST = TLIST_STRUCT;
437     PLIST = ^TLIST;
438     PPLIST= ^PLIST;
439
440     PLP_ = ^TLP_;
441     TLP_ = record
442          head          : pointer;
443          tail          : pointer;
444          sortProc      : function :longint;cdecl;
445          freeProcedure : procedure (memoryPointer:pointer);
446       end;
447     TLISTPTR = TLP_;
448     PLISTPTR = ^TLISTPTR;
449
450     PMI_ = ^TMI_;
451     TMI_ = record
452          dynamicMessageOne      : pchar;
453          dynamicMessageTwo      : pchar;
454          dynamicMessageThree    : pchar;
455          dynamicMessageFour     : pchar;
456          dynamicMessageFive     : pchar;
457          dynamicMessageSix      : pchar;
458          dynamicMessageSeven    : pchar;
459          dynamicMessageEight    : pchar;
460          dynamicMessageNine     : pchar;
461          dynamicMessageTen      : pchar;
462          dynamicMessageEleven   : pchar;
463          dynamicMessageTwelve   : pchar;
464          dynamicMessageThirteen : pchar;
465          dynamicMessageFourteen : pchar;
466          messageCount : longint;
467          programMesgTable : ppchar;
468       end;
469     TMessageInfo = TMI_;
470     PMessageInfo = ^TMessageInfo;
471
472     PINT_ = ^TINT_;
473     TINT_ = record
474          interruptProc : procedure (handle:pointer);cdecl;
475          key : longint;
476       end;
477     TINTERRUPT = TINT_;
478     PINTERRUPT = ^TINTERRUPT;
479
480     PMP_ = ^TMP_;
481     TMP_ = record
482          listAction : function (option:longint; parameter:pointer):longint;cdecl;
483          parameter  : pointer;
484       end;
485     TMENU_PARAMETER = TMP_;
486     PMENU_PARAMETER = ^TMENU_PARAMETER;
487  { environment structure  }
488  { always leave the following fields at the end of the struct.  They
489          should never be referenced directly by an application  }
490
491
492     TNUTInfo_ = record
493          portal : array[0..(MAXPORTALS)-1] of PPCB;
494          currentPortal : longint;
495          headerHeight : longint;
496          waitFlag : longint;
497          listStack : array[0..(MAXLISTS)-1] of TLISTPTR;
498          saveStack : array[0..(SAVELISTS)-1] of TLISTPTR;
499          nextAvailList : longint;
500          head : PLIST;
501          tail : PLIST;
502          defaultCompareFunction : function (el1:PLIST; el2:PLIST):longint;cdecl;
503          freeProcedure : procedure (memoryPointer:pointer);
504          interruptTable : array[0..(MAXFUNCTIONS)-1] of procedure ;
505          functionKeyStatus : array[0..(MAXACTIONS)-1] of longint;
506          messages : TMessageInfo;
507          helpContextStack : array[0..(MAXHELP)-1] of longint;
508          currentPreHelpMessage : longint;
509          freeHelpSlot : longint;
510          redisplayFormFlag : longint;
511          preHelpPortal : longint;
512          helpActive : smallint;
513          errorDisplayActive : smallint;
514          helpPortal : longint;
515          waitPortal : longint;
516          errorPortal : longint;
517          resourceTag : pointer;
518          screenID : pointer;
519          helpScreens : pointer;
520          helpOffset : longint;
521          helpHelp : longint;
522          allocChain : pointer;
523          version : longint;
524          reserved : array[0..9] of longint;
525          moduleHandle : longint;
526          customData : pointer;
527          customDataRelease : procedure (theData:pointer; thisStructure:PNUTInfo_); cdecl;
528          displayErrorLabel : longint;
529          markBuffer : pchar;
530          markBufferLength : longint;
531          editBuffer : pchar;
532          editBufferLength : longint;
533          staticFlag : longint;
534          processID : longint;
535          mtflags : longint;
536          saveCurrentPortal : longint;
537          palette : longint;
538          nutDataHandle : pointer;
539          next : PNUTInfo_;
540          prev : PNUTInfo_;
541          listSortFunction : procedure (head:PLIST; tail:PLIST; thisStructure:PNUTInfo_); cdecl;
542          compatibilityLevel : longint;
543       end;
544     TNUTInfo = TNUTInfo_;
545     PNUTInfo = ^TNUTInfo;
546     PPNUTInfo= ^PNUTInfo;
547
548  { menu header message number  }
549  { menu center line  }
550  { menu center column  }
551  { len of longest menu option  }
552  { menu action routine  }
553  { list head for menu list  }
554
555     PMFC_ = ^TMFC_;
556     TMFC_ = record
557          headernum : longint;
558          centerLine : longint;
559          centerColumn : longint;
560          maxoptlen : longint;
561          action : function (option:longint; parameter:pointer):longint;cdecl;
562          arg1 : longint;
563          arg2 : longint;
564          arg3 : longint;
565          arg4 : longint;
566          arg5 : longint;
567          arg6 : longint;
568          menuhead : TLISTPTR;
569          nutInfo : PNUTInfo;
570       end;
571     TMFCONTROL = TMFC_;
572     PMFCONTROL = ^TMFCONTROL;
573  { list element that owns the field  }
574  { Control flags  }
575  { Line where field is located  }
576  { Column where field is located  }
577  { Maximum width of field  }
578  { Display attribute for field  }
579  { Keys that will activate the field  }
580  { Routine called when field selected  }
581  { Routine to verify Input  }
582  { Data & Xtra field release routine  }
583  { Pointer to data  }
584  { Additional control info  }
585  { help context for this field  }
586  { Pointer to field above  }
587  { Pointer to field below  }
588  { Pointer to field to left  }
589  { Pointer to field to right  }
590  { Pointer to previous field  }
591  { Pointer to next field  }
592  { if this value is set, this routine will be called upon
593                  entry to each field  }
594  { this allows the user to have any sort of custom data that
595                  he wants attached to the field.  }
596  { and this lets him release it. Note that these parameters
597                  match NWSFree which allows the use of NWSAlloc for
598                  this data (a further guarantee that the memory will be freed  }
599  { handle to keep track of who owns the field  }
600
601     Pfielddef = ^Tfielddef;
602     Tfielddef = record
603          element : PLIST;
604          fieldFlags : longint;
605          fieldLine : longint;
606          fieldColumn : longint;
607          fieldWidth : longint;
608          fieldAttribute : longint;
609          fieldActivateKeys : longint;
610          fieldFormat : procedure (field:Pfielddef; text:pchar; buffLen:longint);cdecl;
611          fieldControl : function (field:Pfielddef; selectKey:longint; fieldChanged:Plongint; handle:PNUTInfo):longint;
612          fieldVerify : function (field:Pfielddef; data:pchar; handle:PNUTInfo):longint;
613          fieldRelease : procedure (para1:Pfielddef);
614          fieldData : pchar;
615          fieldXtra : pchar;
616          fieldHelp : longint;
617          fieldAbove : Pfielddef;
618          fieldBelow : Pfielddef;
619          fieldLeft : Pfielddef;
620          fieldRight : Pfielddef;
621          fieldPrev : Pfielddef;
622          fieldNext : Pfielddef;
623          fieldEntry : procedure (intoField:Pfielddef; fieldData:pointer; handle:PNUTInfo);
624          customData : pointer;
625          customDataRelease : procedure (fieldCustomData:pointer; handle:PNUTInfo);
626          nutInfo : PNUTInfo;
627       end;
628     TFIELD = Tfielddef;
629     PFIELD = ^TFIELD;
630  { Structures used for DisplayErrorCondition }
631
632     PPCERR_ = ^TPCERR_;
633     TPCERR_ = record
634          ccodeReturned : longint;
635          errorMessageNumber : longint;
636       end;
637     TPROCERROR = TPCERR_;
638     PPROCERROR = ^TPROCERROR;
639
640     PNA_ = ^TNA_;
641     TNA_ = record
642          address : pointer;
643          next : pointer;
644       end;
645     TNUT_ALLOC = TNA_;
646     PNUT_ALLOC = ^TNUT_ALLOC;
647
648  function NWSInitializeNut
649                (utility,
650                 version,
651                 headerType,
652                 compatibilityLevel : longint;
653                 messageTable       : PPchar;
654                 helpScreens        : pchar;
655                 screenID           : TScr;     // Clib/OS Screen Id
656                 resourceTag        : TRtag;    // OS ResourceTagStructure
657             var handle             : PNUTInfo) : longint;cdecl;external External_library name 'NWSInitializeNut';
658
659  procedure NWSScreenSize(maxLines,maxColumns:plongint);cdecl;external External_library name 'NWSScreenSize';
660  procedure NWSScreenSize(var maxLines,maxColumns:longint);cdecl;external External_library name 'NWSScreenSize';
661
662  procedure NWSShowPortalLine(line,column:longint; text:pchar; length:longint; portal:PPCB);cdecl;external External_library name 'NWSShowPortalLine';
663
664  procedure NWSShowPortalLineAttribute(line,column:longint; text:pchar; attribute,length:longint;
665              portal:PPCB);cdecl;external External_library name 'NWSShowPortalLineAttribute';
666
667  procedure NWSScrollPortalZone(line,column,height,width,attribute,
668              count,direction:longint; portal:PPCB);cdecl;external External_library name 'NWSScrollPortalZone';
669
670  procedure NWSFillPortalZone(line,column,height,width,fillCharacter,
671              fillAttribute:longint; portal:PPCB);cdecl;external External_library name 'NWSFillPortalZone';
672
673  procedure NWSFillPortalZoneAttribute(line,column,height,width,attribute:longint;
674              portal:PPCB);cdecl;external External_library name 'NWSFillPortalZoneAttribute';
675
676  function NWSGetMessage(message:longint; messages:PMessageInfo):pchar;cdecl;external External_library name 'NWSGetMessage';
677
678  procedure NWSSetDynamicMessage(message:longint; text:pchar; messages:PMessageInfo);cdecl;external External_library name 'NWSSetDynamicMessage';
679  procedure NWSSetDynamicMessage(message:longint; text:pchar; var messages:TMessageInfo);cdecl;external External_library name 'NWSSetDynamicMessage';
680
681  function NWSCreatePortal
682                (line,
683                 column,
684                 frameHeight,
685                 frameWidth,
686                 virtualHeight,
687                 virtualWidth,
688                 saveFlag:longint;
689                 headerText:pchar;
690                 headerAttribute,
691                 borderType,
692                 borderAttribute,
693                 cursorFlag,
694                 directFlag : longint;
695                 handle     : PNUTInfo) : longint;cdecl;external External_library name 'NWSCreatePortal';
696
697  procedure NWSDestroyPortal(portalNumber:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSDestroyPortal';
698
699  procedure NWSPositionPortalCursor(line:longint; column:longint; portal:PPCB);cdecl;external External_library name 'NWSPositionPortalCursor';
700
701  procedure NWSEnablePortalCursor(portal:PPCB);cdecl;external External_library name 'NWSEnablePortalCursor';
702
703  procedure NWSDisablePortalCursor(portal:PPCB);cdecl;external External_library name 'NWSDisablePortalCursor';
704
705  procedure NWSDeselectPortal(handle:PNUTInfo);cdecl;external External_library name 'NWSDeselectPortal';
706
707  procedure NWSSelectPortal(portalNumber:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSSelectPortal';
708
709  function NWSComputePortalPosition(centerLine:longint; centerColumn:longint; height:longint; width:longint; line:plongint;
710             column:plongint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSComputePortalPosition';
711
712  procedure NWSClearPortal(portal:PPCB);cdecl;external External_library name 'NWSClearPortal';
713
714type TFreeRoutine = procedure (memoryPointer:pointer); cdecl;
715
716  procedure NWSInitList(handle:PNUTInfo; freeRoutine:TFreeRoutine);cdecl;external External_library name 'NWSInitList';
717
718  function NWSPushList(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSPushList';
719
720  function NWSPopList(handleNWS:PNUTInfo):longint;cdecl;external External_library name 'NWSPopList';
721
722  function NWSSaveList(listIndex:longint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSSaveList';
723
724  function NWSRestoreList(listIndex:longint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSRestoreList';
725
726  procedure NWSDestroyList(handle:PNUTInfo);cdecl;external External_library name 'NWSDestroyList';
727
728  procedure NWSDestroyMenu(handle:PNUTInfo);cdecl;external External_library name 'NWSDestroyMenu';
729
730  procedure NWSDestroyForm(handle:PNUTInfo);cdecl;external External_library name 'NWSDestroyForm';
731
732  function NWSAppendToList(text:pchar; otherInfo:pointer; handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSAppendToList';
733
734  function NWSDeleteFromList(el:PLIST; handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSDeleteFromList';
735
736  function NWSInsertInList(text:pchar; otherInfo:pointer; atElement:PLIST; handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSInsertInList';
737
738  function NWSGetListElementText(element:PLIST):pchar;cdecl;external External_library name 'NWSGetListElementText';
739
740  function NWSGetListHead(handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSGetListHead';
741
742  function NWSGetListTail(handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSGetListTail';
743
744  procedure NWSUnmarkList(handle:PNUTInfo);cdecl;external External_library name 'NWSUnmarkList';
745
746  procedure NWSSetList(listPtr:PLISTPTR; handle:PNUTInfo);cdecl;external External_library name 'NWSSetList';
747
748  procedure NWSGetList(listPtr:PLISTPTR; handle:PNUTInfo);cdecl;external External_library name 'NWSGetList';
749
750  function NWSIsAnyMarked(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSIsAnyMarked';
751
752  procedure NWSPushMarks(handle:PNUTInfo);cdecl;external External_library name 'NWSPushMarks';
753
754  procedure NWSPopMarks(handle:PNUTInfo);cdecl;external External_library name 'NWSPopMarks';
755
756  procedure NWSSortList(handle:PNUTInfo);cdecl;external External_library name 'NWSSortList';
757
758  procedure NWSInitMenu(handle:PNUTInfo);cdecl;external External_library name 'NWSInitMenu';
759
760  procedure NWSInitForm(handle:PNUTInfo);cdecl;external External_library name 'NWSInitForm';
761
762  function NWSGetSortCharacter(charIndex:longint):longint;cdecl;external External_library name 'NWSGetSortCharacter';
763
764  function NWSGetLineDrawCharacter(charIndex:longint):longint;cdecl;external External_library name 'NWSGetLineDrawCharacter';
765
766  function NWSStrcat(_string, newStuff:pchar):longint;cdecl;external External_library name 'NWSStrcat';
767
768  procedure NWSMemmove(dest:pointer; source:pointer; len:longint);cdecl;external External_library name 'NWSMemmove';
769
770  function NWSToupper(ch:char):char;cdecl;external External_library name 'NWSToupper';
771
772  function NWSIsdigit(ch:char):longbool;cdecl;external External_library name 'NWSIsdigit';
773
774  function NWSIsxdigit(ch:char):longbool;cdecl;external External_library name 'NWSIsxdigit';
775
776  function NWSAsciiToInt(data:pchar):longint;cdecl;external External_library name 'NWSAsciiToInt';
777
778  function NWSAsciiToLONG(data:pchar):longint;cdecl;external External_library name 'NWSAsciiToLONG';
779
780  function NWSAsciiHexToInt(data:pchar):longint;cdecl;external External_library name 'NWSAsciiHexToInt';
781
782  procedure NWSWaitForEscape(handle:PNUTInfo);cdecl;external External_library name 'NWSWaitForEscape';
783
784  function NWSWaitForEscapeOrCancel(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSWaitForEscapeOrCancel';
785
786  procedure NWSGetKey(_type:plongint; value:pchar; handle:PNUTInfo);cdecl;external External_library name 'NWSGetKey';
787  procedure NWSGetKey(var _type:longint; value:pchar; handle:PNUTInfo);cdecl;external External_library name 'NWSGetKey';
788
789  function NWSKeyStatus(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSKeyStatus';
790
791  function NWSUngetKey(_type:longint; value:longint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSUngetKey';
792
793  procedure NWSEnableFunctionKey(key:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSEnableFunctionKey';
794
795  procedure NWSDisableFunctionKey(key:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSDisableFunctionKey';
796
797  procedure NWSDisableInterruptKey(key:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSDisableInterruptKey';
798
799type TInterruptProc = procedure (handle:pointer); cdecl;
800
801  procedure NWSEnableInterruptKey(key:longint; interruptProc:TInterruptProc; handle:PNUTInfo);cdecl;external External_library name 'NWSEnableInterruptKey';
802
803  procedure NWSSaveFunctionKeyList(keyList:pchar; handle:PNUTInfo);cdecl;external External_library name 'NWSSaveFunctionKeyList';
804
805  procedure NWSEnableFunctionKeyList(keyList:pchar; handle:PNUTInfo);cdecl;external External_library name 'NWSEnableFunctionKeyList';
806
807  procedure NWSSaveInterruptList(interruptList:PINTERRUPT; handle:PNUTInfo);cdecl;external External_library name 'NWSSaveInterruptList';
808
809  procedure NWSEnableInterruptList(interruptList:PINTERRUPT; handle:PNUTInfo);cdecl;external External_library name 'NWSEnableInterruptList';
810
811  procedure NWSDisableAllInterruptKeys(handle:PNUTInfo);cdecl;external External_library name 'NWSDisableAllInterruptKeys';
812
813  procedure NWSDisableAllFunctionKeys(handle:PNUTInfo);cdecl;external External_library name 'NWSDisableAllFunctionKeys';
814
815  procedure NWSEnableAllFunctionKeys(handle:PNUTInfo);cdecl;external External_library name 'NWSEnableAllFunctionKeys';
816
817  function NWSDisplayTextInPortal(line,indentLevel:longint; text:pchar; attribute:longint; portal:PPCB):longint;cdecl;external External_library name 'NWSDisplayTextInPortal';
818
819  function NWSDisplayInformation(header,pauseFlag,centerLine,centerColumn,palette,
820             attribute:longint; displayText:pchar; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSDisplayInformation';
821
822  procedure NWSStartWait(centerLine,centerColumn:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSStartWait';
823
824  procedure NWSEndWait(handle:PNUTInfo);cdecl;external External_library name 'NWSEndWait';
825
826  function NWSAlert(centerLine,centerColumn:longint; handle:PNUTInfo; message:longint; args:array of const):longint;cdecl;external External_library name 'NWSAlert';
827
828  function NWSAlert(centerLine,centerColumn:longint; handle:PNUTInfo; message:longint):longint;cdecl;external External_library name 'NWSAlert';
829
830  function NWSAlertWithHelp(centerLine,centerColumn:longint; handle:PNUTInfo; message,helpContext:longint;
831             args:array of const):longint;cdecl;external External_library name 'NWSAlertWithHelp';
832
833  function NWSAlertWithHelp(centerLine,centerColumn:longint; handle:PNUTInfo; message:longint; helpContext:longint):longint;cdecl;external External_library name 'NWSAlertWithHelp';
834
835  function NWSTrace(handle:PNUTInfo; message:pchar; args:array of const):longint;cdecl;external External_library name 'NWSTrace';
836  function NWSTrace(handle:PNUTInfo; message:pchar):longint;cdecl;external External_library name 'NWSTrace';
837
838  procedure NWSDisplayErrorText(message:longint; severity:longint; handle:PNUTInfo; args:array of const);cdecl;external External_library name 'NWSDisplayErrorText';
839
840  procedure NWSDisplayErrorText(message:longint; severity:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSDisplayErrorText';
841
842  procedure NWSDisplayErrorCondition(procedureName:pchar; errorCode:longint; severity:longint; errorList:PPROCERROR; handle:PNUTInfo;
843              args:array of const);cdecl;external External_library name 'NWSDisplayErrorCondition';
844
845  procedure NWSDisplayErrorCondition(procedureName:pchar; errorCode:longint; severity:longint; errorList:PPROCERROR; handle:PNUTInfo);cdecl;external External_library name 'NWSDisplayErrorCondition';
846
847  function NWSAppendToMenu(message:longint; option:longint; handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSAppendToMenu';
848
849type TActionFunc = function (option:longint; parameter:pointer) : longint; cdecl;
850
851  function NWSMenu(header,
852                   centerLine,
853                   centerColumn:longint;
854                   defaultElement:PLIST;
855                   action:TActionFunc;
856                   handle:PNUTInfo;
857                   actionParameter:pointer):longint;cdecl;external External_library name 'NWSMenu';
858
859  function NWSConfirm(header,centerLine,centerColumn,defaultChoice:longint;
860                      action:TActionFunc;
861                      handle:PNUTInfo;
862                      actionParameter:pointer):longint;cdecl;external External_library name 'NWSConfirm';
863
864  function NWSPushHelpContext(helpContext:longint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSPushHelpContext';
865
866  function NWSPopHelpContext(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSPopHelpContext';
867
868type TFormatFunc=function (element:PLIST; skew:longint; displayLine:pchar; width:longint):longint; cdecl;
869     TNWSListActionFunc=function (keyPressed:longint; elementSelected:PPLIST; itemLineNumber:plongint; actionParameter:pointer):longint;  cdecl;
870
871  function NWSList(header:longint; centerLine:longint; centerColumn:longint; height:longint; width:longint;
872             validKeyFlags:longint; element:PPLIST; handle:PNUTInfo; format:TFormatFunc; action:TNWSListActionFunc;
873             actionParameter:pointer):longint;cdecl;external External_library name 'NWSList';
874
875type TInsertFunc = function (text:pchar; otherInfo:Ppointer; parameters:pointer):longint; cdecl;
876     TFreeProcedure=function (otherInfo:pointer):longint; cdecl;
877
878  function NWSInsertInPortalList(currentElement:PPLIST; currentLine:plongint; InsertProcedure:TInsertFunc; FreeProcedure:TFreeProcedure; handle:PNUTInfo;
879             parameters:pointer):longint;cdecl;external External_library name 'NWSInsertInPortalList';
880
881type TModifyProcedure=function (text:pchar; parameters:pointer):longint;  cdecl;
882
883  function NWSModifyInPortalList(currentElement:PPLIST; currentLine:plongint; ModifyProcedure:TModifyProcedure; handle:PNUTInfo; parameters:pointer):longint;cdecl;external External_library name 'NWSModifyInPortalList';
884
885type TDeleteFunc = function (el:PLIST; handle:PNUTInfo; parameters:pointer):PLIST; cdecl;
886  function NWSDeleteFromPortalList(currentElement:PPLIST; currentLine:plongint; DeleteProcedure:TDeleteFunc; deleteCurrentHeader:longint; deleteMarkedHeader:longint;
887             handle:PNUTInfo; parameters:pointer):longint;cdecl;external External_library name 'NWSDeleteFromPortalList';
888
889type TNWSEditInsertFunc=function (buffer:pchar; maxLen:longint; parameters:pointer):longint; cdecl;
890     TNWSEditActionFunc=function (action:longint; buffer:pchar; parameters:pointer):longint; cdecl;
891
892  function NWSEditString(
893             centerLine, centerColumn, editHeight, editWidth, header,
894             prompt :longint;
895             buf:pchar;
896             maxLen, _type:longint; handle:PNUTInfo;
897             insertProc:TNWSEditInsertFunc;
898             actionProc:TNWSEditActionFunc;
899             parameters:pointer):longint;cdecl;external External_library name 'NWSEditString';
900
901  function NWSAppendIntegerField
902             (line, column, fflag:longint; data:Plongint;
903              minimum, maximum, help:longint;
904              handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendIntegerField';
905
906  function NWSAppendIntegerField
907             (line, column, fflag:longint; var data:longint;
908              minimum, maximum, help:longint;
909              handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendIntegerField';
910
911  function NWSAppendUnsignedIntegerField
912              (line,
913               column,
914               fflag:longint;
915               data:plongint;
916               minimum, maximum, help:longint;
917               handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendUnsignedIntegerField';
918
919  function NWSAppendUnsignedIntegerField
920              (line,
921               column,
922               fflag:longint;
923               var data:cardinal;
924               minimum, maximum, help:longint;
925               handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendUnsignedIntegerField';
926
927  function NWSAppendHexField
928              (line,column,fflag:longint;
929               data:Plongint;
930               minimum, maximum, help:longint;
931               handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendHexField';
932
933  procedure NWSDisplayPreHelp
934              (line, column, message:longint;
935               handle:PNUTInfo);cdecl;external External_library name 'NWSDisplayPreHelp';
936
937  procedure NWSRemovePreHelp
938              (handle:PNUTInfo);cdecl;external External_library name 'NWSRemovePreHelp';
939
940  function  NWSGetADisk
941              (volName,prompt:pchar;
942               handle:PNUTInfo):longint;cdecl;external External_library name 'NWSGetADisk';
943
944  procedure NWSInitListPtr(listPtr:PLISTPTR);cdecl;external External_library name 'NWSInitListPtr';
945
946  function NWSEditForm
947              (headernum,
948               line,
949               col,
950               portalHeight,
951               portalWidth,
952               virtualHeight,
953               virtualWidth,
954               ESCverify,
955               forceverify,
956               confirmMessage : longint;
957               handle         : PNUTInfo):longint;cdecl;external External_library name 'NWSEditForm';
958
959  function NWSEditPortalFormField
960              (header,
961               cline,
962               ccol,
963               formHeight,
964               formWidth,
965               controlFlags:longint;
966               formHelp:CARDINAL;
967               confirmMessage:longint;
968               startField:PFIELD;
969               handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditPortalFormField';
970
971  function NWSEditPortalForm
972              (header,
973               centerLine,
974               centerColumn,
975               formHeight,
976               formWidth,
977               controlFlags:longint;
978               formHelp:CARDINAL;
979               confirmMessage:longint;
980               handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditPortalForm';
981
982type TfFormat  = procedure (field:Pfielddef; text:pchar; buffLen:longint); cdecl;
983     TfControl = function (field:Pfielddef; selectKey:longint; var fieldChanged:longint; handle:PNUTInfo):longint; cdecl;
984     TfVerify  = function (field:Pfielddef; data:pointer; handle:PNUTInfo):longint; cdecl;
985     TfRelease = procedure (field:Pfielddef); cdecl;
986
987  { Data & Xtra field release routine  }
988  function NWSAppendToForm(
989             fline,
990             fcol,
991             fwidth,
992             fattr:longint;
993             fFormat:TfFormat;
994             fControl:TfControl;
995             fVerify:TfVerify;
996             fRelease:TfRelease;
997             fData:pointer;
998             fXtra:pointer;
999             fflags:longint;
1000             fActivateKeys:longint;
1001             fhelp:longint;
1002             handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendToForm';
1003
1004  function NWSAppendPromptField(line,column,promptnum:longint; handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendPromptField';
1005
1006  function NWSAppendCommentField(line,column:longint; prompt:pchar; handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendCommentField';
1007
1008  function NWSAppendStringField
1009            (line,
1010             column,
1011             width,
1012             fflag:longint;
1013             data,cset:pchar;
1014             help:longint;
1015             handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendStringField';
1016
1017  function NWSAppendBoolField
1018            (line,
1019             column,
1020             fflag:longint;
1021             data:pointer;
1022             help:longint;
1023             handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendBoolField';
1024
1025  function NWSAppendBoolField
1026            (line,
1027             column,
1028             fflag:longint;
1029         var data:longbool;
1030             help:longint;
1031             handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendBoolField';
1032
1033  function NWSAppendGenericBoolField
1034            (line,
1035             column,
1036             fflag:longint;
1037             data:pointer;
1038             help:longint;
1039             yesString, noString:pchar;
1040             handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendGenericBoolField';
1041
1042  function NWSAppendGenericBoolField
1043            (line,
1044             column,
1045             fflag:longint;
1046         var data:longbool;
1047             help:longint;
1048             yesString, noString:pchar;
1049             handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendGenericBoolField';
1050
1051type TSpotActionFunc = function (fp:PFIELD; selectKey:longint; var changedField:longint; handle:PNUTInfo):longint; cdecl;
1052  function NWSAppendHotSpotField
1053            (line,
1054             column,
1055             fflag:longint;
1056             displayString:pchar;
1057             SpotAction:TSpotActionFunc;
1058             handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendHotSpotField';
1059
1060  function NWSInitMenuField
1061            (headermsg,
1062             cLine,
1063             cCol:longint;
1064             action:TActionFunc;
1065             nutInfo:PNUTInfo;
1066             args:array of const):PMFCONTROL;cdecl;external External_library name 'NWSInitMenuField';
1067
1068  function NWSInitMenuField
1069            (headermsg,
1070             cLine,
1071             cCol:longint;
1072             action:TActionFunc;
1073             nutInfo:PNUTInfo):PMFCONTROL;cdecl;external External_library name 'NWSInitMenuField';
1074
1075  function NWSAppendToMenuField
1076            (m:PMFCONTROL;
1077             optiontext:longint;
1078             option:longint;
1079             nutInfo:PNUTInfo):longint;cdecl;external External_library name 'NWSAppendToMenuField';
1080
1081  function NWSAppendMenuField
1082            (line,
1083             column,
1084             fflag:longint;
1085             data:Plongint;
1086             m:PMFCONTROL;
1087             help:longint;
1088             nutInfo:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendMenuField';
1089
1090   function NWSAppendMenuField
1091            (line,
1092             column,
1093             fflag:longint;
1094         var data:longint;
1095             m:PMFCONTROL;
1096             help:longint;
1097             nutInfo:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendMenuField';
1098
1099  function NWSEditText
1100            (centerLine,
1101             centerColumn,
1102             height,
1103             width,
1104             headerNumber:longint;
1105             textBuffer:pchar;
1106             maxBufferLength,
1107             confirmMessage,
1108             forceConfirm:longint;
1109             handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditText';
1110
1111  function NWSViewText
1112            (centerLine,
1113             centerColumn,
1114             height,
1115             width,
1116             headerNumber:longint;
1117             textBuffer:pchar;
1118             maxBufferLength:longint;
1119             handle:PNUTInfo):longint;cdecl;external External_library name 'NWSViewText';
1120
1121  procedure NWSDisplayHelpScreen
1122            (offset:longint;
1123             handle:PNUTInfo);cdecl;external External_library name 'NWSDisplayHelpScreen';
1124
1125  // Allocates memory for NWSNUT purposes
1126  function NWSAlloc
1127            (numberOfBytes:longint;
1128             handle:PNUTInfo):pointer;cdecl;external External_library name 'NWSAlloc';
1129
1130  procedure NWSFree
1131            (address:pointer;
1132             handle:PNUTInfo);cdecl;external External_library name 'NWSFree';
1133
1134  // Displays justified text in an existing portal
1135  function NWSDisplayTextJustifiedInPortal
1136            (justify,
1137             line:longint; column:longint; textWidth:longint; text:pchar;
1138             attribute:longint; portal:PPCB):longint;cdecl;external External_library name 'NWSDisplayTextJustifiedInPortal';
1139
1140  function NWSDisplayInformationInPortal
1141            (header,
1142             portalJustifyLine,
1143             portalJustifyColumn,
1144             portalJustifyType,
1145             portalPalette,
1146             portalBorderType,
1147             portalMaxWidth,
1148             portalMaxHeight,
1149             portalMinWidth,
1150             portalMinHeight,
1151             textLRJustifyType,
1152             textLRIndent,
1153             textTBJustifyType,
1154             textTBIndent,
1155             textAttribute,
1156             textMinimizeStyle:longint;
1157             text:pchar;
1158             handle:PNUTInfo):longint;cdecl;external External_library name 'NWSDisplayInformationInPortal';
1159
1160  procedure NWSRestoreNut(handle:PNUTInfo);cdecl;external External_library name 'NWSRestoreNut';
1161
1162  procedure NWSDrawPortalBorder(portal:PPCB);cdecl;external External_library name 'NWSDrawPortalBorder';
1163
1164  procedure NWSUpdatePortal(portal:PPCB);cdecl;external External_library name 'NWSUpdatePortal';
1165
1166type TSSFEntryProc = procedure (para1:PFIELD; para2:pointer; para3:PNUTInfo); cdecl;
1167     TSSFCustomDataReleaseProc = procedure (para1:pointer; para2:PNUTInfo); cdecl;
1168     TSSFFormat=procedure (para1:PFIELD; text:pchar; para3:longint); cdecl;
1169     TSSFControlFunc = function (para1:PFIELD; para2:longint; para3:Plongint; para4:PNUTInfo):longint; cdecl;
1170     TSSFVerifyFunc  = function (para1:PFIELD; para2:pointer; para3:PNUTInfo):longint; cdecl;
1171     TSSFReleaseProc = procedure (para1:PFIELD); cdecl;
1172
1173  procedure NWSSetFieldFunctionPtr(fp:PFIELD;
1174              Format : TSSFFormat;
1175              Control: TSSFControlFunc;
1176              Verify : TSSFVerifyFunc;
1177              Release: TSSFReleaseProc;
1178              Entry  : TSSFEntryProc;
1179              customDataRelease
1180                     : TSSFCustomDataReleaseProc);cdecl;external External_library name 'NWSSetFieldFunctionPtr';
1181
1182
1183type TCompareFunc = function (el1:PLIST; el2:PLIST):longint; cdecl;
1184  procedure NWSSetDefaultCompare(handle:PNUTInfo;
1185                                 defaultCompareFunction:TCompareFunc);cdecl;external External_library name 'NWSSetDefaultCompare';
1186
1187  procedure NWSGetDefaultCompare(handle:PNUTInfo; var defaultCompareFunction:TCompareFunc);cdecl;external External_library name 'NWSGetDefaultCompare';
1188
1189type TlistSortFunction = procedure (head:PLIST; tail:PLIST; handle:PNUTInfo); cdecl;
1190  { added in version 402  }
1191  procedure NWSSetListSortFunction(handle:PNUTInfo;
1192                   listSortFunction:TlistSortFunction);cdecl;external External_library name 'NWSSetListSortFunction';
1193
1194  { added in version 402  }
1195  procedure NWSGetListSortFunction(handle:PNUTInfo;
1196                            var listSortFunction:TlistSortFunction);cdecl;external External_library name 'NWSGetListSortFunction';
1197
1198  procedure NWSSetScreenPalette(newPalette:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSSetScreenPalette';
1199
1200  function NWSGetScreenPalette(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSGetScreenPalette';
1201
1202  procedure NWSGetPCB(var _pPcb:PPCB; portalNumber:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSGetPCB';
1203
1204type TentryProcedure = procedure (element:PLIST; displayLine:longint; handle:PNUTInfo); cdecl;
1205  procedure NWSSetListNotifyProcedure(el:PLIST;
1206              entryProcedure:TentryProcedure);cdecl;external External_library name 'NWSSetListNotifyProcedure';
1207
1208  procedure NWSGetListNotifyProcedure(el:PLIST;
1209                                      var entryProcedure:TentryProcedure);cdecl;external External_library name 'NWSGetListNotifyProcedure';
1210
1211type TcdReleaseProc = procedure (theData:pointer; handle:PNUTInfo); cdecl;
1212  procedure NWSSetHandleCustomData(handle:PNUTInfo;
1213                                   customData:pointer;
1214                                   customDataRelease:TcdReleaseProc);cdecl;external External_library name 'NWSSetHandleCustomData';
1215
1216  procedure NWSGetHandleCustomData(handle:PNUTInfo;
1217                                   customData:Ppointer;
1218                                   customDataRelease:TcdReleaseProc);cdecl;external External_library name 'NWSGetHandleCustomData';
1219
1220  procedure NWSSetErrorLabelDisplayFlag(flag:longint;
1221                                        handle:PNUTInfo);cdecl;external External_library name 'NWSSetErrorLabelDisplayFlag';
1222
1223  procedure NWSSetHelpHelp(helpIndex:longint;
1224                           handle:PNUTInfo);cdecl;external External_library name 'NWSSetHelpHelp';
1225
1226  { max length of passwordString, including NULL  }
1227  function NWSPromptForPassword
1228               (passwordHeader,
1229                line,
1230                column,
1231                maxPasswordLen : longint;
1232                passwordString:pchar;
1233                verifyEntry:longint;
1234                handle:PNUTInfo):longint;cdecl;external External_library name 'NWSPromptForPassword';
1235
1236  function NWSAppendPasswordField
1237               (line,
1238                column,
1239                width,
1240                fflag:longint;            // field flags
1241                data:pchar;             // ptr to field text
1242                maxDataLen,             // including null
1243                help,                   // help for field
1244                verifyEntry,            // force password verification
1245                passwordPortalHeader,
1246                maskCharacter:longint;    // fill character for field
1247                nhandle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendPasswordField';
1248
1249  function NWSAppendScrollableStringField
1250               (line,
1251                column,
1252                width,
1253                fflag:longint;
1254                data:pchar;
1255                maxLen:longint;           // max len of data, allowing for null terminator
1256                cset:pointer;           // valid characters, if using EF_SET
1257                editFlags,              // NWSEditString flags (EF_UPPER etc.)
1258                help:longint;
1259                handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendScrollableStringField';
1260
1261type TSSFInsertFunc = function (_string:pchar; maxLen:longint; parameters:pointer):longint; cdecl;
1262  procedure NWSSetScrollableFieldInsertProc(fp:PFIELD; insertProc:TSSFInsertFunc);cdecl;external External_library name 'NWSSetScrollableFieldInsertProc';
1263
1264  { Returns 0 for success, -1 if none selected  }
1265  { if not NULL, returns portal number  }
1266  function NWSGetCurrentPortal(nutInfo:PNUTInfo; portalNumber:plongint; var portal:PPCB):longint;cdecl;external External_library name 'NWSGetCurrentPortal';
1267
1268  { if not NULL, returns PCB pointer  }
1269  function NWSWaitForKeyAndValue(handle:PNUTInfo;
1270                                 nKeys:longint;
1271                                 keyType:array of longint;
1272                                 keyValue:array of longint):longint;cdecl;external External_library name 'NWSWaitForKeyAndValue';
1273
1274  procedure NWSShowLineAttribute(line,
1275                                 column:longint;
1276                                 text:pchar;
1277                                 attribute,
1278                                 length:longint;
1279                                 screenID:TScr);cdecl;external External_library name 'NWSShowLineAttribute';
1280
1281  procedure NWSShowLine(line,column:longint; text:pchar; length:longint; screenID:TScr);cdecl;external External_library name 'NWSShowLine';
1282
1283  procedure NWSScrollZone
1284                   (line,
1285                    column,
1286                    height,
1287                    width,
1288                    attribute,
1289                    count,
1290                    direction:longint;
1291                    screenID:TScr);cdecl;external External_library name 'NWSScrollZone';
1292
1293  procedure NWSSaveZone
1294                   (line,
1295                    column,
1296                    height,
1297                    width:longint;
1298                    buffer:pointer;
1299                    screenID:TScr);cdecl;external External_library name 'NWSSaveZone';
1300
1301  procedure NWSSaveZone
1302                   (line,
1303                    column,
1304                    height,
1305                    width:longint;
1306                var buffer;
1307                    screenID:TScr);cdecl;external External_library name 'NWSSaveZone';
1308
1309  procedure NWSRestoreZone
1310                   (line,
1311                    column,
1312                    height,
1313                    width:longint;
1314                    buffer:pointer;
1315                    screenID:TScr);cdecl;external External_library name 'NWSRestoreZone';
1316
1317  procedure NWSRestoreZone
1318                   (line,
1319                    column,
1320                    height,
1321                    width:longint;
1322                var buffer;
1323                    screenID:TScr);cdecl;external External_library name 'NWSRestoreZone';
1324
1325  procedure NWSRestoreDisplay(screenID:TScr);cdecl;external External_library name 'NWSRestoreDisplay';
1326
1327  procedure NWSPositionCursor(line, column:longint; screenID:TScr);cdecl;external External_library name 'NWSPositionCursor';
1328
1329  procedure NWSGetNUTVersion(majorVersion, minorVersion, revision:plongint);cdecl;external External_library name 'NWSGetNUTVersion';
1330  procedure NWSGetNUTVersion(var majorVersion, minorVersion, revision:longint);cdecl;external External_library name 'NWSGetNUTVersion';
1331
1332  procedure NWSSetFormRepaintFlag(value:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSSetFormRepaintFlag';
1333
1334  procedure NWSSetFormNoWrap(handle:PNUTInfo);cdecl;external External_library name 'NWSSetFormNoWrap';
1335
1336  function NWSViewTextWithScrollBars
1337                (centerLine,
1338                 centerColumn,
1339                 height,
1340                 width,
1341                 headerNumber:longint;
1342                 textBuffer:pchar;
1343                 maxBufferLength,
1344                 scrollBarFlag:longint;
1345                 handle:PNUTInfo):longint;cdecl;external External_library name 'NWSViewTextWithScrollBars';
1346
1347  { length of document  }
1348  function NWSEditTextWithScrollBars
1349                (centerLine,
1350                 centerColumn,
1351                 height,
1352                 width,
1353                 headerNumber:longint;
1354                 textBuffer:pchar;
1355                 maxBufferLength,
1356                 confirmMessage,
1357                 forceConfirm,
1358                 scrollBarFlag:longint;
1359                 handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditTextWithScrollBars';
1360
1361   function NWSEditTextWithScrollBars
1362                (centerLine,
1363                 centerColumn,
1364                 height,
1365                 width,
1366                 headerNumber:longint;
1367                 textBuffer:pchar;
1368                 maxBufferLength,
1369                 confirmMessage : longint;
1370                 forceConfirm   : longbool;
1371                 scrollBarFlag  : longint;
1372                 handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditTextWithScrollBars';
1373
1374
1375implementation
1376
1377  function F_H1 : longint;
1378  begin
1379    F_H1:=NWSGetLineDrawCharacter(0);
1380  end;
1381
1382  function F_H2 : longint;
1383  begin
1384    F_H2:=NWSGetLineDrawCharacter(1);
1385  end;
1386
1387  function F_V1 : longint;
1388  begin
1389    F_V1:=NWSGetLineDrawCharacter(2);
1390  end;
1391
1392  function F_V2 : longint;
1393  begin
1394    F_V2:=NWSGetLineDrawCharacter(3);
1395  end;
1396
1397  function F_UL1 : longint;
1398  begin
1399    F_UL1:=NWSGetLineDrawCharacter(4);
1400  end;
1401
1402  function F_UR1 : longint;
1403  begin
1404    F_UR1:=NWSGetLineDrawCharacter(5);
1405  end;
1406
1407  function F_LL1 : longint;
1408  begin
1409    F_LL1:=NWSGetLineDrawCharacter(6);
1410  end;
1411
1412  function F_LR1 : longint;
1413  begin
1414    F_LR1:=NWSGetLineDrawCharacter(7);
1415  end;
1416
1417  function F_UL2 : longint;
1418  begin
1419    F_UL2:=NWSGetLineDrawCharacter(8);
1420  end;
1421
1422  function F_UR2 : longint;
1423  begin
1424    F_UR2:=NWSGetLineDrawCharacter(9);
1425  end;
1426
1427  function F_LL2 : longint;
1428  begin
1429    F_LL2:=NWSGetLineDrawCharacter(10);
1430  end;
1431
1432  function F_LR2 : longint;
1433  begin
1434    F_LR2:=NWSGetLineDrawCharacter(11);
1435  end;
1436
1437  function F_UT1 : longint;
1438  begin
1439    F_UT1:=NWSGetLineDrawCharacter(12);
1440  end;
1441
1442  function F_DT1 : longint;
1443  begin
1444    F_DT1:=NWSGetLineDrawCharacter(13);
1445  end;
1446
1447  function F_LT1 : longint;
1448  begin
1449    F_LT1:=NWSGetLineDrawCharacter(14);
1450  end;
1451
1452  function F_RT1 : longint;
1453  begin
1454    F_RT1:=NWSGetLineDrawCharacter(15);
1455  end;
1456
1457  function F_UT2 : longint;
1458  begin
1459    F_UT2:=NWSGetLineDrawCharacter(24);
1460  end;
1461
1462  function F_DT2 : longint;
1463  begin
1464    F_DT2:=NWSGetLineDrawCharacter(25);
1465  end;
1466
1467  function F_LT2 : longint;
1468  begin
1469    F_LT2:=NWSGetLineDrawCharacter(26);
1470  end;
1471
1472  function F_RT2 : longint;
1473  begin
1474    F_RT2:=NWSGetLineDrawCharacter(27);
1475  end;
1476
1477  function F_X1 : longint;
1478  begin
1479    F_X1:=NWSGetLineDrawCharacter(36);
1480  end;
1481
1482  function F_X2 : longint;
1483  begin
1484    F_X2:=NWSGetLineDrawCharacter(39);
1485  end;
1486
1487  function F_UP : longint;
1488  begin
1489    F_UP:=NWSGetLineDrawCharacter(40);
1490  end;
1491
1492  function F_DOWN : longint;
1493  begin
1494    F_DOWN:=NWSGetLineDrawCharacter(41);
1495  end;
1496
1497  function F_LEFT : longint;
1498  begin
1499    F_LEFT:=NWSGetLineDrawCharacter(42);
1500  end;
1501
1502  function F_RIGHT : longint;
1503  begin
1504    F_RIGHT:=NWSGetLineDrawCharacter(43);
1505  end;
1506
1507  function F_BG1 : longint;
1508  begin
1509    F_BG1:=NWSGetLineDrawCharacter(44);
1510  end;
1511
1512  function F_BG2 : longint;
1513  begin
1514    F_BG2:=NWSGetLineDrawCharacter(45);
1515  end;
1516
1517  function F_BG3 : longint;
1518  begin
1519    F_BG3:=NWSGetLineDrawCharacter(46);
1520  end;
1521
1522  function F_BG4 : longint;
1523  begin
1524    F_BG4:=NWSGetLineDrawCharacter(47);
1525  end;
1526
1527  function IS_DYNAMIC_MESSAGE(a : longint) : boolean;
1528  begin
1529    IS_DYNAMIC_MESSAGE:=(a > $fff0) and (a < $ffff);
1530  end;
1531
1532
1533end.
1534