home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / ZCPR33 / A-R / IOPUG.LBR / IOPANAL.SZ / IOPANAL.SI
Text File  |  2000-06-30  |  14KB  |  268 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6. .PN 1
  7. .FO                                4-#
  8. 4. Analysis of a Sample IOP
  9.  
  10.      Thi≤ chapte≥ i≤ ß runninτ commentar∙ oε thσ Samplσ IO╨ whosσ ì
  11. sourcσá codσá i≤á presenteΣ iε Appendi°á B«á  Al∞á commentar∙á i≤ ì
  12. referenceΣá b∙á thσá linσá number≤ giveεá iεá thi≤á sourcσá code«  ì
  13. Sectioεá ▒ oµ Appendi° ┬ shoulΣ bσ examineΣ whilσ readinτ througΦ ì
  14. thi≤ chapter.
  15.  
  16. 4.1. Analysis of the Sample IOP Source
  17.  
  18.      Line≤ ▒ t∩ 3╕ comprisσ thσ fron⌠ oµ thσ IOP«á  Notσ thσ basσ ì
  19. addres≤ oµ thσ IO╨ oε linσ 6¼á thσ jum≡ tablσ oε line≤ 1╢ t∩á 34¼ ì
  20. anΣ thσ IO╨ I─ oε linσ 38«á  Wheε LD╥ load≤ aε IOP¼á i⌠ check≤ t∩ ì
  21. seσá tha⌠á thσá prope≥ numbe≥ oµ jump≤ anΣ tha⌠ thσá IO╨á I─á arσ ì
  22. present.
  23.  
  24. 4.1.1. STATUS, SELECT, and NAMER Routines
  25.  
  26.      Thσá STATUS¼á SELECT¼á anΣ NAME╥ routine≤ arσ iε line≤ 4╣ t∩ ì
  27. 130«á  I⌠ i≤ througΦ thesσ routine≤ tha⌠ thσ externa∞ environmen⌠ ì
  28. determine≤ thσ attribute≤ oµ thσ IO╨ anΣ issue≤ devicσá selectioε ì
  29. commands to the IOP.
  30.      STATU╙áá return≤á thσá addres≤á oµá thσá IO╨á Statu≤áá Tablσ ì
  31. (IOPTABLE)¼ whicΦ i≤ showε iε line≤ 4│ t∩ 47«  Thi≤ tablσ i≤ useΣ ì
  32. t∩á determinσ ho≈ man∙ devicσ driver≤ fo≥ eacΦ logica∞ devicσ arσ ì
  33. availablσ anΣ whicΦ devicσ drive≥ i≤ currentl∙ selected«á  STATU╙ ì
  34. als∩á return≤á ßá valuσ iε A«á  Thσ MS┬ oµ ┴ i≤á se⌠á iµá thσá I╧ ì
  35. Recorde≥á functioεá oµá thσá IO╨ i≤ supported«á  Thσá res⌠á oµá ┴ ì
  36. contain≤á ßá numbe≥á froφá ▒ t∩ 12╖ whicΦá i≤á useΣá b∙á thσá IO╨ ì
  37. implemente≥á t∩ identif∙ thσ IOP«á  Iµ thσ valuσ oµ ┴ i≤ 0¼á theε ì
  38. thσá IO╨ i≤ considereΣ t∩ bσ non-operationa∞ b∙ thσá ZCPR│á tool≤ ì
  39. whicΦá addres≤ thσ IOP«á  Thσ IO╨ numbe≥ i≤ no⌠ useΣ b∙ an∙ ZCPR│ ì
  40. tools except to insure that this value is not zero.
  41.      SELEC╘ i≤ useΣ t∩ assigε ß devicσ drive≥ fo≥ ß giveε logica∞ ì
  42. device«á  Thσ logica∞ devicσ i≤ identifieΣ b∙ thσ ┬ register¼ anΣ ì
  43. thσ desireΣ drive≥ i≤ identifieΣ b∙ thσ ├ register«á  ┬ mus⌠ havσ ì
  44. ß valuσ froφ ░ t∩ │ o≥ aε erro≥ conditioε i≤ returneΣ (seσá line≤ ì
  45. 6╕ t∩ 70)«  B=░ select≤ thσ CO╬ device¼ ▒ thσ RDR¼ ▓ thσ PUN¼ anΣ ì
  46. │ select≤ thσ LS╘ device.
  47.      Line≤á 6╕ t∩ 7╕ arσ useΣ t∩ locatσ thσ bytσ pai≥á associateΣ ì
  48. witΦ ß giveε logica∞ device«  Sincσ IOPTABL┼ consist≤ oµ two-bytσ ì
  49. entries¼ thσ valuσ oµ ┬ (whicΦ i≤ ░ t∩ 3⌐ i≤ doubleΣ (t∩ 0¼ 2¼ 4¼ ì
  50. 6⌐ anΣ useΣ a≤ aε offse⌠ froφ thσ basσ addres≤ oµ IOPTABLE«  Thi≤ ì
  51. locate≤á thσ desireΣ bytσ pair«á  Line≤ 7╡ t∩ 7╕ theε comparσ thσ ì
  52. maximuφ numbe≥ oµ device≤ t∩ thσ requesteΣ device¼á insurinτ tha⌠ ì
  53. thσá requesteΣá devicσ numbe≥ i≤ withiεá range«á  Iµá no⌠á withiε ì
  54. range¼á thσá erro≥á routinσ (SELERR⌐ i≤ brancheΣ to«á  Iµá withiε ì
  55. range¼á thσ pointe≥ i≤ advanceΣ t∩ thσ 2nΣ bytσ oµ thσ bytσá pai≥ ì
  56. (linσ 79)¼ anΣ thσ ne≈ devicσ i≤ selecteΣ b∙ storinτ thσ content≤ ì
  57. oµ ├ int∩ thσ curren⌠ selectioε bytσ (linσ 80).
  58. .cp 2è     NAME╥ i≤ useΣ t∩ returε ß strinτ whicΦ name≤ ß devicσ drive≥ ì
  59. anΣá optionall∙ provide≤ ß description«á  Likσ thσ SELEC╘á input¼ ì
  60. NAME╥á expect≤ ß logica∞ devicσ numbe≥ iε ┬ (░ t∩ 3⌐ anΣ ß devicσ ì
  61. drive≥á numbe≥ iε C«á  Thσ indexinτ anΣ erro≥ checkinτá iεá NAME╥ ì
  62. (seσá line≤á 9╡á t∩ 106⌐ arσ simila≥ t∩ thosσá iεá SELECT«á  Oncσ ì
  63. certaiε tha⌠ ┬ anΣ ├ arσ withiε range¼ NAME╥ theε indexe≤ througΦ ì
  64. two address tables to locate the string.
  65.      Thσá firs⌠ table¼á IOPDNAMES¼á i≤ addresseΣ b∙ thσá codσá iε ì
  66. line≤á 10╖ t∩ 112«á  Thσ tablσ IOPDNAME╙ i≤ iε line≤ 13╢ t∩á 140«  ì
  67. A⌠á linσá 107¼á D┼ contain≤ thσ offse⌠ (0¼á 2¼á 4¼á 6⌐á int∩á thσ ì
  68. IOPDNAME╙á tablσá fo≥á thσá CON¼áá RDR¼á PUN¼á anΣá LS╘á devices¼ ì
  69. respectively«á  Afte≥á linσá 11▓á i≤ executed¼á H╠á contain≤á thσ ì
  70. addres≤ oµ ß tablσ oµ addresse≤ fo≥ thσ string≤ associateΣ witΦ ß ì
  71. particula≥ logica∞ device«á  Iε thi≤ case¼á H╠ contain≤ thσ valuσ ì
  72. of one of these symbols:
  73. .uj 0
  74.  
  75.       CONNAMES       RDRNAMES       PUNNAMES       LSTNAMES
  76. .uj 1
  77.  
  78. See lines 132 to 173 for a review of these tables.
  79.      No≈á tha⌠ thσ addres≤ oµ thσ desireΣ addres≤ tablσ i≤ known¼ ì
  80. thσá codσá indexe≤á int∩ thi≤ tablσ baseΣ oεá thσá devicσá drive≥ ì
  81. identifieΣ iε thσ ├ register«  Line≤ 11│ t∩ 12▒ d∩ thi≤ indexing«  ì
  82. Likσ thσ codσ iε line≤ 9╢ t∩ 112¼á thσ techniquσ oµ doublinτá thσ ì
  83. inde°á valuσ (iε thσ ├ registe≥ a⌠ linσ 113⌐ anΣ theε addinτ thi≤ ì
  84. t∩á HL¼á whicΦá contain≤ thσ basσ addres≤ oµ thσá strinτá addres≤ ì
  85. tablσ fo≥ ß particula≥ logica∞ device¼á i≤ applied«á  Afte≥á linσ ì
  86. 11╖á i≤ executed¼á H╠ contain≤ thσ addres≤ oµ thσ addres≤ oµá thσ ì
  87. desireΣá string«á  Line≤á 11╕ t∩ 12▒ simpl∙ extrac⌠ thσá string'≤ ì
  88. addres≤ anΣ returε i⌠ iε HL.
  89.      Notσ that¼á fo≥ thσ sakσ oµ debugging¼á thσ NAMERRO╥ routinσ ì
  90. no⌠ onl∙ return≤ thσ erro≥ codσ (A=░ anΣ Zer∩ Flaτ Set)¼á bu⌠á i⌠ ì
  91. also returns the address of an Error Message in HL.
  92.      Thσ string≤ iε line≤ 16▒ t∩ 17▓ providσ name≤ t∩ thσ variou≤ ì
  93. devices«  Notσ tha⌠ wheε n∩ description≤ arσ provideΣ (line≤ 161¼ ì
  94. 162¼ 167¼ 169¼ 171¼ anΣ 172)¼ thσ name≤ arσ terminateΣ b∙ ß spacσ ì
  95. followeΣ b∙ aε endinτ ░ (thσ strinτ terminator)«á  Als∩ notσ tha⌠ ì
  96. thσ name≤ arσ capitalized.
  97.  
  98. 4.1.2. Initialization and Device Drivers
  99.  
  100.      Thσá INI╘á routinσá iε line≤ 17┤ t∩ 18▒ i≤á simplσá iεá thi≤ ì
  101. example«  I⌠ turn≤ ofµ thσ I╧ Recorde≥ flags«  Iε ß differen⌠ IO╨ ì
  102. implementation¼áá withiεá thσá INI╘á routinσá woulΣá bσá codσá t∩ ì
  103. configurσá thσ UART╙ (╖ o≥ ╕ bits¼á parit∙ o≥á none¼á bauΣá rate¼ ì
  104. etc).
  105.      Line≤ 19▓ t∩ 23▒ sho≈ thσ fou≥ basiπ routine≤ fo≥á providinτ ì
  106. I/╧ t∩ thσ CR╘ hardware«  Notσ tha⌠ the≤e example≤ show thσ CRT'≤ ì
  107. UAR╘á a≤á beinτ memor∙ mappeΣ (LD┴ anΣ ST┴ instruction≤ arσá useΣ ì
  108. insteaΣá oµá I╬á anΣ OUT)¼á anΣ thσ datß anΣá statu≤á value≤á arσ ì
  109. inverteΣ (notσ thσ CM┴ instruction≤ iε line≤ 203¼á 211¼á 221¼ anΣ ì
  110. 229)«á  Thσ value≤ returneΣ anΣ thσ registe≥ convention≤ useΣ arσ ì
  111. compatiblσá witΦ thosσ requireΣ fo≥ thσ BIO╙ routine≤ likσá CONI╬ ì
  112. and CONOUT (ie, passing output character in the C register).
  113.      Line≤á 23┤ t∩ 27╡ sho≈ thσ fou≥ basiπ routine≤ fo≥ providinτ ì
  114. I/╧ t∩ thσ modeφ hardware«á  Thesσ example≤ sho≈ thσ modem'≤ UAR╘ ì
  115. a≤ beinτ I/╧ mappeΣ (I╬ anΣ OU╘ arσ used)«á  Similarly¼ line≤ 27╕ ìèt∩á 31▓á sho≈ thσ fou≥ basiπ routine≤ fo≥ providinτá I/╧á t∩á thσ ì
  116. printer hardware.
  117.  
  118. 4.1.3. BIOS Interface Routines
  119.  
  120.      Line≤á 31┤ t∩ 37╡ contaiε thσ routine≤ entereΣ froφ thσ jum≡ ì
  121. tablσá whicΦá arσ indexeΣ int∩á froφá thσá BIOS«á  Namely¼á thesσ ì
  122. routines (lines 317 to 345) are:
  123. .uj 0
  124.  
  125.     CONST     CONIN     CONOUT    LIST      PUNCH     READER
  126.     LISTST
  127. .uj 1
  128.  
  129.      Iε al∞ cases¼á thσ inpu⌠ anΣ statu≤ routine≤ (CONST¼á CONIN¼ ì
  130. READER¼ LISTST⌐ returε thei≥ value≤ iε thσ ┴ registe≥ anΣ requirσ ì
  131. n∩ inpu⌠ values¼á anΣ thσ outpu⌠ routine≤ (CONOUT¼á LIST¼á PUNCH⌐ ì
  132. obtaiεá thσ value≤ t∩ outpu⌠ froφ thσ ├ register«á  Consequently¼ ì
  133. sincσ ├ carrie≤ thσ onl∙ inpu⌠ value¼á thσ samσ codσ (DRVRUN⌐ caε ì
  134. bσ useΣ t∩ proces≤ al∞ oµ thσ BIO╙ entr∙ routine≤ iµ DRVRU╬á doe≤ ì
  135. not have an effect on the C register.
  136.      Thσ routine≤ arσ table-driven«á  DRVRU╬ accept≤ a≤ inpu⌠ thσ ì
  137. addres≤á oµ thσ tablσ fo≥ thσ logica∞ devicσ iε H╠ anΣ thσ numbe≥ ì
  138. oµ thσ logica∞ devicσ iε ┬ (a≤ fo≥ thσ SELEC╘ anΣ NAME╥ routines¼ ì
  139. ┬ contain≤ ß valuσ froφ ░ t∩ 3)«á  DRVRU╬ use≤ thσ valuσ iε ┬á t∩ ì
  140. obtaiεá thσá numbe≥ oµ thσ currently-selecteΣ devicσ drive≥á froφ ì
  141. thσ IOPTABL┼ (seσ line≤ 35╢ t∩ 363)«  Afte≥ linσ 36│ i≤ executed¼ ì
  142. ┬ contain≤ thσ numbe≥ oµ thσ desireΣ devicσ driver«  Line≤ 36┤ t∩ ì
  143. 36╖á theε doublσ thi≤ numbe≥ (iε orde≥ t∩ usσ i⌠ a≤á aεá offset)¼ ì
  144. anΣ placσ i⌠ int∩ DE«  Linσ 36╕ obtain≤ thσ addres≤ oµ thσ devicσ ì
  145. driver address table.
  146.      Afte≥ linσ 36╕ i≤ executed¼á H╠ contain≤ thσ address oµ onσ oµ ì
  147. the following tables:
  148. .uj 0
  149.  
  150.     TCONST    TCONIN    TCONOUT   TLIST     TREADER   TPUNCH
  151.     TLISTST
  152. .uj 1
  153.  
  154. D┼á contain≤á thσ offse⌠ int∩ thσ tablσ pointeΣ t∩ b∙á H╠á which¼ ì
  155. wheε addeΣ t∩ H╠ (linσ 369)¼á provide≤ thσ addres≤ oµ thσ addres≤ ì
  156. oµ thσ devicσ driver«  Line≤ 37░ t∩ 37│ obtaiε thσ addres≤ oµ thσ ì
  157. devicσ drive≥ iε HL¼ anΣ linσ 37┤ (PCHL⌐ transfer≤ contro∞ t∩ thσ ì
  158. device driver.
  159.      Note the device driver tables in lines 376 to 416.
  160.  
  161. 4.1.4. IO Recorder
  162.  
  163.      Thσá I╧ Recorde≥ functioε i≤ addresseΣ iε thσ BIO╙ Interfacσ ì
  164. Routines«á  Notσá thσ cal∞ t∩ CRECOR─ iε linσ 32╢ anΣ LRECOR─á iε ì
  165. linσá 331«á  Thσ codσ oµ CRECOR─ anΣ LRECOR─ i≤ iε line≤á 44│á t∩ ì
  166. 454«á  Notσ that¼á iε thi≤ particula≥ implementation¼ CRECOR─ anΣ ì
  167. LRECOR─á simpl∙á senΣ thσ characte≥ t∩ bσ outpu⌠ t∩ thσ Modeφá iµ ì
  168. thσ CRE├ anΣ LRE├ flags¼á respectively¼á arσ set«á  Remembe≥á thσ ì
  169. initializatioε routine¼á INIT¼ iε line≤ 17╖ t∩ 181┐  Al∞ INI╘ diΣ ì
  170. wa≤ clea≥ thesσ flag≤ s∩ thσ IO╨ woulΣ no⌠ comσ u≡ witΦ recordinτ ì
  171. on.
  172.      Iεá thi≤á implementation¼á thσ I╧ Recorde≥á serve≤á t∩á senΣ ì
  173. outpu⌠á t∩á thσ Modeφ a≤ wel∞ a≤ t∩ thσ selecteΣ CONOU╘á o≥á LIS╘ ì
  174. device«  Iε operation¼ thσ use≥ i≤ expecteΣ t∩ havσ ruε ß prograφ ìèoεá thσá compute≥ a⌠ thσ othe≥ enΣ oµ thσ Modeφ connectioεá whicΦ ì
  175. receive≤á characters¼á send≤ ß ^╙ wheε it≤ buffe≥ i≤á ful∞á (notσ ì
  176. tha⌠ MODOU╘ iε line≤ 26│ t∩ 27╡ pay≤ attentioε t∩ ^S)¼ write≤ it≤ ì
  177. buffe≥á t∩á disk¼á anΣá theε send≤ somσ othe≥ characte≥á (^Q⌐á t∩ ì
  178. resumσ transmissioε througΦ thσ MODOU╘ driver«  Thσ ZCPR│ commanΣ ì
  179. linσá "RECOR─á ONó call≤ thσ COPE╬ routinσ (line≤á 46░á t∩á 463)¼ ì
  180. whicΦá simpl∙ set≤ thσ CRE├ flaτ t∩ true«á  Likewise¼á "RECOR─ O╬ ì
  181. PRINTERóá call≤ thσ LOPE╬ routinσ (line≤ 47░á t∩á 473)«á  "RECOR─ ì
  182. OFFó call≤ thσ CCLOS┼ routinσ (line≤ 46┤ t∩ 469⌐ whicΦ clear≤ thσ ì
  183. CRE├á flaτá anΣ send≤ ß ^┌ t∩ thσ modeφ (whicΦ tell≤ thσá prograφ ì
  184. runninτ therσ t∩ closσ it≤ filσ anΣ exit)«á  Likewisσ fo≥á LCLOS┼ ì
  185. (lines 474 to 479).
  186.      Iεá lookinτá back¼á ╔ realizσ tha⌠ MODOU╘ shoulΣá havσá als∩ ì
  187. checkeΣá fo≥ thσ outpu⌠ oµ ^┌ anΣ no⌠ alloweΣ i⌠ s∩ thσá recorde≥ ì
  188. oεá thσá compute≥á tieΣá t∩á thσá modeφá woulΣá no⌠á accidentall∙ ì
  189. terminatσ operation«  Sligh⌠ oversight.
  190.  
  191. 4.1.5. Hardware Combinations
  192.  
  193.      Thσá simplσ devicσ driver≤ iε line≤ 19▓ t∩ 31│ caε bσ easil∙ ì
  194. combineΣ int∩ "hybridó devices«  Thσ routine≤ iε line≤ 41╖ t∩ 43╣ ì
  195. sho≈ sucΦ devices«á  CRTMODIS╘ return≤ thσ inpu⌠ statu≤ froφá thσ ì
  196. CR╘á anΣá Modeφá iε parallel«á  I⌠ indicate≤ iµá ßá characte≥á i≤ ì
  197. pendinτ oε eithe≥ device«  CRTMODI╬ input≤ ß characte≥ froφ ß CR╘ ì
  198. anΣá Modeφ combination¼á wherσ thσ characte≥ inpu⌠ come≤ froφ thσ ì
  199. CR╘á o≥á thσá Modem¼áá whicheve≥á receive≤á ßá characte≥áá first«  ì
  200. CRTMODOU╘ output≤ t∩ thσ CR╘ anΣ Modeφ iε paralle∞ (notσ tha⌠ thσ ì
  201. ├á registe≥á contain≤á thσ characte≥ t∩ output¼á anΣá CRTOU╘á anΣ ì
  202. MODOU╘á d∩á no⌠ affec⌠ thσ ├ registe≥ iε line≤ 225-23▒á anΣá 263-ì
  203. 275)«  CRTPRTOU╘ i≤ simila≥ t∩ CRTMODOUT.
  204.      Thesσá combination≤á oµá device≤ arσá declareΣá t∩á thσá IO╨ ì
  205. througΦá thσ devicσ drive≥ table≤ (line≤ 37╢ t∩ 415)«á  Notσ tha⌠ ì
  206. thσá thirΣá consolσá (selecteΣá drive≥ i≤á 2⌐á i≤á identifieΣá b∙ ì
  207. CRTMODIS╘á (linσ 382⌐ fo≥ inpu⌠ status¼á CRTMODI╬ (linσ 390⌐á fo≥ ì
  208. input¼á anΣ CRTMODOU╘ (linσ 398⌐ fo≥ output«  Thi≤ i≤ thσ CR╘ anΣ ì
  209. Modeφ iε paralle∞ fo≥ botΦ inpu⌠ anΣ output«á  Iεá contrast¼á thσ ì
  210. fourtΦá consolσ (selecteΣ drive≥ i≤ 3⌐ i≤ identifieΣ b∙á CRTISTA╘ ì
  211. (linσá 383⌐á fo≥ inpu⌠ status¼á CRTI╬ (linσ 391⌐ fo≥á input¼á anΣ ì
  212. CRTPRTOU╘ (linσ 399⌐ fo≥ output«á  Thi≤ i≤ thσ CR╘ inpu⌠ witΦ CR╘ ì
  213. and printer output.
  214.  
  215. 4.1.6. IOP Patching
  216.  
  217.      Thσá PATC╚ routinσ i≤ thσ las⌠ t∩ bσ discussed«á  I⌠á i≤á iε ì
  218. line≤á 48┤ t∩ 500«á  Notσ tha⌠ it≤ solσ purposσ i≤ t∩ changσá thσ ì
  219. addresse≤á fo≥á thσ fiftΦ consolσ (selecteΣ drive≥á i≤á 4)«á  Thσ ì
  220. addresse≤ fo≥ PATISTAT¼á PATIN¼ anΣ PATOU╘ arσ iε line≤ 384¼ 392¼ ì
  221. and 400, respectively.
  222.      PATC╚áá i≤á extremel∙á usefu∞á iεá debugginτá candidatσá IO╨ ì
  223. routines«  Thσ consolσ caε selec⌠ thσ TES╘ devicσ (viß thσ SELEC╘ ì
  224. routine)¼á thσ tes⌠ caε bσ done¼á anΣ theε thσ consolσ caε selec⌠ ì
  225. some other console device to restore order.
  226. .paè4.1.7. Adding Device Drivers
  227.  
  228.      Thσá samplσá IO╨ caε bσ easil∙ modifieΣ t∩á adΣá anΣá removσ ì
  229. devicσá drivers«á  Thσ codσ fo≥ thσ devicσ drive≥ itselµ mus⌠á bσ ì
  230. added¼ anΣ thσ followinτ change≤ mus⌠ bσ made:
  231. .uj 0
  232.  
  233.       1. modify the number of devices in IOPTABLE (lines 43-47)
  234.       2« modify thσ strinτ addres≤ table≤ (line≤ 145-157)
  235.       3. modify the strings (lines 161-172)
  236.       4. modify the device driver tables (lines 376-415):
  237.               Console - Change TCONST, TCONIN, TCONOUT
  238.               Reader  - Change TREADER
  239.               Punch   - Change TPUNCH
  240.               List    - Change TLIST, TLISTST
  241. .uj 1
  242.  
  243. 4.2. Terminal Session
  244.  
  245.      Thσá termina∞ sessioε iε sectioε ▓ oµ Appendi° ┬á show≤á ho≈ ì
  246. thσá IO╨á whicΦ wa≤ analyzeΣ abovσ i≤ assembleΣ anΣ prepareΣá fo≥ ì
  247. usσá oε ß ZCPR│ system«á  Thσ command≤ arσ discusseΣ iε orde≥á iε ì
  248. the following paragraphs.
  249.      Thσá commanΣá "lasφá samiop.bbzóá assemble≤á SAMIOP.AS═á anΣ ì
  250. generate≤ SAMIOP.HE╪ oε drivσ B«  Thσ commanΣ "mloaΣ samiopó theε ì
  251. creates SAMIOP.COM from SAMIOP.HEX (the assembler output).
  252.      SAMIOP.CO═á i≤á no⌠ ß truσ CO═ file«á  I⌠ i≤ ORGeΣá a⌠á somσ ì
  253. valuσ othe≥ thaε 100╚ (seσ line≤ 6-1▒ iε thσ Samplσ IO╨ listing)«  ì
  254. Thσá commanΣ "reε sample.iop=samiop.comó create≤ thσ desireΣá IO╨ ì
  255. file, with the file type of IOP.
  256.      SAMPLE.IO╨á i≤ theε loadeΣ int∩ thσ IO╨ buffe≥ (anΣá checkeΣ ì
  257. fo≥á validit∙ beforσ thσ load⌐ b∙ thσ commanΣá "ld≥á sample.iop"«  ì
  258. The IOP is now active (the INIT routine was called by LDR).
  259.      Thσá commanΣá "de÷ Σ aó display≤ al∞á devices«á  Thσá devicσ ì
  260. names and any descriptive comments are clearly displayed.
  261.      Thσá commanΣá "de÷ π testó select≤ thσ devicσ nameΣ TES╘á a≤ ì
  262. thσ CONsolσ device«á  Iε SAMPLE.IOP¼ TES╘ i≤ thσ devicσ whicΦ caε ì
  263. bσ patcheΣ b∙ PATCH¼ anΣ i⌠ default≤ t∩ thσ CR╘ (whicΦ i≤ wh∙ thσ ì
  264. systeφ i≤ stil∞ running)«á  Thσ commanΣ whicΦ follows¼ "de÷ Σ c"¼ ì
  265. displays the console device names and current selection.
  266.      Finally¼á "de÷ π crtó reassign≤ thσ devicσ nameΣ CR╘ t∩á thσ ì
  267. CONsole.
  268.