home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / palsum7 / prodcder.pds < prev    next >
Text File  |  1988-02-04  |  19KB  |  563 lines

  1. TITLE QIC-02 COMMAND DECODER
  2. PATTERN
  3. REVISION     B    
  4. AUTHOR         KEN WON
  5. COMPANY        MMI
  6. DATE        JANUARY 19, 1987
  7.  
  8. CHIP    QIC02_CMD_DEC      PMS14R21
  9.  
  10. CLK DCLK /ONLINE  /REQUEST /CC0 /CC1 /CC2 /CC3 STATUS EWH SDI GND
  11. PRESET SDO CD3 CD2 CD1 CD0 INITIALIZE ERASE DRSELD READY MODE VCC
  12.  
  13. STATE
  14. MOORE_MACHINE
  15. MASTER_RESET
  16. DEFAULT_BRANCH HOLD_STATE
  17. POWER_UP  :=VCC->INIT
  18.  
  19. ;****** DRIVE SELECTION ******
  20. INIT        := REQ        -> DRVSELDA    ;IF /REQUEST IS TRUE, CHECK FOR DRIVE SELECTION        
  21.                    +-> INIT        ;OTHERWISE GOTO INIT
  22. DRVSELDA    := COND0    -> DRVSELDB
  23.                    +-> INIT    
  24. DRVSELDB    := COND1    -> INIT        
  25.                    +-> DRVSELDC
  26. DRVSELDC    := COND2    -> INIT
  27.                    +-> DRVSELDD
  28. DRVSELDD    := COND3    -> INIT
  29.                    +-> DRVSELDE    ;DRIVE IS SELECTED
  30. DRVSELDE    := REQ        -> DRVSELDE     ;WAIT FOR REQUEST TO BE DEACTIVATED     
  31.                    +-> DRVSELDF    ;THEN GOTO DRVSELDF
  32. DRVSELDF    := VCC        -> DRVSELD    ;DRIVE SELECTION COMPLETE
  33. INIT.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*/DRSELD
  34. DRVSELDA.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*/DRSELD
  35. DRVSELDB.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*/DRSELD
  36. DRVSELDC.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*/DRSELD
  37. DRVSELDD.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*/DRSELD
  38. DRVSELDE.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*/DRSELD
  39. DRVSELDF.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*/DRSELD
  40. DRVSELD.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  41.  
  42. ;****** COMMAND DECODING ******
  43. DRVSELD        := REQ        -> CMDDECA    ;IF /REQUEST IS TRUE, DECODE COMMAND
  44.                    +-> DRVSELD    ;OTHERWISE GOTO DRVSELD
  45. CMDDECA        := COND3    -> RDWRCMD    ;IF CC3 IS TRUE, GOTO READ/WRITE DECODING
  46.                    +-> CMDDECB    ;OTHERWISE CONTINUE COMMAND DECODING
  47. RDWRCMD        := COND2        -> RDWRCMDA    ;IF CC2 IS TRUE, GOTO READ/WRITE DECODING
  48.                    +-> CMDERR    ;OTHERWISE GOTO CMDERR
  49. RDWRCMDA    := COND1    -> FMCMD    ;IF CC1 IS TRUE, COMMAND IS A FILE MARK COMMAND
  50.                    +-> RDWRCMDB    ;OTHERWISE IT IS A READ OR WRITE COMMAND
  51. RDWRCMDB    := COND0    -> RDCMD    ;IF CC0 IS TRUE, COMMAND IS READ
  52.                    +-> WRCMD    ;OTHERWISE COMMAND IS WRITE
  53. FMCMD        := COND0    -> WFMCMD    ;IF CC0 IS TRUE, COMMAND IS WRITE FILE MARK
  54.                    +-> RFMCMD    ;OTHERWISE COMMAND IS READ FILE MARK
  55. CMDDECB        := COND2    -> CMDDECC    ;IF CC2 IS TRUE, CONTINUE COMMAND DECODING
  56.                    +-> DESELDA    ;OTHERWISE CHECK FOR DESELECTING DRIVE
  57. CMDDECC     := COND1    -> CMDDECD    ;CONTINUE DECODING COMMAND
  58.                    +-> CMDDECE    ;CONTINUE DECODING COMMAND
  59. CMDDECD        := COND0      -> INITCMD    ;IF CC0 IS TRUE, COMMAND IS INITIALIZE
  60.                    +-> ERASECMD    ;OTHERWISE COMMAND IS ERASE
  61. CMDDECE        := COND0    -> BOTCMD    ;IF CC0 IS TRUE, COMMAND IS BOT
  62.                    +-> RDSTSCMD    ;OTHERWISE COMMAND IS READ STATUS
  63. CMDDECA.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  64. CMDDECB.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  65. CMDDECC.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  66. CMDDECD.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  67. CMDDECE.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  68. RDWRCMD.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  69. RDWRCMDA.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  70. RDWRCMDB.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  71. FMCMD.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  72.                       
  73. ;****** DESELECT DRIVE ******
  74. DESELDA        := COND1    -> DESELDB    ;CONTINUE CHECKING FOR DESELCT COMMAND
  75.                    +-> DESELDC    ;OTHERWISE GOTO DESELDA
  76. DESELDB        := COND0    -> CMDERR    ;IF CC0 IS TRUE, COMMAND IS INVALID
  77.                    +-> DESELDD    ;OTHERWISE DESELECT DRIVE
  78. DESELDC        := COND0    -> DRVSELDE    ;IF CC0 IS TRUE, GOTO DRIVE SELECTION
  79.                    +-> CMDERR    ;OTHERWISE COMMAND IS INVALID
  80. DESELDD        := REQ        -> DESELDD    ;WAIT FOR REQUEST TO BE DEACTIVATED
  81.                    +-> DESELDE    ;THEN GOTO DESELDE
  82. DESELDE        := VCC        -> INIT        ;GOTO DRIVE SELECTION              
  83. DESELDA.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  84. DESELDB.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  85. DESELDC.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  86. DESELDD.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  87. DESELDE.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  88.  
  89. ;****** INVALID COMMAND ******
  90. CMDERR        := REQ        -> CMDERR    ;WAIT FOR REQUEST TO BE DEACTIVATED
  91.                    +-> CMDERRA    ;THEN OUTPUT INVALID COMMAND CODE
  92. CMDERRA        := VCC      -> CMDERRB    ;OUTPUT INVALID COMMAND CODE
  93. CMDERRB        := VCC        -> CMDERRC    ;NEGATE CODE
  94. CMDERRC        := VCC            -> DRVSELD    ;GOTO COMMAND DECODING    
  95. CMDERR.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  96. CMDERRA.OUTF    := READY*CD3*CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  97. CMDERRB.OUTF    := READY*CD3*CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  98. CMDERRC.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  99.  
  100. ;****** BOT COMMAND ******
  101. BOTCMD        := REQ        -> BOTCMD    ;WAIT FOR REQUEST TO BE DEACTIVATED
  102.                    +-> BOTCMDA    ;THEN OUTPUT REWIND COMMAND CODE
  103. BOTCMDA        := STS        -> BOTCMP    ;WHEN STS IS TRUE, NEGATE OUTPUT CODE
  104. BOTCMP        := VCC        -> DRVSELD    ;GOTO DRVSELD                             
  105. BOTCMD.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  106. BOTCMDA.OUTF    := READY*CD3*CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD     
  107. BOTCMP.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  108.  
  109. ;****** INITIALIZE COMMAND ******
  110. INITCMD        := REQ        -> INITCMD    ;WAIT FOR REQUEST TO BE DEACTIVATED
  111.                    +-> INITCMDA    ;THEN OUTPUT REWIND COMMAND CODE AND ASSERT INITIALIZE
  112. INITCMDA    := STS        -> INITCMDB    ;WHEN STS IS TRUE, NEGATE COMMAND CODE
  113. INITCMDB    := VCC        -> INITCMDC    ;ASSERT FFWD COMMAND CODE
  114. INITCMDC    := STS        -> INITCMDD    ;WHEN STS IS TRUE, NEGATE COMMAND CODE
  115. INITCMDD    := VCC        -> INITCMDE    ;ASSERT REWIND COMMAND CODE
  116. INITCMDE    := STS        -> INITCMP    ;WHEN STS IS TRUE, NEGATE COMMAND CODE AND NEGATE INITIALIZE
  117. INITCMP        := VCC        -> DRVSELD    
  118. INITCMD.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  119. INITCMDA.OUTF    := READY*CD3*CD2*/CD1*CD0*/ERASE*INITIALIZE*DRSELD
  120. INITCMDB.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*INITIALIZE*DRSELD
  121. INITCMDC.OUTF    := READY*CD3*CD2*/CD1*/CD0*/ERASE*INITIALIZE*DRSELD
  122. INITCMDD.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*INITIALIZE*DRSELD
  123. INITCMDE.OUTF    := READY*CD3*CD2*/CD1*CD0*/ERASE*INITIALIZE*DRSELD
  124. INITCMP.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD    
  125.  
  126. ;****** ERASE COMMAND ******
  127. ERASECMD    := REQ        -> ERASECMD    ;WAIT FOR /REQUEST TO BE DEACTIVATED
  128.                    +-> ERASECMDA      ;THEN OUTPUT REWIND COMMAND CODE
  129. ERASECMDA    := STS        -> ERASECMDB    ;WHEN STS IS TRUE, NEGATE COMMAND CODE
  130. ERASECMDB    := VCC        -> ERASECMDC    ;ASSERT ERASE AND INITIALIZE
  131. ERASECMDC    := STS        -> ERASECMDD    ;WHEN STS IS TRUE, NEGATE ERASE AND INITIALIZE
  132. ERASECMDD    := VCC        -> ERASECMDE    ;OUTPUT REWIND COMMAND CODE
  133. ERASECMDE    := STS        -> ERASECMDF    ;WHEN STS IS TRUE, NEGATE COMMAND CODE
  134. ERASECMDF    := VCC        -> DRVSELD    ;GOTO DRVSELD
  135. ERASECMD.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  136. ERASECMDA.OUTF    := READY*CD3*CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  137. ERASECMDB.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  138. ERASECMDC.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*ERASE*INITIALIZE*DRSELD
  139. ERASECMDD.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  140. ERASECMDE.OUTF    := READY*CD3*CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  141. ERASECMDF.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  142.  
  143. ;****** READ STATUS COMMAND ******
  144. RDSTSCMD    := REQ        -> RDSTSCMD    ;WAIT FOR REQUEST TO BE DEACTIVATED
  145.                    +-> RDSTSAA    ;THEN NEGATE READY
  146. RDSTSAA        := VCC        -> RDSTSA    ;ENABLE STATUS BYTE 0
  147. RDSTSA        := VCC        -> RDSTSB    ;ASSERT READY
  148. RDSTSB        := REQ        -> RDSTSC    ;WHEN REQUEST IS ACTIVATED, NEGATE READY
  149. RDSTSC        := REQ        -> RDSTSC    ;WAIT FOR REQUEST TO BE DEACTIVATED
  150.                    +-> RDSTSD    ;THEN ENABLE STATUS BYTE 1
  151. RDSTSD        := VCC        -> RDSTSE    ;ASSERT READY
  152. RDSTSE        := REQ        -> RDSTSF    ;WHEN REQUEST IS ACTIVATED, NEGATE READY
  153. RDSTSF        := REQ        -> RDSTSF    ;WAIT FOR REQUEST TO BE DEACTIVATED
  154.                    +-> RDSTSG    ;THEN ENABLE STATUS BYTE 2
  155. RDSTSG        := VCC        -> RDSTSH    ;ASSERT READY
  156. RDSTSH        := REQ        -> RDSTSI    ;WHEN REQUEST IS ACTIVATED, NEGATE READY
  157. RDSTSI        := REQ        -> RDSTSI    ;WAIT FOR REQUEST TO BE DEACTIVATED
  158.                    +-> RDSTSJ    ;THEN ENABLE STATUS BYTE 3
  159. RDSTSJ        := VCC        -> RDSTSK    ;ASSERT READY
  160. RDSTSK        := REQ        -> RDSTSL    ;WHEN REQUEST IS ACTIVATED, NEGATE READY
  161. RDSTSL        := REQ        -> RDSTSL    ;WAIT FOR REQUEST TO BE DEACTIVATED
  162.                    +-> RDSTSM    ;THEN ENABLE STATUS BYTE 4
  163. RDSTSM        := VCC        -> RDSTSN    ;ASSERT READY
  164. RDSTSN        := REQ        -> RDSTSO    ;WHEN REQUEST IS ACTIVATED, NEGATE READY
  165. RDSTSO        := REQ        -> RDSTSO    ;WAIT FOR REQUEST TO BE DEACTIVATED
  166.                    +-> RDSTSP    ;THEN ENABLE STATUS BYTE 5
  167. RDSTSP        := VCC        -> RDSTSQ    ;ASSERT READY
  168. RDSTSQ        := REQ        -> RDSTSR    ;WHEN REQUEST IS ACTIVATED, NEGATE READY AND COMMAND CODE
  169. RDSTSR        := REQ        -> RDSTSR    ;WAIT FOR REQUEST TO BE DEACTIVATED
  170.                    +-> DRVSELD    ;THEN GOTO DRVSELD
  171. RDSTSCMD.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  172. RDSTSAA.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  173. RDSTSA.OUTF    := READY*/CD3*/CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  174. RDSTSB.OUTF    := /READY*/CD3*/CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  175. RDSTSC.OUTF    := READY*/CD3*/CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  176. RDSTSD.OUTF    := READY*/CD3*/CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  177. RDSTSE.OUTF    := /READY*/CD3*/CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  178. RDSTSF.OUTF    := READY*/CD3*/CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  179. RDSTSG.OUTF    := READY*/CD3*/CD2*CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  180. RDSTSH.OUTF    := /READY*/CD3*/CD2*CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  181. RDSTSI.OUTF    := READY*/CD3*/CD2*CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  182. RDSTSJ.OUTF    := READY*/CD3*CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  183. RDSTSK.OUTF    := /READY*/CD3*CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  184. RDSTSL.OUTF    := READY*/CD3*CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  185. RDSTSM.OUTF    := READY*/CD3*CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  186. RDSTSN.OUTF    := /READY*/CD3*CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  187. RDSTSO.OUTF    := READY*/CD3*CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  188. RDSTSP.OUTF    := READY*/CD3*CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  189. RDSTSQ.OUTF    := /READY*/CD3*CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  190. RDSTSR.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  191.  
  192. ;****** WRITE FILE MARK COMMAND ******
  193. WFMCMD        := REQ        -> WFMCMD    ;WHEN REQUEST IS DEACTIVATED, NEGATE READY AND COMMAND CODE
  194.                    +-> WFMCMDA    ;OTHERWISE GOTO WFMCMDA
  195. WFMCMDA        := VCC        -> WFMCMDB    ;OUTPUT WFM COMMAND CODE
  196. WFMCMDB        := STS        -> WFMCMDC    ;WHEN STS IS ACTIVATED, NEGATE COMMAND CODE 
  197. WFMCMDC        := VCC        -> DRVSELD    ;GOTO DRVSELD
  198. WFMCMD.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  199. WFMCMDA.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  200. WFMCMDB.OUTF    := READY*CD3*/CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  201. WFMCMDC.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  202.  
  203. ;****** READ FILE MARK COMMAND ******
  204. RFMCMD        := REQ        -> RFMCMD    ;WHEN REQUEST IS DEACTIVATED, NEGATE READY AND COMMAND CODE
  205.                    +-> RFMCMDA    ;OTHERWISE GOTO RFMCMDA
  206. RFMCMDA        := VCC        -> RFMCMDB    ;OUTPUT RFM COMMAND CODE
  207. RFMCMDB        := STS        -> RFMCMDC    ;WHEN STS IS TRUE, NEGATE COMMAND CODE
  208. RFMCMDC        := VCC        -> DRVSELD    ;GOTO DRVSELD
  209. RFMCMD.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  210. RFMCMDA.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  211. RFMCMDB.OUTF    := READY*CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  212. RFMCMDC.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  213.  
  214. ;****** READ COMMAND ******
  215. RDCMD        := REQ        -> RDCMD    ;WHEN REQUEST IS DEACTIVATED, NEGATE READY
  216.                    +-> RDCMDA    ;OTHERWISE GOTO RDCMD    
  217. RDCMDA        := ONLN        -> RDCMDB    ;IF ONLINEB IS TRUE, OUTPUT READ COMMAND CODE
  218.                    +-> CMDERRA    ;IF ONLINEB IS FALSE, OUTPUT INVALID COMMAND CODE
  219. RDCMDB        := STS        -> RDCMDC    ;IF FILE MARK IS FOUND, NEGATE COMMAND CODE
  220.                    +-> RDCMDD    ;OTHERWISE GOTO RDCMDD
  221. RDCMDD        := ONLN        -> RDCMDE    ;IF ONLINE IS TRUE, GOTO RDCMDE
  222.                    +-> RDCMDF    ;OTHERWISE NEGATE COMMAND CODE
  223. RDCMDF        := VCC        -> RDCMDG    ;OUTPUT REWIND COMMAND CODE
  224. RDCMDG        := STS        -> RDCMDC    ;NEGATE COMMAND CODE
  225. RDCMDE        := REQ        -> DRVSELD    ;IF REQUEST IS TRUE, GOTO DRVSELD
  226.                    +-> RDCMDB    ;OTHERWISE GOTO RDCMDB          
  227. RDCMDC        := VCC        -> DRVSELD    ;GOTO DRVSELD
  228. RDCMD.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  229. RDCMDA.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  230. RDCMDB.OUTF    := /READY*CD3*/CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  231. RDCMDC.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  232. RDCMDD.OUTF    := /READY*CD3*/CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  233. RDCMDE.OUTF    := /READY*CD3*/CD2*CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  234. RDCMDF.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  235. RDCMDG.OUTF    := /READY*CD3*CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  236.  
  237. ;****** WRITE COMMAND ******
  238. WRCMD        := REQ        -> WRCMD    ;WHEN REQUEST IS DEACTIVATED, NEGATE READY
  239.                    +-> WRCMDA    ;OTHERWISE GOTO WRCMD
  240. WRCMDA        := ONLN        -> WRCMDB    ;IF ONLINE IS TRUE, OUTPUT WRITE COMMAND CODE
  241.                    +-> CMDERRA    ;IF ONLINE IS FALSE, OUTPUT INVALID COMMAND CODE
  242. WRCMDB        := EW        -> WRCMDC    ;IF EWH IS DETECTED, NEGATE COMMAND CODE
  243.                    +-> WRCMDE    ;OTHERWISE GOTO WRCMDE
  244. WRCMDC        := VCC        -> WRCMDD    ;OUTPUT END OF MEDIA COMMAND CODE
  245. WRCMDD        := VCC        -> DRVSELD    ;GOTO DRVSELD
  246. WRCMDE        := REQ        -> DRVSELD    ;IF REQUEST IS TRUE, GOTO DRVSELD
  247.                    +-> WRCMDF    ;OTHERWISE GOTO WRCMDF
  248. WRCMDF        := ONLN        -> WRCMDB    ;IF ONLINEB IS TRUE, GOTO WRCMDB
  249.                    +-> WRCMDG    ;NEGATE COMMAND CODE
  250. WRCMDG        := VCC        -> WRCMDH    ;OUTPUT WFM COMMAND CODE
  251. WRCMDH        := STS        -> WRCMDI    ;IF FM IS ACTIVATED, GOTO WRCMDI
  252.                                +-> WRCMDH    ;OTHERWISE GOTO WRCMDH
  253. WRCMDI        := VCC        -> BOTCMDA    ;REWIND TAPE    
  254. WRCMD.OUTF    := READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  255. WRCMDA.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  256. WRCMDB.OUTF    := /READY*CD3*/CD2*CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  257. WRCMDC.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  258. WRCMDD.OUTF    := /READY*/CD3*CD2*CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  259. WRCMDE.OUTF    := /READY*CD3*/CD2*CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  260. WRCMDF.OUTF    := /READY*CD3*/CD2*CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  261. WRCMDG.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  262. WRCMDH.OUTF    := /READY*CD3*/CD2*/CD1*CD0*/ERASE*/INITIALIZE*DRSELD
  263. WRCMDI.OUTF    := /READY*/CD3*/CD2*/CD1*/CD0*/ERASE*/INITIALIZE*DRSELD
  264.  
  265. ;@@@@@@ CONDITIONS @@@@@@
  266.  
  267. CONDITIONS
  268. COND0    = CC0    
  269. COND1    = CC1
  270. COND2    = CC2
  271. COND3    = CC3
  272. ONLN    = ONLINE
  273. STS    = STATUS
  274. EW    = EWH
  275. REQ    = REQUEST
  276.  
  277.  
  278. ;@@@@@@ SIMULATION INPUT @@@@@@
  279. SIMULATION
  280. TRACE_ON /CC0 /CC1 /CC2 /CC3 /REQUEST /ONLINE CD3 CD2 CD1 CD0 STATUS ERASE INITIALIZE READY DRSELD
  281. SETF /CC3 /CC2 /CC1 /CC0 /REQUEST /ONLINE /STATUS /EWH /PRESET /CLK
  282. SETF PRESET            ;RESET DEVICE
  283. CLOCKF CLK            ;SELECT DRIVE
  284. SETF /CC3 /CC2 /CC1 CC0
  285. SETF REQUEST
  286. CLOCKF CLK
  287. CLOCKF CLK
  288. CLOCKF CLK
  289. CLOCKF CLK
  290. CLOCKF CLK
  291. SETF /REQUEST
  292. CLOCKF CLK
  293. CLOCKF CLK
  294. CLOCKF CLK
  295. SETF /CC3 /CC2 /CC1 /CC0    ;INVALID COMMAND
  296. SETF REQUEST
  297. CLOCKF CLK
  298. CLOCKF CLK
  299. CLOCKF CLK
  300. CLOCKF CLK
  301. CLOCKF CLK
  302. SETF /REQUEST
  303. CLOCKF CLK 
  304. CLOCKF CLK
  305. CLOCKF CLK
  306. CLOCKF CLK
  307. SETF /CC3 CC2 /CC1 CC0        ;BOT COMMAND
  308. SETF REQUEST
  309. CLOCKF CLK
  310. CLOCKF CLK
  311. CLOCKF CLK
  312. CLOCKF CLK
  313. CLOCKF CLK
  314. CLOCKF CLK
  315. SETF /REQUEST
  316. CLOCKF CLK
  317. CLOCKF CLK
  318. SETF STATUS            ;ASSERT STATUS, BOT
  319. CLOCKF CLK 
  320. SETF /STATUS
  321. CLOCKF CLK
  322. CLOCKF CLK
  323. SETF /CC3 CC2 CC1 /CC0        ;ERASE COMMAND
  324. SETF REQUEST
  325. CLOCKF CLK
  326. CLOCKF CLK
  327. CLOCKF CLK
  328. CLOCKF CLK
  329. CLOCKF CLK
  330. SETF /REQUEST
  331. CLOCKF CLK
  332. CLOCKF CLK
  333. SETF STATUS            ; ASSERT STATUS, BOT
  334. CLOCKF CLK
  335. SETF /STATUS
  336. CLOCKF CLK
  337. CLOCKF CLK
  338. CLOCKF CLK
  339. CLOCKF CLK
  340. SETF STATUS            ;ASSERT STATUS, EOT
  341. CLOCKF CLK
  342. SETF /STATUS
  343. CLOCKF CLK
  344. CLOCKF CLK
  345. CLOCKF CLK
  346. CLOCKF CLK 
  347. SETF STATUS            ;ASSERT STATUS, BOT
  348. CLOCKF CLK
  349. SETF /STATUS
  350. CLOCKF CLK
  351. CLOCKF CLK
  352. SETF /CC3 CC2 CC1 CC0        ;INITIALIZE COMMAND
  353. SETF REQUEST
  354. CLOCKF CLK
  355. CLOCKF CLK
  356. CLOCKF CLK
  357. CLOCKF CLK
  358. CLOCKF CLK
  359. SETF /REQUEST
  360. CLOCKF CLK
  361. CLOCKF CLK
  362. SETF STATUS            ;ASSERT STATUS, BOT
  363. CLOCKF CLK
  364. SETF /STATUS
  365. CLOCKF CLK
  366. CLOCKF CLK
  367. CLOCKF CLK
  368. CLOCKF CLK
  369. CLOCKF CLK
  370. SETF STATUS            ;ASSERT STATUS, EOT
  371. CLOCKF CLK
  372. SETF /STATUS
  373. CLOCKF CLK
  374. CLOCKF CLK
  375. CLOCKF CLK
  376. CLOCKF CLK
  377. CLOCKF CLK
  378. SETF STATUS            ;ASSERT STATUS, BOT
  379. CLOCKF CLK
  380. SETF /STATUS
  381. CLOCKF CLK
  382. CLOCKF CLK  
  383. SETF /CC3 CC2 /CC1 /CC0        ;READ STATUS
  384. SETF REQUEST
  385. CLOCKF CLK
  386. CLOCKF CLK
  387. CLOCKF CLK
  388. CLOCKF CLK
  389. CLOCKF CLK
  390. CLOCKF CLK
  391. SETF /REQUEST
  392. CLOCKF CLK
  393. CLOCKF CLK
  394. CLOCKF CLK
  395. CLOCKF CLK
  396. SETF REQUEST
  397. CLOCKF CLK
  398. CLOCKF CLK
  399. SETF /REQUEST            ;READ STATUS BYTE 1
  400. CLOCKF CLK
  401. CLOCKF CLK
  402. SETF REQUEST
  403. CLOCKF CLK
  404. CLOCKF CLK
  405. SETF /REQUEST            ;READ STATUS BYTE 1
  406. CLOCKF CLK
  407. CLOCKF CLK
  408. SETF REQUEST
  409. CLOCKF CLK
  410. CLOCKF CLK
  411. SETF /REQUEST            ;READ STATUS BYTE 2
  412. CLOCKF CLK
  413. CLOCKF CLK
  414. SETF REQUEST
  415. CLOCKF CLK
  416. CLOCKF CLK
  417. SETF /REQUEST            ;READ STATUS BYTE 3
  418. CLOCKF CLK
  419. CLOCKF CLK
  420. SETF REQUEST
  421. CLOCKF CLK
  422. CLOCKF CLK
  423. SETF /REQUEST            ;READ STATUS BYTE 4
  424. CLOCKF CLK
  425. CLOCKF CLK
  426. SETF REQUEST    
  427. CLOCKF CLK
  428. CLOCKF CLK
  429. SETF /REQUEST            ;READ STATUS BYTE 5
  430. CLOCKF CLK
  431. CLOCKF CLK
  432. SETF CC3 CC2 /CC1 CC0        ;READ COMMAND
  433. SETF REQUEST
  434. CLOCKF CLK
  435. CLOCKF CLK
  436. CLOCKF CLK
  437. CLOCKF CLK
  438. CLOCKF CLK
  439. SETF /REQUEST
  440. CLOCKF CLK
  441. CLOCKF CLK
  442. CLOCKF CLK
  443. CLOCKF CLK
  444. CLOCKF CLK
  445. SETF /ONLINE            ;NEGATE ONLINEB
  446. CLOCKF CLK
  447. CLOCKF CLK
  448. CLOCKF CLK
  449. CLOCKF CLK
  450. CLOCKF CLK
  451. CLOCKF CLK
  452. SETF STATUS
  453. CLOCKF CLK
  454. SETF /STATUS
  455. CLOCKF CLK
  456. CLOCKF CLK
  457. SETF CC3 CC2 /CC1 CC0        ;READ COMMAND
  458. SETF ONLINE
  459. SETF REQUEST
  460. CLOCKF CLK
  461. CLOCKF CLK
  462. CLOCKF CLK
  463. CLOCKF CLK
  464. CLOCKF CLK
  465. SETF /REQUEST
  466. CLOCKF CLK
  467. CLOCKF CLK
  468. CLOCKF CLK
  469. CLOCKF CLK
  470. CLOCKF CLK
  471. SETF STATUS            ;FILE MARK FOUND
  472. CLOCKF CLK
  473. CLOCKF CLK
  474. CLOCKF CLK
  475. CLOCKF CLK
  476. SETF /STATUS
  477. CLOCKF CLK
  478. CLOCKF CLK
  479. CLOCKF CLK
  480. CLOCKF CLK
  481. SETF CC3 CC2 /CC1 CC0        ;READ COMMAND
  482. SETF REQUEST
  483. CLOCKF CLK
  484. CLOCKF CLK
  485. CLOCKF CLK
  486. CLOCKF CLK
  487. CLOCKF CLK
  488. SETF /REQUEST
  489. CLOCKF CLK
  490. CLOCKF CLK
  491. CLOCKF CLK
  492. CLOCKF CLK
  493. CLOCKF CLK
  494. SETF CC3 CC2 CC1 /CC0        ;READ FILE MARK
  495. SETF REQUEST
  496. CLOCKF CLK
  497. CLOCKF CLK
  498. CLOCKF CLK
  499. CLOCKF CLK
  500. CLOCKF CLK
  501. CLOCKF CLK
  502. CLOCKF CLK
  503. SETF /REQUEST
  504. CLOCKF CLK
  505. CLOCKF CLK
  506. CLOCKF CLK
  507. SETF STATUS
  508. CLOCKF CLK
  509. CLOCKF CLK
  510. CLOCKF CLK
  511. SETF /STATUS
  512. CLOCKF CLK
  513. CLOCKF CLK
  514. CLOCKF CLK
  515. SETF CC3 CC2 /CC1 CC0        ;READ COMMAND
  516. SETF /ONLINE
  517. SETF REQUEST
  518. CLOCKF CLK
  519. CLOCKF CLK
  520. CLOCKF CLK
  521. CLOCKF CLK
  522. CLOCKF CLK
  523. CLOCKF CLK
  524. SETF /REQUEST
  525. CLOCKF CLK
  526. CLOCKF CLK
  527. CLOCKF CLK
  528. SETF CC3 CC2 /CC1 /CC0        ;WRITE COMMAND
  529. SETF ONLINE
  530. CLOCKF CLK
  531. SETF REQUEST
  532. CLOCKF CLK
  533. CLOCKF CLK
  534. CLOCKF CLK
  535. CLOCKF CLK
  536. CLOCKF CLK
  537. CLOCKF CLK
  538. SETF /REQUEST
  539. CLOCKF CLK
  540. CLOCKF CLK
  541. CLOCKF CLK
  542. CLOCKF CLK
  543. SETF /ONLINE            ;NEGATE ONLINEB
  544. CLOCKF CLK
  545. CLOCKF CLK
  546. CLOCKF CLK
  547. CLOCKF CLK
  548. CLOCKF CLK
  549. SETF STATUS
  550. CLOCKF CLK
  551. CLOCKF CLK
  552. SETF /STATUS
  553. CLOCKF CLK
  554. CLOCKF CLK
  555. CLOCKF CLK
  556. CLOCKF CLK
  557. SETF STATUS            ;ASSERT STATUS, BOT
  558. CLOCKF CLK
  559. SETF /STATUS
  560. CLOCKF CLK
  561. CLOCKF CLK
  562. TRACE_OFF
  563.