.PO 0
.op
.he Silveira                 Table 1 for "WordStar Deluxe"               page #

                                    TABLE 1
         Labels and Addresses of Patch Points for WordStar 3.3 and 3.0

                                                                KAYPRO
                                                                WORDSTAR 3.3
        WS 3.3  WS 3.0                                          ORIGINAL
LABEL   ADDR    ADDR    DESCRIPTION                             SETTINGS

WSVER   0110    0110    WordStar version
COPRIT  0112    0117    copyright notice
SIGNON  014E    0153    WordStar sign-on message
        0179    017F    serial number
IDTEX   018A    018F    terminal id text
PIDTEX  01AE    01B3    printer id text
PROTTX  01D2    01D7    printer protocol text
PDRVTX  01F6    01FD    port driver text

        021B    0220    various flags and holders for internal  .
                        use by WordStar                         .
                                                                .

HITE    0232    0248    screen height in lines (24)             18
WID     0233    0249    screen width in columns (80)            50
CLEAD1  0234    024A    cursor positioning: lead-in string      02 1B 3D 00 00
                                                                00 00 00 00
CLEAD2  023D    0253    crsr pos: string between row/column     00 00 00 00 00
CTRAIL  0242    0258    crsr pos: ending string                 00 00 00 00 00
CB4LFG  0247    025D    crsr pos: 00 = row/col, FF = col/row    00
LINOFF  0248    025E    crsr pos: row offset                    20
COLOFF  0249    025F    crsr pos: column offset                 20
ASCUR   024A    0260    crsr pos: 00 = binary row & col numbers 00
UCRPOS  024B    0264    jmp to user crsr pos routine            00 00 C9 00 00
ERAEOL  0250    026D    terminal erase to end of line string    01 18 00 00 00
                                                                00 00
LINDEL  0257    0274    terminal delete line string             00 00 00 00 00
                                                                00 00
LININS  025E    027B    terminal insert line string             00 00 00 00 00
                                                                00 00 00 00
IVON    0267    0284    turn on highlighting string             06 1B 42 30 1B
                                                                42 31
IVOFF   026E    028B    turn off highlighting string            06 1B 43 30 1B
                                                                43 31
TRMINI  0275    0292    terminal initialization string          01 1A 00 00 00
                                                                00 00 00 00
TRMUNI  027E    029B    terminal uninitialization string        00 00 00 00 00
                                                                00 00 00 00
INISUB  0287    02A4    jmp to user term init routine           00 00 C9
UNISUB  028A    02A7    jmp to user term uninit routine         00 00 C9
USELST  028D    02AA    FF = can use last row w/o scrolling     00
DELCUS  028E    02AE    delay after cursor positioning          0A
DELMIS  028F    02AF    delay after misc other functions        05
MEMAPV  0290    02B0    FF = memory-mapped video display        00
MEMADR  0291    02B1    address of home pos in mm video         00 00
HIBIV   0293    02B3    FF = highlighting by setting high bit   00
ŠHIBCUR  0294    02B4    FF = show crsr by setting high bit      00
CRBLIV  0295    02B5    FF = WS blink crsr in iv, term or mmv   00
ZAFCIN  0296    02B6    fix for backspace on delete             00 00
RUBFXF  0298    02B8    FF = use RFIXER                         00
RFIXER  0299    02B9    fix for backspace on delete             00
UCNSTA  029A    02BA    jmp to user con stat routine            00 00 C9
UCONI   029D    02BD    jmp to user con input routine           00 00 C9
UCONO   02A0    02C0    jmp to user con output routine          00 00 C9
SWIN    02A3    02C3    routine or jmp before char out to con   00 00 C9 00 00
                                                                00
SWOUT   02A9    02C9    routine or jmp after char out to con    00 00 C9 00 00
                                                                00
