home *** CD-ROM | disk | FTP | other *** search
/ norge.freeshell.org (192.94.73.8) / 192.94.73.8.tar / 192.94.73.8 / pub / computers / cpm / alphatronic / ws4.txt < prev    next >
Text File  |  2003-07-30  |  8KB  |  232 lines

  1.  
  2. Patches for an 8-bit WordStar 4 (CP/M)
  3. ======================================
  4.  
  5. CP/M is a 7 bit system, but the Z80 is an 8 bit processor.  I suppose
  6. the same is true for the 8080, but I have no experience with it.
  7.  
  8. WordStar, in Document Mode, uses the 8th bit of a character to mark
  9. the end of a series: word, line, spaces, etc.  To set an 8th bit, it
  10. uses the instruction 'or 80h' (0F6h 80h).  To remove the 8th bit for
  11. screen and printer, it uses 'and 7Fh' (0E6h 7Fh).
  12.  
  13. As CP/M does not interfere with WordStar, it is possible to send 8-bit
  14. characters to your screen and your printer simply by changing these
  15. instructions for the end of words, as this is marked already by a space.
  16. This change does not affect the document.  But for good screen performance,
  17. the end of a line, page, series of spaces and tabs must be marked by
  18. setting the 8th bit of 09/0D/0A/0C/20h.  This bit must be removed for
  19. screen and printer output.
  20.  
  21. Since extra spaces are treated separately by sending a '+' to the screen
  22. (if that option is on), all characters from 8Eh (141d) onwards can be used.
  23.  
  24. If you have a Z80 (8080?) processor _and_ an 8-bit terminal _and_ are
  25. able to change your configuration for screen and keyboard to write and
  26. read 8-bit characters, you can make the following changes...but _only_
  27. at the addresses given in WS4-8B.PTC:
  28.  
  29. F6 80 (or 80h) to 00 00 (nop nop), and
  30. E6 7F (and 7Fh) to  E6 FF (and 0FFh).
  31. Since 'and' affects the flags, it must not be changed to 'nop.'
  32.  
  33. I have tested this on my CP/M-computer, a Philips P2000C and on a QUME
  34. Sprint 5, a QUME Laser printer, a HP DeskJet 500 and a CANON LPB A2
  35. Laser printer.
  36.  
  37. A simple BASIC program for testing your screen and printer is given below.
  38.  
  39. I do not use spell checking, word count, etc., so I cannot say if other WS
  40. programs are influenced, or how they should be patched.  As I had to use
  41. 'trial and error', I might have made too many alterations, or not enough.
  42. Debugging in 64k of memory was not possible.  If you discover any problems,
  43. let me know and I'll examine them.
  44.  
  45. One item I was not able to find: Ctrl QA can exchange 7-bit characters
  46. and 8-bit characters.  It can also exchange a 7-bit for an 8-bit.  But
  47. if you try to exchange an 8-bit for a 7-bit, the eighth bit is set.  That
  48. means: trying to change "e`" with Ctrl QA into "e" results not in 65h,
  49. but in 0E5h.
  50.  
  51. An extra Sign On message may be placed at INITID (WS.COM address 06BBh).
  52.  
  53. If you want more information, just let me know.
  54. For email, change 'nospam' into 'ks'!
  55.  
  56. G. Doekes, P2000gg, Netherlands
  57. email: d.nospam@net.HCC.nl
  58.  
  59. 10 REM A simple BASIC program for testing screen and printer.
  60. 11 REM For printer, replace PRINT by LPRINT and put the printer initia-
  61. 12 REM lization codes at line 20.
  62. 20 '
  63. 30 X=32
  64. 40 GOSUB 200
  65. 50 X=64
  66. 60 GOSUB 200
  67. 70 X=96
  68. 80 GOSUB 200
  69. 90 X=128
  70. 100 GOSUB 200
  71. 110 X=160
  72. 120 GOSUB 200
  73. 130 X=192
  74. 140 GOSUB 200
  75. 150 X=224
  76. 160 GOSUB 200
  77. 170 'Put here printer de-initialisation codes if necessary
  78. 180 END
  79. 200 FOR I=X to X+31
  80. 210 PRINT CHR$(I);" ";
  81. 220 NEXT
  82. 230 PRINT CHR$(10)CHR$(13)CHR$(10)CHR$(13)
  83. 240 RETURN
  84.  
  85. Remarks:
  86.  
  87.   1. Some printers use 128d-159d for control purposes.  If your printer
  88.      behaves badly after printing the third line, remove 90-100.
  89.   2. If your printer prints two sets of identical characters, check if
  90.      your init-code is correct. For instance, the CANON LBP8 has two;
  91.      code 1 for 7 bits, and code 2 for 8 bits.
  92.  
  93.  
  94. ==============
  95.  
  96.  
  97. PATCHES FOR USING WORDSTAR 4 IN 8-BIT VERSION
  98.  
  99. Note: Addresses are in HEX, with an offset of 100h. If you do not use a
  100. debugger, you should subtract 100h from each address to get the absolute
  101. addresses; i.e., 0B33 is 0A33 absolute.
  102.  
  103.  
  104. Patches for WS.COM
  105. ==================
  106.  
  107. E6 7F -> E6 FF at: 0B33, 0C80, 14D2, 1687.  (Note: No others!!)
  108. (If you want to alter the Sign On, use INITID on 06BBff).
  109.  
  110.  
  111. Patches for WS.OVR
  112. ==================
  113.  
  114. E6 7F -> E6 FF at: 0F13, 10BC, 11A1, 1CDA, 3478, 41A4, 41C5, 41E5,
  115.                    6F7A, AB2C.
  116.  
  117. F6 80 -> 00 00 at: 3789, 46AA, 4C1A, 4CEA, 4E2C, 7ADE, 85ED, BAB3.
  118.  
  119. At A787 you should change 'A0' to '8E', and at A788 change 'CA' to 'D2.'
  120. This ensures that 8-bit characters are printed on the screen.
  121.  
  122.  
  123. Patches for WSPRINT.OVR
  124. =======================
  125.  
  126. Note: The complete WSPRINT.OVR (148k) is meant!
  127.  
  128. E6 7F -> E6 FF at: 089C, 090D, 093A, 0965, 09B8, 09ED, 0A22, 0AF8,
  129.                    0BD4, 0C33, 0D9D, 0DBE, 0FEB, 1058, 1454, 148B,
  130.                    14A1, 14CF, 1676, 1BAD, 1BE1, 1C48, 1C4B,
  131.                    2783, 2685, 28EA, 2A72, 2C18, 2C77, 
  132.                    3254, 3789, 37BD, 3832, 387A, 3886,
  133.                    4258, 4289, 46E3, 4735, 4755, 4C66, 4CA5,
  134.                    5040, 5203, 5254, 526B, 55E1, 610B, 64C9, 8BD1,
  135.                    95A7, 9759, 9786, 97C3, 9814, 982B, 9B1B, 9C87.
  136.  
  137. Configuring your printer
  138. ========================
  139.  
  140. Finally, you have to alter the printer character codes with WSCHANGE.
  141.  
  142. (I'll assume that you now have a print-out of your printer, and have
  143. compared this with your screen output.)
  144.  
  145.  
  146. Normally, the printer expects 80h for 'C,'  My computer sends 0CEh
  147. instead, so on code 0CEh I have to send 80h to the printer.  The
  148. easiest way to do this is:
  149. load WSCHANGE.COM;            (maybe it's called WINSTALL.COM)
  150.     select  Printer;
  151.         Printer Driver Library;
  152.         Change Printer Driver Data;
  153.         Strings & Tables;
  154.         Compos;
  155.  
  156. you get: 17CD*  3F 00 3F 00 3F 00.......    ?.?.?.etc
  157.  
  158. This is the line with codes 00h-07h. You should not change these, so
  159. type RETURN or ENTER till you reach 18CD*.  Then you have reached the
  160. codes 80h-87h and the cursor stands under 80h.  Type '00' to the end:
  161.  
  162. (char=80    81    82    83    84    85    86    87)
  163. 18CD  43 2C 75 22 65 27 61 5E 61 22 61 60 61 00 63 2C   C,u"e'a^a"a`a.c,
  164. (you) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  165.  
  166.     (=88    89    8A    8B    8C    8D    8E    8F)
  167. 18DD  
  168. you   00 00 09 00 0A 00 00 00 0C 00 0D 00 
  169.  
  170.  ...and from 8Eh on, you put your screen output codes.
  171.  
  172. There are three possibilities:
  173.     1. screen and printer codes are the same;
  174.     2. codes are different;
  175.     3. printer code not available, but can be made from two char.
  176.  
  177. Examples:
  178.     Video    Printer        Compos        character
  179.     =====    =======        ======        =========
  180. ad 1:    9D    9D        (=9Dh:) 9D 00    (Yen)
  181. ad 2:    CE    80        (=CEh:) 80 00     C,
  182. ad 3:    F2    --        (=F2h:) 61 7E     a~ (=a<BS>~)
  183.  
  184. If important characters figure on your screen between 80h-8Dh,
  185. you must configure your computer in such a way that they replace
  186. less important characters.  For example: if you want 'u"' (81h,129d),
  187. but not A9h (169d), then you must alter your video in such a way
  188. that it outputs 'u"' on A9h.  (My computer has an extensive confi-
  189. guration program, both for keyboard and screen.)
  190. Assuming that the printer outputs 'u"' on 81h, you get in Compos:
  191.     (=A9h:) 81 00.
  192.  
  193. So, from 8E onwards you change to the required character; e.g., at 8Eh
  194. you write D5 if that character is sent by the computer:
  195.  
  196.                     (=8E    8F)
  197. you                      D5 00 D7 00
  198.  
  199.     (=90    91    92    93    94    95    96    97)
  200. 18ED 
  201. you   00 00 C9 00 CB 00 BB 00 CC 00 CE 00 B9 00 C8 00
  202.  
  203.  ..and so on.
  204.  
  205. As an example, I gave you some of mine, used for the DeskJet.
  206. '90' cannot be used on my computer, as it gives PrintScreen.
  207.  
  208. *17CD is an example of an address given by WSCHANGE.  It may be different,
  209. such as 1821.  Anyway, you should add 100 to see if you have reached the
  210. right address.  Then you should add 10 for every 8 characters. 
  211. Of course, it's easier to just press RETURN till (begin+100) appears at
  212. the top of your screen, and then do a PrintScreen.  That way, you'll have
  213. a hard copy print-out to compare with the results of the BASIC program as
  214. it displays to your screen.
  215.  
  216. Remark: Some printers, like the CANON LBP8, use different codes for 7-bit
  217. and 8-bit.  So for 7-bit printing, WS has codes with 'CSI' (9Bh).  They
  218. must be changed to ESC '[' (1Bh 5Bh).  This implies changing the number
  219. of characters in the string and, as there is not room enough, changing
  220. the addresses of the strings.  If you are interested in this particular
  221. printer, let me know and I'll send you the patches.  If you want it done
  222. for other printers, I'm prepared to try...but without a printer on which
  223. to test the patches, no guarantees can be given!!
  224. For email: change 'nospam' into 'ks'.
  225.  
  226. G. Doekes, P2000gg, Netherlands
  227. e-mail: d.nospam@net.HCC.nl
  228.  
  229.  
  230.  
  231.  
  232.