.pl0
          ; Note:  TRUE = 0FFH, FALSE = 0

          ; The IBM flag bits should be set for an IBM compatible computer. The bits
          ; are defined as follows:

          ; Bit Function

          ;  0  BIOS ROM is IBM compatible for video & keyboard. Do not
          ;   change this bit.

          ;  1  Counter-timer I/O ports same as IBM (used for beep).

          ;  2  Use video RAM directly (may produce "hash" or not work
          ;   at all on some computers).

          ;  3  Use IBM tick timer at INT 1CH

          ;  4  Use fast cursor moves by changing 6845 directly.  Set to 0
          ;   if BIOS calls should always be used.

          ;  5  Reserved for future use.

          ;  6  Use bright instead of inverse video.

          ;  7  Wait for video retrace before displaying characters (to
          ;   reduce snow on screen).

 023A  1F     ibmflg  db  00011111b ; IBM ROM, beep ok, direct video, tick timer,
                  ; no bright or video retrace wait

          
          ; NWFLG flag bits are used to tell WordStar how it will be operated.
          ; The bits are defined as follows:

          ; Bit Function

          ;  0  Try to make WordStar completely RAM resident (limitation
          ;   of no on-screen help messages).
          ;
          ;  1  Check PDF for valid data while generating PDF lists.
          ;   Selecting PDF's is much slower with this bit set.
          ;
          ;  2  Do not swap WordStar to Disk/EMS when running the macro
          ;   Compiler/Decompiler.
          ;
          ;  3  Do not insert compiler errors inline into the macro source.
          ;
          ;  4  Tempory files (Before/After and style files) to be created
          ;   using swfile, instead of creating in same drive and directory
          ;   as input file specification.
          ;
          ; 5-7 Reserved for future use.
          ;

 023B  06     nwflg db  00000110B ; Normal operation :- Check PDF's and do not
                  ; swap WordStar when running compiler.

;         RJS notes:  16h 00010110b = same as above, but temp files created with swfile



          ; MPMFLG is used for multi-user or networked systems.

          ; Bit Meaning

          ;  0  Set to 1 if a system reset is not to be used when logging.

          ;  1  More than one user can access the same document if 1. If 0,
          ;   files are not shared.

          ;  2  More than one user can share the default list device if 1.
          ;   If 0, WordStar will immediately use the printer.

          ;  3  More than one user can share the personal dictionary if 1.
          ;   If 0, personal dictionary is not shared.

          ;  4  Operating system date is correct if 1. Don't use date if 0.

          ;  5  System contains a keyboard type ahead buffer if 1. WordStar
          ;   must do more frequent keyboard checks if 0.

          ;  6  Set to 1 if configuration file is to be used

          ;  7  Reserved.