DEL1    02AF    02CF    short delay - highlight crsr blink on   03
DEL2    02B0    02D0    short delay - highlight crsr blink off  09
DEL3    02B1    02D1    medium delay - time to prefix menus     19
DEL4    02B2    02D2    long delay - time for msg displays      40
DEL5    02B3    02D3    delay until screen redisplay/refresh    09
TRSCRS  02B4    02D4    for TRS-80 only                         00
TRSCIF  02B5    02D5    for TRS-80 only                         00
HETHBS  02B6    02D6    for Lifeboat CP/M - Heath 89            00
APLFLG  02B7    02D7    for Apple only                          00
MPMFLG  02B8    <n/a>   MP/M flag                               00
NMOFUS  <n/a>   02D8    number of users on system               01
TCKFLG  <n/a>   02DA    for MP/M only                           00
RSTFLG  <n/a>   02DB    FF = no disk resets by WordStar         00
DEFDSK  02B9    02DC    drive for OVR files after logged drive  01
SCRLSZ  02BA    02DD    columns for horizontal scroll           14
CNVTBL  02BB    <n/a>   ??                                      00 00 00 00 00
                                                                .
                                                                .
                                                                .

MORPAT  02CB    02E0    space for user-added routines           CD 8A 02 C3 AB
                        (with mysterious 12 bytes of code)      24 CD A0 3E C3
                                                                87 02 00 00 00
                                                                00 00 00 00 00
                                                                .
                                                                .
                                                                .

PBGMEM  034B    035C    pointer to beg of memory (i.e. text)    60 84
ITHELP  034D    0360    initial help level                      03
NITHLF  034E    0361    00 = display spec msg if ITHELP 1 or 2  FF
ITITOG  034F    0362    FF = insert mode on, 00 = off           FF
ITDSDR  0350    0363    FF = no-file dir on, 00 = off           FF
INITPF  0351    0366    initial page format: line height 1/48s  08
        0352    0367    paper length (.pl) in lines (66)        42
        0353    0368    paper length in 1/48s                   10 02
        0355    036A    line height in 1/48s again              08
        0356    036B    margin at top (.mt) in lines            03
        0357    036C    margin at top in 1/48s                  18 00
        0359    036E    line height again                       08
        035A    036F    heading margin (.hm) in lines           02
        035B    0370    heading margin in 1/48s                 10 00
        035D    0372    line height again                       08
Š        035E    0373    bottom margin (.mb) in lines            08
        035F    0374    bottom margin in 1/48s                  40 00
        0361    0376    line height again                       08
        0362    0377    footing margin (.fm) in lines           02
        0363    0378    footing margin in 1/48s                 10 00
        0365    037A    line height again                       08
        0366    037B    00 for standard character width         00
        0367    037C    std char width in 1/120s                0C
        0368    037D    alt char width in 1/120s                0A
        0369    037E    page offset in characters               08
INITLM  036A    037F    initial left margin less 1              00
INITRM  036B    0380    init right mar less 1, up to WID - 4    40
INITSR  036C    0381    initial sub/superscript roll in 1/48s   03
INITWF  036D    0385    word wrap (^OW), 00 = off, FF = on      FF
        036E    0386    justification (^OJ), 00 = off, FF = on  FF
        036F    0387    variable tabs (^OV), 00 = off, FF = on  FF
        0370    0388    soft hyphens (^OE), 00 = off, FF = on   00
        0371    0389    hyphen help (^OH), 00 = off, FF = on    FF
        0372    038A    show ctrl char (^OD), 00 = off, FF = on FF
        0373    038B    show ruler line, 00 = off, FF = on      FF
        0374    038C    figure page breaks, 00 = off, FF = on   FF
        0375    038D    show page breaks, 00 = off, FF = on     FF
        0376    038E    line spacing                            01
        0377    038F    (^KN) 00 = block move, FF = column      00
NONDOC  0378    0392    direct entry, 00 = doc, FF = nondoc     00
DOTSON  0379    0397    dot cmds during edit, 00 = disable      FF
DECCHR  037A    0393    decimal point character                 2E
DOTCHR  037B    0395    character to begin dot cmds             2E

BLNCHR  0386    0396    non-break space char (^O)               0F
CMTCHR  0387    <n/a>   comment char (;)                        3B
ENDEXP  0388    <n/a>                                           47
RVELIM  0389    03D8    MailMerge delimiter for data values     2C
RVQUOT  038A    03D9    MM delimiter for enclosed values        22
                                                                00
TXBACK  038C    <n/a>                                           2F
                                                                42
