home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol167 / comment.doc < prev    next >
Encoding:
Text File  |  1984-04-29  |  10.2 KB  |  191 lines

  1. [COMMENTS.DOC]
  2. [Harold V. McIntosh, 28 January 1984]
  3.  
  4. Submission of the volume containing the listings of REC80 and of REC86
  5. provoked the immediate reaction from the Disk Editor that there seemed
  6. to be a module missing from REC80, and that REC86 would not be accessible
  7. to many people who had the Digital Research ASM86.CMD which is a part of
  8. the CP/M86 package rather than Sorcim's ACT86 which is something of a
  9. necessity for people who have bought Godbout's 8085/8088 board and its
  10. accompanying software.
  11.  
  12. -
  13.  
  14. The "missing module" in REC80 is a package of control subroutines for one
  15. of the video boards with graphics capabilities which were more common a
  16. few years ago than they are now. With an external terminal and programs
  17. which push the limits of memory capacity, the memory mapped 16x64 boards
  18. of other days seem to have been taken out of their chassis and put away
  19. on a shelf somewhere.
  20.  
  21. As it happens REC80 will assemble and run as distributed, although the
  22. message that there are so many missing subroutines can be disconcerting.
  23. If RECLIB is omitted from L80's load list, only one single undefined
  24. symbol will remain, which is easier to ignore; or if the subroutines are
  25. in one's FORLIB and one's L80 searches FORLIB automatically, all will go
  26. well. It might have been prudent to suppress the undefined symbol before
  27. publishing REC, and indeed it was an oversight not to have mentioned it.
  28. RECLIB was included for the benefit of those students of REC who want to
  29. include their own package of subroutines defined in some other language
  30. such as FORTRAN, BASIC, or PL/M. Typical linkages form the substance of
  31. RECLIB.
  32.  
  33. Even though memory mapped video boards may be uncommon, there are many
  34. applications for graphics, and for control and interface programs which
  35. allow their usage. Using the denser memory chips now available, and some
  36. PROM's to replace a bit of the discrete circuitry, we have redone Vector
  37. Graphic's VGR dense graphics board on the STD bus. Thus the programs from
  38. the "missing module" can still be used, albeit with some attention to the
  39. equipment available for their use. Consequently, programs are included in
  40. this volume for four controller boards:
  41.  
  42.         VGR    Vector Graphics dense graphics board
  43.         VB1    Solid State Music VB1-B
  44.         VTI    Polymorphic Video Terminal Interface
  45.         VTI88    Polymorphic with reversed graphics bit
  46.  
  47. The difference between these boards is in the mapping of bits into pixels,
  48. and in the case of VGR, the existence of a grey mode option. The programs
  49. will drive any other board with the same mapping; however that the line
  50. length is a power of two is an inalterable assumption that pervades all the
  51. programs. Two of the programs are written for M80, so that one of them can
  52. be loaded with RECLIB. The others are stand-alone, as long as they have
  53. memory mapped video available. All are capable of executing LIFE, which of
  54. course is more interesting with the greater memory available for VGR.
  55.  
  56. The commands are indicated as subroutine headings in each card, but they
  57. are generally the same for all four versions. The screen as a whole can be
  58. moved, and a cursor can be imagined as moving across the screen. Thus there
  59. are commands to illuminate or extinguish the cursor, the same for the screen
  60. as a whole, and to move either screen or cursor in the compass directions.
  61. In the gray mode, intensity variations are also available. These are the
  62. primitive operations, advanced operations draw lines or fill polygons with
  63. intensity values. Finally, the LIFE cycles are quite complex subroutines.
  64.  
  65. Additionally, we have included the program CARD.REC to show how REC may be
  66. used to generate output for video boards. We have used several variants of
  67. CARD - using the library associated with RECLIB, generating direct output
  68. to a port to which a CalComp or Houston Instruments plotter is connected,
  69. or generating an ASCII character string for plotters which use an RS232-C
  70. interface.
  71.  
  72. We make these programs available for the sake of completeness; someone who
  73. plans to use them will have to have the equipment to run them, and the
  74. knowledge of how to use the equipment and to adapt the programs which are
  75. offered; they do not form a ready-to-run package. Finally, note that RECLIB
  76. and any library functions occupy memory space which is wasted if they are
  77. not going to be used.
  78.  
  79. -
  80.  
  81. The selection of an assembler for the Intel 8086 and its affiliates is not
  82. the clear cut choice that it was for the Intel 8080 and derivatives, and
  83. for the good reason that the 8086 not only offers a greater diversity of
  84. instructions, but that the management of segmentation to go beyond the most
  85. trivial expansion of 64K of memory is a formidable task in itself. This in
  86. turn is made no easier by the opacity of our proprietary operating systems.
  87.  
  88. The first reaction to the request to submit an assembly listing for ASM86
  89. was that it would be an excellent demonstration of the merits of CNVRT.REC
  90. to write a transformation program to do the job. This was accomplished in
  91. an evening and checked out over the weekend. Since each REC listing fills
  92. half a disk, it is tempting to release SORCIM.CNV, which does the job, and
  93. let each interested person make the transformation or not as desired. But,
  94. although much smaller than a complete REC listing, this is hardly a general
  95. purpose program. It incorporates just enough vital information to get about
  96. the job at hand. Even so it seemed to be preferable to make some changes in
  97. the source program to facilitate the transformation. For example, there were
  98. still a few upper case operation codes in a listing that was supposedly lower
  99. case. If these made the transformation program ugly, the difference in the
  100. usage of <jmps> between the assemblers made it impossible. ACT86 will put a
  101. jmps in place of a jmp if such is possible on a backward reference. There
  102. is no way that the programmer can force a long (middle, that is) jump on
  103. the assembler. Since it is possible to force ASM86 (as well as ACT86) to
  104. use a short jump, and the change was needed only in certain places, the
  105. source code just had to be changed.
  106.  
  107. But now we have complicated things too much - distribute some minor changes,
  108. then explain how to run a program to make major changes, and do it all over
  109. again the next time. Thus it is time to place the problem in a general frame
  110. and look for a general solution, especially since changes will always be with
  111. us.
  112.  
  113. Three CNVRT programs, together with a version of CNVRT.REC which has some
  114. handier interactive properties, are included in this volume:
  115.  
  116.         SORCIM.CNV
  117.         FILCOM.CNV
  118.         UPDATE.CNV
  119.  
  120. As indicated, SORCIM is a very particular program, which can be expanded
  121. or modified as circumstances require, to transform a Sorcim ACT86 assembly
  122. program to one acceptable to Digital Research's ASM86. Once the transformed
  123. program exists, we can ask for the differences that actually occurred. For
  124. this, and to compare ASCII programs for other reasons, a file comparison
  125. program is useful. In general it must account for insertions and deletions
  126. as well as simple alterations within a line. For example, ASM86 will not
  127. accept a repeat prefix on a separate line so that SORCIM must occasionally
  128. combine two lines.
  129.  
  130. Programs such as FILCOM are not especially easy to write, particularly in 
  131. a language like CNVRT which does not deal with large buffers and indexed
  132. arrays. The reason is that the history of a change is by no means unique,
  133. and some criterion is necessary to decide when to reestablish synchronism
  134. after encountering a region in which the two files are quite distinct. Our
  135. program is quite large, using all of memory without looking ahead more than
  136. four lines to reestablish synchronism with a single line. Longer insertions,
  137. deletions, or changes must be marked off explicitly in the "new" file. As
  138. it is written, FILCOM will accomodate an arbitrarily long series of changes
  139. as long as they do not unbalance the line count by more than four. To run
  140. FILCOM on a machine with less memory, this number would have to be reduced.
  141.  
  142. Nevertheless, if a difference file is available, a program like UPDATE can
  143. delete and insert the necessary lines for an arbitrarily large file, giving
  144. its new version. Sometimes a file is short enough that the changes can be
  145. incorporated more rapidly with an editor working manually. Automatic update
  146. has the advantage of being less error prone. If human inspection of the
  147. difference file were not contemplated, it could be cut in half, because it
  148. is only necessary to know the line at which a deletion is to be made but not
  149. the actual text to be deleted. It is our present intention to support only
  150. the ACT86 version of REC, so that further updates to the ASM86 version will
  151. need to be generated using SORCIM.
  152.  
  153. With the joint use of FILCOM and UPDATE, it will be possible to circulate
  154. corrections or revisions to programs without having to distribute a com-
  155. plete new listing, for which the process will furthermore be completely
  156. automatic if the necessary editorial marks are included as the programs
  157. are revised.
  158.  
  159. In this spirit, a series of .DIF files is included
  160.  
  161.         PDL80.DIF
  162.         MKV80.DIF
  163.         FXT80.DIF
  164.         REC86.DIF
  165.         PDL86.DIF
  166.         FXT86.DIF
  167.         
  168. which will bring the REC listings up to date. A few errors were detected,
  169. and the changes which allow SORCIM to operate are included. The assignment
  170. of a default of .REC to REC files is the result of popular demand. Some
  171. of these files are quite small, and waste a lot of their record group.
  172. Even so, they should not be combined; UPDATE will use them individually.
  173. Modifying UPDATE to update a chain of files on the basis of a composite
  174. difference file would not be a difficult exercise.
  175.  
  176. If REC86 is updated, SORCIM can be applied to the resultant file to get the
  177. xxx86.A86 version of REC, which is nevertheless included on this disk for
  178. convenience (and checking). Those concerned with individualizing REC86 with
  179. their own memory distribution should start by taking note that ASM86 has
  180. generated far too many segment override prefixes - about 1/2K too many - 
  181. which can be reduced by declaring the segments explicitly and not relying
  182. on CP/M86's 8080 mode too completely.
  183.  
  184. SORCIM has default extensions with which to work, while FILCOM and UPDATE
  185. make use of the generic extensions .ONE and .TWO. These can be changed by
  186. editing the source listings for an application in which the extansions are
  187. fixed and known, otherwise the files must be renamed to comply with these
  188. choices.
  189.  
  190. [end]
  191.