WordStar (c) * user-patchable area documentation: Patcè locationó foò terminaì controì sequences¬ delaù valueó anä otheò miscellaneouó user-patchablå areaó aó listeä iî thå "USER1º TERMINAÌ PATCÈ AREA¢ oæ WordStar®  (3.² valueó takeî froí IBM/MS- DOÓ  version¬  buô  arå thå samå aó CP/M-8° version»  3.³  valueó baseä  oî Kayprï bundleä versioî oæ 3.3¬  buô shoulä bå thå  samå foò generiã CP/M-8° versioî anä possiblù 16-biô versioî aó well.) Á  mucè fasteò versioî oæ WordStaò caî bå madå oî  systemó  whicè supporô  inserô  anä  deletå linå (NOÔ thå samå  aó  eraså  line¬ deletå eraseó linå anä theî scrolló uð thå followinç lineó oî thå screen)®  Lowerinç thå delaù valueó (oò eliminatinç theí entirelù wheî  possible© wilì alsï speeä uð screeî updatå timå anä improvå keyboarä response. Alsï  listeä  ió  á  recommendeä  patcè  (witè  samplå  code©  tï implemenô  printeò busù statuó calì foò mosô CP/Í  systemó  whicè havå  thå  "LISTST¢ (lisô devicå status© functioî implementeä  iî theiò  BIOÓ  (noô  alì BIOÓ imple- menô thió  functioî  whicè  ió optional)®  Installinç  thió patcè oî systemó whicè  supporô  thå LISTSÔ  BIOÓ functioî wilì improvå keyboarä responså TREMENDOUSLÙ wheî printinç á filå usinç thå WÓ prinô functioî whilå editinç aô thå samå time®  (Notå thaô iî mù example¬  thå routinå startó  aô 2D7È becauså therå ió codå iî MORPAÔ froí 2CB-2D6¬  yoõ maù starô thå  codå aô 2CÂ (v3.3© iæ yoõ havå alì zeroeó therå (nï codå  iî MORPAT).) Therå  arå otheò areaó iî USER± patcè areá whicè caî bå seô  froí thå  WordStaò optionó menõ oæ WINSTALL¬  anä mosô oæ thå  "USER4º PRINTEÒ  PATCÈ  AREA¢  caî  bå seô uð usinç thå  selectioî  oæ  á printeò  froí thå standarä supporteä printeò menõ and/oò  settinç uð usinç thå custoí set-uð routines. Foò morå information¬ consulô youò WordStaò v3.² referencå manuaì appendiø Ã oò thå v3.³ Installatioî Manual. Patch locations are one of five types: B = Byte value F = Flag byte (00 or FF) J = JMP or NOP/NOP/RET P = Patch space (00 if unused) S = String (1 byte length value + string data area) (Stringó arå storeä witè singlå bytå indicatinç length¬  followeä bù  strinç data®  Makå lengtè ½ zerï foò  non-applicablå  controì sequenceó  whicè  wilì  theî bå donå usinç  softwarå  insteaä  oæ terminaì hardware.) ª (WordStaò ió á registereä trademarë oæ MicroPrï International Corporation» Saî Rafael¬ California) Š LABEL 3.2 ADDR 3.3 ADDR LENGTH TYPE ===== ======== ======== ====== ==== HITE 248 232 1 B (Number of lines on screen) WID 249 233 1 B (Number of columns per line) CLEAD1 24A 234 9 (1+8) S (Cursor addressing lead in) CLEAD2 253 23D 5 (1+4) S (Character(s) separating row/col) CTRAIL 258 242 5 (1+4) S (Ending character(s) for cursor address string) CB4LFG 25D 247 1 F (Column before line flag, 0=line/col, FF=col/line) LINOFF 25E 248 1 B (Line offset, 1st line=0) COLOFF 25F 249 1 B (Column offset, 1st column=0) ASCUR 260 24A 1 B (ASCII/binary cursor addr, 0=binary, 2=2 digit, 3=3 digits) ERAEOL 26D 250 7 (1+6) S (Erase to end of line) LINDEL 274 257 7 (1+6) S (Delete line) LININS 27B 25E 9 (1+8) S (Insert line) IVON 284 267 7 (1+6) S (Inverse video on) IVOFF 28B 26E 7 (1+6) S (Inverse video off) TRMINI 292 275 9 (1+8) S (Terminal initialization (clear screen usually)) TRMUNI 29B 27E 9 (1+8) S (Terminal de-initialization (also clear screen usually)) INISUB 2A4 287 3 J (NOP/NOP/RET or JMP to user initialization subroutine) Š LABEL 3.2 ADDR 3.3 ADDR LENGTH TYPE ===== ======== ======== ====== ==== UNISUB 2A7 28A 3 J (NOP/NOP/RET or JMP to user de-initialization subroutine) USELST 2AA 28D 1 F (Use last line on CRT, 00=don't, FF=OK) (usually 00) DELCUS 2AE 28E 1 B (Delay after cursor addressing) (appox. # of MSECs) DELMIS 2AF 28F 1 B (Delay after other misc. functions) (appox. # of MSECs) UCNSTA 2BA 29A 3 J (0/NOP/RET or JMP to user console status routine) UCONI 2BD 29D 3 J (0/NOP/RET or JMP to user console input routine) UCONO 2C0 2A0 3 J (0/NOP/RET or JMP to user console output routine) DEL1 2CF 2AF 1 B (short delay: cursor blink "on" portion of cycle during replace) DEL2 2D0 2B0 1 B (medium-short delay: cursor blink "off" portion of cycle) DEL3 2D1 2B1 1 B (medium-long delay: prefix key till menu, delay till filename help) DEL4 2D2 2B2 1 B (long delay: time messages displayed, pause for screen refresh) DEL5 2D3 2B3 1 B (horizontal scrolling keystroke delay) SCRLSZ 2DD 2BA 1 B (horizontal scrolling scroll amount) MORPAT 2E0 2CB 256 P (area available for user patches) Š Printer status routine: Implementinç thió patcè foò systemó whicè supporô thå LISTSÔ BIOÓ functioî  wilì improvå keyboarä anä printeò responså timå  durinç printó  whilå  editing®  (Seå noteó abovå foò morå info.©  (Afteò assemblinç thå patch¬ uså DDÔ tï overlaù .HEØ filå ontï installeä versioî  oæ WordStar¬  theî uså á SAVÅ 6¹ WSNEW.COÍ anä  tesô  iô out¬  (includinç editinç á filå durinç print© beforå erasinç youò originaì  WS.COÍ  anä renaminç WSNEW.COÍ tï WS.COM®  (Bå surå  tï savå á backuð copù oæ thå original¬ masteò version¬ though...) ; ORG 02D7H ; (in MORPAT area (USER1)) ; ; (Area to use in MORPAT may be different, see notes above.) ; USRPST: ; (User printer status routine) LHLD 0001H ; Get addr of JMP WBOOT in BIOS table LXI D,42 ; +42 (decimal) gives JMP LISTST addr DAD D ; HL = addr of JMP LISTST LXI B,USRP2 ; return addr after LISTST "call" PUSH B ; (push ret. addr on stack) PCHL ; (JMP to HL location) USRP2: ; (return location) CPI 0FF ; is printer ready? RZ ; if so, return with carry = 0 STC ; else set carry flag RET ; and return (printer busy/not ready) ; ; ORG 0718H ; (in USER4 area) HAVBSY: DB 0FFH ; set=FF to indicate have busy ; ORG 0719H ; (in USER4 area) LIBSY: JMP USRPST ; JMP to user status routine ; END ;