VARCH1  038E    03DB    MM delimiter to introduce variables     26
VARCH2  038F    03DC    MM delimiter to terminate variables     26
VAROPC  0390    03DE    char after name before option letters   2F
        0391    03DF    opt ltr for omit line if variable null  4F
                                                                .
                                                                .
                                                                .
COMPOP  0396    <n/a>   table of MM comparison operators        3C 3E 00 FD 3E
                                                                .
                                                                .
                                                                .
LOGICP  03B7    <n/a>   table of MM logical operators           2E 41 4E 44 2E
                                                                .
                                                                .
                                                                .
HZONE   03C9    039A    hyphenation zone at end of line         04
        03CA    039B    pointer to non-consonant table          D3 03
        03CC    039D    pointer to vowel table                  CE 03
ŠVOWTAB  03CE    039F    table of vowels                         59 5B 5D 7B 7D
NONCON  03D3    03A4    table of non-consonants                 41 45 49 4F 55
                                                                00 00 00 00 00
BOFCHR  03DD    03AE    beginning of file flag char             3A
CONCHR  03DE    03AF    line cont past screen edge flag char    2B
EOFCHR  03DF    03AD    end of file flag char                   2E
FDTCHR  03E0    03B5    merge-print command flag char           4D
HARDCR  03E1    03B4    hard cr flag char                       3C
LFCHR   03E2    03B1    line ends in lf w/o cr flag char        4A
OVPCHR  03E3    03B0    overprint line flag char                2D
PAGCHR  03E4    03B2    end of page flag char                   50
SOFTCR  03E5    03B3    soft cr flag char                       20

SOFHYC  03E7    03B8    character used for soft hyphens         AD
PAGFIL  03E8    03B9    character used for page breaks          2D
MARKS   03E9    03BA    character used for start of blocks      42
        03EA    03BB    character used for end of blocks        4B

        03EE    03BF    characters (0-9) used for place markers 30 31 32 33 34
                                                                35 36 37 38 39
PODBLK  03F8    03CA    disk file output, 00 = no, FF = yes     00
        03F9    03CB    use form feeds, 00 = no, FF = yes       00
        03FA    03CC    suppress page format, 00 = no, FF = yes 00
        03FB    03CD    pause between pages, 00 = no, FF = yes  00
NOUFF   03FC    03D1    FF = suppress form feed question above  00
ITPOPN  03FD    03D3    print page numbers, 00 = on, FF = off   00
ITMIJ   03FE    03D4    microjustification, FF = on, 00 = off   FF
ITBIP   03FF    03D5    bi-directional print, FF = on, 00 = off FF
FNWSCM  0400    03E6    name of main WordStar program           WS      COM
DSKTNA  040C    03F2    name of message file                    WSMSGS  OVR
FNOVLY  0418    03FE    name of overlay file                    WSOVLY1 OVR
FNMRGP  0424    040A    name of merge-print overlay             MAILMRGEOVR
AUTOBS  0430    0422    table of auto-backspace characters      00 00 00 00 00
                                                                00 00 00 00 00
                                                                00
BSCHR   043B    042D    char to use after autobs, usually ^H    08
NOFTAB  043C    0430    no-file command table                   04 00 00 01
                        (each entry 4 bytes, first two are      .
                        cmd chars, next two are address of      .
                        routine)                                .

VTAB    0489    0481    file editing command table              11 FF 12 00
                        (same format as NOFTAB)                 0B FF 16 00
                                                                0F FF 1E 00
                                                                0A FF 22 00
        0499    0491    set help level                  ^JH     0A 08 04 01
        049D    0495    cursor left                     ^S      .
        04A1    0499    backspace                       ^H      .
        04A5    049D    cursor right                    ^D      .
        04A9    04A1    cursor left                     ^A
        04AD    04A5    cursor right word               ^F
        04B1    04A9    cursor down                     ^X
        04B5    04AD    cursor up                       ^E
        04B9    04B1    cursor to left margin           ^QS
        04BD    04B5    cursor to end of line           ^QD