;   30h     00110000b <-- does NOT use configuration files
;   06h     00000110b
;   16h     00010110b
;   70h     01110000b
;   70h     01110000b <-- uses configuration files
;   72h     01110010b <-- uses configuration files and prevents multiple copies of WordStar opening the same file (note: if multiple WordStars have different spillfile locations, they 
can still both open and edit the full file)
      bits: 76543210

 023C  30     mpmflg  db  00110000b ; Single-user system, date okay, type ahead

          
          ; This flag is used to say how memory is used.

          ; Bit Meaning

          ;  0  Set to 0 if messages should be ram resident.

          ;  1  Set to 1 if the speller and thesaurus should share overlay
          ;   and dictionary memory.  See speller memory requirements later
          ;   in this listing.

          ;  2  No longer used.

 023D  03     memflg  db  0011b   ; Definitions during spell check initially off,
                  ; Messages in not in ram

          
          ; SHARE indicates what happens when files can be shared (see MPMFLG).
          ; If it is 0, and a file is already being edited, other users cannot
          ; edit the file. If it is 1, other users are asked if they want to
          ; look at the file in protected mode (but only as much of the file
          ; that will fit in memory at once).

 023E  01     share db  1   ; Look at files

 023F  00 00 00     db  0,0,0   ; Reserved

          page

          ;   TERMINAL PATCH AREA
          ;
          ; This section contains the user-modifiable constants and
          ; routines for hardware-dependent terminal functions
          ; and characteristics required by the editor.
          ;
          ; There are three types of patches in this area. One can
          ; patch data values (HITE, WIDE) which describe the
          ; terminal, strings (CLEAD1, ERAEOL) which define
          ; control sequences, or actual microprocessor
          ; instructions.
          ;
          ; For the string sequences, the first byte of the patch
          ; indicates the number of bytes in the string,
          ; followed by that many string bytes. If there is
          ; insufficient room for the whole string, the format
          ; can be modified by putting a -1 (0FFH) where the
          ; number of bytes would go, and then putting the
          ; address in the following two bytes (low order byte
          ; first) of the address where the longer patch
          ; resides. The longer patch must then be of the
          ; normal format which is the number of bytes followed
          ; by the string.
          ;
          ; This area is normally patched for your specific terminal
          ; by the interactive INSTALL program. Additional
          ; patching to this area is needed only for unusual
          ; terminals or video boards, or to meet special
          ; requirements, or to enhance or personalize your
          ; copy of WordStar.

          
          ; Video screen height, width, and wrap-around parameters are required.

 0242  19     hite  db  25    ; Must be exact screen height in lines

 0243  50     wide  db  80    ; Must be <= exact screen width in columns.

 0244  00     wrap  db  FALSE   ; Indicates if terminal wraps around to next
                  ; line if a character is displayed in WIDth
                  ; column of screen (set FALSE if it doesn't)

 0245  00     xonoff  db  FALSE   ; TRUE if XON/XOFF protocol to be used for
                  ; the CRT terminal

 0246  14     scroll  db  20    ; Number of columns that are horizontally
                  ; scrolled when cursor moves beyond right
                  ; or left side of screen.

 0247  FF     dirsiz  db  TRUE    ; Show directory at choosing a file prompt

 0248  00 00 00 00 00 00    db  0,0,0,0,0,0 ; Reserved

          
          ; Delete String

          ; The following string indicates to WordStar how to display a delete
          ; character (hex 7F) on the screen while editing. On terminals that
          ; interpret the delete character code into a displayable character, it
          ; is recommended that DELSTR be translated into the delete code itself
          ; (length of 1, then 7FH). All characters in the string must display.

 024E  01     delstr  db  1   ; Number of chars in string
 024F  7F       db  DEL   ; What is displayed
 0250  00 00 00       db  0,0,0   ; 3 spare bytes

          
          ; Soft and End of Line Hyphen String

          ; In order to distinguish soft hyphens from normal hyphens in the text,
          ; WordStar will substitute the following string when one is encountered.

 0253  01     shystr  db  1   ; Number of chars in string
 0254  3D       db  '='   ; What is displayed
 0255  00 00 00       db  0,0,0   ; Spare bytes

          
          ; Block Marker Strings

          ; Block marker strings are displayed on the screen to show the start and
          ; end of a block of text. The strings are in the typical format of the
          ; length followed by as many characters. Control characters should not
          ; be included within these strings because they would not be sent
          ; directly to the screen.

 0258  03     bblock  db  3   ; Three chars
 0259  3C 42 3E       db  '<B>'   ; Begin block
 025C  00       db  0   ; 1 spare

          
 025D  03     kblock  db  3   ; Three chars
 025E  3C 4B 3E       db  '<K>'   ; End block
 0261  00       db  0   ; 1 spare

          
          ; Special characters

 0262  FA     softsp  db  0FAh    ; Small dot for soft spaces
 0263  C4       db  0C4h    ; Page break line
 0264  FE       db  0FEh    ; Binding space
 0265  F0       db  0F0h    ; Snaking column indicator
 0266  CD       db  0CDh    ; Column break line
 0267  2E       db  '.'   ; Dot leader

 = 0006       SOFTSPZ equ $-softsp
 0268  0008[        db  (14-SOFTSPZ) dup (0)  ; Reserved
       00
        ]

          
          ; Screen marker characters appear in scroll bar
          ; This table allows conversion to some other character.
 0270  B0     sbdisp  db  176   ; scroll bar background
 0271  DB       db  219   ; Elevator
 0272  18       db  24    ; Top thumb nail
 0273  19       db  25    ; Bottom thumb nail
 = 0004       SBMARKZ equ $-sbdisp
 0274  0002[        db  (6-SBMARKZ) dup (0) ; Reserved
       00
         ]

          
          ; Screen marker characters appear at the right-hand edge of the screen.
          ; This table allows conversion to some other character.

 0276  3C     scmark  db  '<'   ; Hard line ending
 0277  20       db  ' '   ; Paragraph line ending
 0278  2B       db  '+'   ; Long line
 0279  5E       db  '^'   ; End of file
 027A  2D       db  '-'   ; Overstrike line
 027B  4A       db  'J'   ; Line feed
 027C  46       db  'F'   ; Form feed
 027D  50       db  'P'   ; Page break
 027E  43       db  'C'   ; Column break
 027F  57       db  'W'   ; Window separator
 0280  2E       db  '.'   ; Dot command
 0281  31       db  '1'   ; Dot command at start of page
 0282  3A       db  ':'   ; Merge print dot command
 0283  3F       db  '?'   ; Unknown dot command
 0284  B3       db  179   ; Suppressed blank line
 0285  40       db  '@'   ; Don't output the end line marker

 = 0010       SCMARKZ equ $-scmark
 0286  000E[        db  (30-SCMARKZ) dup (0)  ; Reserved
       00
         ]

          

          ; The following string is used at sign-on to describe the type
          ; of terminal being used by WordStar. Up to 53 bytes are available
          ; for the string, including the newline (CR/LF) and null terminator.

          .list
 0294  49 42 4D 20 50 43  crtid db  'IBM PC or Compatible (includes EGA and VGA)'       ; terminal name
       20 6F 72 20 43 6F  
       6D 70 61 74 69 62  
       6C 65 20 28 69 6E  
       63 6C 75 64 65 73  
       20 45 47 41 20 61  
       6E 64 20 56 47 41  
       29
 02BF  0D 0A        db  CR,LF               ; new line

 = 002D       CRTIDZ  equ $-crtid
 02C1  0008[        db  (53 - CRTIDZ) dup (0)
       00
         ]

          

          ; Cursor positioning control sequences are required.
          ;
          ; Cursor positioning for most terminals is accomplished
          ; by sending:
          ;
          ; 1. A 'lead-in' string of one or more terminal
          ;   specific characters.
          ; 2. The line number, with an offset (often 20H) added.
          ;   For some terminals, the column number is
          ;   sent first.
          ; 3. For some terminals, another 'lead-in' string.
          ; 4. The column (or line) number, with an offset.
          ; 5. For some terminals, a terminating string.
          ;
          ; For most terminals, the line and column number are sent
          ; as one-byte binary numbers. Some terminals require
          ; that a two- or three-digit ASCII number is sent.
          ;
          ; For terminals that do not fit the above patterns, you
          ; must code your own subroutine.
          ;
          ; For example, the cursor is positioned on the TeleVideo
          ; terminal by sending:
          ;
          ; ESCAPE, '=',
          ; line number plus 20H,
          ; column number plus 20H.

 02C9  00     clead1  db  0   ; Initial lead-in string
 02CA  00       db  0   ; First character
 02CB  00       db  0   ; Second character
 02CC  00 00        db  0,0   ; Space for two more characters

 02CE  00     clead2  db  0   ; Sent between line and column
 02CF  00       db  0   ; example. First character
 02D0  00 00 00       db  0,0,0   ; Space for three more characters

 02D3  00     ctrail  db  0   ; Terminating string
 02D4  00 00 00 00      db  0,0,0,0   ; Space for four characters

 02D8  00     cb4lfg  db  0   ; Send column before line?
                  ; Set non-zero to send column first

 02D9       curoff  label word    ; Both bytes used at one time

 02D9  00       db  0   ; Offset to add to line

 02DA  00       db  0   ; Offset to add to column

 02DB  00     ascur db  0   ; Binary/ASCII digit flag
                  ; 0 to send binary line and column
                  ; 2 to send 2-digit ASCII numbers
                  ; 3 to send 3-digit ASCII numbers
                  ; FF if WordStar to determine ASCII digits

          
          ; Not used on IBM version.

 02DC  90     ucrpos: nop
 02DD  90       nop
 02DE  C3       ret

 02DF  90     oncur:  nop
 02E0  90       nop
 02E1  C3       ret

 02E2  90     offcur: nop
 02E3  90       nop
 02E4  C3       ret

          
          ; Everything in the rest of this section is optional.
          ; The items relate either to enhanced performance,
          ; or for accomodating unusual terminals.
          ;
          ; Erase screen. If this function is not available, leave
          ; the first byte zero, and the editor will either send
          ; line feeds, or update a screen of text using ERAEOL
          ; below.
          ;
          ; After the screen is erased, WordStar assumes that the video
          ; attributes are set to normal, and that the cursor is at
          ; the home position (upper left hand corner).

 02E5  01     erascr  db  ERASCRE     ; Number of characters

 02E6  1A     erascr1 db  CTRLZ     ; First character

 = 0001       ERASCRE equ $-erascr1   ; number of characters in table
 = 0002       ERASCRZ equ $-erascr    ; size of defined table
 02E7  000F[        db  (17-ERASCRZ) dup (0)  ; rest of table
       00     
         ]    

          

          ; Backspace one character string. If this function is not
          ; available, leave the first byte zero, and the editor
          ; will use cursor addressing to backspace.

 02F6  00     bakspc  db  0   ; Number of characters
 02F7  00       db  0   ; First character
 02F8  00 00 00       db  0,0,0   ; Additional characters

          
          ; Erase to end of line string. If this function is not
          ; available, leave the first byte zero, and the editor
          ; will perform the function more slowly via software.

 02FB  01     eraeol  db  1   ; Number of characters
 02FC  14       db  CTRLT   ; First character
 02FD  00 00 00       db  0,0,0   ; Additional characters

          
          ; Erase to end of screen string. If this function is not
          ; available, leave the first byte zero, and the editor
          ; will user erase by blanking.

 0300  00     eraeos  db  0   ; Number of characters
 0301  00       db  0   ; First character
 0302  00 00 00       db  0,0,0   ; Additional characters

          
          ; Delete screen line containing the cursor, and move lower
          ; lines on the screen up one line. If this function
          ; is not available, leave the first byte zero, and
          ; the editor will perform the function more slowly
          ; via software.

 0305  01     lindel  db  1   ; Number of characters
 0306  12       db  CTRLR   ; First character
 0307  00 00 00       db  0,0,0   ; Additional characters

          
          ; Insert a blank line on the screen, moving the line
          ; containing the cursor, and the lines below it down
          ; one line. If this function is not available, leave
          ; the first byte zero, and the editor will perform
          ; the function more slowly via software.

 030A  01     linins  db  1   ; Number of characters
 030B  05       db  CTRLE   ; First character
 030C  00 00 00       db  0,0,0   ; Additional characters

          
          ; WordStar will use LINDEL and LININS to delete or insert a group
          ; of lines rather than just displaying a whole new screenful
          ; of characters. LINMAX below indicates the maximum number
          ; of lines that this would generally be faster than the
          ; re-display. Set to zero if don't care.

 030F  00     linmax  db  0   ; Don't care

          
          ; Delete the character at the current cursor position, moving all
          ; following characters left one position. If not available
          ; leave the first byte zero and WordStar will repaint the line.

 0310  00     chrdel  db  0   ; Number of characters
 0311  00       db  0   ; First character
 0312  00 00 00       db  0,0,0   ; Additional characters

          
          ; Insert a blank on the screen at the current cursor position,
          ; moving following characters to the right. Leave first byte
          ; zero if unavailable so that WordStar will repaint line.

 0315  00     chrins  db  0   ; Number of characters
 0316  00       db  0   ; First character
 0317  00 00 00       db  0,0,0   ; Additional characters

          
          ; Terminal initialization string. A string of bytes which
          ; will be sent to the terminal at the beginning of a
          ; session. See also INISUB.

 031A  FF     trmini  db  -1    ; Number of bytes
 031B  02E5 R       dw  erascr    ; Use extension mechanism (-1 as byte
 031D  00 00        db  0,0   ; count) to erase screen as initialization.

          
          ; Terminal un-initialization string. A string of bytes
          ; which will be sent to the terminal at the end of a
          ; session. See also UNISUB.

 031F  FF     trmuni  db  -1    ; Number of bytes
 0320  02E5 R       dw  erascr
 0322  00 00        db  0,0

          
          ; User-patchable initialization subroutine. Called before
          ; the TRMINI string is sent. This subroutine may be
          ; used for special console initialization or other
          ; purposes. See UCRPOS comments.

 0324  90     inisub: nop     ; Normally NOP, or JMP to
 0325  90       nop     ; your subroutine
 0326  C3       ret

          
          ; User patchable un-initialization subroutine. Called
          ; before the TRMUNI string is sent. This subroutine
          ; may be used to 'undo' any special terminal status
          ; used for the editor. See UCRPOS comments.

 0327  90     unisub: nop     ; Normally NOP, or JMP to
 0328  90       nop     ; your subroutine
 0329  C3       ret

          
          ; Video attributes are used in various places on the WordStar display.
          ; When a video attribute changes, WordStar calls the VIDATT subroutine
          ; below with a video attribute code in the CX register. If the CH
          ; register is zero, WordStar is displaying regular text and the CL
          ; register bits mean the following video attributes are to be used...

          ; Bit Video Attribute

          ; none  Normal text
          ;  0  Strike-out
          ;  1  Reserved
          ;  2  Marked text
          ;  3  Underlining
          ;  4  Subscripting
          ;  5  Superscripting
          ;  6  Highlighting
          ;  7  Italic

          ; If the CH register is non-zero, its bits have the following meaning...

          ; Bit Video Attribute

          ;  0  Extended characters
          ;  1  Status line
          ;  2  Menu text (can be normal or highlighted depending on CL)
          ;  3  Function key labels
          ;  4  Ruler line
          ;  5  Directory
          ;  6  Warnings and error messages

          ; WordStar expects the video attribute for the character to be returned
          ; in the AL register. Here is the default mapping for some of the
          ; WordStar video attributes into IBM attributes...

          ; WordStar Video  IBM Video Function

          ;   00000000   00000111 Normal
          ;   01110001   00001000 Bright
          ;   00001000   00000001 Underline
          ;   00000100   00010000 Inverse
          ;   00000010   10000000 Blink

          

          ; The VIDATT subroutine is used to change video attributes on the screen.
          ; On entry, WordStar will supply the attributes to turn on in the CX register.
          ; You must translate them into whatever your particular terminal requires.

          ; Return the IBM video attribute byte in AL.

          

          ; IBM Video Conversion

 = byte ptr ds:[4]    vidax equ byte ptr ds:[4] ; Data segment location for VIDATT use
 = word ptr ds:[8]    viday equ word ptr ds:[8] ; Data segment location for SAV_VATT
 = byte ptr ds:[10]   vidaz equ byte ptr ds:[10] ; Data segment location for SAV_VATT+2

 032A       vidatt:
 032A  89 0E 0008     mov viday,cx
 032E  BE 046B R      mov si,offset vcolor+1
 0331  2E: 8A 04      mov al,cs:[si]  ; Get normal color

 0334  E3 4E        jcxz  vida4   ; Normal?
 0336  8A E0        mov ah,al

 0338  8A 36 0004     mov dh,vidax  ; Know video type?
 033C  FE C6        inc dh
 033E  75 0B        jnz vida1

          ; Initialize

 0340  51       push  cx
 0341  B4 0F        mov ah,15   ; Get video type
 0343  CD 10        int 10h
 0345  A2 0004        mov vidax,al
 0348  59       pop cx
 0349  EB DF        jmp vidatt

          ; Non-text attributes

 034B  F6 C5 FE     vida1:  test  ch,11111110b  ; Not special text?
 034E  74 3F        jz  vida5

 0350  8A C5        mov al,ch   ; Status line?
 0352  B3 11        mov bl,17
 0354  D0 E8        shr al,1
 0356  D0 E8        shr al,1
 0358  72 25        jc  vida3

 035A  FE C3        inc bl    ; Menu?
 035C  D0 E8        shr al,1
 035E  72 14        jc  vida2

 0360  B3 14        mov bl,17+3   ; Function key labels?
 0362  D0 E8        shr al,1
 0364  72 0E        jc  vida2

 0366  B3 18        mov bl,17+7   ; Ruler line?
 0368  D0 E8        shr al,1
 036A  72 13        jc  vida3

 036C  B3 16        mov bl,17+5   ; Directory?
 036E  D0 E8        shr al,1
 0370  72 02        jc  vida2

 0372  B3 19        mov bl,17+8   ; Warnings

 0374  0A C9      vida2:  or  cl,cl   ; Normal video?
 0376  74 07        jz  vida3

 0378  F6 C1 04       test  cl,100b   ; Inverse
 037B  75 0B        jnz vida4a

 037D  FE C3        inc bl    ; Highlighted

 037F  32 FF      vida3:  xor bh,bh   ; Get video attribute from VCOLOR
 0381  2E: 8A 00      mov al,cs:[si+bx]
 0384  A2 000A      vida4:  mov byte ptr vidaz,al ; Save resulting value for next time
 0387  C3       ret

 0388  E8 037F R    vida4a: call  vida3   ; Invert colors
 038B  B1 04        mov cl,4
 038D  EB 1C        jmp short vida7a

          ; Use VCOLOR table to convert WordStar video bits

 038F  8A E9      vida5:  mov ch,cl   ; Original bits to CH

 0391  B2 08        mov dl,8    ; Go through table
 0393  46       inc si
 0394  D0 E9      vida6:  shr cl,1    ; Bit not set?
 0396  73 07        jnc vida7

 0398  2E: 22 04      and al,cs:[si]  ; AND with mask, OR with new color
 039B  2E: 0A 44 01     or  al,cs:[si+1]

 039F  46     vida7:  inc si    ; Next color in table
 03A0  46       inc si
 03A1  FE CA        dec dl
 03A3  75 EF        jnz vida6

 03A5  B1 04        mov cl,4    ; CL=4

 03A7  84 E9        test  ch,cl   ; Not marking a block?
 03A9  74 29        jz  vida10

          ; Don't use inverse?

 03AB  2E: F6 06 023A R 40    vida7a: test  cs:ibmflg,01000000b ; Bit set indicating "no inverse"?
 03B1  75 23        jnz vida11

 03B3  80 FE 08       cmp dh,8    ; Color screen?
 03B6  75 08        jnz vida9

          ; B&W

 03B8  A8 76        test  al,01110110b  ; Not underlining?
 03BA  75 02        jnz vida8

 03BC  8A C4        mov al,ah   ; Use normal color

 03BE  34 08      vida8:  xor al,00001000b  ; Invert bright

          ; Color

 03C0  8A F0      vida9:  mov dh,al   ; Swap foreground & background colors
 03C2  8A D0        mov dl,al
 03C4  D2 E6        shl dh,cl
 03C6  80 E6 70       and dh,01110000b
 03C9  D2 EA        shr dl,cl
 03CB  80 E2 07       and dl,00000111b
 03CE  24 88        and al,10001000b
 03D0  0A C6        or  al,dh
 03D2  0A C2        or  al,dl
 03D4  EB AE      vida10: jmp vida4

          ; Use bright instead of inverse

 03D6  0C 08      vida11: or  al,00001000b  ; Set bright attribute
 03D8  EB AA        jmp vida4

 = 00B0       vidatz  equ $-vidatt  ; Size of VIDATT code

 03DA  0090[        db  (320-vidatz) dup(0) ; Extra bytes to fill out to 300th byte
       00     
         ]    

          

; Video attributes used in VIDATT for the IBM compatible video RAM. Note
; that the table is used both for monochrome and color and should be
; installed accordingly. The default is set up for monochrome.

; Each entry in the table contains both a mask that is AND'd with the video
; attribute, and a color code that is OR'd.

; The IBM PC uses a video attribute byte for each character. It is
; organized in the following way:

; Bit Function

; 0,1,2 Foreground color (characters)
; 3 Bright
; 4,5,6 Background color
; 7 Blink

; The color codes for the IBM PC are:

; 0 - black
; 1 - blue
; 2 - green
; 3 - cyan
; 4 - red
; 5 - magenta
; 6 - brown
; 7 - white (light grey)

 046A  00 07  vcolor  db  000h, 007h  ; Normal text
 046C  8F 08      db  08Fh, 008h  ; Strike-out
 046E  FF 00      db  0FFh, 000h  ; Reserved
 0470  FF 00      db  0FFh, 000h  ; Reserved (reverse video)
 0472  F8 01      db  0F8h, 001h  ; Underline (blue if color)
 0474  FF 08      db  0FFh, 008h  ; Subscripts
 0476  FF 08      db  0FFh, 008h  ; Superscripts
 0478  FF 08      db  0FFh, 008h  ; Bold, doublestrike & command tags
 047A  FF 08      db  0FFh, 008h  ; Italics

 047C  07       db  007h    ; Title bar
 047D  07       db  007h    ; Menus, dialogs, warnings
 047E  01       db  001h    ; Menu, dialog, warning high
 047F  01       db  001h    ; Style & dialog box buttons
 0480  70       db  070h    ; Button highlight
 0481  70       db  070h    ; Status line
 0482  0F       db  00Fh    ; Title highlight
 0483  70       db  070h    ; Ruler line
 0484  70       db  070h    ; Flag column
 0485  07       db  007h    ; Lists

 = 001C       vcoloz  equ $-vcolor    ; Size of VCOLOR

 0486  0002[        db  (30-vcoloz) dup(0)  ; Extra bytes to fill out to 30th byte
       00     
         ]    

          

          ; Normally the status line and text are displayed in dim intensity
          ; so that bold and doublestruck text can be shown in high intensity.
          ; Setting BRITE to 0FFH reverses the usage of bright and dim for
          ; the status line, text, and directories; zero normally.

 0488  00     brite db  0   ; Don't reverse

          
          ; WordStar attempts to draw a box around most of the menus using the following
          ; box drawing characters.

 0489  C4     boxchr  db  196 ;0cdh   ; Horizontal line
 048A  B3       db  179 ;0bah   ; Vertical line
 048B  DA       db  218 ;0c9h   ; Upper left corner
 048C  C0       db  192 ;0c8h   ; Lower left corner
 048D  BF       db  191 ;0bbh   ; Upper right corner
 048E  D9       db  217 ;0bch   ; Lower right corner
 048F  C3       db  195     ; Left join
 0490  B4       db  180     ; Right join
 0491  CD       db  205     ; Double line separator
 0492  00 00 00       db  0,0,0 ; Reserved

          
          ; Delays executed after various terminal functions, before
          ; the next character is sent to the terminal, to
          ; allow response time required by certain terminals
          ; when operating at a high baud rate. Set to a
          ; larger value if you suffer a loss of characters
          ; after a terminal function.

          ; Each delay is approximately the number of milliseconds
          ; on a 8088 processor. An 8086 may be consideraby
          ; faster.

 0495  00     delcus  db  0   ; No delay after cursor positioning
                  ; (if your terminal works better with
                  ; 5 milliseconds of delay, you would
                  ; put a "5" here)

 0496  00     delmis  db  0   ; No delay after ERASCR and TRMINI

 0497  0000     dxoff dw  0   ; If XON/XOFF used for terminal, sometimes
                  ; a legitimate ^S will be interpreted as an
                  ; XOFF character. DXOFF is used to time out
                  ; so that the terminal will continue.

 0499  07D0     dlong dw  2000    ; Long delays (2 seconds = 2,000 milliseconds)
                  ; - between sign-on message and Opening Menu
                  ; - hold off accidental unerase after ^U is
                  ;   used to cancel something

 049B  03E8     dmed  dw  1000    ; Medium delays (1 second = 1,000 milliseconds)
                  ; - hold off submenu (^Q ^K ^O ^P ^M) to
                  ;   prevent menus from appearing when typing
                  ;   commands quickly

 049D  00C8     dshort  dw  200   ; Short delays (200 milliseconds)
                  ; - find and replace flashing rate between
                  ;   text and Replace Y/N question
                  ; - delay between ^QQ repeated commands
                  ; - directory hold off delay if typing fast
                  ;   at prompts
                  ; - hold off help for prompt if typing fast
                  ; - same column delay (see samcol)

 049F  004B     updly dw  75    ; Page/line/column update delay after moving
                  ; the cursor

 04A1  0000     ddisk dw  0   ; Disk access delay. If character typed
                  ; during disk access, wait for more typing
                  ; before continuing.

 04A3  0032     dfast dw  50    ; Delay when typing fast. Holds off displaying
                  ; the rest of the line briefly.

 04A5  01F4     dalign  dw  500   ; Delay before auto realignment after typing
                  ; or deleting within a paragraph

          
          ; Not used in the IBM version.

 04A7  90     ucnsta: nop
 04A8  90       nop
 04A9  C3       ret

 04AA  90     uconi:  nop
 04AB  90       nop
 04AC  C3       ret

 04AD  90     ucono:  nop
 04AE  90       nop
 04AF  C3       ret

          
          ; This is 384 bytes set aside for anything that the user wishes to use.

 04B0       morpat  label byte
 = 0000       morpaz  equ $-morpat

 04B0  0180[        db  (384-morpaz) dup(0) ; Fill out to 384th byte
       00     
         ]    

          
          ; The following string is used to describe the name of the default
          ; printer used by WordStar. Up to 40 bytes are provided for the
          ; string, including its null terminator.

 0630  44 72 61 66 74 20  PRNID db  'Draft Printer',CR,LF,0    ; Printer name
       50 72 69 6E 74 65  
       72 0D 0A 00    
 0640  20 20 20 20 20 20    db  '                        ' ; Additional room
       20 20 20 20 20 20  
       20 20 20 20 20 20  
       20 20 20 20 20 20  

          
          ; WordStar uses a default printer driver if none is specified by the
          ; user. The following is its name. It may be up to eight characters
          ; long, null terminated.

 0658  44 52 41 46 54 00  defprn  db  'DRAFT',0,0,0,0 ; Standard driver
       00 00 00     

 0661  0010[      nrmfid  db  16 dup (0)    ; Reserved
       00     
         ]    

 0671  0010[      altfid  db  16 dup (0)    ; Reserved
       00     
         ]    

 0681  0010[      linfid  db  16 dup (0)    ; Reserved
       00     
         ]    

 0691  0010[      fotfid  db  16 dup (0)    ; Reserved
       00     
         ]    

 06A1  0010[      endfid  db  16 dup (0)    ; Reserved
       00     
         ]    

          
 06B1  00 00 00 00 00 00    db  0,0,0,0,0,0,0,0,0 ; Reserved
       00 00 00     

          
          ; The print delay timer is used to time how long the printer is busy
          ; before telling the user that it's been busy a long time. This would
          ; primarily be used when the printer was in another room and you might
          ; not know that it was busy due to a paper jam or being off line.

 06BA  0000     prndly  dw  0   ; Delay before saying printer busy
                  ; 20 seconds = 20,000 milliseconds
                  ; Disabled if zero

          ; Some users, like programmers, may want to usually print non-documents.
          ; In this case, WordStar prints any lines that begin with a period (dot
          ; commands), and expands tab characters (09H) according to the filetype
          ; in the EDCOND table elsewhere in the User Area.

 06BC  00     pnodoc  db  FALSE   ; Don't print as a non-document

 06BD  00       db  0   ; Reserved

          
          ; Normally WordStar will print your document in the background so that
          ; you can then do something else while it is printing. This feature
          ; can be turned off.

          ; If a "print wait" occurs during background printing, the following
          ; byte determines whether or not to beep to get your attention.

 06BE  FF     bakprn  db  TRUE    ; Background printing is on
 06BF  FF       db  TRUE    ; Beep at a "print wait"

          
          ; User list device output subroutines are used if the normal systems list
          ; device is not to be used. The user subroutine overrides the LSTDEV
          ; selection below.

 06C0  90     ulosta: nop     ; User list output status subroutine.
 06C1  90       nop     ; Normally NOP, or JMP to your own
 06C2  C3       ret     ; subroutine. Must return 0 in AL if
                  ; list device is busy, 0FFH if idle.

 06C3  90     ulsto:  nop     ; User list output subroutine.
 06C4  90       nop     ; Normally NOP, or JMP to your own
 06C5  C3       ret     ; subroutine. Subroutine receives the
                  ; character in AL.

          
          ; User list input subroutines are used if either XON/XOFF or ETX/ACK
          ; protocols are used to indicate when the printer is busy.

          ; On IBM PCs, if the list device is defined for COMx, these routines are
          ; not required.

 06C6  90     ulista: nop     ; User list input status subroutine.
 06C7  90       nop     ; Normally NOP, or JMP to your own
 06C8  C3       ret     ; subroutine if XON/XOFF or ETX/ACK protocol.
                  ; Must return 0 in AL if no char pending.

 06C9  90     ulsti:  nop     ; User list input subroutine.
 06CA  90       nop     ; Normally NOP, or JMP to your own
 06CB  C3       ret     ; subroutine if XON/XOFF or ETX/ACK protocol.
                  ; Returns character in AL.

          
          ; Before printing, WordStar will call ULPORT below to allow for custom
          ; print output redirection. A pointer to the name of the printer (null
          ; terminated, all capital letters) will be passed to the subroutine in BX.
          ; It is up to this subroutine to then route the printer output to the
          ; appropriate output port by whatever means is available to it.

 06CC  90     ulport: nop     ; Normally NOP if no redirection to be done.
 06CD  90       nop     ; Change to JMP to your own subroutine.
 06CE  C3       ret

          
          ; The user list device uninitialize routine is called after printing is
          ; completed, and can be used to restore the printer state for non-WordStar
          ; applications.

 06CF  90     ulunpt: nop     ; Uninitialize list device after printing
 06D0  90       nop
 06D1  C3       ret

          
          ; When WordStar begins printing, space is allocated for accumulating
          ; header and footer lines.  HFSIZE determines how much space to allocate.

 06D2  1000     hfsize  dw  4096    ; 4k bytes

          
          ; DATSEP is the character used while merge printing to separate data
          ; items in a data file.  The byte following is the character used to mark
          ; substitution spots in the text.

 06D4  2C     datsep  db  ','   ; Comma
 06D5  26       db  '&'   ; Ampersand

          ; Strike-out character

 06D6  2D     stkchr  db  '-'   ; Strike out character

          
          ; Color names. Color printing is only supported on color printers.
          .list

 06D7       ucolor  label byte
            ; |         1         2   2|
            ; |123456789012345678901234|
 06D7  42 6C 61 63 6B 00    db  'Black',0
 06DD  42 6C 75 65 00     db  'Blue',0
 06E2  47 72 65 65 6E 00    db  'Green',0
 06E8  43 79 61 6E 00     db  'Cyan',0
 06ED  52 65 64 00      db  'Red',0
 06F1  4D 61 67 65 6E 74    db  'Magenta',0
       61 00      
 06F9  42 72 6F 77 6E 00    db  'Brown',0
 06FF  4C 69 67 68 74 20    db  'Light Gray',0
       47 72 61 79 00   
 070A  44 61 72 6B 20 47    db  'Dark Gray',0
       72 61 79 00    
 0714  4C 69 67 68 74 20    db  'Light Blue',0
       42 6C 75 65 00   
 071F  4C 69 67 68 74 20    db  'Light Green',0
       47 72 65 65 6E 00  
 072B  4C 69 67 68 74 20    db  'Light Cyan',0
       43 79 61 6E 00   
 0736  4C 69 67 68 74 20    db  'Light Red',0
       52 65 64 00    
 0740  4C 69 67 68 74 20    db  'Light Magenta',0
       4D 61 67 65 6E 74  
       61 00      
 074E  59 65 6C 6C 6F 77    db  'Yellow',0
       00     
 0755  57 68 69 74 65 20    db  'White on Black',0
       6F 6E 20 42 6C 61  
       63 6B 00     

 0764  0104[        db  (401-($-ucolor)) dup (0)
       00     
         ]    

          

          
          ; This is 128 bytes set aside for printer subroutines & strings.

 0868  0000 0000 0000 0000    prnpat  dw  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
       0000 0000 0000 0000    
       0000 0000 0000 0000    
 0888  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
       0000 0000 0000 0000    
       0000 0000 0000 0000    
 08A8  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
       0000 0000 0000 0000    
       0000 0000 0000 0000    
 08C8  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
       0000 0000 0000 0000    
       0000 0000 0000 0000    

          
          ; If non-standard initialization parameters are used, the following
          ; identification string can be displayed at sign-on. Up to 40 bytes are
          ; available for the string, including the null terminator.

 08E8  00     initid  db  0   ; No ID if standard
 08E9  20 20 20 20 20 20    db  '                   '
       20 20 20 20 20 20  
       20 20 20 20 20 20  
       20     
 08FC  20 20 20 20 20 20    db  '                    '
       20 20 20 20 20 20  
       20 20 20 20 20 20  
       20 20      

          
          ; Legal Drives
          ;
          ; The drives listed should be reduced to the ones that are actually in use
          ; on the system upon which WordStar is running.
          ;
          ; If the most significant bit of the drive letter is set to 1, WordStar
          ; will assume that the drive is non-removable. A disk reset will not
          ; be done when non-removable drives are logged.

 0910  41 42      lgldrv  db  'A', 'B'
 0912  C3 C4 C5 C6      db  'C' OR 80h, 'D' OR 80h, 'E' OR 80h, 'F' OR 80h
 0916  C7 C8 C9 CA      db  'G' OR 80h, 'H' OR 80h, 'I' OR 80h, 'J' OR 80h
 091A  CB CC CD CE      db  'K' OR 80h, 'L' OR 80h, 'M' OR 80h, 'N' OR 80h
 091E  CF D0 D1 D2      db  'O' OR 80h, 'P' OR 80h, 'Q' OR 80h, 'R' OR 80h
 0922  D3 D4 D5 D6      db  'S' OR 80h, 'T' OR 80h, 'U' OR 80h, 'V' OR 80h
 0926  D7 D8 D9 DA      db  'W' OR 80h, 'X' OR 80h, 'Y' OR 80h, 'Z' OR 80h
 092A  00       db  0

          

          ; WordStar uses several files. Their names are specified here.
          ;
          ; The first two bytes before each filename indicate where WordStar
          ; should search for the file, the first byte specifies tho primary
          ; search if this fails the second byte is used:
          ;
          ; Search proceeds according to following values:
          ;
          ; -1  : Secifies to WordStar that the file is uninstalled and no
          ;     search need take place.
          ;
          ;  0  : First look in the subdirectory on the current drive; if
          ;     not found, search along the MS-DOS path.
          ;
          ;  1 - n  : WordStar will only look in the first, second, or third
          ;     default path (see DEFPTH below).
          ;
          ; Filenames that have '000' as the fifth through eighth characters are
          ; for those parts of the program that are language dependent such as spelling.
          ; See the language table below to determine the actual file name used for
          ; searching.

 092B  01       db  1     ; Set to zero if never any help messages
 092C  FF 00 57 53 48 45  hpfile  db  -1, 0,'WSHELP  OVR'  ; WS help (must be 1st in list)
       4C 50 20 20 4F 56  
       52     

 0939  FF 00 57 53 4D 53  msfile  db  -1, 0,'WSMSGS  OVR'  ; WS menus, dialogs, and messages
       47 53 20 20 4F 56  
       52     

 0946  FF 00 57 53 44 53  dsfile  db  -1, 0,'WSDSPCH OVR'  ; WS dispatch table
       50 43 48 20 4F 56  
       52     

 0953  FF 00 57 53 49 4E  ixfile  db  -1, 0,'WSINDEX XCL'  ; WS indexer exclusion list
       44 45 58 20 58 43  
       4C     

 0960  FF 00 57 53 53 54  stfile  db  -1, 0,'WSSTYLE OVR'  ; WS paragraph styles library
       59 4C 45 20 4F 56  
       52     

 096D  FF 00 3F 3F 3F 3F  pdffile db  -1, 0,'????????PDF'  ; PDF file stuff
       3F 3F 3F 3F 50 44  
       46     

 097A  FF 00 3F 3F 3F 3F  prfile  db  -1, 0,'????????OVR'  ; Printer drivers
       3F 3F 3F 3F 4F 56  
       52     

 0987  FF 00 3F 3F 3F 3F  psfile  db  -1, 0,'????????PS '  ; Postscript prolog files
       3F 3F 3F 3F 50 53  
       20     

 0994  FF 00 4B 45 59 42  kbfile  db  -1, 0,'KEYBOARDMRG'  ; Print from keyboard template file
       4F 41 52 44 4D 52  
       47     

 09A1  FF 00 57 53 48 4F  hotfile db  -1, 0,'WSHOTKEYOVR'  ; List of hotkeys for macros
       54 4B 45 59 4F 56  
       52     

 09AE  FF 00 3F 3F 3F 3F  macfile db  -1, 0,'????????WSM'  ; WS macros file specification
       3F 3F 3F 3F 57 53  
       4D     

 09BB  FF 00 57 53 43 20  wscfile db  -1, 0,'WSC     EXE'  ; WS macros compiler
       20 20 20 20 45 58  
       45     

 09C8  FF 00 57 53 44 20  wsdfile db  -1, 0,'WSD     EXE'  ; WS macros decompiler
       20 20 20 20 45 58  
       45     

 09D5  FF 00 57 53 20 20  cffile  db  -1, 0,'WS      CFG'  ; Configuration file
       20 20 20 20 43 46  
       47     

 09E2  FF 00 50 45 52 53  udfile  db  -1, 0,'PERSONALDCT'  ; Personal spelling dictionary
       4F 4E 41 4C 44 43  
       54     

 09EF  FF 00 45 58 43 45  exfile  db  -1, 0,'EXCEPT  DCT'  ; Exception spelling dictionary
       50 54 20 20 44 43  
       54     

 09FC  FF 00 57 53 53 50  spfile  db  -1, 0,'WSSPL000OVR'  ; Spelling checker overlay
       4C 30 30 30 4F 56  
       52     

 0A09  FF 00 53 50 4C 49  idfile  db  -1, 0,'SPLIN000DCT'  ; Personal spelling dict. (if required)
       4E 30 30 30 44 43  
       54     

 0A16  FF 00 53 50 4C 4D  mdfile  db  -1, 0,'SPLMN000DCT'  ; Main spelling dictionary
       4E 30 30 30 44 43  
       54     

 0A23  FF 00 57 53 54 48  thfile  db  -1, 0,'WSTHS000OVR'  ; Thesaurus overlay
       53 30 30 30 4F 56  
       52     

 0A30  FF 00 54 48 45 53  tdfile  db  -1, 0,'THESR000DCT'  ; Thesaurus dictionary
       52 30 30 30 44 43  
       54     

 0A3D  FF 00 44 45 46 49  ddfile  db  -1, 0,'DEFIN000DCT'  ; Definitions dictionary
       4E 30 30 30 44 43  
       54     

 0A4A  FF 00 57 53 48 59  hyfile  db  -1, 0,'WSHYP000OVR'  ; Hyphenation algorithm overlay
       50 30 30 30 4F 56  
       52     

 0A57  FF 00 48 59 50 4D  hdfile  db  -1, 0,'HYPMN000DCT'  ; Main data file for hyphenation
       4E 30 30 30 44 43  
       54     

 0A64  FF 00 48 59 50 49  hifile  db  -1, 0,'HYPIN000DCT'  ; Index file for hyphenation
       4E 30 30 30 44 43  
       54     

 0A71  FF 00 50 52 45 56  pvfile  db  -1, 0,'PREVIEW OVR'  ; Advanced Page Preview overlay
       49 45 57 20 4F 56  
       52     

 0A7E  FF 00 46 4F 4E 54  fnfile  db  -1, 0,'FONTID  CTL'  ; Font ID for Advanced page Preview
       49 44 20 20 43 54  
       4C     

 0A8B  FF 03 3F 3F 3F 3F  pvwfile db  -1, 3,'????????CRT'  ; Preview's .CRT files
       3F 3F 3F 3F 43 52  
       54     

 0A98  FF FF 3F 3F 3F 3F  faxfile db  -1,-1,'????????PCX'  ; FAX files
       3F 3F 3F 3F 50 43  
       58     

 0AA5  FF 00 49 4E 53 45  isfile  db  -1, 0,'INSET   EXE'  ; InSet program for print-time loading
       54 20 20 20 45 58  
       45     

 0AB2  FF 00 54 4F 50 49  hjfile  db  -1, 0,'TOPIX   EXE'  ; HiJaak conversion file
       58 20 20 20 45 58  
       45     

 0ABF  FF 00 54 4F 50 49  hjset db  -1, 0,'TOPIX   SET' ; HiJaak set file
       58 20 20 20 53 45  
       54     

 0ACC  FF 00 57 53 4C 49  mlfile  db  -1, 0,'WSLIST  COM'  ; MailList from additional menu
       53 54 20 20 43 4F  
       4D     

 0AD9  FF 00 54 45 4C 4D  tmfile  db  -1, 0,'TELMERGEEXE'  ; TelMerge from additional menu
       45 52 47 45 45 58  
       45     

 0AE6  FF 00 54 45 4C 4D  tsfile  db  -1, 0,'TELMERGESYS'  ; TelMerge.sys setup file
       45 52 47 45 53 59  
       53     

 0AF3  FF 00 43 4F 4E 56  sxfile  db  -1, 0,'CONVERT EXE'  ; Star Exchange from additional menu
       45 52 54 20 45 58  
       45     

 0B00  FF 00 3F 3F 3F 3F  grfile  db  -1, 0,'???????????'  ; Directory mask for all possible graphics files
       3F 3F 3F 3F 3F 3F  
       3F     

          ; Swap file specification for running programs (including StarExchange,
          ; TelMerge, MailList, Macro Compile, and HiJaak).  If emsmem (above) is
          ; TRUE (0ffh), then EMS memory will be used for swapping.  Otherwise,
          ; WordStar will swap to the drive and path specified here.  If the filename is
          ; blank then a unique filename is generated by WordStar, otherwise the name
          ; specified is used. In both cases it will be created on the drive and
          ; path specified here.  A 0 in the path and/or drive byte tells WordStar
          ; to use the current path and/or drive for the temporary file.

 0B0D  FF 00 3F 3F 3F 3F  swfile  db  -1, 0,'????????$I$'  ; Swap file name
       3F 3F 3F 3F 24 49  
       24     

          ; Sixteen default paths used when looking for WordStar's files. The first
          ; byte is the length of the path name string that immediately follows. If
          ; the string is longer than 32 characters, set the length byte to  -1 and
          ; follow it with the address of where the longer string is.

 = 0010       MAXPATH EQU 16    ; Maximum number of paths
 = 0023       PATHSIZ EQU 35    ; Space allocated per path

 0B1A       defpth  label byte
 = 0000       PTHENTS equ ($-defpth)/PATHSIZ  ; Number of entries so far
            rept  MAXPATH-PTHENTS ; repeat for all paths
            db  3,'\WS                               '
            endm

          
          ; INILOG allows the user to specify a drive and user number or pathname
          ; for WordStar to log onto when first started. The first byte is a count
          ; of following characters; the next bytes (up to three) can contain a 
          ; drive (A-P) and optional subdirectory. (Can be redirected with a count
          ; of -1 followed by an address where the string actually is.)

 0D4A  00     inilog  db  0   ; Don't change directories
 0D4B  00 00 00 00 00 00    db  0,0,0,0,0,0,0,0 ; Room for 24 chars
       00 00      
 0D53  00 00 00 00 00 00    db  0,0,0,0,0,0,0,0
       00 00      
 0D5B  00 00 00 00 00 00    db  0,0,0,0,0,0,0,0
       00 00      

          
          ; WordStar creates backup and temporary files. The following are the file
          ; types to be used for them.

 0D63  42 41 4B     baktyp  db  'BAK'   ; Type for backup files

 0D66  24 41 24     aftype  db  '$A$'   ; Type of spillover file after memory

 0D69  24 42 24     bftype  db  '$B$'   ; Type of spillover file before memory

 0D6C  24 43 24     blktyp  db  '$C$'   ; Type of file used to buffer block move/copy

 0D6F  24 44 24     ncltyp  db  '$D$'   ; Newspaper column accumulation

 0D72  24 45 24     enotyp  db  '$E$'   ; Endnote accumulation

 0D75  24 46 24     fnotyp  db  '$F$'   ; Footnote accumulation

 0D78  24 47 24     wrktyp  db  '$G$'   ; Workfile for typestyles

 0D7B  24 48 24     mactyp  db  '$H$'   ; Workfile for macros

 0D7E  44 43 43     dcctyp  db  'DCC'   ; File extension for compiled dicts

          
          ; When the directory is displayed, file types from this table are suppressed.
          ; A question mark in a file type matches any character.

 = 0003       NTYPZ equ 3   ; Size of file type
 = 0018       NTYPCNT equ 24    ; Max number of file types to suppress

 0D81       notype  label byte
 0D81  43 4F 4D       db  'COM'   ; Command files
 0D84  45 58 45       db  'EXE'   ; Execution files
 0D87  4F 56 52       db  'OVR'   ; Overlays
 0D8A  24 3F 3F       db  '$??'   ; Temporary before and after files ($A$, $B$)
 0D8D  53 59 53       db  'SYS'   ; User preference files
 0D90  44 43 54       db  'DCT'   ; Dictionaries
 0D93  43 52 54       db  'CRT'   ; Compiled screen fonts
 0D96  57 53 46       db  'WSF'   ; Master screen fonts
 0D99  50 44 46       db  'PDF'   ; Printer definition files
 0D9C  44 43 43       db  'DCC'   ; Compressed dictionary files
 0D9F  57 53 4D       db  'WSM'   ; WordStar macros
 0DA2  50 52 44       db  'PRD'   ; Graphics print driver files
 0DA5  46 53 54       db  'FST'   ; InSet print files

 = 000D       NTYPZ1  equ ($ - notype)/NTYPZ
            rept  NTYPCNT - NTYPZ1
            db  0,0,0
            endm

 0DC9  00       db  0   ; End of table

          
          ; Default country (language) code.  Specifies which LNGTBL entry to use.

 0DCA  0001     lngcod  dw  1   ; Use United States, France would be 33

          
          ; The following table contains a country followed by its three digit code.
          ; The code is substituted in files that are unique for particular countries.
          ; 
          ; 1st byte = number of country/language entries in table.
          ; Rest of table contains 18-byte country/language entries.
          ; Each entry consists of:
          ;   16 bytes: Fixed-length, space-padded, country/language descriptor string.
          ;    1 byte:  Locale code
          ;    3 bytes: Ascii country code

          
 0DCC  11     lngtbl  db  LNGENTS   ; number of languages in table

 = 0014       LTBLEZ  equ 20    ; length of each entry
 = 0032       LTBLCNT equ 50    ; Number of entries

 0DCD       lngtbl1 label byte

            ; |         1     1|
            ; |1234567890123456|
 0DCD  55 6E 69 74 65 64    db  'United States   ',1Fh,'001'  ; USA & UK
       20 53 74 61 74 65  
       73 20 20 20 1F 30  
       30 31      
 0DE1  55 6E 69 74 65 64    db  'United Kingdom  ',1Fh,'044'
       20 4B 69 6E 67 64  
       6F 6D 20 20 1F 30  
       34 34      

 0DF5  43 61 6E 61 64 61    db  'Canada (French) ',17h,'002'  ; Canada (French)
       20 28 46 72 65 6E  
       63 68 29 20 17 30  
       30 32      

 0E09  4C 61 74 69 6E 20    db  'Latin America   ',13h,'003'  ; Central- & South America
       41 6D 65 72 69 63  
       61 20 20 20 13 30  
       30 33      
 0E1D  53 70 61 69 6E 20    db  'Spain           ',13h,'034'
       20 20 20 20 20 20  
       20 20 20 20 13 30  
       33 34      
 0E31  4D 65 78 69 63 6F    db  'Mexico          ',13h,'052'
       20 20 20 20 20 20  
       20 20 20 20 13 30  
       35 32      
 0E45  42 72 61 7A 69 6C    db  'Brazil          ',13h,'055'
       20 20 20 20 20 20  
       20 20 20 20 13 30  
       35 35      

 0E59  4E 65 74 68 65 72    db  'Netherlands     ',23h,'031'  ; Western Europe
       6C 61 6E 64 73 20  
       20 20 20 20 23 30  
       33 31      
 0E6D  46 72 61 6E 63 65    db  'France          ',23h,'033'
       20 20 20 20 20 20  
       20 20 20 20 23 30  
       33 33      
 0E81  49 74 61 6C 79 20    db  'Italy           ',23h,'039'
       20 20 20 20 20 20  
       20 20 20 20 23 30  
       33 39      
 0E95  53 77 69 74 7A 65    db  'Switzerland (G) ',23h,'041'
       72 6C 61 6E 64 20  
       28 47 29 20 23 30  
       34 31      
 0EA9  44 65 6E 6D 61 72    db  'Denmark         ',23h,'045'
       6B 20 20 20 20 20  
       20 20 20 20 23 30  
       34 35      
 0EBD  53 77 65 64 65 6E    db  'Sweden          ',23h,'046'
       20 20 20 20 20 20  
       20 20 20 20 23 30  
       34 36      
 0ED1  4E 6F 72 77 61 79    db  'Norway          ',23h,'047'
       20 20 20 20 20 20  
       20 20 20 20 23 30  
       34 37      
 0EE5  47 65 72 6D 61 6E    db  'Germany         ',23h,'049'
       79 20 20 20 20 20  
       20 20 20 20 23 30  
       34 39      
 0EF9  50 6F 72 74 75 67    db  'Portugal        ',23h,'351'
       61 6C 20 20 20 20  
       20 20 20 20 23 33  
       35 31      
 0F0D  46 69 6E 6C 61 6E    db  'Finland         ',23h,'358'
       64 20 20 20 20 20  
       20 20 20 20 23 33  
       35 38      

 = 0011       LNGENTS equ ($-lngtbl1)/LTBLEZ    ; number of entries so far
            rept  LTBLCNT - LNGENTS
            db  '                ',00h,'000'  ; fill out rest of table
            endm

          
          ; DIRFIL is a file name "image" that is used in conjunction with NOTYPE (above)
          ; to determine which files are to be displayed in WordStar's directories.
          ; DIRFIL determines which files can possibly be included, and NOTYPE then
          ; eliminates certain types of files. Use a question mark in DIRFIL at each
          ; spot where any file name character can match.

 11B5  3F 3F 3F 3F 3F 3F  dirfil  db  "???????????" ; All files match
       3F 3F 3F 3F 3F   

          
          ; The name of the file to be edited can be specified at the operating system
          ; prompt. ININON indicates whether the file should be edited as a document
          ; or nondocument.

 11C0  00     ininon  db  FALSE   ; Document (not a nondocument)

          
          ; WordStar normally makes BAK backup files every time you save your work.
          ; INITBAK can be used to disable backups by setting it FALSE.

 11C1  FF     inibak  db  TRUE    ; Make backups

          
          ; SETEOF can be set FALSE to turn off the automatic filling out of the
          ; final record of a file with 1Ah end of file marks.

 11C2  FF     seteof  db  TRUE    ; Use EOF marks

          
          ; USEDOT determines whether or not to automatically insert dot commands
          ; into a document after a margin or tab change.

 11C3  FF     usedot  db  TRUE    ; Insert dot commands

 11C4  00 00        db  0,0   ; Reserved

          
          ; When a nondocument is edited, WordStar will decide how to expand tabs
          ; (ASCII 09H), and whether or not to use auto-indenting by looking in this
          ; table.

          ; There is a special case of the tab masks shown below. When the most
          ; significant bit of the tab mask is set to 1, WordStar will assume that
          ; you want to use variable tabbing. When the tab key is typed, instead
          ; of inserting an ASCII 09H into the file, spaces will be entered up to
          ; the next tab stop. The tab stops used are in the RLRINI table. An
          ; ASCII 09H can still be entered in this mode, however, by typing ^PI.

 11C6  50 41 53 01 FF   edcond  db  'PAS',00000001b,TRUE ; File extension, followed by a
 11CB  50 4C 49 03 FF     db  'PLI',00000011b,TRUE  ; binary tab mask (e.g. a mask of
 11D0  43 20 20 03 FF     db  'C  ',00000011b,TRUE  ; 00000111B expands tab characters
 11D5  48 20 20 03 FF     db  'H  ',00000011b,TRUE  ; to every 8th column), followed by
                    ; TRUE if auto-indent is turned on.

 11DA  00 00 00 07 00     db  0,0,0,00000111b,FALSE ; End of table with defaults if file
                    ; type doesn't match above

 11DF  00 00 00 00 00     db  0,0,0,0,0   ; Room for four more
 11E4  00 00 00 00 00     db  0,0,0,0,0
 11E9  00 00 00 00 00     db  0,0,0,0,0
 11EE  00 00 00 00 00     db  0,0,0,0,0

          
          ; Certain special characters can be inserted into this table to cause
          ; WordStar to automatically generate a backspace character (^H) preceding
          ; the character as you type. This can be especially useful for accent
          ; characters in some foreign languages.

 11F3  00     autobs  db  0   ; Number of characters in table
 11F4  00 00 00 00      db  0,0,0,0   ; Up to 8 character codes
 11F8  00 00 00 00      db  0,0,0,0

 11FC  001D[        db  29 dup(0) ; Reserved
       00     
         ]    

            

          ; When WordStar opens a file for editing, it uses the following initial
          ; conditions.

 1219  00     iniedt  db  FALSE   ; Right justification when typing

 121A  FF       db  TRUE    ; Word wrap when typing at end of line

 121B  FF       db  TRUE    ; Insert on

 121C  FF       db  TRUE    ; Print controls displayed

 121D  FF       db  TRUE    ; Hyphen help on

 121E  FF       db  TRUE    ; Ruler displayed

 121F  00       db  FALSE   ; Not column mode

 1220  00       db  FALSE   ; Column replace off

 1221  01       db  1   ; Single spacing

 1222  03       db  3   ; Scrolling speed

 1223  00       db  FALSE   ; Preview mode off

 1224  02       db  2   ; Proportional spacing depends on font

 1225  00       db  FALSE   ; Suppress blank lines at top of page

 1226  00       db  0   ; Reserved, was soft space dots and soft tabs

 1227  FF       db  TRUE    ; Automatic paragraph realignment on

 1228  00 00 00       db  0,0,0   ; Reserved

 122B  00       db  0   ; Reserved

 122C  00       db  0   ; Reserved

 122D  02D0       dw  3*240   ; Top of page margin.

 122F  0780       dw  8*240   ; Bottom of page margin.

 1231  3DE0       dw  66*240    ; Total VMI per page.

 1233  0001       dw  1   ; Initial page number (note 2 bytes).

 1235  FF       db  TRUE    ; Page number prints at bottom of page
                  ; if TRUE. No page number if FALSE.

 1236  FFFF       dw  -1    ; Column where page number prints (-1=center).

 1238  01E0       dw  2*240   ; Heading margin between header and text.

 123A  01E0       dw  2*240   ; Footing margin.

 123C  07       db  00000111b ; Default document tab mask (must be
                  ; binary, 00000000B through 01111111B).

 123D  05A0       dw  8*180   ; HMI page offset for even pages.
 123F  05A0       dw  8*180   ; HMI page offset for odd pages.

 1241  FF       db  TRUE    ; Bidirectional printing if TRUE. Just
                  ; unidirectional or printer controlled
                  ; if FALSE.

 1242  02       db  2   ; Letter quality printing if 1. Draft
                  ; quality if 0. Discretionary if 2.
                  ; (Only supported on some printers.)

 1243  02       db  2   ; Microjustified printing. 0 turns it off,
                  ; 1 turns it on, and 2 makes it discretionary
                  ; (depending on the printer driver in use).

 1244  FF       db  TRUE    ; Underline blanks between words if TRUE.

 1245  FF       db  TRUE    ; Kerning on if TRUE

 1246  00 00 00 00 00     db  0,0,0,0,0 ; Reserved

 124B  00B4       dw  180   ; Normal font for ^PN. Width (HMI units)
 124D  00F0       dw  240   ; Height (VMI units) (was 180 *28jan90tap*)
 124F  0000       dw  0   ; Typestyle

 1251  0096       dw  150   ; Alternate font for ^PA.  Width (HMI units)
 1253  00C8       dw  200   ; Height (VMI units)
 1255  0000       dw  0   ; Typestyle

 1257  005A       dw  90    ; Subscript and superscript roll (in VMI
                  ; units). This value determines how
                  ; far up or down the carriage moves when
                  ; subscripting or superscripting.

 1259  00F0       dw  240   ; Line height (in VMI units). This value
                  ; determines how far to roll the carriage
                  ; to get to the next line.

 125B  00       db  00000000b ; Bits: 0-6 defines the line spacing between
                  ; line numbers If Bit 7 is set then there is 
                  ; no restarting of line numbers at start of 
                  ; each page. If zero, then each page will 
                  ; start at line number 1

 125C  00       db  0   ; Page orientation 0=portrait,1=landscape

          .errnz  ($-iniedt) ne INISIZ

          
          ; Default dialog box units
          ;
          ; R or L  = Ruler units (R for horizontal; L for vertical)
          ; in or " = Inches
          ; cm      = Centimeters
          ; pt      = Points (1/72nd of an inch, as opposed to "true points")

 125D  22 20      dbunith db  '" '  ; default horizontal units       
 125F  22 20      dbunitv db  '" '  ; default vertical units         
 1261  22 20      dbunitl db  '" '  ; default Line heigth ("leading")

          
          ; The default ruler line can be described by defining the following values.
          ; Note that the tab stop tables must contain values in ascending order only.
          ; The regular tab stops are put in the table first, immediately followed by
          ; the decimal tabs.

          
          ; .RR 0

 1263  0000     rlrini  dw  0   ; Left ruler margin
 1265  2DB4       dw  65*180    ; Right ruler margin
 1267  FFFF       dw  -1    ; Paragraph margin

 1269  0000       dw  0   ; Reserved

 126B  0B       db  11    ; Number of tab stops in tab table
 126C  00       db  0   ; Number of decimal tabs

 126D  0384 0708 0A8C 0E10      dw   5*180,10*180,15*180,20*180   ; Tab stops
 1275  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180   ; (Must be in
 127D  1FA4 2328 26AC     dw  45*180,50*180,55*180    ; ascending order)

 1283  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Room for 21 more
       0000 0000 0000 0000    
 1293  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 12A3  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          ; .RR 1

 12AD  0384       dw  5*180   ; Left ruler margin
 12AF  2A30       dw  60*180    ; Right ruler margin
 12B1  FFFF       dw  -1    ; Paragraph margin

 12B3  0000       dw  0   ; Reserved

 12B5  0A       db  10    ; Number of tab stops in tab table
 12B6  00       db  0   ; Number of decimal tabs

 12B7  0708 0A8C 0E10     dw  10*180,15*180,20*180  ; Tab stops
 12BD  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180
 12C5  1FA4 2328 26AC     dw  45*180,50*180,55*180

 12CB  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Unused tab stops
       0000 0000 0000 0000    
 12DB  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 12EB  0000 0000 0000 0000      dw  0,0,0,0,0,0
       0000 0000    

          ; .RR 2

 12F7  0384       dw  5*180   ; Left ruler margin
 12F9  2DB4       dw  65*180    ; Right ruler margin
 12FB  0000       dw  0   ; Paragraph margin

 12FD  0000       dw  0   ; Reserved

 12FF  0A       db  10    ; Number of tab stops in tab table
 1300  00       db  0   ; Number of decimal tabs

 1301  0384 0708 0A8C 0E10      dw  5*180,10*180,15*180,20*180 ; Tab stops
 1309  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180
 1311  1FA4 2328 26AC     dw  45*180,50*180,55*180

 1317  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Unused tab stops
       0000 0000 0000 0000    
 1327  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 1337  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          ; .RR 3

 1341  0000       dw  0   ; Left ruler margin
 1343  2DB4       dw  65*180    ; Right ruler margin
 1345  FFFF       dw  -1    ; Paragraph margin

 1347  0000       dw  0   ; Reserved

 1349  0B       db  11    ; Number of tab stops in tab table
 134A  00       db  0   ; Number of decimal tabs

 134B  0384 0708 0A8C 0E10      dw   5*180,10*180,15*180,20*180   ; Tab stops
 1353  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180   ; (Must be in
 135B  1FA4 2328 26AC     dw  45*180,50*180,55*180    ; ascending order)

 1361  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Room for 21 more
       0000 0000 0000 0000    
 1371  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 1381  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          ; .RR 4

 138B  0000       dw  0   ; Left ruler margin
 138D  2DB4       dw  65*180    ; Right ruler margin
 138F  FFFF       dw  -1    ; Paragraph margin

 1391  0000       dw  0   ; Reserved

 1393  0B       db  11    ; Number of tab stops in tab table
 1394  00       db  0   ; Number of decimal tabs

 1395  0384 0708 0A8C 0E10      dw   5*180,10*180,15*180,20*180   ; Tab stops
 139D  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180   ; (Must be in
 13A5  1FA4 2328 26AC     dw  45*180,50*180,55*180    ; ascending order)

 13AB  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Room for 21 more
       0000 0000 0000 0000    
 13BB  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 13CB  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          ; .RR 5

 13D5  0000       dw  0   ; Left ruler margin
 13D7  2DB4       dw  65*180    ; Right ruler margin
 13D9  FFFF       dw  -1    ; Paragraph margin

 13DB  0000       dw  0   ; Reserved

 13DD  0B       db  11    ; Number of tab stops in tab table
 13DE  00       db  0   ; Number of decimal tabs

 13DF  0384 0708 0A8C 0E10      dw   5*180,10*180,15*180,20*180   ; Tab stops
 13E7  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180   ; (Must be in
 13EF  1FA4 2328 26AC     dw  45*180,50*180,55*180    ; ascending order)

 13F5  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Room for 21 more
       0000 0000 0000 0000    
 1405  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 1415  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          ; .RR 6

 141F  0000       dw  0   ; Left ruler margin
 1421  2DB4       dw  65*180    ; Right ruler margin
 1423  FFFF       dw  -1    ; Paragraph margin

 1425  0000       dw  0   ; Reserved

 1427  0B       db  11    ; Number of tab stops in tab table
 1428  00       db  0   ; Number of decimal tabs

 1429  0384 0708 0A8C 0E10      dw   5*180,10*180,15*180,20*180   ; Tab stops
 1431  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180   ; (Must be in
 1439  1FA4 2328 26AC     dw  45*180,50*180,55*180    ; ascending order)

 143F  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Room for 21 more
       0000 0000 0000 0000    
 144F  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 145F  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          ; .RR 7

 1469  0000       dw  0   ; Left ruler margin
 146B  2DB4       dw  65*180    ; Right ruler margin
 146D  FFFF       dw  -1    ; Paragraph margin

 146F  0000       dw  0   ; Reserved

 1471  0B       db  11    ; Number of tab stops in tab table
 1472  00       db  0   ; Number of decimal tabs

 1473  0384 0708 0A8C 0E10      dw   5*180,10*180,15*180,20*180   ; Tab stops
 147B  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180   ; (Must be in
 1483  1FA4 2328 26AC     dw  45*180,50*180,55*180    ; ascending order)

 1489  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Room for 21 more
       0000 0000 0000 0000    
 1499  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 14A9  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          ; .RR 8

 14B3  0000       dw  0   ; Left ruler margin
 14B5  2DB4       dw  65*180    ; Right ruler margin
 14B7  FFFF       dw  -1    ; Paragraph margin

 14B9  0000       dw  0   ; Reserved

 14BB  0B       db  11    ; Number of tab stops in tab table
 14BC  00       db  0   ; Number of decimal tabs

 14BD  0384 0708 0A8C 0E10      dw   5*180,10*180,15*180,20*180   ; Tab stops
 14C5  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180   ; (Must be in
 14CD  1FA4 2328 26AC     dw  45*180,50*180,55*180    ; ascending order)

 14D3  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Room for 21 more
       0000 0000 0000 0000    
 14E3  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 14F3  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          ; .RR 9

 14FD  0000       dw  0   ; Left ruler margin
 14FF  2DB4       dw  65*180    ; Right ruler margin
 1501  FFFF       dw  -1    ; Paragraph margin

 1503  0000       dw  0   ; Reserved

 1505  0B       db  11    ; Number of tab stops in tab table
 1506  00       db  0   ; Number of decimal tabs

 1507  0384 0708 0A8C 0E10      dw   5*180,10*180,15*180,20*180   ; Tab stops
 150F  1194 1518 189C 1C20      dw  25*180,30*180,35*180,40*180   ; (Must be in
 1517  1FA4 2328 26AC     dw  45*180,50*180,55*180    ; ascending order)

 151D  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0 ; Room for 21 more
       0000 0000 0000 0000    
 152D  0000 0000 0000 0000      dw  0,0,0,0,0,0,0,0
       0000 0000 0000 0000    
 153D  0000 0000 0000 0000      dw  0,0,0,0,0
       0000     

          
 1547  00       db  0   ; Reserved

          
          ; COLDEF is used to define the default number of newspaper-style columns,
          ; and the gutter width between them.

 1548  01     coldef  db  1   ; One column means normal text

 1549  01C2       dw  450   ; 450/1800ths is .25"

          
 154B  0000       dw  0   ; reserved

          
          ; INIDIR determines whether the directory is initially displayed or not.
          ; DIRSRT tells WordStar whether or not to sort directories in alphabetical
          ; order before displaying them. DSPACE indicates whether or not WordStar
          ; is to display on directories the space remaining for the currently
          ; logged drive. SHOSIZ indicates whether or not to show file sizes.

 154D  FF     inidir  db  TRUE    ; Directory on

 154E  FF     dirsrt  db  TRUE    ; Sort directory

 154F  FF     dspace  db  TRUE    ; Display remaining space

 1550  FF     shosiz  db  TRUE    ; Show size of each file

 1551  00     usetyp  db  FALSE   ; Use NOTYPE for inclusion.  If set to true,
                  ; only those file types in NOTYPE will be
                  ; shown in the directory.

          
          ; INIHLP is the default help level.
          ;
          ; At help level 4...  Pull down menus and full prompts.
          ;
          ; At help level 3...  Standard menus and full prompts.
          ;
          ; At help level 2...  No Edit Menu.
          ;       More information underneath prompts.
          ;
          ; At help level 1...  Less information shown such as for the D,
          ;         N, and L Opening Menu commands.
          ;       No ^Q, ^K, ^O, ^P menus shown.
          ;       Don't ask "Can't find file. Create new one?"
          ;       Don't display Large-File in status line.
          ;       Don't ask "Erase anyway?" if block too large
          ;         to unerase later.
          ;       Don't ask if "sure" when deleting file.
          ;
          ; At help level 0...  No information underneath prompts.
          ;       Allow block operations on hidden blocks.
          ;       Function key labels off.

 1552  04     inihlp  db  4

          
          ; Normally, function key labels will appear at help levels 1-3.
          ; Setting LABHP4 to 0FFH will allow the labels to appear at help
          ; level 4 as well.

 1553  00     labhp4  db  0   ; Initially, no function key labels

          
          ; When editing, the last erasure can be undone with ^U. UNONE determines
          ; whether single character erasures with ^G and DEL can also be undone.
          ;
          ; UNSIZE is the maximum erasure that can later be undone. The unerase
          ; buffer shares the same memory space as the text you are editing. Making
          ; UNSIZE very large may cause WordStar to "spill over" to disk more
          ; frequently, slowing down editing.

 1554  00     unone db  FALSE   ; Don't unerase single erasures

 1555  01F4     unsize  dw  500   ; Unerase up to 500 characters

 1557  00       db  0   ; Reserved

 1558  00       db  0   ; Reserved

          ; If a document becomes too large to fit in memory at one time, WordStar
          ; begins to "spill" the excess to the disk. TYSIZE determines how many
          ; 128-bytes records to use for each spillover. Picking a correct size
          ; is important but can usually be done by trial and error. If TYSIZE is
          ; too large, you may see long delays during scrolling or typing when memory
          ; fills.

          ; If TYSIZE is zero, WordStar calculates its size to be 1/8 of the maximum
          ; amount of text that can be stored in memory.

 1559  00     tysize  db  0   ; Let WordStar calculate spillover size

          
          ; A "find", "go to note" or "find and replace" uses the INIFIN options
          ; if you do not explicitly enter any at the "Options?" prompt. The
          ; possible options that can be used are:

          ; W  whole words only
          ; U  ignore case
          ; M  maintain case
          ; ?  wild cards
          ; B  backwards search
          ; G  whole file
          ; R  rest of file
          ; N  replace without asking
          ; A  align paragraph after replacement
          ; T  search for note tag only

          ; Blank the unused options.

 155A  20 20 20 20 20 20  inifin  db  '          '  ; No options
       20 20 20 20    

          
          ; For help levels other than zero, the status line is usually displayed
          ; at the top of the screen. INISTA lets you always turn it off.
 1564  FF     inista  db  TRUE    ; Display status line
 1565  FF       db  TRUE    ; Show style bar

          

          ; When paragraphs are aligned and hyphen help is on, HYMAX
          ; is used to determine when to hyphenate a word.

 1566  05     hymax db  5   ; Hyphenate when a word has 5 characters
                  ; still within the right margin

          
          ; Hyphenator memory.  Set this byte to false to disable the allocation of
          ; memory for the hyphenator.

 1567  FF     hymem db  TRUE    ; Use the hyphenator

 1568  00       db  ?   ; Reserved (old yncr flag - no longer used)

          
          ; WordStar can index every word in a document as well as selected words and
          ; phrases. IDXALL determines whether this is the default or not.

 1569  00     idxall  db  FALSE   ; Don't index every word

          
          ; Using ^B or ^QU in a nondocument normally strips the eighth bit from
          ; each character in a line. STRPFL can disable stripping.

 156A  FF     strpfl  db  TRUE    ; Stripping is enabled

          

          ; Normally, the display will be inactive when reformatting paragraphs with
          ; ^QU.  Change RFINTR to TRUE if you would like to watch the progress on
          ; the screen.  This can slow down paragraph reform.

 156B  00     rfintr  db  FALSE   ; Use fast mode (no display)

          
          ; The following flags are used to control the way WordStar processes
          ; certain commands. CTLNFL and CTLHFL are provided primarily to allow
          ; WordStar users to use ^N and ^H in the same way as they are accustomed.

 156C  FF     ctlnfl  db  TRUE    ; Set non-zero if ^N to break line and
                  ; RETURN moves down a line when insert off.
                  ; Set to zero so ^N converts paragraph lines
                  ; and turns auto indent on/off for
                  ; nondocuments, and RETURN always inserts CRLF.

 156D  00     ctlhfl  db  0   ; Set non-zero if ^H to be same as ^S instead
                  ; of DEL.

 156E  00     casefl  db  0   ; Set non-zero if ^^ is case toggle. When
                  ; zero and CLTNFL is non-zero, use as
                  ; paragraph line and auto-indent on/off.

 156F  00     delflg  db  0   ; Set non-zero if DEL erases to left, zero
                  ; to erase to right (like ^G).

 1570  FF     blkflg  db  0ffh    ; Set non-zero if the cursor should move
                  ; to column 1 if the cursor is next to a block
                  ; marker at the left edge of the screen

 1571  00     lspflg  db  0   ; Set non-zero if lines with soft carriage
                  ; returns should not be added to paragraphs
                  ; for line spacing other than 1

 1572  00     escflg  db  0   ; Set non-zero if the Esc key should work the
                  ; same as ^K in dialog boxes.

 1573  FF     quxflg  db  0ffh    ; Set zero if ^QX should go to the left side
                  ; of the screen

 1574  FF     pulflg  db  0ffh    ; Set non-zero if WS commands should work
                  ; when cursor is at leftmost end of pulldown
                  ; menu bar

 1575  00     gpgflg  db  0   ; Set non-zero to use the old way of going to
                  ; a page.  Normally, the cursor will be put on
                  ; the first printable line of the specified
                  ; page.

 1576  00     sdirfl  db  0   ; Set non-zero to see the full directory of
                  ; files when logging to another drive or
                  ; directory.

 1577  00 00 00       db  0,0,0   ; Reserved

          
          ; AHEAD indicates whether type ahead is allowed for ^E, ^X, ^W, ^Z,
          ; ^G, DEL, ^T, ^Y, ^QY, and ^QDEL. If AHEAD is 0, WordStar's type
          ; ahead buffer will be flushed whenever one of the functions is
          ; encountered. If it is non-zero, no flushing will occur. This
          ; flag should be used primarily for external keyboard enhancers where
          ; the functions shown above are to be used. WordStar's function key
          ; and shorthand processing automatically compensate.

 157A  00     ahead db  0   ; Flush

          
          ; Maximum size for the macro hotkey definitions.

 157B  07     hanmax  db  7   ; Size of macro hotkey buffer in records
                  ; (7 times 128 = 896 bytes)

          
          ; Spelling checking and correction
          ;
          ; SPFLAG is used to indicate how WordStar is to use the dictionaries
          ; each bit is defined as follows...
          ;
          ; This flag is also used for the thesaurus dictionary.
          ;
          ; Bit Definition
          ;
          ;  0  Set if swapping between dictionary disk and program disk
          ;  1  If swapping, set if personal dictionary is on dictionary disk
          ;  2  No longer used.
          ;  3  Set if the main dictionary is to be entirely loaded to RAM
          ;   This is now automatic.  Even when there is enough memory to
          ;   load the main dictionary into ram, the speller (and its
          ;   dictionary) may be removed from memory to make room for other
          ;   parts of WordStar such as preview, printing or InSet.  It's
          ;   also removed when running external programs.
          ;  4  Set to always prompt user for personal dictionary
          ; 5-7 Reserved
          ;
          ; If neither bits 1 and 2 are set when swapping, the personal
          ; dictionary is assumed to be on the document disk.

 157C  00     spflag  db  0 ; Not swapping, personal is on work disk

          
          ; UDCMEM is the number of kbytes allocated to hold the user dictionaries.
          ; This includes both the personal dictionary and the exception dictionary.
          ; Allocating 0K bytes will disable the use of these dictionaries.  You should
          ; use enough to contain both files (size as reported by DOS or the WordStar
          ; directory listing).  The second byte indicates to WordStar how large to
          ; make the area that holds the global replacement list.  If you make these
          ; two values total more than the speller has left to give them after loading
          ; the speller overlay and a minimum main dictionary, you'll get an out of
          ; memory error when trying to use the speller.  See spmmem below.

 157D  02     udcmem  db  2   ; Use 2K for default user dictionaries
 157E  02       db  2   ; Use 2K for global replacements memory

          
          ; SPMMEM indicates the amount of memory set aside for the speller.  This value
          ; includes the overlay file, its overhead, and the dictionary memory.  For the
          ; American speller, the overhead necessary is about 7300 bytes.

          ; The main dictionary is usually the largest and slowest of the spelling check
          ; dictionaries. If there is sufficient memory in your computer, WordStar
          ; can speed up dictionary look-ups significantly by "learning" which words
          ; you look up most frequently and storing them in memory. If there is
          ; enough memory in your computer, eventually the whole dictionary is
          ; put in memory. If bit 3 of SPFLAG above is set, the first time you do
          ; a spelling check, the entire dictionary will be loaded into memory all at
          ; once (if enough memory was set aside). The minimum for the main
          ; dictionary is about 7k. Setting SPMMEM to 0 disables the speller.

          ; The thesaurus dictionary requires a minimum of about 46k.
          ; So to run the thesaurus when the memory is being shared, SPLMEM must
          ; be at least 46k plus the size of the thesaurus overlay plus its overhead
          ; (currently about 7300 bytes). Larger values do not help the thesaurus.
          ; Smaller values disable it.

          ; Setting SPMMEM to -1 makes the speller use all of available memory.
          ; Setting it to values from about 72K (the minimum) to the size of the speller
          ; plus the size of the dictionary are allowable.

          ; Unless the thesaurus memory is separate from the spelling memory (see
          ; memflg above), then the proper amounts will be allocated for the
          ; thesaurus dictionary automatically.

 157F  FFFF     spmmem  dw  -1    ; Set to use all of remaining memory

          
          ; WordStar normally doesn't check the spelling of very small words since
          ; single letters are used for many things besides the words "a" or "I".
          ; SPMIN is used to indicate the smallest word to be checked.

 1581  02     spmin db  2   ; Don't check 1-letter words

          
          ; Two words in a row (e.g. the the) will be flagged as a misspelling if
          ; CKDBL is set TRUE.

 1582  FF     ckdbl db  TRUE    ; Check for double words

          
          ; Normally, the display will be inactive when spell checking.  Change SPINTR
          ; to TRUE if you would like to watch the progress on the screen.  This can
          ; slow down spell checking.

 1583  00     spintr  db  FALSE   ; Use fast mode (no display)

          
          ; When WordStar begins printing, InSet can be loaded.  If you don't 
          ; print with graphics, you can set this flag to false.

 1584  FF     iinset  db  TRUE    ; Load InSet at print-time

          
          ; When you type the name of a graphics tag with the ^P* command, and
          ; it doesn't contain a period indicating a file type, this file type
          ; is added to the end of the file name specification.

 1585  03     grphft  db  3   ; File type string length
 1586  50 49 58       db  'PIX'   ; PIX for InSet

          
          ; When you type ^P* to insert a graphics tag, this is the directory mask
          ; used to show file names of possible graphics files.

          ;grphmk db  '???????????' ; Directory mask for all possible graphics files

          
 1589  00       db  ?   ; Reserved
 158A  0006[        db  6 dup (?)
       ??     
         ]    

 1590  00       db  ?

 1591  00       db  ?   ; Reserved
 1592  0005[        db  5 dup (?)
       ??     
         ]    

 1597  00 00        db  ?,?

          
          ; With shorthand you can insert the dollar-formatted results of the last
          ; math you performed. WordStar uses the format below when you do this.
          ; (Make sure that the character count includes the zero at the end.)

 1599  11     dollar  db  17    ; Character count
 159A  2D 2D 2C 2D 2D 2D    db  '--,---,---,---.99'
       2C 2D 2D 2D 2C 2D  
       2D 2D 2E 39 39   
 15AB  00 00 00       db  0,0,0   ; Spare

          
          ; Special characters

 15AE  2C     splchr  db  ','   ; Thousands separator for numbers
 15AF  2E       db  '.'   ; Decimal point for numbers and decimal tabs

 15B0  0004[        db  4 dup(0)  ; Reserved
       00     
         ]    

          

          ; Memory allocation for editing. Must be big enough to hold the current
          ; text being allocated as well as WordStar's fixed variables and allocated
          ; variables (at least 36k). The maximum usable is 64k. This amount of
          ; memory is also allocated to split screen editing.

 15B4  40     edtmem  db  64    ; 64 kilobytes

          
          ; Memory allocation for the merge print buffer. Each variable name in the
          ; buffer requires 1 byte plus the size of the name. Each data requires
          ; 1 byte plus the size of the data. Set to zero to disable merge printing.
          ; The maximum usable is 64k.

 15B5  04     mrgmem  db  4   ; 4 kilobytes

          
          ; When text is too big to fit in the memory buffer, the excess normally
          ; "spills" to temporary disk files. If there is expanded memory (EMS) in your
          ; computer, this can be used instead to increase performance for large files.
          ; Set to zero to disable EMS usage. Otherwise, set to the number of 16-kbyte
          ; pages of memory of EMS to use.

 15B6  10     emsmem  db  10H   ; Number of 16k EMS pages to use.

 15B7  FF       db  TRUE    ; Map Before/After files through EMS/XMS

 15B8  00       db  0   ; Reserved
 15B9  00       db  0   ; Reserved

 15BA  00     xmsmem  db  0   ; Number of 16k XMS blocks to use.
 15BB  0043[        db  67 dup(0) ; Reserved
       00     
         ]    

          
          ; EXTRA is a large buffer area for general patching. Some versions of
          ; the WINSTALL installation program use EXTRA.

 15FE  0200[      extra db  512 dup(0)  ; Extra .5k of patching space
       00     
         ]    

          

          ; Line numbering control

 17FE  04EC     lnmch dw  7*180   ; Left margin line at .7"
 1800  BA       db  0bah    ; Left margin character, double vertical bar
 1801  3408       dw  74*180    ; Right margin line at 7.4"
 1803  B3       db  0b3h    ; Right margin character, single vertical bar
 1804  021C       dw  3*180   ; Number is .3" before left margin character
                  ; See end of INIEDT for more

          
          ; Paragraph numbering format

          ; Up to 30 characters containing the format to use for paragraph numbering.

          ; 9 is numbering from 0 up
          ; 1 is numbering from 1 up
          ; Z is uppercase alpha, A-Z, AA-AZ,...
          ; z is lowercase alpha, a-z, aa-az,...
          ; I is uppercase roman numerals, I-MMMCMXCIX (1-3999)
          ; i is lowercase roman numerals, i-mmmcmxcix (1-3999)

          ; Other characters are used as part of the paragraph number (for instance,
          ; leading and trailing characters, and separator characters).
          ; Up to 8 levels of numbers are allowed within the paragraph number,
          ; i.e. '9.z.9.Z.9.9.9.9'. A zero byte indicates the end of the string.

 1806  31 2E 31 2E 31 2E  ipfrmt  db  '1.1.1.1.1.1.1.1'
       31 2E 31 2E 31 2E  
       31 2E 31     
 1815  0010[        db  31-15 dup(0)
       00     
         ]    

          

          ; The separator after the last part of the paragraph number will be
          ; printed if PPRSEP below is TRUE (i.e. 1.1.1. versus 1.1.1).
          ; Setting PPRSEP to TRUE will suppress the use of trailing characters
          ; in the paragraph format (except when the characters are used as the
          ; separator characters after the last paragraph number level).

 1825  00     pprsep  db  FALSE   ; Set for normal separators

          
          ; The preceding numbers in the paragraph number will not print if
          ; PROUTL below is TRUE. This is useful when numbering an outline:
          ; If your paragraph format was 'I)A)a)', you could use PROUTL in
          ; conjunction with PPRSEP to get 'I)' for the first number, then
          ; 'A)' for the next level in, and 'a)' for the third level.

 1826  00     proutl  db  FALSE   ; Set for normal numbering

          

          ; Print control screen characters

          ; Since control can't be edited, entire print control is displayed

 1827  3C     pbrack  db  '<'   ; Print control display leading char
 1828  3E       db  '>'   ; Print control display trailing char

          ; Index screen characters

 1829  7B     ibrack  db  '{'   ; Index entry display leading char
 182A  7D       db  '}'   ; Index entry display trailing char
 182B  0F       db  15    ; Length of displayed index entry

          
          ; Footnote/endnote/comment screen characters

 182C  5B     nbrack  db  '['   ; Note display leading char
 182D  5D       db  ']'   ; Note display trailing character
 182E  0F       db  15    ; Length of displayed note text

          
          ; Initial paragraph style name

 182F  42 6F 64 79 20 54  parsty  db  'Body Text               ' ; 24 characters
       65 78 74 20 20 20  
       20 20 20 20 20 20  
       20 20 20 20 20 20  

          
          ; Line numbering font and style

 1847  00B4     lnfont  dw  180   ; Normal font for ^PN. Width
 1849  00F0       dw  240   ; Height
 184B  0000       dw  0   ; Typestyle
 184D  0000       dw  0   ; Attribute

          ; Footnote/endnote font and style
          ; (note text attributes are defaulted to 0)

 184F  00B4     fnfont  dw  180   ; Normal font for footnotes. Width
 1851  00F0       dw  240   ; Height
 1853  0000       dw  0   ; Typestyle
 1855  00       db  0   ; Default ruler to use
 1856  00       db  0   ; Default color to use  

 1857  00B4     enfont  dw  180   ; Normal font for endnotes. Width
 1859  00F0       dw  240   ; Height
 185B  0000       dw  0   ; Typestyle
 185D  00       db  0   ; Default ruler to use
 185E  00       db  0   ; Default color to use  

          ; Footnote tag type

 185F  03     fntyp db  3   ; 1 for uppercase alphabet
                  ; 2 for lowercase alphabet
                  ; 3 for numeric
                  ; 4 for repeating characters

 1860  00       db  0   ; 0 for reset at each page break
                  ; 1 for increment across page breaks

          
          ; Footnote repeating character table. Up to 8 characters may be entered
          ; here to be used one at a time for in text footnote reference marks. Once
          ; all characters are used, the beginning character in the table will be
          ; used twice, then three times, etc. as needed for the number of footnotes
          ; in the text.

 1861  02     fnrch db  2   ; Count
 1862  2A 7E 00 00      db  '*','~',0,0 ; Set for *,~,**,~~,***,~~~
 1866  00 00 00 00      db  0,0,0,0

          
          ; Endnote tag type

 186A  03     entyp db  3   ; 1 for uppercase alphabet
                  ; 2 for lowercase alphabet
                  ; 3 for numeric
                  ; 4 for repeating characters

          
          ; Endnote repeating character table. Up to 8 characters may be entered
          ; here to be used one at a time for in text endnote reference marks. Once
          ; all characters are used, the beginning character in the table will be
          ; used twice, then three times, etc. as needed for the number of endnotes
          ; in the text.

 186B  02     enrch db  2   ; Count
 186C  23 40 00 00      db  '#','@',0,0 ; Set for #,@,##,@@,###,@@@
 1870  00 00 00 00      db  0,0,0,0

          
          ; Footnote in-text reference mark control

 1874  0020     fntxt dw  20h   ; Attributes
                  ;   00H - normal
                  ;   08H - underlined
                  ;   10H - subscripted
                  ;   20H - superscripted
                  ;   40H - bold
                  ;   80H - italic

 1876  00       db  0   ; Lead character
 1877  00       db  0   ; Trailing character

          ; Footnote in-note reference mark control

 1878  0000       dw  0h    ; Attributes
 187A  00       db  0   ; Lead character
 187B  2E       db  '.'   ; Trailing character

          ; Endnote in-text reference mark control

 187C  0020       dw  20h   ; Attributes
 187E  00       db  0   ; Lead character
 187F  00       db  0   ; Trailing character

          ; Endnote in-note reference mark control

 1880  0000       dw  0   ; Attributes
 1882  28       db  '('   ; Lead character
 1883  29       db  ')'   ; Trailing character

          
          ; Footnote separator between body text and footnote text.

 1884  14     fnsep db  20      ; length of string
 1885  0014[        db  20 dup ('-')    ; actual string
       2D     
         ]    

 = 0015       FNSEPZ  equ $-fnsep
 1899  00B4[        db  (201 - FNSEPZ) dup (0)
       00     
         ]    

          

          ; Footnote continuation text.

 194D  0F     fncntu  db  15      ; length of string
 194E  2E 2E 2E 43 6F 6E    db  '...Continued...' ; actual string
       74 69 6E 75 65 64  
       2E 2E 2E     
 = 0010       FNCNTUZ equ $-fncntu
 195D  00B4[        db  (196 - FNCNTUZ) dup (0)
       00     
         ]    

          

          ; Footnote position.  If zero, place footnote against bottom of page, right
          ; above footer.  If 1, place footnote right below body text. 

 1A11  00     fnposn  db  0   ; Place at bottom

          
          ; FNRUN determines when to create a running footnote.  If the accumulated
          ; footnote text  is bigger than the space available at the bottom of the
          ; page, and FNRUN is greater than or equal to the note size, then put the
          ; note on the following page.

 1A12  08     fnrun db  8   ; Page break if 8 lines of footnote
                  ; text won't fit

          
          ; Footnote VMI settings

 1A13  00F0     fnvmi dw  1440/6    ; VMI between notes
 1A15  00F0       dw  1440/6    ; VMI for each footnote line
 1A17  00F0       dw  1440/6    ; VMI between text and FNSEP
 1A19  00F0       dw  1440/6    ; VMI between FNSEP and first note

          
          ; Endnote VMI settings

 1A1B  00F0     envmi dw  1440/6    ; VMI between notes
 1A1D  00F0       dw  1440/6    ; VMI for each endnote line

          
          ; Lines in top and bottom windows

          ; This value will be used as a ratio, so that when the help level changes
          ; the lines in each window will be proportionally the same

          ; Set to 0FFh if full screen window flipping is required. Set to 0 to
          ; disable the second window.

 1A1F  80     wratio  db  128   ; LTOP*256/(LTOP+LBOT)

          
          ; Ask for document type when opening another window.

 1A20  00     wprmpt  db  0   ; Dont ask for document type

          ; The keyboard repeat rate may be changed upon entering and exiting WordStar.
          ; This only works on IBM machines manufactured after 15 Nov 85.
          ; Usage:
          ; 1st byte is speed: 0=30 cps, ..., 1FH=2 cps
          ; 2nd byte is hold-off before repetitions: 0=250 msec, 1=500, 2=750,
          ;            3=1000
          ;
 1A21       kspeed  label word

 1A21  FF       db  -1    ; For insertions
 1A22  FF       db  -1

 1A23  FF       db  -1    ; For deletions
 1A24  FF       db  -1

 1A25  FF       db  -1    ; No change upon exiting
 1A26  FF       db  -1

          

          ; The shape of the cursor may be changed upon entering and exiting WordStar.
          ; See the IBM BIOS video INT 10, AH=1 for information on how to pick a
          ; cursor size. (Each word below is loaded into CX before the video call is
          ; performed.) On a 25 by 80 display, a value of 0007H would produce a block
          ; cursor, and 0607H would produce the normal underline cursor.
    ;
    ;   07   67
    ; --------
    ; 0   
    ; 1   
    ; 2   
    ; 3    
    ; 4   
    ; 5   
    ; 6     
    ; 7     
    ;
    ; 
    ;
; See unmodified PATCH.LST if this seems wrong; comments here modified by RJS
; 
; Below are the values I used with TameDOS
;
;1A27  0700 0706 0706 (insert/overwrite/upon exiting WS)
;
; I don't understand why but 0F03 or 0E03 gives a half-block cursor under vDos 

 1A27  FFFF     cursiz  dw  0ffffh    ; No cursor-size change upon entering WordStar
                                ; so this is cursor for insert on as default

 1A29  FFFF       dw  0ffffh    ; No cursor size-change for overtype mode

 1A2B  FFFF       dw  0ffffh    ; No cursor size-change upon exiting WordStar

          
          ; HMI units (1800ths of an inch) used for ruler line

          ; If you have many old WordStar documents set up for 12-pitch, you may want
          ; to set RLUNIT to 150 so that the ruler line is in 12ths of an inch.

 1A2D  00B4     rlunit  dw  1800/10   ; Ruler line is in 10ths of an inch

          ; Line height units used for computing standard line height values

          ; This is the value used when typing in a dialog box or a dot command
          ; and the measuring unit is set for 'L' (see DBUNITL, above).
          ; Assumes a standard line height of 6 lines per inch (66 lines
          ; per page for an 11 inch page).

 1A2F  00F0     lhunit  dw  1440/6    ; Line height units in 6ths of an inch

          
          ; The memory allocated to handling of fonts and proportional tables from the
          ; PDF is determined from the following variables. 

 1A31  64     mfdsiz  db  100   ; Number of Menu font definitions 
 1A32  00       db  ?
 1A33  14     famsiz  db  20    ; Number of font family member definitions
 1A34  00       db  ?
 1A35  00       db  ?   ; Reserved
 1A36  00       db  ?
 1A37  00       db  ?   ; Reserved

 1A38  00       db  ?   ; Reserved

          ; FNSIZE and ENSIZE indicates the number of 128-byte records is to be used
          ; footnote and endnote accumulation before writing them to disk

 1A39  08     fnsize  db  8   ; Size of footnote accumulation buffer
 1A3A  02     ensize  db  2   ; Size of endnote accumulation buffer

          
          ; The autosave timer will perform an automatic ^KS if you are editing and
          ; the keyboard is idle for the number of seconds specified (1 hour max).
          ; This function only works on IBM machines manufactured after November 1985.

 1A3B  0000     autsav  dw  0   ; Turned off if zero

          
          ; DOS command tails used to run Additional Menu items. Each command must
          ; be null terminated. 32 bytes are available for each command tail.  Comments
          ; indicate which program file name the command is associated with.  A "~"
          ; means that WordStar should pass its colors to the application program.

 1A3D  20 7E 00     addrun  db  ' ~',0      ; For TelMerge
 1A40  001D[        db  (32-($-addrun)) dup (0)
       00     
         ]    

          
 1A5D  20 7E 00       db  ' ~',0      ; For MailList
 1A60  001D[        db  (32-($-addrun-32)) dup (0)
       00     
         ]    

          
 1A7D  20 00        db  ' ',0     ; For Star Exchange
 1A7F  001E[        db  (32-($-addrun-64)) dup (0)
       00     
         ]    

          

          ; Default character set (code page) code.

 1A9D  01B5     codepg  dw  437   ; Default to U.S.. Other option is 850

 1A9F  70 74      dbunitp db  'pt'    ; Default units, scalable font point size
 1AA1  22 20      dbunitc db  '" '    ; Default units, scalable font pitch

          
          ; WordStar normally only considers alphabetic characters as being within
          ; a "word". If other characters are legally part of a word too, then the
          ; bit for the corresponding character code in the following table must be
          ; set to a 1.

          ; There are 256 bits in the table to allow for 8-bit character sets.
          ; The default table has the bits set for the uppercase letters
          ; "A" through "Z" (41H through 5AH), and the lowercase letters "a"
          ; through "z" (61H through 7AH). Bits from 80H through FFH are set
          ; according to the IBM PC character set.

 1AA3       lglchr  label byte

          if CDPG eq 437
            ; For Code Page 437

            ; 01234567  89ABCDEF
 1AA3  00 00        db  00000000b,00000000b ; Codes 00H to 0FH
 1AA5  00 00        db  00000000b,00000000b ; Codes 10H to 1FH
;1AA7  00 04        db  00000000b,00000100b ; Codes 20H to 2FH (to include hyphen)
 1AA7  00 00        db  00000000b,00000000b ; Codes 20H to 2FH
 1AA9  00 00        db  00000000b,00000000b ; Codes 30H to 3FH
 1AAB  7F FF        db  01111111b,11111111b ; Codes 40H to 4FH
 1AAD  FF E0        db  11111111b,11100000b ; Codes 50H to 5FH
 1AAF  7F FF        db  01111111b,11111111b ; Codes 60H to 6FH
 1AB1  FF E0        db  11111111b,11100000b ; Codes 70H to 7FH
 1AB3  FF FF        db  11111111b,11111111b ; Codes 80H to 8FH
 1AB5  FF E0        db  11111111b,11100000b ; Codes 90H to 9FH
 1AB7  FF 00        db  11111111b,00000000b ; Codes A0H to AFH
 1AB9  00 00        db  00000000b,00000000b ; Codes B0H to BFH
 1ABB  00 00        db  00000000b,00000000b ; Codes C0H to CFH
 1ABD  00 00        db  00000000b,00000000b ; Codes D0H to DFH
 1ABF  FF F0        db  11111111b,11110000b ; Codes E0H to EFH
 1AC1  00 0C        db  00000000b,00001100b ; Codes F0H to FFH
 1AC3  00 00        db  00000000b,00000000b ; Extended codes 00H to 0FH
 1AC5  00 00        db  00000000b,00000000b ; Extended codes 10H to 1FH
          endif

          

          ; When you use ^A or ^F to move a word at a time, WordStar uses the
          ; following table to determine which characters to skip. It is organized
          ; in the same manner as LGLCHR above.

 1AC7       movchr  label byte

          if CDPG eq 437
            ; For Code Page 437

            ; 01234567  89ABCDEF
 1AC7  FF 92        db  11111111b,10010010b ; Codes 00H to 0FH
 1AC9  FB C3        db  11111011b,11000011b ; Codes 10H to 1FH
 1ACB  3F F5        db  00111111b,11110101b ; Codes 20H to 2FH
 1ACD  FF CE        db  11111111b,11001110b ; Codes 30H to 3FH
 1ACF  FF FF        db  11111111b,11111111b ; Codes 40H to 4FH
 1AD1  FF FF        db  11111111b,11111111b ; Codes 50H to 5FH
 1AD3  FF FF        db  11111111b,11111111b ; Codes 60H to 6FH
 1AD5  FF FE        db  11111111b,11111110b ; Codes 70H to 7FH
 1AD7  FF FF        db  11111111b,11111111b ; Codes 80H to 8FH
 1AD9  FF FF        db  11111111b,11111111b ; Codes 90H to 9FH
 1ADB  FF 7B        db  11111111b,01111011b ; Codes A0H to AFH
 1ADD  FF FF        db  11111111b,11111111b ; Codes B0H to BFH
 1ADF  FF FF        db  11111111b,11111111b ; Codes C0H to CFH
 1AE1  FF FF        db  11111111b,11111111b ; Codes D0H to DFH
 1AE3  FF FF        db  11111111b,11111111b ; Codes E0H to EFH
 1AE5  FF FE        db  11111111b,11111110b ; Codes F0H to FFH
 1AE7  00 00        db  00000000b,00000000b ; Extended codes 00H to 0FH
 1AE9  00 00        db  00000000b,00000000b ; Extended codes 10H to 1FH
          endif

          

          ; UPPERCASE and LOWERCASE are a upper/lower case conversion tables. Each
          ; character is either mapped to itself or the upper/lowercase equivalent.

 1AEB       upcase  label byte

          if CDPG eq 437
            ; Uppercasing table for Code Page 437

            ;   0    1    2    3    4    5    6    7
 1AEB  00 01 02 03 04 05    db  000h,001h,002h,003h,004h,005h,006h,007h   ;  0 ..  7
       06 07      
 1AF3  08 09 0A 0B 0C 0D    db  008h,009h,00Ah,00Bh,00Ch,00Dh,00Eh,00Fh   ;  8 ..  F
       0E 0F      
 1AFB  10 11 12 13 14 15    db  010h,011h,012h,013h,014h,015h,016h,017h   ; 10 .. 17
       16 17      
 1B03  18 19 1A 1B 1C 1D    db  018h,019h,01Ah,01Bh,01Ch,01Dh,01Eh,01Fh   ; 18 .. 1F
       1E 1F      
 1B0B  20 21 22 23 24 25    db  020h,021h,022h,023h,024h,025h,026h,027h   ; 20 .. 27
       26 27      
 1B13  28 29 2A 2B 2C 2D    db  028h,029h,02Ah,02Bh,02Ch,02Dh,02Eh,02Fh   ; 28 .. 2F
       2E 2F      
 1B1B  30 31 32 33 34 35    db  030h,031h,032h,033h,034h,035h,036h,037h   ; 30 .. 37
       36 37      
 1B23  38 39 3A 3B 3C 3D    db  038h,039h,03Ah,03Bh,03Ch,03Dh,03Eh,03Fh   ; 38 .. 3F
       3E 3F      
 1B2B  40 41 42 43 44 45    db  040h,041h,042h,043h,044h,045h,046h,047h   ; 40 .. 47
       46 47      
 1B33  48 49 4A 4B 4C 4D    db  048h,049h,04Ah,04Bh,04Ch,04Dh,04Eh,04Fh   ; 48 .. 4F
       4E 4F      
 1B3B  50 51 52 53 54 55    db  050h,051h,052h,053h,054h,055h,056h,057h   ; 50 .. 57
       56 57      
 1B43  58 59 5A 5B 5C 5D    db  058h,059h,05Ah,05Bh,05Ch,05Dh,05Eh,05Fh   ; 58 .. 5F
       5E 5F      
 1B4B  60 41 42 43 44 45    db  060h,041h,042h,043h,044h,045h,046h,047h   ; 60 .. 67
       46 47      
 1B53  48 49 4A 4B 4C 4D    db  048h,049h,04Ah,04Bh,04Ch,04Dh,04Eh,04Fh   ; 68 .. 6F
       4E 4F      
 1B5B  50 51 52 53 54 55    db  050h,051h,052h,053h,054h,055h,056h,057h   ; 70 .. 77
       56 57      
 1B63  58 59 5A 7B 7C 7D    db  058h,059h,05Ah,07Bh,07Ch,07Dh,07Eh,07Fh   ; 78 .. 7F
       7E 7F      
 1B6B  80 9A 90 41 8E 41    db  080h,09Ah,090h,041h,08Eh,041h,08Fh,080h   ; 80 .. 87
       8F 80      
 1B73  45 45 45 49 49 49    db  045h,045h,045h,049h,049h,049h,08Eh,08Fh   ; 88 .. 8F
       8E 8F      
 1B7B  90 92 92 4F 99 4F    db  090h,092h,092h,04Fh,099h,04Fh,055h,055h   ; 90 .. 97
       55 55      
 1B83  59 99 9A 9B 9C 9D    db  059h,099h,09Ah,09Bh,09Ch,09Dh,09Eh,09Fh   ; 98 .. 9F
       9E 9F      
 1B8B  41 49 4F 55 A5 A5    db  041h,049h,04Fh,055h,0A5h,0A5h,0A6h,0A7h   ; A0 .. A7
       A6 A7      
 1B93  A8 A9 AA AB AC AD    db  0A8h,0A9h,0AAh,0ABh,0ACh,0ADh,0AEh,0AFh   ; A8 .. AF
       AE AF      
 1B9B  B0 B1 B2 B3 B4 B5    db  0B0h,0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h   ; B0 .. B7
       B6 B7      
 1BA3  B8 B9 BA BB BC BD    db  0B8h,0B9h,0BAh,0BBh,0BCh,0BDh,0BEh,0BFh   ; B8 .. BF
       BE BF      
 1BAB  C0 C1 C2 C3 C4 C5    db  0C0h,0C1h,0C2h,0C3h,0C4h,0C5h,0C6h,0C7h   ; C0 .. C7
       C6 C7      
 1BB3  C8 C9 CA CB CC CD    db  0C8h,0C9h,0CAh,0CBh,0CCh,0CDh,0CEh,0CFh   ; C8 .. CF
       CE CF      
 1BBB  D0 D1 D2 D3 D4 D5    db  0D0h,0D1h,0D2h,0D3h,0D4h,0D5h,0D6h,0D7h   ; D0 .. D7
       D6 D7      
 1BC3  D8 D9 DA DB DC DD    db  0D8h,0D9h,0DAh,0DBh,0DCh,0DDh,0DEh,0DFh   ; D8 .. DF
       DE DF      
 1BCB  E0 E1 E2 E3 E4 E5    db  0E0h,0E1h,0E2h,0E3h,0E4h,0E5h,0E6h,0E7h   ; E0 .. E7
       E6 E7      
 1BD3  E8 E9 EA EB EC ED    db  0E8h,0E9h,0EAh,0EBh,0ECh,0EDh,0EEh,0EFh   ; E8 .. EF
       EE EF      
 1BDB  F0 F1 F2 F3 F4 F5    db  0F0h,0F1h,0F2h,0F3h,0F4h,0F5h,0F6h,0F7h   ; F0 .. F7
       F6 F7      
 1BE3  F8 F9 FA FB FC FD    db  0F8h,0F9h,0FAh,0FBh,0FCh,0FDh,0FEh,0FFh   ; F8 .. FF
       FE FF      
          endif

          

 1BEB       locase  label byte

          if CDPG eq 437
            ; Lowercasing table for Code Page 437

            ;   0    1    2    3    4    5    6    7
 1BEB  00 01 02 03 04 05    db  000h,001h,002h,003h,004h,005h,006h,007h   ;  0 ..  7
       06 07      
 1BF3  08 09 0A 0B 0C 0D    db  008h,009h,00Ah,00Bh,00Ch,00Dh,00Eh,00Fh   ;  8 ..  F
       0E 0F      
 1BFB  10 11 12 13 14 15    db  010h,011h,012h,013h,014h,015h,016h,017h   ; 10 .. 17
       16 17      
 1C03  18 19 1A 1B 1C 1D    db  018h,019h,01Ah,01Bh,01Ch,01Dh,01Eh,01Fh   ; 18 .. 1F
       1E 1F      
 1C0B  20 21 22 23 24 25    db  020h,021h,022h,023h,024h,025h,026h,027h   ; 20 .. 27
       26 27      
 1C13  28 29 2A 2B 2C 2D    db  028h,029h,02Ah,02Bh,02Ch,02Dh,02Eh,02Fh   ; 28 .. 2F
       2E 2F      
 1C1B  30 31 32 33 34 35    db  030h,031h,032h,033h,034h,035h,036h,037h   ; 30 .. 37
       36 37      
 1C23  38 39 3A 3B 3C 3D    db  038h,039h,03Ah,03Bh,03Ch,03Dh,03Eh,03Fh   ; 38 .. 3F
       3E 3F      
 1C2B  40 61 62 63 64 65    db  040h,061h,062h,063h,064h,065h,066h,067h   ; 40 .. 47
       66 67      
 1C33  68 69 6A 6B 6C 6D    db  068h,069h,06Ah,06Bh,06Ch,06Dh,06Eh,06Fh   ; 48 .. 4F
       6E 6F      
 1C3B  70 71 72 73 74 75    db  070h,071h,072h,073h,074h,075h,076h,077h   ; 50 .. 57
       76 77      
 1C43  78 79 7A 5B 5C 5D    db  078h,079h,07Ah,05Bh,05Ch,05Dh,05Eh,05Fh   ; 58 .. 5F
       5E 5F      
 1C4B  60 61 62 63 64 65    db  060h,061h,062h,063h,064h,065h,066h,067h   ; 60 .. 67
       66 67      
 1C53  68 69 6A 6B 6C 6D    db  068h,069h,06Ah,06Bh,06Ch,06Dh,06Eh,06Fh   ; 68 .. 6F
       6E 6F      
 1C5B  70 71 72 73 74 75    db  070h,071h,072h,073h,074h,075h,076h,077h   ; 70 .. 77
       76 77      
 1C63  78 79 7A 7B 7C 7D    db  078h,079h,07Ah,07Bh,07Ch,07Dh,07Eh,07Fh   ; 78 .. 7F
       7E 7F      
 1C6B  87 81 82 83 84 85    db  087h,081h,082h,083h,084h,085h,086h,087h   ; 80 .. 87
       86 87      
 1C73  88 89 8A 8B 8C 8D    db  088h,089h,08Ah,08Bh,08Ch,08Dh,084h,086h   ; 88 .. 8F
       84 86      
 1C7B  82 91 91 93 94 95    db  082h,091h,091h,093h,094h,095h,096h,097h   ; 90 .. 97
       96 97      
 1C83  98 94 81 9B 9C 9D    db  098h,094h,081h,09Bh,09Ch,09Dh,09Eh,09Fh   ; 98 .. 9F
       9E 9F      
 1C8B  A0 A1 A2 A3 A4 A4    db  0A0h,0A1h,0A2h,0A3h,0A4h,0A4h,0A6h,0A7h   ; A0 .. A7
       A6 A7      
 1C93  A8 A9 AA AB AC AD    db  0A8h,0A9h,0AAh,0ABh,0ACh,0ADh,0AEh,0AFh   ; A8 .. AF
       AE AF      
 1C9B  B0 B1 B2 B3 B4 B5    db  0B0h,0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h   ; B0 .. B7
       B6 B7      
 1CA3  B8 B9 BA BB BC BD    db  0B8h,0B9h,0BAh,0BBh,0BCh,0BDh,0BEh,0BFh   ; B8 .. BF
       BE BF      
 1CAB  C0 C1 C2 C3 C4 C5    db  0C0h,0C1h,0C2h,0C3h,0C4h,0C5h,0C6h,0C7h   ; C0 .. C7
       C6 C7      
 1CB3  C8 C9 CA CB CC CD    db  0C8h,0C9h,0CAh,0CBh,0CCh,0CDh,0CEh,0CFh   ; C8 .. CF
       CE CF      
 1CBB  D0 D1 D2 D3 D4 D5    db  0D0h,0D1h,0D2h,0D3h,0D4h,0D5h,0D6h,0D7h   ; D0 .. D7
       D6 D7      
 1CC3  D8 D9 DA DB DC DD    db  0D8h,0D9h,0DAh,0DBh,0DCh,0DDh,0DEh,0DFh   ; D8 .. DF
       DE DF      
 1CCB  E0 E1 E2 E3 E4 E5    db  0E0h,0E1h,0E2h,0E3h,0E4h,0E5h,0E6h,0E7h   ; E0 .. E7
       E6 E7      
 1CD3  E8 E9 EA EB EC ED    db  0E8h,0E9h,0EAh,0EBh,0ECh,0EDh,0EEh,0EFh   ; E8 .. EF
       EE EF      
 1CDB  F0 F1 F2 F3 F4 F5    db  0F0h,0F1h,0F2h,0F3h,0F4h,0F5h,0F6h,0F7h   ; F0 .. F7
       F6 F7      
 1CE3  F8 F9 FA FB FC FD    db  0F8h,0F9h,0FAh,0FBh,0FCh,0FDh,0FEh,0FFh   ; F8 .. FF
       FE FF      
          endif

          

          ; colate is used for some string compares in block sorting, directory
          ; sorting, and merge variables.

 1CEB       colate  label byte

          if CDPG eq 437
          ; Collating table for Code Page 437

          ;   0    1    2    3    4    5    6    7
          ;   8    9    A    B    C    D    E    F
 1CEB  00 8C 8D 8E 8F 90  db  000h,08Ch,08Dh,08Eh,08Fh,090h,091h,092h   ;  0 ..  7 ASCII control codes
       91 92      
 1CF3  93 94 95 96 97 98  db  093h,094h,095h,096h,097h,098h,099h,09Ah   ;  8 ..  F
       99 9A      
 1CFB  9B 9C 9D 9E 1B 1A  db  09Bh,09Ch,09Dh,09Eh,01Bh,01Ah,09Fh,0A0h   ; 10 .. 17
       9F A0      
 1D03  A1 A2 A3 A4 A5 A6  db  0A1h,0A2h,0A3h,0A4h,0A5h,0A6h,0A7h,0A8h   ; 18 .. 1F
       A7 A8      

 1D0B  00 06 11 26 1E 27  db  000h,006h,011h,026h,01Eh,027h,025h,00Bh   ; 20 .. 27   !"#$%&'
       25 0B      
 1D13  14 15 23 28 00 02  db  014h,015h,023h,028h,000h,002h,00Ah,009h   ; 28 .. 2F  ()*+,-./
       0A 09      
 1D1B  3D 40 41 43 44 45  db  03Dh,040h,041h,043h,044h,045h,046h,047h   ; 30 .. 37  01234567
       46 47      
 1D23  48 49 04 03 2B 2D  db  048h,049h,004h,003h,02Bh,02Dh,031h,008h   ; 38 .. 3F  89:;<=>?
       31 08      
 1D2B  1C 4A 52 53 56 57  db  01Ch,04Ah,052h,053h,056h,057h,05Ch,05Dh   ; 40 .. 47  @ABCDEFG
       5C 5D      
 1D33  5E 5F 64 65 66 67  db  05Eh,05Fh,064h,065h,066h,067h,068h,06Ah   ; 48 .. 4F  HIJKLMNO
       68 6A      
 1D3B  70 71 72 73 75 76  db  070h,071h,072h,073h,075h,076h,07Bh,07Ch   ; 50 .. 57  PQRSTUVW
       7B 7C      
 1D43  7D 7E 80 16 24 17  db  07Dh,07Eh,080h,016h,024h,017h,00Dh,001h   ; 58 .. 5F  XYZ[\]^_
       0D 01      
 1D4B  0C 4A 52 53 56 57  db  00Ch,04Ah,052h,053h,056h,057h,05Ch,05Dh   ; 60 .. 67  `abcdefg
       5C 5D      
 1D53  5E 5F 64 65 66 67  db  05Eh,05Fh,064h,065h,066h,067h,068h,06Ah   ; 68 .. 6F  hijklmno
       68 6A      
 1D5B  70 71 72 73 75 76  db  070h,071h,072h,073h,075h,076h,07Bh,07Ch   ; 70 .. 77  pqrstuvw
       7B 7C      
 1D63  7D 7E 80 18 34 19  db  07Dh,07Eh,080h,018h,034h,019h,00Eh,0DAh   ; 78 .. 7F  xyz{|}~
       0E DA      

 1D6B  54 7A 58 4E 4F 4D  db  054h,07Ah,058h,04Eh,04Fh,04Dh,050h,055h   ; 80 .. 87  
       50 55      
 1D73  5A 5B 59 63 62 61  db  05Ah,05Bh,059h,063h,062h,061h,04Fh,050h   ; 88 .. 8F  
       4F 50      
 1D7B  58 51 51 6E 6F 6D  db  058h,051h,051h,06Eh,06Fh,06Dh,079h,078h   ; 90 .. 97  
       79 78      
 1D83  7F 6F 7A 1D 1F 20  db  07Fh,06Fh,07Ah,01Dh,01Fh,020h,021h,022h   ; 98 .. 9F  
       21 22      
 1D8B  4C 60 6C 77 69 69  db  04Ch,060h,06Ch,077h,069h,069h,04Bh,06Bh   ; A0 .. A7  
       4B 6B      
 1D93  07 32 33 3F 3E 05  db  007h,032h,033h,03Fh,03Eh,005h,012h,013h   ; A8 .. AF  
       12 13      
 1D9B  A9 AA AB AC AD AE  db  0A9h,0AAh,0ABh,0ACh,0ADh,0AEh,0AFh,0B0h   ; B0 .. B7  
       AF B0      
 1DA3  B1 B2 B3 B4 B5 B6  db  0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h,0B8h   ; B8 .. BF  
       B7 B8      
 1DAB  B9 BA BB BC BD BE  db  0B9h,0BAh,0BBh,0BCh,0BDh,0BEh,0BFh,0C0h   ; C0 .. C7  
       BF C0      
 1DB3  C1 C2 C3 C4 C5 C6  db  0C1h,0C2h,0C3h,0C4h,0C5h,0C6h,0C7h,0C8h   ; C8 .. CF  
       C7 C8      
 1DBB  C9 CA CB CC CD CE  db  0C9h,0CAh,0CBh,0CCh,0CDh,0CEh,0CFh,0D0h   ; D0 .. D7  
       CF D0      
 1DC3  D1 D2 D3 D4 D5 D6  db  0D1h,0D2h,0D3h,0D4h,0D5h,0D6h,0D7h,0D8h   ; D8 .. DF  
       D7 D8      
 1DCB  81 74 85 86 88 89  db  081h,074h,085h,086h,088h,089h,036h,08Ah   ; E0 .. E7  
       36 8A      
 1DD3  84 87 8B 82 3B 84  db  084h,087h,08Bh,082h,03Bh,084h,083h,037h   ; E8 .. EF  
       83 37      
 1DDB  2E 29 30 2C 38 39  db  02Eh,029h,030h,02Ch,038h,039h,02Ah,02Fh   ; F0 .. F7  
       2A 2F      
 1DE3  35 0F 10 3A 3C 42  db  035h,00Fh,010h,03Ah,03Ch,042h,0D9h,0DBh   ; F8 .. FF  
       D9 DB      
          ;   0    1    2    3    4    5    6    7
          ;   8    9    A    B    C    D    E    F
          endif

          

          ; Lotus International Character Set convert table.  Each character
          ; is  mapped to its IBM Character set equivalent.

          ; ltsics defines whether the table is enabled or not

 1DEB  00     ltsics  db  0 ; Default is off, set to non-zero to enable table below

            ;   0    1    2  3    4    5  6    7
 1DEC  00 01 02 03 04 05  lotusch db  000h,001h,002h,003h,004h,005h,006h,007h ;  0 ..     7
       06 07      
 1DF4  08 09 0A 0B 0C 0D    db  008h,009h,00Ah,00Bh,00Ch,00Dh,00Eh,00Fh ;  8 .. F
       0E 0F      
 1DFC  10 11 12 13 14 15    db  010h,011h,012h,013h,014h,015h,016h,017h ; 10 .. 17
       16 17      
 1E04  18 19 1A 1B 1C 1D    db  018h,019h,01Ah,01Bh,01Ch,01Dh,01Eh,01Fh ; 18 .. 1F
       1E 1F      
 1E0C  20 21 22 23 24 25    db  020h,021h,022h,023h,024h,025h,026h,027h ; 20 .. 27
       26 27      
 1E14  28 29 2A 20 20 2D    db  028h,029h,02Ah,020h,020h,02Dh,02Eh,02Fh ; 28 .. 2F
       2E 2F      
 1E1C  30 31 32 33 34 35    db  030h,031h,032h,033h,034h,035h,036h,037h ; 30 .. 37
       36 37      
 1E24  38 39 3A 3B 3C 3D    db  038h,039h,03Ah,03Bh,03Ch,03Dh,03Eh,03Fh ; 38 .. 3F
       3E 3F      
 1E2C  40 41 42 43 44 45    db  040h,041h,042h,043h,044h,045h,046h,047h ; 40 .. 47
       46 47      
 1E34  48 49 4A 4B 4C 4D    db  048h,049h,04Ah,04Bh,04Ch,04Dh,04Eh,04Fh ; 48 .. 4F
       4E 4F      
 1E3C  50 51 52 53 54 55    db  050h,051h,052h,053h,054h,055h,056h,057h ; 50 .. 57
       56 57      
 1E44  58 59 5A 5B 5C 5D    db  058h,059h,05Ah,05Bh,05Ch,05Dh,05Eh,05Fh ; 58 .. 5F
       5E 5F      
 1E4C  60 61 62 63 64 65    db  060h,061h,062h,063h,064h,065h,066h,067h ; 60 .. 67
       66 67      
 1E54  68 69 6A 6B 6C 6D    db  068h,069h,06Ah,06Bh,06Ch,06Dh,06Eh,06Fh ; 68 .. 6F
       6E 6F      
 1E5C  70 71 72 73 74 75    db  070h,071h,072h,073h,074h,075h,076h,077h ; 70 .. 77
       76 77      
 1E64  78 79 7A 7B 7C 7D    db  078h,079h,07Ah,07Bh,07Ch,07Dh,07Eh,07Fh ; 78 .. 7F
       7E 7F      
 1E6C  80 81 82 83 84 85    db  080h,081h,082h,083h,084h,085h,086h,087h ; 80 .. 87
       86 87      
 1E74  88 89 8A 8B 8C 8D    db  088h,089h,08Ah,08Bh,08Ch,08Dh,08Eh,08Fh ; 88 .. 8F
       8E 8F      
 1E7C  90 91 92 93 94 95    db  090h,091h,092h,093h,094h,095h,096h,097h ; 90 .. 97
       96 97      
 1E84  98 99 9A 9B 9C 9D    db  098h,099h,09Ah,09Bh,09Ch,09Dh,09Eh,09Fh ; 98 .. 9F
       9E 9F      
 1E8C  9F AD 9B 9C A4 9D    db  09Fh,0ADh,09Bh,09Ch,0A4h,09Dh,09Eh,015h ; A0 .. A7
       9E 15      
 1E94  A8 A9 A6 AE AC E3    db  0A8h,0A9h,0A6h,0AEh,0ACh,0E3h,0F2h,0F6h ; A8 .. AF
       F2 F6      
 1E9C  F8 F1 FD B3 B4 E6    db  0F8h,0F1h,0FDh,0B3h,0B4h,0E6h,014h,0FAh ; B0 .. B7
       14 FA      
 1EA4  B8 B9 A7 AF AC AB    db  0B8h,0B9h,0A7h,0AFh,0ACh,0ABh,0F3h,0A8h ; B8 .. BF
       F3 A8      
 1EAC  C0 C1 C2 C3 8E 8F    db  0C0h,0C1h,0C2h,0C3h,08Eh,08Fh,092h,080h ; C0 .. C7
       92 80      
 1EB4  C8 90 CA CB CC CD    db  0C8h,090h,0CAh,0CBh,0CCh,0CDh,0CEh,0CFh ; C8 .. CF
       CE CF      
 1EBC  D0 A5 D2 D3 D4 D5    db  0D0h,0A5h,0D2h,0D3h,0D4h,0D5h,099h,0D7h ; D0 .. D7
       99 D7      
 1EC4  D8 D9 DA DB 9A DD    db  0D8h,0D9h,0DAh,0DBh,09Ah,0DDh,0DEh,0E1h ; D8 .. DF
       DE E1      
 1ECC  85 A0 83 E3 84 86    db  085h,0A0h,083h,0E3h,084h,086h,091h,087h ; E0 .. E7
       91 87      
 1ED4  8A 82 88 89 8D A1    db  08Ah,082h,088h,089h,08Dh,0A1h,08Ch,08Bh ; E8 .. EF
       8C 8B      
 1EDC  F0 A4 95 A2 93 F5    db  0F0h,0A4h,095h,0A2h,093h,0F5h,094h,0F7h ; F0 .. F7
       94 F7      
 1EE4  F8 97 A3 96 81 89    db  0F8h,097h,0A3h,096h,081h,089h,0FEh,0FFh ; F8 .. FF
       FE FF      

          ;
          ; To allow easy access to some International extended characters on keyboards
          ; not supporting them. The table is divided into three parts: the first
          ; part contains a list of accents, the second a list of characters it is
          ; possible to accent, and the third is a list of characters with their
          ; accents. A zero value implies no equivalent accented character exists.
          ;

 1EEC  00     acctab  db  0     ; Non-zero to enable table
 1EED  06       db  6     ; 6 accent types
 1EEE  10       db  16      ; 16 characters possible to accent

 1EEF  27       db  "'"     ; List of dead-key characters
 1EF0  60       db  '`'     ; .. for US or UK keyboard
 1EF1  5E       db  '^'
 1EF2  22       db  '"'
 1EF3  7E       db  '~'
 1EF4  2C       db  ','

          ; Dead-key-to-character matching table.
          ; Top row lists the characters that are associated with dead keys.
          ; Rest of rows contain the actual characters that get displayed
          ; by the dead key (row) and character (column) combination.
          ; The order of the rows must correspond to the order of dead keys above.
          ; A zero value in a character cell indicates no special character is
          ; is displayed when the corresponding dead key/character combination
          ; is pressed.

          if CDPG eq 437
          ; For Code Page 437

          ;   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16

 1EF5  61 41 65 45 69 49  db 'a','A','e','E','i','I','o','O','u','U','y','Y','n','N','c','C' 
       6F 4F 75 55 79 59  
       6E 4E 63 43    
 1F05  A0 00 82 90 A1 00  db 160,000,130,144,161,000,162,000,163,000,000,000,000,000,000,000 ; ' ()
       A2 00 A3 00 00 00  
       00 00 00 00    
 1F15  85 00 8A 00 8D 00  db 133,000,138,000,141,000,149,000,151,000,000,000,000,000,000,000 ; ` ()
       95 00 97 00 00 00  
       00 00 00 00    
 1F25  83 00 88 00 8C 00  db 131,000,136,000,140,000,147,000,150,000,000,000,000,000,000,000 ; ^ ()
       93 00 96 00 00 00  
       00 00 00 00    
 1F35  84 8E 89 00 8B 00  db 132,142,137,000,139,000,148,153,129,154,152,000,000,000,000,000 ; " ()
       94 99 81 9A 98 00  
       00 00 00 00    
 1F45  00 00 00 00 00 00  db 000,000,000,000,000,000,000,000,000,000,000,000,164,165,000,000 ; ~ ()
       00 00 00 00 00 00  
       A4 A5 00 00    
 1F55  00 00 00 00 00 00  db 000,000,000,000,000,000,000,000,000,000,000,000,000,000,135,128 ; , ()
       00 00 00 00 00 00  
       00 00 87 80    
          endif

          
 = 0079       ACCTBZ  equ $-acctab  ; Size of acctab

 1F65  0007[        db  (128-ACCTBZ) dup (0) ; Extra bytes to fill out to 128th byte
       00     
         ]    

          

          ; Set samcol to 1 or 2 to make WordStar keep track of the column the cursor
          ; is on when moving across shorter lines.  Normally, WordStar will only move
          ; to the end of shorter lines when moving from longer lines.  With this byte
          ; set to 1 or 2, WordStar can move across shorter lines and keep the same
          ; column position.  Setting the byte to 2 will make the cursor momentarily
          ; move into areas on the screen where there is no text.

 1F6C  00     samcol  db  0

          ; For dot matrix printers, page preview may show pages of a document one
          ; line down from where they will actually appear when printed.  If you don't
          ; want this extra line added when previewing, set prvled non-zero.

 1F6D  00     prvled  db  0 ; Add line when previewing

          ; If using a mouse which uses cursor control characters (^E, ^X) to move
          ; the highlighting in pulldowns, reset this flag so that the highlight bar
          ; doesn't wrap back around after receiving further cursor movements when
          ; it reaches the end of the menu.

 1F6E  FF     wrppul  db  0FFh  ; Wrap bar around when at top or bottom

          ; At help levels above 1 WordStar asks for confirmation when creating
          ; new files.  Set askyes to zero to avoid being asked this at any help
          ; level

 1F6F  FF     askyes  db  0FFh

          ; Setting wrdchk to 0 stops WordStar from displaying the number of words
          ; that have been checked after a spelling check

 1F70  FF     wrdchk  db  0FFh  ; Default is to print number of words

          ; Setting ctlflg to a non-zero value makes WordStar perform ^L operations like
          ; versions prior to 4.0.  This means that when a numeric argument is used in
          ; the options for find or find and replace, and a ^L is pressed, asking for
          ; another find or find and replace, the number will be used for the find/find
          ; and replace

 1F71  00     ctlflg  db  0 ; Default is to work like newer versions

          ; Setting prmlog to a non-zero value makes WordStar log permanently whenever
          ; changing drive/directory in dialog boxes (other than the log dialog box
          ; itself, which is always permanent).

 1F72  00     prmlog  db  0 ; Temporary log unless specific log selected

          ; Setting runmsg to 0 stops WordStar from asking to press any key after
          ; running a program.

 1F73  FF     runmsg  db  0FFh  ; Default is to ask to press a key

 1F74  00 00 00       db  0,0,0 ; Reserved

          ; Normally, WordStar will calculate 1/8th of the screen to overlap when
          ; moving to the next screen with ^R or ^C.  If scnovr is 0 to 254, WordStar
          ; will use that number of lines of overlap, up to the usable text portion
          ; of the screen.  -1 (0ffh)  means calculate the overlap the old way.
          ; If scnovr is greater than the number of editable lines on the screen,
          ; then the number of editable lines-1 will be used.  In other words, ^R and
          ; ^C will always generate at least one line of movement.

 1F77  FF     scnovr  db  0FFh  ; Overlap the old way

 1F78  00 00        db  0,0 ; Reserved

          ; Keyboard scan code translation table

          ; On IBM PC's this table is used to translate one scan code into any other
          ; scan code as it is typed. It is used primarily for European keyboards.

          ; On other machines, this table can be used to translate any single ASCII
          ; keystroke into any other ASCII code as it is typed.

 1F7A  07     kbxlat  db  7

 1F7B  B500 002F      dw  0b500h,'/'  ; ^/ --> ?
 1F7F  B900 0031      dw  0b900h,'1'  ; ^1 --> !
 1F83  C000 0038      dw  0c000h,'8'  ; ^8 --> *
 1F87  BF00 0037      dw  0bf00h,'7'  ; ^7 --> &
 1F8B  B100 003D      dw  0b100h,'='  ; ^= --> =
 1F8F  B200 0027      dw  0b200h,"'"  ; ^' --> '
 1F93  BE00 002E      dw  0be00h,'.'  ; ^. --> .
 1F97  0000 0000      dw  0,0
 1F9B  0000 0000      dw  0,0
 1F9F  0000 0000      dw  0,0
 1FA3  0000 0000      dw  0,0

          
          ; WordStar uses a pool of buffers for pdf data, proportional spacing tables, 
          ; paragraph style data, and font descriptions.  
          ; Set bfrsiz to at least 20 buffers; more will improve performance with
          ; large PDFs, many fonts, or many paragraph styles.

 1FA7  28     bfrsiz  db  40 ;20    ; Number of 512 byte shared buffers
                  ; Used for PDF data, proportional tables,
                  ;  and paragraph style data.

          ; You can insert the current date or time into a document with either
          ; shorthand or during merge printing. FDATE indicates how the date should
          ; be displayed, and FTIME the time, as follows...

          ; Code  Example
          ;  1  Day of the month
          ;  2  Month as a number
          ;  3  Month as a word
          ;  4  Year as 4 digits
          ;  5  Year as 2 digits
          ;  6  First 3 letters of month
          ;  7  Day of the month as 2 digits
          ;  8  Month as 2 digits
          ;  9  Hour in 24-hour format
          ;  A  Hour in 24-hour 2-digit format
          ;  B  Hour in 12-hour format
          ;  C  Minute as 2 digits
          ;  D  AM or PM
          ;  E  A.M. or P.M.
          ;  F  am or pm
          ;  G  a.m. or p.m.
          ;  H  Day of the week as a word
          ;  I  Day of the week, abbreviated

          ; For example:

          ; H, 3 1, 4 becomes Wednesday, September 19, 1985
          ; 2/1/5   becomes 9/19/85
          ; 7 6 5   becomes 19 Sep 85
          ; 9:C   becomes 14:27
          ; B:C D   becomes 2:27 PM

 1FA8  06     fdate db  6
 1FA9  33 20 31 2C 20 34    db  '3 1, 4'  ; September 19, 1985 format
 1FAF  00 00 00 00 00 00    db  0,0,0,0,0,0 ; Spares

 1FB5  05     ftime db  5
 1FB6  42 3A 43 20 47     db  'B:C G'   ; 2:27 p.m. format
 1FBB  00 00 00 00 00 00    db  0,0,0,0,0,0,0 ; Spares
       00     

          ;
          ; Application files
          ;
          ; The following data structure allows for the addition of extra applications.
          ; WordStar will pass on the application number and the address of the start of
          ; the file areas so that the application may use them to perform the same file
          ; search as WordStar. The API allows the application to call back into WordStar
          ; to perform certain functions, one of which is opening these files using
          ; WordStar's search path mechanism.  The initialization bytes are used for
          ; any settings that the application requires
          ; 
          ;
 1FC2  0091[      AppFil  db  145 dup(0)    ; Application files and initialization
       00     
         ]    

          
          ; Extended keyboard flag

          ; WordStar tests the system for an extended keyboard to allow the use of
          ; certain keys only available on those keyboards.  This byte turns the check
          ; on or off, or enables the extended keyboard functionality without doing a
          ; test.  Set to 0 for no test (F11 and F12 probably won't work), 0FFh to do
          ; the test, and act appropriately, and 01 to enable the extended keyboard
          ; functions without doing the test.

 2053  00     extkb db  00h     ; Don't perform the test

          
          ; Specifies what character to use to fill unused space in the status line.
          ; The first byte of stfill is for document mode, the second for non-documents.

 2054  20     stfill  db  ' '   ; Fill with blanks
 2055  20       db  ' '   ; For non-document mode

          
          ; If swprun is TRUE, WordStar will use the same swapping mechanism for
          ; running user programs as it does for running its own programs.

 2056  FF     swprun  db  TRUE      ; Swap when running user programs

          ; mouse support

          %OUT mouse variables to be moved

 2057  FF     moususe db TRUE   ; set to FALSE if don't want to use the mouse
 2058  000F     mick_h  dw 0Fh    ; mouse horiz. sensitivity--mickeys (1-32,767)
 205A  000F     mick_v  dw 0Fh    ; mouse vert.  sensitivity--mickeys (1-32,767)
 205C  0016     dcdur dw 22   ; double click duration in ibmtiks
 205E  0014     mvscrl  dw 20   ; min vertical move before scroll (mickeys)
 2060  0014     mhscrl  dw 20   ; min horizontal move before scroll (mickeys)
 2062  0082     mhscrw  dw 130; 300 ; milliseconds to wait between forcing horiz. scrolls
 2064  0096     mvscrw  dw 150; 300 ; milliseconds to wait between forcing vert scrolls
 2066  00     swpbtn  db FALSE  ; TRUE means swap buttons for lefties

          
          ; The CLARET flag bits specify how dialog boxes are handled.
          ;
          ; Bit Function
          ;
          ;  0  Pressing Enter key in dialog boxes:
          ;   0 = moves from field to field; closes dialog at last field
          ;   1 = closes dialog regardless of current field
          ;
          ;  1  Clearing fields when cursoring around directory entries:
          ;   0 = field is not cleared
          ;   1 = field is cleared
          ;
          ;  2  Automatically show names in field when cursoring through
          ;   directories:
          ;   0 = field not automatically updated
          ;   1 = field is automatically updated
          ;
          ;  3  Show path as well as filename in status line:
          ;   0 = don't show path
          ;   1 = show path
          ;
          ; 4-7 Reserved for future use.
          ;
 2067  0F     claret  db  00001111b   ; Enter key closes dialog box
                    ; Clear field in dialog box
                    ; Automatically show names in field
                    ; Show path w/filename in status line

 2068  8300     mreckey   dw  8300h   ; Scan code for stop recording key- 
                    ; stroke for macros. Default is 
                    ; Alt + =

 206A  8200     minpkey   dw  8200h   ; Scan code for PauseForInput key-
                    ; stroke for macros. Default is 
                    ; Alt + -

 206C  011B     mstpkey   dw  011Bh   ; Scan code for Stop macro system 
                    ; for play back. Default is Esc

 206E  FFFF     manykey   dw  0FFFFh    ; Scan code for Stop macro system at
                    ; any time. Default is undefined.

          

 2070  00     usrmpaus  db  0   ; Use defined pause for input message
 2071  0022[          db  34 dup (' ')  ; for macros. If null in first byte 
       20     
         ]    

 2093  00         db  0   ; then get message from message file
                    ; Null terminated string

          
 = 000E       USRMSIZ   equ 14    ; Maximim size

 2094  41 6C 74 2B 3D 00  usrmrec   db  'Alt+=',0 ; Message for stop recording keystroke
 = 0006       USRMRZ    equ $-usrmrec ; Size of message
 209A  0008[          db  USRMSIZ-USRMRZ dup (0)
       00     
         ]    

          
 20A2  41 6C 74 2B 2D 00  usrminp   db  'Alt+-',0 ; Message for PauseForInput keystroke
 = 0006       USRMIZ    equ $-usrminp ; Size of message
 20A8  0008[          db  USRMSIZ-USRMIZ dup (0)
       00     
         ]    

          
          ;
          ; Definitions for each status line
          ;
          ;Function   Description             Length  Notes
          ;  1         Wait messages            30  Includes Replace Y/N,
          ;           ..Printing, Print Wait, Wait
          ;  2         Title                   10
          ;  3         File indicator          35   Set bit #3 to 0 in label
          ;           .. CLARET to suppress drive
          ;           .. and directory.
          ;  4         Line number              4
          ;  5         Page number              4   Works as line number in
          ;           .. non-document mode
          ;  6         Column number            5
          ;  7         Vertical position        8
          ;  8         Horizontal position      8
          ;  9         Font name               18
          ; 10         Style name              24
          ; 11         Insert                   8   Also "Protect" message
          ; 12         Column mode             15
          ; 13         Line spacing             2
          ; 14         reserved
          ; 15         Auto indent             13
          ; 16         reserved
          ; 17         Bold                     3
          ; 18         Italic                   3
          ; 19         Underline                3
          ; 20         Superscript              3
          ; 21         Subscript                3
          ; 22         Closing file             1
          ; 23         Command in progress      3
          ; 24         reserved
          ; 25         Display on/off           3
          ; 26         Text justification      16   Series of 4 buttons:
          ;                                        Left, Center, Right, Justified
          ; 27         reserved
          ; 28         reserved
          ; 29         reserved
          ; 30         Window indicator         3
          ; 31         Window sizing             1
          ; 32         Horizontal scroll        3
          ; 33         Window Min/Max           1
          ; 34         Markers                 16
          ; 35         Language                16
          ;
          ; A value of -1 ends an entry. A -1 entry only means don't use this 
          ; bar line. Other values include:
          ; Value in
          ; first byte  Definition
          ;    0    Title bar
          ;    1    Style bar
          ;    2    Status bar (non-document edit screen)
          ;   -2    Status bar (document edit screen)
          ;
          ; Each proceeding triplet is:
          ; function | length | on-screen column
          ;

 = 0003       STADEZ  equ 3     ; Number of bytes per function
 = 0012       STADCNT equ 18      ; Max number of functions per
                    ; status bar

 20B0  00     stadef1 db   0      ; Use top line
 20B1  16 01 00       db  22, 1,  0 ; Close file indicator
 20B4  17 03 01       db  23, 3,  1 ; Command in progress 
 20B7  01 1E 05       db   1, 30, 5 ; Messages
 20BA  02 0A 23       db   2, 10, 35  ; Title
 20BD  03 1D 2D       db   3, 29, 45  ; Filename
 20C0  1E 03 4B       db  30,  3, 75  ; Window indicator
 20C3  21 01 4F       db  33,  1, 79  ; Window minimize/maximize
 20C6  FF       db  -1
            
 = 0007       STADZ1  equ ($ - stadef1)/STADEZ
            rept  STADCNT - STADZ1
            db  0, 0, 0
            endm

          
 20E8  01     stadef2 db   1      ; Put this one on second line
 20E9  0A 18 01       db  10, 24, 1 ; Style name
 20EC  09 12 1A       db   9, 18, 26  ; Font name
 20EF  11 03 2D       db  17,  3, 45  ; Bold button
 20F2  12 03 31       db  18,  3, 49  ; Italics button
 20F5  13 03 35       db  19,  3, 53  ; Underline button
 20F8  19 03 39       db  25,  3, 57  ; Display on/off button
 20FB  1A 10 3D       db  26,  4*4, 61  ; Text justification buttons
 20FE  0D 02 4D       db  13,  2, 77  ; Line spacing button
 2101  FF       db  -1      ; End of entries for this status line

 = 0008       STADZ2  equ ($ - stadef2)/STADEZ
            rept  STADCNT - STADZ2
            db  0, 0, 0
            endm

          
 2120  FE     stadef3 db  -2      ; Put on bottom
 2121  0C 0F 00       db  12, 15, 0 ; Column/Repl indicator
 2124  22 10 10       db  34, 16, 16  ; Markers
 2127  0B 08 21       db  11,  8, 33  ; Insert
 212A  05 04 2A       db   5,  4, 42  ; Page number
 212D  04 04 2F       db   4,  4, 47  ; Line number
 2130  07 08 34       db   7,  8, 52  ; Vertical position
 2133  06 04 3D       db   6,  4, 61  ; Column
 2136  08 08 42       db   8,  8, 66  ; Horizontal position
 2139  20 03 4B       db  32,  3, 75  ; Horizontal scroll indicator
 213C  1F 01 4F       db  31,  1, 79  ; Window sizing indicator
 213F  FF       db  -1

 = 000A       STADZ3  equ ($ - stadef3)/STADEZ
            rept  STADCNT - STADZ3
            db  0, 0, 0
            endm

          
 2158  02     stadef4 db  2     ; Non document version
 2159  0C 0F 00       db  12, 15, 0 ; Column/Repl indicator
 215C  22 10 10       db  34, 16, 16  ; Markers
 215F  0F 0D 22       db  15, 13, 34  ; Auto-Indent
 2162  0B 08 31       db  11, 8,  49  ; Insert
 2165  05 07 3B       db  5,  7,  59  ; Line number (non document)
 2168  06 05 44       db  6,  5,  68  ; Column
 216B  20 03 4B       db  32,  3, 75  ; Horizontal scroll indicator
 216E  1F 01 4F       db  31,  1, 79  ; Window sizing indicator
 2171  FF       db  -1

 = 0008       STADZ4  equ ($ - stadef4)/STADEZ
            rept  STADCNT - STADZ4
            db  0, 0, 0
            endm

          ;
          ; Opening Menu status line definition
          ;
 2190  00     stadef5 db   0      ; Use top line
 2191  16 01 00       db  22, 1,  0 ; Close file indicator
 2194  17 03 01       db  23, 3,  1 ; Command in progress 
 2197  01 1E 05       db   1, 30, 5 ; Messages
 219A  02 0A 23       db   2, 10, 35  ; Title
 219D  FF       db  -1
            
 = 0004       STADZ5  equ ($ - stadef5)/STADEZ
            rept  STADCNT - STADZ5
            db  0, 0, 0
            endm

          ;
          ; Print time status line
          ;
 21C8  00     stadef6 db   0      ; Use top line
 21C9  05 04 04       db   5,  4, 4 ; Page number
 21CC  06 04 0A       db   6,  4, 10  ; Copy number
 21CF  01 16 10       db   1, 22, 16  ; Messages
 21D2  03 23 27       db   3, 35, 39  ; Filename
 21D5  FF       db  -1
            
 = 0004       STADZ6  equ ($ - stadef6)/STADEZ
            rept  STADCNT - STADZ6
            db  0, 0, 0
            endm

          

          ; Speller alternate lookup options

          ; For run-on word suggestions, set bit 1
          ; For typo alternates, set bit 2
          ; For typo transpositions, set bit 3
          ; For case or accent suggestions, set bit 4
          ; For phonetic suggestions, set bit 5
          ; For Alternates from the main dictionary, set bit 8
          ; For Alternates from the personal dictionary, set bit 9
          ; One of the last two bits must be set (main or personal dictionary)

          ;   5432109876543210
 2200  033E     splopt  dw  0000001100111110b

 2202  FF     clkypl  db  TRUE    ; Display Classic keys in Pull Downs

          ; For the following display flags, 0FFh means the flag is tied to
          ; print control display (^OD), 0 means initial state off (not tied
          ; to print controls, and 1 means initial state on (not tied to print
          ; control display.

 2203  FF     dtcdsp  db  0FFh    ; Dot command display tied to print controls

 2204  FF     flgdsp  db  0FFh    ; Flag column display tied to print controls

 2205  00     sfbdsp  db  0   ; Soft space dots and tabs default off

          ; Scroll bar in editing display default (on or off only)

 2206  FF     scbdsp  db  TRUE    ; Scroll bar defaults on

 2207  FF     windsp  db  TRUE    ; ^OD operates both windows

 2208  FF     inimrg  db  TRUE    ; Interpret merge variables default for
                  ; .. print dialog
          .list
 2209  00     netstr  db  0     ; 0 = no net; >0 = net. string

 = 0001       NETSTRZ equ $-netstr
 220A  003B[        db  (60 - NETSTRZ) dup (0)
       00     
         ]    

          
 2245  00     mreset  db  MR_FULL   ; full; partial; or full first, partial rest?

          ;
          ; To turn on onscreen function key labels set funlbl to a value 1-4
          ; 
          ; 0 = No function keys
          ; 1 = 1 line   Normal Function keys on bottom
          ; 2 = 2 lines  Normal Function keys on bottom, SHIFT-FKeys on line above
          ;
 2246  00     funlbl  db      0               ; Number of function key lines 
 2247  0A       db  10    ; Show 10 per line  

          ; The following two keys are the user definable function keys and their
          ; descriptions for the function key lines.  Function keys are normally defined
          ; using macros, however two are reserved by WordStar to perform the help
          ; function (F1) and to close dialogs and files (F10).
          ; 
          ;
 2248  3B00     U1Fkey  dw  3b00h   ; Help:  Scan code (F1)
 224A  48 65 6C 70 20 20    db  'Help    '
       20 20      

 2252  4400     U2Fkey  dw  4400h   ; Close: Scan code (F10)
 2254  44 6F 6E 65 20 20    db  'Done    '
       20 20      

 225C  0000     fcolor  dw  0   ; Attribute of function key labels decription 
       0000       dw  0   ; Attribute of function key labels number 
       0000       dw  0   ; Reserved

          ; User Area date
 2262  0C 1F 5B     udate db  12,31,91