Š        04C1    04B9    cursor to bottom of screen      ^QX
        04C5    04BD    cursor to top of screen         ^QE
        04C9    04C1    cursor to block begin           ^QB
        04CD    04C5    cursor to block end             ^QK
        04D1    04C9    cursor to previous position     ^QP
        04D5    04CD    crsr to source of search, move  ^QV
        04D9    04D1    cursor to marker 0              ^Q0
        04DD    04D5      "    "    "    1              ^Q1
        04E1    04D9      "    "    "    2              ^Q2
        04E5    04DD      "    "    "    3              ^Q3
        04E9    04E1      "    "    "    4              ^Q4
        04ED    04E5      "    "    "    5              ^Q5
        04F1    04E9      "    "    "    6              ^Q6
        04F5    04ED      "    "    "    7              ^Q7
        04F9    04F1      "    "    "    8              ^Q8
        04FD    04F5      "    "    "    9              ^Q9
        0501    04F9    cursor to begin file            ^QR
        0505    04FD    cursor to end file              ^QC
        0509    0501    find                            ^QF
        050D    0505    find & replace                  ^QA
        0511    0509    set left margin                 ^QL
        0515    0511    scroll back continuously        ^QW
        0519    0515    scroll forward continuously     ^QZ
        051D    0539    delete to begin line            ^Q<DEL>
        0521    053D      "    "    "    "               ^Q_
        0525    0541    delete to end line               ^QY
        0529    0551    repeat nest command              ^QQ
        052D    050D    repeat last ^QF or ^QA           ^L
        0531    0519    scroll forward one line          ^Z
        0535    051D    scroll back one line             ^W
        0539    0521    scroll back one screen           ^R
        053D    0525    scroll forward one screen        ^C
        0541    0529    delete character left           <DEL>
        0545    052D      "        "      "              ^_
        0549    0531    delete char under cursor         ^G
        054D    0535    delete line                      ^Y
        0551    0545    delete word right                ^T
        0555    0549    toggle insert mode on/off        ^V
        0559    054D    reformat to end paragraph        ^B
        055D    0555    insert line                      ^N
        0561    0559    tab                              ^I
        0565    055D    carriage returnRN                ^M
        0569    0561    put nxt char in txt as ctrl char ^P
        056D    0565    toggle display of marked block   ^KH
        0571    0569    mark/hide block begin            ^KB
        0575    056D    mark/hide block end              ^KK
        0579    0571    set/hide marker  0               ^K0
        057D    0575      "         "    1               ^K1
        0581    0579      "         "    2               ^K2
        0585    057D      "         "    3               ^K3
        0589    0581      "         "    4               ^K4
        058D    0585      "         "    5               ^K5
        0591    0589      "         "    6               ^K6
        0595    058D      "         "    7               ^K7
        0599    0591      "         "    8               ^K8
Š        059D    0595      "         "    9               ^K9
        05A1    0599    move block                       ^KV
        05A5    059D    copy block                       ^KC
        05A9    05A1    delete block                     ^KY
        05AD    05A5    toggle column mode on/off        ^KN
        05B1    05A9    <not implemented>                ^KZ
        05B5    05AD    interrupt command in progress    ^U
        05B9    05B1    save file and exit               ^KX
        05BD    05B5    save file and return to menu     ^KD
        05C1    05B9    save file and continue           ^KS
        05C5    05BD    abandon file and return to menu  ^KQ
        05C9    05C1    read file into text              ^KR
        05CD    05C5    write block to another file      ^KW
        05D1    05C9    delete file                      ^KJ
        05D5    05CD    toggle directory on/off          ^KF
        05D9    05D1    print file                       ^KP
        05DD    05D5    change logged disk               ^KL
        05E1    05D9    copy file                        ^KO
        05E5    05DD    rename file                      ^KE
        05E9    05E1    set left margin                  ^OL
        05ED    05E5    set right margin                 ^OR
        05F1    05E9    set tab                          ^OI
        05F5    05ED    clear tab                        ^ON
        05F9    05F1    set mar/tabs frm new ruler line  ^OF
        05FD    05F5    toggle word wrap on/off          ^OW
        0601    05F9      "    justification on/off      ^OJ
        0605    05FD      "    variable tab on/off       ^OV
        0609    0601      "    dot cmd interp on/off     ^OD
        060D    0605      "    ruler display on/off      ^OT
        0611    0609      "    page break display on/off ^OP
        0615    060D      "    soft hyphen on/off        ^OE
        0619    0611      "    hyphen help on/off        ^OH
        061D    0615    paragraph tab                    ^OG
        0621    0619    margin release                   ^OX
        0625    061D    center line                      ^OC
        0629    0621    set line spacing                 ^OS
        062D    0625    help for dot commands            ^JD
        0631    0629     "    "  status line             ^JS
        0635    062D     "    "  flags                   ^JF
        0639    0631     "    "  place markers           ^JP
        063D    0635     "    "  paragraph reform        ^JB
        0641    0639     "    "  tabs and margins        ^JM
        0645    063D    command index                    ^JI
        0649    0641    help for moving text             ^JV    .
        064B    0645     "    "  ruler line              ^JR    .
        0651    <n/a>   <not implemented>                ^JA    .
XTAB    0655    0649    expansion space for edit cmd table      00 00 00 00
                                                                .
                                                                .
                                                                .
FPTAB   067A    066E    merge-print cmd table                   10 00 28 43
                        (2 byte cmd char + 2 byte address)      .
                                                                .
                                                                .
                                                                00
ŠPNFTAB  068B    067F    pointer to no-file cmd table            3C 04
PVTAB   068D    0681    pointer to edit cmd table               89 04
PFPTAB  068F    0683    pointer to merge-print table            7A 06

                (following are spec chars used at prompts)

CLCHR   0691    0686    cursor left char                        13
CRCHR   0692    0687    cursor right char                       04
LITCHR  0693    0688    prefix to take next char as literal     10
DIRCH   0694    0689    directory on/off                        06
                        scroll dir up                           1A
                        scroll dir down                         17
STPCHR  0697    068C    must match interrupt char above         15
ERELCH  0698    068D    error release char for interrupt        1B
POSMTH  0699    0690    type of printer                         FF
                        FF = teletype, no backspace
                        00 = teletype w/backspace
                        01 = daisywheel
                        03, 04 = special oem printers

BLDSTR  069A    0691    number of strikes for boldface          03
DBLSTR  069B    0692    number of strikes for double-strike     02

        (Next 8 labels active only if POSMTH = FF or 00)

PSCRLF  069C    0696    string to do CR and LF                  02 0D 0A 0D 0A
                                                                0A 00 00 00 00
                                                                00
PSCR    06A7    06A1    string to do CR only                    02 0D 00 00 00
                                                                00 00
PSHALF  06AE    06A8    string to do CR and half-LF             00 0D 0A 00 00
                                                                00 00
PBACKS  06B5    06AF    string to do backspace                  00 08 00 00 00
                                                                00
PALT    06BB    06B5    string to set alt char width      ^PA   00 1B 45 00 00
PSTD    06C0    06BA    string to set std char width      ^PN   00 1B 4E 00 00
ROLUP   06C5    06BF    str to roll carr up part line     ^PT   00 00 00 00 00
ROLDOW  06CA    06C4    str to roll carr down part line   ^PV   00 00 00 00 00
USR1    06CF    06C9    string for user function 1        ^PQ   00 00 00 00 00
USR2    06D4    06CE      "     "   "      "     2        ^PW   00 00 00 00 00
USR3    06D9    06D3      "     "   "      "     3        ^PE   00 00 00 00 00
USR4    06DE    06D8      "     "   "      "     4        ^PR   00 00 00 00 00
RIBBON  06E3    06DD    string to set alt ribbon color    ^PY   00 00 00 00 00
RIBOFF  06E8    06E2    string to set std ribbon color    ^PY   00 00 00 00 00
PSINIT  06ED    06E7    string to initialize printer            01 0D 54 31 32
                                                                00 00 00 00 00
                                                                00 00 00 00 00
                                                                00 00
PSFINI  06FE    06F8    string to uninitialize printer          00 1B 41 00 00
                                                                00 00 00 00 00
                                                                00 00 00 00 00
                                                                00 00
SOCHR   070F    070B    character for strikeout                 2D
ULCHR   0710    070C    character for underline                 5F
PRINIT  0711    070D    jmp to user printer init routine        00 00 C9
ŠPRFINI  0714    0710    jmp to user printer uninit routine      00 00 C9
CSWTCH  0717    0717    switch to select printer driver         00
                        (00 = primary list device)
                        (01 = WordStar's port driver)
                        (02 = user printer driver)
                        (03 = oem driver)
                        (04 = alternate console driver)
HAVBSY  0718    0718    have printer busy rtn? FF = yes         00

                (If CSWTCH = 00, next 3 active)

LIBSY   0719    071A    jmp to user busy test routine           00 B7 C9
LISEND  071C    071D    routine send character to list device   5F 0E 05 CD 05
                                                                00 B7 C9
LISINP  0724    0725    jmp to user char input rtn              00 37 C9
                        (if using XON/XOFF or ETX/ACK)

                (If CSWTCH = 01, next 11 active)
POBSY   0727    0728    port driver output status entry         DB
POSTAT  0728    0729    output status port address              05
                                                                00 E6
POMASK  072B    072C    bit mask for transmit ready             01
                                                                EE
POOM    072D    072E    bits that change                        01
                                                                37 C0 B7 C9
POSEND  0732    0733    port driver send char entry             D3
POOP    0733    0734    output data port address                04
                                                                00 C9
POINP   0736    0737    port driver input status entry          DB
PISTAT  0737    0738    input status port address               05
                                                                00 E6
POINSK  073A    073B    bit mask for receive ready              02
                                                                EE
POIM    073C    073D    bits that change                        02
                                                                37 C0 DB
POIP    0740    0741    input data port address                 04
                                                                00 B7 C9
                (If CSWTCH = 02, next 3 active)

PUBSY   0744    074C    jmp to user printer busy test routine   00 B7 C9
PUSEND  0747    074F    jmp to user char output routine         00 00 C9
PUINP   074A    0752    jmp to user char input routine          00 37 C9

                (If CSWTCH = 04, next 7 active)

ACBSY   074D    0758    jmp to user alt con busy test           00 B7 C9
ACSEND  0750    075B    send char to alt con                    CD 6C 07 CD F0
                                                                20 C3 63 07
ACINP   0759    0764    input char from alt con                 CD 6C 07 CD 55
                                                                1D C4 6C 1D 57
ACFIN   0763    076E    exit routine start                      78
ACSTA1  076F    076F    set/reset iobyte                        32 03 00 7A B7
                                                                C0 37 C9
ACSTAR  076C    0777    entry routine start                     57 3A 03 00 47
                                                                E6 FC F6
ŠCONFIE  0774    077F    alt con device assignment               01
                        (00 = TTY:, 01 = CRT:)                  .
                                                                .
                                                                .
PROTCL  0778    0786    printer protocol type                   00
                        (00 = none)
                        (01 = ETX/ACK)
                        (02 = XON/XOFF)

EAKBSZ  0779    0787    ETX/ACK msg buffer size                 7F

                (Most of the following are for daisywheels only)

DVMILE  077A    0790    vertical motion index leadin string     00 1B 1E 00 00
DVMITR  077F    <n/a>   ??                                      00 1B 02 00 00
DVMMIN  0784    0795    ??                                      FF FF
DVMRNG  0786    0797    ??                                      FF FF
DHMILE  0788    0779    horizontal motion index leadin string   00 1B 1F 00 00
DHMIFG  078D    079E    ??                                      00
DHMIN   078E    079F    ??                                      FF FF
DHRNG   0790    07A1    ??                                      FF FF
DFWD    0792    07A3    string to set forward print             00 1B 35 00 00
DBAK    0797    07A8    string to set backward print            00 1B 36 00 00
DSP     079C    07AD    forward space                           00 20 00 00 00
DBS     07A1    07B2    backward space                          00 08 00 00 00
DLF     07A6    07B7    line feed vmi                           00 0A 00 00 00
DRLF    07AB    07BC    reverse line feed                       00 1B 0A 00 00

DPHSPC  07B0    07C1    print phantom space                     00 1B 59 00
DPHRUB  07B4    07C5    print phantom rubout                    00 1B 5A 00
DNPROS  07B8    07D3    suppress proportional spacing           00
                        (00 = on, FF = off)

DMJWB   07B9    07D5    use alt microjustification algorithm    00
                        (00 = no, FF = yes)

PSTAB   07BA    07D8    proportional spacing table              .
                        (righthand digit of each byte is        .
                        the one involved in the totally         .
                        unsupported proportional spacing
                        command ^P^P)

        083A    083A    END OF USER PATCHING AREA
