home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / schematics / kim-1 / hardware-manual.txt < prev    next >
Text File  |  1998-09-14  |  383KB  |  7,418 lines

  1.  
  2.  
  3. rEMARK OF THE EDITOR OF THIS DOCUMENT:
  4.  
  5.  
  6. tHE DOCUMENT CONTAINS SOME SCHEMATICS. i USED THE ascii CHARACTERSET TO DRAW
  7. LINES ETC. sO THEY MAY LOOK WEIRD. i'M SORRY FOR ANY INCONVENIENCE. tHERE
  8. EXISTS ONE WITH THE ibm-CHARACTERSET AND IS AS SO ONLY (???) READABLE WITH
  9. A TEXT-EDITOR UNDER dos.
  10.  
  11. iN THIS VERSION THE gREEK phi CHARACTER OF THE ibm-SET HAS BEEN REPLACED
  12. BY THE CAPITAL p.
  13.  
  14. i TRIED TO LET THE DRAWINGS LOOK LIKE THE ORIGINALS BUT THAT WAS NOT ALWAYS
  15. POSSIBLE.
  16. iN ONE CASE THE SCHEMATIC WAS TOO COMPLEX SO i DRAW IT USING uLTIcAP AND MADE A
  17. gif-FILE OF THE RESULT.
  18.  
  19. i FOUND SEVERAL ERRORS BUT DID NOT CORRECT THEM UNLESS THEY COULD LEAD TO
  20. SEVERE CONFUSION.
  21.  
  22.  
  23. rUUD bALTISSEN
  24.  
  25.  
  26. cREDITS: gER rOZEMA FOR LENDING ME HIS SCANNER.
  27.  
  28. ============================================================================
  29.  
  30.  
  31.  
  32.  
  33.  
  34.                                     mos
  35.  
  36.                                microcomputers
  37.  
  38.  
  39.  
  40.  
  41.  
  42.                                hardware manual
  43.  
  44.  
  45.  
  46. ============================================================================
  47.  
  48.                                                pUBLICATIONS nUMBER 6500-10a
  49.  
  50.  
  51.  
  52.                                   mcs6500
  53.  
  54.  
  55.                             microcomputer family
  56.  
  57.  
  58.                               hardware manual
  59.  
  60.  
  61.  
  62.                                 january 1976
  63.  
  64.  
  65. tHE INFORMATION IN THIS MANUAL HAS BEEN REVIEWED AND IS BELIEVED TO BE ENTIRELY
  66. RELIABLE. hOWEVER, NO RESPONSIBILITY IS ASSUMED FOR INACCURACIES. tHE MATERIAL
  67. IN THIS MANUAL IS FOR INFORMATIONAL PURPOSES ONLY AND IS SUBJECT TO CHANGE
  68. WITHOUT NOTICE.
  69.  
  70.                                sECOND eDITION
  71.                       (c) mos technology, inc. 1976
  72.                            "aLL rIGHTS rESERVED"
  73.                             mos technology, inc
  74.                             9s0 rITTENHOUSE rOAD
  75.                             nORNSTOWN, pa 19401                  rEVISION a
  76.  
  77.  
  78.  
  79. ============================================================================
  80.  
  81.                                     preface
  82.  
  83.  
  84.     tHE mos tECHNOLOGY, iNC. mgs6500 mICROCOMPUTER sYSTEM OFFERING COMBINES
  85. THE BEST FEATURES OF SECOND GENERATION FAMILIES INTO A PRODUCT LINE THAT IS BOTH
  86. A PRICE AND PERFORMANCE LEADER.  a GROWING ARRAY OF PRODUCTS AND A UNIQUE MICRO-
  87. PROCESSOR FAMILY PROVIDE THE CUSTOMER WITH ANSWERS TO THE COMPLEX DESIGN PROB-
  88. LEMS CONFRONTING TODAY'S PROGRAMTTTERS AND DESIGNERS.
  89.     iNTEGRATED CIRCUIT FABRICATION TECHNIQUES HAVE MOVED MICROPROCESSORS TO THE
  90. FOREFRONT OF COMPLEX, SOPHISTICATED COMPONENTS.  tHE mcs6500 FAMILY BENEFITS
  91. FROM AN ADVANCED BUT PROVEN PROCESS TECHNOLOGY; n-cHANNEL, sILICON gATE, AND dE-
  92. PLETION lOADS ARE THE KEY ELEMENTS PROVIDING THE HIGH PERFORMANCE CHARACTERIS-
  93. TICS OBTAINABLE IN THE SINGLE SUPPLY 5-VOLT SYSTEM USAGE OF THE mcs6500 FAMILY.
  94.  
  95.     tHE n-cHANNEL, sILICON gATE TECHNOLOGY IS ENHANCED BY USE OF dEPLETION lOADS
  96. WHICH PROVIDES GREATER SPEED, LOWER POWER AND SMALLER CHIP SIZE THAN PREVIOUS
  97. PROCESSING APPROACHES.  iON iMPLEMENTATION TECHNIQUES ARE BASIC ELEMENTS IN PRO-
  98. VIDING CONTROL AND STABILITY OF ALL PROCESSING PARAMETERS NECESSARY TO ACHIEVE
  99. THE ELECTRICAL CHARACTERISTICS OF THE mcs6500 PRODUCT LINE.  tHESE CHARACTER-
  100. ISTICS PROVIDE A PRICE/PERFORMANCE COMBINATION WHICH ESTABLISHES THE mcs6500
  101. FAMILY AS THE PRODUCT OFFERING BEST MEETING THE ECONOMIC AND TECHNICAL DEMANDS
  102. OF TODAY'S SYSTEM DESIGNS.
  103.     a WORD OF EXPLANATION IS IN ORDER REGARDING THE mcs6500 PRODUCT LINE, SINCE
  104. THE CONCEPT OF "mICROPROCESSOR fAMILY" IS INDEED UNIQUE TO THE INDUSTRY.  iT IS
  105. HELPFUL TO UNDERSTAND THE BASIC PRODUCT STRUCTURE OF THE mcs6500 FAMILY.
  106.     tHE mcs650x sERIES REPRESENTS THE mICROPROCESSOR fAMILY.  wITHIN THIS
  107. FAMILY WILL EXIST A SERIES OF 8-BIT DEVICES OFFERING A WIDE RANGE OF OPTIONS AND
  108. CAPABILITIES FOR THE CUSTOMER.  fOR THE SINGLE-APPLICATION CUSTOMER, A VARIED
  109. SELECTION OF DEVICES IS AT HIS DISPOSAL IN CHOOSING THE ONE THAT BEST MEETS HIS
  110. SPECIFIC NEEDS.  tHE "mICROPROCESSOR fAMILY" CONCEPT HAS AN EVEN GREATER IMPACT
  111.  
  112.  
  113.                                    -II-
  114.  
  115. ============================================================================
  116.  
  117. TO THE USER WHO HAS A VARIETY OF APPLICATIONS, EACH OF WHICH CAN BEST BE SERVED
  118. BY A SPECIFIC MEMBER OF THE FAMILY.  iT IS IMPORTANT TO THIS USER THAT ALL OF
  119. THE DIFFERENT MICROPROCESSORS HE SELECTS MAINTAIN COMPATIBILITY--BOTH HARDWARE
  120. (FROM THE STANDPOINT OF BUS AND ELECTRICAL SPECIFICATIONS) AND SOFTWARE.  tHE
  121. mcs650x PRODUCT LINE IS THE FIRST MICROPROCESSOR FAMILY TO ACHIEVE SUCH A LEVEL
  122. OF COMPATIBILITY BECAUSE IT WAS INDEED CONCEPTUALIZED AS A TOTALLY SOFTWARE AND
  123. HARDWARE COMPATIBLE FAMILY OF MICROPROCESSORS OFFERING A RANGE OF PERFORMANCE
  124. OPTIONS FROM WHICH THE DESIGNER CAN SELECT.  tHE mcs6501 AND mcs6502 ARE THE
  125. FIRST TWO 40-PIN MEMBERS OF THE mcs650x FAMILY, EACH OFFERING 65k BYTES OF
  126. ADDRESSABLE MEMORY.  tHE mcs6503, mcs6504 AND mcs6505 ARE THE FIRST 28-PIN
  127. VERSIONS WITH VARIOUS OPTIONS OF ADDRESSING CAPABILITY AND CONTROL FUNCTIONS
  128. FROM WHICH TO CHOOSE.
  129.     tHE mcs652x sERIES REPRESENTS pERIPHERAL iNPUT/oUTPUT DEVICES, THE FIRST
  130. BEING THE mcs652o WHICH IS A DIRECT REPLACEMENT FOR THE mOTOROLA mc682o pERIPH-
  131. ERAL iNTERFACE aDAPTER (pia).  sUBSEQUENT MEMBERS OF THIS SERIES WILL INCLUDE
  132. DEVICES WITH EXPANDED i/o CAPABILITIES.
  133.     tHE mcs653x sERIES REPRESENTS COMBINATIONAL DEVICES--THOSE CONSISTING OF
  134. VARIOUS TRADEOFFS IN ram, rom, i/o, AND tIMING.  tHE FIRST OF THESE IS THE
  135. mcs6530 WHICH CONTAINS 1k BYTES OF rom, 64 BYTES OF ram, AN iNTERVAL tIMER AND
  136. 16 i/o LINES.  sUBSEQUENT PRODUCTS IN THIS SERIES WILL PROVIDE THE CUSTOMER WITH
  137. DIFFERENT COMBINATIONS AND NEW IMPLEMENTATIONS OF i/o, tIMING AND mEMORY.
  138.     tHE mcs654x sERIES REPRESENTS rEAD oNLY mEMORIES SPECIFICALLY TAILORED TO
  139. MEET THE NEEDS OF LARGE PROGRAM STORAGE REQUIRED IN MANY OF THE APPLICATIONS OF
  140. THE mcs6500 FAMILY OF PRODUCTS.  tHE FIRST OF THESE WILL BE A 16k (2k X 8) rom,
  141. THE mcs6540.
  142.     aLL OF THE mcs6500 PRODUCT LINES OUTLINED UTILIZE THE SAME FABRICATION
  143. TECHNIQUES AND MEET IDENTICAL ELECTRICAL SPECIFICATIONS.  wITH THIS FAMILY OF
  144. COMPATIBLE PRODUCTS THE DESIGNER OF TODAY HAS AT HIS DISPOSAL THE ELEMENTS
  145. NECESSARY TO DEVELOP A SYSTEM CONFIGURED TO MEET THE MOST DEMANDING TASKS.
  146.     cOMPLEMENTING THE mcs6500 FAMILY IS A SELECTION OF rANDOM aCCESS mEMORIES
  147. TOTALLY COMPATIBLE WITH THE MICROCOMPUTER FAMILY.  tHE FIRST OF THESE WILL BE
  148. THE mc56102, A 2102 EQUIVALENT, AND THE nc56111, A 2111 EQUIVALENT.
  149.     tO ALLOW FOR MINIMUM i/o COST AND MAXIMUM USER FLEXIBILITY, ALL OF THE
  150. mcs6500 PRODUCTS ARE COMPATIBLE WITH THE m6800 BUS STRUCTURE.
  151.  
  152.  
  153.                                   -III-
  154.  
  155. ============================================================================
  156.  
  157.                                   blank
  158.  
  159.  
  160.                                   -IV-
  161.  
  162. ============================================================================
  163.  
  164.                                disappeared
  165.  
  166.  
  167.                                    -V-
  168.  
  169. ============================================================================
  170.  
  171. 1.4  tHE mICROPROCESSORS                                    30
  172.  
  173. 1.4.1  tHE mcs6soL                                          30
  174. 1.4.1.1  iNTRODUCTION                                       30
  175. 1.4.1.2  tHE mcs6501 pINOUTS                                32
  176. 1.4.1.2.1  vCC, vSS--sUPPLY lINES                           32
  177. 1.4.1.2.2  aboo - ab15--aDDRESS bUS                         32
  178. 1.4.1.2.3  dbo - db7--dATA bUS                              34
  179. 1.4.1.2.4  r/w--rEAD/wRITE                                  36
  180. 1.4.1.2.5  dbe--dATA bUS eNABLE                             36
  181. 1.4.1.2.6  vma--vALID mEMORY aDDRESS                        36
  182. 1.4.1.2.7  ba--bUS aVAILABLE                                37
  183. 1.4.1.2.8  rdy--rEADY                                       37
  184. 1.4.1.2.9  nmi--nON-mASKABLE iNTERRUPT                      38
  185. 1.4.1.2.10 irq--iNTERRUPT rEQUEST                           38
  186. 1.4.1.2.11 res--rESET                                       40
  187. 1.4.2  tHE mcs6502                                          41
  188. 1.4.2.1  pRODUCT cHARACTERISTICS                            41
  189. 1.4.2.2  dEVICE tIMING--rEQUIREMENTS AND gENERATION .       41
  190. 1.4.2.3  sync sIGNAL                                        44
  191. 1.4.2.4  s.o--sET oVERFLOW                                  44
  192. 1.4.3  tHE mcs6503, mcs6504 AND mcs6505                     47
  193.  
  194. 1.5  pERIPHERAL iNTERFACE dEVICE--mcs6520                   50
  195.  
  196. 1.5.1  iNTRODUCTION                                         50
  197. 1.5.2  oRGANIZATION OF THE mcs6520                          51
  198. 1.5.2.1  dATA iNPUT rEGISTER                                54
  199. 1.5.2.2  cONTROL rEGISTERS (cra AND crb)                    54
  200. 1.5.2.3  dATA dIRECTION rEGISTERS (ddra, ddrb)              55
  201. 1.5.2.4  pERIPHERAL oUTPUT rEGISTERS (ora, orb)             55
  202. 1.5.2.5  iNTERRUPT sTATUS cONTROL                           55
  203. 1.5.2.6  pERIPHERAL iNTERFACE bUFFERS (a, b) AND dATA
  204.          bUS bUFFERS (dbb)                                  55
  205. 1.5.3  iNTERFACE bETWEEN mcs6520 AND THE mcs650x fAMILY
  206.        OF mICROPROCESSORS                                   56
  207. 1.5.3.1  dATA bUS (do-d7)                                   56
  208. 1.5.3.2  eNABLE (e)                                         56
  209. 1.5.3.3  rEAD/wRITE (r/w)                                   56
  210. 1.5.3.4  cHIP-sELECT lINES (csL, c52, c53)                  56
  211. 1.5.3.5  rEGISTER-sELECT lINES (rs, rs1)                    58
  212. 1.5.3.5.1  rEADING THE pERIPHERAL a i/o pORT                59
  213. 1.5.3.5.2  rEADING THE pERIPHERAL b i/o pORT                59
  214. 1.5.3.6  rESET (res)                                        63
  215. 1.5.3.7  iNTERRUPT rEQUEST lINE (irqa, irqb)                63
  216. 1.5.3.7.1  cONTROL OF irqa                                  63
  217. 1.5.3.7.2  cONTROL OF irqb                                  64
  218.  
  219.  
  220.                                    -VI-
  221.  
  222. ============================================================================
  223.  
  224. 1.5.4  iNTERFACE bETWEEN mcs6520 AND pERIPHERAL dEVICES     64
  225. 1.5.4.1  pERIPHERAL i/o pORTS                               64
  226. 1.5.4.1.1  pERIPHERAL a i/o pORT (pa0-pa7)                  65
  227. 1.5.4.1.2  pERIPHERAL b i/o pORT (pb0-pb7)                  65
  228. 1.5.4.2  iNTERRUPT iNPUT/pERIPHERAL cONTROL lINES (ca1,
  229.          ca2, cb1, cb2)                                     66
  230. 1.5.4.2.1  pERIPHERAL a iNTERRUPT iNPUT/pERIPHERAL
  231.            cONTROL lINES (cb1, cb2)                         66
  232. 1.5.4.2.2  pERIPHERAL b iNTERRUPT iNPUT/pERIPHERAL
  233.            cONTROL lINES (cb1, cb2)                         67
  234. 1.5.5  sUMMARY OF mcs6520 oPERATION                         67
  235. 1.5.5.1  cONTROL rEGISTER oPERATION                         67
  236. 1.5.5.2  mcs6520 oPERATION IN mc6500 sYSTEMS                70
  237.  
  238. 1.6  pERIPHERAL iNTERFACE/mEMORY dEVICE--mcs6530            71
  239.  
  240. 1.6.1  iNTRODUCTION                                         71
  241. 1.6.2  pINOUT dESCRIPTION                                   71
  242. 1.6.2.1  rESET (res)                                        71
  243. 1.6.2.2  iNPUT cLOCK                                        73
  244. 1.6.2.3  rEAD/wRITE (r/w)                                   73
  245. 1.6.2.4  iNTERRUPT rEQUEST (irq)                            73
  246. 1.6.2.5  dATA bUS (d-d7)                                    73
  247. 1.6.2.6  pERIPHERAL dATA pORTS                              73
  248. 1.6.2.7  aDDRESS lINES (a0-a9)                              74
  249. 1.6.3  iNTERNAL oRGANIZATION                                74
  250. 1.6.3.1  rom--1k bYTE (8k bITS)                             74
  251. 1.6.3.2  ram--64 bYTES (512 bITS)                           76
  252. 1.6.3.3  iNTERNAL pERIPHERAL rEGISTERS                      76
  253. 1.6.3.4  iNTERVAL tIMER                                     76
  254. 1.6.4  aDDRESSING                                           78
  255. 1.6.4.1  oNE-cHIP aDDRESSING                                80
  256. 1.6.4.2  sEVEN-cHIP aDDRESSING                              80
  257. 1.6.4.3  i/o rEGISTER--tIMER aDDRESSING                     80
  258.  
  259.  
  260.  
  261. chapter 2 configuring the microcomputer system
  262.  
  263. 2.1  tHE sYSTEM cONFIGURATION tASK                          84
  264.  
  265. 2.2  iNPUT/oUTPUT tECHNIQUES                                85
  266.  
  267. 2.2.1  tHE gENERAL pURPOSE iNPUT/oUTPUT (i/o) pORT          85
  268. 2.2.2  tHE sPECIAL pURPOSE pERIPHERAL iNTERFACE dEVICE      85
  269. 2.2.3  cONFIGURING THE gENERAL pURPOSE i/o pORT             87
  270. 2.2.3.1  aSSIGNMENT OF oUTPUTS                              88
  271. 2.2.3.2  aSSIGNMENT OF iNPUTS                               88
  272. 2.2.4  pOWER-oN cONSIDERATIONS                              90
  273.  
  274.  
  275.                                    -VII-
  276.  
  277. ============================================================================
  278.  
  279. 2.2.5  hANDSHAKING                                          94
  280. 2.2.5.1  hANDSHAKING ON dATA tRANSFERS FROM THE pROCESSOR   94
  281. 2.2.5.2  hANDSHAKING ON dATA tRANSFERS INTO THE pROCESSOR   95
  282.  
  283. 2.3  cONFIGURING THE iNTERFACE bETWEEN THE mICROPROCESSOR
  284.      AND THE sUPPORT cHIPS                                  99
  285.  
  286. 2.3.1  aSSIGNMENT OF aDDRESSES IN THE mcs6500 sYSTEM        99
  287. 2.3.1.1  rom aDDRESS aSSIGNMENT                             102
  288. 2.3.1.2  ram aDDRESS aSSIGNMENT                             102
  289. 2.3.2  aDDITIONAL aDDRESS aSSIGNMENT tECHNIQUES             104
  290. 2.3.3  iNTERRUPTS                                           104
  291. 2.3.3.1  iNTERRUPT pRIORITIZING                             106
  292. 2.3.3.2  eXAMPLE 1:  sELECTING THE iNTERRUPT vECTOR         106
  293. 2.3.3.3  eXAMPLE 2:  uSING THE pROCESSOR sOFTWARE pOWER     108
  294. 2.3.4  tHE aPPLICATION OF roy TO cONTROLLING THE mEM-
  295.        ORY iNTERFACE                                        108
  296. 2.3.4.1  iNTERFACE sLOW promS                               108
  297. 2.3.4.2  dIRECT mEMORY aDDRESS (dma) tECHNIQUES             112
  298. 2.3.4.3  cONTROL OF dYNAMIC ramS IN THE mcs6500 sYSTEM      113
  299. 2.3.5  hOLD-tIME cONTROL--mcs65o1                           117
  300.  
  301. 2.4  aDDITIONAL sYSTEM cONSIDERATIONS                       119
  302.  
  303. 2.4.1  pERIPHERAL iNTERFACE dEVICES                         119
  304. 2.4.2  ram                                                  119
  305. 2.4.3  rom
  306.  
  307. 2.5  eVALUATING sYSTEM pERFORMANCE                          121
  308.  
  309.  
  310.  
  311. chapter 3 bringing up the mcs6500
  312.  
  313. 3.0  iNTRODUCTION TO mICROCOMPUTER tESTING                  123
  314.  
  315. 3.1  sTATIC tESTING                                         124
  316.  
  317. 3.1.1  iNTRODUCTION                                         124
  318. 3.1.2  sINGLE cYCLE eXECUTION                               124
  319. 3.1.3  sINGLE iNSTRUCTION eXECUTION                         127
  320.  
  321. 3.2  dYNAMIC tESTING                                        130
  322.  
  323. 3.2.1  iNTRODUCTION                                         130
  324. 3.2.2  eXTERNALLY iNDUCED lOOPS                             130
  325. 3.2.3  sOFTWARE lOOPS                                       132
  326.  
  327.  
  328.                                   -VIII-
  329.  
  330. ============================================================================
  331.  
  332. 3.3sYSTEM dIAGNOSIS uSING hARDWARE pROGRAMMER aIDS          133
  333.  
  334. 3.3.1  kim kEYBOARD iNPUT mONITOR                           135
  335. 3.3.2  tim--tELETYPE iNPUT mONITOR                          136
  336. 3.3.3  mdt--mICROCOMPUTER dEVELOPMENT tERMINAL              138
  337.  
  338. 3.4  mICROPROCESSOR sTART-uP pROCEDURE                      139
  339.  
  340. 3.4.1  iNTRODUCTION                                         139
  341. 3.4.2  sYSTEM pOWER--sTEP 1                                 139
  342. 3.4.3  bASIC sYSTEM tIMING--sTEP 2                          140
  343. 3.4.4  sYSTEM rESET--sTEP 3                                 140
  344. 3.4.4.1  sTATIC aNALYSIS OF sYSTEM dETAILS                  144
  345. 3.4.4.2  dYNAMIC aNALYSIS OF sYSTEM dETAILS                 145
  346. 3.4.4.2.1  aDDRESS bUS vERIFICATION                         145
  347. 3.4.4.2.2  dATA bUS vERIFICATION                            146
  348. 3.4.5  dETAILED cOMPONENT cBECK                             148
  349.  
  350. appendix a                                                  a-1
  351.  
  352.  
  353.                                    -IX-
  354.  
  355. ============================================================================
  356.  
  357.                               list of figures
  358.  
  359.  
  360. chapter 1 the mcs6500 microcomputer system
  361.  
  362. 1.1    oRGANIZATION OF mICROCOMPUTER sYSTEM                             5
  363. 1.2    aDDRESS bUS AND rELATION TO mEMORY fIELD                         7
  364. 1.3    pORTION OF rEAD oNLY mEMORY mATRIX                               9
  365. 1.4    pINOUT cOMPARISON:  mos tECHNOLOGY mcs6501, mOTOROLA mc6800      13
  366. 1.5    cLOCK AND rEAD/wRITE tIMING tABLE (1 mhZ oPERATION)              17
  367. 1.6    tWO-pHASE cLOCK tIMING                                           18
  368. 1.7    tIMING FOR rEADING dATA FROM mEMORY OF pERIPHERALS               18
  369. 1.8    tIMING FOR wRITING dATA TO mEMORY OR pERIPHERALS                 19
  370. 1.9    iNTERRUPT wIRE or'D hARDWARE cONFIGURATION FROM pERIPHERAL
  371.          iNTERFACE dEVICES TO mICROPROCESSOR                            24
  372. 1.10   sEQUENCE TO sERVICE irq                                          26
  373. 1.11   mcs650x iNTERNAL aRCHITECTURE                                    29
  374. 1.12   mcs6501 pINOUT dESIGNATIONS                                      33
  375. 1.13   mcs650x sYSTEM tIMING dIAGRAM                                    35
  376. 1.14   eXAMPLES OF iNTERRUPT rECOGNITION BY mcs650x                     39
  377. 1.15   mcs6502 pINOUT dESIGNATION                                       42
  378. 1.16   mcs6502 tIME bASE gENERATION--cRYSTAL cONTROLLED                 43
  379. L.16A  mcs6502 pARALLEL mODE cRYSTAL cONTROLLED oSCILLATOR              43
  380. L.16B  mcs6502 sERIES nODE cRYSTAL cONTROLLED oSCILLATOR                43
  381. 1.17   mcs6502 tIME bASE gENERATOR--rc nETWORK                          43
  382. 1.18   mcs6502 sync sIGNAL                                              45
  383. 1.19   fUNCTIONAL fEATURES OF mcs6503, mcs6504, mcs6505                 46
  384. 1.20   mcs6503, mcs6504, mcs6505 pINOUT dESIGNATIONS                    48
  385. 1.21   mcs6503, mcs6504, mcs6505 tIME bASE gENERATION cRYSTAL
  386.          cONTROLLED                                                     49
  387. 1.22   mcs6503, mcs6504, mcs6505 tIME eASE gENERATION rc nETWORK        49
  388. 1.23   bASIC mcs6520 iNTERFACE dIAGRAM                                  50
  389. 1.24   mcs6520 pINOUT dESIGNATIONS pERIPHERAL iNTERFACE aDAPTOR.        52
  390. 1.25   mcs6520 iNTERNAL aRCHITECTURE                                    53
  391. L.26A  mICROPROCESSOR iNTERFACE tIMING--rEAD                            57
  392. L.26B  mICROPROCESSOR iNTERFACE tIMING--wRITE                           57
  393. L.27A  pERIPHERAL a iNTERFACE tIMING                                    60
  394. L.27B  pERIPHERAL b iNTERFACE tIMING                                    61
  395. L.28A  pERIPHERAL i/o pORT a bUFFER                                     62
  396. 1.28B  pERIPHERAL i/o pORT b bUFFER                                     62
  397. 1.29   cONTROL rEGISTER bIT dESIGNATIONS                                67
  398.  
  399.  
  400.                                   -X-
  401.  
  402. ============================================================================
  403.  
  404. 1.30   cONTROL OF iNTERRUPT iNPUTS caL, cbL                             68
  405. L.31A  cONTROL OF ca2 (cb2) AS iNTERRUPT iNPUTS (bIT 5 = "0")           68
  406. L.31B  cONTROL OF ca2 oUTPUT mODES                                      69
  407. L.31C  cONTROL OF cb2 oUTPUT mODES                                      69
  408. 1.32   mcs6530 pINOUT dESIGNATION                                       72
  409. 1.33   mcs6530 iNTERNAL aRCHITECTURE                                    75
  410. 1.34   bASIC eLEMENTS OF iNTERVAL tIMER                                 77
  411. 1.35   eXAMPLE OF iNTERRUPT gENERATED BY iNTERVAL tIMER                 79
  412. 1.36   mcs6530 oNE-cHIP aDDRESS eNCODING dIAGRAM                        81
  413. 1.37   mcs6530 sEVEN-cHIP aDDRESSING sCHEME                             82
  414. 1.38   aDDRESSING dECODE FOR i/o rEGISTER AND tIMER                     83
  415.  
  416.  
  417.  
  418. chapter 2 configuring the microcomputer system
  419.  
  420. 2.1    cONTROL OF lOW oRDER bIT OF mcs6520 oUTPUT rEGISTER              89
  421. 2.2    mcs6520 cONTROL OF tRANSISTOR dRIVEN sOLENOIDS                   91
  422. 2.3A   mcs6520 cONTROL OF pnp tRANSISTOR dRIVING sOLENOID cOIL .        93
  423. 2.3B   mcs6520 cONTROLLING bOTH pOWER AND dRIVERS OF sOLENOID cELL      93
  424. 2.4    mcs6520 dRIVING ttl bUFFERS                                      93
  425. 2.5    mcs6520 cONTROLLING sOLENOIDS WITH eNABLE sIGNAL AND ttl
  426.        iNTERFACE                                                        94
  427. 2.6    wRITE hANDSHAKE sEQUENCE                                         97
  428. 2.7    rEAD hANDSHAKE sEQUENCE                                          98
  429. 2.8    oRGANIZATION OF mICROCOMPUTER sYSTEM                             100
  430. 2.9    eXAMPLE OF "and" fUNCTION uSING hIGH oRDER aDDRESS lINES         101
  431. 2.10   tYPICAL aDDRESS aSSIGNMENTS                                      103
  432. 2.11   pAGE zERO cHIP-sELECT aDDRESSING sCHEME                          105
  433. 2.12   sELECTING THE iNTERRUPT vECTOR                                   107
  434. 2.13   uSING mcs6520 FOR jUMP iNDIRECT iNTERRUPT rOUTINES               109
  435. 2.14A  pRIORITY eNCODER cONNECTED TO lOW oRDER bITS OF mcs6520 .        110
  436. 2.14B  pRIORITY eNCODER TO pERIPHERAL iNTERFACE sCHEME                  111
  437. 2.15   sOFTWARE pROGRAM TO iMPLEMENT iNTERRUPT FROM ABOVE hARDWARE
  438.          cONFIGURATION                                                  111
  439. 2.16   iNTERFACING sCHEME FOR sLOW promS                                114
  440. 2.17   lOGIC uSED TO gENERATE bUS aVAILABLE sIGNAL FOR dma
  441.          aPPLICATIONS                                                   114
  442. 2.18   cONTROL lOGIC FOR rEFRESH sIGNAL FOR dYNAMIC ramS                116
  443. 2.19   tIMING aNALYSIS OF dATA hOLD tIME                                118
  444.  
  445.  
  446.                                   -XI-
  447.  
  448. ============================================================================
  449.  
  450. chapter 3 bringing up the mcs6500
  451.  
  452. 3.1    sUGGESTED sTATIC tEST cONTROL lOGIC                              125
  453. 3.2    sINGLE cYCLE tIMING                                              126
  454. 3.3    mICROPROCESSOR sINGLE cYCLE dATA tRAP                            128
  455. 3.4    sINGLE iNSTRUCTION eXECUTION                                     129
  456. 3.5    sUGGESTED cONFIGURATION FOR dYNAMIC rESET tESTING                131
  457. 3.6    mcs6501 cLOCK tIMING sIGNALS                                     141
  458. 3.6A   iMPROPER cLOCKS                                                  141
  459. 3.6B   pROPER cLOCKS                                                    141
  460. 3.7    aDDRESS lINES IN mcs650x sYSTEMS                                 142
  461. 3.7A   pROPER aDDRESS lINES                                             142
  462. 3.7B   eXCESS aDDRESS lINE lOADING                                      142
  463. 3.8    tHE dATA bUS IN mcs650x sYSTEMS                                  143
  464.  
  465.  
  466.                                   -XII-
  467.  
  468. ============================================================================
  469.  
  470.                                  chapter 1
  471.  
  472.  
  473.                     the mcs6500 microcomputer system
  474.  
  475.  
  476.     tHE PAST SEVERAL YEARS HAVE SEEN THE DEVELOPMENT OF AN EXCITING NEW CONCEPT
  477. IN ELECTRICAL DESIGN.  cONVENTIONAL SYSTEM DESIGN IS RAPIDLY BEING REVOLUTION-
  478. IZED BY THE LARGE-SCALE, SINGLE-CHIP PROGRAMMABLE MICROPROCESSOR.  tHE MICRO-
  479. COMPUTER STARTED OUT AS A RELATIVELY SIMPLE, DIFFICULT-TO-USE PROGRAMMABLE
  480. DEVICE CAPABLE OF HANDLING SIMPLE CONTROL OR COMPUTATIONAL PROBLEMS.  hOWEVER,
  481. IT HAS SINCE MATURED INTO A POWERFUL, INEXPENSIVE, EASY-TO-USE DEVICE CAPABLE
  482. OF CONTROLLING ALL BUT THE MOST COMPLEX OF SYSTEMS.
  483.     tHREE PRIMARY ATTRIBUTES OF MICROPROCESSOR-BASED SYSTEMS ARE BRINGING
  484. ABOUT THIS REVOLUTION.  tHEY ARE:
  485.     1.  mICROPROCESSORS ALLOW A SIGNIFICANT REDUCTION IN OVERALL SYSTEMS COST
  486.         FOR PRODUCTS CURRENTLY IN PRODUCTION.  rE-DESIGNING THEIR PRODUCTS
  487.         AROUND THE MICROPROCESSOR IS PERMITTING MANY MANUFACTURERS TO DEVELOP
  488.         OR MAINTAIN A PRICE ADVANTAGE OVER COMPETITORS.
  489.     2.  tHE REDUCTION IN COST OF MICROCOMPUTER SYSTEMS IS OPENING UP VAST NEW
  490.         MARKETS FOR MICROPROCESSORS.  a GREAT NUMBER OF SYSTEMS WHICH WERE
  491.         SIMPLY IMPOSSIBLE OR WERE AT BEST IMPRACTICAL, ARE BEING DESIGNED AND
  492.         MARKETED TODAY USING THE MODERN, LOW-COST MICROPROCESSORS.
  493.     3.  aT THE SAME TIME THE PRICE OF MICROPROCESSORS IS DROPPING, THE CAP-
  494.         ABILITY IS RAPIDLY EXPANDING.  tHIS ALSO ALLOWS THEM TO BE DESIGNED
  495.         INTO MORE SYSTEMS THAN EVER BEFORE.
  496.     aNYONE CONTEMPLATING A NEW DESIGN OR TRYING TO REDUCE COST IN AN EXISTING
  497. DESIGN MUST ASK HIMSELF IF A MICROPROCESSOR WILL SOLVE HIS PROBLEM.
  498.     tHE SUCCESS OF THE MICROPROCESSOR IS BASED ON THE FACT THAT IT ALLOWS THE
  499. DESIGN ENGINEER AND PROGRAMMER TO APPLY THEIR EXPERTISE IN SOLVING A MULTITUDE
  500. OF DESIGN PROBLEMS USING COST EFFECTIVE icS.  a SMALL NUMBER OF LARGE INTE-
  501. GRATED CIRCUITS CAN BE CONFIGURED TO SOLVE DESIGN PROBLEMS FROM THE SIMPLEST TO
  502. THE MOST COMPLEX.
  503.                                    -1-
  504.  
  505. ============================================================================
  506.  
  507.     iF THE SAME INTEGRATED CIRCUITS ARE USED TO SOLVE A MULTITUDE OF UNIQUE
  508. DESIGNS, THE FIRST QUESTION ONE MUST ASK IS, "wHAT MAKES THEM UNIQUE?"  tHE
  509. ANSWER IS:  pROGRAMMING.  aLTHOUGH MANY DIFFERENT DESIGNS MAY SHARE COMMON HARD-
  510. WARE, EACH HAS ITS OWN UNIQUE PROGRAM.  tHIS BRINGS US TO ANOTHER VERY IMPORTANT
  511. CHARACTERISTIC OF MICROCOMPUTERS.  tHE INTEGRATED CIRCUIT WHICH MAKES EACH SYS-
  512. TEM UNIQUE IS THE "rEAD-oNLY mEMORY" (rom) WHICH STORES THE SYSTEM PROGRAM.  iT
  513. IS RELATIVELY EASY FOR THE INTEGRATED CIRCUIT MANUFACTURER TO ESTABLISH THE
  514. PARTICULAR PATTERN WHICH UNIQUELY DEFINES THE DATA IN A rom.  aS A RESULT, THE
  515. TYPICAL CHARGE FOR "DESIGNING" A rom IS GENERALLY LESS THAN 10% OF THE COST OF
  516. DESIGNING A TOTALLY CUSTOM LOGIC CHIP.  fURTHER, THE USER BENEFITS FROM HIGH
  517. VOLUME STANDARD PRODUCT WHICH IS STILL UNIQUE FOR HIS OWN APPLICATION DUE TO THE
  518. "CUSTOMIZATION" OF ONE ELEMENT OF HIS SYSTEM.
  519.                                    -2-
  520.  
  521. ============================================================================
  522.  
  523. 1.0 designing with microcomputer systems
  524.  
  525.     iT WILL PROBABLY SURPRISE MANY DESIGNERS WHO ARE APPROACHING THE SUBJECT
  526. OF MICROCOMPUTER DESIGN FOR THE FIRST TIME WHEN THEY DISCOVER THAT DESIGNING A
  527. SYSTEM AROUND A MICROPROCESSOR IS MUCH THE SAME AS DESIGNING AROUND CONVENTIONAL
  528. LOGIC.  tHE TOTAL APPROACH IS THE SAME; THE PROCESS DIFFERS ONLY IN THE IMPLE-
  529. MENTATION OF EACH STEP.
  530.     a BRIEF EXAMINATION OF THE SYSTEM DESIGN PROCESS WILL HELP TO PUT MICRO-
  531. COMPUTER DESIGN IN PERSPECTIVE AND WILL ALSO ASSIST IN CLARIFYING THE PURPOSE
  532. OF THIS MANUAL.  oNE CAN EXPECT TO PERFORM THE FOLLOWING STEPS IN DESIGNING A
  533. SYSTEM:
  534.     1.  dEFINE THE REQUIREMENTS OF THE SYSTEM.  wHAT FUNCTIONS SHOULD IT
  535.         PERFORM?
  536.     2.  dEFINE BASIC SYSTEM COMPONENTS.
  537.     3.  cOMPLETE DESIGN DETAILS.
  538.     4.  bUILD AND TEST PROTOTYPES.
  539.     5.  fINALIZE DESIGN AND BEGIN PRODUCTION.
  540.     sTEP 1 IS TRUE FOR ANY SYSTEM AND, IN GENERAL, FOR ANY PRODUCT.  sTEP 2 IS
  541. THE FIRST POINT OF DEPARTURE FOR MICROPROCESSOR BASED DESIGNS.  iT IS AT THIS
  542. TIME THAT THE DESIGNER MUST CONSIDER THE POSSIBILITY OF USING A MICROPROCESSOR
  543. IN HIS SYSTEM.  fOR THE VERY COST-SENSITIVE APPLICATION HE MUST LOOK VERY CARE-
  544. FULLY AT TOTAL SYSTEMS COST.  cAN A MICROPROCESSOR DO THE JOB WITHIN THE PRICE
  545. CONSTRAINTS IMPOSED?  aT THE OTHER END OF THE DESIGN SPECTRUM, THE SYSTEM DE-
  546. SIGNER MUST EVALUATE THE CAPABILITY OF MICROPROCESSORS TO ASSURE HIMSELF THAT
  547. THE AVAILABLE DEVICES CAN IN FACT PERFORM THE REQUIRED FUNCTION.  wILL A MICRO-
  548. PROCESSOR BE FAST ENOUGH TO RUN THE SYSTEM?  wILL IT TAKE MORE THAN ONE PROCES-
  549. SOR?
  550.     tHE PURPOSE OF THIS MANUAL IS TO TEACH THE DESIGNER HOW TO EFFECTIVELY CON-
  551. FIGURE A MICROPROCESSOR-BASED SYSTEM AND TO EVALUATE THE PERFORMANCE OF THE SYS-
  552. TEM.  aFTER THIS STEP, THE DESIGN WILL BE COMPLETED BY DEVELOPMENT OF THE SYSTEM
  553. PROGRAM.  iMPLEMENTATION OF THE SYSTEM PROGRAM IS DISCUSSED IN THE pROGRAMMING
  554. mANUAL.
  555.  
  556.  
  557.                                    -3-
  558.  
  559. ============================================================================
  560.  
  561. 1.1 introduction to microcomputer systems
  562.  
  563. 1.1.1  oRGANIZATION OF A mICROCOMPUTER sYSTEM
  564.         fIGURE 1.1 ILLUSTRATES THE BASIC ORGANIZATION OF A MICROCOMPUTER
  565. SYSTEM.  iT IS IMPORTANT THAT THE DESIGNER UNDERSTAND THE OPERATION OF EACH
  566. COMPONENT AS WELL AS THE OPERATION OF EACH DATA PATH IN THE SYSTEM.  eACH
  567. OF THESE IS DISCUSSED SEPARATELY BELOW.  iN ADDITION, THE FOLLOWING DISCUS-
  568. SION DESCRIBES THE OPERATION OF THE OVERALL SYSTEM AND THE USE OF THE VARI-
  569. OUS SIGNAL PATHS.
  570.  
  571. 1.1.2   bASIC oPERATION
  572.     tHE MICROCOMPUTER IS A SYSTEM WHICH CAN BE CHARACTERIZED AS VERY
  573. SIMPLE IN ITS DETAIL AND VERY COMPLEX IN ITS OVERALL OPERATION.  iT
  574. CARRIES OUT RATHER COMPLEX TASKS BY PERFORMING A LARGE NUMBER OF SIMPLE
  575. OPERATIONS.  cONTROL OF THE SYSTEM IS PRIMARILY THE RESPONSIBILITY OF THE
  576. PROCESSOR.  bY PUTTING OUT ADDRESSES TO PROGRAM MEMORY, IT CONTROLS THE
  577. SEQUENCE OF OPERATIONS PERFORMED AND BY INTERPRETING AND EXECUTING THE
  578. INSTRUCTIONS WHICH IT RECEIVES FROM THE PROGRAM MEMORY, IT CONTROLS THE
  579. ACTUAL OPERATIONS CARRIED OUT BY THE SYSTEM.  tHE PROCESSOR IS BY FAR THE
  580. MOST COMPLEX DEVICE IN THE SYSTEM.  fOR THIS REASON, IT IS IMPORTANT TO
  581. OVERALL SYSTEM COST THAT THIS PART STAY THE SAME FOR MANY DIFFERENT APPLI-
  582. CATIONS.  iN THIS WAY, THE RELATIVELY HIGH DEVELOPMENT COST CAN BE SHARED
  583. BY THOUSANDS OF USERS.  iN ADDITION, THOSE THOUSANDS OF USERS CAN ALL BENE-
  584. FIT FROM THE ECONOMICS OF LARGE-SCALE PRODUCTION.
  585.     tHE PROCESSOR CAUSES THE SYSTEM TO PERFORM THE DESIRED OPERATIONS BY
  586. READING THE FIRST INSTRUCTION IN THE PROGRAM, AND PERFORMING THE VERY SIMPLE
  587. TASK DICTATED BY THE SPECIFIC PATTERN OF BITS IN THIS INSTRUCTION (REFERRED
  588. TO AS "EXECUTING" THAT INSTRUCTION).  iT THEN GOES ON TO THE NEXT INSTRUC-
  589. TION IN THE PROGRAM AND EXECUTES IT.  tHIS SIMPLE OPERATION OF FETCHING AN
  590. INSTRUCTION AND EXECUTING IT IS PERFORMED OVER AND OVER, EACH TIME ON THE
  591. NEXT INSTRUCTION IN SEQUENCE.  iN THIS WAY THE PROGRAM INSTRUCTS THE PRO-
  592. CESSOR TO BRING ABOUT THE DESIRED SYSTEM OPERATION.
  593.  
  594. 1.1.3   aDDRESSING tERMS AND cONCEPTS
  595.     bEFORE ENTERING INTO A DETAILED DISCUSSION OF THE SYSTEM OPERATION,
  596. IT WOULD BE USEFUL TO DEFINE A FEW TERMS AND TO INTRODUCE A FEW CONCEPTS
  597. CONCERNING ADDRESSING.  tHIS SHOULD ASSIST IN AN UNDERSTANDING OF THE
  598. DETAILED DISCUSSIONS WHICH FOLLOW.
  599.  
  600.  
  601.                                    -4-
  602.  
  603. ============================================================================
  604.  
  605.                                             i/o port
  606.                                             ____^____
  607.                                            /         \
  608.                                            ^ ^ ^ ^ ^ ^
  609.                                            {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  610.       -----------       -----------      --+-+-+-+-+-+--
  611.       {$7c}         {$7c}       {$7c}         {$7c}      {$7c}             {$7c}
  612.       {$7c}         {$7c}       {$7c}         {$7c}      {$7c}             {$7c}
  613.       {$7c} program {$7c}       {$7c}  data   {$7c}      {$7c} peripheral  {$7c}
  614.       {$7c} memory  {$7c}       {$7c} memory  {$7c}      {$7c} interface   {$7c}
  615.       {$7c} (rom)   {$7c}       {$7c} (ram)   {$7c}      {$7c}  device     {$7c}
  616.       {$7c}         {$7c}       {$7c}         {$7c}      {$7c}             {$7c}
  617.       {$7c}         {$7c}       {$7c}         {$7c}      {$7c}             {$7c}
  618.       -----------       -----------      ---------------
  619.         ^  ^  ^           ^ ^ ^ ^          ^  ^  ^ ^ ^
  620.         h  h  {$7c}           {$7c} {$7c} h h          {$7c}  h  h {$7c} {$7c}
  621.         h  h  ------------O-+-h-h-----------  h  h {$7c} {$7c}
  622.         h  h              {$7c} {$7c} h h             h  h {$7c} {$7c}
  623.       ==#==h==================h=#=============h==#=============  address
  624.            h              {$7c} {$7c} h               h    {$7c} {$7c}           bus
  625.            h              {$7c} {$7c} h               h    {$7c} {$7c}
  626.            h              {$7c} {$7c} h               h    {$7c} {$7c}
  627.       =====#==================#===============#================  data
  628.                           {$7c} {$7c}                      {$7c} {$7c}           bus
  629.                           {$7c} {$7c}                      {$7c} {$7c}
  630.  write   <----------------O-+----------------------- {$7c}
  631.  enable                     {$7c}                        {$7c}
  632.                             {$7c}                        {$7c}
  633.                             {$7c}   ------------------   {$7c}
  634.           -------------     {$7c}   {$7c}                {$7c}   {$7c}
  635.           {$7c}           {$7c}     {$7c}   {$7c}                {$7c}   {$7c}
  636.           {$7c}           {$7c}     {$7c}   {$7c}                {$7c}   {$7c}
  637.           {$7c}   clock   +-----O-->{$7c} microprocessor {$7c}<---
  638.           {$7c}           {$7c}         {$7c}                {$7c} interrupts
  639.           {$7c} generator {$7c}         {$7c}                {$7c}
  640.           {$7c}           {$7c}         {$7c}                {$7c}
  641.           {$7c}           {$7c}         {$7c}                {$7c}----> other
  642.           -------------         {$7c}                {$7c}      control
  643.                                 {$7c}                {$7c}<---- signals
  644.                                 {$7c}                {$7c}
  645.                                 ------------------
  646.  
  647.  
  648.                      oRGANIZATION OF mICROCOMPUTER sYSTEM
  649.                                   figure 1.1
  650.  
  651.  
  652.                                    -5-
  653.  
  654. ============================================================================
  655.  
  656. 1.1.3.1 bIT
  657.         tHE TERM "bIT" IS A GENERAL TERM REFERRING TO ANYTHING THAT CAN BE
  658. ASSIGNED TO BINARY VALUE, I.E., ANYTHING THAT CAN BE GIVEN A VALUE OF 0 OR
  659. 1.  tHUS, AN EIGHT-BIT DATA BUS IS A SET OF 8 LINES WHICH CAN BE ASSIGNED A
  660. VALUE OF LOGIC 0 OR LOGIC 1.  oN THESE LINES, THE LOGIC VALUES ARE REPRE-
  661. SENTED BY TWO DIFFERENT VOLTAGES OR CURRENTS.  sIMILARLY, A 16-BIT BINARY
  662. DISPLAY CAN BE BUILT WITH 16 INDIVIDUAL LAMPS.  tHE LOGIC 1 IS REPRESENTED
  663. BY THE LAMP BEING ON.
  664.     iN THIS TEXT, REFERENCE IS MADE TO AN 8-BIT DATA BUS, A 16-BIT
  665. ADDRESS BUS, 4 BITS OF DATA, 8-BIT REGISTERS, ETC.  iN ALL CASES, DEFINI-
  666. TION OF A BIT REMAINS THE SAME.
  667.  
  668. 1.1.3.2 aDDRESS sPACE
  669.         tHE CONCEPT OF AN ADDRESS SPACE IS VERY USEFUL IN UNDERSTANDING
  670. MICROCOMPUTER SYSTEMS.  tHE TERM "ADDRESS SPACE" REFERS TO THE TOTAL SET OF
  671. ADDRESSES WHICH THE MICROPROCESSOR CAN GENERATE.  fOR EXAMPLE, IF A PRO-
  672. CESSOR HAD ONLY 4 ADDRESS LINES, IT COULD GENERATE THE ADDRESSES 0 - 15
  673. (BINARY 0000 TO BINARY 1111).  tHIS WOULD NOT BE ADEQUATE FOR ANY MICROCOM-
  674. PUTER OPERATION AND, CONSEQUENTLY, THE TYPICAL PROCESSOR HAS BETWEEN 12 AND
  675. 16 ADDRESS LINES.  sINCE EACH LINE CAN ASSUME A VALUE OF 0 OR 1, THESE DE-
  676. VICES CAN USUALLY ADDRESS FROM 4,096 TO 65,536 SEPARATE ADDRESSES.  fIGURE
  677. 1.2 CONTAINS A PICTORIAL REPRESENTATION OF THE ADDRESS SPACE AVAILABLE IN
  678. A TYPICAL 8-BIT MICROCOMPUTER WITH SIXTEEN ADDRESS LINES.  iN ADDITION TO
  679. THE GENERAL ADDRESS SPACE, THIS FIGURE INTRODUCES THE page CONCEPT DIS-
  680. CUSSED BELOW.
  681.  
  682. 1.1.3.3 tHE aDDRESS pAGE
  683.         tHE CONCEPT OF A page IN MEMORY IS VERY IMPORTANT IN 8-BIT MICRO-
  684. COMPUTER SYSTEMS.  tHE INTERNAL ORGANIZATION OF AN 8-BIT PROCESSOR IS
  685. AROUND 8-BIT REGISTERS, 8-BIT PARALLEL DATA PATHS, ETC.  mOST ARITHMETIC
  686. OPERATIONS, LOGIC OPERATIONS, ETC. TAKE PLACE ON 8 BITS OF DATA AT A TIME.
  687. lIKEWISE, THE 16-BIT COUNTER WHICH DETERMINES WHICH INSTRUCTION IS BEING
  688. EXECUTED IS ACTUALLY DIVIDED INTO TWO 8-BIT BUSSES.  oNE CONTAINS BITS 0 - 7
  689. (LOW ORDER ADDRESS BITS) AND THE OTHER CONTAINS BITS 8 TO 15 (HIGH ORDER
  690. ADDRESS BITS).  wITH THIS IN MIND, ONE CAN THINK OF THE ADDRESS SPACE SHOWN
  691. IN fIGURE 1.2 AS CONSISTING OF 256 BLOCKS, EACH CONSISTING OF 256 SPECIFIC
  692. ADDRESS LOCATIONS.  eACH OF THESE BLOCKS IS REFERRED TO AS A "page"
  693.  
  694.  
  695.                                    -6-
  696.  
  697. ============================================================================
  698.  
  699.  
  700.     lANDSCAPE FIGURE REPRESENTING NUMBERS IN BINARY, DECIMAL AND HEX FORMAT.
  701.  
  702.  
  703.                                    -7-
  704.  
  705. ============================================================================
  706.  
  707. OF MEMORY.  tHE HIGH ORDER 8 BITS OF THE ADDRESS (adh) THEREFORE INDICATES
  708. IN WHICH PAGE THE ADDRESS IS LOCATED, AND THE LOW ORDER 8 BITS (adl) INDI-
  709. CATES A SPECIFIC ADDRESS ON THAT PAGE.
  710.     tHE FIRST PAGE IN MEMORY (adh = 00) IS REFERRED TO AS PAGE ZERO.
  711. tHE NEXT HIGHER ORDER PAGE (adh = 01) IS REFERRED TO AS PAGE 1, ETC.
  712.  
  713. 1.1.4   sYSTEM cOMPONENTS
  714.         tHE BLOCK DIAGRAM IN fIGURE 1.1 SHOWS THE BASIC COMPONENTS WHICH
  715. COMPRISE ALL MICROCOMPUTER  SYSTEMS.  eACH OF THESE BLOCKS MAY CONSIST OF
  716. ONE OR MORE INTEGRATED CIRCUITS AND, IN FACT, THE FUNCTIONS MAY BE COM-
  717. BINED INTO SINGLE CHIPS.  hOWEVER, THE BASIC OPERATION OF EACH REMAINS THE
  718. SAME.
  719.  
  720. 1.1.4.1 cLOCK gENERATOR
  721.         tHE CLOCK GENERATOR PRODUCES A CONTINUOUS WAVEFORM WHICH IS
  722. NORMALLY USED TO CONTROL ALL SIGNAL TRANSITIONS WITHIN THE SYSTEM.  iT ACTS
  723. AS THE "HEART" OF THE SYSTEM.  iN THE TYPICAL MICROCOMPUTER SYSTEM THE
  724. ADDRESS BUS WILL CHANGE DURING ONE HALF OF THE CLOCK CYCLE AND THE DATA
  725. WILL BE TRANSFERRED DURING THE SECOND HALF.  iN ADDITION TO INTERPRETING
  726. THE ADDRESS, DATA AND CONTROL LINES, THE PROCESSOR AND SUPPORT CHIPS MUST
  727. ALSO EXAMINE THE SYSTEM CLOCK TO KNOW WHEN TO PUT oUT DATA OR WHEN TO LATCH
  728. IN DATA GENERATED BY ANOTHER DEVICE.
  729.  
  730. 1.1.4.2 pROGRAM mEMORY
  731.         tHE PROGRAM MEMORY STORES THE SEQUENCE OF INSTRUCTIONS WHICH COM-
  732. PRISES THE SYSTEM PROGRAM.  lIKE ANY MEMORY, THIS UNIT PUTS A PATTERN OF
  733. 1'S AND 0'S ON THE DATA BUS IN RESPONSE TO THE ADDRESS ON THE ADDRESS BUS
  734. INPUT.  eACH UNIQUE ADDRESS SELECTS A SET OF 8 BINARY BITS AND PLACES THIS
  735. DATA ON THE DATA BUS.  nOTE THAT IT DOES NOT MATTER WHERE THE ADDRESS IS
  736. GENERATED OR WHERE THE DATA IS USED; THE MEMORY SIMPLY OBEYS THE RULE THAT,
  737. GIVEN AN ADDRESS, IT WILL PUT THE CORRESPONDING 8 BITS OF DATA ON THE DATA
  738. BUS.
  739.         a UNIQUE CHARACTERISTIC OF MOST MICROPROCESSOR-BASED SYSTEMS IS
  740. THAT THE PROGRAM IS USUALLY STORED IN "read-only" MEMORIES.  tHE DATA IS
  741. STORED IN A FIXED PATTERN OF BITS IN THE MEMORY.  fIGURE 1.3 SHOWS A SEC-
  742. TION OF A SEMICONDUCTOR read-only mEMORY (rom).
  743.  
  744.  
  745.                                    -8-
  746.  
  747. ============================================================================
  748.  
  749.  
  750.               [ pICTURE OF THE SILICON CHIP INSIDE THE rom ]
  751.  
  752.  
  753.                     pORTION OFrEAD oNLY mEMORY mATRIX
  754.                                figure 1.3
  755.  
  756.  
  757. sINCE THE DATA IS STORED IN THE PHYSICAL CONFIGURATION OF THE DEVICE, THE
  758. DATA WILL NOT BE LOST WHEN POWER IS DISCONNECTED FROM THE CHIP.  iN ADDI-
  759. TION, IT IS ONLY NECESSARY TO INSERT THE DEVICE INTO ITS SOCKET TO PRO-
  760. VIDE THE SYSTEM PROGRAM.  tHE TERM "rEAD-oNLY mEMORY" REFERS TO THE FACT
  761. THAT, IN SYSTEM OPERATION, IT IS IMPOSSIBLE FOR THE PROCESSOR TO CAUSE DATA
  762. TO BE STORED IN THE DEVICE.  tHE PROCESSOR CAN ONLY "read" THE DATA STORED
  763. IN THE DEVICE DURING THE MANUFACTURING PROCESS.  "reading" A MEMORY IN-
  764. VOLVES THE SIMPLE PROCESS OF SUPPLYING AN ADDRESS TO THE DEVICE TO OBTAIN
  765. THE CORRESPONDING 8 BITS OF DATA ON THE DATA BUS.
  766.  
  767. 1.1.4.3 dATA mEMORY
  768.         fOR TEMPORARY STORAGE OF INPUT DATA, THE RESULTS OF ARITHMETIC
  769. OPERATIONS, ETC., THE MICROCOMPUTER USES A rEAD/wRITE mEMORY, COMMONLY RE-
  770. FERRED TO AS A ram (rANDOM aCCESS mEMORY).  tHE PROCESSOR CAN STORE DATA
  771. IN THE ram (CALLED "writing" THE ram), OR IT CAN READ BACK THE DATA IT HAS
  772. STORED.  aS IN THE rom, EACH ADDRESS CORRESPONDS TO EIGHT MEMORY CELLS.
  773. hOWEVER, IN A ram THE DATA MUST BE PLACED INTO THE MEMORY BY THE PROCESSOR
  774. AND IS STORED IN CROSS-COUPLED LATCHES.  tURNING OFF THE POWER TO THE CHIP
  775. WILL CAUSE THE LOSS OF ALL DATA STORED THERE.  tHE DATA IS SAID TO BE
  776.  
  777.  
  778.                                    -9-
  779.  
  780. ============================================================================
  781.  
  782. "VOLATILE."  dATA IN A rom IS NOT LOST WHEN POWER IS DISCONNECTED FROM THE
  783. DEVICE; THE DATA IS THEREFORE REFERRED TO AS "NON-VOLATILE."
  784.         "writing" DATA INTO A ram TAKES PLACE WHEN THE wRITE-eNABLE SIGNAL
  785. GOES TO THE WRITE STATE.  aT THIS TIME THE DATA ON THE DATA BUS WILL BE
  786. STORED INTO THE EIGHT MEMORY CELLS CORRESPONDING TO THE ADDRESS ON THE AD-
  787. DRESS BUS.  tHE PROCESSOR CAN read THIS SAME DATA BY SUPPLYING THE PROPER
  788. ADDRESS AND KEEPING THE wRITE-eNABLE LINE IN THE rEAD STATE.
  789.  
  790. 1.1.4.4 iNPUT/oUTPUT dEVICES
  791.         tHE iNPUT/oUTPUT dEVICES ARE THE CIRCUITS WHICH INTERFACE THE
  792. PRINTER, KEYBOARD, DISPLAYS, ETC. TO THE PROCESSOR.  tHESE ALLOW THE PRO-
  793. CESSOR TO READ DATA FROM THE KEYBOARD, TO TEST THE STATE OF SENSORS AND
  794. SWITCHES, AND TO DISPLAY OR TO PRINT THE RESULTS OF INTERNAL OPERATIONS.
  795.         nO MATTER WHERE DATA IS GENERATED, IT MUST BE IN THE FORM OF 1'S
  796. AND 0'S BEFORE THE PROCESSOR CAN WORK WITH IT.  lIKEWISE, ACTIONS TO BE
  797. INITIATED BY THE PROCESSOR MUST BE TRIGGERED BY 1'S AND 0'S TRANSFERRED BY
  798. THE PROCESSOR TO A SET OF OUTPUT LINES.
  799.         tHE TRANSFER OF DATA FROM THE PROCESSOR TO AN OUTPUT DEVICE IS
  800. USUALLY ACCOMPLISHED BY "writing" THE DATA OUT IN MUCH THE SAME MANNER AS
  801. THE PROCESSOR WRITES DATA INTO ram.  eACH SET OF 8 INPUT OR OUTPUT LINES
  802. (REFERRED TO AS "port") IS GIVEN AN ADDRESS AND THE PROCESSOR SIMPLY WRITES
  803. DATA TO THAT ADDRESS.  fOR EACH "1" WRITTEN OUT TO THE PERIPHERAL PORT AN
  804. OUTPUT IS SET HIGH AND FOR EACH "0," THE CORRESPONDING OUTPUT IS SET LOW.
  805.         aLTHOUGH THE BASIC CONCEPT OF PERIPHERAL CONTROL IS SIMPLE, THE
  806. ACTUAL IMPLEMENTATION OF THESE INTERFACES CAN INVOLVE MANY SOPHISTICATED
  807. TECHNIQUES DESIGNED TO ALLOW THE PROCESSOR TO MAXIMIZE ITS ABILITY TO CON-
  808. TROL PERIPHERALS AND PERFORM INTERNAL OPERATIONS CONCURRENTLY.  tHESE TECH-
  809. NIQUES ARE DISCUSSED IN DETAIL IN cHAPTER 2 OF THIS MANUAL.
  810.  
  811. 1.1.4.5 tHE mICROPROCESSOR
  812.         aT FIRST GLANCE IT MAY SEEM STRANGE TO DISCUSS THE SUPPORT CHIPS
  813. IN THE MICROPROCESSOR-BASED SYSTEM BEFORE MENTIONING THE PROCESSOR.  hOW-
  814. EVER, THIS APPROACH IS NECESSITATED BY THE FACT THAT MOST OF THE INPUTS AND
  815. OUTPUTS ON THE PROCESSOR ARE AIMED AT PROPERLY CONTROLLING THE SUPPORT CHIPS
  816. AND PERIPHERAL DEVICES DISCUSSED ABOVE.
  817.         tHE ADDRESS BUS, THE BI-DIRECTIONAL DATA BUS AND THE wRITE-eNABLE
  818. LINE ALLOW THE PROCESSOR TO EXERCISE DIRECT CONTROL OVER THE REST OF THE
  819. SYSTEM.  tHE ADDRESS BUS PUTS OUT ADDRESSES TO CONTROL THE SOURCE OR
  820. DESTINATION OF DATA TRANSFERS.  tHESE ADDRESSES ARE DERIVED FROM VARIOUS
  821.  
  822.  
  823.                                    -10-
  824.  
  825. ============================================================================
  826.  
  827. SOURCES WITHIN THE PROCESSOR.  dURING THE FETCH OF INSTRUCTIONS FROM PRO-
  828. GRAM MEMORY, THE ADDRESSES ARE USUALLY DERIVED FROM A COUNTER WHICH CON-
  829. TROLS EXECUTION OF SEQUENTIAL INSTRUCTIONS.  aDDRESSES FOR DATA TRANSFERS
  830. BETWEEN THE PROCESSOR AND ram ARE USUALLY DERIVED DIRECTLY FROM THE PROGRAM
  831. OR ARE CALCULATED FROM THE DATA IN THE PROGRAM AND DATA IN INTERNAL REGIS-
  832. TERS.
  833.         tHE BI-DIRECTIONAL DATA BUS SERVES AS A PATH FOR TRANSFERRING DATA
  834. INTO AND OUT OF THE PROCESSORS.  tHE DIRECTION OF THE DATA TRANSFER IS DE-
  835. TERMINED BY THE wRITE-eNABLE LINE.
  836.         aNOTHER SPECIAL FUNCTION FOUND IN MODERN MICROCOMPUTER SYSTEMS IS
  837. THE INTERRUPT.  tHIS FUNCTION ALLOWS THE PERIPHERAL DEVICES TO DIRECTLY
  838. AFFECT THE OPERATION OF THE PROCESSOR.  wHEN THE INTERRUPT SIGNAL IS GENER-
  839. ATED, THE PROCESSOR USUALLY COMPLETES ITS CURRENT INSTRUCTION AND THEN,
  840. UNDER PROGRAM CONTROL, WILL RESPOND TO THE INTERRUPT.  tHE IMPORTANCE OF
  841. THIS FUNCTION IS THAT IT ALLOWS THE PROCESSOR TO EXECUTE THE SYSTEM PROGRAM
  842. WITHOUT REQUIRING THE SYSTEM PROGRAM TO MONITOR THE STATUS OF THE PERIPHERAL
  843. DEVICE.  tHE SOFTWARE WHICH HANDLES THE OPERATION OF EACH PERIPHERAL WILL
  844. BE EXECUTED ONLY WHEN REQUIRED.
  845.  
  846.  
  847.                                    -11-
  848.  
  849. ============================================================================
  850.  
  851. 1.2     introduction to the mcs6sox microprocessor famtH y
  852.     tHE INITIAL mos tECHNOLOGY, iNC. MICROPROCESSOR OFFERING CONSISTS OF THE
  853. mcs6501, WHICH IS mc6800 COMPATIBLE; THE mCs6502, WHICH HAS CLOCK DRIVERS ON-
  854. CHIP; AND THREE 28-PIN PROCESSORS, THE mcs6503, mCs6504, AND mcs6505.  aLL OF
  855. THESE DEVICES ARE AIMED AT A SPECIFIC RANGE OF APPLICATIONS.  tHEREFORE, IT IS
  856. IMPORTANT TO DEVELOP AN UNDERSTANDING OF THE CAPABILITIES OF EACH AND THE DIF-
  857. FERENCES BETWEEN THEM.
  858.     tHE mcs6501 HAS APPLICATION IN EXISTING n6800 SYSTEMS WHERE CONVERSION TO
  859. THE mos tECHNOLOGY, iNC. PROCESSOR IS TO BE PERFORMED.  tHIS PROCESSOR REQUIRES
  860. THE FULL HIGH-LEVEL TWO-PHASE CLOCKS OF THE n6800 SYSTEM.  tHE mCs6502 IS EX-
  861. PECTED TO FIND APPLICATION IN ALL NEW DESIGNS WHICH REQUIRE A FULL 16-BIT AD-
  862. DRESS BUS.  hOWEVER, IN THE SMALL COST-SENSITIVE SYSTEM, THE 28-PIN PROCESSORS
  863. CAN REPRESENT A SAVINGS IN BOTH PROCESSOR COST AND PRINTED CIRCUIT BOARD AREA.
  864. tHE mcs6503, mcs6504, AND mcs6505 WILL FIND APPLICATION IN ALL NEW DESIGNS WHERE
  865. THE SYSTEM WILL OPERATE WITHIN THE ADDRESSING LIMITS.
  866.  
  867.     1.2.1  tHE mcs6501
  868.            tHE mCS6501 IS THE FIRST MEMBER OF THE MICROPROCESSOR FAMILY TO BE
  869.     INTRODUCED.  iT IS DESIGNED TO BE PIN COMPATIBLE WITH THE m6800 AND THERE-
  870.     FORE CONVERSION FROM THE mc6800 TO THE mos tECHNOLOGY, iNC. mCs6501 RE-
  871.     QUIRES ONLY THAT THE SYSTEM BE REPROGRAMMED.  tHIS ALLOWS THE m6800 USER
  872.     TO TAKE FULL ADVANTAGE OF THE SOFTWARE POWER (ADDRESSING MODES, ETC.) OF
  873.     THE mcs650x PROCESSOR FAMILY.
  874.            aLTHOUGH THE CONVERSION PROCESS IS FAIRLY SIMPLE, IT IS IMPORTANT TO
  875.     KEEP IN MIND THE DIFFERENCES BETWEEN THE mc6800 AND THE mcs6501.  tHE PINS
  876.     ON THE mcs6501 ALL DO THE SAME GENERAL FUNCTION AS THOSE ON THE mc6800 BUT
  877.     THE FUNCTION PERFORMED MAY DIFFER SOMEWHAT IN DETAIL.  fIGURE 1.4 CONTAINS
  878.     A DETAILED, PIN-FOR-PIN COMPARISON OF THESE TWO PROCESSORS.  a THOROUGH
  879.     UNDERSTANDING OF THIS TABLE, ALONG WITH AN UNDERSTANDING OF THE mcs650x
  880.     SOFTWARE WILL ALLOW THE SYSTEM DESIGNER TO PERFORM THE CONVERSION WITH VERY
  881.     LITTLE DIFFICULTY.  tHE mcs6501 PROVIDES A FULL 16-BIT ADDRESS BUS, 8-BIT
  882.     DATA BUS AND TWO INTERRUPTS.
  883.  
  884.  
  885.                                    -12-
  886.  
  887. ============================================================================
  888.  
  889.  -------------------------------------+----------------------------------
  890.            motorola    mos technology {$7c}        motorola    mos technology
  891.    pin #     6800           6501      {$7c} pin #    6800           6501
  892.  -------------------------------------+----------------------------------
  893.     1        vSS            vSS       {$7c}  21      vSS            vSS
  894.     2*       hALT           rEADY     {$7c}  22      a12            a12
  895.     3        p1 (IN)        p1 (IN)   {$7c}  23      a13            a13
  896.     4        irq            irq       {$7c}  24      a14            a14
  897.     5*       vma            vma       {$7c}  25      a15            a15
  898.     6        nmi            nmi       {$7c}  26      d7             d7
  899.     7        ba             ba        {$7c}  27      d6             d6
  900.     8        vDD            vDD       {$7c}  28      d5             d5
  901.     9*       a0             a0        {$7c}  29      d4             d4
  902.     10       a1             a1        {$7c}  30      d3             d3
  903.     11       a2             a2        {$7c}  31      d2             d2
  904.     12       a3             a3        {$7c}  32      d1             d1
  905.     13       a4             a4        {$7c}  33      d0             d0
  906.     14       a5             a5        {$7c}  34      r/w            r/w
  907.     15       a6             a6        {$7c}  35      n.c.           n.c.
  908.     16       a7             a7        {$7c}  36      dbe            dbe
  909.     17       a8             a8        {$7c}  37      p2 (IN)        p2 (IN)
  910.     18       a9             a9        {$7c}  38*     n.c.           n.c.
  911.     19       a10            a10       {$7c}  39*     tsc
  912.     20       a11            aLL       {$7c}  40      rESET          rESET
  913.                                       {$7c}
  914.  -------------------------------------+----------------------------------
  915.  
  916.                                *  differences
  917.  
  918.  ------------------------------------------------------------------------
  919.   pin #           motorola 6800                 mos technology 6501
  920.  ------------------------------------------------------------------------
  921.  
  922.     2   hALT - sTOPS PROCESSOR AFTER      rEADY - sTOPS pROCESSOR DURING
  923.         COMPLETING CURRENT INSTRUCTION.   CURRENT INSTRUCTION.  aDDRESS
  924.         aDDRESS bUS IN OFF STATE.         bUS REFLECTS CURRENT ADDRESS
  925.                                           BEING READ.
  926.     5   vma - sIGNAL DETERMINES WHEN      vma - nO NEED FOR vALID mEMORY
  927.         ADDRESS FRON PROCESSOR IS         aDDRESS sIGNAL.  aLL ADDRESSES
  928.         vALID.                            ARE VALID AT ALL TIMES.  tHIS
  929.                                           PIN IS INTERNALLY TIED TO vDD
  930.                                           AND CAN BE USED AS A vma SIGNAL
  931.                                           IN HIGH STATE.
  932.     9   aDDRESS bUS USES tRI-sTATE        aDDRESS bUS USES ttl LEVEL
  933.         oUTPUT bUFFERS.                   oUTPUT dRIVERS.
  934.     38  nO cONNECTION
  935.     39  t.s.c. - tHREE-sTATE cONTROL      n.c. - nO NEED FOR tsc SINCE
  936.         cONTROLS ALL tHREE-sTATE          aDDRESS IS NOT tHREE-sTATE AND
  937.         bUFFERS, aDDRESS bUS AND          dbe cONTROLS tHREE-sTATE OF
  938.         dATA bUS.                         dATA bUS.
  939.  
  940.  
  941.                             pINOUT cOMPARISON
  942.                 mos technology inc. mcs65o1, motorola mc6800
  943.                                 figure 1.4
  944.  
  945.  
  946.                                    -13-
  947.  
  948. ============================================================================
  949.  
  950. 1.2.2   tHE mcs6502
  951.         tHE SECOND MEMBER OF THE PROCESSOR FAMILY IS A 40-PIN DEVICE WHICH
  952. PROVIDES ALL THE FEATURES OF THE mcs6501, ALONG WITH AN "ON-THE-CHIP" OSCIL-
  953. LATOR AND CLOCK DRIVERS.  tHIS DEVICE SHOULD BE USED IN ALL NEW DESIGNS
  954. WHICH REQUIRE THE CAPABILITY OF THE 40-PIN PROCESSORS.  tHE CLOCK DRIVERS
  955. CAN BE DRIVEN WITH A SINGLE ttl LEVEL SQUARE WAVE OR WITH THE INTERNAL
  956. OSCILLATOR.  tHE FREQUENCY OF OPERATION OF THE INTERNAL OSCILLATOR CAN BE
  957. SET BY ATTACHING AN r-c COMBINATION TO THE CHIP AND, IF THE CLOCK STABILITY
  958. IS REQUIRED, BY ATTACHING A CRYSTAL BETWEEN THE OSCILLATOR AND GROUND.
  959. tHIS FEATURE TOTALLY ELIMINATES THE PROBLEMS ENCOUNTERED IN GENERATING
  960. mc6800 TYPE CLOCK SIGNALS.
  961.     aS IN THE mcs6501, THE mcs6502 PROVIDES A FULL 16-BIT ADDRESS BUS,
  962. 8-BIT BI-DIRECTIONAL DATA BUS AND TWO INTERRUPTS.  iN ADDITION, THE mcs6502
  963. PROVIDES A SYNC SIGNAL WHICH INDICATES THOSE CYCLES IN WHICH THE PROCESSOR
  964. IS FETCHING AN OPERATION CODE FROM PROGRAM MEMORY.
  965.  
  966. 1.2.3   tHE mcs6503, mcs6504 AND mcs6505
  967.         tHREE 28-PIN VERSIONS OF THE PROCESSOR ARE AVAILABLE.  tHESE THREE
  968. DIFFER IN THE NUMBER OF ADDRESS LINES AND THE NUMBER OF INTERRUPTS PROVIDED.
  969. hAVING ALL THREE OPTIONS AVAILABLE ALLOWS THE DESIGNER TO TAILOR HIS PRO-
  970. CESSOR TO HIS PARTICULAR APPLICATION.
  971.         tHE mgs6504 PROVIDES A TOTAL OF 13 ADDRESS PINS AND CAN, THEREFORE,
  972. ADDRESS A FULL 8k BYTES IN ITS MEMORY SPACE.  hOWEVER, THIS PART PROVIDES
  973. ONLY ONE INTERRUPT REQUEST INPUT, irq.  tHE NON-MASKABLE INTERRUPT (nmi) IS
  974. NOT INCLUDED IN THE PINOUTS OF THIS DEVICE.
  975.         tHE mcs6503 AND mcs6505 PROVIDE ONE LESS ADDRESS LINE.  iN THE
  976. mcs6503, THIS ADDRESS LINE IS REPLACED WITH A SECOND INTERRUPT INPUT, nmi.
  977. iN THE mcs6505, THIS ADDRESS LINE IS REPLACED BY THE rdy SIGNAL.  a1L OTHER
  978. FUNCTIONS ON THESE PROCESSORS ARE THE SAME.  tHE DETAILS OF EACH OF THESE
  979. PINS ARE DISCUSSED IN THE FOLLOWING SECTIONS.
  980.         tHE OPERATION OF THE VARIOUS BUSSES, CONTROL SIGNALS, ETC. IS EX-
  981. ACTLY THE SAME ON ALL mcs650x PRODUCTS WITH ALL PROCESSORS OBEYING THE SYS-
  982. TEM SPECIFICATIONS DISCUSSED IN sECTION 1.3 OF THIS MANUAL.
  983.  
  984.  
  985.                                    -14-
  986.  
  987. ============================================================================
  988.  
  989. 1.3 mcs6soo system concepts
  990.  
  991. 1.3.1   bUS sTRUCTURE
  992.         tHE mcs6500 MICROCOMPUTER SYSTEM IS ORGANIZED AROUND TWO PRIMARY
  993. BUSSES.  eACH BUS CONSISTS OF A SET OF PARALLEL PATHS WHICH CAN BE USED TO
  994. TRANSFER BINARY INFORMATION BETWEEN THE DEVICES IN A SYSTEM.  tHE FIRST
  995. BUS, KNOWN AS THE address bus, IS USED TO TRANSFER THE ADDRESS GENERATED BY
  996. THE PROCESSOR TO THE ADDRESS INPUTS OF THE MEMORY AND PERIPHERAL INTERFACE
  997. DEVICES.  tHE PROCESSOR IS THE ONLY SOURCE OF ADDRESSES IN A NORMAL SYSTEM,
  998. SO THIS BUS IS REFERRED TO AS "UNIDIRECTIONAL."  tHE ADDRESS BUS CONSISTS
  999. OF 16 LINES ON THE mcs6501 AND mcs6502.  tHIS ALLOWS THE PROCESSOR TO
  1000. ACCESS (read OR write) UP TO A TOTAL OF 65,536 MEMORY WORDS, REGISTERS, ETC.
  1001. iN THE mcs6503, mcs6504, AND mcs65o5, THE ADDRESS BUS CONTAINS FEWER LINES;
  1002. THEREFORE, THEY OPERATE WITH A SMALLER "ADDRESS SPACE."  tHIS IS DISCUSSED
  1003. IN DETAIL IN sECTION 1.1.3.
  1004.         tHE DATA BUS IN THE mcs6500 MICROCOMPUTER SYSTEM CONSISTS OF AN 8-BIT
  1005. BI-DIRECTIONAL DATA PATH.  tHESE LINES TRANSFER DATA FROM THE PROCESSOR TO
  1006. THE SELECTED MEMORY WORD, ETC. DURING A write OPERATION AND FROM MEMORY
  1007. INTO THE PROCESSOR DURING A read OPERATION.  aLL DATA AND ALL INSTRUCTIONS
  1008. ARE TRANSMITTED ON THE DATA BUS.
  1009.         tHE DIRECTION OF THE DATA TRANSFERS IS CONTROLLED BY THE read/write
  1010. (r/w) LINE ON THE PROCESSOR.  tHIS LINE PERFORMS THE wRITE eNABLE FUNCTION
  1011. DESCRIBED IN sECTION 1.1.4.3.  aS LONG AS THE r/w LINE IS HIGH (> 2.4V dc),
  1012. ALL DATA TRANSFERS WILL TAKE PLACE FROM MEMORY TO THE PROCESSOR (read OPERA-
  1013. TION).  tHIS LINE WILL GO LOW ONLY WHEN THE PROCESSOR IS GOING TO write DATA
  1014. OUT TO MEMORY.
  1015.         aS IN MOST MICROCOMPUTER SYSTEMS, THE TIMING OF ALL DATA TRANSFERS
  1016. IS CONTROLLED BY THE SYSTEM CLOCK.  tHE CLOCK ITSELF IS ACTUALLY TWO NON-
  1017. OVERLAPPING SQUARE WAVES.  tHIS TWO-PHASE CLOCK SYSTEM CAN BEST BE THOUGHT
  1018. OF AS TWO ALTERNATING POSITIVE-GOING PULSES.  tHIS TEXT WILL REFER TO THE
  1019. CLOCKS AS pHASE oNE AND pHASE tWO.  a pHASE oNE CLOCK PULSE IS THE POSITIVE
  1020. PULSE DURING WHICH THE ADDRESS LINES CHANGE AND A pHASE tWO CLOCK PULSE IS
  1021. THE POSITIVE PULSE DURING WHICH THE DATA IS TRANSFERRED.  tHE TIMING OF THE
  1022. SIGNALS ON THE aDDRESS bUS, dATA bUS, AND r/w LINE ARE SHOWN IN fIGURES 1.5
  1023. THROUGH 1.8.  aLL SIGNAL TRANSITIONS ARE SPECIFIED WITH RESPECT TO THE
  1024. pHASE oNE AND pHASE tWO CLOCK SIGNALS.
  1025.  
  1026.  
  1027.                                    -15-
  1028.  
  1029. ============================================================================
  1030.  
  1031. iN PARTICULAR, THE ADDRESS LINES AND THE r/w LINE WILL STABILIZE DURING
  1032. pHASE oNE, AND ALL DATA TRANSFERS WILL TAKE PLACE DURING pHASE tWO.
  1033.         tHE SPECIFIC TIMING SPECIFICATIONS FOR OPERATING AT A 1 mhZ CLOCK
  1034. RATE ARE ALSO GIVEN IN fIGURE 1.5.  nOTE THAT THE SEQUENCE OF OPERATIONS
  1035. WILL BE THE SAME FOR ALL PROCESSORS.  hOWEVER, THESE TIMING SPECIFICATIONS
  1036. WILL CHANGE FOR DEVICES WHICH ARE SPECIFIED TO OPERATE FASTER THAN 1.0 mhZ.
  1037. tHE ADDRESS IS GUARANTEED TO BE STABLE 300 NANOSECONDS AFTER THE LEADING
  1038. EDGE OF pHASE oNE, AND THE DATA MUST BE STABLE 100 NANOSECONDS BEFORE THE
  1039. TRAILING EDGE OF pHASE tWO.  aT 1.0 mhZ OPERATION, THIS ALLOWS THE MEMORY
  1040. DEVICES APPROXIMATELY 575 NS TO MAKE DATA AVAILABLE ON THE DATA BUS.  aL-
  1041. THOUGH THERE ARE MANY FACTORS WHICH DETERMINE THE ACTUAL DATA AND ADDRESS
  1042. GENERATED WITHIN THE SYSTEM, IT IS IMPORTANT TO KEEP IN MIND THAT THE
  1043. BASIC OPERATION SHOWN IN fIGURES 1.6, 1.7 AND 1.8 DOES NOT CHANGE. tHESE
  1044. FIGURES SPECIFY THE SYSTEM BUS DISCIPLINE WHICH APPLIES TO ALL mos tECHNOL-
  1045. OGY, iNC. PROCESSORS AND SUPPORT CHIPS.
  1046.  
  1047. 1.3.2   pROCESSOR iNTERRUPTS
  1048.         tHROUGH THE GENERATION OF PROCESSOR INTERRUPT SIGNALS, THE PERI-
  1049. PHERAL DEVICES (PRINTERS, KEYBOARDS, ETC.) CAN REQUEST SERVICE FROM THE
  1050. PROCESSOR.  aLTHOUGH THIS TECHNIQUE IS RELATIVELY SIMPLE IN CONCEPT, THE
  1051. PROPER GENERATION AND CONTROL OF INTERRUPTS IS ONE OF THE MOST IMPORTANT
  1052. PROBLEMS WHICH THE DESIGNER WILL FACE.  tOTAL SYSTEM CAPABILITY CAN BE
  1053. GREATLY EXPANDED IF THE PROCESSOR IS REQUIRED TO EXECUTE THE PERIPHERAL
  1054. SOFTWARE ONLY WHEN IT IS ABSOLUTELY NECESSARY.  tHIS IS THE GOAL OF A WELL-
  1055. PLANNED INTERRUPT STRUCTURE.  tHE INTERRUPT STRUCTURE IS VERY MUCH A SYS-
  1056. TEMS SOPHISTICATION PROBLEM SINCE IT IS THE ENTIRE SYSTEM WHICH MUST PRO-
  1057. PERLY RESPOND TO THE INTERRUPT INPUTS.  iN FACT, THE ACTUAL SIGNALS TO
  1058. WHICH THE SYSTEM MUST RESPOND ARE USUALLY APPLIED TO THE INPUTS OF A PERI-
  1059. PHERAL INTERFACE DEVICE.  iN THIS DEVICE, THE INTERRUPTS ARE ENABLED, DIS-
  1060. ABLED AND LATCHED UNTIL THE INTERRUPT IS PROCESSED.  tHE PERIPHERAL INTER-
  1061. FACE DEVICE GENERATES SIGNALS WHICH MEET THE REQUIREMENTS OF THE PROCESSOR
  1062. INTERRUPT INPUTS.
  1063.         tHERE ARE TWO INTERRUPT INPUT LINES TO THE MICROPROCESSOR, irq
  1064. (iNTERRUPT rEQUEST) AND nmi  (nON-mASKABLE iNTERRUPT).
  1065.         sINCE THE REQUIREMENTS OF THE TWO INTERRUPT INPUTS DIFFER, THEY WILL
  1066. BE DISCUSSED SEPARATELY BELOW.  tHE RESPONSE OF THE PROCESSOR TO THESE IN-
  1067. PUTS IS VERY SIMILAR, HOWEVER, AFTER THE INTERRUPT IS RECOGNIZED.  fOR THIS
  1068.  
  1069.  
  1070.                                    -16-
  1071.  
  1072. ============================================================================
  1073.  
  1074.  
  1075. tHE FOLLOWING THREE PAGES CONTAIN fIGURE 1.5 TO 1.8 SHOWING DATA AND DIAGRAMS
  1076. ABOUT THE IN- AND EXTERNAL TIMING OF THE 650x WHICH CAN BE FOUND IN ANY
  1077. DATABOOK ABOUT THE 6502.
  1078.  
  1079.  
  1080.                                -17, 18, 19-
  1081.  
  1082. ============================================================================
  1083.  
  1084.  
  1085. REASON, THE INTERNAL OPERATION OF THE PROCESSOR DURING INTERRUPT SERVICING
  1086. IS DISCUSSED IN THE DETAILED ANALYSIS OF THE PROCESSOR CHIP.  iNSTEAD, THIS
  1087. SECTION WILL CONCENTRATE ON THE SYSTEM LEVEL CONSIDERATIONS WHICH ARE RE-
  1088. QUIRED TO ASSURE PROPER OPERATION OF THE INTERRUPT STRUCTURE.
  1089.  
  1090. 1.3.2.1 aPPLICATIONS FOR iNTERRUPTS
  1091.         oNE OF THE MOST IMPORTANT TASKS FACING THE MICROCOMPUTER SYSTEM
  1092. DESIGNER IS THE DETERMINATION OF THOSE SIGNALS WHICH WILL CAUSE PROCESSOR
  1093. INTERRUPTS AND THOSE OPERATIONS WHICH WILL TAKE PLACE IN RESPONSE TO THESE
  1094. INTERRUPTS.  a DETAILED DISCUSSION OF THESE CONSIDERATIONS IS INCLUDED IN
  1095. cHAPTER 2 OF THE MANUAL; HOWEVER, A FEW EXAMPLES OF INTERRUPT-DRIVEN OPERA-
  1096. TIONS WILL BE PRESENTED HERE TO HELP THE DESIGNER DEVELOP AN UNDERSTANDING
  1097. FOR WHY THIS TECHNIQUE IS USED EXTENSIVELY IN MICROCOMPUTER SYSTEMS.
  1098.  
  1099.         eXAMPLE 1--a fULLY-dECODED kEYBOARD
  1100.         tHE PROBLEM OF DATA ENTRY IS SOLVED IN MANY SYSTEMS BY A KEY-
  1101. BOARD.  iN SMALL SYSTEMS, THE INTERPRETATION OF THE BINARY CODE ASSOCIATED
  1102. WITH EACH KEY CAN BE DETERMINED BY THE PROCESSOR.  hOWEVER, IN LARGE DATA
  1103. TERMINALS, THE KEYBOARD USUALLY INCLUDES AN ENCODER WHICH GENERATES THE
  1104. UNIQUE CODE CORRESPONDING TO EACH KEY.  wHEN A KEY IS CLOSED, THE CORRE-
  1105. SPONDING CODE IS PLACED ON THE OUTPUT PINS AND A STROBE SIGNAL IS GENERATED
  1106. TO INDICATE THAT A KEY HAS BEEN PRESSED.
  1107.         tHE  KEYBOARD REPRESENTS A PERFECT CANDIDATE FOR INTERRUPT-
  1108. DRIVEN OPERATION.  tHE INTERRUPTS OCCUR RELATIVELY INFREQUENTLY AND THE
  1109. OPERATION TO BE PERFORMED IS RELATIVELY SIMPLE.  tHE KEYBOARD STROBE LINE
  1110. IS CONNECTED DIRECTLY TO AN INTERRUPT INPUT ON A PERIPHERAL INTERFACE DE-
  1111. VICE.  eACH TIME A STROBE SIGNAL IS GENERATED, AN INTERRUPT OCCURS, THE
  1112. PROCESSOR READS THE DATA ON THE PERIPHERAL PORT INTO MEMORY, ANALYZES THIS
  1113. DATA AND THEN RETURNS TO THE PROGRAM THAT WAS IN PROCESS.  iF NO KEYS ARE
  1114. PRESSED, THE PROCESSOR SPENDS NO TIME AT ALL IN SERVICING THE KEYBOARD.
  1115.         wITHOUT THE INTERRUPTS, THE PROCESSOR WOULD HAVE TO READ THE
  1116. KEYBOARD DATA INTO MEMORY PERIODICALLY IN ORDER TO DETECT AN ACTIVE KEY.
  1117. tHIS OPERATION WOULD BE PERFORMED ABOUT EVERY FIFTY TO ONE HUNDRED MILLI-
  1118. SECONDS.  iN ADDITION TO DETECTING AN ACTIVE KEY, THE PROCESSOR MUST MAKE
  1119. SURE THAT EACH SEPARATE ACTIVATION OF A KEY IS DETECTED ONCE AND ONLY ONCE.
  1120. tHIS IS DISCUSSED IN sECTIONS 1.3.2.5 AND 1.3.2.6.  tHIS SOFTWARE IS MUCH
  1121. MORE COMPLEX THAN THE SIMPLE INTERRUPT ROUTINE.  aNOTHER DRAWBACK OF NON-
  1122. INTERRUPT PROCESSING IS THAT THE PROCESSOR IS REQUIRED TO SPEND A PERIODIC
  1123.  
  1124.  
  1125.                                    -20-
  1126.  
  1127. ============================================================================
  1128.  
  1129. PORTION OF ITS TIME ON THE KEYBOARD.  iN MANY SYSTEMS, THIS IS NOT A PROB-
  1130. LEM, BUT IN LARGE TERMINALS, ETC., THE TIME SPENT CHECKING FOR KEYBOARD
  1131. STROBES COULD BE BETTER SPENT IN OTHER OPERATIONS.  tHE DESIGNER MUST,
  1132. THEREFORE, ASK HIMSELF IF THE SYSTEM UNDER DEVELOPMENT IS SUCH THAT THE
  1133. PROCESSOR CAN PERFORM THE KEYBOARD STROBE CHECKING FUNCTION WHILE STILL
  1134. COMPLETING ITS OTHER TASKS.
  1135.  
  1136.         eXAMPLE 2--a sCANNED dISPLAY
  1137.         aLTHOUGH TIME IS A MAJOR FACTOR IN DETERMINING THE NECESSITY OF
  1138. INTERRUPTS, THE INTERRUPT TECHNIQUE CAN ALSO BE EXTREMELY USEFUL WHEN PER-
  1139. FORMING PARALLEL OPERATIONS.  a PRIME EXAMPLE OF THIS CAN BE FOUND IN A
  1140. SYSTEM WHICH CONTAINS A DIGITAL DISPLAY AND/OR PRINTER.
  1141.         a DIGITAL DISPLAY IS USUALLY "SCANNED" SUCH THAT EACH DIGIT IS
  1142. DRIVEN FOR A SHORT PERIOD OF TIME IN SEQUENCE.  tHE ENTIRE DISPLAY IS
  1143. SCANNED AT A RATE WHICH THE EYE CANNOT DETECT.  hOWEVER, IT CAN BE NOTED
  1144. HERE THAT THE DISPLAY REQUIRES SCAN-RELATED ATTENTION FROM THE PROCESSOR
  1145. AT FIXED INTERVALS.  iT IS VERY DIFFICULT FOR THE PROCESSOR TO CALCULATE
  1146. REPETITIVE TIME INTERVALS WHILE IT IS PERFORMING ITS NORMAL SYSTEM PROGRAM
  1147. ROUTINES.  tHE PROCESSOR WOULD MUCH PREFER TO RUN THE SYSTEM PROGRAM WITH-
  1148. OUT CONSIDERATION FOR THE DISPLAY TIME INTERVALS, ONLY EXECUTING THE DISPLAY
  1149. SOFTWARE WHEN IT IS REQUIRED.
  1150.         a SOLUTION TO THE ABOVE PROBLEM IS THE GENERATION OF PROCESSOR
  1151. INTERRUPTS AT FIXED INTERVALS USING AN EXTERNAL COUNTER OR CLOCK.  eACH
  1152. TIME AN INTERRUPT OCCURS, THE DATA FOR THE NEXT DIGIT IN THE DISPLAY IS
  1153. PLACED ON AN OUTPUT PORT.  tHE PROCESSOR THEN RETURNS TO THE PROGRAM IT HAD
  1154. BEEN EXECUTING.
  1155.         bOTH OF THE OPERATIONS DESCRIBED ABOVE REPRESENT SOLUTIONS TO
  1156. SYSTEM PROBLEMS.  eVENTS WHICH HAPPEN VERY INFREQUENTLY AND EVENTS WHICH
  1157. MUST BE PERFORMED IN PARALLEL WITH OTHER EVENTS OR IN PARALLEL WITH THE
  1158. MAIN SYSTEM PROGRAM SHOULD BE SERIOUSLY CONSIDERED AS CANDIDATES FOR INTER-
  1159. RUPTS.  aDDITIONAL CONSIDERATIONS ARE DESCRIBED IN cHAPTER 2 OF THIS MANUAL;
  1160. HOWEVER, IT IS IMPORTANT TO NOTE HERE THAT THE TYPICAL SYSTEM MAY HAVE
  1161. SEVERAL SOURCES OF INTERRUPTS, EACH WITH ITS OWN TIMING AND EACH WITH ITS
  1162. OWN SET OF OPERATIONS WHICH MUST BE PERFORMED IN RESPONSE TO THE INTERRUPTS.
  1163.  
  1164.  
  1165.                                    -21-
  1166.  
  1167. ============================================================================
  1168.  
  1169. 1.3.2.2 iNTERRUPT pRIORITIZING
  1170.         aFTER A CAREFUL ANALYSIS OF THE TOTAL SYSTEM AND A DETERMINATION
  1171. OF ALL THE SOURCES OF INTERRUPTS, THE DESIGNER MUST ASK HIMSELF, "wHAT HAP-
  1172. PENS IF MORE THAN ONE INTERRUPT SOURCE REQUIRES ATTENTION AT ONE TIME?"  a
  1173. PRIORITY LEVEL MUST BE ESTABLISHED BETWEEN THE VARIOUS INTERRUPT SOURCES.
  1174. wHICH ONES MUST BE TAKEN CARE OF WITHIN A VERY SHORT PERIOD?  wHICH ONES
  1175. CAN BE PUT OFF FOR A WHILE?  tHIS PRIORITIZING AND THE TECHNIQUE FOR SELECT-
  1176. ING AMONG SEVERAL CONCURRENT INTERRUPTS IS VERY IMPORTANT TO THE SYSTEM
  1177. OPERATION AND SHOULD BE ESTABLISHED EARLY IN THE SYSTEM DEVELOPMENT PROCESS.
  1178.         tHE mcs650x-BASED SYSTEM CAN EMPLOY SEVERAL HARDWARE METHODS OF
  1179. DETERMINING THE HIGHEST PRIORITY ACTIVE INTERRUPT.  tHESE USUALLY INVOLVE
  1180. USING A SPECIAL "PRIORITY ENCODER" WHICH ALLOWS THE PROCESSOR TO GO DI-
  1181. RECTLY TO THE SOFTWARE WHICH SERVICES THE HIGHEST PRIORITY INTERRUPT.
  1182. aFTER THIS IS COMPLETE, IT WILL GO TO THE NEXT HIGHER PRIORITY AND EXECUTE
  1183. THAT SOFTWARE.  hOWEVER, THE mcs650x FAMILY PROVIDES A MUCH LESS EXPENSIVE
  1184. METHOD OF INTERRUPT PRIORITIZING.  tHIS IS THE "POLLED" INTERRUPT.  wITH
  1185. THIS TECHNIQUE, EACH TIME AN ACTIVE INTERRUPT SOURCE IS DETECTED, THE PRO-
  1186. CESSOR EXECUTES A "POLLED" INTERRUPT PROGRAM THAT INTERROGATES THE HIGHEST
  1187. PRIORITY INTERRUPT, THEN THE NEXT HIGHEST AND SO ON UNTIL AN ACTIVE INTER-
  1188. RUPT IS LOCATED.  tHE PROGRAM SERVICES THAT INTERRUPT AND RETURNS TO THE
  1189. "POLLED" INTERRUPT PROGRAM AND CONTINUES TO INTERROGATE THE NEXT HIGHEST
  1190. PRIORITY INTERRUPT UNTIL ALL HAVE BEEN INTERROGATED OR CLEARS THE INTERRUPT
  1191. DISABLE TO ALLOW NESTED INTERRUPTS.  tHE "POLLED" INTERRUPT PROGRAM IS AL-
  1192. WAYS EXECUTED WHEN AN INTERRUPT OCCURS SO THAT ALL INTERRUPTS THAT OCCUR
  1193. CONCURRENTLY WILL BE SERVICED IN ORDER OF PRIORITY LEVEL.
  1194.     sEVERAL HARDWARE TECHNIQUES FOR PRIORITIZING INTERRUPTS ARE DIS-
  1195. CUSSED IN cHAPTER 2 OF THIS MANUAL.  tHE NEXT SECTION, HOWEVER, DESCRIBES
  1196. THE SYSTEM INTERCONNECT WHICH ALLOWS USE OF THE SIMPLE "POLLED" INTERRUPT.
  1197.  
  1198. 1.3.2.3 sYSTEM iNTERCONNECT FOR iNTERRUPTS
  1199.         iN THE SIMPLE "POLLED" INTERRUPT TECHNIQUE FOR PRIORITIZING INTER-
  1200. RUPTS, THE INTERRUPT SOFTWARE ACTUALLY DETERMINES THE HIGHEST PRIORITY
  1201. ACTIVE INTERRUPT.  tHE irq OR nmi INTERRUPT REQUEST SIGNALS SIMPLY CAUSE
  1202. THE PROCESSOR TO JUMP TO THE POLLING SOFTWARE.
  1203.         fOR THIS REASON, IT IS POSSIBLE TO "or" THE VARIOUS INTERRUPT
  1204. SIGNALS TOGETHER TO FORM THE SIGNAL FOR THE PROCESSOR.  aNY ACTIVE INTER-
  1205. RUPT SOURCE WILL THEN CAUSE THE PROCESSOR TO DO THE INTERRUPT POLLING AND
  1206.  
  1207.  
  1208.                                    -22-
  1209.  
  1210. ============================================================================
  1211.  
  1212. SERVICING OPERATION.  pROVISION FOR GENERATION OF THIS or FUNCTION IS PRO-
  1213. VIDED IN THE mcs6500 FAMILY PERIPHERAL INTERFACE DEVICES.  sINCE THESE
  1214. PERIPHERAL ADAPTERS PERFORM MANY OF THE ENABLING AND LATCHING FUNCTIONS
  1215. NECESSARY FOR PROPER INTERRUPT SERVICING, THE PERIPHERAL ADAPTOR INTERRUPT
  1216. OUTPUT THEN PROVIDES THE ACTUAL SIGNAL WHICH INTERRUPTS THE PROCESSOR.
  1217. tHESE INTERRUPT OUTPUTS CAN BE "wire-or'D" BY CONNECTING THEM ALL TOGETHER
  1218. AND THEN CONNECTING THIS SINGLE LINE TO THE PROCESSOR.  tHIS INPUT SHOULD
  1219. THEN BE PULLED TO +5v WITH A RESISTOR.  aNY ONE OF THE INTERRUPT OUTPUTS
  1220. ON THE PERIPHERAL ADAPTORS CAN THEN PULL THIS INTERRUPT LOW.  tHIS SIMPLE
  1221. CONFIGURATION IS SHOWN IN fIGURE 1.9.
  1222.  
  1223. 1.3.2.4 iNTERRUPT sERVICING
  1224.         aLTHOUGH A GREAT DEAL HAS BEEN SAID PREVIOUSLY ABOUT THE PROCESS
  1225. OF ESTABLISHING INTERRUPTS AND DETERMINING JUST WHAT HAPPENS IN RESPONSE TO
  1226. AN INTERRUPT, IT WOULD BE USEFUL TO DETAIL THE SEQUENCE WHICH TAKES PLACE
  1227. WHEN AN INTERRUPT IS RECOGNIZED BY THE PROCESSOR.  tHIS WILL ESTABLISH A
  1228. BASIS FOR UNDERSTANDING OF THE DETAILS OF THE PROCESSOR INTERRUPT INPUTS.
  1229.         aN INTERRUPT REQUEST IS SIGNALED BY A gnd (< 0.4V) SIGNAL ON THE
  1230. INTERRUPT REQUEST INPUT.  tHIS INTERRUPT WILL BE RECOGNIZED AFTER THE PRO-
  1231. CESSOR COMPLETES THE INSTRUCTION WHICH IT IS CURRENTLY EXECUTING.  tHE NEXT
  1232. STEP IS TO STORE ENOUGH OF THE CONTENTS OF THE INTERNAL PROCESSOR REGISTERS
  1233. TO ASSURE THAT THE PROCESSOR CAN RESUME EXECUTION OF THE PROGRAM WHICH WAS
  1234. INTERRUPTED.  iN PARTICULAR, THE pROGRAM cOUNTER AND THE pROCESSOR sTATUS
  1235. rEGISTER ARE STORED IN A SERIES OF MEMORY LOCATIONS SPECIFIED BY ANOTHER
  1236. INTERNAL REGISTER, THE sTACK pOINTER.  aS DISCUSSED IN cHAPTER 9 OF THE
  1237. pROGRAMMING mANUAL, SAVING THE CONTENTS OF THE pROGRAM cOUNTER AND pROCES-
  1238. SOR sTATUS REGISTER UNIQUELY DEFINES, IN MEMORY, THE STATE OF THE MICRO-
  1239. PROCESSOR AT THE TIME THE INTERRUPT OCCURRED.  tHE PROCESSOR THEN GOES TO
  1240. TWO FIXED LOCATIONS IN MEMORY TO DETERMINE THE ADDRESS LOW AND ADDRESS HIGH
  1241. OF THE INTERRUPT SOFTWARE.
  1242.         tHE OPERATION TO THIS POINT IS AUTOMATIC AND IS DETERMINED BY THE
  1243. INTERNAL PROCESSOR LOGIC.  aFTER THE PROCESSOR HAS PROPERLY SET THE ADDRESS
  1244. BUS, EXECUTION OF THE INTERRUPT PROGRAM COMMENCES.  eVERYTHING WHICH OCCURS
  1245. SUBSEQUENTLY IS DETERMINED BY THE SYSTEM SOFTWARE.
  1246.         tHE TOTAL INTERRUPT SOFTWARE DESCRIBED ABOVE WILL CONSIST OF A COM-
  1247. PLEX COMBINATION OF POLLING AND INTERRUPT SERVICING ROUTINES.  hOWEVER, UNLESS
  1248.  
  1249.  
  1250.                                    -23-
  1251.  
  1252. ============================================================================
  1253.  
  1254.                     +5v
  1255.                      o
  1256.                      {$7c}
  1257.                     -+-
  1258.                     {$7c} {$7c}
  1259.                     {$7c} {$7c}
  1260.                     {$7c} {$7c}
  1261.                     -+-
  1262.   -------------      {$7c}      -------------
  1263.   {$7c}           {$7c}      {$7c}      {$7c}           {$7c}
  1264.   {$7c}           {$7c}      {$7c}      {$7c}           {$7c}   \
  1265.   {$7c}           {$7c}      {$7c}      {$7c}           {$7c}    {$7c}
  1266.   {$7c}  mcs650x  {$7c}<-----O----->{$7c}  mcs6520  +==> {$7c}
  1267.   {$7c}           {$7c}      {$7c}      {$7c}           {$7c}    {$7c}
  1268.   {$7c}           {$7c}      {$7c}      {$7c}           {$7c}    {$7c}
  1269.   {$7c}           {$7c}      {$7c}      {$7c}           {$7c}    {$7c}
  1270.   -------------      {$7c}      -------------    {$7c}
  1271.                      {$7c}                       {$7c}
  1272.                      {$7c}                       {$7c}
  1273.                      {$7c}      -------------    {$7c}
  1274.                      {$7c}      {$7c}           {$7c}    {$7c}
  1275.                      {$7c}      {$7c}           {$7c}    {$7c}
  1276.                      {$7c}      {$7c}           {$7c}    {$7c}
  1277.                      O----->{$7c}  mcs6520  +==> > i/o ports
  1278.                      {$7c}      {$7c}           {$7c}    {$7c}
  1279.                      {$7c}      {$7c}           {$7c}    {$7c}
  1280.                      {$7c}      {$7c}           {$7c}    {$7c}
  1281.                      {$7c}      -------------    {$7c}
  1282.                      {$7c}                       {$7c}
  1283.                      {$7c}                       {$7c}
  1284.                      {$7c}      -------------    {$7c}
  1285.                      {$7c}      {$7c}           {$7c}    {$7c}
  1286.                      {$7c}      {$7c}           {$7c}    {$7c}
  1287.                      {$7c}      {$7c}           {$7c}    {$7c}
  1288.                      O----->{$7c}  mcs6520  +==> {$7c}
  1289.                      {$7c}      {$7c}           {$7c}    {$7c}
  1290.                      {$7c}      {$7c}           {$7c}   /
  1291.                      {$7c}      {$7c}           {$7c}
  1292.                      {$7c}      -------------
  1293.                      {$7e}
  1294.                           \______  _______/
  1295.                                  \/
  1296.                              peripheral
  1297.                              interface
  1298.                               devices
  1299.  
  1300.  
  1301.                 iNTERRUPT wIRE or 'D hARDWARE cONFIGURATION
  1302.             FROM pERIPHERAL iNTERFACE dEVICES TO mICROPROCESSOR
  1303.                                 figure 1.9
  1304.  
  1305.  
  1306.                                    -24-
  1307.  
  1308. ============================================================================
  1309.  
  1310. A HARDWARE PRIORITIZING SCHEME IS USED, THE ACTUAL SYSTEM INTERCONNECTIONS
  1311. WILL NOT BECOME ANY MORE COMPLEX THAN THAT SHOWN IN fIGURE 1.9.
  1312.                            ___
  1313. 1.3.2.5 iNTERRUPT rEQUEST (irq)
  1314.         aS STATED IN sECTION 1.3.2, THE TWO INTERRUPT LINES FOR THE MICRO-
  1315. PROCESSOR ARE irq AND nmi.  tHE REQUIREMENTS FOR PROPER OPERATION OF THE
  1316. MASKABLE iNTERRUPT rEQUEST INPUT (irq) ARE MORE STRINGENT THAN FOR THE
  1317. SECOND INTERRUPT INPUT, nmi.  tHIS IS DUE PRIMARILY TO THE FACT THAT nni
  1318. IS EDGE-SENSITIVE.  wITH THE irq INPUT, THE PROCESSOR WILL BE INTERRUPTED
  1319. ANY TIME THE SIGNAL ON irq IS gnd (< 0.4V) AND THE INTERNAL iNTERRUPT dIS-
  1320. ABLE FLAG IS CLEARED.  tHE iNTERRUPT dISABLE FLAG (i) IS A SINGLE BIT IN
  1321. THE INTERNAL pROCESSOR sTATUS rEGISTER.  tHE DETAILS OF THIS REGISTER ARE
  1322. DESCRIBED IN sECTION 3.2 OF THE pROGRAMMING mANUAL.
  1323.         iN THE PROCESSING OF INTERRUPT REQUEST FROM THE irq INPUT, THE i
  1324. FLAG IS EXTREMELY IMPORTANT.  tHIS IS THE ELEMENT WHICH ASSURES THAT AN
  1325. INTERRUPT WILL BE RECOGNIZED AND SERVICED ONLY ONCE FOR EACH REQUEST AND
  1326. ONLY WHEN AN INTERRUPT IS DESIRED.  tHIS IS DESCRIBED IN DETAIL BELOW.
  1327.         fIGURE 1.10 DETAILS THE SEQUENCE OF OPERATIONS WHICH SHOULD TAKE
  1328. PLACE DURING THE SERVICING OF AN irq INTERRUPT.  a POSITIVE OR NEGATIVE
  1329. TRANSITION OF THE SIGNAL FROM THE PERIPHERAL DEVICE (PRINTER, KEYBOARD,
  1330. ETC.) IS DETECTED ON THE EDGE-SENSITIVE INPUTS TO THE PERIPHERAL INTERFACE
  1331. DEVICE.  iF THE INTERRUPT IS ENABLED WITHIN THE PERIPHERAL INTERFACE DE-
  1332. VICE, THE INTERRUPT REQUEST OUTPUT (irq) ON THIS CHIP WILL GO LOW.  tHE
  1333. INTERRUPT CONDITION IS LATCHED WITHIN THE PERIPHERAL INTERFACE DEVICE TO
  1334. ALLOW SUFFICIENT TIME FOR THE PROCESSOR TO POLL THE INTERRUPT SOURCES,
  1335. ASSURING THAT THE INTERRUPT SIGNAL WILL NOT BE CLEARED BEFORE THE POLLING
  1336. CAN BE COMPLETED.  tHIS LATCH IS RESET BY THE PROCESSOR AS IT EXECUTES THE
  1337. SOFTWARE ASSOCIATED WITH THAT INTERRUPT.  dETAILS OF THIS OPERATION ARE
  1338. DESCRIBED IN sECTION 1.4.1.2.10
  1339.         tHE iNTERRUPT dISABLE FLAG (i) IS SET AUTOMATICALLY WHEN THE PRO-
  1340. CESSOR RECOGNIZES AN INTERRUPT.  tHIS ASSURES THAT THIS SAME INTERRUPT WILL
  1341. NOT BE RECOGNIZED AGAIN.  rESETTING THIS FLAG CAN BE PERFORMED MANUALLY
  1342. WITH AN INSTRUCTION IN THE PROGRAM OR AUTOMATICALLY WITH A "rETURN FROM
  1343. iNTERRUPT" INSTRUCTION.  iT IS VERY IMPORTANT THAT "i" NOT BE CLEARED BEFORE
  1344. THE INTERRUPT INPUT IS RESET.  pERFORMING THE "cLEAR i" INSTRUCTION TOO
  1345. EARLY IN THE PROGRAM CAN CAUSE THIS SAME INTERRUPT TO BE RECOGNIZED AGAIN.
  1346.  
  1347.  
  1348.                                    -25-
  1349.  
  1350. ============================================================================
  1351.  
  1352.          ------------------                                    ---------  2.4v
  1353.         irq               {$7c}                                    {$7c}
  1354. from perifheral interface {$7c}                                    {$7c}
  1355. device to microprocessor  {$7c}                                    {$7c}
  1356.                           --------------------------------------          0.4v
  1357.                           {$7c}       {$7c}                            {$7c}
  1358.                           {$7c}       {$7c}                            {$7c}
  1359.                           {$7c}       -----------------------------------
  1360.                           {$7c}       {$7c}                            {$7c}    {$7c}
  1361. interrupt                 {$7c}       {$7c}                            {$7c}    {$7c}
  1362. flag(i)                   {$7c}       {$7c}                            {$7c}    {$7c}
  1363.          --------------------------                            {$7c}    ----
  1364.                           {$7c}       {$7c}                            {$7c}
  1365.                          /       /                            /
  1366.                         /       /                            /
  1367.                        /       /                            /
  1368.                       /       /                            {$7c}
  1369.      ________________/       /                             {$7c}
  1370.     /                       /                              {$7c}
  1371.    /                       /                               {$7c}
  1372.   /                       /                                {$7c}
  1373.  /                       /                                 {$7c}
  1374. /                       /                                  {$7c}
  1375.  interrupt request      interrupt flag (i) is set high and  upon completion of
  1376.  recognized after       the interrupt request IS serviced   interrupt routine irq
  1377.  completion of current  by the mpu                          should be reset before
  1378.  mpU instruction.                                           'i' is reset to avoid
  1379.                                                             double interrupting.
  1380.  
  1381.  
  1382.                           sEQUENCE TO sERVICE irq
  1383.                                 figure 1.10
  1384.  
  1385.  
  1386.                                    -26-
  1387.  
  1388. ============================================================================
  1389.  
  1390. tHE PROCESSOR WILL THEN PROCEED TO SERVICE THIS AS IF IT WERE A NEW INTER-
  1391. RUPT.
  1392.                                 ___
  1393. 1.3.2.6 nON-mASKABLE iNTERRUPT (nmi)
  1394.         tHE nmi INPUT TO THE PROCESSOR IS EDGE-SENSITIVE.  tO CAUSE AN
  1395. INTERRUPT TO OCCUR, THERE MUST BE A NEGATIVE TRANSITION OF THE SIGNAL ON
  1396. THE nmi INPUT.  tHIS NEGATIVE TRANSITION WILL CAUSE A SINGLE INTERRUPT TO
  1397. OCCUR.  aFTER SERVICING THE INTERRUPT, THE PROCESSOR WILL IGNORE THIS INPUT
  1398. UNTIL THE nmi SIGNAL GOES HIGH (> +2.4V) AND THEN BACK TO GROUND.
  1399.         tHE RESPONSE TO AN nmi INTERRUPT SIGNAL CANNOT BE DISABLED WITHIN
  1400. THE PROCESSOR.  aFTER THE PROCESSOR COMPLETES THE INSTRUCTION BEING EXE-
  1401. CUTED, IT WILL RECOGNIZE THE INTERRUPT AND WILL PROCEED TO SERVICE THE
  1402. INTERRUPT AS DESCRIBED IN THE PREVIOUS SECTION.  tHE PROPER DISCIPLINE TO
  1403. EMPLOY IN ALL INTERRUPTS IS FOR THE INTERRUPT SIGNAL TO BE LATCHED UNTIL
  1404. THE PROCESSOR COMPLETES SERVICING THE INTERRUPT.  tHIS METHOD OF OPERATION
  1405. IS ASSURED IF ALL THE INTERRUPTS ARE CONNECTED TO THE INTERRUPT INPUTS OF
  1406. THE PERIPHERAL INTERFACE DEVICES IN THE FAMILY.
  1407.         pROCESSING OF MULTIPLE INTERRUPTS IN A POLLED INTERRUPT STRUCTURE
  1408. REQUIRES THAT ALL OF THE INTERRUPTS BE POLLED BEFORE EXECUTING A "rETURN
  1409. FROM iNTERRUPT" INSTRUCTION.  tHIS IS NECESSITATED BY THE "wire-or" TECH-
  1410. NIQUE FOR COMBINING THE INTERRUPTS, SINCE NO KNOWLEDGE EXISTS OF WHICH LINE
  1411. WENT TO GROUND.  iF ONE OF THE INTERRUPTS IS LEFT UNSERVICED, IT WILL HOLD
  1412. THE nmi SIGNAL TO GROUND, DISABLING THE INTERRUPTS FROM ALL OTHER SOURCES
  1413. SINCE IT IS NECESSARY FOR THE nmi SIGNAL TO GO HIGH (> 2.4V) AND BACK LOW
  1414. AGAIN FOR AN INTERRUPT TO OCCUR.  tHIS IS NOT TRUE FOR THE irq INPUT SINCE
  1415. THIS LATCH IS LEVEL-SENSITIVE.  pERFORMING A "rETURN FROM iNTERRUPT" BEFORE
  1416. ALL irq INTERRUPT SOURCES ARE SERVICED WILL SIMPLY CAUSE ANOTHER irq INTER-
  1417. RUPT TO OCCUR.
  1418. 1.3.3   sYSTEM rESET
  1419.         oNE OF THE BASIC SYSTEM CONTROL FUNCTIONS IS THE SYSTEM reset SIGNAL.
  1420. wHETHER THIS SIGNAL IS GENERATED AUTOMATICALLY BY EXTERNAL POWER-ON CIRCUITRY
  1421. OR MANUALLY FROM A PUSH-BUTTON SWITCH, THE SYSTEM COMPONENTS MUST OBEY A
  1422. FIXED SET OF RULES TO ASSURE PROPER SYSTEM OPERATION.  tHIS IS PARTICULARLY
  1423. TRUE FOR THE PERIPHERAL INTERFACE DEVICES.
  1424.  
  1425.  
  1426.                                    -27
  1427.  
  1428. ============================================================================
  1429.  
  1430.         iN THE mcs650x-BASED SYSTEMS, AN ASSUMPTION IS MADE THAT reset PINS
  1431. ON ALL PERIPHERAL INTERFACE DEVICES AND ON THE PROCESSOR WILL BE HELD LOW
  1432. DURING POWER-ON UNTIL THE SUPPLY VOLTAGES AND THE CLOCKS HAVE STABILIZED.
  1433. tHIS PROCEDURE ASSURES THAT THE PERIPHERAL PINS WILL REMAIN IN A KNOWN
  1434. STATE UNTIL THE ENTIRE SYSTEM IS INITIALIZED AND THE PROCESSOR IS READY TO
  1435. ASSUME CONTROL OF THE OUTPUT LINES, I.E., IS READY TO RUN THE SYSTEM PRO-
  1436. GRAM.
  1437.         iT SHOULD BE MENTIONED THAT IN THE ENTIRE SET OF MICROCOMPUTER
  1438. CHIPS, THE CONTENTS OF LATCHES, REGISTERS, ETC. IS TOTALLY RANDOM AFTER
  1439. POWER IS APPLIED.  oN THE PERIPHERAL OUTPUT PINS, RANDOM DATA CAN BE
  1440. DISASTROUS.  tHE ONLY WAY TO FORCE THESE LINES TO A KNOWN CONDITION IS TO
  1441. APPLY THE reset SIGNAL.  tHE DESIGNER CAN THEN MAKE SURE THAT THE KNOWN
  1442. CONDITION WILL NOT CAUSE SPURIOUS OPERATIONS IN THE PERIPHERAL DEVICES.
  1443. tHE EFFECT OF reset ON THE PERIPHERAL CHIPS IS DISCUSSED IN THE ANALYSIS
  1444. OF EACH CHIP.
  1445.         iN THE PROCESSOR, THE SINGLE REGISTER WHICH MUST BE PLACED
  1446. IN A KNOWN STATE IS THE PROGRAM COUNTER.  tHIS IS THE REGISTER WHICH SE-
  1447. LECTS THE INSTRUCTIONS TO BE EXECUTED.  tHE reset INPUT CAUSES THE PROGRAM
  1448. COUNTER TO GO TO THE FIRST INSTRUCTION IN THE SYSTEM PROGRAM.  tHE SPECIFIC
  1449. DETAILS OF THIS OPERATION ARE DISCUSSED IN sECTION 1.4.1.2.11.
  1450.         tHERE IS ONE OTHER VERY IMPORTANT FUNCTION PERFORMED BY THE reset
  1451. INPUT ON THE PERIPHERAL INTERFACE DEVICES.  aLTHOUGH THE RECOGNITION OF THE
  1452. PROCESSOR INTERRUPT SIGNALS IS AUTOMATIC AND DOES NOT DEPEND ON SOFTWARE,
  1453. THE SEQUENCE OF OPERATIONS PERFORMED BY THE PROCESSOR TO TOTALLY SERVICE AN
  1454. INTERRUPT IS DETERMINED BY THE PROGRAM.  uNTIL THE VARIOUS INTERNAL REGIS-
  1455. TERS IN THE PROCESSOR HAVE BEEN INITIALIZED, THE PROCESSOR IS NOT READY TO
  1456. RESPOND PROPERLY TO ANY EXTERNAL INTERRUPTS.  fOR THIS REASON, IT IS IM-
  1457. PORTANT THAT THE SYSTEM reset DISABLE ALL EXTERNAL INTERRUPT SIGNALS UNTIL
  1458. THEY ARE ENABLED BY THE PROCESSOR.  tHE PROGRAMMER CAN THEN MAKE SURE THAT
  1459. THE SYSTEM HAS BEEN PROPERLY INITIALIZED BEFORE THE INTERRUPTS ARE ENABLED.
  1460.  
  1461.  
  1462.                                    -28-
  1463.  
  1464. ============================================================================
  1465.  
  1466.  
  1467.                 pICTURE OF INTERNAL ARCHITECTURE OF A 650x
  1468.                 WHICH CAN BE FOUND IN ANY GOOD DATABOOK
  1469.  
  1470.  
  1471.                       mcs650x iNTERNAL aRCHITECTURE
  1472.                                 gIGURE 1.11
  1473.  
  1474.  
  1475.                                    -29-
  1476.  
  1477. ============================================================================
  1478.  
  1479.  
  1480. 1.4 the microprocessors
  1481.  
  1482. 1.4.1  tHE mcs6501
  1483.  
  1484. 1.4.1.1 iNTRODUCTION
  1485.         tHE MEMBERS OF THE mcs650x MICROPROCESSOR FAMILY CONTAIN VERY
  1486. SIMILAR INTERNAL ARCHITECTURES.  a BLOCK DIAGRAM OF THIS ARCHITECTURE IS
  1487. SHOWN IN fIGURE 1.11.  tHIS SECTION BEGINS WITH AN ANALYSIS OF THIS BLOCK
  1488. DIAGRAM, DISCUSSING THE FUNCTION OF THE VARIOUS REGISTERS, DATA PATHS, ETC.
  1489. a DETAILED DISCUSSION OF THE OPERATION OF THE VARIOUS PINS ON THE CHIP FOL-
  1490. LOWS.
  1491.         tHE INTERNAL ORGANIZATION OF THE PROCESSOR CAN BE SPLIT INTO TWO
  1492. SECTIONS.  iN GENERAL, THE INSTRUCTIONS OBTAINED FROM PROGRAM MEMORY ARE
  1493. EXECUTED BY IMPLEMENTING A SERIES OF DATA TRANSFERS IN ONE SECTION OF
  1494. THE CHIP (REGISTER SECTION).  tHE CONTROL LINES WHICH ACTUALLY CAUSE THE
  1495. DATA TRANSFERS TO TAKE PLACE ARE GENERATED IN THE OTHER SECTION (CONTROL
  1496. SECTION).  iNSTRUCTIONS ENTER THE PROCESSOR ON THE DATA BUS, ARE LATCHED
  1497. INTO THE INSTRUCTION REGISTER, AND ARE THEN DECODED ALONG WITH TIMING SIG-
  1498. NALS TO GENERATE THE REGISTER CONTROL SIGNALS.
  1499.         tHE TIMING CONTROL UNIT KEEPS TRACK OF THE SPECIFIC CYCLE BEING
  1500. EXECUTED.  tHIS UNIT IS SET TO "t0" FOR EACH INSTRUCTION FETCH CYCLE AND
  1501. IS ADVANCED AT THE BEGINNING OF EACH pHASE oNE CLOCK PULSE.  eACH INSTRUC-
  1502. TION STARTS IN t0 AND GOES TO t1, t2, t3, ETC. FOR AS MANY CYCLES AS ARE
  1503. REQUIRED TO COMPLETE EXECUTION OF THE INSTRUCTION.  eACH DATA TRANSFER,
  1504. ETC., WHICH TAKES PLACE IN THE REGISTER SECTION IS CAUSED BY DECODING THE
  1505. CONTENTS OF BOTH THE INSTRUCTION REGISTER AND THE TIMING COUNTER.
  1506.         aDDITIONAL CONTROL LINES WHICH AFFECT THE EXECUTION OF THE INSTRUC-
  1507. TIONS ARE DERIVED FROM THE iNTERRUPT LOGIC AND FROM THE pROCESSOR sTATUS
  1508. REGISTER.  tHE iNTERRUPT LOGIC CONTROLS THE PROCESSOR INTERFACE TO THE
  1509. INTERRUPT INPUTS TO ASSURE PROPER TIMING, ENABLING, SEQUENCING, ETC. WHICH
  1510. THE PROCESSOR RECOGNIZES AND SERVICES.
  1511.         tHE pROCESSOR sTATUS REGISTER CONTAINS A SET OF LATCHES WHICH
  1512. SERVE TO CONTROL CERTAIN ASPECTS OF THE PROCESSOR OPERATION, TO INDICATE
  1513. THE RESULTS OF PROCESSOR ARITHMETIC AND LOGIC OPERATIONS, AND TO INDICATE
  1514. THE STATUS OF DATA EITHER GENERATED BY THE PROCESSOR OR TRANSFERRED INTO
  1515. THE PROCESSOR FROM OUTSIDE.
  1516.         sINCE THE REAL WORK OF THE PROCESSOR IS CARRIED ON IN THE REGISTER
  1517. SECTION OF THE CHIP, A DETAILED STUDY WILL BE MADE OF THIS SECTION.  tHE
  1518. COMPONENTS ARE:
  1519.  
  1520.  
  1521.                                    -30-
  1522.  
  1523. ============================================================================
  1524.  
  1525.         * dATA bUS bUFFERS
  1526.         * iNPUT dATA lATCH (dl)
  1527.         * pROGRAM cOUNTER (pcl, pch)
  1528.         * aCCUMULATOR (a)
  1529.         * aRITHMETIC lOGIC uNIT (alu)
  1530.         * sTACK pOINTER (s)
  1531.         * iNDEX rEGISTERS (x, y)
  1532.         * aDDRESS bUS lATCHES (abl, abh)
  1533.         * pROCESSOR sTATUS rEGISTER (p)
  1534.         aT 1 mhZ, THE DATA WHICH COMES INTO THE PROCESSOR FROM THE PROGRAM
  1535. MEMORY, THE DATA MEMORY, OR FROM PERIPHERAL DEVICES, APPEARS ON THE DATA
  1536. BUS DURING THE LAST 100 NANOSECONDS OF pHASE tWO.  nO ATTEMPT IS MADE TO
  1537. ACTUALLY OPERATE ON THE DATA DURING THIS SHORT PERIOD.  iNSTEAD, IT IS
  1538. SIMPLY TRANSFERRED INTO THE INPUT DATA LATCH FOR USE DURING THE NEXT CYCLE.
  1539. tHE DATA LATCH SERVES TO TRAP THE DATA ON THE DATA BUS DURING EACH pHASE
  1540. tWO PULSE.  iT CAN THEN BE TRANSFERRED ONTO ONE OF THE INTERNAL BUSSES AND
  1541. FROM THERE INTO ONE OF THE INTERNAL REGISTERS.  fOR EXAMPLE, DATA BEING
  1542. TRANSFERRED FROM MEMORY INTO THE ACCUMULATOR (a) WILL BE PLACED ON THE IN-
  1543. TERNAL DATA BUS AND WILL THEN BE TRANSFERRED FROM THE INTERNAL DATA BUS
  1544. INTO THE ACCUMULATOR.  iF AN ARITHMETIC OR LOGIC OPERATION IS TO BE PER-
  1545. FORMED USING THE DATA FROM MEMORY AND THE CONTENTS OF THE ACCUMULATOR, DATA
  1546. IN THE INPUT DATA LATCH WILL BE TRANSFERRED ONTO THE INTERNAL DATA BUS AS
  1547. BEFORE.  fROM THERE IT WILL BE TRANSFERRED INTO THE alu.  aT THE SAME TIME
  1548. THE CONTENTS OF THE ACCUMULATOR WILL BE TRANSFERRED ONTO A BUS IN THE REG-
  1549. ISTER SECTION AND FROM THERE INTO THE SECOND INPUT TO THE alu.  tHE RESULTS
  1550. OF THE ARITHMETIC OR LOGIC OPERATION WILL BE TRANSFERRED BACK TO THE ACCUMU-
  1551. LATOR ON THE NEXT CYCLE BY TRANSFERRING FIRST ONTO THE BUS AND THEN INTO
  1552. THE ACCUMULATOR.  aLL OF THESE DATA TRANSFERS TAKE PLACE DURING THE pHASE
  1553. oNE CLOCK PULSE.
  1554.     tHE PROGRAM COUNTER (pcl, pch) PROVIDES THE ADDRESSES WHICH STEP
  1555. THE PROCESSOR THROUGH SEQUENTIAL INSTRUCTIONS IN THE PROGRAM.  eACH TIME
  1556. THE PROCESSOR FETCHES AN INSTRUCTION FROM PROGRAM MEMORY, THE CONTENTS OF
  1557. pcl IS PLACED ON THE LOW ORDER EIGHT BITS OF THE ADDRESS BUS AND THE CON-
  1558. TENTS OF pch IS PLACED ON THE HIGH ORDER EIGHT BITS.  tHIS COUNTER IS
  1559. INCREMENTED EACH TIME AN INSTRUCTION OR DATA IS FETCHED FROM PROGRAM MEMORY.
  1560.  
  1561.  
  1562.                                    -31-
  1563.  
  1564. ============================================================================
  1565.  
  1566.         tHE ACCUMULATOR IS A GENERAL PURPOSE 8-BIT REGISTER WHICH STORES
  1567. THE RESULTS OF MOST ARITHMETIC AND LOGIC OPERATIONS.  iN ADDITION, THE ACCU-
  1568. MULATOR USUALLY CONTAINS ONE OF THE TWO DATA WORDS USED IN THESE OPERATIONS.
  1569.         aLL LOGIC AND ARITHMETIC OPERATIONS TAKE PLACE IN THE alu.  tHIS
  1570. INCLUDES INCREMENTING AND DECREMENTING OF INTERNAL REGISTERS (EXCEPT pcl
  1571. AND pch).  hOWEVER, THE alu CANNOT STORE DATA FOR MORE THAN ONE CYCLE.  iF
  1572. DATA IS PLACED ON THE INPUTS TO THE alu AT THE BEGINNING OF ONE CYCLE, THE
  1573. RESULT IS ALWAYS GATED INTO ONE OF THE STORAGE REGISTERS OR TO EXTERNAL
  1574. MEMORY DURING THE NEXT CYCLE.  eACH BIT OF THE alu HAS TWO INPUTS.  tHESE
  1575. INPUTS CAN BE TIED TO VARIOUS INTERNAL BUSSES OR TO A LOGIC ZERO; THE alu
  1576. THEN GENERATES THE sum, and, or, ETC. FUNCTION USING THE DATA ON THE TWO
  1577. INPUTS.
  1578.         tHE STACK POINTER (s) AND THE TWO INDEX REGISTERS (x AND y) EACH
  1579. CONSIST OF 8 SIMPLE LATCHES.  tHESE REGISTERS STORE DATA WHICH IS TO BE
  1580. USED IN CALCULATING ADDRESSES IN DATA MEMORY.  tHE SPECIFIC OPERATION OF
  1581. EACH OF THESE IS DISCUSSED IN DETAIL IN THE pROGRAMMING mANUAL.
  1582.         tHE ADDRESS BUS BUFFERS (abl, abh) CONSIST OF A SET OF LATCHES AND
  1583. ttl COMPATIBLE DRIVERS.  tHESE LATCHES STORE THE ADDRESSES WHICH ARE USED
  1584. IN ACCESSING THE PERIPHERAL DEVICES (rom, ram, AND i/o).
  1585.  
  1586. 1.4.1.2 tHE mcs6501 pINOUTS
  1587.         fIGURE 1.12 SHOWS A DIAGRAM OF THE mcs6501 MICROPROCESSOR WITH THE
  1588. VARIOUS PINS DESIGNATED.  tHESE PINS AND THEIR USE IN MICROCOMPUTER SYSTEMS
  1589. ARE DISCUSSED SEPARATELY BELOW.
  1590.  
  1591. 1.4.1.2.1   vCC, vSS--sUPPLY lINES
  1592.         tHE vCC AND vSS PINS ARE THE ONLY POWER SUPPLY CONNECTIONS TO
  1593. THE CHIP.  tHE SUPPLY VOLTAGE ON PIN 8 IS +5.0 v dc + 5%.  tHE ABSOLUTE
  1594. LIMIT ON THE vCC INPUT IS +7.0 v dc.
  1595.  
  1596. 1.4.1.2.2   ab00-abL5--aDDRESS bUS
  1597.         tHE ADDRESS BUS BUFFERS ON THE mcs650x FAMILY OF MICROPROCESSORS
  1598. ARE PUSH/PULL TYPE DRIVERS CAPABLE OF DRIVING AT LEAST 130 PF AND 1 STAN-
  1599. DARD ttl LOAD.
  1600.         tHE ADDRESS BUS WILL ALWAYS CONTAIN KNOWN DATA AS DETAILED IN
  1601. aPPENDIX a.  tHE ADDRESSING TECHNIQUE INVOLVES PUTTING AN ADDRESS ON THE
  1602. ADDRESS BUS WHICH IS KNOWN TO BE EITHER IN PROGRAM SEQUENCE, ON THE SAME
  1603.  
  1604.  
  1605.                                    -32-
  1606.  
  1607. ============================================================================
  1608.  
  1609.                    ---------------------------               ___
  1610. vss             ---+ 1                     40+---<------     res
  1611.                 ---+                         +---
  1612. rdy      ------>---+ 2                     39+---            n.c.
  1613.                 ---+                         +---
  1614. p1 (in)  ------>---+ 3                     38+---<------     n.c
  1615. ___             ---+                         +---
  1616. irq      ------>---+ 4                     37+---<------     p2 (in)
  1617.                 ---+                         +---
  1618. vma      <---------+ 5                     36+---<------     dbe
  1619. ___             ---+                         +---
  1620. nmi      ------>---+ 6                     35+---            n.c.
  1621.                 ---+                         +---
  1622. ba       <---------+ 7                     34+--------->     r/w
  1623.                 ---+                         +---
  1624. vcc             ---+ 8                     33+---\           db0
  1625.                 ---+                         +--- {$7c}
  1626. ab0            /---+ 9                     32+--- {$7c}          db1
  1627.               {$7c} ---+                         +--- {$7c}
  1628. ab1           {$7c} ---+10                     31+--- {$7c}          db2
  1629.               {$7c} ---+         mcs6501         +--- {$7c}
  1630. ab2           {$7c} ---+11                     30+--- {$7c}          db3
  1631.               {$7c} ---+                         +---  >--->
  1632. ab3           {$7c} ---+12                     29+--- {$7c}          db4
  1633.               {$7c} ---+                         +--- {$7c}
  1634. ab4           {$7c} ---+13                     28+--- {$7c}          db5
  1635.               {$7c} ---+                         +--- {$7c}
  1636. ab5           {$7c} ---+14                     27+--- {$7c}          db6
  1637.          <---<  ---+                         +--- {$7c}
  1638. ab6           {$7c} ---+15                     26+--- {$7c}          db7
  1639.               {$7c} ---+                         +---/
  1640. ab7           {$7c} ---+16                     25+---\           ab15
  1641.               {$7c} ---+                         +--- {$7c}
  1642. ab8           {$7c} ---+17                     24+--- {$7c}          ab14
  1643.               {$7c} ---+                         +---  >--->
  1644. ab9           {$7c} ---+18                     23+--- {$7c}          ab13
  1645.               {$7c} ---+                         +--- {$7c}
  1646. ab10          {$7c} ---+19                     22+--- {$7c}          ab12
  1647.               {$7c} ---+                         +---/
  1648. ab11          {$7c} ---+20                     21+---            vss
  1649.                \---+                         +---
  1650.                    ---------------------------
  1651.                       n.c. = no connection
  1652.  
  1653.  
  1654. *   vma is connected internally to vcc. the vma signal is not required
  1655.     on the mcs6501 as on the mc6800, since the mcs6501 always puts out
  1656.     known addresses on the address bus.
  1657.  
  1658.  
  1659.                         mcs6501 pINOUT dESIGNATIONS
  1660.                                 figure 1.12
  1661.  
  1662.  
  1663.                                    -33-
  1664.  
  1665. ============================================================================
  1666.  
  1667. PAGE IN PROGRAM MEMORY OR AT A KNOWN POINT IN ram.  a BRIEF STUDY OF aPPEN-
  1668. DIX a WILL ACQUAINT THE DESIGNER WITH THE DETAILED OPERATION OF THIS BUS.
  1669.         tHE VARIOUS PROCESSORS DIFFER SOMEWHAT IN THE NUMBER OF ADDRESS
  1670. LINES PROVIDED.  iN PARTICULAR, THE mcs6504 PROVIDES THIRTEEN ADDRESS LINES
  1671. (ab00 - ab12) AND THE mcs6503 AND mcs6505 PROVIDE TWELVE (ab00 - ab11).  aS
  1672. A RESULT, THE mcs6504 CAN ADDRESS 8,192 BYTES OF MEMORY AND THE mcs6503 AND
  1673. mcs6505 CAN ADDRESS 4,096 BYTES.  tHIS TOTAL ADDRESS SPACE SHOULD PROVE TO
  1674. BE MORE THAN SUFFICIENT FOR THE SMALL, COST-SENSITIVE SYSTEMS WHERE THESE
  1675. DEVICES SHOULD FIND THEIR GREATEST APPLICATION.
  1676.         tHE SPECIFIC TIMING OF THE ADDRESS BUS IS EXACTLY THE SAME FOR
  1677. ALL THE PROCESSORS.  tHE ADDRESS IS VALID 300 NS (AT 1 mhZ CLOCK RATE) INTO
  1678. THE O1 CLOCK PULSE AND STAYS STABLE UNTIL THE NEXT O1 PULSE.  tHIS SPECIFI-
  1679. CATION WILL ONLY CHANGE FOR PROCESSORS WHICH ARE SPECIFIED TO OPERATE AT A
  1680. HIGHER CLOCK RATE.  fIGURE 1.13 DETAILS THE RELATION OF ADDRESS BUS TO
  1681. OTHER CRITICAL SIGNALS.
  1682.         bECAUSE OF THE REDUCED NUMBER OF ADDRESS LINES ON THE 28-PIN
  1683. PROCESSORS, IT IS POSSIBLE TO WRITE A PROGRAM WHICH ATTEMPTS TO ACCESS NON-
  1684. EXISTENT MEMORY ADDRESS SPACE, I.E., THE ADDRESS BITS 13, 14, OR 15 SET TO
  1685. LOGIC "1."  tHESE UPPER ADDRESS BITS IN THE PROGRAM WILL BE IGNORED AND THE
  1686. PROGRAM WILL DROP INTO EXISTING ADDRESS SPACE.  tHIS ASSUMES PROPER MEMORY
  1687. MANAGEMENT WHEN USING DEVICES OF LARGE ADDRESSING CAPABILITY SUCH THAT THE
  1688. ADDRESSED MEMORY SPACE WILL FIT WITHIN THE CONSTRAINTS OF A DEVICE WITH
  1689. SMALLER AVAILABLE MEMORY ADDRESSING CAPABILITY.
  1690.  
  1691. 1.4.1.2.3   dbo-db7--dATA bUS
  1692.         tHE PROCESSOR DATA BUS IS EXACTLY THE SAME FOR THE PROCESSORS
  1693. CURRENTLY AVAILABLE AND FOR THE SOFTWARE-COMPATIBLE PROCESSORS WHICH WILL
  1694. BE INTRODUCED IN THE NEAR FUTURE.  aLL INSTRUCTIONS AND DATA TRANSFERS BE-
  1695. TWEEN THE PROCESSOR AND MEMORY TAKE PLACE ON THESE LINES.  tHE BUFFERS DRIV-
  1696. ING THE DATA BUS LINES HAVE FULL "THREE-STATE" CAPABILITY.  tHIS IS NECES-
  1697. SITATED BY THE FACT THAT THE LINES ARE BI-DIRECTIONAL.
  1698.         eACH DATA BUS PIN IS CONNECTED TO AN INPUT AND AN OUTPUT BUFFER,
  1699. WITH THE OUTPUT BUFFER REMAINING IN THE "FLOATING" CONDITION EXCEPT WHEN
  1700. THE PROCESSOR IS TRANSFERRING DATA INTO OR OUT OF ONE OF THE SUPPORT CHIPS.
  1701. aLL INTER-CHIP DATA TRANSFERS TAKE PLACE DURING THE pHASE tWO CLOCK PULSE.
  1702. dURING pHASE oNE THE ENTIRE DATA BUS IS "FLOATING."
  1703.  
  1704.  
  1705.                                    -34-
  1706.  
  1707. ============================================================================
  1708.  
  1709.  
  1710. pERSONAL NOTE: VERY VAGUE TIMING DIAGRAM. bETTER CHECK A GOOD DATASHEET.
  1711.  
  1712.  
  1713.                       mcs650x sYSTEM tIMONG dIAGRAM
  1714.                                 figure 1.13
  1715.  
  1716.  
  1717.                                    -35-
  1718.  
  1719. ============================================================================
  1720.  
  1721.         tHE DATA BUS BUFFER IS A PUSH/PULL DRIVER CAPABLE OF DRIVING
  1722. 130 PF AND 1 STANDARD ttl LOAD AT THE RATED SPEED.  aT A 1 mhZ CLOCK RATE,
  1723. THE DATA ON THE DATA BUS MUST BE STABLE 100 NS BEFORE THE END OF pHASE tWO.
  1724. tHIS IS TRUE FOR TRANSFERS IN EITHER DIRECTION.  fIGURE 1.13 DETAILS THE
  1725. RELATIONSHIP OF THE DATA BUS TO OTHER SIGNAL&
  1726.  
  1727. 1.4.1.2.4   r/w--rEAD/wRITE
  1728.         tHE rEAD/wRITE LINE ALLOWS THE PROCESSOR TO CONTROL THE DIREC-
  1729. TION OF DATA TRANSFERS BETWEEN THE PROCESSOR AND THE SUPPORT CHIPS.  tHIS
  1730. LINE IS HIGH EXCEPT WHEN THE PROCESSOR IS WRITING TO MEMORY OR TO A PERI-
  1731. PHERAL INTERFACE DEVICE.
  1732.         aLL TRANSITIONS ON THIS LINE OCCUR DURING THE pHASE oNE CLOCK
  1733. PULSE (CONCURRENT WITH THE ADDRESS LINES).  tHIS ALLOWS COMPLETE CONTROL
  1734. OF THE DATA TRANSITION WHICH TAKES PLACE DURING THE pHASE tWO CLOCK PULSE.
  1735.         tHE r/w BUFFER IS SIMILAR TO THE ADDRESS BUFFERS.  tHEY ARE
  1736. CAPABLE OF DRIVING 130 PF AND ONE STANDARD ttl LOAD AT THE RATED SPEED.
  1737. aGAIN, fIGURE 1.13 DETAILS THE RELATIVE TIMING OF THE r/w LINE.
  1738. 1.4.1.2.5   dbe--dATA bUS eNABLE
  1739.         oN THE mcs6501, A DATA BUS ENABLE SIGNAL IS PROVIDED TO ALLOW
  1740. EXTERNAL ENABLING OF THE DATA BUS.  tHIS LINE IS CONNECTED DIRECTLY TO THE
  1741. pHASE tWO INPUT CLOCK SIGNAL FOR ANY NORMALLY OPERATING SYSTEM AND IS DE-
  1742. TAILED IN fIGURE 1.13.
  1743.         tHE dbe SIGNAL AFFECTS ONLY THE DATA BUS BUFFERS.  iT DOES NOT
  1744. AFFECT PROCESSOR TIMING AND HAS NO EFFECT ON THE ADDRESS OR THE r/w LINES.
  1745.         tHIS INPUT IS PROVIDED PRIMARILY FOR USE IN SYSTEMS WHICH USE
  1746. NON-FAMILY DEVICES FOR EITHER THE MEMORY OR THE PERIPHERAL INTERFACE FUNC-
  1747. TIONS.  iN PARTICULAR, IT ALLOWS THE DATA BUS TO BE ENABLED FOR A PERIOD
  1748. LONGER THAN THE pHASE tWO CLOCK PULSE FOR SYSTEMS REQUIRING GREATER PROCES-
  1749. SOR HOLD TIME ON THE DATA BUS.  tHIS APPLICATION IS COVERED IN GREATER DE-
  1750. TAIL IN cHAPTER 2.
  1751.  
  1752. 1.4.1.2.6   vma--vALID mEMORY aDDRESS
  1753.         aS MENTIONED ABOVE, THE mcs650x FAMILY OF MICROPROCESSORS ALWAYS
  1754. PUTS KNOWN ADDRESSES ON THE ADDRESS BUS AND, AS A RESULT, DOES NOT REQUIRE A
  1755. vma SIGNAL.  hOWEVER, TO REMAIN PIN-COMPATIBLE WITH THE mc6800, THE vma PIN
  1756.  
  1757.  
  1758.                                    -36-
  1759.  
  1760. ============================================================================
  1761.  
  1762. IS CONNECTED INTERNALLY TO THE vCC POWER SUPPLY.  tHIS ASSURES OPERATION IN
  1763. SYSTEMS IN WHICH vma IS PART OF THE CHIP-SELECT FUNCTION.  tHIS PIN IS NOT
  1764. AVAILABLE ON THE 28-PIN PROCESSORS.
  1765.  
  1766. 1.4.1.2.7   ba--bUS aVAILABLE
  1767.         tHE BUS AVAILABLE SIGNAL IS PROVIDED ON THE mcs65o1 TO SIGNAL TO
  1768. A dma CONTROLLER, ETC. THAT THE PROCESSOR IS STOPPED AND THAT THE DATA AND
  1769. ADDRESS BUSSES CAN BE USED FOR OTHER THAN PROCESSOR PROGRAM EXECUTION.
  1770.         tHIS OPERATION IS SIMILAR TO THAT OF THE mc6800 BUS AVAILABLE
  1771. SIGNAL EXCEPT THAT MUCH LESS TIME IS REQUIRED TO STOP THE mcs6501 SINCE THE
  1772. mg6800 REQUIRES COMPLETION OF THE CURRENT INSTRUCTION BEFORE STOPPING.  iF
  1773. NO WRITE OPERATION TAKES PLACE DURING THE CYCLE IN WHICH THE rdy SIGNAL
  1774. GOES LOW, THE ba WILL GO HIGH (> 2.4V) DURING pHASE tWO OF THE SAME CYCLE.
  1775. iN GENERAL, ba WILL GO HIGH DURING THE FIRST pHASE tWO PULSE DURING WHICH
  1776. THE r/w LINE IS HIGH.  fOR THE CURRENT PROCESSORS, THE MAXIMUM TIME IS
  1777. 3-1/2 CYCLES.
  1778.  
  1779. 1.4.1.2.8   rdy--rEADV
  1780.         tHE rdy INPUT DELAYS EXECUTION OF ANY CYCLE DURING WHICH THE rdy
  1781. LINE IS PULLED LOW.  tHIS LINE SHOULD CHANGE DURING THE pHASE oNE CLOCK
  1782. PULSE.  tHIS CHANGE IS THEN RECOGNIZED DURING THE NEXT pHASE tWO PULSE TO
  1783. ENABLE OR DISABLE THE EXECUTION OF THE CURRENT INTERNAL MACHINE CYCLE.
  1784. tHIS EXECUTION NORMALLY OCCURS DURING THE NEXT pHASE oNE CLOCK; TIMING IS
  1785. SHOWN IN fIGURE 1.13.
  1786.         tHE PRIMARY PURPOSE OF THE rdy LINE IS TO DELAY EXECUTION OF A
  1787. PROGRAM FETCH CYCLE UNTIL DATA IS AVAILABLE FROM MEMORY.  tHIS HAS DIRECT
  1788. APPLICATION IN PROTOTYPE SYSTEMS EMPLOYING LIGHT-ERASABLE promS OR epromS.
  1789. bOTH OF THESE DEVICES HAVE RELATIVELY SLOW ACCESS TIMES AND REQUIRE IMPLE-
  1790. MENTATION OF THE rdy FUNCTION IF THE PROCESSOR IS TO OPERATE AT FULL SPEED.
  1791. wITHOUT THE rdy FUNCTION A REDUCTION IN THE FREQUENCY OF THE SYSTEM CLOCK
  1792. WOULD BE NECESSARY.
  1793.         tHE rdy FUNCTION WILL NOT STOP THE PROCESSOR IN A CYCLE IN WHICH
  1794. A write OPERATION IS BEING PERFORMED.  iF THE roy LINE GOES FROM HIGH TO
  1795. LOW DURING A write CYCLE THE PROCESSOR WILL EXECUTE THAT CYCLE AND WILL
  1796. THEN STOP IN THE NEXT read CYCLE (r/w = 1).
  1797.  
  1798.  
  1799.                                    -37-
  1800.  
  1801. ============================================================================
  1802.             ___
  1803. 1.4.1.2.9   nmi--nON-mASKABLE iNTERRUPT
  1804.         tHE nmi INPUT, WHEN IN THE INTERRUPTED STATE, ALWAYS INTERRUPTS
  1805. THE PROCESSOR AFTER IT COMPLETES THE INSTRUCTION CURRENTLY BEING EXECUTED.
  1806. tHIS INTERRUPT IS NOT "MASKABLE," I.E., THERE IS NO WAY FOR THE PROCESSOR
  1807. TO PREVENT RECOGNITION OF THE INTERRUPT.
  1808.         tHE nmi INPUT RESPONDS TO A NEGATIVE TRANSITION.  tO INTERRUPT
  1809. THE PROCESSOR, THE nmi INPUT MUST GO FROM HIGH (> +2.4v) TO LOW
  1810. (< +0.4V).  iT CAN THEN STAY LOW FOR AN INDEFINITE PERIOD WITHOUT AFFECTING
  1811. THE PROCESSOR OPERATION AND WITHOUT ANOTHER INTERRUPT.  tHE PROCESSOR WILL
  1812. NOT DETECT ANOTHER INTERRUPT UNTIL THIS LINE GOES HIGH AND THEN BACK TO LOW.
  1813. tHE nni SIGNAL MUST BE LOW FOR AT LEAST TWO CLOCK CYCLES FOR THE INTERRUPT
  1814. TO BE RECOGNIZED, WHEREUPON NEW PROGRAM COUNT VECTORS ARE FETCHED.
  1815.  
  1816. 1.4.1.2.10  irq--iNTERRUPT rEQUEST
  1817.         tHE INTERRUPT REQUEST (irq) RESPONDS IN MUCH THE SAME MANNER AS
  1818. nmi.  hOWEVER, THIS FUNCTION CAN BE ENABLED OR DISABLED BY THE INTERRUPT
  1819. INHIBIT BIT IN THE PROCESSOR STATUS REGISTER.  aS LONG AS THE i FLAG (INTER-
  1820. RUPT INHIBIT FLAG) IS A LOGIC 1, THE SIGNAL ON THE irq PIN WILL NOT AFFECT
  1821. THE PROCESSOR.
  1822.         tHE irq PIN IS NOT EDGE-SENSITIVE.  iNSTEAD, THE PROCESSOR WILL
  1823. BE INTERRUPTED AS LONG AS THE i FLAG IS A LOGIC "o" AND THE SIGNAL ON THE
  1824. irq INPUT IS AT gnd.  bECAUSE OF THIS, THE irq SIGNAL MUST BE HELD LOW UN-
  1825. TIL IT IS RECOGNIZED, I.E., UNTIL THE PROCESSOR COMPLETES THE INSTRUCTION
  1826. CURRENTLY BEING EXECUTED.  iF i IS SET WHEN irq GOES LOW, THE INTERRUPT WILL
  1827. NOT BE RECOGNIZED UNTIL i IS CLEARED THROUGH SOFTWARE CONTROL.  tO ASSURE
  1828. THAT THE PROCESSOR WILL NOT RECOGNIZE THE INTERRUPT MORE THAN ONCE, THE i
  1829. FLAG IS SET AUTOMATICALLY DURING THE LAST CYCLE BEFORE THE PROCESSOR BEGINS
  1830. EXECUTING THE INTERRUPT SOFTWARE, BEGINNING WITH THE FETCH OF PROGRAM COUNT.
  1831.         tHE FINAL REQUIREMENT IS THAT THE INTERRUPT INPUT MUST BE
  1832. CLEARED BEFORE THE i FLAG IS RESET.  iF THERE IS MORE THAN ONE ACTIVE
  1833. INTERRUPT DRIVING THESE TWO LINES (or'ED TOGETHER), THE RECOMMENDED PRO-
  1834. CEDURE IS TO SERVICE AND CLEAR BOTH INTERRUPTS BEFORE CLEARING THE i FLAG.
  1835. hOWEVER, IF THE INTERRUPTS ARE CLEARED ONE AT A TIME AND THE i FLAG IS RE-
  1836. SET AFTER EACH, THE PROCESSOR WILL SIMPLY RECOGNIZE ANY INTERRUPTS STILL
  1837. ACTIVE AND WILL PROCESS THEM PROPERLY BUT MORE SLOWLY BECAUSE OF THE TIME
  1838. REQUIRED TO RETURN FROM ONE INTERRUPT BEFORE RECOGNIZING THE NEXT.  iF THE
  1839.  
  1840.  
  1841.                                    -38-
  1842.  
  1843. ============================================================================
  1844.  
  1845. PROCEDURE RECOMMENDED ABOVE IS FOLLOWED, EACH INTERRUPT WILL BE RECOGNIZED
  1846. AND PROCESSED ONLY ONCE.  fIGURE 1.14 PROVIDES SEVERAL EXAMPLES OF INTER-
  1847. RUPTS, MICROPROCESSOR RECOGNITION OF EACH INTERRUPT (irq AND nmi), AND PRO-
  1848. CESSOR SELECTION OF INTERRUPTS DURING OVERLAPPED REQUESTS.
  1849.  
  1850.  
  1851.          -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
  1852.        O2 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  1853.           --- -{$7e}- --- --- --- -{$7e}- --- --- --- --- -{$7e}- -{$7e}- --- -{$7e}- --- --- --
  1854.  
  1855.       ___----           -------------------------------             --------
  1856.       irq  1{$7c}           {$7c}3                            {$7c}9            {$7c}
  1857.             -------------                             ---------------
  1858.  
  1859.       ___----------------------             -------       ---------
  1860.       nmi                    5{$7c}             {$7c}     {$7c}7      {$7c}     12{$7c}
  1861.                               ---------------     ---------       ----------
  1862.  
  1863.                 -------------       ----------      ---------   ---------
  1864. interrupt      2{$7c}          4{$7c}       {$7c}        {$7c}     8{$7c}     10{$7c} 11{$7c}     13{$7c}
  1865. mask bit --------           ---------        --------       -----       ----
  1866.  
  1867.  
  1868.                 eXAMPLES OFLNTERRUPT rECOGNITION BY mcs650x
  1869.                                 figure 1.14
  1870.  
  1871.  
  1872.         eACH MAJOR EVENT AFFECTING THE MICROPROCESSOR IS NUMBERED IN
  1873. THE FIGURE WITH THE CORRESPONDING EXPLANATIONS BELOW.
  1874.  
  1875.             eVENT
  1876.             nUMBER                  sYSTEM aCTIVITY
  1877.             ------                  ---------------              ___
  1878.               1.    pROCESSOR IS EXECUTING FROM MAIN PROGRAM AND irq GOES
  1879.                     TO LOW STATE.
  1880.  
  1881.               2.    uPON COMPLETION OF CURRENT INSTRUCTION, THE PROCESSOR
  1882.                     RECOGNIZES THE INTERRUPT, STORES THE CONTENTS OF pc
  1883.                     AND p ONTO THE STACK AND THEN SETS i DURING THE FETCH
  1884.                     OF THE INTERRUPT VECTOR.
  1885.                                                    ___
  1886.               3.    aFTER SERVICING THE INTERRUPT, irq SHOULD BE RESET
  1887.                     BEFORE RESETTING THE INTERRUPT MASK BIT TO AVOID
  1888.                     DOUBLE INTERRUPTING.
  1889.  
  1890.               4.    bEFORE THE PROCESSOR RESUMES NORMAL MAIN PROGRAM EXE-
  1891.                     CUTION THE INTERRUPT MASK BIT WILL BE RESET LOW.
  1892.                     ___
  1893.               5.    nmi NOW GOES LOW, SIGNALLING A NON-MASKABLE INTERRUPT
  1894.                     REQUEST.
  1895.  
  1896.  
  1897.                                    -39-
  1898.  
  1899. ============================================================================
  1900.  
  1901.             eVENT
  1902.             nUMBER                  sYSTEM aCTIVITY
  1903.             ------      ___         ---------------
  1904.               6.    tHE nmi INTERRUPT IS RECOGNIZED AND SERVICED IN THE
  1905.                     SAME MANNER AS irq.
  1906.                                                                     ___
  1907.               7.    tHE PROCESSOR HAS RESUMED NORMAL OPERATION WHEN nmi
  1908.                     AGAIN GOES LOW REQUESTING AN INTERRUPT.
  1909.  
  1910.               8.    tHE INTERRUPT MASK BIT IS SET HIGH IN RESPONSE TO
  1911.                     THE nmi REQUEST.
  1912.                          ___
  1913.               9.    hERE irq HAS GONE LOW TO SIGNAL AN INTERRUPT REQUEST.
  1914.                     tHIS REQUEST IS IGNORED SINCE THE nmi INTERRUPT IS
  1915.                     BEING SERVICED AND THE INTERRUPT MASK IS SET.
  1916.                                                                         ___
  1917.              10.    tHE INTERRUPT MASK BIT IS RESET AFTER SERVICING THE nmi
  1918.                     INTERRUPT.
  1919.                                                                ___
  1920.              11.    tHE PROCESSOR IS NOW ABLE TO RECOGNIZE THE irq SIGNAL,
  1921.                     WHICH IS STILL LOW, AND DOES SO BY SETTUIG THE INTER-
  1922.                     RUPT MASK BIT.
  1923.                                             ___  ___
  1924.              12.    dURING THE SERVICING OF irq, nmi GOES FROM HIGH TO LOW.
  1925.                     tHE PROCESSOR THEN COMPLETES THE CURRENT INSTRUCTION
  1926.                     AND ABANDONS THE irq INTERRUPT TO SERVICE nmi.  nmi
  1927.                     IS SERVICED REGARDLESS OF THE STATE OF THE INTERRUPT
  1928.                     MASK BIT.
  1929.                                          ___
  1930.              13.    aFTER COMPLETING THE nmi INTERRUPT ROUTINE, THE PRO-
  1931.                     CESSOR WILL RESUME EXECUTION OF THE irq ROUTINE, EVEN
  1932.                     THOUGH irq HAS SUBSEQUENTLY GONE HIGH.
  1933.             ___
  1934. 1.4.1.2.11  res--rESET
  1935.         tHE res LINE IS USED TO INITIALIZE THE MICROPROCESSOR FROM A
  1936. POWER-DOWN CONDITION.  dURING THE POWER-UP TIME THIS LINE IS HELD LOW, AND
  1937. WRITING FROM THE MICROPROCESSOR IS INHIBITED.  wHEN THE LINE GOES HIGH, THE
  1938. MICROPROCESSOR WILL DELAY 6 CYCLES AND THEN FETCH THE NEW PROGRAM COUNT VEC-
  1939. TORS FROM SPECIFIC LOCATIONS IN MEMORY (pcl FROM LOCATION fffc AND pch FROM
  1940. LOCATION fffd).  tHIS IS THE START OF THE USER'S CODE.  iT SHOULD BE ASSUMED
  1941. THAT ANY TIME THE RESET LINE HAS BEEN PULLED LOW AND THEN HIGH, THE INTERNAL
  1942. STATES OF THE MACHINE ARE UNKNOWN AND ALL REGISTERS MUST BE RE-INITIALIZED
  1943. DURING THE RESTART SEQUENCE.  tIMING FOR THE RESET SEQUENCE IS SHOWN IN
  1944. fIGURE 1.13.
  1945.  
  1946.  
  1947.                                    -40-
  1948.  
  1949. ============================================================================
  1950.  
  1951. 1.4.2   tHE mcs6502
  1952.  
  1953. 1.4.2.1  pRODUCT cHARACTERISTICS
  1954.          tHE mcs6502 IS VERY SIMILAR TO THE mcs6501 DESCRIBED IN DETAIL IN
  1955. THE PREVIOUS SECTION.  iT PROVIDES A FULL 16-PIN ADDRESS BUS AND THEREFORE
  1956. ADDRESSES A FULL 65,536 WORDS (*) IN MEMORY.  iT ALSO HAS THE SAME DATA BUS,
  1957. r/w AND rdy AVAILABLE ON THE mcs 6501.
  1958.         fIGURE 1.15 ILLUSTRATES THE PIN CONFIGURATION OF THE mcs6502.
  1959.         tHE DIFFERENCES BETWEEN THE TWO DEVICES ARE AS FOLLOWS:
  1960.         1.  tHE mcs6502 HAS THE OSCILLATOR AND CLOCK DRIVER ON-CHIP, THUS
  1961.             ELIMINATING THE NEED FOR AN EXTERNAL HIGH-LEVEL TWO-PHASE
  1962.             CLOCK GENERATOR.
  1963.         2.  tHE mcs6502 GENERATES A sync SIGNAL INSTEAD OF THE BUS AVAIL-
  1964.             ABLE (ba) SIGNAL.  tHE sync SIGNAL IS DESCRIBED IN DETAIL BE-
  1965.             LOW.
  1966.         3.  pIN 5, CORRESPONDING TO THE mc6800 vma SIGNAL, IS NOT CONNEC-
  1967.             TED.
  1968.         4.  tHE INTERNAL DATA BUS ENABLE FUNCTION IS CONNECTED DIRECTLY TO
  1969.             THE PHASE TWO CLOCK ON THE CHIP.  tHEREFORE PIN 36 ON THE
  1970.             mcs6502 IS NOT CONNECTED.
  1971.  
  1972. 1.4.2.2  dEVICE tIMING--rEQUIREMENTS AND gENERATION
  1973.          tHE mcs6501, IN MAINTAINING TOTAL BUS COMPATIBILITY WITH THE
  1974. mc6800 PRODUCT FAMILY, REQUIRES A 5-VOLT TWO-PHASE CLOCK.  tHE mcs6502,
  1975. HOWEVER, CAN BE USED WITH AN EXTERNALLY GENERATED TIME BASE CONSISTING OF
  1976. EITHER A ttl LEVEL SINGLE-PHASE CLOCK, CRYSTAL OSCILLATOR OR rc NETWORK.
  1977.         fIGURES 1.16 AND 1.17 SHOW THE CONFIGURATION FOR SETTING THE FRE-
  1978. QUENCY OF OSCILLATIONS WITH A CRYSTAL OR WITH AN rc NETWORK.
  1979.         fIGURE 1.16 DISPLAYS THE CRYSTAL MODE OF OPERATION IN WHICH THE
  1980. FREQUENCY OF OSCILLATION IS SET BY THE CRYSTAL OPERATING IN CONJUNCTION
  1981. WITH THE rc NETWORK.  fIGURE 1.17 DISPLAYS THE SAME INTERCONNECTS AS IN THE
  1982. CRYSTAL MODE OF TIME BASE GENERATION, WITH THE CRYSTAL REMOVED FROM THE
  1983.  
  1984.  
  1985.                                    -41-
  1986.  
  1987. ============================================================================
  1988.  
  1989.                    ---------------------------               ___
  1990. vss             ---+ 1                     40+---<------     res
  1991.                 ---+                         +---
  1992. rdy      ------>---+ 2                     39+--------->     p2 (out)
  1993.                 ---+                         +---
  1994. p1 (out) <---------+ 3                     38+---<------     s.o.
  1995. ___             ---+                         +---
  1996. irq      ------>---+ 4                     37+---<------     p0 (in)
  1997.                 ---+                         +---
  1998. n.c.            ---+ 5                     36+---            n.c.
  1999. ___             ---+                         +---
  2000. nmi      ------>---+ 6                     35+---            n.c.
  2001.                 ---+                         +---
  2002. sync     <---------+ 7                     34+--------->     r/w
  2003.                 ---+                         +---
  2004. vcc             ---+ 8                     33+---\           db0
  2005.                 ---+                         +--- {$7c}
  2006. ab0            /---+ 9                     32+--- {$7c}          db1
  2007.               {$7c} ---+                         +--- {$7c}
  2008. ab1           {$7c} ---+10                     31+--- {$7c}          db2
  2009.               {$7c} ---+         mcs6502         +--- {$7c}
  2010. ab2           {$7c} ---+11                     30+--- {$7c}          db3
  2011.               {$7c} ---+                         +---  >--->
  2012. ab3           {$7c} ---+12                     29+--- {$7c}          db4
  2013.               {$7c} ---+                         +--- {$7c}
  2014. ab4           {$7c} ---+13                     28+--- {$7c}          db5
  2015.               {$7c} ---+                         +--- {$7c}
  2016. ab5           {$7c} ---+14                     27+--- {$7c}          db6
  2017.          <---<  ---+                         +--- {$7c}
  2018. ab6           {$7c} ---+15                     26+--- {$7c}          db7
  2019.               {$7c} ---+                         +---/
  2020. ab7           {$7c} ---+16                     25+---\           ab15
  2021.               {$7c} ---+                         +--- {$7c}
  2022. ab8           {$7c} ---+17                     24+--- {$7c}          ab14
  2023.               {$7c} ---+                         +---  >--->
  2024. ab9           {$7c} ---+18                     23+--- {$7c}          ab13
  2025.               {$7c} ---+                         +--- {$7c}
  2026. ab10          {$7c} ---+19                     22+--- {$7c}          ab12
  2027.               {$7c} ---+                         +---/
  2028. ab11          {$7c} ---+20                     21+---            vss
  2029.                \---+                         +---
  2030.                    ---------------------------
  2031.                       n.c. = no connection
  2032.  
  2033.  
  2034.                         mcs6502 pINOUT dESIGNATIONS
  2035.                                 figure 1.15
  2036.  
  2037.  
  2038.                                    -42-
  2039.  
  2040. ============================================================================
  2041.  
  2042. ----------                       {$7c}\    7404   {$7c}\
  2043. {$7c}        {$7c}                       {$7c} \          {$7c} \
  2044. {$7c}     39 +------------------O----+  >o---O---o{$7c}  >------> systen p2
  2045. {$7c}        {$7c}                  {$7c}    {$7c} /     {$7c}    {$7c} /
  2046. {$7c}        {$7c}                 -+-   {$7c}/      {$7c}    {$7c}/
  2047. {$7c}        {$7c}             cF  -+-     rF    {$7c}
  2048. {$7c}        {$7c}                  {$7c}   ------   {$7c}
  2049. {$7c}     37 +---O-----O--------O---+    +----
  2050. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}   ------
  2051. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}
  2052. {$7c}        {$7c}  -+-   -+-      -+-
  2053. {$7c}        {$7c}  \ /   / \     ----- crystal
  2054. {$7c}        {$7c}  -+-   -+-     -----
  2055. {$7c}        {$7c}   {$7c}     {$7c}       -+-
  2056. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}
  2057. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}
  2058. {$7c}        {$7c}   {$7c}     ---------O
  2059. ----------   {$7c}              {$7c}
  2060.              {$7c}             -+-
  2061.              o vCC        ////
  2062.  
  2063.  
  2064.             mcs6502 pARALLEL mODE cRYSTAL cONTROLlED oSCILLATOR
  2065.                                 figure 1.16A
  2066.  
  2067.  
  2068. ----------                       {$7c}\    7404   {$7c}\
  2069. {$7c}        {$7c}                       {$7c} \          {$7c} \
  2070. {$7c}     39 +------------------O----+  >o---O---o{$7c}  >------> systen p2
  2071. {$7c}        {$7c}                  {$7c}    {$7c} /     {$7c}    {$7c} /
  2072. {$7c}        {$7c}                 -+-   {$7c}/      {$7c}    {$7c}/
  2073. {$7c}        {$7c}             cF  -+-     rF    {$7c}
  2074. {$7c}        {$7c}                  {$7c}   ------   {$7c}
  2075. {$7c}     37 +---O-----O--------O---+    +---O
  2076. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}   ------   {$7c}
  2077. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}            {$7c}
  2078. {$7c}        {$7c}  -+-   -+-       {$7c}            {$7c}
  2079. {$7c}        {$7c}  \ /   / \       {$7c}     ---    {$7c}
  2080. {$7c}        {$7c}  -+-   -+-       {$7c}    {$7c}{$7c} {$7c}{$7c}   {$7c}
  2081. {$7c}        {$7c}   {$7c}     {$7c}        -----+{$7c} {$7c}+----
  2082. {$7c}        {$7c}   {$7c}     {$7c}             {$7c}{$7c} {$7c}{$7c}
  2083. {$7c}        {$7c}   {$7c}     {$7c}              ---
  2084. {$7c}        {$7c}   {$7c}     {$7c}            crystal
  2085. ----------   {$7c}     {$7c}
  2086.              {$7c}    -+-
  2087.          vcc o   ////
  2088.  
  2089.  
  2090.             mcs6502 sERIES mODE cRYSTAL cONTROLLED oSCILLATOR
  2091.                                 figure 1.16B
  2092.  
  2093.  
  2094.             mcs6502 tIME bASE gENERATION - cRYSTAL cONTROLLED
  2095.                                 figure 1.16
  2096.  
  2097.  
  2098.  
  2099. ----------                       {$7c}\    7404   {$7c}\
  2100. {$7c}        {$7c}                       {$7c} \          {$7c} \
  2101. {$7c}     39 +------------------O----+  >o---O---o{$7c}  >------> systen p2
  2102. {$7c}        {$7c}                  {$7c}    {$7c} /     {$7c}    {$7c} /
  2103. {$7c}        {$7c}                 -+-   {$7c}/      {$7c}    {$7c}/
  2104. {$7c}        {$7c}             cF  -+-     rF    {$7c}
  2105. {$7c}        {$7c}                  {$7c}   ------   {$7c}
  2106. {$7c}     37 +------------------O---+    +----
  2107. {$7c}        {$7c}                      ------
  2108. {$7c}        {$7c}
  2109. {$7c}        {$7c}
  2110. {$7c}        {$7c}
  2111. {$7c}        {$7c}
  2112. {$7c}        {$7c}
  2113. {$7c}        {$7c}
  2114. {$7c}        {$7c}
  2115. {$7c}        {$7c}
  2116. ----------
  2117.  
  2118.  
  2119.             mcs6502 tIME bASE gENERATOR - rc nETWORK
  2120.                                 figure 1.17
  2121.  
  2122.  
  2123.                                    -43-
  2124.  
  2125. ============================================================================
  2126.  
  2127. CIRCUIT.  vALUES OF THE FEEDBACK RESISTOR, rf, AND FEEDBACK CAPACITOR, cf,
  2128. WILL BE DIFFERENT FOR THE CRYSTAL MODE VERSUS THE rc MODE.  WHILE THE DE-
  2129. TAIL SPECIFICATIONS FOR VALUES OF rf AND cf ARE FOUND IN THE DATA SHEET FOR
  2130. THE mcs6502, CLOCK TIMING CAN BE GENERATED BY USE OF COMBINATIONS OF rf IN
  2131. THE RANGE OF 0 TO 500k OHMS AND cf IN THE RANGE OF 2 TO 12 PF.  tHE READER
  2132. IS REFERRED TO THE mcs6502 DATA SHEET FOR A DETAILED DESCRIPTION OF THE
  2133. APPLICATION OF rc NETWORKS AND CRYSTAL OSCILLATORS FOR GENERATION OF THE
  2134. TIME BASE IN THESE MODES OF OPERATION.
  2135.         tHE mcs6500 BUS DISCIPLINE DESCRIBED IN sECTION 1.3.1 IS APPLI-
  2136. CABLE WHEREVER THE OSCILLATOR IS LOCATED.  fOR DATA TRANSFERS TO BE PROPERLY
  2137. CARRIED OUT BETWEEN THE PROCESSOR AND THE VARIOUS SUPPORT CHIPS IN THE SYS-
  2138. TEMS, THE TIMING OF THE CLOCKS CONTROLLING THE INTERNAL PROCESSOR OPERA-
  2139. TIONS MUST BE VERY CLOSE TO THAT OF THE PHASE TWO CLOCK OUT OF PIN 39 OF
  2140. THE PROCESSOR WITH NO MORE THAN TWO ttl DELAYS FOR CLOCK BUFFERING.  iT IS
  2141. IMPORTANT IN SYSTEMS WHICH DRIVE THE CLOCK GENERATORS WITH A ttl SQUARE
  2142. WAVE THAT THIS INPUT WAVEFORM NOT BE USED TO CONTROL THE PERIPHERAL CHIPS
  2143. UNLESS CARE IS TAKEN TO ASSURE PROPER TIMING OF THE PHASE TWO CLOCK BEING
  2144. USED IN THESE SUPPORT CHIPS.
  2145.  
  2146. 1.4.2.3  sync sIGNAL
  2147.          iN THE mcs6502, A sync SIGNAL IS PROVIDED TO IDENTIFY THOSE CYCLES
  2148. IN WHICH THE PROCESSOR IS DOING AN op code FETCH.  tHE sync LINE GOES HIGH
  2149. DURING PHASE ONE OF AN op code FETCH AND STAYS HIGH FOR THE REMAINDER OF
  2150. THAT CYCLE.  iF THE rdy LINE IS PULLED LOW DURING THE PHASE ONE CLOCK PULSE
  2151. IN WHICH THE sync LINE WENT HIGH, THE PROCESSOR WILL STOP IN ITS CURRENT
  2152. STATE.  iT REMAINS IN THAT STATE UNTIL THE rdy LINE GOES HIGH.  iN THIS
  2153. MANNER, THE sync SIGNAL CAN BE USED TO CONTROL rdy TO CAUSE SINGLE-INSTRUC-
  2154. TION EXECUTION.  tHIS APPLICATION IS DISCUSSED IN DETAIL IN cHAPTER 2.
  2155. fIGURE 1.18 CONTAINS A TIMING DIAGRAM FOR THIS SIGNAL.
  2156.  
  2157. 1.4.2.4  s.o.--sET oVERFLOW
  2158.          tHIS PIN SETS THE OVERFLOW FLAG ON A NEGATIVE TRANSITION FROM
  2159. ttl ONE TO ttl ZERO.  tHIS IS DESIGNED TO WORK WITH A FUTURE i/o PART AND
  2160. SHOULD NOT BE USED IN NORMAL APPLICATIONS UNLESS THE USER HAS PROGRAMMED
  2161. FOR THE FACT THE ARITHMETIC OPERATIONS ALSO AFFECT THE OVERFLOW FLAG.
  2162.  
  2163.  
  2164.                                    -44-
  2165.  
  2166. ============================================================================
  2167.  
  2168.  
  2169.         -- --- --- --- --- --- --- --- --- --- --- --- --- --- --
  2170.       O2 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  2171.          --- --- --- --- --- --- --- --- --- --- --- --- --- ---
  2172.  
  2173.         --                       --------------------------------
  2174.      r/w {$7c}1                     2{$7c}
  2175.          -------------------------
  2176.  
  2177.                                  -----       -----       -----
  2178.     sync                        3{$7c}   {$7c}      4{$7c}   {$7c}       {$7c}   {$7c}
  2179.         --------------------------   ---------   ---------   ----
  2180.  
  2181.  
  2182.     1.  dURING A MICROPROCESSOR WRITE CYCLE, r/w SIGNAL LOW, THE
  2183.         sync PULSE DOES NOT OCCUR.
  2184.  
  2185.     2.  tHE r/w SIGNAL GOES HIGH TO SIGNAL THE BEGINNING OF A
  2186.         MICROPROCESSOR READ CYCLE.
  2187.  
  2188.     3.  aT THE BEGINNING OF THE READ CYCLE A sync PULSE WILL BE
  2189.         BE GENERATED.  tHIS PULSE WILL LAST FOR ONE CYCLE TIME.  tHE
  2190.         sync PULSE INDICATES THAT THE MICROPROCESSOR IS READING AN
  2191.         op code FROM THE MEMORY FIELD.  iN THIS CASE THE sync PULSE IS
  2192.         HIGH FOR ONE CYCLE AS THE PROCESSOR READS THE op code.
  2193.  
  2194.     4.  tHE PROCESSOR OUTPUTS ANOTHER sync PULSE INDICATING IT HAS
  2195.         COMPLETED THE PREVIOUS INSTRUCTION AND IS FETCHING ANOTHER
  2196.         op code.  iN THIS CASE THREE MORE CYCLES ARE NEEDED TO COMPLETE
  2197.         THIS INSTRUCTION BEFORE THE NEXT sync PULSE IS GENERATED.  tHE
  2198.         sync PULSE IS APERIODIC IN THAT ITS GENERATION IS A FUNCTION OF
  2199.         THE PROGRAM AND THE RESULTANT LENGTHS OF THE INSTRUCTIONS AND
  2200.         ADDRESSING MODES.
  2201.  
  2202.  
  2203.                             mcs6502 sync sIGNAL
  2204.                                 figure 1.18
  2205.  
  2206.  
  2207.                                    -45-
  2208.  
  2209. ============================================================================
  2210.  
  2211. tHE OPERATION OF EACH FUNCTION IS EXACTLY THE SAME AS ON THE mcs6502.
  2212.  
  2213. ------------------+-------------------+-------------------+--------------------
  2214. {$7c}   fEATURES      {$7c}      mcs6503      {$7c}     mcs6504       {$7c}    mcs6505        {$7c}
  2215. +=================+===================+===================+===================+
  2216. {$7c} aDDRESSING      {$7c}    4096 bYTES     {$7c}   8192 bYTES      {$7c}   4096 bYTES      {$7c}
  2217. {$7c}   cAPABILITY    {$7c}   (ab00 - ab11)   {$7c}  (ab00 - ab12)    {$7c}  (ab00 - ab11)    {$7c}
  2218. +-----------------+-------------------+-------------------+-------------------+
  2219. {$7c} iNTERRUPT       {$7c}     ___  ___      {$7c}       ___         {$7c}      ___          {$7c}
  2220. {$7c}   rEQUEST       {$7c}     irq, nmi      {$7c}       irq         {$7c}      irq          {$7c}
  2221. {$7c}   cAPABILITY    {$7c}                   {$7c}                   {$7c}                   {$7c}
  2222. +-----------------+-------------------+-------------------+-------------------+
  2223. {$7c}  "rEADY" sIGNAL {$7c}        --         {$7c}       --          {$7c}      rdy          {$7c}
  2224. +-----------------+-------------------+-------------------+-------------------+
  2225. {$7c}  tIMING         {$7c} sINGLE pHASE      {$7c} sINGLE pHASE      {$7c} sINGLE pHASE      {$7c}
  2226. {$7c}    sIGNALS      {$7c} ttl lEVEL O0(in), {$7c} ttl lEVEL O0(in), {$7c} ttl lEVEL O0(in), {$7c}
  2227. {$7c}    rEQUIRED     {$7c} OR cRYSTAL OR rc  {$7c} OR cRYSTAL OR rc  {$7c} OR cRYSTAL OR rc  {$7c}
  2228. +-----------------+-------------------+-------------------+-------------------+
  2229. {$7c}  oTHER cONTROL  {$7c}     ___           {$7c}     ___           {$7c}     ___           {$7c}
  2230. {$7c}    sIGNALS      {$7c}     res, r/w      {$7c}     res, r/w      {$7c}     res, r/w      {$7c}
  2231. {$7c}                 {$7c}                   {$7c}                   {$7c}                   {$7c}
  2232. ------------------+-------------------+-------------------+--------------------
  2233.  
  2234.              fUNCTIONAL fEATURES OF mcs6503, mcs6504, mcs6505
  2235.                                 figure 1.19
  2236.  
  2237.  
  2238.                                    -46-
  2239.  
  2240. ============================================================================
  2241.  
  2242.         fIGURE 1.20 ILLUSTRATES THE PIN DESIGNATION FOR THE THREE PROCES-
  2243. SORS, INDICATING THE TRADEOFFS THAT EXIST BETWEEN CONTROL SIGNALS AND AD-
  2244. DRESSING CAPABILITY DUE TO PINOUT CONSTRAINTS.  lIKE THE mcs6502, THE 28-
  2245. PIN MICROPROCESSORS ALSO HAVE THE ON-THE-CHIP-OSCILLATOR AND CLOCK DRIVERS.
  2246. fIGURE 1.21 AND 1.22 DISPLAY THE CIRCUITRY NECESSARY TO GENERATE THE TIME
  2247. BASE IN THE CRYSTAL MODE AND rc NETWORK MODE RESPECTIVELY.  sPECIFIC DE-
  2248. TAILS ON THE VALUE OF FEEDBACK RESISTANCE, rf, AND FEEDBACK CAPACITANCE,
  2249. cf, CAN BE FOUND IN THE APPROPRIATE DATA SHEET.
  2250.  
  2251.  
  2252.                                    -47-
  2253.  
  2254. ============================================================================
  2255.  
  2256. ___  ----------             ___  ----------             ___  ----------
  2257. res -+ 1    40+- p2(out)    res -+ 1    40+- p2(out)    res -+ 1    40+- p2(out)
  2258.     -+        +-                -+        +-                -+        +-
  2259. vSS -+ 2    39+- p0(in)     vSS -+ 2    39+- p0(in)     vSS -+ 2    39+- p0(in)
  2260. ___ -+        +-            ___ -+        +-            ___ -+        +-
  2261. irq -+ 3    38+- r/w        irq -+ 3    38+- r/w        irq -+ 3    38+- r/w
  2262. ___ -+        +-            ___ -+        +-            ___ -+        +-
  2263. nmi -+ 4    37+- db0        nmi -+ 4    37+- db0        nmi -+ 4    37+- db0
  2264.     -+        +-                -+        +-                -+        +-
  2265. vCC -+ 5    36+- db1        vCC -+ 5    36+- db1        vCC -+ 5    36+- db1
  2266.     -+        +-                -+        +-                -+        +-
  2267. ab0 -+ 6    35+- db2        ab0 -+ 6    35+- db2        ab0 -+ 6    35+- db2
  2268.     -+        +-                -+        +-                -+        +-
  2269. ab1 -+ 7    34+- db3        ab1 -+ 7    34+- db3        ab1 -+ 7    34+- db3
  2270.     -+        +-                -+        +-                -+        +-
  2271. ab2 -+ 8    33+- db4        ab2 -+ 8    33+- db4        ab2 -+ 8    33+- db4
  2272.     -+        +-                -+        +-                -+        +-
  2273. ab3 -+ 9    32+- db5        ab3 -+ 9    32+- db5        ab3 -+ 9    32+- db5
  2274.     -+        +-                -+        +-                -+        +-
  2275. ab4 -+10    31+- db6        ab4 -+10    31+- db6        ab4 -+10    31+- db6
  2276.     -+        +-                -+        +-                -+        +-
  2277. ab5 -+11    30+- db7        ab5 -+11    30+- db7        ab5 -+11    30+- db7
  2278.     -+        +-                -+        +-                -+        +-
  2279. ab6 -+12    29+- ab11       ab6 -+12    29+- ab11       ab6 -+12    29+- ab11
  2280.     -+        +-                -+        +-                -+        +-
  2281. ab7 -+13    28+- ab10       ab7 -+13    28+- ab10       ab7 -+13    28+- ab10
  2282.     -+        +-                -+        +-                -+        +-
  2283. ab8 -+14    27+- ab9        ab8 -+14    27+- ab9        ab8 -+14    27+- ab9
  2284.     -+        +-                -+        +-                -+        +-
  2285.      ----------                  ----------                  ----------
  2286.       mcs6503                     mcs6504                     mcs6505
  2287.  
  2288.  
  2289.                 mcs6503, mcs6504, mcs6505 pINOUT dESIGNATIONS
  2290.                                 figure 1.20
  2291.  
  2292.  
  2293.  
  2294.                                    -48-
  2295.  
  2296. ============================================================================
  2297.  
  2298. ----------                       {$7c}\    7404   {$7c}\
  2299. {$7c}        {$7c}                       {$7c} \          {$7c} \
  2300. {$7c}     28 +------------------O----+  >o---O---o{$7c}  >------> systen p2
  2301. {$7c}        {$7c}                  {$7c}    {$7c} /     {$7c}    {$7c} /
  2302. {$7c}        {$7c}                 -+-   {$7c}/      {$7c}    {$7c}/
  2303. {$7c}        {$7c}             cF  -+-     rF    {$7c}
  2304. {$7c}        {$7c}                  {$7c}   ------   {$7c}
  2305. {$7c}     27 +---O-----O--------O---+    +----
  2306. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}   ------
  2307. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}
  2308. {$7c}        {$7c}  -+-   -+-      -+-
  2309. {$7c}        {$7c}  \ /   / \     ----- crystal
  2310. {$7c}        {$7c}  -+-   -+-     -----
  2311. {$7c}        {$7c}   {$7c}     {$7c}       -+-
  2312. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}
  2313. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}
  2314. {$7c}        {$7c}   {$7c}     ---------O
  2315. ----------   {$7c}              {$7c}
  2316.              {$7c}             -+-
  2317.              o vCC        ////
  2318.  
  2319.  
  2320.                        mcs6503,4,5 pARALLEL mODE cRYSTAL
  2321.                              cONTROLlED oSCILLATOR
  2322.  
  2323.  
  2324. ----------                       {$7c}\    7404   {$7c}\
  2325. {$7c}        {$7c}                       {$7c} \          {$7c} \
  2326. {$7c}     28 +------------------O----+  >o---O---o{$7c}  >------> systen p2
  2327. {$7c}        {$7c}                  {$7c}    {$7c} /     {$7c}    {$7c} /
  2328. {$7c}        {$7c}                 -+-   {$7c}/      {$7c}    {$7c}/
  2329. {$7c}        {$7c}             cF  -+-     rF    {$7c}
  2330. {$7c}        {$7c}                  {$7c}   ------   {$7c}
  2331. {$7c}     27 +---O-----O--------O---+    +---O
  2332. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}   ------   {$7c}
  2333. {$7c}        {$7c}   {$7c}     {$7c}        {$7c}            {$7c}
  2334. {$7c}        {$7c}  -+-   -+-       {$7c}            {$7c}
  2335. {$7c}        {$7c}  \ /   / \       {$7c}     ---    {$7c}
  2336. {$7c}        {$7c}  -+-   -+-       {$7c}    {$7c}{$7c} {$7c}{$7c}   {$7c}
  2337. {$7c}        {$7c}   {$7c}     {$7c}        -----+{$7c} {$7c}+----
  2338. {$7c}        {$7c}   {$7c}     {$7c}             {$7c}{$7c} {$7c}{$7c}
  2339. {$7c}        {$7c}   {$7c}     {$7c}              ---
  2340. {$7c}        {$7c}   {$7c}     {$7c}            crystal
  2341. ----------   {$7c}     {$7c}
  2342.              {$7c}    -+-
  2343.          vcc o   ////
  2344.  
  2345.  
  2346.                         mcs6503,4,5 sERIES mODE cRYSTAL
  2347.                              cONTROLLED oSCILLATOR
  2348.  
  2349.  
  2350.                 mcs6503, mcs6504, mcs6505 tIME bASE gENERATION
  2351.                             cRYSTAL cONTROLLED
  2352.                                 figure 1.16
  2353.  
  2354.  
  2355. ----------                       {$7c}\    7404   {$7c}\
  2356. {$7c}        {$7c}                       {$7c} \          {$7c} \
  2357. {$7c}     39 +------------------O----+  >o---O---o{$7c}  >------> systen p2
  2358. {$7c}        {$7c}                  {$7c}    {$7c} /     {$7c}    {$7c} /
  2359. {$7c}        {$7c}                 -+-   {$7c}/      {$7c}    {$7c}/
  2360. {$7c}        {$7c}             cF  -+-     rF    {$7c}
  2361. {$7c}        {$7c}                  {$7c}   ------   {$7c}
  2362. {$7c}     37 +------------------O---+    +----
  2363. {$7c}        {$7c}                      ------
  2364. {$7c}        {$7c}
  2365. {$7c}        {$7c}
  2366. {$7c}        {$7c}
  2367. {$7c}        {$7c}
  2368. {$7c}        {$7c}
  2369. {$7c}        {$7c}
  2370. {$7c}        {$7c}
  2371. {$7c}        {$7c}
  2372. ----------
  2373.  
  2374.  
  2375.                  mcs6503, mcs6504, mcs6505  tIME bASE gENERATOR
  2376.                                  rc nETWORK
  2377.                                 figure 1.17
  2378.  
  2379.  
  2380.                                    -49-
  2381.  
  2382. ============================================================================
  2383.  
  2384. 1.5 periphera1 interface device - mcs6520
  2385.  
  2386. 1.5.1   iNTRODUCTION
  2387.         tHE mcs6520 IS A DIRECT PIN FOR PIN REPLACEMENT FOR THE mOTOROLA
  2388. mc6820 pERIPHERAL iNTERFACE aDAPTER, THE "pia".  aS SUCH, IT MEETS ALL OF
  2389. THE "pia" ELECTRICAL SPECIFICATIONS AND IS TOTALLY HARDWARE COMPATIBLE
  2390. WITH THE mc6820.
  2391.         tHE mcs6520 IS AN i/o DEVICE WHICH ACTS AS AN INTERFACE BETWEEN
  2392. THE MICROPROCESSOR AND PERIPHERALS SUCH AS PRINTERS, DISPLAYS, KEYBOARDS,
  2393. ETC.  tHE PRIME FUNCTION OF THE ng56520 IS TO RESPOND TO STIMULUS FROM
  2394. EACH OF THE TWO WORLDS IT IS SERVING.  oN THE ONE SIDE, THE mcs6520 IS
  2395. INTERFACING WITH PERIPHERALS VIA TWO EIGHT-BIT BI-DIRECTIONAL PERIPHERAL
  2396. DATA PORTS.  oN THE OTHER SIDE, THE DEVICE INTERFACES WITH THE MICROPRO-
  2397. CESSOR THROUGH AN EIGHT-BIT DATA BUS; THIS IS THE SAME DATA BUS DISCUSSED
  2398. AT LENGTH IN sECTION 1.3.1.  iT IS, THEREFORE, SIMPLEST TO VIEW THE BASIC
  2399. FUNCTION OF THE mcs6520 AS IN THE BLOCK DIAGRAM OF fIGURE 1.23.
  2400.  
  2401.  
  2402.                   /               -----------                \
  2403.                  {$7c}                {$7c}         {$7c}<====>  control  {$7c}
  2404.                  {$7c}                {$7c}         {$7c}                 {$7c}
  2405.                  {$7c}   8 bit        {$7c}         {$7c}         8 bit   {$7c}
  2406.                  {$7c} data bus <====>{$7c}         {$7c}<====> data port {$7c}  peripheral
  2407. microprocessors  {$7c}                {$7c}         {$7c}                 {$7c}  devices -
  2408.     mc05ox      <                 {$7c} mcs6520 {$7c}                  > printers,
  2409.                  {$7c}                {$7c}         {$7c}                 {$7c}  displays, etc.
  2410.                  {$7c}                {$7c}         {$7c}         8 bit   {$7c}
  2411.                  {$7c}                {$7c}         {$7c}<====> data port {$7c}
  2412.                  {$7c}  control <====>{$7c}         {$7c}                 {$7c}
  2413.                  {$7c}                {$7c}         {$7c}<====>  control  {$7c}
  2414.                   \               -----------                /
  2415.  
  2416.  
  2417.                       bASIC mcs6520 iNTERFACE dIAGRAM
  2418.                                 figure 1.23
  2419.  
  2420.  
  2421.                                    -50-
  2422.  
  2423. ============================================================================
  2424.  
  2425. iN ADDITION TO THE LINES DESCRIBED ABOVE, THE mcs6520 PROVIDES FOUR
  2426. INTERRUPT INPUT/PERIPHERAL CONTROL LINES AND THE LOGIC NECESSARY FOR
  2427. SIMPLE, EFFECTIVE CONTROL OF PERIPHERAL INTERRUPTS.  nO EXTERNAL LOGIC
  2428. IS REQUIRED FOR INTERFACING THE mcs650x MICROPROCESSOR TO MOST PERIPHERAL
  2429. DEVICES.
  2430.         tHE FUNCTIONAL CONFIGURATION OF THE mcs6520 IS PROGRAMMED BY THE
  2431. MICROPROCESSOR DURING SYSTEMS INITIALIZATION.  eACH OF THE PERIPHERAL
  2432. DATA LINES IS PROGRAMMED TO ACT AS AN INPUT OR OUTPUT AND EACH OF THE FOUR
  2433. CONTROL/INTERRUPT LINES MAY BE PROGRAMMED FOR ONE OF FOUR POSSIBLE CONTROL
  2434. MODES.  tHIS ALLOWS A HIGH DEGREE OF FLEXIBILITY IN THE OVERALL OPERATION
  2435. OF THE INTERFACE.
  2436.         sOME OF THE MORE IMPORTANT FEATURES OF THE mcs6520 ARE THE FOLLOWING.
  2437.              *  cOMPATIBILITY WITH THE mcs650x MICROPROCESSORS.
  2438.              *  eIGHT-BIT BI-DIRECTIONAL DATA BUS FOR COMMUNICATION WITH
  2439.                 THE MICROPROCESSOR.
  2440.              *  tWO EIGHT-BIT BI-DIRECTIONAL PORTS FOR INTERFACE TO
  2441.                 PERIPHERALS.
  2442.              *  tWO PROGRAMMABLE CONTROL REGISTERS.
  2443.              *  tWO PROGRAMMABLE dATA dIRECTION rEGISTERS.
  2444.              *  fOUR INDIVIDUALLY CONTROLLED INTERRUPT INPUT LINES -
  2445.                 TWO USABLE AS PERIPHERAL CONTROL OUTPUTS.
  2446.              *  hANDSHAKE CONTROL LOGIC FOR INPUT AND OUTPUT PERIPHERAL
  2447.                 OPERATION.
  2448.              *  hIGH IMPEDANCE THREE-STATE AND DIRECT TRANSISTOR DRIVE
  2449.                 PERIPHERAL LINES.
  2450.              *  pROGRAM CONTROLLED INTERRUPT AND INTERRUPT MASK CAPABILITY.
  2451.  
  2452.  
  2453. 1.5.2   oRGANIZATION OF THE mcs6520
  2454.     fIGURE 1.25 CONTAINS A BLOCK DIAGRAM OF THE mcs6520 SHOWING THE
  2455. INTERNAL REGISTERS AND DATA PATHS AND THE VARIOUS INPUTS AND OUTPUTS ON
  2456. THE DEVICE.  tHIS SECTION CONTAINS A GENERAL DESCRIPTION OF THE INTERNAL
  2457. ORGANIZATION OF THE DEVICE ALONG WITH A DISCUSSION OF HOW THE VARIOUS
  2458. REGISTERS AFFECT ONE ANOTHER.  tHE FOLLOWING SECTIONS DISCUSS THE DETAILS
  2459.  
  2460.  
  2461.                                    -51-
  2462.  
  2463. ============================================================================
  2464.  
  2465.                ---------------------------
  2466. vss         ---+ 1                     40+---<------  ca1
  2467.             ---+                         +---
  2468. pa0        /---+ 2                     39+---<----->  ca2
  2469.           {$7c} ---+                         +---         ____
  2470. pa1       {$7c} ---+ 3                     38+--------->  irqa
  2471.           {$7c} ---+                         +---         ____
  2472. pa2       {$7c} ---+ 4                     37+--------->  irqb
  2473.           {$7c} ---+                         +---
  2474. pa3       {$7c} ---+ 5                     36+---<------  rs0
  2475.           {$7c} ---+                         +---
  2476. pa4       {$7c} ---+ 6                     35+---<------  rs1
  2477.           {$7c} ---+                         +---         ___
  2478. pa5       {$7c} ---+ 7                     34+---<------  res
  2479.           {$7c} ---+                         +---
  2480. pa6       {$7c} ---+ 8                     33+---\        d0
  2481.           {$7c} ---+                         +--- {$7c}
  2482. pa7       {$7c} ---+ 9                     32+--- {$7c}       d1
  2483.      <--><  ---+                         +--- {$7c}
  2484. pb0       {$7c} ---+10                     31+--- {$7c}       d2
  2485.           {$7c} ---+         mcs6520         +--- {$7c}
  2486. pb1       {$7c} ---+11                     30+--- {$7c}       d3
  2487.           {$7c} ---+                         +---  ><-->
  2488. pb2       {$7c} ---+12                     29+--- {$7c}       d4
  2489.           {$7c} ---+                         +--- {$7c}
  2490. pb3       {$7c} ---+13                     28+--- {$7c}       d5
  2491.           {$7c} ---+                         +--- {$7c}
  2492. pb4       {$7c} ---+14                     27+--- {$7c}       d6
  2493.           {$7c} ---+                         +--- {$7c}
  2494. pb5       {$7c} ---+15                     26+--- {$7c}       d7
  2495.           {$7c} ---+                         +---/
  2496. pb6       {$7c} ---+16                     25+---<------  enable
  2497.           {$7c} ---+                         +---
  2498. pb7       {$7c} ---+17                     24+---<------  cs2
  2499.            \---+                         +---         ___
  2500. cb1  ------>---+18                     23+---<------  cs3
  2501.             ---+                         +---
  2502. cb2  <----->---+19                     22+---<------  cs1
  2503.             ---+                         +---
  2504. vcc         ---+20                     21+---<------  r/w
  2505.             ---+                         +---
  2506.                ---------------------------
  2507.  
  2508.  
  2509.         mcs6520 pINOUT dESIGNATIONS pERIPHERAL iNTERFACE aDAPTER
  2510.                                 figure 1.24
  2511.  
  2512.  
  2513.                                    -52-
  2514.  
  2515. ============================================================================
  2516.  
  2517.  
  2518.                         mcs6520 iNTERNAL aRCHITECTURE
  2519.                                 figure 1.25
  2520.  
  2521.  
  2522.                                    -53-
  2523.  
  2524. ============================================================================
  2525.  
  2526. OF THE INPUTS AND OUTPUTS ON THE CHIP, ALONG WITH A DETAILED DISCUSSION OF
  2527. THE OPERATION OF EACH REGISTER.  tHE FINAL SECTION DISCUSSES THE mcs6520
  2528. FROM AN OPERATIONAL VIEWPOINT, DESCRIBING THE INTERACTION OF THE REGISTER
  2529. BITS, INPUT/OUTPUT LINES, ETC.
  2530.         tHE mcs6520 IS ORGANIZED INTO TWO INDEPENDENT SECTIONS REFERRED TO
  2531. AS THE "a sIDE" AND THE "b sIDE."  eACH SECTION CONSISTS OF A cONTROL rEGIS-
  2532. TER (cra, crb), dATA dIRECTION rEGISTER (ddra, ddrb), oUTPUT rEGISTER (ora,
  2533. orb), iNTERRUPT sTATUS cONTROL AND THE BUFFER NECESSARY TO DRIVE THE pERIPH-
  2534. ERAL iNTERFACE BUSSES.
  2535.  
  2536. 1.5.2.1 dATA iNPUT rEGISTER
  2537.         wHEN THE MICROPROCESSOR WRITES DATA INTO THE mcs6520, THE DATA
  2538. WHICH APPEARS ON THE DATA BUS DURING THE pHASE tWO CLOCK PULSE IS LATCHED
  2539. INTO THE dATA iNPUT rEGISTER.  iT IS THEN TRANSFERRED INTO ONE OF SIX IN-
  2540. TERNAL REGISTERS OF THE mcs6520 AFTER THE TRAILING EDGE OF pHASE tWO.  tHIS
  2541. ASSURES THAT THE DATA ON THE PERIPHERAL OUTPUT LINES WILL NOT "GLITCH,"
  2542. I.E., THE OUTPUT LINES WILL MAKE SMOOTH TRANSITIONS FROM HIGH TO LOW OR FROM
  2543. LOW TO HIGH AND THE VOLTAGE WILL REMAIN STABLE EXCEPT WHEN IT IS GOING TO
  2544. THE OPPOSITE POLARITY.
  2545.  
  2546. 1.5.2.2 cONTROL rEGISTERS (cra AND crb)
  2547.         fIGURE 1.29 ILLUSTRATES THE BIT DESIGNATION AND FUNCTIONS IN THE
  2548. cONTROL rEGISTERS.  tHE cONTROL rEGISTERS ALLOW THE MICROPROCESSOR TO CON-
  2549. TROL THE OPERATION OF THE INTERRUPT LINES (ca1, ca2, cb1, cb2), AND PERIPH-
  2550. ERAL CONTROL LINES (ca2, cb2).  a SINGLE BIT IN EACH REGISTER CONTROLS THE
  2551. ADDRESSING OF THE dATA dIRECTION rEGISTERS (ddra, ddrb) AND THE oUTPUT rEG-
  2552. ISTERS (ora, orb) DISCUSSED BELOW.  iN ADDITION, TWO BITS (BIT 6 AND 7) ARE
  2553. PROVIDED IN EACH CONTROL REGISTER TO INDICATE THE STATUS OF THE INTERRUPT
  2554. INPUT LINES (ca1, ca2, cbL, cb2).  tHESE INTERRUPT STATUS BITS (irqa, irqb)
  2555. ARE NORMALLY INTERROGATED BY THE MICROPROCESSOR DURING THE INTERRUPT SERV-
  2556. ICE PROGRAM TO DETERMINE THE SOURCE OF AN ACTIVE INTERRUPT.  tHESE ARE THE
  2557. INTERRUPT LINES WHICH DRIVE THE INTERRUPT INPUT (irq, nmi) OF THE MICRO-
  2558. PROCESSOR.  tHE OTHER BITS IN cra AND crb ARE DESCRIBED IN THE DISCUSSION
  2559. OF THE INTERFACE TO THE PERIPHERAL DEVICE (sECTION 1.5.4).
  2560.         tHE VARIOUS BITS IN THE CONTROL REGISTERS WILL BE ACCESSED MANY
  2561. TIMES DURING A PROGRAM TO ALLOW THE PROCESSOR TO ENABLE OR DISABLE INTER-
  2562. RUPTS) CHANGE OPERATING MODES, ETC. AS REQUIRED BY THE PERIPHERAL DEVICE
  2563. BEING CONTROLLED.
  2564.  
  2565.  
  2566.                                    -54-
  2567.  
  2568. ============================================================================
  2569.  
  2570. 1.5.2.3 dATA dIRECTION rEGISTERS (ddra, ddrb)
  2571.         tHE dATA dIRECTION rEGISTERS ALLOW THE PROCESSOR TO PROGRAM EACH
  2572. LINE IN THE 8-BIT pERIPHERAL i/o PORT TO ACT AS EITHER AN INPUT OR AN OUT-
  2573. PUT.  eACH BIT IN ddra CONTROLS THE CORRESPONDING LINE IN THE pERIPHERAL a
  2574. PORT AND EACH BIT IN ddrb CONTROLS THE CORRESPONDING LINE IN THE pERIPHERAL
  2575. b PORT.  pLACING A "0" IN THE dATA dIRECTION rEGISTER CAUSES THE CORRESPOND-
  2576. ING pERIPHERAL i/o LINE TO ACT AS AN INPUT.  a "1" CAUSES IT TO ACT AS AN
  2577. OUTPUT.
  2578.         tHE dATA dIRECTION rEGISTERS ARE NORMALLY PROGRAMMED ONLY DURING
  2579. THE SYSTEM INITIALIZATION ROUTINE WHICH IS PERFORMED IN RESPONSE TO A rESET
  2580. SIGNAL.  hOWEVER, THE CONTENTS OF THESE REGISTERS CAN BE ALTERED DURING
  2581. SYSTEM OPERATION.  tHIS ALLOWS VERY CONVENIENT CONTROL OF SOME PERIPHERAL
  2582. DEVICES SUCH AS KEYBOARDS.
  2583.  
  2584. 1.5.2.4 pERIPHERAL oUTPUT rEGISTERS (ora, orb)
  2585.         tHE pERIPHERAL oUTPUT rEGISTERS STORE THE OUTPUT DATA WHICH AP-
  2586. PEARS ON THE pERIPHERAL i/o PORT.  wRITING AN "0" INTO A BIT IN ora CAUSES
  2587. THE CORRESPONDING LINE ON THE pERIPHERAL a PORT TO GO LOW (< 0.4V) IF THAT
  2588. LINE IS PROGRAMMED TO ACT AS AN OUTPUT.  a "1" CAUSES THE CORRESPONDING
  2589. OUTPUT TO GO HIGH.  tHE LINES OF THE pERIPHERAL b PORT ARE CONTROLLED BY
  2590. orb IN THE SAME MANNER.
  2591.         aDDRESSING OF THESE REGISTERS IS DISCUSSED IN sECTION 1.5.3.4.
  2592.  
  2593. 1.5.2.5 iNTERRUPT sTATUS cONTROL
  2594.         tHE FOUR INTERRUPT/PERIPHERAL CONTROL LINES (ca1, ca2, cb1, cb2)
  2595. ARE CONTROLLED BY THE iNTERRUPT sTATUS cONTROL (a, b).  tHIS LOGIC INTER-
  2596. PRETS THE CONTENTS OF THE CORRESPONDING cONTROL rEGISTER, DETECTS ACTIVE
  2597. TRANSITIONS ON THE INTERRUPT INPUTS AND PERFORMS THOSE OPERATIONS NECESSARY
  2598. TO ASSURE PROPER OPERATION OF THESE FOUR PERIPHERAL INTERFACE LINES.  tHE
  2599. OPERATION OF THESE LINES IS DESCRIBED IN DETAIL IN sECTION 1.5.4.2.
  2600.  
  2601. 1.5.2.6 pERIPHERAL iNTERFACE bUFFERS (a, b) AND dATA bUS bUFFERS (dbb)
  2602.         tHE bUFFERS WHICH DRIVE THE PERIPHERAL i/o PORTS AND THE DATA BUS
  2603. PROVIDE THE CURRENT AND VOLTAGE DRIVE NECESSARY TO ASSURE PROPER SYSTEM
  2604. OPERATION AND TO MEET THE DEVICE SPECIFICATIONS.
  2605.  
  2606.  
  2607.                                    -55-
  2608.  
  2609. ============================================================================
  2610.  
  2611. 1.5.3   iNTERFACE bETWEEN mcs6520 AND THE mcs650x fAMILY OF mICROPROCESSORS
  2612.         tHE mcs6520 INTERFACES TO THE MICROPROCESSOR WITH AN 8-BIT BI-DIREC-
  2613. TIONAL DATA BUS, 3 CHIP-SELECT LINES, 2 REGISTER-SELECT LINES, 2 INTERRUPT
  2614. REQUEST LINES, READ/WRITE LINE, ENABLE LINE AND RESET LINE.
  2615.  
  2616. 1.5.3.1 dATA bUS (d0-d7)
  2617.         tHE 8-BIT, BI-DIRECTIONAL DATA BUS ALLOWS THE TRANSFER OF DATA BE-
  2618. TWEEN THE MICROPROCESSOR AND THE mcs6520.  tHE DATA BUS OUTPUT DRIVERS ARE
  2619. 3-STATE DEVICES THAT REMAIN IN THE HIGH IMPEDANCE STATE EXCEPT WHEN THE
  2620. MICROPROCESSOR READS DATA FROM THE PERIPHERAL ADAPTER.  tHIS DATA BUS IS
  2621. THE SAME AS DISCUSSED IN sECTION 1.3.1, "bUS sTRUCTURE."
  2622.  
  2623. 1.5.3.2 eNABLE (e)
  2624.         tHE eNABLE INPUT IS THE ONLY MICROPROCESSOR INTERFACE TIMING INPUT
  2625. ON THE PERIPHERAL INTERFACE DEVICE.  aLL DATA TRANSFERS INTO AND OUT OF THE
  2626. mcs6520 ARE CONTROLLED BY THIS SIGNAL.  iN NORMAL OPERATION, THIS INPUT
  2627. SHOULD BE CONNECTED TO THE PHASE TWO CLOCK SIGNAL.  iN THE CASE OF THE
  2628. mcs6501, THIS IS THE 02 CLOCK GENERATED EXTERNAL TO THE MICROPROCESSOR
  2629. CHIP.  fOR ON-CHIP OSCILLATOR PRODUCTS (mcs6502, mcs6503, mcs6504 AND
  2630. mcs6505), THE ENABLE PULSE BECOMES 02(out).
  2631.  
  2632. 1.5.3.3 rEAD/wRITE (r/w)
  2633.         tHIS SIGNAL IS GENERATED BY THE MICROPROCESSOR TO CONTROL THE DI-
  2634. RECTION OF DATA TRANSFERS ON THE DATA BUS.  a LOW (< 0.4V) ON THIS LINE
  2635. ENABLES THE INPUT BUFFERS (MICROPROCESSOR wRITE) AND DATA IS TRANSFERRED
  2636. FROM THE MICROPROCESSOR TO THE mcs6520 UNDER CONTROL OF eNABLE INPUT IF THE
  2637. DEVICE HAS BEEN CHIP-SELECTED.  a HIGH ON THE r/w LINE ALLOWS THE mcs6520
  2638. TO TRANSFER DATA TO THE DATA BUS BUFFERS.  tHE DATA BUS BUFFERS ARE ENABLED
  2639. WHEN THE PROPER CHIP-SELECT AND eNABLE SIGNALS ARE PRESENT.  fIGURE 1.26
  2640. ILLUSTRATES THE rEAD/wRITE TIMING.
  2641.  
  2642. 1.5.3.4 cHIP sELECT lINES (cs1, cs2, cs3)
  2643.         tHESE THREE INPUTS ALLOW THE MICROPROCESSOR TO SELECT THE PROPER
  2644. PERIPHERAL INTERFACE DEVICE.  cs1 AND cs2 MUST BE HIGH AND cs3 MUST BE LOW
  2645. FOR SELECTION OF THE DEVICE.  dATA TRANSFERS ARE THEN PERFORMED UNDER CON-
  2646. TROL OF THE eNABLE AND r/w SIGNALS.  tHESE LINES ARE NORMALLY CONNECTED TO
  2647. THE ADDRESS LINES ON THE MICROPROCESSOR, EITHER DIRECTLY OR THROUGH ADDRESS
  2648. DECODERS.
  2649.  
  2650.  
  2651.                                    -56-
  2652.  
  2653. ============================================================================
  2654.  
  2655.                    ->{$7c} 180 {$7c}<-
  2656.                      {$7c}     {$7c}
  2657.                      {$7c}     {$7c}--------------                 -------- 2.4v
  2658. nable                {$7c}    /{$7c}              \               /
  2659.               -------{$7c}---- {$7c}               {$7c}--------------          0.4v
  2660.                      {$7c}     {$7c}               {$7c}
  2661.                      {$7c}   ->{$7c}  300  {$7c}<-     {$7c}
  2662.                      {$7c}     {$7c}       {$7c}       {$7c}
  2663.               ------ {$7c}-----{$7c}-------{$7c}-------{$7c}----------------------- 2.4v
  2664. address             x{$7c}     {$7c}       {$7c}       {$7c}
  2665.               ------ {$7c}-----{$7c}-------{$7c}-------{$7c}----------------------- 0.4v
  2666.                                    {$7c}       {$7c}
  2667.                                    {$7c}     ->{$7c} {$7c}<- 20
  2668.                                    {$7c}       {$7c} {$7c}
  2669.               -------------------- {$7c}-------{$7c}\{$7c}                      2.4v
  2670. data bus                          x{$7c}       {$7c} > --------------------
  2671.               -------------------- {$7c}-------{$7c}/{$7c}                      0.4v
  2672.                                            {$7c}
  2673.                                            {$7c}
  2674.               ---- {$7c}-----------------------{$7c}----------------------- 2.4v
  2675. peripheral        x{$7c}                       {$7c}
  2676. data (a or b) ---- {$7c}-----------------------{$7c}----------------------- 0.4v
  2677.                    {$7c}                       {$7c}
  2678.                    {$7c}<-------  700  ------->{$7c}
  2679.  
  2680.  
  2681.                     mICROPROCESSOR iNTERFACE tIMING rEAD
  2682.                                 figure 1.26A
  2683.  
  2684.  
  2685.                            {$7c}<-   470   ->{$7c}
  2686.                            {$7c}             {$7c}
  2687.                            {$7c}-------------{$7c}                 -------- 2.4v
  2688. nable                     /{$7c}              \               /
  2689.               ------------ {$7c}               {$7c}--------------          0.4v
  2690.                            {$7c}               {$7c}
  2691.                    ->{$7c} 180 {$7c}<-   ->{$7c}  100  {$7c}<-
  2692.                      {$7c}     {$7c}       {$7c}       {$7c}
  2693.               ------ {$7c}-----{$7c}-------{$7c}-------{$7c}----------------------- 2.4v
  2694. address             x{$7c}     {$7c}       {$7c}       {$7c}
  2695.               ------ {$7c}-----{$7c}-------{$7c}-------{$7c}----------------------- 0.4v
  2696.                            {$7c}       {$7c}       {$7c}
  2697.                ->{$7c}   130   {$7c}<-     {$7c}       {$7c}
  2698.                  {$7c}                 {$7c}       {$7c}
  2699.               -- {$7c}                 {$7c}       {$7c}  --------------------- 2.4v
  2700. read/write      \{$7c}                 {$7c}       {$7c} /
  2701.                  {$7c}-----------------{$7c}-------{$7c}-                       0.4v
  2702.                                    {$7c}       {$7c}
  2703.                                    {$7c}     ->{$7c} {$7c}<- 20
  2704.                                    {$7c}       {$7c} {$7c}
  2705.               -------------------- {$7c}-------{$7c}\{$7c}                      2.4v
  2706. data bus                          x{$7c}       {$7c} > --------------------
  2707.               -------------------- {$7c}-------{$7c}/{$7c}                      0.4v
  2708.                                            {$7c}
  2709.                                            {$7c}
  2710.               ---- {$7c}-----------------------{$7c}----------------------- 2.4v
  2711. peripheral        x{$7c}                       {$7c}
  2712. data (a or b) ---- {$7c}-----------------------{$7c}----------------------- 0.4v
  2713.                    {$7c}                       {$7c}
  2714.                    {$7c}<-------  700  ------->{$7c}
  2715.  
  2716.  
  2717.           *note: all times specified are in Nsec for 1mhz operation.
  2718.  
  2719.                     mICROPROCESSOR iNTERFACE tIMING - wRITE
  2720.                                 figure 1.26B
  2721.  
  2722.  
  2723.                                    -57-
  2724.  
  2725. ============================================================================
  2726.  
  2727.         aS DESCRIBED IN sECTION 1.5.5.2, A SINGLE BIT IN EACH cONTROL rEG-
  2728. ISTER (cra AND crb) CONTROLS ACCESS TO THE dATA dIRECTION rEGISTER OR THE
  2729. pERIPHERAL INTERFACE.  iF BIT 2 IN THE cONTROL rEGISTER IS A "1," A pERIPH-
  2730. ERAL oUTPUT REGISTER (ora, orb) IS SELECTED, AND IF BIT 2 IS A "0," THE
  2731. dATA dIRECTION rEGISTER IS SELECTED.  iNTERNAL REGISTERS ARE SELECTED BY
  2732. THE rEGISTER sELECT LINES (rs0, rs1) AND THE dATA dIRECTION rEGISTER aCCESS
  2733. cONTROL BIT AS FOLLOWS:
  2734.                      dATA dIRECTION
  2735.                     rEGISTER aCCESS
  2736.                       cONTROL bIT
  2737.         rs1  rs0    cra-2   crb-2       rEGISTER sELECTED
  2738.          0    0       1       -     pERIPHERAL iNTERFACE a (sEE
  2739.                                       sECTION 1.5.3.5.1)
  2740.          0    0       0       -     dATA dIRECTION rEGISTER a
  2741.          0    1       -       -     cONTROL rEGISTER a
  2742.          1    0       -       1     pERIPHERAL iNTERFACE b (sEE
  2743.                                       sECTION 1.5.3.5.2)
  2744.          1    0       -       0     dATA dIRECTION rEGISTER b
  2745.          1    1       -       -     cONTROL rEGISTER b
  2746.  
  2747.         iF THE PROGRAMMER WISHES TO WRITE THE DATA INTO ddra, ora, ddrb,
  2748. OR orb, HE MUST FIRST SET BIT 2 IN THE PROPER cONTROL rEGISTER.  tHE DE-
  2749. SIRED REGISTER CAN THEN BE ACCESSED WITH THE ADDRESS DETERMINED BY THE
  2750. ADDRESS INTERCONNECT TECHNIQUE USED.  (sEE cHAPTER 2, sECTION 2.3.1 FOR A
  2751. DISCUSSION OF ADDRESSING IN mcs650x SYSTEMS.)
  2752.  
  2753. 1.5.3.5 rEGISTER sELECT lINES (rs0), (rs1)
  2754.         tHESE TWO REGISTER SELECT LINES ARE USED TO SELECT THE VARIOUS REG-
  2755. ISTERS INSIDE THE mcs6520.  tHESE INPUT LINES ARE USED IN CONJUNCTION WITH
  2756. INTERNAL CONTROL REGISTERS TO SELECT A PARTICULAR REGISTER THAT IS TO BE
  2757. ACCESSED BY THE MICROPROCESSOR.  tHESE LINES ARE NORMALLY CONNECTED TO
  2758. MICROPROCESSOR ADDRESS OUTPUT LINES.  tHESE LINES OPERATE IN CONJUNCTION
  2759. WITH THE CHIP-SELECT INPUTS TO ALLOW THE MICROPROCESSOR TO ADDRESS A SINGLE
  2760. 8-BIT REGISTER. WITHIN THE MICROPROCESSOR ADDRESS SPACE.  tHIS REGISTER MAY
  2761. BE AN INTERNAL REGISTER (cra, ora, ETC.) OR IT MAY BE A pERIPHERAL i/o PORT.
  2762.         tHE PROCESSOR CAN WRITE DIRECTLY INTO THE cONTROL rEGISTERS (cra,
  2763. crb), THE dATA dIRECTION rEGISTERS (ddra, ddrb) AND THE pERIPHERAL oUTPUT
  2764. rEGISTERS (ora, orb).  iN ADDITION, THE PROCESSOR CAN DIRECTLY READ THE
  2765.  
  2766.  
  2767.                                    -58-
  2768.  
  2769. ============================================================================
  2770.  
  2771. CONTENTS OF THE cONTROL rEGISTERS AND THE dATA dIRECTION rEGISTERS.  aCCESS-
  2772. ING THE pERIPHERAL oUTPUT rEGISTER FOR THE PURPOSE OF READING DATA BACK INTO
  2773. THE PROCESSOR OPERATES DIFFERENTLY ON THE ora AND THE orb REGISTERS AND
  2774. THEREFORE ARE DISCUSSED SEPARATELY BELOW.
  2775.  
  2776. 1.5.3.5.1   rEADING THE pERIPHERAL a i/o pORT
  2777.         tHE pERIPHERAL a i/o PORT CONSISTS OF 8 LINES WHICH CAN BE PRO-
  2778. GRAMMED TO ACT AS INPUTS OR OUTPUTS.  wHEN PROGRAMMED TO ACT AS OUTPUTS,
  2779. EACH LINE REFLECTS THE CONTENTS OF THE CORRESPONDING BIT IN THE pERIPHERAL
  2780. oUTPUT rEGISTER.  wHEN PROGRAMMED TO ACT AS AN INPUT, THESE LINES WILL GO
  2781. HIGH OR LOW DEPENDING ON THE INPUT DATA.  tHE pERIPHERAL oUTPUT rEGISTER
  2782. (ora) HAS NO EFFECT ON THOSE LINES PROGRAMMED TO ACT AS INPUTS.  tHE 8
  2783. LINES OF THE pERIPHERAL a i/o PORT THEREFORE CONTAIN EITHER INPUT OR OUTPUT
  2784. DATA DEPENDING ON WHETHER THE LINE IS PROGRAMMED TO ACT AS AN INPUT OR AN
  2785. OUTPUT.  fIGURE 1.27A ILLUSTRATES THE INTERFACE TIMING.
  2786.         pERFORMING A rEAD OPERATION WITH rs1 = 0, rs0 = 0 AND THE dATA
  2787. dIRECTION rEGISTER aCCESS cONTROL BIT (cra-2) = 1, DIRECTLY TRANSFERS THE
  2788. DATA ON THE pERIPHERAL a i/o LINES INTO THE PROCESSOR (VIA THE DATA BUS).
  2789. tHIS WILL CONTAIN BOTH THE INPUT AND OUTPUT DATA.  tHE PROCESSOR MUST BE
  2790. PROGRAMMED TO RECOGNIZE AND INTERPRET ONLY THOSE BITS WHICH ARE IMPORTANT
  2791. TO THE PARTICULAR PERIPHERAL OPERATION BEING PERFORMED.
  2792.         sINCE THE PROCESSOR ALWAYS READS THE pERIPHERAL a i/o PORT PINS
  2793. INSTEAD OF THE ACTUAL pERIPHERAL oUTPUT rEGISTER (ora), IT IS POSSIBLE FOR
  2794. THE DATA READ INTO THE PROCESSOR TO DIFFER FROM THE CONTENTS OF THE pERIPH-
  2795. ERAL oUTPUT rEGISTER FOR AN OUTPUT LINE.  tHIS IS TRUE WHEN THE i/o PIN IS
  2796. NOT ALLOWED TO GO TO A FULL +2.4V dc WHEN THE pERIPHERAL oUTPUT REGISTER
  2797. CONTAINS A LOGIC 1.  iN THIS CASE, THE PROCESSOR WILL READ A 0 FROM THE
  2798. pERIPHERAL a PIN, EVEN THOUGH THE CORRESPONDING BIT IN THE pERIPHERAL oUT-
  2799. PUT REGISTER IS A 1.
  2800.  
  2801. 1.5.3.5.2   rEADING THE pERIPHERAL b i/o pORT
  2802.         rEADING THE pERIPHERAL b i/o PORT YIELDS A COMBINATION OF INPUT
  2803. AND OUTPUT DATA IN A MANNER SIMILAR TO THE pERIPHERAL a PORT.  hOWEVER,
  2804. DATA IS READ DIRECTLY FROM THE pERIPHERAL b oUTPUT rEGISTER (orb) FOR THOSE
  2805. LINES PROGRAMMED TO ACT AS OUTPUTS.  iT IS THEREFORE POSSIBLE TO LOAD DOWN
  2806. THE pERIPHERAL b oUTPUT LINES WITHOUT CAUSING INCORRECT DATA TO BE TRANS-
  2807. FERRED BACK INTO THE PROCESSOR ON A rEAD OPERATION.  fIGURE L.27B ILLUS-
  2808. TRATES THE TIMING.
  2809.  
  2810.  
  2811.                                    -59-
  2812.  
  2813. ============================================================================
  2814.  
  2815.             --------           --------           {$7c}-------          --------
  2816. enable     /        \         /        \         /{$7c}       \        /        \
  2817.           -          ---/ /---          --------- {$7c}    {$7c}   {$7c}-------          --
  2818.                                                   {$7c}    {$7c}   {$7c}
  2819.                                             ->{$7c}180{$7c}<-  {$7c}   {$7c}
  2820.                                               {$7c}   {$7c}    {$7c}   {$7c}
  2821.           --------------/ /------------------ {$7c}---{$7c}----{$7c}---{$7c}-------------------
  2822. address                                      x{$7c}   {$7c}    {$7c}   {$7c}
  2823.           --------------/ /------------------ {$7c}---{$7c}----{$7c}---{$7c}-------------------
  2824.                                                   {$7c}    {$7c}   {$7c}
  2825.                                                   {$7c}    {$7c}   {$7c}
  2826.                                                   {$7c}    {$7c}   {$7c}
  2827.                                              -----{$7c}----{$7c}---{$7c}-------------------
  2828. read/write                                  /     {$7c}    {$7c}   {$7c}
  2829.           --------------/ /-----------------      {$7c}    {$7c}   {$7c}
  2830.                                                   {$7c}    {$7c}   {$7c}
  2831.                                                   {$7c}  ->{$7c}100{$7c}<-
  2832.                                                   {$7c}    {$7c}   {$7c}
  2833.                                                   {$7c}   /{$7c}---{$7c}\{$7c}
  2834. data bus  --------------/ /-----------------------{$7c}--< {$7c}   {$7c} >-----------------
  2835.                                                   {$7c}   \{$7c}---{$7c}/{$7c}
  2836.                                                   {$7c}      ->{$7c} {$7c}<-20
  2837.  
  2838.  
  2839.           - -------------------------------------------------------------------
  2840. peripheral x
  2841. data      - -------------------------------------------------------------------
  2842.  
  2843.  
  2844.                                                                   1.0Us ->{$7c} {$7c}<-
  2845.           -------------------------------------------------               {$7c} {$7c}--
  2846. ca2       (ac5 = ac3 = 1, ac4 = 0)                         \              {$7c}/{$7c}
  2847.            pulse output mode                                --------------{$7c} {$7c}
  2848.  
  2849.  
  2850.           ->{$7c} {$7c}<- 1.0Us
  2851.           --{$7c} {$7c}----------------------------------------------------------------
  2852. ca1         {$7c}x{$7c}
  2853.           --{$7c} {$7c}----------------------------------------------------------------
  2854.               {$7c}
  2855.             ->{$7c}  {$7c}<- 2.0Us
  2856.               {$7c}  {$7c}
  2857.               {$7c}  {$7c}-----------------------------------------
  2858. ca2             /{$7c}                                         \
  2859.           ------                                            -------------------
  2860.           (ac = 1, ac3 = ac$ = 0)
  2861.            handshake mode
  2862.  
  2863.  
  2864.             note: all times specified are in Nsec for 1mhz operation
  2865.  
  2866.  
  2867.                         pERIPHERAL a iNTERFACE tIMING
  2868.                                 figure 1.27A
  2869.  
  2870.  
  2871.                                    -60-
  2872.  
  2873. ============================================================================
  2874.  
  2875.                       {$7c}-------          {$7c}-------          {$7c}-------          ---
  2876. enable               /{$7c}       \        /{$7c}       \        /{$7c}       \        /
  2877.               ------- {$7c}        {$7c}------- {$7c}        -------- {$7c}        --------
  2878.                       {$7c}        {$7c}        {$7c}                 {$7c}
  2879.                 ->{$7c}180{$7c}<-      {$7c}        {$7c}                 {$7c}
  2880.                   {$7c}   {$7c}        {$7c}        {$7c}                 {$7c}
  2881.               --- {$7c}---{$7c}-----------------{$7c}-----------------{$7c}--------------------
  2882. address          x{$7c}   {$7c}        {$7c} x      {$7c}                 {$7c}
  2883.               --- {$7c}---{$7c}---------- ------{$7c}-----------------{$7c}--------------------
  2884.                       {$7c}        {$7c}        {$7c}                 {$7c}
  2885.               ->{$7c} 130 {$7c}<-      {$7c}        {$7c}                 {$7c}
  2886.                 {$7c}              {$7c}        {$7c}                 {$7c}
  2887.               - {$7c}              {$7c}  ------{$7c}-----------------{$7c}--------------------
  2888. read/write     \{$7c}              {$7c} /      {$7c}                 {$7c}
  2889.                 {$7c}--------------{$7c}-       {$7c}                 {$7c}
  2890.                                {$7c}        {$7c}                 {$7c}
  2891.                          ->{$7c}100{$7c}<-      {$7c}                 {$7c}
  2892.                            {$7c}   {$7c}        {$7c}                 {$7c}
  2893.               ------------ {$7c}---{$7c}-{$7c} -----{$7c}-----------------{$7c}--------------------
  2894. data bus                  x{$7c}   {$7c}  x     {$7c}                 {$7c}
  2895.               ------------ {$7c}---{$7c}-{$7c} -----{$7c}-----------------{$7c}--------------------
  2896.                                {$7c} {$7c}      {$7c}                 {$7c}
  2897.                           20 ->{$7c} {$7c}<-    {$7c}                 {$7c}
  2898.                                {$7c}        {$7c}                 {$7c}
  2899.               -----------------{$7c}--- {$7c}---{$7c}-----------------{$7c}--------------------
  2900. peripheral data and            {$7c}   x{$7c}   {$7c}                 {$7c}
  2901. cb2           -----------------{$7c}--- {$7c}---{$7c}-----------------{$7c}--------------------
  2902. (normal output mode)           {$7c}    {$7c}   {$7c}                 {$7c}
  2903.                        1.0Us ->{$7c}    {$7c}<- {$7c}               ->{$7c}   {$7c}<- 1.0 Us
  2904.                                         {$7c}                 {$7c}   {$7c}
  2905.               --------------------------{$7c}-  {$7c}             {$7c}  -{$7c}----------------
  2906. cb2 (bc5 = bc3 = 1, bc4 = 0)            {$7c} \ {$7c}             {$7c} / {$7c}
  2907. (pulse output mode)                     {$7c}  -{$7c}-------------{$7c}-  {$7c}     1.0 Us
  2908.                                         {$7c}   {$7c}             {$7c}   {$7c}    ->{$7c} {$7c}<-
  2909.                                       ->{$7c}   {$7c}<- 1.0Us                {$7c} {$7c}
  2910.               ------------------------------{$7c}------------------------{$7c} {$7c}-------
  2911. cb1                                         {$7c}                        {$7c}x{$7c}
  2912.               ------------------------------{$7c}------------------------{$7c} {$7c}-------
  2913.                                             {$7c}                          {$7c}
  2914.                                             {$7c}                          {$7c}   {$7c}
  2915.               ----------------------------  {$7c}                          {$7c}  -{$7c}---
  2916. cb2 (bc5 = 1, bc3 = bc4 = 0)              \ {$7c}                          {$7c} / {$7c}
  2917. (handshake mode)                           -{$7c}--------------------------{$7c}-  {$7c}
  2918.                                                                        {$7c}   {$7c}
  2919.                                                                2.0Us ->{$7c}   {$7c}<-
  2920.  
  2921.  
  2922.                         pERIPHERAL a iNTERFACE tIMING
  2923.                                 figure 1.27B
  2924.  
  2925.  
  2926.                                    -61-
  2927.  
  2928. ============================================================================
  2929.  
  2930. --------------------                    -----------------------
  2931.                    {$7c}                    {$7c}
  2932.             +5v    {$7c}                    {$7c}   +5v     +5v
  2933.              {$7c}     {$7c}                    {$7c}    {$7c}       {$7c}
  2934.              {$7c}     {$7c}                    {$7c}    {$7c}       {$7c}
  2935.             -+-    {$7c}                    {$7c}    {$7c}       {$7c}
  2936.             {$7c} {$7c}    {$7c}                    {$7c}    {$7c}       ----+
  2937.             {$7c} {$7c}    {$7c}                    {$7c}    {$7c}           {$7c}{$7c}
  2938.             {$7c} {$7c}    {$7c}                    {$7c}    {$7c}           {$7c}+----
  2939.             -+-    {$7c}                    {$7c}   -+-          {$7c}{$7c}   {$7c}
  2940.              {$7c}     {$7c} output             {$7c}   {$7c} {$7c}      ----+    {$7c}
  2941.              {$7c}     {$7c}                    {$7c}   {$7c} {$7c}      {$7c}        {$7c}
  2942.              +-----+--->                {$7c}   {$7c} {$7c}      {$7c}        {$7c}       to
  2943.              {$7c}     {$7c}                    {$7c}   -+-      +--------+-----> chip
  2944.              {$7c}     {$7c}                    {$7c}    {$7c}       {$7c}
  2945.           {$7c}---     {$7c}                    {$7c}    {$7c}       {$7c}
  2946.          {$7c}{$7c}        {$7c}                    {$7c}    {$7c}    {$7c}---
  2947. from-->--+{$7c}        {$7c}                    {$7c}    {$7c}   {$7c}{$7c}
  2948. chip     {$7c}{$7c}        {$7c}              --->--{$7c}----+---+{$7c}
  2949.           {$7c}---     {$7c}                    {$7c}        {$7c}{$7c}
  2950.              {$7c}     {$7c}           input    {$7c}         {$7c}---
  2951.              {$7c}     {$7c}                    {$7c}            {$7c}
  2952.             -+-    {$7c}                    {$7c}            {$7c}
  2953.              -     {$7c}                    {$7c}           -+-
  2954.                    {$7c}                    {$7c}            -
  2955.                    {$7c}                    {$7c}
  2956.     mcs6520        {$7c}                    {$7c}        mcs6520
  2957.                    {$7c}                    {$7c}
  2958. --------------------                    -----------------------
  2959.  
  2960.  
  2961.                         pERIPHERAL i/o fORT a bUFFER
  2962.                                 figure 1.28a
  2963.  
  2964.  
  2965.  
  2966. --------------------                    -----------------------
  2967.                    {$7c}                    {$7c}
  2968.             +5v    {$7c}                    {$7c}           +5v
  2969.              {$7c}     {$7c}                    {$7c}            {$7c}
  2970.              {$7c}     {$7c}                    {$7c}            {$7c}
  2971.           {$7c}---     {$7c}                    {$7c}            {$7c}
  2972.          {$7c}{$7c}        {$7c}                    {$7c}            ----+
  2973.     -->--+{$7c}        {$7c}                    {$7c}                {$7c}{$7c}
  2974.          {$7c}{$7c}        {$7c}                    {$7c}                {$7c}+----
  2975.           {$7c}---     {$7c}                    {$7c}                {$7c}{$7c}   {$7c}
  2976.              {$7c}     {$7c} output             {$7c}            ----+    {$7c}
  2977. from         {$7c}     {$7c}                    {$7c}            {$7c}        {$7c}
  2978. chip         +-----+--->                {$7c}            {$7c}        {$7c}       to
  2979.              {$7c}     {$7c}                    {$7c}            +--------+-----> chip
  2980.              {$7c}     {$7c}                    {$7c}            {$7c}
  2981.           {$7c}---     {$7c}                    {$7c}            {$7c}
  2982.          {$7c}{$7c}        {$7c}                    {$7c}         {$7c}---
  2983.     -->--+{$7c}        {$7c}                    {$7c}        {$7c}{$7c}
  2984.          {$7c}{$7c}        {$7c}              --->--{$7c}--------+{$7c}
  2985.           {$7c}---     {$7c}                    {$7c}        {$7c}{$7c}
  2986.              {$7c}     {$7c}           input    {$7c}         {$7c}---
  2987.              {$7c}     {$7c}                    {$7c}            {$7c}
  2988.             -+-    {$7c}                    {$7c}            {$7c}
  2989.              -     {$7c}                    {$7c}           -+-
  2990.              -     {$7c}                    {$7c}           -+-
  2991.                    {$7c}                    {$7c}            -
  2992.                    {$7c}                    {$7c}
  2993.     mcs6520        {$7c}                    {$7c}        mcs6520
  2994.                    {$7c}                    {$7c}
  2995. --------------------                    -----------------------
  2996.  
  2997.  
  2998.                         pERIPHERAL i/o pORT b bUFFER
  2999.                                 figure 1.28b
  3000.  
  3001.  
  3002.                                    -62-
  3003.  
  3004. ============================================================================
  3005.  
  3006.         tHE DETAILS OF THE pERIPHERAL a AND pERIPHERAL b PORTS WILL BE
  3007. DISCUSSED IN THE NEXT SECTION UNDER THE DISCUSSION OF THE INTERFACE BETWEEN
  3008. THE mcs6520 AND THE pERIPHERAL dEVICES.
  3009.                ___
  3010. 1.5.3.6 rESET (res)
  3011.         tHE ACTIVE LOW rESET LINE RESETS THE CONTENTS OF ALL mcs6520 REG-
  3012. ISTERS TO A LOGIC ZERO.  tHIS LINE CAN BE USED AS A POWER-ON RESET OR AS A
  3013. MASTER RESET DURING SYSTEM OPERATION.
  3014.                                 ____  ____
  3015. 1.5.3.7 iNTERRUPT rEQUEST lINE (irqa, irqb)     ____     ____
  3016.         tHE ACTIVE LOW iNTERRUPT rEQUEST LINES (irqa AND irqb) ACT TO
  3017. INTERRUPT THE MICROPROCESSOR EITHER DIRECTLY OR THROUGH EXTERNAL INTERRUPT
  3018. PRIORITY CIRCUITRY.  tHESE LINES ARE "OPEN SOURCE" (NO LOAD DEVICE ON THE
  3019. CHIP) AND ARE CAPABLE OF SINKING 1.6 MILLIAMPS FROM AN EXTERNAL SOURCE.
  3020. tHIS PERMITS ALL INTERRUPT REQUEST LINES TO BE TIED TOGETHER IN A "WIRED-or"
  3021. CONFIGURATION.  tHE "a" AND "b" IN THE TITLES OF THESE LINES CORRESPOND TO
  3022. THE "a" PERIPHERAL PORT AND THE "b" PERIPHERAL PORT.  hENCE EACH INTERRUPT
  3023. REQUEST LINE SERVICES ONE PERIPHERAL DATA PORT.
  3024.         eACH iNTERRUPT rEQUEST LINE HAS TWO INTERRUPT FLAG BITS WHICH CAN
  3025. CAUSE THE iNTERRUPT rEQUEST LINE TO GO LOW.  tHESE FLAGS ARE BITS 6 AND 7
  3026. IN THE TWO cONTROL rEGISTERS.  tHESE FLAGS ACT AS THE LINK BETWEEN THE
  3027. PERIPHERAL INTERRUPT SIGNALS AND THE MICROPROCESSOR INTERRUPT INPUTS.  eACH
  3028. FLAG HAS A CORRESPONDING INTERRUPT DISABLE BIT WHICH ALLOWS THE PROCESSOR
  3029. TO ENABLE OR DISABLE THE INTERRUPT FROM EACH OF THE FOUR INTERRUPT INPUTS
  3030. (ca1, ca2, cb1, cb2).
  3031.         tHE FOUR INTERRUPT FLAGS ARE SET BY ACTIVE TRANSITIONS OF THE SIG-
  3032. NAL ON THE INTERRUPT INPUT (ca1, ca2, cb1, cb2).  cONTROLLING THIS ACTIVE
  3033. TRANSITION IS DISCUSSED IN THE NEXT SECTION UNDER THE DISCUSSION OF THE
  3034. INTERFACE BETWEEN THE mcs6520 AND THE PERIPHERAL DEVICE.
  3035.                        ____
  3036. 1.5.3.7.1   cONTROL OF irqa
  3037.             cONTROL rEGISTER a BIT 7 IS ALWAYS SET BY AN ACTIVE TRANSITION
  3038. OF THE ca1 INTERRUPT INPUT SIGNAL.  iNTERRUPTING FROM THIS FLAG CAN BE DIS-
  3039. ABLED BY SETTING BIT 0 IN THE cONTROL rEGISTER a (cra) TO A LOGIC 0.  lIKE-
  3040. WISE, cONTROL rEGISTER a BIT 6 CAN BE SET BY AN ACTIVE TRANSITION OF THE
  3041. ca2 INTERRUPT INPUT SIGNAL.  iNTERRUPTING FROM THIS FLAG CAN BE DISABLED BY
  3042. SETTING BIT 3 IN THE cONTROL rEGISTER TO A LOGIC 0.
  3043.  
  3044.  
  3045.                                    -63-
  3046.  
  3047. ============================================================================
  3048.  
  3049.             bOTH BIT 6 AND BIT 7 IN cra ARE RESET BY A "rEAD pERIPHERAL oUT-
  3050. PUT rEGISTER a" OPERATION.  tHIS IS DEFINED AS AN OPERATION IN WHICH THE
  3051. PROPER CHIP-SELECT AND REGISTER-SELECT SIGNALS ARE PROVIDED TO ALLOW THE
  3052. PROCESSOR TO READ THE pERIPHERAL a i/o PORT.
  3053.                        ____
  3054. 1.5.3.7.2   cONTROL OF irqb
  3055.             cONTROL OF irqb IS PERFORMED IN EXACTLY THE SAME MANNER AS THAT
  3056. DESCRIBED ABOVE FOR irqa.  bIT 7 IN crb IS SET BY AN ACTIVE TRANSITION ON
  3057. cb1; JNTERRUPTING FROM THIS FLAG IS CONTROLLED BY crb BIT 0.  lIKEWISE, BIT
  3058. 6 IN crb IS SET BY AN ACTIVE TRANSITION ON cb2; INTERRUPTING FROM THIS FLAG
  3059. IS CONTROLLED BY crb BIT 3.
  3060.             aLSO, BOTH BIT 6 AND BIT 7 ARE RESET BY A "rEAD pERIPHERAL b
  3061. oUTPUT rEGISTERT" OPERATION.
  3062.  
  3063.             summary:
  3064.         irqa GOES LOW WHEN cra-7 = 1 AND cra-0 = 1 OR WHEN cra-6 = 1 AND
  3065. cra-3 = 1.
  3066.         irqb GOES LOW WHEN crb-7 = 1 AND crb-0 = 1 OR WHEN crb-6 = 1 AND
  3067. crb-3 = 1.
  3068.         tHE USE OF THESE INTERRUPT FLAGS AND INTERRUPT DISABLE BITS IS
  3069. DISCUSSED IN MORE DETAIL IN sECTION 1.5.4.
  3070.         iT SHOULD BE STRESSED AT THIS POINT THAT THE FLAGS ACT AS THE
  3071. LINK BETWEEN THE PERIPHERAL INTERRUPT SIGNALS AND THE PROCESSOR INTERRUPT
  3072. INPUTS.  tHE INTERRUPT DISABLE BITS ALLOW THE PROCESSOR TO CONTROL THE
  3073. INTERRUPT FUNCTION.
  3074.  
  3075. 1.5.4   iNTERFACE bETWEEN mcs6520 AND pERIPHERAL dEVICES
  3076.         tHE mcs6520 PROVIDES 2 8-BIT BI-DIRECTIONAL PORTS AND 4 INTERRUPT/
  3077. CONTROL LINES FOR INTERFACING TO PERIPHERAL DEVICES.  tHESE PORTS AND THE
  3078. ASSOCIATED INTERRUPT/CONTROL LINES ARE REFERRED TO AS THE "a" SIDE AND THE
  3079. AND THE "b" SIDE.  eACH SIDE HAS ITS OWN UNIQUE CHARACTERISTICS AND WILL
  3080. THEREFORE BE DISCUSSED SEPARATELY BELOW.
  3081.  
  3082. 1.5.4.1 pERIPHERAL i/o pORTS
  3083.         tHE PERIPHERAL a AND pERIPHERAL b i/o PORTS ALLOW THE MICROPROCES-
  3084. SOR TO INTERFACE TO THE INPUT LINES ON THE PERIPHERAL DEVICE BY LOADING
  3085. DATA INTO THE pERIPHERAL oUTPUT rEGISTER.  tHEY ALSO ALLOW THE PROCESSOR TO
  3086. INTERFACE WITH THE PERIPHERAL DEVICE OUTPUT LINES BY READING THE DATA ON
  3087.  
  3088.  
  3089.                                    -64-
  3090.  
  3091. ============================================================================
  3092.  
  3093. THE pERIPHERAL pORT INPUT LINES DIRECTLY ONTO THE DATA BUS AND INTO THE
  3094. INTERNAL REGISTERS OF THE PROCESSOR.
  3095.  
  3096. 1.5.1.1.1   pERIPHERAL a i/o pORT (pa0-pa7)
  3097.             aS DISCUSSED IN sECTION 1.5.2.3. EACH OF THE pERIPHERAL i/o LINES
  3098. CAN BE PROGRAMMED TO ACT AS AN INPUT OR AN OUTPUT.  tHIS IS ACCOMPLISHED BY
  3099. SETTING A "1" IN THE CORRESPONDING BIT IN THE dATA dIRECTION rEGISTER FOR
  3100. THOSE LINES WHICH ARE TO ACT AS OUTPUTS.  a "0" IN A BIT OF THE dATA dIREC-
  3101. TION rEGISTER CAUSES THE CORRESPONDING pERIPHERAL i/o LINES TO ACT AS AN
  3102. INPUT.
  3103.             tHE BUFFERS WHICH DRIVE THE pERIPHERAL a i/o LINES CONTAIN
  3104. "PASSIVE" PULL-UPS AS SHOWN IN fIGURE 1.28A.  tHESE PULL-UP DEVICES ARE
  3105. RESISTIVE IN NATURE AND THEREFORE ALLOW THE OUTPUT VOLTAGE TO GO TO vDD FOR
  3106. A LOGIC 1.  tHE SWITCHES CAN SINK A FULL 1.6 MA, MAKING THESE BUFFERS CAP-
  3107. ABLE OF DRIVING ONE STANDARD ttl LOAD.
  3108.             iN THE INPUT MODE, THE PULL-UP DEVICES SHOWN IN fIGURE 1.28A ARE
  3109. STILL CONNECTED TO THE i/o PIN AND STILL SUPPLY CURRENT TO THIS PIN.  fOR
  3110. THIS REASON, THESE LINES REPRESENT ONE STANDARD ttl LOAD IN THE INPUT MODE.
  3111.  
  3112. 1.5.4.1.2   pERIPHERAL b i/o pORT (pb0-pb7)
  3113.             tHE pERIPHERAL b i/o PORT DUPLICATES MANY OF THE FUNCTIONS OF
  3114. THE pERIPHERAL a PORT.  tHE PROCESS OF PROGRAMMING THESE LINES TO ACT AS AN
  3115. INPUT OR AN OUTPUT HAS BEEN DISCUSSED PREVIOUSLY.  lIKEWISE, THE EFFECT OF
  3116. READING OR WRITING THIS PORT HAS BEEN DISCUSSED.  hOWEVER, THERE ARE SEV-
  3117. ERAL CHARACTERISTICS OF THE BUFFERS DRIVING THESE LINES WHICH AFFECT THEIR
  3118. USE IN PERIPHERAL INTERFACING.  tHESE WILL BE DISCUSSED BELOW.
  3119.             tHE pERIPHERAL b i/o PORT BUFFERS ARE PUSH-PULL DEVICES AS SHOWN
  3120. IN fIGURE 1.28B.  tHE PULL-UP DEVICES ARE SWITCHED "off" IN THE "0" STATE
  3121. AND "on" FOR A LOGIC 1.  sINCE THESE PULL-UPS ARE ACTIVE DEVICES, THE LOGIC
  3122. "1" VOLTAGE IS NOT GUARANTEED TO GO HIGHER THAN +2.4v.  tHEY ARE ttl COM-
  3123. PATIBLE BUT ARE NOT cmos COMPATIBLE.
  3124.             hOWEVER, THE ACTIVE PULL-UP DEVICES CAN SINK UP TO 1 MA AT 1.5v.
  3125. tHIS CURRENT DRIVE CAPABILITY IS PROVIDED TO ALLOW DIRECT CONNECTION TO
  3126. dARLINGTON TRANSISTOR SWITCHES.  tHIS ALLOWS VERY SIMPLE CONTROL OF RELAYS,
  3127. LAMPS, ETC.
  3128.             bECAUSE THESE OUTPUTS ARE DESIGNED TO DRIVE TRANSISTORS DIRECTLY,
  3129. THE OUTPUT DATA IS READ DIRECTLY FROM THE pERIPHERAL oUTPUT rEGISTER FOR
  3130. THOSE LINES PROGRAMMED TO ACT AS INPUTS.
  3131.  
  3132.  
  3133.                                    -65-
  3134.  
  3135. ============================================================================
  3136.  
  3137.             tHE FINAL CHARACTERISTIC WHICH IS A FUNCTION OF THE pERIPHERAL b
  3138. PUSH-PULL BUFFERS IS THE HIGH-IMPEDANCE INPUT STATE.  wHEN THE pERIPHERAL b
  3139. i/o LINES ARE PROGRAMMED TO ACT AS INPUTS, THE OUTPUT BUFFER ENTERS THE HIGH
  3140. IMPEDANCE STATE.  tHESE INPUTS WILL THEN HAVE AN IMPEDANCE OF GREATER THAN
  3141. 1 MEGOHM.
  3142.  
  3143. 1.5.4.2 iNTERRUPT iNPUT/pERIPHERAL cONTROL lINES (ca1, ca2, cb1, cb2)
  3144.         tHE FOUR INTERRUPT INPUT/PERIPHERAL CONTROL LINES PROVIDE A NUMBER
  3145. OF SPECIAL PERIPHERAL CONTROL FUNCTIONS.  tHESE LINES GREATLY ENHANCE THE
  3146. POWER OF THE TWO GENERAL PURPOSE INTERFACE PORTS (pa0-pa7, pb0-pb7).
  3147.  
  3148. 1.5.4.2.1   pERIPHERAL a iNTERRUPT iNPUT/pERIPHERAL cONTROL lINES (ca1, ca2)
  3149.             ca1 IS AN INTERRUPT INPUT ONLY.  aN ACTIVE TRANSITION OF THE
  3150. SIGNAL ON THIS INPUT WILL SET BIT 7 OF THE cONTROL rEGISTER a TO A LOGIC 1.
  3151. tHE ACTIVE TRANSITION CAN BE PROGRAMMED BY THE MICROPROCESSOR BY SETTING A
  3152. "0" IN BIT 1 OF THE cra IF THE INTERRUPT FLAG (BIT 7 OF cra) IS TO BE SET
  3153. ON A NEGATIVE TRANSITION OF THE ca1 SIGNAL OR A "1" IF IT IS TO BE SET ON A
  3154. POSITIVE TRANSITION.  nOTE:  a NEGATIVE TRANSITION IS DEFINED AS A TRANS-
  3155. ITION FROM A HIGH (> 2.4V) TO A LOW (< 0.4v), AND A POSITIVE TRANSITION IS
  3156. DEFINED AS A TRANSITION FROM A LOW TO A HIGH VOLTAGE.
  3157.             sETTING THE INTERRUPT FLAG WILL INTERRUPT THE PROCESSOR THROUGH
  3158. irqa IF BIT 0 OF cra IS A 1 AS DESCRIBED PREVIOUSLY.
  3159.             ca2 CAN ACT AS A TOTALLY INDEPENDENT INTERRUPT INPUT OR AS A
  3160. PERIPHERAL CONTROL OUTPUT.  aS AN INPUT (cra, BIT 5 = 0) IT ACTS TO SET THE
  3161. INTERRUPT FLAG, BIT 6 OF cra, TO A LOGIC 1 ON THE ACTIVE TRANSITION SELEC-
  3162. TED BY BIT 4 OF cra.
  3163.             tHESE CONTROL REGISTER BITS AND INTERRUPT INPUTS SERVE THE SAME
  3164. BASIC FUNCTION AS THAT DESCRIBED ABOVE FOR ca1.  tHE INPUT SIGNAL SETS THE
  3165. INTERRUPT FLAG WHICH SERVES AS THE LINK BETWEEN THE PERIPHERAL DEVICE AND
  3166. THE PROCESSOR INTERRUPT STRUCTURE.  tHE INTERRUPT DISABLE BIT ALLOWS THE
  3167. PROCESSOR TO EXERCISE CONTROL OVER THE SYSTEM INTERRUPTS.
  3168.             iN THE oUTPUT MODE (cra, BIT 5 = 1), ca2 CAN OPERATE INDEPEN-
  3169. DENTLY TO GENERATE A SIMPLE PULSE EACH TIME THE MICROPROCESSOR READS THE
  3170. DATA ON THE pERIPHERAL a i/o PORT.  tHIS MODE IS SELECTED BY SETTING cra,
  3171. BIT 4 TO A  0  AND cra, BIT 3 TO A "1."  tHIS PULSE OUTPUT CAN BE USED TO
  3172. CONTROL THE COUNTERS, SHIFT REGISTERS, ETC. WHICH MAKE SEQUENTIAL DATA
  3173. AVAILABLE ON THE pERIPHERAL INPUT LINES.
  3174.  
  3175.  
  3176.                                    -66-
  3177.  
  3178. ============================================================================
  3179.  
  3180.             a SECOND OUTPUT MODE ALLOWS ca2 TO BE USED IN CONJUNCTION WITH
  3181. ca1 TO "HANDSHAKE" BETWEEN THE PROCESSOR AND THE PERIPHERAL DEVICE.  oN THE
  3182. a SIDE, THIS TECHNIQUE ALLOWS POSITIVE CONTROL OF DATA TRANSFERS FROM THE
  3183. PERIPHERAL DEVICE INTO THE MICROPROCESSOR.  tHE ca1 INPUT SIGNALS THE PRO-
  3184. CESSOR THAT DATA IS AVAILABLE BY INTERRUPTING THE PROCESSOR.  tHE PROCESSOR
  3185. READS THE DATA AND SETS ca2 LOW.  tHIS SIGNALS THE PERIPHERAL DEVICE THAT
  3186. IT CAN MAKE NEW DATA AVAILABLE.  tHIS TECHNIQUE IS DISCUSSED IN DETAIL IN
  3187. cHAPTER 2.
  3188.             tHE FINAL OUTPUT MODE CAN BE SELECTED BY SETTING BIT 4 OF cra TO
  3189. A 1.  iN THIS MODE, ca2 IS A SIMPLE PERIPHERAL CONTROL OUTPUT WHICH CAN BE
  3190. SET HIGH OR LOW BY SETTING BIT 3 OF cra TO A 1 OR A 0 RESPECTIVELY.
  3191.             tHE OPERATION OF ca1 AND ca2 IS SUMMARIZED IN THE NEXT SECTION.
  3192.  
  3193. 1.5.4.2.2   pERIPHERAL b iNTERRUPT iNPUT/pERIPHERAL cONTROL lINES (cb1, cb2)
  3194.             cb1 OPERATES AS AN INTERRUPT INPUT ONLY IN THE SAME MANNER AS
  3195. ca1.  bIT 7 OF crb IS SET BY THE ACTIVE TRANSITION SELECTED BY BIT 0 OF crb.
  3196. lIKEWISE, THE cb2 INPUT MODE OPERATES EXACTLY THE SAME AS THE ca2 INPUT
  3197. MODES.  tHE cb2 OUTPUT MODES, crb, BIT 5 = 1, DIFFER SOMEWHAT FROM THOSE OF
  3198. ca2.  tHE PULSE OUTPUT OCCURS WHEN THE PROCESSOR WRITES DATA INTO THE pERIPH-
  3199. ERAL b oUTPUT rEGISTER.  aLSO, THE "HANDSHAKING" OPERATES ON DATA TRANSFERS
  3200. FROM THE PROCESSOR INTO THE PERIPHERAL DEVICE.
  3201.             tHE OPERATION OF cb1 AND cb2 IS SUMMARIZED IN THE NEXT SECTION.
  3202. a MORE DETAILED DISCUSSION OF HANDSHAKING ON THE pERIPHERAL b i/o PORT IS
  3203. CONTAINED IN cHAPTER 2 OF THIS MANUAL.
  3204.  
  3205. 1.5.5   sUMMARY OF mcs6520 oPERATION
  3206.  
  3207. 1.5.5.1 cONTROL rEGISTER oPERATION
  3208.  
  3209.         --------+--------+-----------------+--------+--------------
  3210.         {$7c}   7   {$7c}   6    {$7c} 5      4      3 {$7c}    2   {$7c}  1      0   {$7c}
  3211.         +-------+--------+-----------------+--------+-------------+
  3212.     cra {$7c} irqa1 {$7c} irqa2  {$7c}   ca2 cONTROL   {$7c}  ddra  {$7c} ca1 cONTROL {$7c}
  3213.         {$7c}       {$7c}        {$7c} ______^________ {$7c} aCCESS {$7c} _____^_____ {$7c}
  3214.         {$7c}       {$7c}        {$7c}/               \{$7c}        {$7c}/           \{$7c}
  3215.         --------+--------+-----------------+--------+--------------
  3216.  
  3217.         --------+--------+-----------------+--------+--------------
  3218.         {$7c}   7   {$7c}   6    {$7c} 5      4      3 {$7c}    2   {$7c}  1      0   {$7c}
  3219.         +-------+--------+-----------------+--------+-------------+
  3220.     crb {$7c} irqb1 {$7c} irqb2  {$7c}   cb2 cONTROL   {$7c}  ddrb  {$7c} cb1 cONTROL {$7c}
  3221.         {$7c}       {$7c}        {$7c} ______^________ {$7c} aCCESS {$7c} _____^_____ {$7c}
  3222.         {$7c}       {$7c}        {$7c}/               \{$7c}        {$7c}/           \{$7c}
  3223.         --------+--------+-----------------+--------+--------------
  3224.  
  3225.                 cONTROL rEGISTER bIT dESIGNATIONS
  3226.                             figure 1.29
  3227.  
  3228.  
  3229.                                    -69-
  3230.  
  3231. ============================================================================
  3232.  
  3233.   ------------------+--------------------+-------------------------------------
  3234.   {$7c}    cra (crb)    {$7c}                    {$7c}                                    {$7c}
  3235.   {$7c}                 {$7c}  aCTIVE tRANSITION {$7c}              irqa (irqb)           {$7c}
  3236.   {$7c} bIT 1   bIT 0   {$7c}  OF iNPUT sIGNAL*  {$7c}          iNTERRUPT oUTPUTS         {$7c}
  3237.   {$7c}                 {$7c}                    {$7c}                                    {$7c}
  3238.   +-----------------+--------------------+------------------------------------+
  3239.   {$7c}                 {$7c}                    {$7c}                                    {$7c}
  3240.   {$7c}   0       0     {$7c}    NEGATIVE        {$7c} dISABLE--REMAIN HIGH               {$7c}
  3241.   {$7c}                 {$7c}                    {$7c}                                    {$7c}
  3242.   {$7c}                 {$7c}                    {$7c} eNABLED--GOES LOW WHEN BIT 7       {$7c}
  3243.   {$7c}                 {$7c}                    {$7c} IN cra (crb) IS SET BY ACTIVE      {$7c}
  3244.   {$7c}   0       1     {$7c}    NEGATIVE        {$7c} TRANSITION OF SIGNAL ON ca0        {$7c}
  3245.   {$7c}                 {$7c}                    {$7c} (cbi)                              {$7c}
  3246.   {$7c}                 {$7c}                    {$7c}                                    {$7c}
  3247.   {$7c}   1       0     {$7c}    POSITIVE        {$7c} dISABLE--REMAIN HIGH               {$7c}
  3248.   {$7c}                 {$7c}                    {$7c}                                    {$7c}
  3249.   {$7c}   1       1     {$7c}    POSITIVE        {$7c} eNABLE--AS EXPLAINED ABOVE         {$7c}
  3250.   {$7c}                 {$7c}                    {$7c}                                    {$7c}
  3251.   +-----------------+--------------------+------------------------------------+
  3252.   {$7c}                                                                           {$7c}
  3253.   {$7c} *nOTE 1:  bIT 7 OF cra (crb) WILL HE SET TO A LOGIC 1 BY AN ACTIVE        {$7c}
  3254.   {$7c}           TRANSITION OF THE ca1 (cb1) SIGNAL.  tHIS IS INDEPENDENT        {$7c}
  3255.   {$7c}           OF THE STATE OF bIT 0 IN cra (crb)                              {$7c}
  3256.   {$7c}                                                                           {$7c}
  3257.   -----------------------------------------------------------------------------
  3258.  
  3259.                     cONTROL OFINTERRUPT iNPUTS ca1, cb1
  3260.                                 figure 1.30
  3261.  
  3262.  
  3263.   ------------------------+-------------------+--------------------------------
  3264.   {$7c}        cra (cre)      {$7c}                   {$7c}                               {$7c}
  3265.   {$7c}                       {$7c} aCTIVE tRANSITION {$7c}            irqa (irqb)        {$7c}
  3266.   {$7c} bIT 5   bIT 4   bIT 3 {$7c}  OF iNPUT sIGNAL* {$7c}         iNTERRUPT oUTPUT      {$7c}
  3267.   {$7c}                       {$7c}                   {$7c}                               {$7c}
  3268.   +-----------------------+-------------------+-------------------------------+
  3269.   {$7c}                       {$7c}                   {$7c}                               {$7c}
  3270.   {$7c}   0       0       0   {$7c}    NEGATIVE       {$7c} dISABLE--REMAINS HIGH         {$7c}
  3271.   {$7c}                       {$7c}                   {$7c}                               {$7c}
  3272.   {$7c}                       {$7c}                   {$7c} eNABLED--GOES LOW WHEN BIT 6  {$7c}
  3273.   {$7c}                       {$7c}                   {$7c} IN cra (crb) IS SET BY ACTIVE {$7c}
  3274.   {$7c}   0       0       1   {$7c}    NEGATIVE       {$7c} TRANSITION OF SIGNAL ON ca2   {$7c}
  3275.   {$7c}                       {$7c}                   {$7c} (cb2)                         {$7c}
  3276.   {$7c}                       {$7c}                   {$7c}                               {$7c}
  3277.   {$7c}   0       1       0   {$7c}    POSITIVE       {$7c} dISABLE--REMAINS HIGH         {$7c}
  3278.   {$7c}                       {$7c}                   {$7c}                               {$7c}
  3279.   {$7c}   0       1       1   {$7c}    POSITIVE       {$7c} eNABLE--AS EXPLAINED ABOVE    {$7c}
  3280.   {$7c}                       {$7c}                   {$7c}                               {$7c}
  3281.   +-----------------------+-------------------+-------------------------------+
  3282.   {$7c}                                                                           {$7c}
  3283.   {$7c} *nOTE:  bIT 6 OF cra (crb) WILL BE SET TO A LOGIC 1 BY AN ACTIVE          {$7c}
  3284.   {$7c}         TRANSITION OF THE ca2 (cb2) SIGNAL.  tHIS IS INDEPENDENT          {$7c}
  3285.   {$7c}         OF THE STATE OF bIT 3 IN cra (crb).                               {$7c}
  3286.   {$7c}                                                                           {$7c}
  3287.   -----------------------------------------------------------------------------
  3288.  
  3289.             cONTROL OF ca2 (cb2) AS iNTERRUPT iNPUTS (bIT 5  "0")
  3290.                                 figure 1.31A
  3291.  
  3292.  
  3293.                                    -68-
  3294.  
  3295. ============================================================================
  3296.  
  3297.   ------------------------+-----------------+----------------------------------
  3298.   {$7c}          cra          {$7c}                 {$7c}                                 {$7c}
  3299.   {$7c} bIT 5   bIT 4   bIT 3 {$7c}       mODE      {$7c}         dESCRIPTION             {$7c}
  3300.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3301.   +-----------------------+-----------------+---------------------------------+
  3302.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3303.   {$7c}                       {$7c}                 {$7c} ca2 IS SET HIGH ON AN ACTIVE    {$7c}
  3304.   {$7c}                       {$7c}                 {$7c} TRANSITION OF THE ca1 INTERRUPT {$7c}
  3305.   {$7c}                       {$7c}                 {$7c} INPUT SIGNAL AND SET LOW BY A   {$7c}
  3306.   {$7c}   1       0       0   {$7c}   "hANDSHAKE"   {$7c} MICROPROCESSOR "rEAD a dATA"    {$7c}
  3307.   {$7c}                       {$7c}     ON rEAD     {$7c} OPERATION.  tHIS ALLOWS POSI-   {$7c}
  3308.   {$7c}                       {$7c}                 {$7c} TIVE CONTROL OF DATA TRANSFERS  {$7c}
  3309.   {$7c}                       {$7c}                 {$7c} FROM THE PERIPHERAL DEVICE TO   {$7c}
  3310.   {$7c}                       {$7c}                 {$7c} THE MICROPROCESSOR.             {$7c}
  3311.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3312.   {$7c}                       {$7c}                 {$7c} ca2 GOES LOW FOR ONE CYCLE      {$7c}
  3313.   {$7c}                       {$7c}                 {$7c} AFTER A "rEAD a dATA" OPERA-    {$7c}
  3314.   {$7c}   1       0       1   {$7c}  pULSE oUTPUT   {$7c} TION.  tHIS PULSE CAN BE USED   {$7c}
  3315.   {$7c}                       {$7c}                 {$7c} TO SIGNAL THE PERIPHERAL DE     {$7c}
  3316.   {$7c}                       {$7c}                 {$7c} VICE THAT DATA WAS TAKEN.       {$7c}
  3317.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3318.   {$7c}   1       1       0   {$7c}  mANUAL oUTPUT  {$7c} ca2 SET LOW                     {$7c}
  3319.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3320.   {$7c}   1       1       1   {$7c}  mANUAL oUTPUT  {$7c} ca2 SET HIGH                    {$7c}
  3321.   ------------------------+-----------------+----------------------------------
  3322.  
  3323.                         cONTROL OF ca2 oUTPUT mODES
  3324.                                 figure 1.31B
  3325.  
  3326.  
  3327.   ------------------------+-----------------+----------------------------------
  3328.   {$7c}          crb          {$7c}                 {$7c}                                 {$7c}
  3329.   {$7c} bIT 5   bIT 4   bIT 3 {$7c}       mODE      {$7c}         dESCRIPTION             {$7c}
  3330.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3331.   +-----------------------+-----------------+---------------------------------+
  3332.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3333.   {$7c}                       {$7c}                 {$7c} cb2 IS SET LOW ON MICROPROCES   {$7c}
  3334.   {$7c}                       {$7c}                 {$7c} SOR "wRITE b dATA" OPERATION    {$7c}
  3335.   {$7c}                       {$7c}                 {$7c} AND IS SET HIGH BY AN ACTIVE    {$7c}
  3336.   {$7c}   1       0       0   {$7c}   "hANDSHAKE"   {$7c} TRANSITION OF THE cb1 INTERRUPT {$7c}
  3337.   {$7c}                       {$7c}    ON wRITE     {$7c} INPUT SIGNAL.  tHIS ALLOWS POSI-{$7c}
  3338.   {$7c}                       {$7c}                 {$7c} TIVE CONTROL OF DATA TRANSFERS  {$7c}
  3339.   {$7c}                       {$7c}                 {$7c} FROM THE MICROPROCESSOR TO THE  {$7c}
  3340.   {$7c}                       {$7c}                 {$7c} PERIPHERAL DEVICE.              {$7c}
  3341.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3342.   {$7c}                       {$7c}                 {$7c} cb2 GOES LOW FOR ONE CYCLE AFTER{$7c}
  3343.   {$7c}                       {$7c}                 {$7c} A MICROPROCESSOR "wRITE b dATA" {$7c}
  3344.   {$7c}   1       0       1   {$7c}  pULSE oUTPUT   {$7c} OPERATION.  tHIS CAN BE USED TO {$7c}
  3345.   {$7c}                       {$7c}                 {$7c} SIGNAL THE PERIPHERAL DEVICE    {$7c}
  3346.   {$7c}                       {$7c}                 {$7c} THAT DATA IS AVAILABLE.         {$7c}
  3347.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3348.   {$7c}   1       1       0   {$7c}  mANUAL oUTPUT  {$7c} cb2 SET LOW                     {$7c}
  3349.   {$7c}                       {$7c}                 {$7c}                                 {$7c}
  3350.   {$7c}   1       1       1   {$7c}  mANUAL oUTPUT  {$7c} cb2 SET HIGH                    {$7c}
  3351.   ------------------------+-----------------+----------------------------------
  3352.  
  3353.  
  3354.                         cONTROL OF cb2 oUTPUT mODES
  3355.                                 figure 1.31C
  3356.  
  3357.  
  3358.                                    -69-
  3359.  
  3360. ============================================================================
  3361.  
  3362. 1.5.5.2 mcs6520 oPERATION IN mc6500 sYSTEMS
  3363.         a BRIEF REVIEW OF THE OVERALL OPERATION OF THE mcs6520 SHOULD
  3364. SERVE TO TIE TOGETHER MANY OF THE DETAILS DISCUSSED PREVIOUSLY.
  3365.         dURING THE SYSTEM INITIALIZATION ROUTINE WHICH IS EXECUTED IN
  3366. RESPONSE TO THE PROCESSOR reset SIGNAL, THE MICROPROCESSOR WILL WRITE
  3367. A PATTERN OF 1'S AND 0'S INTO THE dATA dIRECTION rEGISTERS.  tHIS WILL
  3368. DETERMINE THOSE LINES WHICH ARE TO ACT AS INPUTS AND THOSE WHICH ARE TO
  3369. ACT AS OUTPUTS.
  3370.         tHIS PATTERN WILL USUALLY BE FIXED FOR THE SYSTEM OPERATION.
  3371. tHEREFORE, THE NEXT STEP WOULD BE TO SET THE VARIOUS OPERATING MODES,
  3372. ACTIVE TRANSITIONS, ETC. WHICH ARE CONTROLLED BY THE cONTROL rEGISTERS.
  3373. aT THE SAME TIME THE dATA dIRECTION rEGISTER aCCESS cONTROL bIT CAN BE
  3374. SET TO A 1 TO ALLOW THE PROCESSOR TO CONTROL THE pERIPHERAL pORTS DURING
  3375. SYSTEM OPERATION.
  3376.         tHE INTERRUPTS WILL NORMALLY REMAIN DISABLED UNTIL THE ENTIRE
  3377. SYSTEM IS INITIALIZED.  aT THIS TIME, THE INTERRUPTS ARE ENABLED AND FULL
  3378. SYSTEM OPERATION BEGINS.
  3379.         dURING SYSTEM OPERATION, THE MICROPROCESSOR WILL INTERROGATE THE
  3380. SWITCHES, SENSORS, ETC. IN THE PERIPHERAL DEVICE BY READING THE DATA ON THE
  3381. pERIPHERAL iNPUT LINES.  bINARY OR DECIMAL DATA MAY HE TRANSFERRED INTO THE
  3382. MICROPROCESSOR IN THE SAME WAY.  aT THE SAME TIME THE VARIOUS LIGHTS, MOTORS,
  3383. SOLENOIDS, ETC. ON THE PERIPHERAL DEVICE ARE CONTROLLED BY WRITING DATA INTO
  3384. THE APPROPRIATE BITS OF THE pERIPHERAL oUTPUT rEGISTERS.  tHE ENTIRE SEQUENCE
  3385. OF OPERATIONS IS DETERMINED BY THE PROGRAMMER TO CONTROL A PARTICULAR PERIPH-
  3386. ERAL DEVICE IN A DEFINED MANNER.  tHE VARIOUS REGISTERS, GATES, ETC. IN THE
  3387. iNTERFACE dEVICE ACT PRIMARILY AS A LINK BETWEEN THE INTERNAL PROCESSOR OPER-
  3388. ATIONS AND THE VARIOUS INPUTS AND OUTPUTS ON THE PERIPHERAL DEVICES BEING
  3389. CONTROLLED.
  3390.  
  3391.  
  3392.                                    -70-
  3393.  
  3394. ============================================================================
  3395.  
  3396. 1.6 peripheral interface/memory device - mcs6530
  3397.  
  3398. 1.6.1   iNTRODUCTION
  3399.         tHE mcs6530 IS DESIGNED TO OPERATE IN CONJUNCTION WITH THE mcs650x
  3400. mICROPROCESSOR.  iT IS COMPRISED OF A MASK PROGRAMMABLE 1024 X 8 rom, A
  3401. 64 X 8 ram, TWO 8 BIT BI-DIRECTIONAL PORTS CAPABLE OF DIRECTLY INTER-
  3402. FACING THE mICROPROCESSOR UNIT AND PERIPHERAL DEVICES AND A PROGRAMMABLE
  3403. INTERVAL TIMER WITH INTERRUPT, CAPABLE OF TIMING IN VARIOUS INTERVALS
  3404. FROM 1 TO 262,144 CLOCK PERIODS.
  3405.         tHE i/o CONFIGURATION, THE INTERVAL TIMER AND INTERRUPT CAPABILITY
  3406. ARE UNDER SOFTWARE CONTROL.
  3407.             *   8 BIT BI-DIRECTIONAL dATA bUS FOR COMMUNICATION WITH
  3408.                 THE MICROPROCESSOR UNIT.
  3409.             *   tWO 8 BIT BI-DIRECTIONAL PORTS FOR DIRECT INTERFACE TO
  3410.                 PERIPHERALS.
  3411.             *   tWO i/o pERIPHERAL dATA dIRECTION rEGISTERS
  3412.             *   pROGRAMMABLE iNTERVAL tIMER FROM 1 TO 256 X 1024 CLOCK
  3413.                 PERIODS.
  3414.             *   pROGRAMMABLE iNTERVAL tIMER iNTERRUPT
  3415.             *   c mos cOMPATIBLE pERIPHERAL lINES
  3416.             *   pERIPHERAL pINS WITH dIRECT tRANSISTOR dRIVE cAPABILITY
  3417.             *   tHREE-sTATE dATA pINS
  3418.             *   uP TO 7k CONTIGUOUS rom WITH NO EXTERNAL DECODING
  3419.             *   1024 X 8 rom
  3420.             *   64 X 8 sTATIC ram
  3421.  
  3422. 1.6.2   pINOUT  dESCRIPTION
  3423.         fIGURE  1.33 IS THE PINOUT DIAGRAM OF THE mcs6530.
  3424.                ___
  3425. 1.6.2.1  rESET (res)                                            ___
  3426.                 dURING SYSTEM INITIALIZATION A lOGIC "o" ON THE res
  3427. INPUT WILL CAUSE A ZEROING OF ALL i/o REGISTERS.  tHIS IN TURN WILL CAUSE
  3428. ALL i/o BUSES TO ACT AS INPUTS THUS PROTECTING EXTERNAL COMPONENTS FROM
  3429. POSSIBLE DAMAGE AND ERRONEOUS DATA WHILE THE SYSTEM IS BEING CONFIGURED
  3430. UNDER SOFTWARE CONTROL.  tHE dATA bUS bUFFERS ARE PUT INTO AN off-state
  3431. DURING rESET.  iNTERRUPT IS DISABLED WHEN RESET.  tHE res SIGNAL MUST
  3432. BE HELD LOW FOR AT LEAST ONE CLOCK PERIOD WHEN RESET IS REQUIRED.
  3433.  
  3434.  
  3435.                                    -71-
  3436.  
  3437. ============================================================================
  3438.  
  3439.                    ---------------------------
  3440. vss             ---+ 1                     40+---\        pa1
  3441.                 ---+                         +--- {$7c}
  3442. pa0      <----->---+ 2                     39+--- {$7c}       pa2
  3443.                 ---+                         +--- {$7c}
  3444. O2       ------>---+ 3                     38+--- {$7c}       pa3
  3445.                 ---+                         +--- {$7c}
  3446. rs0      ------>---+ 4                     37+---  ><-->  pa4
  3447.                 ---+                         +--- {$7c}
  3448. a9              ---+ 5                     36+--- {$7c}       pa5
  3449.                 ---+                         +--- {$7c}
  3450. a8              ---+ 6                     35+--- {$7c}       pa6
  3451.                 ---+                         +--- {$7c}
  3452. a7              ---+ 7                     34+--- {$7c}       pa7
  3453.                 ---+                         +---/
  3454. a6              ---+ 8                     33+---\        db0
  3455.                 ---+                         +--- {$7c}
  3456. r/w             ---+ 9                     32+--- {$7c}       db1
  3457.                 ---+                         +--- {$7c}
  3458. a5              ---+10                     31+--- {$7c}       db2
  3459.                 ---+         mcs6530         +--- {$7c}
  3460. a4              ---+11                     30+--- {$7c}       db3
  3461.                 ---+                         +---  ><-->
  3462. a3              ---+12                     29+--- {$7c}       db4
  3463.                 ---+                         +--- {$7c}
  3464. a2              ---+13                     28+--- {$7c}       db5
  3465.                 ---+                         +--- {$7c}
  3466. a1              ---+14                     27+--- {$7c}       db6
  3467.                 ---+                         +--- {$7c}
  3468. a0              ---+15                     26+--- {$7c}       db7
  3469. ___             ---+                         +---/
  3470. res      ------>---+16                     25+---\        pb0
  3471. ___             ---+                         +--- {$7c}
  3472. irq/pb7  <----->---+17                     24+--- {$7c}       pb1
  3473.                 ---+                         +--- {$7c}
  3474. cs1/pb6  <----->---+18                     23+---  ><-->  pb2
  3475.                 ---+                         +--- {$7c}
  3476. cs2/pb5  <----->---+19                     22+--- {$7c}       pb3
  3477.                 ---+                         +--- {$7c}
  3478. vcc             ---+20                     21+--- {$7c}       pb4
  3479.                 ---+                         +---/
  3480.                    ---------------------------
  3481.  
  3482.  
  3483.                         mcs6530 pINOUT dESIGNATION
  3484.                                 figure 1.32
  3485.  
  3486.  
  3487.                                    -72-
  3488.  
  3489. ============================================================================
  3490.  
  3491. 1.6.2.2 iNPUT cLOCK
  3492.         tHE INPUT CLOCK IS A SYSTEM pHASE tWO CLOCK WHICH CAN BE EITHER A
  3493. LOW LEVEL CLOCK (vil < 0.4, vih > 2.4) OR HIGH LEVEL CLOCK (vil < 0.2,
  3494.          +.3
  3495. vih = vCC-.2)
  3496.  
  3497. 1.6.2.3 rEAD/wRITE (r/w)
  3498.         tHE r/w SIGNAL IS SUPPLIED BY THE MICROPROCESSING UNIT AND IS USED
  3499. TO CONTROL THE TRANSFER OF DATA TO AND FROM THE MICRAPROCESSING UNIT AND
  3500. THE mcs6530.  a HIGH ON THE r/w PIN ALLOWS THE PROCESSOR TO READ (WITH PRO-
  3501. PER ADDRESSING) THE DATA SUPPLIED BY THE mcs6530.  a LOW ON THE r/w PIN
  3502. ALLOWS A WRITE (WITH PROPER ADDRESSING) TO THE mcs6530.
  3503.                            ___
  3504. 1.6.2.4 iNTERRUPT rEQUEST (irq)
  3505.         tHE irq PIN IS AN INTERRUPT PIN FROM THE INTERVAL TIMER.  tHIS
  3506. SAME PIN, IF NOT USED AS AN INTERRUPT, CAN BE USED AS A PERIPHERAL i/o PIN
  3507. (pb7).  wHEN USED AS AN INTERRUPT, THE PIN SHOULD BE SET UP AS AN INPUT BY
  3508. THE DATA DIRECTION REGISTER.  tHE PIN WILL BE NORMALLY HIGH WITH A LOW INDI-
  3509. CATING AN INTERRUPT FROM THE mcs6530.  aN EXTERNAL PULL-UP DEVICE IS NOT
  3510. REQUIRED; HOWEVER, IF COLLECTOR-or'D WITH OTHER DEVICES, THE INTERNAL PULL-
  3511. UP MAY BE OMITTED WITH A MASK OPTION.
  3512.  
  3513. 1.6.2.5 dATA bUS (d0-d7)
  3514.         tHE mcs6530 HAS EIGHT BI-DIRECTIONAL DATA PINS (d0-d7).  tHESE
  3515. PINS CONNECT TO THE SYSTEM'S DATA LINES AND ALLOW TRANSFER OF DATA TO AND
  3516. FROM THE MICROPROCESSOR UNIT.  tHE OUTPUT BUFFERS REMAIN IN THE OFF STATE
  3517. EXCEPT WHEN A rEAD OPERATION OCCURS.
  3518.  
  3519. 1.6.2.6 pERIPHERAL dATA pORTS
  3520.         tHE mcs6530 HAS 16 PINS AVAILABLE FOR PERIPHERAL i/o OPERATIONS.
  3521. eACH PIN IS INDIVIDUALLY SOFTWARE PROGRAMMABLE TO ACT AS EITHER AN INPUT OR
  3522. AN OUTPUT.  tHE 16 PINS ARE DIVIDED INTO 2 8-BIT PORTS, pa0-pa7 AND pb0-pb7
  3523. pb5, pb6 AND pb7 ALSO HAVE OTHER USES WHICH WILL BE DISCUSSED IN sECTION
  3524. 1.6.4.  tHE PINS ARE SET UP AS AN INPUT BY WRITING A "0" INTO THE CORRE-
  3525. SPONDING BIT IN THE DATA DIRECTION REGISTER.  a "1" INTO THE DATA DIRECTION
  3526. REGISTER WILL CAUSE ITS CORRESPONDING BIT TO BE AN OUTPUT.  wHEN IN THE INPUT
  3527. MODE, THE PERIPHERAL OUTPUT BUFFERS ARE IN THE "1" STATE AND A PULL-UP DEVICE
  3528. ACTS AS LESS THAN ONE ttl LOAD TO THE PERIPHERAL DATA LINES.  oN A rEAD
  3529. OPERATION, THE MICROPROCESSOR UNIT READS THE PERIPHERAL PIN.  wHEN THE
  3530.  
  3531.  
  3532.                                    -73-
  3533.  
  3534. ============================================================================
  3535.  
  3536. PERIPHERAL DEVICE GETS INFORMATION FROM THE mcs6530 IT RECEIVES DATA STORED
  3537. IN THE DATA REGISTER.  tHE MICROPROCESSOR WILL READ CORRECT INFORMATION IF
  3538. THE PERIPHERAL LINES ARE GREATER THAN 2.0 VOLTS FOR A "1" AND LESS THAN 0.8
  3539. VOLTS FOR A "0" AS THE PERIPHERAL PINS ARE ALL ttl COMPATIBLE.  pINS pa0
  3540. AND pb0 ARE ALSO CAPABLE OF SOURCING 3 Ma AT 1.5v, THUS MAKING THEM CAPABLE
  3541. OF dARLINGTON DRIVE.
  3542.  
  3543. 1.6.2.7 aDDRESS lINES (a0-a9)
  3544.         tHERE ARE 10 ADDRESS PINS.  iN ADDITION TO THESE 10, THERE IS THE
  3545. rom select PIN.  tHE ABOVE PINS, a0-a9 AND rom select, ARE ALWAYS USED AS
  3546. ADDRESSING PINS.  tHERE ARE 2 ADDITIONAL PINS WHICH ARE MASK PROGRAMMABLE
  3547. AND CAN BE USED EITHER INDIVIDUALLY OR TOGETHER AS chip selects.  tHEY ARE
  3548. PINS pb5 AND pb6.  wHEN USED AS PERIPHERAL DATA PINS THEY CANNOT BE USED AS
  3549. CHIP SELECTS.
  3550.  
  3551. 1.6.3   iNTERNAL oRGANIZATION
  3552.         a BLOCK DIAGRAM OF THE INTERNAL ARCHITECTURE IS SHOWN IN fIGURE 1.33.
  3553. tHE mcs6530 IS DIVIDED INTO FOUR BASIC SECTIONS, ram, rom, i/o AND timer.
  3554. tHE ram AND rom INTERFACE DIRECTLY WITH THE MICROPROCESSOR THROUGH THE SYS-
  3555. TEM DATA BUS AND ADDRESS LINES.  tHE i/o SECTION CONSISTS OF 2 8-BIT HALVES.
  3556. eACH HALF CONTAINS A dATA dIRECTION rEGISTER (ddr) AND AN i/o rEGISTER.
  3557. tHE ddr CONTROLS THE PERIPHERAL OUTPUT BUFFERS.  a "1" WRITTEN INTO THE ddr
  3558. SETS UP THE CORRESPONDING PERIPHERAL BUFFER AS AN OUTPUT BUFFER.  bY THIS,
  3559. IT IS MEANT THAT ANYTHING THEN WRITTEN INTO THE i/o rEGISTER WILL APPEAR ON
  3560. THAT CORRESPONDING PERIPHERAL PIN.  a  "0" WRITTEN INTO THE ddr INHIBITS THE
  3561. OUTPUT BUFFER FROM TRANSMITTING DATA FROM THE i/o rEGISTER.  tHE OUTPUT
  3562. BUFFER REMAINS IN THE HIGH STATE MAKING IT READY TO RECEIVE DATA ON THE
  3563. PERIPHERAL LINES.
  3564.         iT SHOULD BE NOTED THAT THE MICROPROCESSOR, WHEN READING THE i/o
  3565. rEGISTER, IS IN FACT READING THE pERIPHERAL pIN AND NOT THE i/o rEGISTER.
  3566. tHE ONLY WAY THE i/o rEGISTER DATA CAN BE CHANGED IS BY A MICROPROCESSOR
  3567. wRITE OPERATION.  tHE rEGISTER IS NOT AFFECTED BY THE DATA ON THE pERIPH-
  3568. ERAL pIN.
  3569.  
  3570. 1.6.3.1 rom--1k bYTE (8k bITS)
  3571.         tHE 8k rom IS IN A 1024 X 8 CONFIGURATION.  aDDRESS LINES a0-a9,
  3572. AS WELL AS rs0 ARE NEEDED TO ADDRESS THE ENTIRE rom.  wITH THE ADDITION OF
  3573.  
  3574.  
  3575.                                    -74-
  3576.  
  3577. ============================================================================
  3578.  
  3579.                     mcs6530 iNTERNAL aRCHITECTURE
  3580.                                 figure 1.33
  3581.  
  3582.  
  3583.                                    -75-
  3584.  
  3585. ============================================================================
  3586.  
  3587. cs1 AND cs2, UP TO SEVEN mcs6530S MAY BE ADDRESSED, GIVING 7168 X 8 BITS OF
  3588. CONTIGUOUS rom.
  3589.  
  3590. 1.6.3.2 ram--64 bYTES (512 bITS)
  3591.         a 64 X 8 STATIC ram IS CONTAINED ON THE mcs6530.  iT IS ADDRESSED
  3592. BY a0-a5 (bYTE sELECT),  rs0, a6, a7, a8, a9 AND, DEPENDING ON THE NUMBER
  3593. OF CHIPS IN THE SYSTEM, cs1 AND cs2.
  3594.  
  3595. 1.6.3.3 iNTERNAL pERIPHERAL rEGISTERS
  3596.         tHERE ARE FOUR INTERNAL REGISTERS, TWO DATA DIRECTION REGISTERS
  3597. AND TWO PERIPHERAL i/o DATA REGISTERS.  tHE TWO DATA DIRECTION REGISTERS (a
  3598. SIDE AND b SIDE) CONTROL THE DIRECTION OF DATA INTO AND OUT OF THE PERIPH-
  3599. ERAL PINS.  fOR EXAMPLE, A "1" LOADED INTO DATA DIRECTION REGISTER a, POSI-
  3600. TION 3 SETS UP PERIPHERAL PIN pa3 AS AN OUTPUT.  iF A "0" HAD BEEN LOADED
  3601. INSTEAD, pa3 WOULD BE CONFIGURED AS AN INPUT.  tHE TWO DATA i/o REGISTERS
  3602. ARE USED TO LATCH DATA FROM THE DATA BUS DURING A wRITE OPERATION UNTIL THE
  3603. PERIPHERAL DEVICE CAN READ THE DATA SUPPLIED BY THE MICROPROCESSOR UNIT.
  3604. aLTHOUGH DURING A rEAD OPERATION THE MICROPROCESSOR UNIT READS THE PERIPH-
  3605. ERAL PIN, THE ADDRESS IS THE SAME AS THE REGISTER.  fOR THOSE PINS PRO-
  3606. GRAMMED AS OUTPUTS BY THE DATA DIRECTION REGISTERS, THE DATA ON THE PINS
  3607. WILL BE THE SAME AS THAT IN THE i/o REGISTER.
  3608.  
  3609. 1.6.3.4 iNTERVAL tIMER
  3610.         tHE tIMER SECTION OF THE mcs6530 CONTAINS THREE BASIC PARTS:  PRE-
  3611. LIMINARY DIVIDE DOWN REGISTER, PROGRAMMABLE 8-BIT REGISTER AND INTERRUPT
  3612. LOGIC.  tHESE ARE ILLUSTRATED IN fIGURE 1.34.
  3613.         tHE INTERVAL TIMER CAN BE PROGRAMMED TO COUNT UP TO 256 TIME
  3614. INTERVALS.  eACH TIME INTERVAL CAN BE EITHER 1t, 8t, 64t OR 1024t INCRE-
  3615. MENTS, WHERE t IS THE SYSTEM CLOCK PERIOD.  wHEN A FULL COUNT IS REACHED,
  3616. AN INTERRUPT FLAG IS SET TO A LOGIC  "1."  aFTER THE INTERRUPT FLAG IS SET
  3617. THE INTERNAL CLOCK BEGINS COUNTING DOWN TO A MAXIMUM OF -255t.  tHUS, AFTER
  3618. THE INTERRUPT FLAG IS SET, A rEAD OF THE TIMER WILL TELL HOW LONG SINCE THE
  3619. FLAG WAS SET UP TO A MAXIMUM OF 255t.
  3620.         wHEN WRITING TO THE TIMER, THE HIGH ORDER 8 BITS OF THE TIMER ARE
  3621. WRITTEN BY THE SYSTEM DATA BUS.  iF A COUNT OF 52 TIME INTERVALS WERE TO BE
  3622. COUNTED, 0 0 1 1 0 1 0 0 WOULD BE WRITTEN INTO THE TIMER SECTION.  tHE TIME
  3623. INTERVALS OF 1, 8, 64 OR 1024t ARE DECODED FROM ADDRESS LINES a0 AND a1 AT
  3624. THIS SAME TIME.  aDDRESS LINE a3, IF HIGH DURING THIS WRITE OPERATION,
  3625.  
  3626.  
  3627.                                    -76-
  3628.  
  3629. ============================================================================
  3630.  
  3631.                      256 iNTERVALS
  3632.                 ___________^___________
  3633.                /                       \
  3634.                 d7 d6 d5 d4 d3 d2 d1 d0      r/w         a1    a0
  3635.                 {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}        {$7c}          {$7c}     {$7c}
  3636.                 V  V  V  V  V  V  V  V        {$7c}          V     V
  3637.                -------------------------      {$7c}      ----------------
  3638.                {$7c}                       {$7c}<-----+----->{$7c}              {$7c}
  3639.           -----+      programmable     {$7c}             {$7c}  dividedown  {$7c}<---O2
  3640.           {$7c}    {$7c}        register       {$7c}<------------+              {$7c}
  3641.           {$7c}    {$7c}                       {$7c}             {$7c}              {$7c}
  3642.           {$7c}    -+--+--+--+--+--+--+--+--             ----------------
  3643.           {$7c}     {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}      1t, 8t, 64t, OR 1024t iNTERVALS
  3644.           {$7c}     {$7c}  V  V  V  V  V  V  V
  3645.           {$7c}     {$7c}  d6 d5 d4 d3 d2 d1 d0
  3646.           {$7c}     {$7c}
  3647.           {$7c}     {$7c}
  3648.           V     {$7c}
  3649.       --------  {$7c}
  3650. a3 -->{$7c}      {$7c}  {$7c}
  3651.       {$7c}      +--+-->d7
  3652. r/w-->{$7c}      {$7c}
  3653.       ----+---
  3654.           {$7c}
  3655.           V
  3656.          ___
  3657.          irq
  3658.  
  3659.                       bASIC eLEMENTS OF iNTERVAL tIMER
  3660.                                 fig ure 1.34
  3661.  
  3662.  
  3663.                                    -77-
  3664.  
  3665. ============================================================================
  3666.  
  3667. ENABLES THE INTERRUPT FLAG ONTO PIN pb7.  pb7 SHOULD BE PROGRAMMED AS AN
  3668. INPUT IF IT IS TO BE USED AS AN INTERRUPT PIN.  pb7 GOES LOW WHEN AN INTER-
  3669. RUPT OCCURS.  wHEN THE TIMER IS READ PRIOR TO THE INTERRUPT FLAG BEING SET,
  3670. THE NUMBER OF TIME INTERVALS REMAINING WILL BE READ, I.E., 51, 50, 49, ETC.
  3671.     sHOULD THE TIMER BE READ WHEN INTERRUPT OCCURS, THE VALUE READ
  3672. WOULD BE 1 1 1 1 1 1 1 1.  aFTER INTERRUPT, THE TIMER REGISTER DECREMENTS
  3673. AT A DIVIDE BY "1" RATE OF THE SYSTEM CLOCK.  iF AFTER INTERRUPT, THE TIMER
  3674. IS READ AND A VALUE OF 1 1 1 0 0 1 0 0 IS READ, THE TIME SINCE INTERRUPT IS
  3675. 28t.  tHE VALUE READ IS IN TWO'S COMPLEMENT.
  3676.             vALUE READ = 1 1 1 0 0 1 0 0
  3677.             cOMPLEMENT = 0 0 0 1 1 0 1 1
  3678.             add 1      = 0 0 0 1 1 1 0 0 = 28.
  3679. tHUS, TO ARRIVE AT THE TOTAL ELAPSED TIME, MERELY DO A TWO'S COMPLEMENT ADD
  3680. TO THE ORIGINAL TIME WRITTEN INTO THE TIMER.  aGAIN, ASSUME TIME WRITTEN AS
  3681. 0 0 1 1 0 1 0 0 (= 52).  wITH A DIVIDE BY 8, TOTAL TIME TO INTERRUPT IS
  3682. (52 X 8) + 1 = 417t.  tOTAL ELAPSED TIME WOULD BE 416t + 28t = 444t, ASSUM-
  3683. ING THE VALUE READ AFTER INTERRUPT WAS 1 1 1 0 0 1 0 0.
  3684.         aFTER INTERRUPT, WHENEVER THE TIMER IS WRITTEN OR READ THE INTER-
  3685. RUPT IS RESET.  hOWEVER, THE READING OR WRITING OF THE TIMER AT THE SAME
  3686. TIME INTERRUPT OCCURS WILL NOT RESET THE INTERRUPT FLAG.
  3687.         fIGURE 1.35 ILLUSTRATES AN EXAMPLE OF INTERRUPT.
  3688.         wHEN READING THE TIMER AFTER AN INTERRUPT, a3 SHOULD BE LOW SO AS
  3689. TO DISABLE THE irq PIN.  tHIS IS DONE SO AS TO AVOID FUTURE INTERRUPTS UNTIL
  3690. AFTER ANOTHER wRITE TIMER OPERATION.
  3691.  
  3692. 1.6.4   aDDRESSING
  3693.         aDDRESSING OF THE mcs6530 OFFERS MANY VARIATIONS TO THE USER FOR
  3694. GREATER FLEXIBILITY.  tHE USER MAY CONFIGURE HIS SYSTEM WITH ram IN LOWER
  3695. MEMORY, rom IN HIGHER MEMORY, AND i/o REGISTERS WITH INTERVAL TIMERS BETWEEN
  3696. THE EXTREMES.  tHERE ARE 10 ADDRESS LINES (a0-a9).  iN ADDITION, THERE IS
  3697. THE POSSIBILITY OF 3 ADDITIONAL ADDRESS LINES TO BE USED AS CHIP-SELECTS AND
  3698. TO DISTINGUISH BETWEEN rom, ram, i/o AND INTERVAL TIMER.  tWO OF THE ADDI-
  3699. TIONAL LINES ARE CHIP-SELECTS 1 AND 2 (cs1 AND cs2).  tHE CHIP-SELECT PINS
  3700. CAN ALSO BE pb5 AND pb6.  wHETHER THE PINS ARE USED AS CHIP-SELECTS OR
  3701. PERIPHERAL i/o PINS IS A MASK OPTION AND MUST BE SPECIFIED WHEN ORDERING
  3702. THE PART.  bOTH PINS ACT INDEPENDENTLY OF EACH OTHER IN THAT EITHER OR BOTH
  3703.  
  3704.  
  3705.                                    -78-
  3706.  
  3707. ============================================================================
  3708.  
  3709.  
  3710.          (1)                     (2)         (3)   (4)   (5)
  3711.         ----  ----  ----  ----  ----  ----  ----  ----  ----  ----
  3712.         {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  3713.        --  ----  ----  ----  -//-  ----  -//-  ----  -//-  ----  ---
  3714.           0     1     2     3    213   214   415   416   500   501
  3715.  
  3716.         ----
  3717. write t {$7c}  {$7c}
  3718.        --  ---------------------------------------------------------
  3719.  
  3720.        -------------------------------------------
  3721. irq                                              {$7c}
  3722.                                                  -------------------
  3723.  
  3724. should the programmable timer register be read at the
  3725. times noted on the diagram above, it would contain:
  3726.  
  3727. (1) dATA WRITTEN INTO INTERVAL TIMER IS 001100100 = 52  a DIVIDE BY 8 PRE-SCALE
  3728.      IS USED
  3729.  
  3730. (2) 00011001 = 25   52 - 213/8 - 1 = 52 - 26 - 1 = 25
  3731.  
  3732. (3) 00000000 = 0    52 - 415/8 - 1 = 52 - 51 - 1 = 0
  3733.  
  3734. (4) iNTERRUPT HAS OCCURRED AT O2 PULSE #416
  3735.  
  3736. (5) 10101100    tWO; COMPLEMENT = 01010100 = 84     84 + (52X8) = 500
  3737.  
  3738.  
  3739.               eXAMPLE OF iNTERRUPT gENERATED BY iNTERVAL tIMER
  3740.                                 figure 1.35
  3741.  
  3742.  
  3743.                                    -79-
  3744.  
  3745. ============================================================================
  3746.  
  3747. PINS MAY BE DESIGNATED AS A CHIP-SELECT.  tHE THIRD ADDITIONAL ADDRESS LINE
  3748. IS rs0.  tHE mcs6502 AND mcs6530 IN A 2-CHIP SYSTEM WOULD USE rs0 TO DIS-
  3749. TINGUISH BETWEEN rom AND NON-rom SECTIONS OF THE mcs6530.  wITH THE AD-
  3750. DRESSING PINS AVAILABLE, A TOTAL OF 7k CONTIGUOUS rom MAY BE ADDRESSED WITH
  3751. NO EXTERNAL DECODE.  bELOW IS AN EXAMPLE OF A 1-CHIP AND A 7-CHIP mcs6530
  3752. aDDRESSING sCHEME.
  3753.  
  3754. 1.6.4.1 oNE-cHIP aDDRESSING
  3755.         fIGURE 1.36 ILLUSTRATES A 1-CHIP SYSTEM DECODE FOR THE mcs6530.
  3756.  
  3757. 1.6.4.2 sEVEN-cHIP aDDRESSING
  3758.         iN THE 7-CHIP SYSTEM THE OBJECTIVE WOULD BE TO HAVE 7k OF CONTIGU-
  3759. OUS rom, WITH ram IN LOW ORDER MEMORY.  tHE 7k OF rom COULD BE PLACED BE-
  3760. TWEEN ADDRESSES 65,536 AND 1024.  fOR THIS CASE, ASSUME a13, a14 AND a15
  3761. ARE ALL 1 WHEN ADDRESSING rom, AND 0 WHEN ADDRESSING ram OR i/o.  tHIS
  3762. WOULD PLACE THE 7k rom BETWEEN aDDRESSES 65,535 AND 57,367.  tHE 2 PINS
  3763. DESIGNATED AS CHIP-SELECT OR i/o WOULD BE MASKED PROGRAMMED AS CHIP-SELECT
  3764. PINS.  pIN rs0 WOULD BE CONNECTED TO ADDRESS LINE a10.  pINS cs1 AND cs2
  3765. WOULD BE CONNECTED TO ADDRESS LINES a11 AND a12 RESPECTIVELY.  sEE fIGURE
  3766. 1.37.
  3767.         tHE TWO EXAMPLES SHOWN WOULD ALLOW ADDRESSING OF THE rom AND ram;
  3768. HOWEVER, ONCE THE i/o TIMER HAS BEEN ADDRESSED, FURTHER DECODING IS NECS-
  3769. SARY TO SELECT WHICH OF THE i/o REGISTERS ARE DESIRED, AS WELL AS THE COD-              a
  3770. MG OF THE INTERVAL TIMER.
  3771.  
  3772. 1.6.4,3 i/o rEGISTER--tIMER aDDRESSING
  3773.         fIGURE 1.38 ILLUSTRATES THE ADDRESSING DECODING FOR THE INTERNAL
  3774. ELEMENTS AND TIMER PROGRAMMING.  aDDRESS LINE a2 DISTINGUISHES i/o REGIS-
  3775. TERS FROM THE TIMER.  wHEN a2 IS LOW AND i/o TIMER SELECT IS HIGH, THE i/o
  3776. REGISTERS ARE ADDRESSED.  oNCE THE i/o REGISTERS ARE ADDRESSED, ADDRESS
  3777. LINES a1 AND a0 DECODE THE DESIRED REGISTER.
  3778.         wHEN THE TIMER IS SELECTED a1 AND a0 DECODE THE DIVIDE BY MATRIX.
  3779. tHIS IS DISCUSSED FURTHER IN THE tIMER sECTION.  iN ADDITION, aDDRESS a3 IS
  3780. USED TO ENABLE THE INTERRUPT FLAG TO pb7.
  3781.  
  3782.  
  3783.                                    -80-
  3784.  
  3785. ============================================================================
  3786.  
  3787.  
  3788.  
  3789.             [ pICTURE OF 6530 HOW MASK CAN BE PROGRAMMED ]
  3790.  
  3791.  
  3792.  
  3793.             a.  x INDICATES MASK PROGRAMMING
  3794.                 I.E.    rom SELECT = cs1 X rs0
  3795.                                      ___   ___   __
  3796.                         ram SELECT = cs1 X rs0 X a9 X a7 X a6
  3797.                                            ___   ___
  3798.                         i/o timer select = cs1 X rs0 X a9 X a8 X a7 X a6
  3799.  
  3800.             b.  nOTICE THAT a8 IS A DON'T CARE FOR
  3801.                 ram SELECT
  3802.  
  3803.             c.  cs2 CAN BE USED AS pb5 IN THIS EXAMPLE.
  3804.  
  3805.  
  3806.                   mcs6530 oNE cHIP aDDRESS eNCODING dIAGRAM
  3807.                                 figure 1.36
  3808.  
  3809.  
  3810.                                    -81-
  3811.  
  3812. ============================================================================
  3813.  
  3814.  
  3815.     tHE ADDRESSING OF THE rom SELECT, ram SELECT AND i/o tIMER SELECT LINES
  3816. WOULD BE AS FOLLOWS:
  3817.                                 cs2   cs1   rs0
  3818.                                 a12   a11   a1o   a9    a8    a7    a6
  3819.  
  3820. mcs6530 #1,     rom select      0     0     1     x     x     x     x
  3821.                 ram select      0     0     0     0     0     0     0
  3822.                 i/o timer       0     0     0     1     0     0     0
  3823.  
  3824. mcs6530 #2,     rom select      0     1     0     x     x     x     x
  3825.                 ram select      0     0     0     0     0     0     1
  3826.                 i/o timer       0     0     0     1     0     0     1
  3827.  
  3828. mcs6530 #3,     rom select      0     1     1     X     X     X     X
  3829.                 ram select      0     0     0     0     0     1     0
  3830.                 i/o timer       0     0     0     1     0     1     0
  3831.  
  3832. mcs6530 #4,     rom select      1     0     0     x     x     x     x
  3833.                 ram select      0     0     0     0     0     1     1
  3834.                 i/o timer       0     0     0     1     0     1     1
  3835.  
  3836. mcs6530 #5,     rom select      1     0     1     x     x     x     x
  3837.                 ram select      0     0     0     0     1     0     0
  3838.                 i/o timer       0     0     0     1     1     0     0
  3839.  
  3840. nc56530 #6,     rom select      1     1     0     X     X     X     X
  3841.                 ram select      0     0     0     0     1     0     1
  3842.                 i/o timer       0     0     0     1     1     0     1
  3843.  
  3844. mcs6530 #7,     rom select      1     1     1     X     X     X     X
  3845.                 ram select      0     0     0     0     1     1     0
  3846.                 i/o timer       0     0     0     1     1     1     0
  3847.  
  3848.     * ram SELECT FOR mcs6530 #5 WOULD READ = a120a110a10.a9.a8.a7.a6
  3849.  
  3850.  
  3851.                     mcs6530 sEVEN cHIP aDDRESSING sCHEME
  3852.                                 figure 1.37
  3853.  
  3854.  
  3855.                                    -82-
  3856.  
  3857. ============================================================================
  3858.  
  3859.                             addressing decode
  3860.  
  3861.                   rom select  ram select  i/o timer select  r/w  a3  a2  a1  a0
  3862.  
  3863. read rom               1           0              0          1   X   X   X   X
  3864.  
  3865. write ram              0           1              0          0   X   X   X   X
  3866.  
  3867. read ram               0           1              0          1   x   x   x   x
  3868.  
  3869. write ddra             0           0              1          0   x   0   0   1
  3870.  
  3871. read ddra              0           0              1          1   x   0   0   1
  3872.  
  3873. write ddrb             0           0              1          0   x   0   1   1
  3874.  
  3875. read ddrb              0           0              1          1   x   0   1   1
  3876.  
  3877. write per. reg. a      0           0              1          0   X   0   0   0
  3878.  
  3879. read per. reg. a       0           0              1          1   x   0   0   0
  3880.  
  3881. write per. reg. b      0           0              1          0   X   0   1   0
  3882.  
  3883. read per. reg. b       0           0              1          1   X   0   1   0
  3884.  
  3885. write timer
  3886.   1t w/irq TO pb7      0           0              1          0   1   1   0   0
  3887.   8t wo/irq TO pb7     0           0              1          0   0   1   0   1
  3888.   64t wiirq TO pb7     0           0              1          0   1   1   1   0
  3889.   1024t wo/irq TO pb7  0           0              1          0   0   1   1   1
  3890.  
  3891. read timer
  3892.    disab1e irq to pb7  0           0              1          1   0   1   X   0
  3893.  
  3894. read interrupt flag    0           0              1          1   x   1   X   1
  3895.  
  3896.  
  3897.                 aDDRESSING dECODE FOR i/o rEGISTER AND tIMER
  3898.                                 figure 1.38
  3899.  
  3900.  
  3901.                                    -83-
  3902.  
  3903. ============================================================================
  3904.  
  3905.  
  3906.                                    blank
  3907.  
  3908.  
  3909.                                    -83-
  3910.  
  3911. ============================================================================
  3912.  
  3913.                                 chapter 2
  3914.  
  3915.                 configuring the microcomputer system
  3916.  
  3917.  
  3918. 2.1 the system configuration task
  3919.     tHE FIRST PART OF ANY MICROPROCESSOR-BASED DESIGN EFFORT IS THE SYSTEM CON-
  3920. FIGURATION TASK.  iN FACT, THIS PROBABLY REQUIRES MORE CREATIVITY FROM THE DE-
  3921. SIGNER THAN ANY OTHER PART OF THE DESIGN EFFORT.  tHE GOAL OF THE SYSTEM CON-
  3922. FIGURATION EFFORT IS THE GENERATION OF A LIST OF COMPONENTS WHICH WILL MAKE UP
  3923. THE SYSTEM, A DETAILED INTERCONNECT DIAGRAM AND A DETAILED DESCRIPTION OF THE
  3924. TOTAL SYSTEM OPERATION.  tHIS INCLUDES A DEFINITION OF HOW THE PROCESSOR WILL
  3925. CONTROL THE PERIPHERAL DEVICES AS WELL AS A DEFINITION OF THE INTERNAL OPERA-
  3926. TIONS TO BE PERFORMED.  tHIS DOES NOT INCLUDE DETAILED IMPLEMENTATION OF THE
  3927. DESIGN SUCH AS LAYING OUT PRINTED CIRCUIT BOARDS AND WRITING PROGRAMS, BUT DOES
  3928. INVOLVE ENOUGH ANALYSIS OF THE TOTAL OPERATION TO ASSURE THAT THE SYSTEM WILL
  3929. OPERATE PROPERLY AFTER ALL THE HARDWARE AND SOFTWARE IS ASSEMBLED.
  3930.     tHE TECHNICALLY BASED SELECTION OF COMPONENTS AND THE DEFINITION OF THE
  3931. GENERAL OPERATION OF THE SYSTEM MUST BE BASED ON CONSIDERATION OF TWO FACTORS.
  3932. tHESE ARE:
  3933.     1.  sYSTEM SPEED REQUIREMENTS
  3934.     2.  sYSTEM INPUT/OUTPUT REQUIREMENTS
  3935. bOTH OF THESE FACTORS ARE INTERRELATED.  tHEREFORE, IT WILL USUALLY BE NECESSARY
  3936. TO DEFINE AN i/o CONFIGURATION AND THEN VERIFY THAT THE PROCESSOR CAN OPERATE AT
  3937. THE SPEED REQUIRED BY THE PERIPHERAL DEVICES.  iF THERE APPEARS TO BE ANY DIFFI-
  3938. CULTY WITH THE i/o OPERATION, THIS STRUCTURE MUST BE RE-DEFINED AND RE-ANALYZED.
  3939.     iN ADDITION TO THE SPEED REQUIREMENTS OF THE i/o DEVICES, THERE ARE ALSO
  3940. GENERAL SPEED REQUIREMENTS FOR THE INTERNAL PROCESSOR OPERATIONS (ARITHMETIC
  3941. OPERATIONS, DATA MANIPULATION, ETC.).  tHIS SPEED REQUIREMENT IS USUALLY SOME-
  3942. WHAT MORE FLEXIBLE THAN THAT ASSOCIATED WITH i/o BUT IT SHOULD BE DEFINED ALONG
  3943. WITH ANY OTHER SYSTEM REQUIREMENTS.  tHE ULTIMATE TEST OF SYSTEM SPEED MUST WAIT
  3944. FOR THE GENERATION OF BOTH THE HARDWARE AND THE PROGRAM; HOWEVER, THE SYSTEM
  3945. REQUIREMENTS AND CAPABILITY MUST BE ANALYZED VERY EARLY IN THE SYSTEM DEVELOP-
  3946. MENT PROCESS TO ASSURE THAT NO PROBLEMS WILL ARISE DURING THE LAST STAGES OF THE
  3947. DESIGN.
  3948.  
  3949.  
  3950.                                    -84-
  3951.  
  3952. ============================================================================
  3953.  
  3954. 2.2 input/output techniques
  3955.  
  3956. 2.2.1   tHE gENERAL pURPOSE iNPUT/oUTPUT (i/o) pORT
  3957.         aLTHOUGH THE CONCEPT OF THE i/o PORT WAS INTRODUCED BRIEFLY IN sEC-
  3958. TION 1, AND THE OPERATION OF TWO mcs6500 FAMILY DEVICES WHICH PROVIDE GEN-
  3959. ERAL PURPOSE i/o CAPABILITY HAS BEEN DISCUSSED IN sECTIONS 1.5 AND 1.6,
  3960. LITTLE HAS BEEN SAID ABOUT WHAT FACTORS MUST BE CONSIDERED WHEN CONFIGUR-
  3961. ING AN i/o STRUCTURE USING THESE DEVICES.
  3962.         tHE GENERAL PURPOSE i/o PORT CONSISTS OF EIGHT LINES, EACH OF WHICH
  3963. CAN ACT AS EITHER AN INPUT OR AN OUTPUT.  aS AN INPUT, EACH LINE CAN DETECT
  3964. THE STATE OF ONE SWITCH OR CAN DETECT ONE BIT OF DATA.  aS AN OUTPUT, EACH
  3965. LINE CAN CONTROL ONE LIGHT, SOLENOID, ETC. OR CAN PROVIDE ONE BIT OF DATA
  3966. TO A PERIPHERAL DEVICE.  iF THIS TECHNIQUE IS USED IN PERIPHERAL CONTROL,
  3967. THE OPERATION OF EACH LINE IS TOTALLY DEFINED IN THE SYSTEM PROGRAM.
  3968.         fOR MOST SYSTEMS, THE GENERAL PURPOSE INTERFACE DEVICE PROVIDES MORE
  3969. THAN ADEQUATE SPEED AND FLEXIBILITY TO SOLVE THE ENTIRE PERIPHERAL INTER-
  3970. FACE PROBLEM.  uSUALLY, A COST SAVINGS CAN BE REALIZED BECAUSE OF THE RE-
  3971. DUCED COMPONENT COST AND THE NECESSITY OF STOCKING ONLY ONE TYPE OF INTER-
  3972. FACE DEVICE.  iN ADDITION, USE OF THE GENERAL PURPOSE PERIPHERAL INTERFACE
  3973. DEVICE ALLOWS THE DESIGNER TO TAILOR THE OPERATION OF THE INTERFACE DEVICE
  3974. TO FIT THE PROBLEM AT HAND.
  3975.         tHE ULTIMATE COMPONENT SELECTION MUST BE PRECEDED BY A STUDY OF EACH
  3976. SECTION OF THE SYSTEM INPUT/OUTPUT STRUCTURE AND A STUDY OF THE OVERALL SYS-
  3977. TERN PERFORMANCE.  uLTIMATELY, THE SET OF GENERAL PURPOSE AND SPECIAL PURPOSE
  3978. PERIPHERAL INTERFACE DEVICES SELECTED FOR A SYSTEM MUST BE CHOSEN TO MINI-
  3979. MIZE TOTAL COST WHILE ASSURING SATISFACTORY SYSTEM PERFORMANCE.
  3980.  
  3981.  
  3982.                                    -88-
  3983.  
  3984. ============================================================================
  3985.  
  3986.     pROCESSOR SPEED IS A FUNCTION OF TWO THINGS.  tHE FIRST IS SIMPLY THE NUM-
  3987. BER OF INSTRUCTIONS REQUIRED TO PERFORM THE DESIRED OPERATIONS.  tHE SECOND IS
  3988. THE PERCENTAGE OF PROCESSOR TIME REQUIRED TO SERVICE INTERRUPTS.  tHE TYPICAL
  3989. SYSTEM MAY EMPLOY SEVERAL INTERRUPT SIGNALS WHICH OCCUR AT FIXED INTERVALS.  aT
  3990. TIMES, THESE MAY BE COMBINED WITH OTHER INTERRUPTS BEING GENERATED BY A PERIPH-
  3991. ERAL DEVICE.  iT IS IMPORTANT THAT THE TOTAL SERVICE TIME FOR THESE INTERRUPTS
  3992. DOES NOT EXCEED THAT ALLOWABLE AND THAT THE TIME AVAILABLE TO THE PROCESSOR FOR
  3993. EXECUTING THE MAIN PROGRAM IS SUFFICIENT TO ALLOW THE SYSTEM TO OPERATE AT ITS
  3994. REQUIRED SPEED.
  3995.     dURING THE SYSTEM CONFIGURATION PROCESS, DETAILED SYSTEM PROGRAMS NEED NOT
  3996. BE GENERATED.  hOWEVER, IT WILL BE NECESSARY TO WRITE SMALL PORTIONS OF THE
  3997. SOFTWARE TO VERIFY THE SPEED OF EXECUTION AND TO ASSURE PROPER OPERATION OF THE
  3998. TOTAL SYSTEM.
  3999.     tHIS CHAPTER WILL DISCUSS SPECIAL TECHNIQUES FOR THE CONTROL OF THE VARIOUS
  4000. COMPONENTS WHICH MAY BE INCLUDED IN A MICROCOMPUTER SYSTEM, AS WELL AS TECHNIQUES
  4001. FOR CONTROLLING PERIPHERAL DEVICES WHICH ARE ATTACHED TO THE SYSTEM.  a DISCUS-
  4002. SION OF PROGRAMMING TECHNIQUES WHICH CAN BE USED TO OPTIMIZE THE TOTAL SYSTEM
  4003. PERFORMANCE IS CONTAINED IN THE pROGRAMMING mANUAL.
  4004.  
  4005. 2.2.2   tHE sPECIAL pURPOSE pERIPHERAL iNTERFACE dEVICE
  4006.         tHE SPECIAL PURPOSE, DEDICATED i/o DEVICE MUST ALSO BE CONSIDERED IN
  4007. ANY MICROCOMPUTER DESIGN.  tHESE DEVICES ARE DESIGNED TO COMPLETELY HANDLE
  4008. A SINGLE WELL-DEFINED PROBLEM; FOR EXAMPLE, DRIVING A PARTICULAR PRINTER,
  4009. HANDLING A PARTICULAR TYPE OF COMMUNICATIONS LINE OR DRIVING A SCANNED DIS-
  4010. PLAY.  tHESE SPECIAL PURPOSE DEVICES ARE DESIGNED TO TOTALLY HANDLE THEIR
  4011. PARTICULAR TASK WITH VERY LITTLE HELP FROM THE PROCESSOR.
  4012.  
  4013.  
  4014.                                    -86-
  4015.  
  4016. ============================================================================
  4017.  
  4018.         tHE PRIMARY ADVANTAGE OF THIS TYPE OF INTERFACE DEVICE IS THAT IT
  4019. REQUIRES AN ABSOLUTE MINIMUM AMOUNT OF ATTENTION FROM THE PROCESSOR.  tHE
  4020. MAJOR DISADVANTAGE OF SPECIAL PURPOSE i/o IS INCREASED COMPONENT COST.  tHE
  4021. TOTAL PRODUCTION VOLUME FOR THESE DEVICES IS LESS THAN THAT OF THE MORE
  4022. UNIVERSAL i/o CHIPS AND ALSO THE TOTAL CHIP SIZE IS USUALLY GREATER.
  4023.         tHE USE OF SPECIAL PURPOSE PERIPHERAL CONTROL DEVICES WILL NOT BE
  4024. DISCUSSED IN THIS MANUAL.  iNSTEAD, A DETAILED STUDY WILL BE MADE OF THE
  4025. MORE GENERAL PROBLEM OF CONFIGURING THE 8-BIT BI-DIRECTIONAL PERIPHERAL
  4026. PORT.  iN ADDITION, THIS CHAPTER WILL COVER SOME SPECIAL TECHNIQUES WHICH
  4027. CAN GREATLY ENHANCE THE POWER OF THIS TYPE OF INTERFACE DEVICE.
  4028.  
  4029. 2.2.3   cONFIGURING THE gENERAL pURPOSE i/o pORT
  4030.         tHE 8-BIT PERIPHERAL CONTROL PORT INCLUDED ON THE mcs6520 AND THE
  4031. mcs6530 ALLOWS EACH LINE TO BE PROGRAMMED TO ACT AS AN INPUT OR AN OUTPUT.
  4032. tHIS IS ACCOMPLISHED WHEN THE PROCESSOR WRITES A PATTERN OF 1'S AND 0'S
  4033. INTO THE DATA DIRECTION REGISTER.  wRITING A 1 CAUSES THE PIN TO BECOME AN
  4034. OUTPUT, AND WRITING A 0 CAUSES IT TO ACT AS AN INPUT.  aLTHOUGH THIS OPERA-
  4035. TION IS NORMALLY PERFORMED ONLY DURING SYSTEM INITIALIZATION, THE ABILITY
  4036. TO DO SO UNDER PROGRAM CONTROL ALLOWS SOME VERY IMPORTANT PERIPHERAL CON-
  4037. TROL TECHNIQUES.  aN EXAMPLE OF THIS IS DESCRIBED BELOW.
  4038.         tHE PROCESS OF CONFIGURING THE GENERAL PURPOSE i/o PORT INVOLVES
  4039. FIRST EXAMINING THE PERIPHERAL DEVICES TO ANALYZE THE VARIOUS CONTROL IN-
  4040. PUTS, SWITCHES, SENSORS, DATA SIGNALS, ETC. WHICH MUST BE HANDLED BY THE
  4041. MICROPROCESSOR TO PROPERLY CONTROL THE DEVICE.  eACH FUNCTION MUST THEN BE
  4042. ASSIGNED TO A LINE ON THE i/O PORT.  tHE ULTIMATE GOAL OF THIS PROCESS IS
  4043. THE CREATION OF A LIST OF i/o PINS, THE FUNCTION OF EACH PIN, AND AN INDI-
  4044. CATION OF WHETHER EACH PIN IS TO BE AN INPUT OR AN OUTPUT.
  4045.         sINCE EACH LINE IS CAPABLE OF OPERATING AS AN INPUT OR AN OUTPUT,
  4046. AND SINCE THERE IS VERY LITTLE TO DIFFERENTIATE ONE LINE FROM ANY OTHER,
  4047. THE ACTUAL ASSIGNMENT CAN BE MADE FAIRLY LATE IN THE SYSTEM DEVELOPMENT
  4048. CYCLE AFTER CONSIDERATION OF SOFTWARE TECHNIQUES AND PRINTED CIRCUIT BOARD
  4049. LAYOUT.  iN FACT, SOFTWARE CONSIDERATIONS MAY BE THE ONLY THING WHICH DIC-
  4050. TATES THAT A SIGNAL BE CONNECTED TO ONE PIN OR ANOTHER.
  4051.         dEVELOPING A THOROUGH UNDERSTANDING OF THE SOFTWARE IN THE mcs6500
  4052. SYSTEMS WILL REQUIRE A DETAIL STUDY OF THE pROGRAMMING mANUAL.  hOWEVER,
  4053. SEVERAL OPERATIONS WHICH CAN BE PERFORMED BY THE PROCESSOR AND WHICH AFFECT
  4054. THE ASSIGNMENT OF INPUTS AND OUTPUTS WILL BE DISCUSSED BRIEFLY HERE.
  4055.  
  4056.  
  4057.                                    -87-
  4058.  
  4059. ============================================================================
  4060.  
  4061. 2.2.3.1  aSSIGNMENT OF oUTPUTS
  4062.          a MAJOR FACTOR IN THE ASSIGNMENT OF OUTPUT PINS CAN BE THE ABILITY
  4063. OF THE mcs650x PROCESSOR TO INCREMENT AND DECREMENT MEMORY.  sINCE THE i/o
  4064. PORT IS TREATED AS A LOCATION IN MEMORY, THIS INCREMENTING AND DECREMENTING
  4065. CAN BE USED TO RAPIDLY SET AND CLEAR THE LOW ORDER BIT IN THIS MEMORY LOCA-
  4066. TION.  tHIS IS ILLUSTRATED IN fIGURE 2.1.
  4067.         nOTE THAT THIS DOES NOT AFFECT ANYTHING BUT THE LOW ORDER BIT IF
  4068. IT IS USED PROPERLY AS SHOWN.  tHIS OPERATION CAN BE PERFORMED MORE RAPIDLY
  4069. THAN SEVERAL OTHER SOFTWARE TECHNIQUES WHICH CAN BE USED TO AFFECT A SINGLE
  4070. BIT.  tHEREFORE, CONTROL OF A SINGLE INDICATOR, DATA LINE, ETC. CAN BE
  4071. GREATLY ENHANCED BY PUTTING IT ON THE LOW ORDER BIT OF AN i/o PORT.  tHIS
  4072. IS THE REASON THE LOW ORDER BIT OF BOTH THE nc56530 PERIPHERAL PORTS (pa0
  4073. AND pbo) PROVIDE THE ABILITY TO DRIVE TRANSISTORS DIRECTLY.  iN MANY APPLI-
  4074. CATIONS, A SIMPLE TRANSISTOR ATTACHED TO ONE OF THOSE PINS WOULD PROVIDE
  4075. VERY CONVENIENT CONTROL OF A MOTOR, LAMP, ETC.
  4076.         tHE ABILITY OF THE MICROPROCESSOR TO SHIFT DATA IN MEMORY CAN BE
  4077. ANOTHER VERY IMPORTANT FACTOR IN THE ASSIGNMENT OF OUTPUTS.  oPERATIONS
  4078. WHICH REQUIRE SEQUENTIAL STROBE SIGNALS CAN BE CONTROLLED CONVENIENTLY BY
  4079. SHIFTING A SINGLE HIGH (OR LOW) SIGNAL FROM PIN TO PIN UNDER SOFTWARE CON-
  4080. TROL.  tHE SPECIFIC CHOICE OF PINS CAN GREATLY ENHANCE THE EASE WITH WHICH
  4081. THIS SIGNAL IS CONTROLLED.
  4082.  
  4083. 2.2.3.2  aSSIGNMENT OF iNPUTS
  4084.          iN GENERAL, THE PROCESSOR DEALS WITH THE INPUT DATA FROM SWITCHES,
  4085. KEYBOARDS, ETC. BY READING THE DATA ON THE i/o PORT INTO THE INTERNAL REGIS-
  4086. TERS OF THE PROCESSOR (USUALLY THE ACCUMULATOR) AND USING THE RESULTING CON-
  4087. DITION OF FLAGS IN THE pROCESSOR sTATUS rEGISTER TO CONTROL THE PROGRAM
  4088. WHICH IS EXECUTED.  dURING THIS TRANSFER PROCESS, THE n FLAG IN THE pROCES-
  4089. SOR sTATUS rEGISTER IS SET EQUAL TO THE HIGH ORDER BIT (BIT 7) OF THE WORD
  4090. READ FROM THE i/o PORT.  tHIS n FLAG CAN THEN BE USED TO CAUSE THE PROCESSOR
  4091. TO EXECUTE DIFFERENT SECTIONS OF THE PROGRAM (sEE THE pROGRAMMING mANUAL,
  4092. cHAPTER 4, FOR A DETAILED DISCUSSION OF bRANCHING).  lIKEWISE, BY PERFORM-
  4093. ING CERTAIN INSTRUCTIONS, THE v FLAG IN THE pROCESSOR sTATUS rEGISTER CAN
  4094. BE sET EQUAL TO BIT 6 ON THE i/o PORT.  tHIS FLAG CAN THEN BE USED TO
  4095. AFFECT THE PROGRAM WHICH IS EXECUTED.
  4096.         tHIS OPERATION OF SETTING THE INTERNAL FLAGS FROM BITS 6 AND 7 OF
  4097. THE MEMORY WORD MEANS THAT MAKING THESE TWO LINES INPUTS ON AN i/o PORT
  4098.  
  4099.  
  4100.                                    -88-
  4101.  
  4102. ============================================================================
  4103.  
  4104.                            mcs6s2o data register
  4105.  
  4106.  
  4107. 1
  4108.  
  4109. loaded into          ----+---+---+---+---+---+---+----        voltage on output
  4110. mcs6520              {$7c} 0 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 1 {$7c}        pins of mcs6520
  4111. microprocessor       ----+---+---+---+---+-+-+-+-+-+--
  4112.                                            {$7c}   {$7c}   ---------> high  (>2.4v)
  4113.                                            {$7c}   -------------> low   (<0.4v)
  4114.                                            -----------------> low
  4115.  
  4116.  
  4117. 2
  4118.  
  4119. after                ----+---+---+---+---+---+---+----
  4120. decrement            {$7c} 0 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 0 {$7c}
  4121. operation            ----+---+---+---+---+-+-+-+-+-+--
  4122.                                            {$7c}   {$7c}   ---------> low
  4123.                                            {$7c}   -------------> low
  4124.                                            -----------------> low
  4125.  
  4126.  
  4127. 3
  4128.  
  4129. after                ----+---+---+---+---+---+---+----
  4130. subsequent           {$7c} 0 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 1 {$7c} 0 {$7c} 0 {$7c} 1 {$7c}
  4131. increment            ----+---+---+---+---+-+-+-+-+-+--
  4132. operation                                  {$7c}   {$7c}   ---------> high
  4133.                                            {$7c}   -------------> low
  4134.                                            -----------------> low
  4135.  
  4136.  
  4137.             cONTROL OF lOW oRDER bIT OF mcs6520 oUTPUT rEGISTER
  4138.                                 figure 2.1
  4139.  
  4140.  
  4141.                                    -89-
  4142.  
  4143. ============================================================================
  4144.  
  4145. WILL ALLOW VERY CONVENIENT TESTING OF THE CONDITION OF THE SWITCHES,
  4146. SENSORS, ETC. ATTACHED TO THESE INPUTS.  iF MORE THAN TWO INPUT SIGNALS ARE
  4147. TO BE ATTACHED TO A PORT, THE ADDITIONAL INPUTS SHOULD BE PLACED ON BIT 5,
  4148. THEN BIT 4 AND SO ON.  tHE PROCESSOR CAN THEN PERFORM OPERATIONS WHICH
  4149. SHIFT THE LOWER ORDER BITS INTO BIT 7 ONE AT A TIME AND SETS THE n FLAG
  4150. EQUAL TO THIS BIT.  aFTER EACH SHIFT THE n FLAG CAN BE USED TO DETERMINE
  4151. THE ACTUAL PROGRAM WHICH IS TO BE EXECUTED.  (sEE THE pROGRAMMING mANUAL
  4152. FOR A DISCUSSION OF THE sHIFT INSTRUCTIONS.)
  4153.         fROM THE ABOVE EXAMPLE, ONE SHOULD CONCLUDE THAT THE ASSIGNMENTS
  4154. WHICH THE DESIGNER MAKES WILL BE VERY MUCH A FUNCTION OF THE SOFTWARE TECH-
  4155. NIQUES WHICH WILL BE EMPLOYED IN CONTROLLING EACH LINE.  iT IS VERY IMPORT-
  4156. ANT THAT THE DESIGNER BE FAMILIAR WITH THESE TECHNIQUES AND THAT HE DOCU-
  4157. MENT THE TECHNIQUES WHICH HE HAS IN MIND WHEN MAKING THE ASSIGNMENTS.  tHIS
  4158. IS PARTICULARLY IMPORTANT WHEN THE SYSTEM PROGRAM IS TO BE WRITTEN BY SOME-
  4159. ONE ELSE.  aLSO, IT IS IMPORTANT THAT THOSE DOING THE SYSTEM DEVELOPMENT
  4160. WORK CONSTANTLY REVIEW THE i/o STRUCTURE TO OPTIMIZE THE SOFTWARE IN-
  4161. VOLVED AS THE SYSTEM PROGRAM IS WRITTEN.
  4162.  
  4163. 2.2.4   pOWER-oN cONSIDERATIONS
  4164.         cHAPTER 1, sECTION 1.3.3 DISCUSSES THE OPERATION OF THE SYSTEM reset
  4165. FUNCTION.  rEFERENCE IS MADE TO THE FACT THAT THIS CAN BE USED TO ASSURE
  4166. THAT ALL i/o LINES COME UP IN A KNOWN STATE WHEN POWER IS APPLIED TO THE
  4167. CHIP.  aLTHOUGH THIS IS A VERY IMPORTANT FUNCTION, THE DESIGNER MUST ASSURE
  4168. HIMSELF THAT THIS reset STATE DOES NOT ADVERSELY AFFECT THE PERIPHERAL
  4169. DEVICES.  tHIS SECTION DESCRIBES SOME OF THE PROBLEMS WHICH CAN BE ENCOUN-
  4170. TERED WHEN THE SYSTEM IS RESET AND DISCUSSES SEVERAL TECHNIQUES WHICH CAN
  4171. BE USED TO ASSURE SMOOTH POWER-UP OPERATION.
  4172.         tHE i/o LINES OF THE mcs6530 AND mcs6520 ALL ENTER THE INPUT STATE
  4173. WHEN THE RESET LINE GOES TO gnd (< 0.4v).  fOR THE mcs6530 i/o LINES, AND
  4174. FOR THE pERIPHERAL a PORT ON THE mcs6520, THESE PINS WILL GO TO +5v dc (vDD).
  4175. tHIS IS DUE TO THE OUTPUT STRUCTURE ON THESE PINS.  wHEN THESE LINES ARE IN
  4176. THE INPUT STATE, THE OUTPUT SWITCH BECOMES AN OPEN CIRCUIT BUT THE PULL-UP
  4177. DEVICE CONTINUES TO SUPPLY CURRENT TO THE PIN.
  4178.         fIGURE 2.2 SHOWS A PERIPHERAL PORT WHICH IS CONFIGURED TO DRIVE TWO
  4179. SOLENOIDS.  tHESE SOLENOIDS CAN BE CONTROLLED PROPERLY AFTER THE SYSTEM IS
  4180. INITIALIZED; HOWEVER, WHEN THE MANUAL RESET SWITCH IS ACTIVATED, BOTH i/o
  4181.  
  4182.  
  4183.                                    -90-
  4184.  
  4185. ============================================================================
  4186.  
  4187.                                             +v                 +v
  4188.               --------------                {$7c}                   {$7c}
  4189.               {$7c}            {$7c}                {$7c}                   {$7c}
  4190.               {$7c}            +--->            {$7c}                   {$7c}
  4191.               {$7c}            {$7c}                {$7c}   solenoid coils  {$7c}
  4192.               {$7c}            +--->            {$7c}                   {$7c}
  4193.               {$7c}            {$7c}        8      -+-+-+---     ---+-+-+-
  4194.               {$7c}            +---> output    {$7c} \ \ \ {$7c}     {$7c} / / / {$7c}
  4195.               {$7c} peripheral {$7c}      lines    ---+-+-+-     -+-+-+---
  4196. from   ======>{$7c} interface  +--->                  {$7c}       {$7c}
  4197. microprossor  {$7c}  device    {$7c}                      {$7c}       {$7c}
  4198.               {$7c}  mcs6520   +--->                  {$7c}       {$7c}
  4199.               {$7c}            {$7c}                      {$7c}       {$7c}
  4200.               {$7c}            +--->                 /        {$7c}
  4201.               {$7c}            {$7c}         ------    {$7c}/         {$7c}
  4202.               {$7c}            +--->-----+    +----+          {$7c}
  4203.               {$7c}            {$7c}         ------    {$7c}\         {$7c}
  4204.               {$7c}            +--->---              -        {$7c}
  4205.               {$7c}            {$7c}      {$7c}               {$7c}       {$7c}
  4206.               --------------      {$7c}               {$7c}       {$7c}
  4207.                                   {$7c}               {$7c}       {$7c}
  4208.                                   {$7c}              -+-      {$7c}
  4209.                                   {$7c}               -       {$7c}
  4210.                                   {$7c}                      /
  4211.                                   {$7c}  ------            {$7c}/
  4212.                                   ---+    +------------+
  4213.                                      ------            {$7c}\
  4214.                                                          -
  4215.                                                           {$7c}
  4216.                                                           {$7c}
  4217.                                                           {$7c}
  4218.                                                          -+-
  4219.                                                           -
  4220.  
  4221.  
  4222.               mcs6520 cONTROL OF tRANSISTOR dRIVEN sOLENOIDS
  4223.                                 figure 2.2
  4224.  
  4225.  
  4226.                                    -91-
  4227.  
  4228. ============================================================================
  4229.  
  4230. LINES ENTER THE INPUT STATE, THE TRANSISTORS SATURATE (CLOSE) AND THE SOLE-
  4231. NOIDS ARE ACTIVATED.  tHIS CAN BE CATASTROPHIC IN MOST MECHANICAL SUBSYS-
  4232. TEMS, SO IT IS IMPORTANT THAT THIS POTENTIAL CONDITION BE UNDERSTOOD AND
  4233. PREVENTED.  fIGURE 2.3 SHOWS TWO SATISFACTORY SOLUTIONS TO THIS PROBLEM.
  4234. tHE FIRST, fIGURE 2.3A, REQUIRES THAT A "0" BE WRITTEN INTO THE OUTPUT LINE
  4235. BY THE PROCESSOR TO ACTUATE THE SOLENOIDS.  tHIS ASSURES THAT THE SOLENOIDS
  4236. WILL NOT BE POWERED SIMULTANEOUSLY WHEN THE MANUAL RESET SWITCH IS PRESSED.
  4237. hOWEVER, IT DOES INTRODUCE ANOTHER POTENTIAL PROBLEM.  WHEN THE RESET LINE
  4238. ON THE PERIPHERAL INTERFACE DEVICE GOES LOW (< 0.4v), THE CONTENTS OF BOTH
  4239. THE pERIPHERAL dATA REGISTER AND THE dATA dIRECTION REGISTER ARE CLEARED TO
  4240. ZEROS.  iF THE dATA dIRECTION REGISTER IS SET TO 1'S, BOTH SOLENOIDS WILL
  4241. IMMEDIATELY ACTUATE DUE TO THE 0 STORED IN THE pERIPHERAL dATA REGISTER.
  4242. tHIS CAN BE AVOIDED COMPLETELY IF THE SYSTEM SOFTWARE FIRST SETS THE BITS
  4243. IN THE pERIPHERAL dATA REGISTER TO A 1 AND THEN SETS THE dATA dIRECTION
  4244. REGISTER TO A 1.  tHE i/o PIN WILL GO HIGH WHEN THE RESET SWITCH IS ACTUATED
  4245. AND WILL SIMPLY STAY HIGH THROUGH THE INITIALIZATION ROUTINE.
  4246.     fIGURE 2.3B ILLUSTRATES A SOLUTION WHICH MAY BE MORE APPLICABLE TO A
  4247. LARGE SYSTEM OR A COMPLEX PERIPHERAL.  iN THIS APPROACH, A SEPARATE OUTPUT
  4248. LINE IS USED TO APPLY POWER TO THE PERIPHERAL DEVICE.  tHE POWER TO THE
  4249. ENTIRE PERIPHERAL OR TO JUST THE CRITICAL ELEMENTS IS KEPT OFF UNTIL THE
  4250. ENTIRE SYSTEM IS INITIALIZED AND IS READY TO RUN THE SYSTEM PROGRAM.
  4251.     oN THE mcs6520 pERIPHERAL b PORT, THE i/o LINES ARE OPEN CIRCUIT
  4252. (HIGH IMPEDANCE) IN THE INPUT STATE.  aS A RESULT, THE CONFIGURATION IN
  4253. fIGURE 2.2 WILL NOT CAUSE THE SAME PROBLEM ON THE mcs6520 pERIPHERAL b PORT
  4254. AS WOULD BE EXPECTED ON THE mcs6530.  iN THE INPUT STATE, THE i/o PIN IS
  4255. INCAPABLE OF SCURCING ANY MORE THAN A FEW MICROAMPS.
  4256.     hOWEVER, IF ONE WERE TO USE A SOLENOID DRIVER AS SHOWN IN fIGURE 2.4,
  4257. THE ttl INPUT STRUCTURE ON THE DRIVERS WOULD INTERPRET THE HIGH-IMPEDANCE
  4258. STATE AS A LOGIC 1 AND WOULD ACTUATE THE SOLENOIDS.  bOTH THE SOLUTIONS IN
  4259. fIGURE 2.3 WOULD BE SATISFACTORY IN THIS CASE.  hOWEVER, THE TRANSISTORS
  4260. ARE CONNECTED TO THE ttl BUFFER.  iN ADDITION, THE EXTRA OUTPUT SHOWN IN
  4261. fIGURE 2.3B, CONTROLLING POWER TO THE PERIPHERAL DEVICE, COULD ACTUALLY BE
  4262. USED TO ENABLE THE SOLENOID DRIVERS IF AN ENABLE INPUT IS AVAILABLE TO
  4263. THESE DEVICES.  tHIS CONFIGURATION IS ILLUSTRATED IN fIGURE 2.5.
  4264.  
  4265.  
  4266.                                    -92-
  4267.  
  4268. ============================================================================
  4269.  
  4270.                        --------------
  4271.                        {$7c}            {$7c}
  4272.                        {$7c}            +---> 8 output        +v
  4273.                        {$7c}            {$7c}     lines           {$7c}
  4274.                        {$7c}            +--->                 {$7c}
  4275.                        {$7c}            {$7c}                     {$7c}
  4276.                        {$7c}            +--->                /
  4277.   mcs6520 cONTROL OF   {$7c} peripheral {$7c}         ------   {$7c}-
  4278. pnp tRANSISTOR DRIVING {$7c} interface  +--->  ---+    +---+
  4279.     sOLENOID cOIL      {$7c}  device    {$7c}      {$7c}  ------   {$7c}\
  4280.                        {$7c}  mcs6520   +--->  {$7c}             \
  4281.      figure 2.3a       {$7c}            {$7c}      {$7c}              {$7c}
  4282.                        {$7c}            +--->  {$7c}              {$7c}
  4283.                        {$7c}            {$7c}      {$7c}              {$7c}
  4284.                        {$7c}            +--->---             -+-+-+---
  4285.                        {$7c}            {$7c}                    {$7c} \ \ \ {$7c}
  4286.                        {$7c}            +--->---             ---+-+-+-    +v
  4287.                        {$7c}            {$7c}      {$7c}                    {$7c}     {$7c}
  4288.                        --------------      {$7c}                   -+-    {$7c}
  4289.                                            {$7c}  solenoid          -     {$7c}
  4290.                                            {$7c}    coil                  {$7c}
  4291.                                            {$7c}                         /
  4292.                                            {$7c}  ------               {$7c}-
  4293.                                            ---+    +---------------+
  4294.                                               ------               {$7c}\
  4295.                                                                      \
  4296.                                                                       {$7c}
  4297.                                                                       {$7c}
  4298.                                                                      -+-+-+---
  4299.                                                                      {$7c} \ \ \ {$7c}
  4300.                                                                      ---+-+-+-
  4301.                                                                             {$7c}
  4302.                                                                             {$7c}
  4303.                                                                            -+-
  4304.                                                                             -
  4305.  
  4306.                                                                 +v
  4307.                                                                 {$7c}
  4308.                                                                 {$7c}
  4309.                                                                /
  4310.                                    8 output   ------         {$7c}-   power control
  4311.                                      lines ---+    +---------+    transistor
  4312.                        --------------      {$7c}  ------         {$7c}\
  4313.                        {$7c}            {$7c}      {$7c}                   \
  4314.                        {$7c}            +--->  {$7c}                    {$7c}
  4315.                        {$7c}            {$7c}      {$7c}                    +-----------
  4316.                        {$7c}            +--->  {$7c}                    {$7c}          {$7c}
  4317.                        {$7c}            {$7c}      {$7c}             ---+-+-+-  ---+-+-+-
  4318.                        {$7c}            +--->  {$7c}             {$7c} / / / {$7c}  {$7c} / / / {$7c}
  4319.   mcs6520 cONTROLLING  {$7c} peripheral {$7c}      {$7c}             -+-+-+---  -+-+-+---
  4320. bOTH pOWER AND dRIVERS {$7c} interface  +--->  {$7c}              {$7c}          {$7c}
  4321.    OF sOLENOID cELL    {$7c}  device    {$7c}      {$7c}              {$7c}          {$7c}
  4322.                        {$7c}  mcs6520   +--->  {$7c}              {$7c}          {$7c}
  4323.      figure 2.3b       {$7c}            {$7c}      {$7c}              {$7c}          {$7c}
  4324.                        {$7c}            +--->---             /           {$7c}
  4325.                        {$7c}            {$7c}         ------   {$7c}/            {$7c}
  4326.                        {$7c}            +--->-----+    +---+             {$7c}
  4327.                        {$7c}            {$7c}         ------   {$7c}\            {$7c}
  4328.                        {$7c}            +--->---             -           {$7c}
  4329.                        {$7c}            {$7c}      {$7c}              {$7c}          {$7c}
  4330.                        --------------      {$7c}              {$7c}          {$7c}
  4331.                                            {$7c}             -+-         {$7c}
  4332.                                            {$7c}              -          {$7c}
  4333.                                            {$7c}                        /
  4334.                                            {$7c}  ------              {$7c}/
  4335.                                            ---+    +--------------+
  4336.                                               ------              {$7c}\
  4337.                                                                     -
  4338.                                                                      {$7c}
  4339.                                                                      {$7c}
  4340.                                                                     -+-
  4341.                                                                      -
  4342.  
  4343.  
  4344.                        --------------
  4345.                        {$7c}            {$7c}
  4346.                        {$7c}            +--->
  4347.                        {$7c}            {$7c}                           +v
  4348.                        {$7c}            +--->                        {$7c}
  4349.                        {$7c}            {$7c}                            {$7c}
  4350.                        {$7c}            +--->                 ---+-+-+-
  4351.   mcs6520 cONTROLLING  {$7c} peripheral {$7c}                     {$7c} / / / {$7c}
  4352. bOTH pOWER AND dRIVERS {$7c} interface  +--->                 -+-+-+---
  4353.    OF sOLENOID cELL    {$7c}  device    {$7c}                      {$7c}      solenoid
  4354.                        {$7c}  mcs6520   +--->                  {$7c}        coils
  4355.      figure 2.3b       {$7c}            {$7c}                      {$7c}
  4356.                        {$7c}            +--->      {$7c}\         /             +v
  4357.                        {$7c}            {$7c}          {$7c} \      {$7c}/               {$7c}
  4358.                        {$7c}            +--->------+  >-----+                {$7c}
  4359.                        {$7c}            {$7c}          {$7c} /      {$7c}\        ---+-+-+-
  4360.                        {$7c}            +--->---   {$7c}/         -       {$7c} / / / {$7c}
  4361.                        {$7c}            {$7c}      {$7c}               {$7c}      -+-+-+---
  4362.                        --------------      {$7c}    ttl        {$7c}       {$7c}
  4363.                                            {$7c}  buffers     -+-      {$7c}
  4364.                                            {$7c}               -       {$7c}
  4365.                                            {$7c}   {$7c}\                 /
  4366.                                            {$7c}   {$7c} \              {$7c}/
  4367.                                            ----+  >-------------+
  4368.                                                {$7c} /              {$7c}\
  4369.                                                {$7c}/                 -
  4370.                                                                    {$7c}
  4371.                                                                    {$7c}
  4372.                                                                   -+-
  4373.                                                                    -
  4374.  
  4375.  
  4376.                                    -93-
  4377.  
  4378. ============================================================================
  4379.  
  4380. --------------                                        +v                 +v
  4381. {$7c}            {$7c}                                        {$7c}                   {$7c}
  4382. {$7c}            +--->                                    {$7c}   solenoid coils  {$7c}
  4383. {$7c}            {$7c}                                        {$7c}                   {$7c}
  4384. {$7c}            +--->                                   -+-+-+---     ---+-+-+-
  4385. {$7c}            {$7c}          8                            {$7c} \ \ \ {$7c}     {$7c} / / / {$7c}
  4386. {$7c}            +--->   output                          ---+-+-+-     -+-+-+---
  4387. {$7c} peripheral {$7c}        lines                                 {$7c}       {$7c}
  4388. {$7c} interface  +--->                                          {$7c}       {$7c}
  4389. {$7c}  device    {$7c}                                              {$7c}       {$7c}
  4390. {$7c}  mcs6520   +--->                                          {$7c}       {$7c}
  4391. {$7c}            {$7c}                               ------        /        {$7c}
  4392. {$7c}            +--->---------------------------+     \     {$7c}/         {$7c}
  4393. {$7c}            {$7c}                               {$7c} and  )----+          {$7c}
  4394. {$7c}            +--->------------            ---+     /     {$7c}\         {$7c}
  4395. {$7c}            {$7c}               {$7c}    {$7c}\      {$7c}  ------        -        {$7c}
  4396. {$7c}            +--->------     {$7c}    {$7c} \     {$7c}                 {$7c}       {$7c}
  4397. {$7c}            {$7c}         {$7c}     -----+  >o---+                 {$7c}       {$7c}
  4398. --------------         {$7c}          {$7c} /     {$7c}                -+-      {$7c}
  4399.                        {$7c}          {$7c}/      {$7c}                 -       {$7c}
  4400.                        {$7c}                  {$7c}  ------                /
  4401.                        {$7c}                  ---+     \             {$7c}/
  4402.                        {$7c}                     {$7c} and  )------------+
  4403.                        ----------------------+     /             {$7c}\
  4404.                                              ------                -
  4405.                                                                     {$7c}
  4406.                                               ttl                   {$7c}
  4407.                                              gates                 -+-
  4408.                                                                     -
  4409.  
  4410.       mcs6520 cONTROLLING sOLENOIDS WITH eNABLE sIGNAL AND ttl iNTERFACE
  4411.                                 figure 2.2
  4412.  
  4413.  
  4414. 2.2.5   hANDSHAKING
  4415.         tHE mcs6520 PROVIDES BOTH INTERRUPT CONTROL AND DATA TRANSFER CON-
  4416. TROL CAPABILITY.  tHE TECHNIQUE FOR CONTROLLING THE TRANSFER OF DATA BE-
  4417. TWEEN THE PROCESSOR AND A PERIPHERAL DEVICE IS REFERRED TO AS HANDSHAKING.
  4418. iN THIS PROCEDURE, EACH DEVICE (THE PROCESSOR OR PERIPHERAL) IS CAPABLE OF
  4419. SIGNALLING THE OTHER THAT ITS OPERATION IS COMPLETE.  tHE SEQUENCE DIFFERS
  4420. SOMEWHAT FOR TRANSFERS INTO OR OUT OF THE PROCESSOR, SO THEY WILL BE DIS-
  4421. CUSSED SEPARATELY BELOW.
  4422.  
  4423. 2.2.5.1  hANDSHAKING ON dATA tRANSFERS FROM THE pROCESSOR
  4424.          tHE TRANSFER OF DATA OUT OF THE PROCESSOR INTO A PERIPHERAL DEVICE
  4425. IS PERFORMED BY FIRST WRITING THE DATA INTO THE DATA REGISTER WITHIN THE
  4426. mcs6520.  tHIS DATA THEN APPEARS ON THE PERIPHERAL OUTPUT LINES WHERE IT
  4427. CAN BE READ BY THE PERIPHERAL DEVICE FOR STORAGE, DISPLAY, ETC.
  4428.  
  4429.  
  4430.                                    -94-
  4431.  
  4432. ============================================================================
  4433.  
  4434.         cONTROL OF THIS DATA TRANSFER BY HANDSHAKING REQUIRES FIRST THAT
  4435. THE PROCESSOR SIGNAL THE PERIPHERAL DEVICE THAT DATA IS AVAILABLE ON THE
  4436. i/o PORT.  tHE PERIPHERAL DEVICE THEN READS THIS DATA AND SIGNALS TO THE
  4437. PROCESSOR THAT THE DATA HAS BEEN TAKEN AND THAT NEW DATA CAN BE MADE AVAIL-
  4438. ABLE.  tHE PROCESSOR THEN MAKES NEW DATA AVAILABLE AND THE CYCLE IS RE-
  4439. PEATED.
  4440.         aS DESCRIBED IN cHAPTER 1, THE pERIPHERAL b iNTERFACE pORT ON THE
  4441. mcs6520 IS DESIGNED TO PERFORM HANDSHAKING ON write OPERATIONS.  tHE cb2
  4442. PERIPHERAL CONTROL LINE CAN BE PROGRAMMED TO ACT AS AN OUTPUT WHICH GOES
  4443. LOW EACH TIME THE PROCESSOR WRITES DATA ONTO THE pERIPHERAL b i/o PORT.
  4444. tHIS IS THE SIGNAL WHICH IS USED TO TELL THE PERIPHERAL DEVICE THAT DATA IS
  4445. AVAILABLE ON THESE OUTPUT LINES.
  4446.         tHE cb2 OUTPUT LINE WILL STAY LOW UNTIL THE PERIPHERAL DEVICE SIG-
  4447. NALS THE PROCESSOR THAT THE DATA IS TAKEN.  tHIS IS ACCOMPLISHED BY INTER-
  4448. RUPTING THE PROCESSOR THROUGH THE cb1 INTERRUPT INPUT.
  4449.         tHE SEQUENCE WHICH TAKES PLACE DURING THE "write" HANDSHAKING
  4450. OPERATION DESCRIBED ABOVE IS SHOWN IN fIGURE 2.6.
  4451.  
  4452. 2.2.5.2  hANDSHAKING ON dATA tRANSFERS INTO THE pROCESSOR
  4453.          tHE pERIPHERAL a i/o PORT ON THE mcs6520 IS DESIGNED TO HANDSHAKE
  4454. ON DATA TRANSFERS FROM THE PERIPHERAL DEVICE INTO THE PROCESSOR.  iN THIS
  4455. SEQUENCE, THE PERIPHERAL DEVICE MUST SIGNAL THE PROCESSOR THAT DATA IS
  4456. AVAILABLE AND THE PROCESSOR MUST SIGNAL BACK THAT DATA WAS TAKEN.  tHIS IS
  4457. BASICALLY THE SAME SEQUENCE AS THAT PERFORMED IN THE PREVIOUS OPERATION.
  4458. tHE ca1 INTERRUPT INPUT IS USED TO INTERRUPT THE PROCESSOR TO INDICATE THAT
  4459. THERE IS DATA AVAILABLE ON THE pERIPHERAL a i/o PORT.  tHE PERIPHERAL DE-
  4460. VICE MUST THEN HOLD THAT DATA THERE UNTIL THE PROCESSOR READS IT INTO ITS
  4461. INTERNAL REGISTERS.  WHEN THE PROCESSOR READS THE pERIPHERAL a i/O PORT,
  4462. THE ca2 PERIPHERAL CONTROL LINE GOES LOW TO SIGNAL TO THE PERIPHERAL DEVICE
  4463. THAT THE DATA HAS BEEN TAKEN AND NEW DATA CAN BE MADE AVAILABLE.  tHIS EN-
  4464. TIRE SEQUENCE IS SHOWN IN fIGURE 2.7.
  4465.         tHE HANDSHAKING OPERATIONS DESCRIBED ABOVE CAN BE AN EXTREMELY
  4466. POWERFUL TECHNIQUE FOR INTERFACING DATA STORAGE DEVICES OR, IN GENERAL, ANY
  4467. DEVICE WHICH MUST TRANSFER BLOCKS OF DATA AND WHICH HAS A VARIABLE RE-
  4468. SPONSE TIME.  iF THE PROCESSOR CANNOT PREDICT THE SPEED WITH WHICH THE
  4469. PERIPHERAL TAKES DATA, FOR INSTANCE, IT MUST RELY ON THE PERIPHERAL TO
  4470. SIGNAL THAT IT HAS DONE SO.
  4471.  
  4472.  
  4473.                                    -95-
  4474.  
  4475. ============================================================================
  4476.  
  4477.         iNITIATING THE DATA TRANSFER SEQUENCE IS USUALLY ACCOMPLISHED
  4478. THROUGH A SET OF i/o LINES SEPARATE FROM THE PORT WHICH IS TRANSFERRING
  4479. THE DATA.  hOWEVER, ONCE THE SEQUENCE IS UNDER WAY, THE PROCESSOR MUST
  4480. DEAL WITH THE PERIPHERAL DEVICE ONLY WHEN AN INTERRUPT HAS OCCURRED.
  4481. tHIS ALLOWS THE PROCESSOR TO EXECUTE THE PRIMARY SYSTEM PROGRAM WHILE
  4482. STILL SERVICING THESE PERIPHERAL DEVICES.
  4483.  
  4484.  
  4485.                                    -96-
  4486.  
  4487. ============================================================================
  4488.  
  4489.           --   -----   -----   -----   -----   -----   -----   -----
  4490. enable     {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}   {$7c}
  4491.            -----   -----   -----   --//-   -----   -----   -----   --
  4492.  
  4493.             1
  4494.           -- ------- ----------------//------------------------------
  4495. address     x       x
  4496.           -- ------- ----------------//------------------------------
  4497.  
  4498.  
  4499.           ---      ------------------//------------------------------
  4500. r/w        1{$7c}      {$7c}
  4501.             --------
  4502.  
  4503.                  __
  4504.                2/  \
  4505. data bus  -----<    >----------------//------------------------------
  4506.                 \__/
  4507.  
  4508.  
  4509.           --------- -----------------//------------------------------
  4510. peripheral       3 x
  4511. data      --------- -----------------//------------------------------
  4512.  
  4513.  
  4514.           ----------------                                   --------
  4515. cb2                      {$7c}                                  6{$7c}
  4516.                          ------------//-----------------------
  4517.  
  4518.  
  4519.           ---------------------------//------------------- ----------
  4520. cb1                                                     5 x
  4521.           ---------------------------//------------------- ----------
  4522.  
  4523.  
  4524. 1.  pROCESSOR PUTS OUT ADDRESS OF PERIPHERAL DEVICE AND CHANGES r/w
  4525.     SIGNAL TO WRITE ENABLE (LOW).
  4526.  
  4527. 2.  dURING PHASE TWO PROCESSOR PUTS OUT DATA ON dATA bUS.
  4528.  
  4529. 3.  dATA FROM THE PROCESSOR IS ACCEPTED BY THE mcs6520 ON THE
  4530.     FALLING EDGE OF THE ENABLE CLOCK.
  4531.  
  4532. 4.  pERIPHERAL iNTERFACE DEVICE NOW BEGINS THE HANDSHAKE BY SIGNALING THE
  4533.     PERIPHERAL DEVICE THAT DATA IS AVAILABLE TO READ ON THE OUTPUT PORT.
  4534.  
  4535. 5.  wHEN THE EXTERNAL PERIPHERAL DEVICE READS THE DATA ON THE OUTPUT
  4536.     PORT IT WILL RESPOND BY A CHANGE IN cb1.
  4537.  
  4538. 6.  tHIS CHANGE IN cb1 IS FOLLOWED BY A POSITIVE TRANSITION OF cb2
  4539.     SIGNALLING THE PROCESSOR THAT DATA WAS ACCEPTED.
  4540.  
  4541.  
  4542.                           wRITE HANDSHAKE sEQUENCE
  4543.                                 figure 2.6
  4544.  
  4545.  
  4546.                                    -97-
  4547.  
  4548. ============================================================================
  4549.             ------    ------    ------    ------    ------    -----
  4550. enable      {$7c}    {$7c}    {$7c}    {$7c}    {$7c}    {$7c}    {$7c}    {$7c}    {$7c}    {$7c}    {$7c}
  4551.           ---    ------    ------    ------    ------    ------
  4552.  
  4553.  
  4554.           ----- ---------------------------------------------------
  4555. peripheral   1 x
  4556. data      ----- ---------------------------------------------------
  4557.  
  4558.  
  4559.           --------- -----------------------------------------------
  4560. ca1              2 x
  4561.           --------- -----------------------------------------------
  4562.  
  4563.  
  4564.           ---------------------------- ----------------------------
  4565. address                             5 x
  4566.           ---------------------------- ----------------------------
  4567.  
  4568.  
  4569.                                      ------------------------------
  4570. r/w                                  {$7c}
  4571.           ----------------------------
  4572.  
  4573.                                              __
  4574.                                           6 /  \
  4575. data bus  ---------------------------------<    >------------------
  4576.                                             \__/
  4577.  
  4578.                     ---------------------------
  4579. ca2              3 /                           \ 7
  4580.           ---------                             -------------------
  4581.  
  4582.  
  4583. 1.  nEW dATA IS PUT OUT BY PERIPHERAL DEVICE.
  4584.  
  4585. 2.  tHE PERIPHERAL INTERFACE DEVICE IS SIGNALED BY ca1 THAT THE
  4586.     NEW DATA IS READY TO BE READ AT THE INPUT PORT.
  4587.  
  4588. 3.  ca2 IS PUT IN THE HIGH STATE.
  4589.  
  4590. 4.  tHE PROCESSOR IS SIGNALLED THAT NEW DATA IS READY TO BE READ
  4591.     BY A LOW LEVEL ON THE irq LINE.
  4592.  
  4593. 5.  tHE PROCESSOR BEGINS SERVICING THE iNTERRUPT REQUEST AND DURING
  4594.     THE ROUTINE THE PROCESSOR WILL PUT OUT THE READ SIGNAL AND THE
  4595.     aDDRESS OF THE pERIPHERAL iNTERFACE DEVICE.
  4596.  
  4597. 6.  tHE pERIPHERAL INTERFACE WILL TRANSFER THE NEW DATA FROM THE PERIPHERAL
  4598.     DEVICE TO THE MICROPROCESSOR THROUGH THE DATA BUS.
  4599.  
  4600. 7.  wHEN dATA HAS BEEN TRANSFERRED THE PERIPHERAL DEVICE WILL BE SIGNALED
  4601.     BY ca2 GOING LOW.
  4602.  
  4603.  
  4604.                          rEAD hANDSHAKE sEQUENCE
  4605.                                 figure 2.7
  4606.  
  4607.  
  4608.                                    -98-
  4609.  
  4610. ============================================================================
  4611.  
  4612. 2.3 configumng the interface between the microprocessor and the support chips.
  4613.     tHE SYSTEM BLOCK DIAGRAM (fIGURE 2.8) SHOWS THE BASIC DATA PATHS WHICH AL-
  4614. LOW THE mcs6500 SYSTEM TO OPERATE.  dATA bUS, aDDRESS bUS, r/w SIGNAL, ETC. ARE
  4615. SHOWN AS SIMPLE CONNECTIONS BETWEEN THE VARIOUS CHIPS IN THE SYSTEM.  aLTHOUGH
  4616. THESE DATA PATHS WILL EXIST IN ANY SYSTEM, NO MATTER HOW COMPLEX, EACH ELEMENT
  4617. OF THE MICROPROCESSOR INTERFACE MUST BE EXAMINED TO ASSURE THAT EACH CHIP IS
  4618. PROPERLY DRIVEN WITH SIGNALS WHICH MEET ALL SPECIFICATIONS FOR THE DEVICE, TO
  4619. ASSURE THAT THE INTER-CHIP TIMING IS PROPER AND TO ASSURE THAT THE OVERALL SYS-
  4620. TEM IS OPERATING AS REQUIRED.
  4621.  
  4622.     2.3.1   aSSIGNMENT OF aDDRESSES IN THE nc56500 sYSTEM
  4623.         tHE ONLY METHOD WHICH THE MICROPROCESSOR HAS FOR SELECTING BETWEEN
  4624.     THE VARIOUS ramS, romS, ETC. IN A SYSTEM IS THROUGH THE ADDRESS OUTPUT
  4625.     LINES.  fOR THIS REASON, THE DESIGNER MUST USE THESE LINES VERY CAREFULLY
  4626.     TO ACHIEVE MINIMUM SYSTEM COST AND TO ASSURE SATISFACTORY SYSTEM PERFOR-
  4627.     MANCE.
  4628.         bEFORE LOOKING AT HOW THE ADDRESS LINES CAN BE CONFIGURED TO MINIMIZE
  4629.     TOTAL SYSTEM COST OR PROGRAM EXECUTION TIME, THE DESIGNER SHOULD UNDERSTAND
  4630.     HOW THE BINARY VALUE ASSOCIATED WITH EACH ADDRESS LINE IS RELATED TO THE
  4631.     TOTAL ADDRESS SPACE AVAILABLE TO THE MICROPROCESSOR AND HOW THE and FUNC-
  4632.     TION OF VARIOUS ADDRESS LINES CAN BE USED TO SELECT LARGE BLOCKS OF AD-
  4633.     DRESSES.  fIGURE 2.9 ILLUSTRATES THE STATE OF THE THREE HIGH-ORDER ADDRESS
  4634.     LINES FOR THE ENTIRE ADDRESS SPACE AVAILABLE TO THE mcs650x.  nOTE THAT THE
  4635.     HIGHEST ORDER ADDRESS LINE IS A LOGIC 1 FOR EXACTLY HALF OF THE AVAILABLE
  4636.     ADDRESS.  tHE and FUNCTION OF THE TWO HIGHEST ORDER ADDRESS LINES IS A
  4637.     LOGIC 1 FOR ONE-FOURTH OF THE AVAILABLE ADDRESSES, AND SO FORTH.  fIGURE 2.9
  4638.     ALSO ILLUSTRATES SEVERAL and FUNCTIONS DERIVED FROM THE THREE HIGHEST ORDER
  4639.     ADDRESS LINES.  eACH IS TRUE FOR A DIFFERENT BLOCK OF THE AVAILABLE AD-
  4640.     DRESSES.
  4641.         gENERATION OF THE and FUNCTION OF VARIOUS HIGH ORDER ADDRESS LINES
  4642.     IS EXTREMELY IMPORTANT BECAUSE OF THE CHIP SELECT TECHNIQUES EMPLOYED ON
  4643.     THE PROCESSOR SUPPORT CHIPS.  aS DESCRIBED IN cHAPTER 1, sECTION 1.5.2.4,
  4644.     THE mcs6520 HAS THREE CHIP-SELECT LINES.  tHE ENTIRE CHIP IS SELECTED FOR
  4645.     READING OR WRITING DATA WHEN cs1 AND cs2 ARE HIGH (> 2.4V) AND cs3 IS LOW
  4646.  
  4647.  
  4648.                                    -99-
  4649.  
  4650. ============================================================================
  4651.  
  4652.  
  4653.  
  4654.                 [ bLOCKDIAGRAM OF cpu, ram, rom, i/o AND dma ]
  4655.  
  4656.  
  4657.  
  4658.                     oRGANIZATION OF mICROCOMPUTER sYSTEM
  4659.                                 figure 2.8
  4660.  
  4661.  
  4662.                                    -100-
  4663.  
  4664. ============================================================================
  4665.  
  4666.  
  4667.  
  4668.             eXAMPLE OF 'and" fUNCTION uSING hIGH oRDER aDDRESS lINES
  4669.                                 figure 2.9
  4670.  
  4671.  
  4672.                                    -101-
  4673.  
  4674. ============================================================================
  4675.  
  4676. (< 0.4v).  sELECTION OF THE ADDRESS LINES WHICH ENABLE THE VARIOUS CHIPS
  4677. IN THE SYSTEM IS A VERY BASIC BUT VERY IMPORTANT PART OF THE SYSTEM CON-
  4678. FIGURATION TASK.
  4679.        iT IS IMPORTANT TO NOTE HERE THAT VERY FEW MICROPROCESSOR-BASED SYS-
  4680. TEMS ACTUALLY REQUIRE THAT THE PROCESSORS BE ABLE TO ACCESS A FULL 65,536
  4681. WORDS.  iN FACT, MOST SYSTEMS CAN BE PROGRAMMED IN LESS THAN 2,000 WORDS
  4682. FOR PROGRAM AND DATA MEMORY.  tHE FULL ADDRESS SPACE IS MADE AVAILABLE PRI-
  4683. MARILY BECAUSE IT ALLOWS THE CONFIGURATION OF SYSTEMS WITH AN ABSOLUTE
  4684. MINIMUM OF SEPARATE DECODING CHIPS BETWEEN THE PROCESSOR AND THE SUPPORT
  4685. CHIPS.  iT IS POSSIBLE TO ASSIGN ANY BLOCK OF ADDRESS TO EACH TYPE OF CHIP
  4686. (ram, rom, PERIPHERAL INTERFACE CHIPS, ETC.) IN THE SYSTEM.  hOWEVER, EACH
  4687. OF THE ASSIGNED ADDRESSES MUST BE MUTUALLY EXCLUSIVE.  oNLY ONE OF THE SUP-
  4688. PORT CHIPS SHOULD BE SELECTED FOR EVERY ADDRESS USED IN THE SYSTEM PROGRAM.
  4689.  
  4690. 2.3.1.1  rom aDDRESS aSSIGNMENT
  4691.          tHE ASSIGNMENT OF rom ADDRESSES IS DICTATED BY THE FACT THAT THE
  4692. INTERRUPT AND reset VECTORS MUST BE LOCATED IN THE 6 HIGH-ORDER WORDS IN
  4693. MEMORY.  tHESE ARE FIXED VECTORS AND MUST BE STORED PERMANENTLY IN THESE
  4694. LOCATIONS.  fOR THIS REASON, THE PROGRAM MEMORY (USUALLY rom) IS USUALLY
  4695. ASSIGNED THE HIGH ORDER ADDRESSES.  iN FACT, THE RECOMMENDED PROCEDURE IS
  4696. TO USE a15 (a12 FOR mcs6504 AND a11 FOR mcs6503 AND mcs6505) TO SELECT
  4697. PROGRAM rom.
  4698.  
  4699. 2.3.1.2  ram aDDRESS aSSIGNMENT
  4700.          tHERE ARE SEVERAL FACTORS WHICH DETERMINE THE LOCATION OF THE ram
  4701. IN AN mcs650x-BASED SYSTEM.  dATA STORED IN MEMORY UNDER CONTROL OF THE IN-
  4702. TERNAL PROCESSOR sTACK pOINTER WILL ALWAYS GO INTO pAGE oNE (adh = 01).
  4703. aLSO, THE ENTIRE SET OF pAGE zERO ADDRESSING MODES RELIES ON THERE BEING
  4704. DATA STORAGE ram IN pAGE zERO.  fOR THIS REASON, THE ram IN A mcs650x-BASED
  4705. SYSTEM SHOULD BE PLACED IN THE LOW ORDER ADDRESSES IN MEMORY.
  4706.         wITH THE ram IN LOW ORDER MEMORY AND THE rom IN HIGH ORDER MEMORY,
  4707. THE PERIPHERAL INTERFACE DEVICES MUST GO SOMEWHERE IN BETWEEN.  tHIS IS
  4708.                                                                ___
  4709. ACCOMPLISHED IN fIGURE 2.10 BY USING a15 X a14 TO SELECT romS, a15 TO SELECT ram,
  4710.           ___
  4711. AND a15 . a14 TO SELECT ALL PERIPHERAL INTERFACE DEVICES.  tHIS ALLOWS DIF-
  4712. FERENTIATION BETWEEN THE TYPES OF SUPPORT CHIPS.  tHE ADDRESSING STRUCTURE
  4713. CAN BE COMPLETED BY ALLOWING FOR SELECTION OF EACH CHIP IN THE GROUPS.
  4714.  
  4715.  
  4716.                                    -102-
  4717.  
  4718. ============================================================================
  4719.  
  4720.                                                               --------
  4721. ---------------                                         ------+cs    {$7c}
  4722. {$7c}             {$7c}                                         {$7c}     {$7c}      {$7c}
  4723. {$7c}          a15+-----------------------------------------O     {$7c}rom   {$7c}
  4724. {$7c}             {$7c}                                         {$7c}     {$7c}      {$7c}
  4725. {$7c}          a14+--------------------------------------O--+-----+cs    {$7c}
  4726. {$7c}             {$7c}                                      {$7c}  {$7c}     --------
  4727. {$7c}          a13+------------------------------------  {$7c}  {$7c}
  4728. {$7c}             {$7c}                                   {$7c}  {$7c}  {$7c}
  4729. {$7c}          a12+---------------------------------  {$7c}  {$7c}  {$7c}     --------
  4730. {$7c}             {$7c}                                {$7c}  {$7c}  {$7c}  {$7c}     {$7c}      {$7c}
  4731. {$7c}          a11+------------------------------  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}ram   {$7c}
  4732. {$7c}             {$7c}                             {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}__    {$7c}
  4733. {$7c}          a10+---------------------------  {$7c}  {$7c}  {$7c}  {$7c}  O-----+cs    {$7c}
  4734. {$7c}             {$7c}                          {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}      {$7c}
  4735. {$7c}          a9 +------------------------  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     --------
  4736. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  4737. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  4738. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     --------
  4739. {$7c}     micro   {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  O-----+cs1   {$7c}
  4740. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}      {$7c}
  4741. {$7c}  processor  {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  O--+--+-----+cs2   {$7c}mcs6520
  4742. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}___   {$7c}
  4743. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  O--+-----+cs3   {$7c}
  4744. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     --------
  4745. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  4746. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  4747. {$7c}             {$7c}                       {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     --------
  4748. {$7c}          a0 +---                    {$7c}  {$7c}  {$7c}  O--+--+--+-----+cs1   {$7c}
  4749. {$7c}             {$7c}  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}      {$7c}
  4750. ---------------  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  O-----+cs2   {$7c}mcs6520
  4751.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}___   {$7c}
  4752.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  O--+-----+cs3   {$7c}
  4753.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     --------
  4754.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  4755.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  4756.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     --------
  4757.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  O-----+cs1   {$7c}
  4758.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}      {$7c}
  4759.                  {$7c}                    {$7c}  {$7c}  O--+--+--+--+-----+cs2   {$7c}mcs6520
  4760.                  {$7c}         a0         {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     {$7c}___   {$7c}
  4761.                  {$7c}        thru        {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  O--+-----+cs3   {$7c}
  4762.                  {$7c}         a9         {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}     --------
  4763.                  {$7c}<------------------>{$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  4764.                  {$7c}                    {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  4765.                  V                    V  V  V  V  V  V  V
  4766.                 a0                   a9                a15
  4767.                \__________________________________________/
  4768.  
  4769.                     to additiona1 mcs6520'S and memory
  4770.  
  4771.  
  4772.                         tYPICAL aDDRESS aSSIGNMENTS
  4773.                                 figure 2.10
  4774.  
  4775.  
  4776.                                    -103-
  4777.  
  4778. ============================================================================
  4779.  
  4780.         tHE ADDRESSES WHICH SELECT THE VARIOUS REGISTERS, PERIPHERAL
  4781. PORTS, ETC. WITHIN THE PERIPHERAL INTERFACE DEVICES NORMALLY USED WILL NOT
  4782. BE SEQUENTIAL.  fOR THIS REASON, IT IS NORMALLY RECOMMENDED THAT THE TECH-
  4783. NIQUE SHOWN IN fIGURE 2.10 BE USED TO DIFFERENTIATE BETWEEN THE PERIPHERAL
  4784. INTERFACE CHIPS.  tHIS ALLOWS SELECTION OF 12 DEVICES WITH NO DECODING IN A
  4785. mcs6501- OR mcs6502-BASED SYSTEM, UP TO NINE mcs6520 DEVICES IN A mcs6504-
  4786. BASED SYSTEM, AND UP TO EIGHT DEVICES IN A mcs6503 AND mcs6505-BASED SYSTEM.
  4787.  
  4788. 2.3.2   aDDITIONAL aDDRESS aSSIGNMENT tECHNIQUES
  4789.         iN MANY SYSTEMS, THE TECHNIQUES ILLUSTRATED ABOVE MAY NOT REPRESENT
  4790. THE BEST SOLUTION TO THE SYSTEM PROBLEM.  tHIS IS PARTICULARLY TRUE IF PRO-
  4791. GRAM EXECUTION SPEED IS A PRIMARY CONSIDERATION.  tHE TIME REQUIRED TO
  4792. ACCESS THE PERIPHERAL DEVICES CAN BE REDUCED BY PUTTING THESE DEVICES IN
  4793. pAGE zERO.  tHE ENTIRE SET OF pAGE zERO ADDRESSING MODES CAN THEN BE USED
  4794. TO ACCESS THESE DEVICES.  iN ADDITION, THE POLLING OF THE mcs6520 CONTROL
  4795. REGISTERS DURING INTERRUPT SERVICING CAN BE FACILITATED GREATLY BY PUTTING
  4796. THE CONTROL REGISTERS IN SEQUENTIAL ADDRESSES.  tHESE REGISTERS CAN THEN BE
  4797. ACCESSED USING THE pAGE zERO, iNDEXED ADDRESSING MODE DESCRIBED IN THE pRO-
  4798. GRAMMING mANUAL.  tHE ADDRESS INTERCONNECT WHICH ALLOWS THIS IS SHOWN IN
  4799. fIGURE 2.11.  nOTE THAT THIS IMPLEMENTATION REQUIRES EXTERNAL ADDRESS DE-
  4800. CODING CHIPS BUT FOR THE SYSTEM REQUIRING IT, THIS INCREMENTAL COST WILL
  4801. RESULT IN HIGHER OPERATING SPEEDS.
  4802.         tHE SYSTEM DESIGNER MUST BECOME FAMILIAR WITH THE ADDRESSING LINES
  4803. AND THEIR EFFECT ON THE ADDRESS SPACE AVAILABLE TO THE PROCESSOR.  eVEN
  4804. MORE IMPORTANT, THERE IS A SIGNIFICANT RELATIONSHIP BETWEEN SOFTWARE AND
  4805. HARDWARE IN MICROPROCESSOR SYSTEMS AND A FULL UNDERSTANDING OF BOTH CAN
  4806. ALLOW OPTIMIZATION OF THE TRADE-OFF BETWEEN SPEED AND COST FOR THE SYSTEM
  4807. UNDER DESIGN.
  4808.  
  4809. 2.3.3   iNTERRUPTS
  4810.         tHE BASIC CONCEPT OF INTERRUPTS IS INTRODUCED IN cHAPTER 1, sECTION
  4811. 1.3.2 OF THIS MANUAL.  hOWEVER, LITTLE IS SAID THERE ABOUT THE HARDWARE AND
  4812. SOFTWARE TECHNIQUES WHICH ARE REQUIRED TO ASSURE PROPER IMPLEMENTATION OF
  4813.  
  4814.  
  4815.                                    -104-
  4816.  
  4817. ============================================================================
  4818.  
  4819.                                                               --------
  4820.                                                               {$7c}rom   {$7c}
  4821.                                                               {$7c}      {$7c}
  4822.                                      ----------------------O--+cs    {$7c}
  4823.                                      {$7c}                     {$7c}  --------
  4824.                                      {$7c}                     {$7c}
  4825.                                      {$7c}                     {$7c}  --------
  4826.                                      {$7c}               ------+--+rs1   {$7c}
  4827.                                      {$7c}               {$7c}     {$7c}  {$7c}      {$7c}
  4828.                                      {$7c}               {$7c} ----+--+rs0   {$7c}
  4829.                                      {$7c}               {$7c} {$7c}   {$7c}  {$7c}      {$7c}
  4830.                                      {$7c}         ------+-+---+--+cs1   {$7c}mcs6520
  4831.                                      {$7c}         {$7c}     {$7c} {$7c}   {$7c}  {$7c}      {$7c}
  4832. ---------------                      {$7c}         {$7c}     {$7c} {$7c} --+--+cs2   {$7c}
  4833. {$7c}             {$7c}                      {$7c}         {$7c}     {$7c} {$7c} {$7c} {$7c}  {$7c}___   {$7c}
  4834. {$7c}          a15+-----------------------         {$7c}     {$7c} {$7c} {$7c} O--+cs3   {$7c}
  4835. {$7c}             {$7c}                                {$7c}     {$7c} {$7c} {$7c} {$7c}  --------
  4836. {$7c}          a14+------>                         {$7c}     {$7c} {$7c} {$7c} {$7c}
  4837. {$7c}             {$7c}                                {$7c}     {$7c} {$7c} {$7c} {$7c}  --------
  4838. {$7c}          a13+------>                         {$7c}     O-+-+-+--+rs1   {$7c}
  4839. {$7c}             {$7c}                                {$7c}     {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4840. {$7c}          a12+------>                         {$7c}     {$7c} O-+-+--+rs0   {$7c}
  4841. {$7c}             {$7c}                                {$7c}     {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4842. {$7c}          a11+------>                         {$7c} ----+-+-+-+--+cs1   {$7c}mcs6520
  4843. {$7c}             {$7c}                                {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4844. {$7c}          a10+------>                         {$7c} {$7c}   {$7c} {$7c} O-+--+cs2   {$7c}
  4845. {$7c}             {$7c}                                {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  {$7c}___   {$7c}
  4846. {$7c}          a9 +------>                         {$7c} {$7c}   {$7c} {$7c} {$7c} O--+cs3   {$7c}
  4847. {$7c}             {$7c}                                {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  --------
  4848. {$7c}          a8 +------>                         {$7c} {$7c} --+-+-O {$7c}
  4849. {$7c}             {$7c}                                {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  --------
  4850. {$7c}          a7 +--------------------------------+-+-- O-+-+-+--+rs1   {$7c}
  4851. {$7c} mcs650x     {$7c}                                {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4852. {$7c}          a6 +------>                         {$7c} {$7c}   {$7c} O-+-+--+rs0   {$7c}
  4853. {$7c}             {$7c}                                {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4854. {$7c}          a5 +------>                         {$7c} {$7c} --+-+-+-+--+cs1   {$7c}mcs6520
  4855. {$7c}             {$7c}                                {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4856. {$7c}          a4 +--------------------------------+-+-+-+-O O-+--+cs2   {$7c}
  4857. {$7c}             {$7c}                                {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}___   {$7c}
  4858. {$7c}          a3 +--------------------------------+-+-+-O {$7c} {$7c} O--+cs3   {$7c}
  4859. {$7c}             {$7c}               -----------      {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  --------
  4860. {$7c}          a2 +------>--------+         +------- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  4861. {$7c}             {$7c}               {$7c}         {$7c}        {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  --------
  4862. {$7c}          a1 +------>--------+         +--------- {$7c} O-+-+-+--+rs1   {$7c}
  4863. {$7c}             {$7c}               {$7c}         {$7c}          {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4864. {$7c}          a0 +------>--------+         +----------- {$7c} O-+-+--+rs0   {$7c}
  4865. {$7c}             {$7c}               {$7c}         {$7c}            {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4866. {$7c}             {$7c}               {$7c}  1 of 8 +------------+-+-+-+--+cs1   {$7c}mcs6520
  4867. {$7c}             {$7c}               {$7c}         {$7c}            {$7c} {$7c} {$7c} {$7c}  {$7c}      {$7c}
  4868. {$7c}             {$7c}               {$7c} decoder +---------   {$7c} {$7c} O-+--+cs2   {$7c}
  4869. {$7c}             {$7c}               {$7c}         {$7c}        {$7c}   {$7c} {$7c} {$7c} {$7c}  {$7c}___   {$7c}
  4870. {$7c}             {$7c}               {$7c}         +------- {$7c}   {$7c} {$7c} {$7c} O--+cs3   {$7c}
  4871. {$7c}             {$7c}               {$7c}         {$7c}      {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  --------
  4872. {$7c}             {$7c}               {$7c}         +----- {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}
  4873. {$7c}             {$7c}               {$7c}         {$7c}    {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  --------
  4874. {$7c}             {$7c}               {$7c}         +--- {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  {$7c}ram   {$7c}
  4875. {$7c}             {$7c}               -----------  {$7c} {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  {$7c}___   {$7c}
  4876. ---------------                            {$7c} {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} O--+cs1   {$7c}
  4877.                                            {$7c} {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  {$7c}___   {$7c}
  4878.                                            {$7c} {$7c} {$7c} {$7c}   {$7c} {$7c} O-+--+cs2   {$7c}
  4879.                                            {$7c} {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c}  --------
  4880.                                            V V V V   {$7c} {$7c} {$7c} {$7c}
  4881.                                           \_______/  {$7e} {$7e} {$7e} {$7e}
  4882.  
  4883.                                           to other
  4884.                                            6520'S
  4885.  
  4886.  
  4887.                   pAGE zERO cHIP sELECT aDDRESSING sCHEME
  4888.                                 figure 2.11
  4889.  
  4890.  
  4891.                                    -105-
  4892.  
  4893. ============================================================================
  4894.  
  4895. THE INTERRUPT SYSTEM.  tHIS SECTION IS DESIGNED TO INTRODUCE THE DESIGNER
  4896. TO THE DETAILS OF INTERRUPTS AND INTERRUPT SERVICING TECHNIQUES.
  4897.  
  4898. 2.3.3.1  iNTERRUPT pRIORITIZING
  4899.          cHAPTER 1 MAKES REFERENCE TO VARIOUS TECHNIQUES FOR HARDWARE
  4900. PRIORITIZING OF INTERRUPTS TO ALLOW MORE RAPID SERVICING OF INTERRUPTS.
  4901. tHE GOAL OF THIS HARDWARE IS TO ALLOW THE PROCESSOR TO GO DIRECTLY TO THE
  4902. PROGRAM WHICH SERVICES THE HIGHEST PRIORITY ACTIVE INTERRUPT WITHOUT TAKING
  4903. THE TIME TO POLL EACH INTERRUPTING DEVICE.
  4904.         aLL HARDWARE PRIORITIZING TECHNIQUES ARE BASED ON THE "PRIORITY
  4905. ENCODER" SHOWN IN fIGURE 2.12.  tHIS DEVICE HAS EIGHT INPUTS WHICH ARE
  4906. ASSIGNED A PRIORITY LEVEL FROM ONE TO EIGHT AND GENERATES A THREE-BIT BI-
  4907. NARY CODE CORRESPONDING TO THE HIGHEST PRIORITY ACTIVE INPUT SIGNAL.
  4908.         tHE GENERATION OF THIS THREE-BIT CODE IS IN REALITY A TRIVIAL TASK
  4909. FOR THE DESIGNER.  hOWEVER, RELATING THIS CODE TO THE ADDRESS OF THE CORRE-
  4910. SPONDING INTERRUPT SERVICE ROUTINE IS MUCH MORE DIFFICULT AND REPRESENTS AN
  4911. OPPORTUNITY FOR CREATIVITY ON THE PART OF THE DESIGNER.  sEVERAL SOLUTIONS
  4912. WILL BE ILLUSTRATED HERE TODEMONSTRATEWHAT CAN BE DONE.  tHESE ARE CER-
  4913. TAINLY NOT ASSUMED TO BE THE ONLY SOLUTIONS.  eACH SYSTEM MUST BE CONSIDERED
  4914. SEPARATELY TO ASSURE THAT THE IMPLEMENTATION CHOSEN IS AS CLOSE TO OPTIMUM
  4915. AS POSSIBLE.
  4916.  
  4917. 2.3.3.2  eXAMPLE 1:  sELECTING THE iNTERRUPT vECTOR
  4918.          tHE FINAL STEP OF INTERRUPT RESPONSE WITHIN THE PROCESSOR IS THE
  4919. FETCHING OF AN INTERRUPT VECTOR FROM TWO FIXED ADDRESSES IN MEMORY.  tHE
  4920. INTERRUPT VECTOR LOCATED IN THESE FIXED ADDRESSES IDENTIFIES THE ADDRESS OF
  4921. THE SOFTWARE WHICH THE PROCESSOR EXECUTES TO POLL THE INTERRUPTING DEVICES.
  4922. iNSTEAD OF POINTING TO THE POLLING ROUTINE, IT WOULD BE MUCH FASTER TO GO
  4923. DIRECTLY TO THE SOFTWARE WHICH ACTUALLY SERVICES THE INTERRUPT.  tHIS RE-
  4924. QUIRES A UNIQUE VECTOR FOR EACH INTERRUPT.
  4925.         tHE TECHNIQUE ILLUSTRATED IN fIGURE 2.12 ASSUMES THAT THE INTER-
  4926. RUPT VECTORS ARE LOCATED IN rom AT ADDRESSES BELOW THAT NORMALLY ASSIGNED
  4927. TO THE INTERRUPT VECTOR.  tHE DECODER DETECTS THE FACT THAT THE PROCESSOR
  4928. IS READING fffe OR ffff.  aT THIS TIME THE ADDRESS INPUTS ad1, ad2 AND ad3
  4929. INTO THE rom ARE DRIVEN FROM THE PRIORITY ENCODER.  iNSTEAD OF ACCESSING
  4930. fffe OR ffff, THE INTERRUPT VECTOR WILL COME FROM TWO ADDRESSES SELECTED BY
  4931.  
  4932.  
  4933.                                    -106-
  4934.  
  4935. ============================================================================
  4936.  
  4937. ------------------                                                 ------------
  4938. {$7c}                {$7c}                                                 {$7c}          {$7c}
  4939. {$7c}             a15+-->-------------------------------------------O--+          {$7c}
  4940. {$7c}                {$7c}                                              {$7c}  {$7c}          {$7c}
  4941. {$7c}             a14+-->------------------------------------------ {$7c}  {$7c}          {$7c}
  4942. {$7c}                {$7c}                                            {$7c} {$7c}  {$7c}          {$7c}
  4943. {$7c}             a13+-->---------------------------------------- {$7c} {$7c}  {$7c}          {$7c}
  4944. {$7c}                {$7c}                                          {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4945. {$7c}             a12+-->-------------------------------------- {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4946. {$7c}                {$7c}                                        {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4947. {$7c}             a11+-->------------------------------------ {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4948. {$7c}                {$7c}                                      {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4949. {$7c}             a10+-->---------------------------------O-+-+-+-+-+--+          {$7c}
  4950. {$7c}                {$7c}                                    {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4951. {$7c}             a9 +-->-------------------------------O-+-+-+-+-+-+--+          {$7c}
  4952. {$7c}                {$7c}                                  {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4953. {$7c}             a8 +-->-----------------------------O-+-+-+-+-+-+-+--+          {$7c}
  4954. {$7c}                {$7c}                                {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4955. {$7c}             a7 +-->---------------------------O-+-+-+-+-+-+-+-+--+          {$7c}
  4956. {$7c}                {$7c}                              {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4957. {$7c}             a6 +-->-------------------------O-+-+-+-+-+-+-+-+-+--+          {$7c}
  4958. {$7c}                {$7c}                            {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4959. {$7c}             a5 +-->-----------------------O-+-+-+-+-+-+-+-+-+-+--+          {$7c}
  4960. {$7c}                {$7c}                          {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4961. {$7c}             a4 +-->-----------O---------- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4962. {$7c}                {$7c}              {$7c}         {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}  2k x 8  {$7c}
  4963. {$7c}             a3 +-->---------O-+-------- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4964. {$7c}                {$7c}            {$7c} {$7c}       {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}  rom     {$7c}
  4965. {$7c}             a2 +-->-------O-+-+------ {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4966. {$7c}                {$7c}          {$7c} {$7c} {$7c}     {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4967. {$7c}             a1 +-->-----O-+-+-+---- {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4968. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}  {$7c}          {$7c}
  4969. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}   +-+-+-+-+-+-+-+-+++-+++-+-+-+  {$7c}          {$7c}
  4970. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}                    {$7c}   {$7c}         {$7c}          {$7c}
  4971. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}              and   {$7c}   {$7c}         {$7c}          {$7c}
  4972. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}                     \ /          {$7c}          {$7c}
  4973. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}                      -           {$7c}          {$7c}
  4974. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}                      {$7c}           {$7c}          {$7c}
  4975. {$7c}             a0 +-->-----+-+-+-+----------------------+-----------+          {$7c}
  4976. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}                      {$7c}           {$7c}          {$7c}
  4977. {$7c}                {$7c}        {$7c} {$7c} {$7c} {$7c}               -------+---        {$7c}          {$7c}
  4978. {$7c}                {$7c}        {$7c} {$7c} {$7c} ----------------+         {$7c}        {$7c}          {$7c}
  4979. {$7c}                {$7c}        {$7c} {$7c} {$7c}                 {$7c}         +->------+          {$7c}
  4980. {$7c}                {$7c}        {$7c} {$7c} ------------------+         {$7c}        {$7c}          {$7c}
  4981. {$7c}                {$7c}        {$7c} {$7c}                   {$7c}   quad  +->------+          {$7c}
  4982. {$7c}                {$7c}        {$7c} --------------------+         {$7c}        {$7c}          {$7c}
  4983. {$7c}                {$7c}        {$7c}                     {$7c} 2 input +->------+          {$7c}
  4984. {$7c}                {$7c}        ----------------------+         {$7c}        {$7c}          {$7c}
  4985. {$7c}                {$7c}                              {$7c}   data  +->------+          {$7c}
  4986. {$7c}                {$7c}               ---------------+         {$7c}        {$7c}          {$7c}
  4987. {$7c}                {$7c}               {$7c}              {$7c}  select {$7c}        ------------
  4988. {$7c}                {$7c}              -+-      -------+         {$7c}
  4989. {$7c}                {$7c}               -       {$7c}      {$7c}         {$7c}
  4990. {$7c}                {$7c}                       {$7c} -----+         {$7c}
  4991. {$7c}                {$7c}                       {$7c} {$7c}    {$7c}         {$7c}
  4992. {$7c}                {$7c}                       {$7c} {$7c} ---+         {$7c}
  4993. {$7c}                {$7c}                       {$7c} {$7c} {$7c}  -----------
  4994. {$7c}                {$7c}                       ^ ^ ^
  4995. {$7c} microprocessor {$7c}               --------+-+-+------
  4996. {$7c}                {$7c}               {$7c}                 {$7c}
  4997. {$7c}                {$7c}               {$7c}     priority    {$7c}
  4998. {$7c}                {$7c}               {$7c}     encoder     {$7c}
  4999. {$7c}                {$7c}               {$7c}                 {$7c}
  5000. {$7c}                {$7c}               --+-+-+-+-+-+-+-+--
  5001. {$7c}                {$7c}                 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5002. {$7c}                {$7c}             +---O {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5003. {$7c}                {$7c}             {$7c}   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5004. {$7c}                {$7c}             +---+-O {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5005. {$7c}                {$7c}             {$7c}   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5006. {$7c}                {$7c}             +---+-+-O {$7c} {$7c} {$7c} {$7c} {$7c}
  5007. {$7c}                {$7c}        -----+   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5008. {$7c}             ___{$7c}       /    /+---+-+-+-O {$7c} {$7c} {$7c} {$7c}
  5009. {$7c}             irq+-----o<    ( {$7c}   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5010. {$7c}                {$7c}       \    \+---+-+-+-+-O {$7c} {$7c} {$7c}
  5011. ------------------        -----+   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5012.                                +---+-+-+-+-+-O {$7c} {$7c}
  5013.                           nor  {$7c}   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5014.                                +---+-+-+-+-+-+-O {$7c}
  5015.                                {$7c}   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5016.                                +---+-+-+-+-+-+-+-O
  5017.                                    {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5018.                                    ^ ^ ^ ^ ^ ^ ^ ^
  5019.  
  5020.                                   interrupt inputs
  5021.  
  5022.  
  5023.                       sELECTING THE iNTERRUPT vECTOR
  5024.                                figure 2.12
  5025.  
  5026.  
  5027.                                    -107-
  5028.  
  5029. ============================================================================
  5030.  
  5031. THE PRIORITY ENCODER.  tHE ACTUAL HARDWARE INVOLVED IS QUITE SIMPLE AND THE
  5032. INTERRUPT RESPONSE TIME IS AN ABSOLUTE MINIMUM.
  5033.  
  5034. 2.3.3.3  eXAMPLE 2:  uSING THE pROCESSOR sOFTWARE pOWER
  5035.          tHESE SEVERAL SOLUTIONS TO THE VECTORED INTERRUPT PROBLEM TAKE AD-
  5036. VANTAGE OF CERTAIN INSTRUCTIONS WHICH CAN BE PERFORMED BY THE PROCESSOR.
  5037. tHE FIRST OF THESE USES AN INSTRUCTION CALLED THE jUMP iNDIRECT.  tHIS IN-
  5038. STRUCTION CAUSES THE PROCESSOR TO BEGIN EXECUTING THE PROGRAM LOCATED AT
  5039. THAT ADDRESS CONTAINED IN TWO SEQUENTIAL MEMORY LOCATIONS.
  5040.         aS IN eXAMPLE 1, THE THREE-BIT OUTPUT FROM THE PRIORITY ENCODER
  5041. BECOMES PART OF THE ADDRESS OF THE INTERRUPT SOFTWARE.  iF THE OUTPUT OF
  5042. THE PRICRITY ENCODER IS CONNECTED TO THE INPUTS OF A PERIPHERAL INTERFACE
  5043. DEVICE, THE PROCESSOR CAN THEN PERFORM A jUMP iNDIRECT OPERATION USING THE
  5044. ADDRESS ON THE TWO PERIPHERAL i/o PORTS.  tHIS IS SHOWN IN fIGURE 2.13.
  5045.         aNOTHER SOLUTION WHICH TAKES ADVANTAGE OF THE PROCESSOR SOFTWARE
  5046. IS SHOWN iN fIGURE 2.14.  oNCE AGAIN THE OUTPUT OF THE PRIORITY ENCODER IS
  5047. CONNECTED TO THE INPUTS OF A PERIPHERAL i/o PORT.  hOWEVER, IN THIS AP-
  5048. PROACH, THE PRIORITY ENCODER IS CONNECTED TO THE LOW ORDER BITS AND THE
  5049. OTHER BITS CAN BE USED AS CONTROL OR INPUT LINES FOR OTHER FUNCTIONS.
  5050.         iN THIS METHOD, THE THREE BITS FROM THE PRIORITY ENCODER WILL BE-
  5051. COME PART OF AN ADDRESS ESTABLISHED IN MEMORY.  tHIS ADDRESS WILL THEN BE
  5052. USED IN A jUMP iNDIRECT INSTRUCTION AS BEFORE.  tHIS OPERATION IS DETAILED
  5053. IN fIGURE 2.15.
  5054.  
  5055. 2.3.4   tHE aPPLICATION OF rdy TO cONTROLLING THE mEMORY iNTERFACE
  5056.         tHE ABILITY TO STOP THE MICROPROCESSOR CAN BE EXTREMELY IMPORTANT
  5057. WHEN USING MEMORY DEVICES WHICH ARE NOT DIRECTLY COMPATIBLE WITH THE
  5058. mcs650x FAMILY.
  5059.         tHE rdy LINE ON THE mcs6501, mcs6502 AND mcs6505 CAN BE USED TO STOP
  5060. THE PROCESSOR IN ANY "NON WRITE" CYCLE, I.E., ANY CYCLE IN WHICH THE PRO-
  5061. CESSOR IS NOT ATTEMPTING TO WRITE DATA INTO MEMORY.  tHE PROCESSOR CAN BE
  5062. STOPPED FOR ANY NUMBER OF CLOCK CYCLES, FROM ONE CYCLE FOR INTERFACING WITH
  5063. SLOW MEMORIES TO MANY CYCLES FOR dma APPLICATIONS AND FOR SINGLE CYCLE EXE-
  5064. CUT ION.
  5065.  
  5066. 2.3.4.1  iNTERFACING sLOW promS
  5067.          oNE OF THE PRINCIPAL APPLICATIONS OF roy IS IN THE CONTROL OF
  5068. LIGHT-ERASABLE promS OR earomS.  tHESE DEVICES GENERALLY HAVE LONGER ACCESS
  5069.  
  5070.  
  5071.                                    -108-
  5072.  
  5073. ============================================================================
  5074.  
  5075. ------------------         ----------------
  5076. {$7c}                {$7c}a15      {$7c}              {$7c}  pb7    \
  5077. {$7c}                +--->     {$7c}              +--------> {$7c}
  5078. {$7c}                {$7c}a14      {$7c}              {$7c}  pb6     {$7c} to
  5079. {$7c}                +--->     {$7c}              +--------> {$7c}
  5080. {$7c}                {$7c}a13      {$7c}              {$7c}  pb5     {$7c} fixed
  5081. {$7c}                +--->     {$7c}              +--------> {$7c}
  5082. {$7c}                {$7c}a12      {$7c}  peripheral  {$7c}  pb4     {$7c} address
  5083. {$7c}                +--->     {$7c}              +--------> {$7c}
  5084. {$7c}                {$7c}a11      {$7c}  interface   {$7c}  pb3     {$7c} data for
  5085. {$7c}                +--->     {$7c}              +--------> {$7c}
  5086. {$7c}                {$7c}a10      {$7c}   device     {$7c}  pb2     {$7c} interrupt
  5087. {$7c}                +--->     {$7c}              +--------> {$7c}
  5088. {$7c}                {$7c}a9       {$7c}   mcs6502    {$7c}  pb1     {$7c} software
  5089. {$7c}                +--->     {$7c}              +--------> {$7c}
  5090. {$7c}                {$7c}a8       {$7c}              {$7c}  pb0     {$7c}
  5091. {$7c} microprocessor +--->     {$7c}              +--------> {$7c}
  5092. {$7c}                {$7c}a7       {$7c}              {$7c}          {$7c}
  5093. {$7c}                +--->     {$7c}              {$7c}      --> {$7c}
  5094. {$7c}                {$7c}a6       {$7c}              {$7c}      {$7c}  /
  5095. {$7c}                +--->     {$7c}              {$7c}      {$7c}
  5096. {$7c}                {$7c}a5       {$7c}              {$7c}  pa7 {$7c}
  5097. {$7c}                +--->     {$7c}              +-------
  5098. {$7c}                {$7c}a4       {$7c}              {$7c}  pa6
  5099. {$7c}                +--->     {$7c}              +---------<---------
  5100. {$7c}                {$7c}a3       {$7c}              {$7c}  pa5             {$7c}
  5101. {$7c}                +--->     {$7c}              +---------<------  {$7c}
  5102. {$7c}                {$7c}a2       {$7c}              {$7c}  pa4          {$7c}  {$7c}
  5103. {$7c}                +--->     {$7c}              +---------<---  {$7c}  {$7c}
  5104. {$7c}                {$7c}a1       {$7c}              {$7c}  pa3       {$7c}  {$7c}  {$7c}
  5105. {$7c}                +--->-----+ rs0          +-------     {$7c}  {$7c}  {$7c}
  5106. {$7c}                {$7c}a0       {$7c}              {$7c}  pa2 {$7c}     {$7c}  {$7c}  {$7c}
  5107. {$7c}                +--->-----+ rs1          +------+     {$7c}  {$7c}  {$7c}
  5108. {$7c}                {$7c}         {$7c}              {$7c}  pa1 {$7c}     {$7c}  {$7c}  {$7c}
  5109. ------------------         {$7c}              +------+     {$7c}  {$7c}  {$7c}
  5110.                            {$7c}              {$7c}  pa0 {$7c}     {$7c}  {$7c}  {$7c}
  5111.                            {$7c}              +------+     {$7c}  {$7c}  {$7c}
  5112.                            {$7c}              {$7c}      {$7c}     {$7c}  {$7c}  {$7c}
  5113.                            ----------------     -+-    {$7c}  {$7c}  {$7c}
  5114.                                                  -     {$7c}  {$7c}  {$7c}
  5115.                                                        {$7c}  {$7c}  {$7c}
  5116.                                                        {$7c}  {$7c}  {$7c}
  5117.                                           -------------+--+--+---------
  5118.                                           {$7c}                           {$7c}
  5119.                                           {$7c}           priority        {$7c}
  5120.                                           {$7c}           encoder         {$7c}
  5121.                                           {$7c}                           {$7c}
  5122.                                           --+--+--+--+--+--+--+--+--+--
  5123.                                             {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  5124.                                             ^  ^  ^  ^  ^  ^  ^  ^  ^
  5125.                                             {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  5126.                                           \___________________________/
  5127.  
  5128.                                                 interrupt inputs
  5129.  
  5130.     note:   connecting the address lines as
  5131.             shown puts the two mcs6520 i/o
  5132.             ports in sequentiaL addresses.
  5133.  
  5134.  
  5135.                 uSING mcs6520 FOR jUMP iNDIRECT iNTERRUPT rOUTINES
  5136.                                 figure 2.13
  5137.  
  5138.  
  5139.                                    -109-
  5140.  
  5141. ============================================================================
  5142.  
  5143. ------------------         ----------------
  5144. {$7c}                {$7c}         {$7c}              {$7c}  pb7       \
  5145. {$7c}             a15+--->     {$7c}              +-----------> {$7c}
  5146. {$7c}                {$7c}         {$7c}              {$7c}  pb6        {$7c} to
  5147. {$7c}             a14+--->     {$7c}              +-----------> {$7c}
  5148. {$7c}                {$7c}         {$7c}              {$7c}  pb5        {$7c} fixed
  5149. {$7c}             a13+--->     {$7c}              +-----------> {$7c}
  5150. {$7c}                {$7c}         {$7c}  peripheral  {$7c}  pb4        {$7c} address
  5151. {$7c}             a12+--->     {$7c}              +-----------> {$7c}
  5152. {$7c}                {$7c}         {$7c}  interface   {$7c}  pb3        {$7c} data for
  5153. {$7c}             a11+--->     {$7c}              +-----------> {$7c}
  5154. {$7c}                {$7c}         {$7c}   device     {$7c}  pb2        {$7c} interrupt
  5155. {$7c}             a10+--->     {$7c}              +-----------> {$7c}
  5156. {$7c}                {$7c}         {$7c}   mcs6502    {$7c}  pb1        {$7c} software
  5157. {$7c}             a9 +--->     {$7c}              +-----------> {$7c}
  5158. {$7c}   micro        {$7c}         {$7c}              {$7c}  pb0        {$7c}
  5159. {$7c} processor   a8 +--->     {$7c}              +-----------> {$7c}
  5160. {$7c}                {$7c}         {$7c}              {$7c}             {$7c}
  5161. {$7c}             a7 +--->     {$7c}              {$7c}             {$7c}
  5162. {$7c}                {$7c}         {$7c}              {$7c}             {$7c}
  5163. {$7c}             a6 +--->     {$7c}              {$7c}             {$7c}
  5164. {$7c}                {$7c}         {$7c}              {$7c}             {$7c}
  5165. {$7c}             a5 +--->     {$7c}           pa7+-----------> {$7c}
  5166. {$7c}                {$7c}         {$7c}              {$7c}             {$7c}
  5167. {$7c}             a4 +--->     {$7c}           pa6+-----------> {$7c}
  5168. {$7c}                {$7c}         {$7c}              {$7c}             {$7c}
  5169. {$7c}             a3 +--->     {$7c}           pa5+-----------> {$7c}
  5170. {$7c}                {$7c}         {$7c}              {$7c}             {$7c}
  5171. {$7c}             a2 +--->     {$7c}           pa4+-----------> {$7c}
  5172. {$7c}                {$7c}         {$7c}              {$7c}             {$7c}
  5173. {$7c}             a1 +--->-----+ rs0       pa3+-----------> {$7c}
  5174. {$7c}                {$7c}         {$7c}              {$7c}            /
  5175. {$7c}             a0 +--->-----+ rs1       pa2+-----------<--------------
  5176. {$7c}                {$7c}         {$7c}              {$7c}                         {$7c}
  5177. ------------------         {$7c}           pa1+-----------<-----------  {$7c}
  5178.                            {$7c}              {$7c}                      {$7c}  {$7c}
  5179.                            {$7c}           pa0+-----------<--------  {$7c}  {$7c}
  5180.                            {$7c}              {$7c}                   {$7c}  {$7c}  {$7c}
  5181.                            ----------------                   {$7c}  {$7c}  {$7c}
  5182.                                                               {$7c}  {$7c}  {$7c}
  5183.                                                               {$7c}  {$7c}  {$7c}
  5184.                                                               {$7c}  {$7c}  {$7c}
  5185.                                           --------------------+--+--+--
  5186.                                           {$7c}                           {$7c}
  5187.                                           {$7c}           priority        {$7c}
  5188.                                           {$7c}           encoder         {$7c}
  5189.                                           {$7c}                           {$7c}
  5190.                                           --+--+--+--+--+--+--+--+--+--
  5191.                                             {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  5192.                                             ^  ^  ^  ^  ^  ^  ^  ^  ^
  5193.                                             {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}  {$7c}
  5194.                                           \___________________________/
  5195.  
  5196.                                                 interrupt inputs
  5197.  
  5198.  
  5199.             pRIORITY eNCODER cONNECTED TO lOW oRDER bITS OFmcs6520
  5200.                                 figure 2.14A
  5201.  
  5202.  
  5203.                                    -110-
  5204.  
  5205. ============================================================================
  5206.  
  5207.                       -----------------      \
  5208.                       {$7c} periheral  pa7+-----> {$7c} to other
  5209.                       {$7c}               {$7c}       {$7c}
  5210.                       {$7c} interface  pa6+-----> {$7c} peripheral
  5211.                       {$7c}               {$7c}       {$7c}
  5212.                       {$7c} device     pa5+-----> {$7c} devices       interrupt inputs
  5213.                       {$7c}               {$7c}       {$7c}               _______________
  5214.                       {$7c} (mcs6520)  pa4+-----> {$7c}              /               \
  5215. --------------        {$7c}               {$7c}       {$7c}               V V V V V V V V
  5216. {$7c} micro      +---->   {$7c}               {$7c}  ---> {$7c}               {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5217. {$7c}            {$7c}        {$7c}               {$7c}  {$7c}   /               -+-+-+-+-+-+-+-+-
  5218. {$7c} processor  +---->   {$7c}            pa3+--+---------<---------+               {$7c}
  5219. {$7c}            {$7c}        {$7c}               {$7c}  {$7c}                   {$7c}               {$7c}
  5220. {$7c}            +---->   {$7c}            pa2+--+---------<---------+               {$7c}
  5221. {$7c}            {$7c}        {$7c}               {$7c}  {$7c}                   {$7c}               {$7c}
  5222. {$7c}         a1 +---->---+rs1         pa1+--+---------<---------+               {$7c}
  5223. {$7c}            {$7c}        {$7c}               {$7c}  {$7c}                   -----------------
  5224. {$7c}         a0 +---->---+rs0         pa0+---
  5225. --------------        -----------------
  5226.  
  5227.  
  5228.                 pRIORITY eNCODER TO pERIPHERAL iNTERFACE sCHEME
  5229.                                 figure 2.14 B
  5230.  
  5231.  
  5232.  
  5233.  
  5234. intvec -->      pha                         rECEIVE iNTERRUPT vECTOR
  5235.                 txa
  5236.                 pha
  5237.                 lda     ipa a0              rEAD pia pORT
  5238.                 and     #oe                 cLEAR pia
  5239.                 tax                         tRANSFER aCC. TO x INDEX REG.
  5240.                 lda     vec tab,x           lOAD aCC. FROM iNTERRUPT vECTOR
  5241.                                             tABLE STORED IN MEMORY
  5242.                 sta     jmp1                sET lOW oRDER aDDRESS bYTE
  5243.                                             OF iNTERRUPT vECTOR
  5244.                 inx                         iNCREMENT x iNDEX rEGISTER
  5245.                 lda     vec tab,x           lOAD aCC. FROM iNTERRUPT vECTOR
  5246.                                             tABLE
  5247.                 sta     jmp1+1              sET HIGH ORDER aDDRESS bYTE
  5248.                                             OF iNTERRUPT vECTOR
  5249.                 jmp     (jmp1)              gO TO iNTERRUPT sERVICE
  5250.                                             sOFTWARE
  5251.  
  5252.  
  5253.     sOFTWARE pROGRAM TO iMPLEMENT iNTERRUPT FROM ABOVE hARDWARE cONFIGURATION
  5254.                                 figure 2.15
  5255.  
  5256.  
  5257.                                    -111-
  5258.  
  5259. ============================================================================
  5260.  
  5261. TIMES THAN THAT REQUIRED BY THE MICROPROCESSOR WHEN OPERATION AT 1 mhZ
  5262. CLOCK FREQUENCY AND ARE INCAPABLE OF MAKING DATA AVAILABLE ON THE DATA BUS
  5263. WITHIN 100 NANOSECONDS OF THE END OF THE pHASE tWO CLOCK PULSE.  tHE pHASE
  5264. tWO CLOCK PULSE IS USED TO LATCH DATA OR INSTRUCTIONS ON THE DATA BUS;
  5265. THEREFORE, IF THE DATA IS NOT AVAILABLE AT THE CORRECT TIME, THE PROCESSOR
  5266. MUST BE HELD UP FOR ONE FULL CYCLE.  tHE INSTRUCTION WILL THEN BE LATCHED
  5267. ON THE FOLLOWING pHASE tWO PULSE.  eXECUTION OF THE INSTRUCTION WILL THEN
  5268. PROCEED DURING THE NEXT CYCLE.  sUGGESTED LOGIC FOR PERFORMING THIS FUNC-
  5269. TION IS SHOWN IN fIGURE 2.16.
  5270.     nOTE THAT THE DATA PRESENT ON THE DATA BUS DURING THE O2 CLOCK
  5271. PULSE AFTER roy GOES HIGH IS THE DATA THAT WILL BE USED IN THE INSTRUCTION
  5272. EXECUTION WHICH TAKES PLACE DURING THE FOLLOWING CYCLE.
  5273.  
  5274. 2.3.4.2  dIRECT mEMORY aDDRESS (dma) tECHNIQUES
  5275.          tRANSFER OF DATA FROM PERIPHERAL STORAGE DEVICES INTO THE MICRO-
  5276. COMPUTER DATA MEMORY (ram) CAN NORMALLY BE HANDLED ONE BYTE AT A TIME UNDER
  5277. CONTROL OF THE MICROPROCESSOR.  hOWEVER, IN LARGE DATA TERMINALS, CONTROL
  5278. SYSTEMS, ETC. THE PRIMARY DATA STORAGE DEVICE MAY HE A HIGH-SPEED TAPE OR
  5279. DISK.  iN SYSTEMS SUCH AS THESE, THE DATA TRANSFER FROM THE STORAGE DEVICE
  5280. INTO MEMORY MUST BE PERFORMED AT SPEEDS GREATER THAN THE PROCESSOR CAN
  5281. HANDLE.  tHE CONTROL OF THE TRANSFER MUST BE PERFORMED OUTSIDE OF THE PRO-
  5282. CESSOR IN A SEPARATE CONTROLLER AND THE PERIPHERAL DEVICE MUST GAIN DIRECT
  5283. ACCESS TO THE SYSTEM ram.
  5284.         dIRECT mEMORY aCCESS REQUIRES PRIMARILY THAT THE PROCESSOR HAVE NO
  5285. NEED TO ACCESS THE MEMORY INVOLVED.  tHIS IS GENERALLY ASSURED BY STOPPING
  5286. THE PROCESSOR COMPLETELY.  tHE dma CONTROLLER MUST THEN GAIN ACCESS TO THE
  5287. r/w LINE AND BOTH THE ADDRESS AND DATA BUSSES ON THE MEMORY UNIT.
  5288.         pROVISION FOR STOPPING THE PROCESSOR IS AVAILABLE ON THE mcs6501,
  5289. mcs6502 AND mcs6505.  tHIS IS ACCOMPLISHED BY PULLING THE roy LINE ON THE
  5290. PROCESSOR TO gnd (< 0.4v).  tHE PROCESSOR WILL STOP IN THE FIRST NON-WRITE
  5291. CYCLE WITH THE DATA BUS IN THE HIGH-IMPEDANCE STATE.  aFTER THE PROCESSOR
  5292. HAS STOPPED, THE dma CONTROLLER MUST PROVIDE THE ADDRESS AND DATA FOR THE
  5293. MEMORY AND MUST CONTROL r/w IF DATA IS BEING TRANSFERRED INTO MEMORY.
  5294.         pROVIDING ADDRESSES FOR THE MEMORIES CAN BE ACCOMPLISHED BY GATING
  5295. ADDRESSES FROM EITHER THE dma CONTROLLER OR THE MICROPROCESSOR INTO THE
  5296. MEMORIES.  tHIS CAN BE ACCOMPLISHED VERY EASILY WITH A qUAD 2-INPUT DATA
  5297.  
  5298.  
  5299.                                    -112-
  5300.  
  5301. ============================================================================
  5302.  
  5303. SELECTOR.  dURING THE dma OPERATION, THE ADDRESSES FED TO THE MEMORIES ARE
  5304. THOSE GENERATED BY THE dma CONTROLLER.  aFTER THE dma OPERATION IS COMPLETE,
  5305. THE INPUT SELECT SIGNAL TO THE DATA SELECTOR IS INVERTED AND THE ADDRESSES
  5306. GENERATED BY THE PROCESSOR ONCE AGAIN DETERMINE WHICH MEMORY WORD IS BEING
  5307. ACCESSED.  tHE r/w LINE TO THE MEMORIES CAN BE CONTROLLED IN THE SAME WAY
  5308. AS THE ADDRESS LINES.
  5309.         tHE DATA BUS MUST BE CONTROLLED IN A SOMEWHAT DIFFERENT MANNER.
  5310. tHIS IS NECESSITATED BY THE FACT THAT THESE LINES ARE "BI-DIRECTIONAL"; THE
  5311. DATA BUS PINS ON THE PROCESSOR AND THE SUPPORT CHIPS ACT AS BOTH AN INPUT
  5312. AND AN OUTPUT.  tHE OUTPUT BUFFERS IN EACH OF THESE CHIPS ARE CAPABLE OF
  5313. ENTERING A HIGH IMPEDANCE STATE TO ALLOW ANY OF THE DEVICES TO DRIVE THE
  5314. BUS DURING DATA AND INSTRUCTION TRANSFERS.  fOR THIS REASON, A BI-DIREC-
  5315. TIONAL, "THREE-STATE" BUS EXTENDER IS REQUIRED TO INTERFACE THE dma CON-
  5316. TROLLER TO THE SYSTEM DATA BUS.  tHE LOGIC NECESSARY TO PROVIDE FULL ADDRESS
  5317. BUS AND DATA BUS CONTROL FOR dma APPLICATIONS IS SHOWN IN fIGURE 2.17.
  5318.         tHE mcs6501 PROVIDES A bUS aVAILABLE OUTPUT TO SIGNAL THE dma CON-
  5319. TROLLER THAT THE PROCESSOR HAS STOPPED AND THAT THE dma CONTROLLER CAN PRO-
  5320. CEED TO ACCESS MEMORY FOR READING AND WRITING DATA.  tHIS SIGNAL WILL GO
  5321. HIGH DURING THE pHASE tWO CLOCK IN THE FIRST rEAD CYCLE (r/w = 1) WHICH
  5322. FOLLOWS roy GOING LOW.  tHIS WILL OCCUR IMMEDIATELY IF rdy IS PULLED TO gnd
  5323. (< 0.4v) DURING A rEAD CYCLE.  tHE DISCUSSION OF THE PROCESSORS IN sECTION 1
  5324. DESCRIBES THIS IN DETAIL.
  5325.         tHE mcs6502, mcs6503, mcs6504 AND mcs6505 DO NOT MAKE AVAILABLE
  5326. THE bUS aVAILABLE SIGNAL.  hOWEVER, THESE PROCESSORS STILL STOP IN THE
  5327. FIRST NON-WRITE CYCLE.  fOR THIS REASON, THE LOGIC SHOWN IN fIGURE 2.17
  5328. SHOULD BE USED TO GENERATE A bUS aVAILABLE SIGNAL FOR THE dma CONTROLLER.
  5329.  
  5330. 2.3.4.3  cONTROL OF dYNAMIC ramS IN THE mcs6500 sYSTEM
  5331.          fOR SYSTEMS WHICH MUST CONTAIN A LARGE QUANTITY OF rEAD/wRITE
  5332. MEMORY (ram), THE 4096-BIT DYNAMIC ramS CAN PROVIDE THE REQUIRED STORAGE
  5333. WITH A MINIMUM NUMBER OF PARTS.  cURRENTLY AVAILABLE DYNAMIC ramS ARE CAP-
  5334. ABLE OF STORING FOUR TIMES AS MUCH DATA AS SIMILAR STATIC DEVICES.  hOW-
  5335. EVER, THERE IS ONE MAJOR DRAWBACK TO THESE DEVICES--THEY MUST BE REFRESHED
  5336. PERIODICALLY.  fOR MOST DEVICES CURRENTLY AVAILABLE, THIS REFRESH PERIOD IS
  5337. ABOUT 2 MILLISECONDS FOR THE ENTIRE CHIP.  rEFRESHING THE ENTIRE CHIP
  5338.  
  5339.  
  5340.                                    -113-
  5341.  
  5342. ============================================================================
  5343.  
  5344.  
  5345.           /
  5346.          {$7c}   ------------------
  5347.          {$7c}---{$7c}                {$7c}
  5348.          {$7c}   {$7c}                {$7c}         "j-k" flip-flop
  5349.          {$7c}---{$7c}                {$7c}            ---------
  5350. address  {$7c}   {$7c}  prom address  {$7c}            {$7c}       {$7c}
  5351.          {$7c}---{$7c}                +--------O---+j      {$7c}
  5352. lines    {$7c}   {$7c}  detection     {$7c}        {$7c}   {$7c}       {$7c}
  5353.          {$7c}---{$7c}                {$7c}        {$7c}   {$7c}       {$7c}
  5354.          {$7c}   {$7c}                {$7c}    ----+--o{$7c}c      {$7c}
  5355.          {$7c}---{$7c}                {$7c}    {$7c}   {$7c}   {$7c}       {$7c}
  5356.           \  ------------------    {$7c}   {$7c}   {$7c}      _{$7c}
  5357.                                    {$7c}   O---+k     q+---------rdy
  5358.                                    {$7c}   {$7c}   {$7c}       {$7c}
  5359. p1 clock ---------------------------   {$7c}   ---------
  5360.                                        {$7c}       o
  5361.                                        {$7c}       {$7c}
  5362.                                        ---------
  5363.  
  5364.  
  5365.                     iNTERFACING sCHEME FOR sLOW promS
  5366.                                 figure 2.16
  5367.  
  5368.  
  5369.  
  5370.  
  5371.                                               "d" type
  5372.     r/w -----------------------               flip-flop
  5373.                               {$7c}    ----       ---------
  5374.                       {$7c}\      -----+   \      {$7c}       {$7c}
  5375.                       {$7c} \          {$7c}    )o----+d     q+--
  5376.     rdy --------------+  >---------+   /      {$7c}       {$7c}
  5377.                       {$7c} /          ----       {$7c}       {$7c}
  5378.                       {$7c}/                      {$7c}       {$7c}
  5379.                                               {$7c}      _{$7c}
  5380. phase 2 -------------------------------------o{$7c}c     q+----------- ba
  5381.                                               {$7c}       {$7c}
  5382.                                               ---------
  5383.  
  5384.  
  5385.         lOGIC uSED TO gENERATE bUS aVAILABLE sIGNAL FOR dma aPPLICATIONS
  5386.                                 figure 2.17
  5387.  
  5388.  
  5389.                                    -114-
  5390.  
  5391. ============================================================================
  5392.  
  5393. REQUIRES 32 rEAD OPERATIONS WHICH CAN BE PERFORMED ALL AT ONCE EVERY 2
  5394. MILLISECONDS, OR 1 APPROXIMATELY EVERY 64 MICROSECONDS.
  5395.         uNLESS A SEPARATE CONTROLLER IS USED TO PERFORM THIS REFRESH
  5396. OPERATION, THE USE OF DYNAMIC MEMORIES CAN BE VERY DETRIMENTAL TO SYSTEM
  5397. PERFORMANCE.
  5398.         aS WITH ANY dIRECT mEMORY aCCESS, THE PROCESSOR MUST BE STOPPED TO
  5399. ASSURE THAT THE PROCESSOR AND THE dma CONTROLLER ARE NOT ATTEMPTING TO
  5400. ACCESS THE MEMORIES CONCURRENTLY.  tHE roy INPUT PROVIDES THIS CAPABILITY.
  5401. a COUNTER OPERATING DIRECTLY FROM THE SYSTEM CLOCK WILL PROVIDE A VERY CON-
  5402. VENIENT REFRESH SIGNAL.  eACH TIME THE COUNTER GOES THROUGH A COUNT OF 63,
  5403. A "REFRESH REQUEST" PULSE IS GENERATED.  tHE ACTUAL MEMORY REFRESH OPERA-
  5404. TION MUST TAKE PLACE DURING A rEAD OPERATION WITH THE PROCESSOR STOPPED FOR
  5405. 1 CYCLE.  dETERMINING WHEN THE PROCESSOR HAS STOPPED IS EXACTLY THE SAME
  5406. PROBLEM AS IN dma OPERATIONS.  tHE mcs6501 WILL GENERATE A bUS aVAILABLE
  5407. PULSE WHEN THE PROCESSOR HAS STOPPED.  iN THE OTHER PROCESSORS, THE CONTROL-
  5408. LER MUST PULL THE roy LINE LOW AND MUST THEN EXAMINE THE r/w LINE TO DETER-
  5409. MINE WHEN THE PROCESSOR IS IN A rEAD CYCLE.
  5410.         tHE SPECIFIC OPERATION PERFORMED DURING THE REFRESH CYCLE IS A
  5411. FUNCTION OF THE DEVICES BEING USED.  hOWEVER, IT SHOULD BE NOTED THE TIME
  5412. AVAILABLE FOR REFRESHING THE MEMORY IS "n - 1/2" CYCLES, WHERE n IS THE
  5413. NUMBER OF CYCLES THAT THE PROCESSOR IS STOPPED.  tHIS FORMULA IS BASED ON
  5414. THE FACT THAT THE FIRST HALF CYCLE IS LOST DUE TO THE FACT THAT ba DOES NOT
  5415. GO HIGH UNTIL O2 IN THE mcs6501 AND THAT THE STATE OF THE r/w LINE CANNOT
  5416. BE CONSIDERED VALID UNTIL O2.  cONTROL OF THE MEMORY ADDRESS LINES MUST BE
  5417. RETURNED TO THE PROCESSOR AT THE BEGINNING OF O1 IF THE MEMORIES ARE TO
  5418. HAVE A FULL CYCLE TO MAKE VALID DATA AVAILABLE ON THE DATA BUS.  tHIS LEAVES
  5419. ONE-HALF CYCLE AVAILABLE TO PERFORM THE REFRESH OPERATION IF THE PROCESSOR
  5420. IS STOPPED FOR ONE CYCLE.  a FULL 1-1/2 CYCLES CAN BE MADE AVAILABLE BY
  5421. STOPPING THE PROCESSOR FOR TWO CYCLES.  tHIS LATTER IMPLEMENTATION IS MORE
  5422. COMPATIBLE WITH MOST DYNAMIC ramS CURRENTLY AVAILABLE.
  5423.         aS DESCRIBED ABOVE, A PRIMARY PROBLEM IN THE IMPLEMENTATION OF
  5424. DYNAMIC ram SYSTEMS IS KNOWING WHEN THE PROCESSOR HAS STOPPED.  a FULL ONE-
  5425. HALF CYCLE IS REQUIRED IN THE IMPLEMENTATIONS DESCRIBED ABOVE.  tHE mcs6502,
  5426. HOWEVER, PROVIDES A SIGNAL WHICH CAN BE USED TO PREDICT THAT THE PROCESSOR
  5427. WILL STOP IN THE VERY NEXT CYCLE.  tHIS IS THE sync SIGNAL.  iT IS IMPOSSIBLE
  5428.  
  5429.  
  5430.                                    -115-
  5431.  
  5432. ============================================================================
  5433.  
  5434. FOR A wRITE OPERATION TO IMMEDIATELY FOLLOW AN INSTRUCTION FETCH CYCLE.
  5435. tHIS ALLOWS THE MEMORY REFRESH CONTROLLER TO ASSUME CONTROL OF THE ADDRESS
  5436. LINES AT THE BEGINNING OF THAT CYCLE INSTEAD OF AFTER THE TRAILING EDGE OF
  5437. O1.
  5438.         tHE rdy LINE IS PULLED LOW ON O1 AND THE PROCESSOR IS GUARANTEED
  5439. TO STOP.  cONTROL OF THE ADDRESS LINES IS RETURNED TO THE PROCESSOR ON THE
  5440. NEXT O1 AND rdy IS SET HIGH AT THE SAME TIME.  tHE RESULT IS THE REFRESH
  5441. LOGIC HAD A FULL 1 CYCLE TO REFRESH THE MEMORIES AND THE PROCESSOR LOST ONLY
  5442. 1 CYCLE OF EXECUTION TIME.  a SUGGESTED CONFIGURATION FOR THIS CONTROL LOGIC
  5443. IS SHOWN IN fIGURE 2.18.
  5444.  
  5445.                                                        -----
  5446.                                      ------------------+    \        refresh
  5447.                                      {$7c}                 {$7c}     )o------ grant
  5448.                -----       -------   {$7c}   -------   ----+    /
  5449. refresh ----O--+    \      {$7c}     {$7c}   {$7c}   {$7c}     {$7c}   {$7c}   -----        (to rdy and
  5450.             {$7c}  {$7c}     )-----+d   q+---O---+d    {$7c}   {$7c}                  refresh
  5451. request ----+--+    /      {$7c}     {$7c}       {$7c}     {$7c}   {$7c}                  control)
  5452.             {$7c}  -----       {$7c}     {$7c}       {$7c}     {$7c}   {$7c}
  5453.   sync      {$7c}              {$7c}     {$7c}       {$7c}    _{$7c}   {$7c}
  5454.             {$7c}          ---o{$7c}c    {$7c}   ---o{$7c}c   q+----
  5455.             {$7c}          {$7c}   {$7c}     {$7c}   {$7c}   {$7c}     {$7c}
  5456.             {$7c}          {$7c}   -------   {$7c}   -------
  5457.             {$7c}          {$7c}      o      {$7c}      o
  5458.             {$7c}          {$7c}      {$7c}      {$7c}      {$7c}
  5459.             {$7c}          {$7c}      {$7c}      {$7c}      {$7c}
  5460.             -----------+------O------+-------
  5461.                        {$7c}             {$7c}
  5462.                        {$7c}             {$7c}
  5463.      p2 ---------------O--------------
  5464.  
  5465.  
  5466.              cONTROL lOGIC FOR rEFRESH sIGNAL FOR dYNAMIC rams
  5467.                                 figure 2.18
  5468.  
  5469.  
  5470.                                    -116-
  5471.  
  5472. ============================================================================
  5473.  
  5474. 2.3.5   hOLD-tIME cONTROL--mcs6501
  5475.         tHE DATA BUS HOLD TIME REQUIRED BY THE mcs6500 FAMILY PARTS IS DE-
  5476. FINED IN cHAPTER 1.  eACH CHIP IN THE SYSTEM REQUIRES THAT THE DATA ON THE
  5477. DATA BUS BE HELD FOR 10 NANOSECONDS PAST THE TRAILING EDGE OF THE pHASE tWO
  5478. CLOCK PULSE.  aLSO, EACH DEVICE IS GUARANTEED TO HOLD DATA FOR THIS LENGTH
  5479. OF TIME TO ASSURE PROPER OPERATION OF THE OTHER DEVICES IN THE SYSTEM.
  5480. tHIS ONLY ASSURES THAT THE FAMILY PARTS WILL WORK TOGETHER.  oPERATING WITH
  5481. OTHER ramS AND PERIPHERAL DEVICES REQUIRES THAT A CAREFUL STUDY BE MADE OF
  5482. THE TIMING REQUIREMENTS.  tHIS SECTION DISCUSSES TECHNIQUES FOR PROPERLY
  5483. INTERFACING ramS WHICH REQUIRE MORE THAN 10 NS HOLD TIME GUARANTEED BY THE
  5484. PROCESSOR.  tHESE TECHNIQUES ARE APPLICABLE PRIMARILY TO THE mcs6501 SINCE
  5485. THIS DEVICE USES THE INPUT CLOCKS AND THE dbe INPUT.
  5486.         tHE DATA WHICH IS TO HE WRITTEN INTO MEMORY IS ACTUALLY AVAILABLE ON
  5487. THE INPUTS TO THE PROCESSOR DATA BUS BUFFERS FROM THE BEGINNING OF THE pHASE
  5488. oNE CLOCK PULSE.  tHIS DATA IS NORMALLY GATED ONTO THE BUS DURING pHASE tWO.
  5489. hOWEVER, IF GREATER HOLD TIME IS REQUIRED, THE DESIGNER CAN TAKE ADVANTAGE
  5490. OF THE FACT THAT THIS DATA CAN REALLY BE GATED OUT DURING pHASE oNE.  tHIS
  5491. REQUIRES THAT A DELAY BE PROVIDED BETWEEN THE pHASE tWO AND pHASE oNE CLOCK
  5492. PULSES.  tHE dbe OUTPUT CAN THEN BE CONNECTED TO A pHASE oNE PULSE TO CAUSE
  5493. THE DATA TO REMAIN ON THE BUS PAST pHASE tWO PULSE WHICH IS USED TO LATCH
  5494. DATA IN MEMORY.  tHIS TIMING IS SHOWN IN fIGURE 2.19.
  5495.  
  5496.  
  5497.                                    -117-
  5498.  
  5499. ============================================================================
  5500.  
  5501.                       -----         ------
  5502.                       {$7c}   {$7c}         {$7c}    {$7c}
  5503.              p1 -------   -----------    --------
  5504.                                     {$7c}
  5505.                                     {$7c}
  5506.              p2 ----        ------  {$7c}       -----
  5507.                    {$7c}        {$7c}    {$7c}  {$7c}       {$7c}
  5508.                    ----------    ---+--------
  5509.                                  {$7c}  {$7c}
  5510.                                  {$7c}  {$7c}
  5511.                 -------- --------+--+- ----------
  5512.     address bus         x        {$7c}  {$7c} x
  5513.                 -------- --------+--+- ----------
  5514.                                  {$7c}  {$7c}
  5515.                                  {$7c}  {$7c}
  5516.                 --------         {$7c}  {$7c} -----------
  5517.             r/w         \        {$7c}  {$7c}/
  5518.                          --------+--+
  5519.                                  {$7c}  {$7c}
  5520.             __                   {$7c}  {$7c}
  5521.         dbe(p1) -----    --------+---   ---------
  5522.                     {$7c}    {$7c}       {$7c}  {$7c}   {$7c}
  5523.                     ------       {$7c}  -----
  5524.                     {$7c}        {$7c}   {$7c}  {$7c}
  5525.                     {$7c}        {$7c}   {$7c}  {$7c}{$7c}    {$7c}
  5526.                 ----\        /---+--+\    /------
  5527.        data bus     {$7c}>------<{$7c}   {$7c}  {$7c}{$7c}>--<{$7c}
  5528.                 ----/        \---+--+/    \------
  5529.                     {$7c}        {$7c}   {$7c}  {$7c}{$7c}    {$7c}
  5530.                                  {$7c}  {$7c}
  5531.                               -->{$7c}  {$7c}<-- extra hold time
  5532.  
  5533.  
  5534.                     tIMING aNALYSIS OF dATA hOLD tIME
  5535.                                 figure 2.19
  5536.  
  5537.  
  5538.                                    -118-
  5539.  
  5540. ============================================================================
  5541.  
  5542. 2.4 additional system considerations
  5543.     aFTER THE BASIC SYSTEM CONFIGURATION IS COMPLETE, EXTENSIVE BREADBOARDING
  5544. AND TESTING IS USUALLY REQUIRED BEFORE THE DESIGN IS FINALIZED.  hOWEVER, THIS
  5545. BREADBOARDING AND EVALUATION MUST BE PRECEDED BY A COMPLETE EVALUATION OF THE
  5546. COST AND PERFORMANCE OF THE PROPOSED DESIGN TO ASSURE THAT THE VARIOUS GOALS OF
  5547. THE PROJECT WILL BE MET.
  5548.     tHE FIRST STEP IN EVALUATING THE DESIGN IS TO ESTIMATE THE AMOUNT OF rom
  5549. AND ram WHICH WILL BE REQUIRED AND TO ESTIMATE THE NUMBER AND TYPE OF INTERFACE
  5550. DEVICES REQUIRED TO CONTROL THE PERIPHERALS
  5551.  
  5552. 2.4.1   pERIPHERAL iNTERFACE dEVICES
  5553.         tHE NUMBER AND TYPE OF PERIPHERAL DEVICES CAN GENERALLY BE ESTIMATED
  5554. VERY ACCURATELY.  hOWEVER, IT IS IMPORTANT TO KEEP IN MIND THAT THESE ESTI-
  5555. MATES MUST BE SUBJECT TO REVIEW AFTER A FULL ANALYSIS OF SYSTEM PERFORMANCE
  5556. IS COMPLETED.  tHE DESIGNER MAY FIND IT NECESSARY TO USE A SPECIAL-PURPOSE
  5557. INTERFACE PART OR TO REDESIGN THE i/o STRUCTURE IF THE EVALUATION OF SYSTEM
  5558. PERFORMANCE REVEALS THAT THE SYSTEM CANNOT OPERATE AT THE REQUIRED SPEED.
  5559. uSE OF SPECIAL-PURPOSE PERIPHERAL INTERFACE PARTS WILL REDUCE THE NUMBER OF
  5560. TASKS WHICH MUST BE HANDLED BY THE PROCESSOR AND CONSEQUENTLY CAN INCREASE
  5561. THE OVERALL SYSTEM SPEED, BUT THIS GENERALLY INVOLVES ADDITIONAL COMPONENT
  5562. COST.
  5563.         lIKEWISE, THE USE OF A FULLY VECTORED INTERRUPT CAN LEAD TO INCREASED
  5564. PERFORMANCE AT INCREASED COST.  tHE GOAL OF ANY DESIGN PROGRAM MUST BE TO
  5565. MEET ALL THE SYSTEM PERFORMANCE AT THE MINIMUM POSSIBLE COST.
  5566.         aFTER THE VARIOUS PERIPHERAL DEVICES IN THE SYSTEM HAVE BEEN EVALU-
  5567. ATED TO DETERMINE THE NUMBER OF INPUTS AND OUTPUTS REQUIRED, THE TOTAL RE-
  5568. QUIRED BY ALL PERIPHERALS CAN BE DIVIDED BY 16 TO DETERMINE THE NUMBER OF
  5569. DEVICES REQUIRED.  tHIS IS A GOOD FIRST APPROXIMATION WHICH WILL BE RE-
  5570. EVALUATED AS THE SYSTEM DEVELOPMENT PROGRESSES.
  5571.  
  5572. 2.4.2   ram
  5573.         tHE EVALUATION OF THE AMOUNT OF ram REQUIRED BY THE SYSTEM IS A SOME-
  5574. WHAT MORE DIFFICULT PROBLEM THAN ESTIMATION OF PERIPHERAL DEVICES.  tHIS IS
  5575. DUE PRIMARILY TO THE FACT THAT MUCH OF THE ram IS REQUIRED BY THE SYSTEM
  5576. SOFTWARE AS WORKING STORAGE, SUCH AS STORAGE OF IMMEDIATE RESULTS IN
  5577.  
  5578.  
  5579.                                    -119-
  5580.  
  5581. ============================================================================
  5582.  
  5583. ARITHMETIC OPERATIONS.  sINCE THE SYSTEM PROGRAM WILL PROBABLY NOT BE
  5584. WRITTEN WHEN THESE ESTIMATES ARE FIRST ATTEMPTED, THE PROBABILITY OF ERROR
  5585. IN THIS PORTION OF THE ESTIMATE MAY BE FAIRLY HIGH.
  5586.         iN ADDITION TO WORKING STORAGE, THE ram MUST PROVIDE STORAGE FOR:
  5587.         1.  tHE sTACK; THIS IS DESCRIBED IN THE pROGRAMMING mANUAL.
  5588.         2.  pERIPHERAL INPUT DATA STORAGE.
  5589.         3.  pERIPHERAL OUTPUT DATA STORAGE.
  5590.         iTEMS 2 AND 3 ABOVE CAN BE EVALUATED QUITE ACCURATELY SINCE A DE-
  5591. TAILED ANALYSIS OF THE PERIPHERAL DEVICES HAS USUALLY BEEN COMPLETED WHEN
  5592. THESE ESTIMATES ARE FIRST ATTEMPTED.  iN GENERAL, A BLOCK OF ram MUST BE
  5593. MADE AVAILABLE FOR EACH PERIPHERAL DEVICE.  tHE AMOUNT OF ram REQUIRED FOR
  5594. EACH IS A FUNCTION OF THE TYPE OF PERIPHERAL DEVICE BEING INTERFACED AND
  5595. JUST HOW THE DEVICE IS TO BE CONTROLLED.
  5596.         tHE AMOUNT OF ram REQUIRED BY THE STACK IS A FUNCTION OF BOTH THE
  5597. INTERRUPT STRUCTURE AND THE SYSTEM SOFTWARE.  aS A RESULT, AN ESTIMATE OF
  5598. THIS REQUIREMENT MUST BE BASED ON THE SYSTEM PROGRAMMER'S BEST ESTIMATES
  5599. OF HIS REQUIREMENTS.  tHIS SHOULD BE COMBINED WITH AN ESTIMATE OF THE RE-
  5600. QUIRED WORKING STORAGE AND THE PERIPHERAL DATA STORAGE REQUIREMENTS TO OB-
  5601. TAIN AN ESTIMATE OF THE TOTAL SYSTEM ram.
  5602.  
  5603. 2.4.3   rom
  5604.         tHE AMOUNT OF rom REQUIRED IN A SYSTEM CANNOT BE DETERMINED ACCU-
  5605. RATELY UNTIL THE SYSTEM PROGRAM IS COMPLETED.  hOWEVER, BY PARTITIONING THE
  5606. SYSTEM PROGRAM INTO DEFINABLE PIECES, AN ESTIMATE CAN BE MADE OF EACH TASK
  5607. AND THE TOTAL CAN BE OBTAINED OF THE rom REQUIRED BY EACH SECTION.
  5608.         mOST PROGRAMS CONSIST OF EASILY DEFINED SECTIONS SUCH AS THE SOFTWARE
  5609. FOR EACH PERIPHERAL DEVICE, ARITHMETIC ROUTINES, ETC.  tHESE ARE THE PIECES
  5610. WHICH SHOULD BE EXAMINED SEPARATELY TO ESTIMATE THE rom REQUIRED BY EACH.
  5611.  
  5612.  
  5613.                                    -120-
  5614.  
  5615. ============================================================================
  5616.  
  5617. 2.5 evaluating system performance
  5618.     aS DISCUSSED IN THE PREVIOUS SECTION, THE PERIPHERAL INTERFACE STRUCTURE
  5619. FOR A SYSTEM IS FAIRLY EASY TO CONFIGURE IF ONE ASSUMES THAT mcs6520-TYPE DE-
  5620. VICES ARE USED.  hOWEVER, BEFORE GOING TOO FAR INTO HARDWARE CONSTRUCTION, IT IS
  5621. IMPORTANT THAT THE TOTAL SYSTEM PERFORMANCE BE EVALUATED TO MINIMIZE THE PROBA-
  5622. BILITY THAT MAJOR PROBLEMS WILL ARISE IN THE LATER STAGES OF THE DESIGN.
  5623.     eVALUATING SYSTEM PERFORMANCE INVOLVES FIRST DETERMINING WHETHER OR NOT
  5624. THE PROCESSOR IS CAPABLE OF PROCESSING ALL INTERRUPTS WITH THE SPEED REQUIRED
  5625. AND THEN DETERMINING THAT THE PROCESSOR HAS SUFFICIENT TIME TO PERFORM NON-
  5626. INTERRUPT OPERATIONS.
  5627.     tHE PRIORITIZED INTERRUPT STRUCTURE ASSUMES THAT AT TIMES, MORE THAN ONE
  5628. INTERRUPT WILL OCCUR AND THAT THERE WILL BE DELAYS ENCOUNTERED IN SERVICING SOME
  5629. INTERRUPTS CAUSED BY THE PRESENCE OF OTHER INTERRUPTS.  tHIS STRUCTURE WILL PER-
  5630. FORM SATISFACTORILV IF THESE DELAYS ARE NOT TOO GREAT.
  5631.     tHE INTERRUPT PROCESSING TIME SHOULD BE EVALUATED STARTING WITH THE HIGHEST
  5632. PRIORITY INTERRUPT, THEN GOING TO THE NEXT HIGHEST PRIORITY, EACH TIME KEEPING
  5633. IN MIND THE TOTAL TIME WHICH CAN BE LOST DUE TO CONCURRENT HIGHER PRIORITY
  5634. INTERRUPTS.  eACH TIME AN INTERRUPT IS EXAMINED, THE WORST MICROPROCESSOR RE-
  5635. SPONSE TIME WHICH CAN BE ENCOUNTERED SHOULD BE ESTIMATED.  iF THIS TIME IS STILL
  5636. ADEQUATE FOR THE FUNCTION BEING HANDLED BY THE INTERRUPT, THAT ASPECT OF THE
  5637. SYSTEM OPERATION CAN HE EXPECTED TO PERFORM SATISFACTORILY.
  5638.     tHE ABILITY OF THE mcs650x MICROPROCESSORS TO HANDLE INTERRUPTS QUICKLY AND
  5639. CONVENIENTLY REPRESENTS ONE OF THE REAL STRENGTHS OF THIS MICROPROCESSOR FAMILY.
  5640. hOWEVER, IN ANY SYSTEM BEING DEVELOPED, IT IS IMPORTANT THAT THE PERCENTAGE OF
  5641. PROCESSOR TIME SPENT SERVICING INTERRUPTS NOT BE SO LARGE THAT THE INTERNAL DATA
  5642. HANDLING, ARITHMETIC OPERATIONS, ETC. CANNOT BE EXECUTED PROPERLY.
  5643.     sINCE THE INTERRUPTS ARE USUALLY ASYNCHRONOUS AND ARE NOT RELATED DIRECTLY
  5644. TO THE MAIN LINE PROGRAM, THE TIME LOST TO INTERRUPTS CAN USUALLY BE VIEWED AS
  5645. AN AVERAGE PERCENTAGE OF THE TOTAL TIME.  tHE SPEED WITH WHICH THE MAIN PROGRAM
  5646. CAN BE EXECUTED WILL BE REDUCED BY THIS PERCENTAGE.
  5647.     tHE INTERRUPT SERVICE ROUTINES ARE USUALLY SHORT AND EASY TO EVALUATE.
  5648. hOWEVER, THE MAIN PROGRAM IS MUCH MORE DIFFICULT TO ESTIMATE.  fORTUNATELY, IT
  5649. IS ALSO USUALLY MUCH LESS CRITICAL.  tHOSE OPERATIONS WHICH MUST MEET A
  5650.  
  5651.  
  5652.                                    -121-
  5653.  
  5654. ============================================================================
  5655.  
  5656. PARTICULAR SPEED REQUIREMENT CAN BE EXAMINED IN DETAIL BY THE PROGRAMMER TO DE-
  5657. TERMINE THE EXECUTION TIME.  tHIS ESTIMATED EXECUTION TIME MUST THEN BE REDUCED
  5658. TO ALLOW FOR THE TIME LOST TO INTERRUPTS.
  5659.     tHE FINAL STEP TO ASSURING SATISFACTORY SYSTEM PERFORMANCE IS A WORST-CASE
  5660. ANALYSIS.  tHIS IS TO DETERMINE IF THERE ARE ANY PLACES IN THE PROGRAM WHERE
  5661. WORST-CASE INTERRUPTS CAN CAUSE EXCESSIVE DELAYS IN THE EXECUTION OF OTHER PRO-
  5662. GRAMS BEING EXECUTED.  aLTHOUGH THE EFFORT INVOLVED IN A COMPLETE WORST-CASE
  5663. ANALYSIS IS USUALLY EXCESSIVE, THIS IS ONE PART OF THE SYSTEM DEVELOPMENT TASK
  5664. WHICH CON LEAD TO SIGNIFICANTLY GREATER ASSURANCE OF SUCCESS FOR THE ENTIRE DE-
  5665. VELOPMENT PROCESS.
  5666.  
  5667.  
  5668.                                    -122-
  5669.  
  5670. ============================================================================
  5671.  
  5672.                                 chapter 3
  5673.  
  5674.  
  5675.                 bringing up the mcs6500 microcomputer system
  5676.  
  5677.  
  5678. 3.0 introduction to microcomputer testing
  5679.     aFTER MANY HOURS OF PLANNING, HARDWARE CONSTRUCTION, AND PROGRAMMING EFFORT,
  5680. THE MICROCOMPUTER SYSTEM DESIGNER MUST FACE WHAT CAN BE HIS MOST DIFFICULT TASK:
  5681. "BRINGING UP" HIS SYSTEM.  tHE MODERN MICROCOMPUTER WITH ITS MINIMUM CHIP COUNT,
  5682. AND ITS MINIMUM NUMBER OF CONTROL AND DATA LINES REPRESENTS A TREMENDOUS ADVANCE
  5683. IN SYSTEM DESIGN WHEN EVERYTHING IS WORKING PROPERLY. hOWEVER, IT CAN ALSO REPRE-
  5684. SENT A TESTING NIGHTMARE TO THE DESIGNER WHO IS ATTEMPTING TO TROUBLE-SHOOT THE
  5685. HARDWARE AND SOFTWARE WHICH CONSTITUTE THE TOTAL DESIGN.
  5686.     a MICROCOMPUTER LACKS MANY OF THE THINGS WHICH MAKE TESTING OF CONVENTIONAL
  5687. LOGIC RELATIVELY CONVENIENT.  tO BEGIN WITH, ONE SIMPLY CANNOT SEE MOST OF THE
  5688. CONTROL SIGNALS, DATA TRANSFERS, ETC. WHICH ALLOW THE SYSTEM TO OPERATE.  iN
  5689. ADDITION, IT IS IMPOSSIBLE TO EXAMINE DIRECTLY THE CONTENTS OF THE REGISTERS AND
  5690. LATCHES WHICH STORE DATA WITHIN THE PROCESSOR.  tHIS DATA CAN ONLY BE EXAMINED
  5691. INDIRECTLY BY LOOKING AT THE SIGNALS ON THE INPUTS AND OUTPUTS TO THE CHIP AT
  5692. THE PROPER TIME.
  5693.     tHIS PROBLEM IS COMPOUNDED BY THE FACT THAT MANY PROGRAMS MUST BE TESTED
  5694. "DYNAMICALLY"; I.E., THE SYSTEM MUST BE RUNNING AT ITS FULL OPERATING SPEED WITH
  5695. NON-RECURRING EVENTS OR WITH A TOTAL LACK OF USABLE OSCILLOSCOPE TRIGGERING
  5696. SIGNALS.
  5697.     fOR THESE AND MANY OTHER REASONS, IT IS IMPORTANT THAT THE SYSTEM DESIGNER
  5698. BUILD EFFECTIVE TESTING CAPABILITY INTO BOTH HIS HARDWARE AND HIS SOFTWARE.
  5699. tHIS IS PARTICULARLY TRUE FOR THE PRE-PRODUCTION PROTOTYPES.  wHEN COMBINED WITH
  5700. THE PROCEDURES DISCUSSED BELOW, THIS WILL MINIMIZE BOTH THE TIME AND THE EFFORT
  5701. SPENT IN PRODUCING THAT FIRST OPERATIONAL SYSTEM.  aFTER THE PROGRAM AND THE
  5702. HARDWARE ARE COMPLETELY DEBUGGED, MANY OF THE TESTING TOOLS DISCUSSED BELOW CAN
  5703. BE REMOVED FROM THE PROTOTYPE DESIGN WITHOUT AFFECTING SYSTEM PERFORMANCE.  tHIS
  5704. ALLOWS THE DESIGNER TO ARRIVE AT HIS FINAL PRODUCTION DESIGN VERY SHORTLY AFTER
  5705. HE HAS PROVEN THAT THE PROTOTYPES ARE OPERATING SATISFACTORILY.
  5706.  
  5707.  
  5708.                                    -123-
  5709.  
  5710. ============================================================================
  5711.  
  5712. 3.1 static testing
  5713.  
  5714. 3.1.1   iNTRODUCTION
  5715.         sTATIC TESTING, I.E., EXECUTION OF THE PROGRAM, ONE CYCLE OR ONE
  5716. INSTRUCTION AT A TIME, IS THE FIRST STEP IN THE CHECKOUT OF ANY SYSTEM.
  5717. iN THIS WAY, THE GENERAL FLOW OF THE PROGRAM CAN BE EXAMINED AND FOR MUCH
  5718. OF THE PROGRAM THE VALIDITY OF DATA TRANSFERS INTO AND OUT OF MEMORY CAN
  5719. BE VERIFIED.  aS SHOWN IN fIGURE 3.1, THE LOGIC NECESSARY TO CONTROL rdy
  5720. TO ALLOW sINGLE cYCLE AND sINGLE iNSTRUCTION eXECUTION IS RELATIVELY
  5721. SIMPLE.  tHIS HARDWARE AND ITS USE IN SYSTEM TESTING ARE DISCUSSED BELOW.
  5722.  
  5723. 3.1.2   sINGLE cYCLE eXECUTION
  5724.         tHE TIMING REQUIRED FOR sINGLE cYCLE eXECUTION IS SHOWN IN fIGURE
  5725. 3.2.  iN THIS OPERATION, THE rdy LINE HAS BEEN BROUGHT LOW (gnd) TO HALT
  5726. THE PROCESSOR.  tO ALLOW EXECUTION OF A SINGLE CYCLE, THE rdy LINE GOES
  5727. HIGH (+2.4V),  FOR ONE CYCLE EACH TIME THE sINGLE cYCLE SWITCH IS ACTI-
  5728. VATED.  nOTE THAT THE rdy LINE GOES HIGH WHILE THE p1 CLOCK IS HIGH AND
  5729. THE INTERNAL TIMING COUNTER ADVANCES ON THE NEXT p1 CLOCK PULSE.
  5730.         sINGLE CYCLE OPERATION ALLOWS STOPPING THE PROCESSOR IN ANY CYCLE
  5731. EXCEPT A write CYCLE.  tHIS ALLOWS DETAILED EXAMINATION OF ALL CYCLES OF
  5732. THE INSTRUCTION FETCH OPERATION.  iN ADDITION, IT PERMITS DETAILED EXAMINA-
  5733. TION OF OPERAND FETCHES.  tHUS, IT IS POSSIBLE TO VERIFY THE OPERATION OF
  5734. MOST OF THE HARDWARE INVOLVED IN MEMORY ADDRESSING AND CONTROL.  iT IS ALSO
  5735. POSSIBLE TO VERIFY THE OPERATION OF MOST OF THE PERIPHERAL INTERFACE HARD-
  5736. WARE.  tHIS CAN GREATLY REDUCE THE TIME REQUIRED TO TEST THE FULL DYNAMIC
  5737. OPERATION OF THE PERIPHERAL DEVICE.
  5738.         nOTE THAT IF DEPRESSING THE sINGLE cYCLE SWITCH ALLOWS THE PROCESSOR
  5739. TO ADVANCE INTO A write CYCLE, THE PROCESSOR WILL COMPLETE THIS CYCLE AND
  5740. WILL THEN STOP IN THE FIRST read CYCLE (r/w = 1) WHICH FOLLOWS.  tHIS TIM-
  5741. ING IS SHOWN IN fIGURE 3.2.
  5742.         aPPENDIX a CONTAINS A DETAILED SUMMARY OF THE DATA WHICH SHOULD
  5743. APPEAR ON THE ADDRESS AND DATA LINES DURING EACH CYCLE OF THE mcs6501 AND
  5744. mcs6502 INSTRUCTIONS.
  5745.         nOTE THAT THE PROCESSOR OFTEN PUTS OUT AN ADDRESS AND FETCHES DATA
  5746. WHICH IT IGNORES.  tHIS IS AN INHERENT FEATURE OF THE PROCESSOR WHICH USES
  5747. A "LOOK AHEAD" APPROACH TO PIPELINING.  eXAMINATION OF THE sync SIGNAL WILL
  5748. ALLOW THE DESIGNER TO KEEP TRACK OF EXACTLY WHEN THE DATA FETCHED FROM
  5749. MEMORY IS UTILIZED WITHIN THE PROCESSOR AND WHEN IT IS IGNORED.
  5750.  
  5751.  
  5752.                                    -124-
  5753.  
  5754. ============================================================================
  5755.  
  5756.  
  5757.                               [ hard125.gif ]
  5758.  
  5759.  
  5760.                     sUGGESTED sTATIC tEST cONTROL lOGIC
  5761.  
  5762.                                 figure 3.1
  5763.  
  5764.  
  5765.                                    -125-
  5766.  
  5767. ============================================================================
  5768.  
  5769.                --- --- --- --- --- --- --- -/- --- --- --- --- ---
  5770. p1             {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5771.               -- --- --- -/- --- --- --- --- --- --- --- --- --- --
  5772.  
  5773.  
  5774.               -- --- --- -/- --- --- --- --- --- --- --- --- --- --
  5775. p2             {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5776.                --- --- --- --- --- --- --- -/- --- --- --- --- ---
  5777.  
  5778.  
  5779.               -----       /----------------------------------------
  5780. "halt" switch     {$7c}
  5781.                   --------/
  5782.  
  5783.  
  5784.               -----------------             /------
  5785. "single cycle" switch         {$7c}                   {$7c}
  5786. (note 3)                      --------------/     -----------------
  5787.  
  5788.  
  5789.               -------           -----               -----
  5790. rdy                 {$7c}           {$7c}   {$7c}               {$7c}   {$7c}
  5791.                     -------------   -----------------   -----------
  5792.  
  5793.  
  5794.               -- --- --------------- --------------- --- ---- -----
  5795. address bus     x   x               x               x   x    x
  5796.               -- --- --------------- --------------- --- ---- -----
  5797.  
  5798.  
  5799.                   -    ---/----------- -----/-------- -    -    ---
  5800. data bus      ---< >--<               x              x >--< >--<
  5801.                   -    ---/----------- -----/-------- -    -    ---
  5802.  
  5803.  
  5804.               ---------------------------------------   -----------
  5805. r/w                                                 {$7c}   {$7c}
  5806.                                                     -----
  5807.  
  5808.  
  5809. internal processor states
  5810.  
  5811.                    -----------------                        -------
  5812. t0                 {$7c}               {$7c}                        {$7c}
  5813.               ------               --------------------------
  5814.  
  5815.  
  5816.                                    ---------------------
  5817. t1                                 {$7c}                   {$7c}
  5818.               ----------------------                   ------------
  5819.  
  5820.  
  5821.                                                        ------
  5822. t2                                                     {$7c}    {$7c}
  5823.               ------------------------------------------    -------
  5824.  
  5825.  
  5826. notes:  1.  -/- indicates an undetermined time period during which the signal
  5827.             will change.
  5828.         2.  the data bus enters the high- impedance state during each phase one
  5829.             pulse. however, while the processor is stopped the data bus will
  5830.             appear to remain high or low as shown
  5831.         3.  switch actuation is indicated by a low signal.
  5832.  
  5833.  
  5834.                             sINGLE cYCLE tIMING
  5835.                                 figure 3.2
  5836.  
  5837.  
  5838.                                    -126-
  5839.  
  5840. ============================================================================
  5841.  
  5842.         a VERY SIMPLE "DATA TRAP" CAN BE BUILT INTO PROTOTYPE SYSTEMS TO
  5843. ALLOW EXAMINATION OF THE ADDRESS AND DATA GENERATED BY THE PROCESSOR DURING
  5844. write CYCLES.  tHIS TRAP MAY LATCH THE CONTENTS OF BOTH THE ADDRESS AND
  5845. DATA BUSSES OR IT MAY LATCH ONLY THE ADDRESS BUS.  tHE LATTER CAN BE SUF-
  5846. FICIENT IF A SEPARATE MEANS OF EXAMINING DATA IN MEMORY IS PROVIDED (SEE
  5847. sECTION 3.3).  a SUGGESTED CONFIGURATION FOR THE "DATA TRAP" IS SHOWN IN
  5848. fIGURE 3.3.  tHIS CIRCUIT CAN BE USED TO DISPLAY THE CONTENTS OF THE AD-
  5849. DRESS AND DATA BUSSES FOR BOTH read AND write CYCLES.  tHE write DATA IS
  5850. LATCHED AND HELD DURING THE NEXT read CYCLE.  dEPRESSING THE lATCH rESET
  5851. SWITCH THEN OPENS THE INPUTS TO THE LATCHES AND ALLOWS MONITORING OF THE
  5852. SUBSEQUENT read CYCLES.
  5853.  
  5854. 3.1.3   sINGLE iNSTRUCTION eXECUTION
  5855.         wHILE IT IS EXTREMELY USEFUL TO BE ABLE TO ANALYZE THE EXECUTION OF
  5856. EACH INSTRUCTION IN DETAIL, IT IS OFTEN SUFFICIENT JUST TO LOOK AT THE GEN-
  5857. ERAL PROGRAM FLOW.  tHIS IS PARTICULARLY USEFUL WHEN EXAMINING THE OPERA-
  5858. TION OF BRANCHES AND JUMPS IN A PROGRAM.  sINGLE INSTRUCTION EXECUTION IS
  5859. DESIGNED TO ALLOW THIS CAPABILITY ON THE mcs6502 WHICH OUTPUTS A sync SIG-
  5860. NAL.
  5861.         tHE OPERATION OF THE SINGLE INSTRUCTION EXECUTION LOGIC IS BASED ON
  5862. GENERATION OF A sync SIGNAL WITHIN THE PROCESSOR.  tHIS SIGNAL GOES HIGH
  5863. (> +2.4V dc) DURING EACH op code FETCH CYCLE.  sINGLE INSTRUCTION EXECU-
  5864. TION IS IMPLEMENTED BY USING sync TO FORCE rdy LOW (< +0.4V dc).  uNDER
  5865. THESE CONDITIONS, THE PROCESSOR WILL ALWAYS STOP WITH AN op code ADDRESS
  5866. ON THE ADDRESS BUS AND THE op code ON THE DATA BUS.  tHE TIMING FOR THIS
  5867. OPERATION IS SHOWN IN fIGURE 3.4.  nOTE THAT THIS DIAGRAM ASSUMES THAT THE
  5868. PROCESSOR IS STOPPED IN AN op code FETCH CYCLE.  dEPRESSING THE sINGLE
  5869. iNSTRUCTION SWITCH (fIGURE 3.1) ALLOWS EXECUTION OF THAT INSTRUCTION.  tHE
  5870. PROCESSOR THEN STOPS WHEN THE NEXT op code IS FETCHED.
  5871.  
  5872.  
  5873.                                    -127-
  5874.  
  5875. ============================================================================
  5876.  
  5877.                     -----------
  5878. ab0 ----------------+         +----------------ab0
  5879. ab1 ----------------+         +----------------ab1
  5880. ab2 ----------------+    8    +----------------ab2
  5881. ab3 ----------------+         +----------------ab3
  5882. ab4 ----------------+   bit   +----------------ab4
  5883. ab5 ----------------+         +----------------ab5
  5884. ab6 ----------------+  latch  +----------------ab6
  5885. ab7 ----------------+         +----------------ab7
  5886.                  ---+         {$7c}
  5887.                  {$7c}  -----------
  5888.                  {$7c}
  5889.                  {$7c}  -----------
  5890. ab8 -------------+--+         +----------------ab8
  5891. ab9 -------------+--+         +----------------ab9
  5892. ab10-------------+--+    8    +----------------ab10
  5893. ab11-------------+--+         +----------------ab11
  5894. ab12-------------+--+   bit   +----------------ab12
  5895. ab13-------------+--+         +----------------ab13
  5896. ab14-------------+--+  latch  +----------------ab14
  5897. ab15-------------+--+         +----------------ab15
  5898.                  +--+         {$7c}
  5899.                  {$7c}  -----------
  5900.                  {$7c}
  5901.                  {$7c}  -----------
  5902. db0 -------------+--+         +----------------db0
  5903. db1 -------------+--+         +----------------db1
  5904. db2 -------------+--+    8    +----------------db2
  5905. db3 -------------+--+         +----------------db3
  5906. db4 -------------+--+   bit   +----------------db4
  5907. db5 -------------+--+         +----------------dbs
  5908. db6 -------------+--+  latch  +----------------db6
  5909. db7 -------------+--+         +----------------db7
  5910.                  +--+         {$7c}
  5911.                  {$7c}  -----------
  5912.                  {$7c}
  5913.                  --------------------------------------
  5914.                                                       {$7c}
  5915.                                                       {$7c}
  5916. ___                 -----                             {$7c}
  5917. run ----------------+    \                            {$7c}
  5918.                     {$7c} and )--------------------       {$7c}
  5919.                   --+    /                    {$7c}       {$7c}
  5920.                   {$7c} -----                     o       {$7c}
  5921.                   {$7c}                       ---------   {$7c}
  5922.                  /o                       {$7c}   s   {$7c}   {$7c}
  5923.                 /   reset latch     ------+d     q+----
  5924.                   o                 {$7c}     {$7c}       {$7c}
  5925.                   {$7c}                 {$7c}     {$7c}       {$7c}
  5926.                   {$7c}                -+-    {$7c}       {$7c}
  5927.                  -+-                -     {$7c}       {$7c}  d type flip - flop
  5928.                   -                       {$7c}       {$7c}
  5929.                                           {$7c}       {$7c}
  5930.                                           {$7c}       {$7c}
  5931.                                           {$7c}       {$7c}
  5932.                     -----                 {$7c}       {$7c}
  5933. p2  ----------------+    \                {$7c}       {$7c}
  5934. ___     {$7c}\          {$7c} and )--------------o{$7c}c      {$7c}
  5935. r/w ----+ >o--------+    /                {$7c}       {$7c}
  5936.         {$7c}/          -----                 ---------
  5937.  
  5938.  
  5939.                     mICROPROCESSOR sINGLE cYCLE dATA tRAP
  5940.                                 figure 3.3
  5941.  
  5942.  
  5943.                                    -128-
  5944.  
  5945. ============================================================================
  5946.  
  5947.              -- --- --- --- ---  /- --- --- --- --- --- --- --- --
  5948.            p1 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5949.               --- --- --- --- -/  --- --- --- --- --- --- --- ---
  5950.  
  5951.  
  5952.               --- --- --- --- -/  --- --- --- --- --- --- --- ---
  5953.            p2 {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}   {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c} {$7c}
  5954.              -- --- --- --- ---  /- --- --- --- --- --- --- --- --
  5955.  
  5956.  
  5957.              ----------          /--------------------------+-----
  5958.   halt switch         {$7c}                                     {$7c}
  5959.                       ---------/                            {$7c}
  5960.                                                             {$7c}
  5961.                                                             {$7c}
  5962.                                       ----------------------+-----
  5963. sing. inst sw            {$7c}            {$7c}                     {$7c}
  5964.              ------------+-----/ /-----     {$7c}               {$7c}
  5965.                          {$7c}                  {$7c}               {$7c}
  5966.                          {$7c}                  {$7c}               {$7c}
  5967.              -------------               ---+------------   {$7c}
  5968.           rdy            {$7c}               {$7c}  {$7c}           {$7c}   {$7c}
  5969.                          ------/ /--------  {$7c}           ----+-----
  5970.                          {$7c}                  {$7c}               {$7c}
  5971.                          {$7c}                  {$7c}               {$7c}
  5972.              ------------+-----/ /-----------           ----+-----
  5973.          sync\\\\\\\\\\\\{$7c}                  {$7c}           {$7c}   {$7c}
  5974.              -------------                  -------------   {$7c}
  5975.                          {$7c}                  {$7c}               {$7c}
  5976.                          {$7c}                  {$7c}               {$7c}
  5977.              ------------+-----/ /-----------           ----+-----
  5978.            t0\\\\\\\\\\\\{$7c}                  {$7c}           {$7c}   {$7c}
  5979.              -------------                  -------------   {$7c}
  5980.                          {$7c}                  {$7c}               {$7c}
  5981.                          {$7c}                  {$7c}               {$7c}
  5982.              -------------                  -----           {$7c}
  5983.            t1\\\\\\\\\\\\{$7c}                  {$7c}   {$7c}           {$7c}
  5984.              ------------+-----/ /-----------   ------------+-----
  5985.                          {$7c}                  {$7c}               {$7c}
  5986.                          {$7c}                  {$7c}               {$7c}
  5987.              -------------                  {$7c}   -----       {$7c}
  5988.            t2\\\\\\\\\\\\{$7c}                  {$7c}   {$7c}   {$7c}       {$7c}
  5989.              ------------+-----/ /----------+----   --------+-----
  5990.                          {$7c}                  {$7c}               {$7c}
  5991.                          {$7c}                  {$7c}               {$7c}
  5992.              -------------                  {$7c}       -----   {$7c}
  5993.            t3\\\\\\\\\\\\{$7c}                  {$7c}       {$7c}   {$7c}   {$7c}
  5994.              ------------+-----/ /----------+--------   ----+-----
  5995.                          {$7c}                  {$7c}               {$7c}
  5996.               processor  {$7c}    processor     {$7c}execute complete processor
  5997.                running   {$7c}     stopped      {$7c}  instruction  {$7c}  stopped
  5998.                          {$7c}                  {$7c}               {$7c}
  5999.  
  6000.  
  6001.                         sINGLE iNSTRUCTION eXECUTION
  6002.                                 figure 3.4
  6003.  
  6004.  
  6005.                                    -129-
  6006.  
  6007. ============================================================================
  6008.  
  6009. 3.2 dynamic testing
  6010.  
  6011. 3.2.1   iNTRODUCTION
  6012.         tHROUGH STATIC TESTING TECHNIQUES, THE DESIGNER SHOULD BE ABLE TO
  6013. VERIFY THE OPERATION OF MOST OF HIS PROCESSOR INTERFACE HARDWARE, SUCH AS
  6014. THE bUS eXPANDERS AND aDDRESS dECODERS (FOR SELECTING romS, ramS, ETC.).
  6015. hOWEVER, THIS IS ONLY A FIRST STEP TO ASSURING PROPER SYSTEM OPERATION.
  6016. mOST PERIPHERAL DEVICES CANNOT BE PROPERLY TESTED UNLESS THE PROCESSOR IS
  6017. OPERATING AT FULL SPEED.  tHIS NECESSITATES FULL DYNAMIC TESTING.
  6018.         dYNAMIC TESTING GENERALLY INVOLVES CAUSING THE PROCESSOR TO EXECUTE
  6019. A PROGRAM LOOP, I.E., TO EXECUTE A REPETITIVE SEQUENCE OF INSTRUCTIONS.
  6020. tHIS ALLOWS THE USE OF AN OSCILLOSCOPE IN EXAMINING THE PROCESSOR OPERA-
  6021. TION.  tHIS REPETITIVE OPERATION CAN BE EXTERNALLY INDUCED THROUGH THE
  6022. res OR iNTERRUPT (irq OR nmi) LINES, OR IT CAN BE A PART OF THE PROGRAM
  6023. BEING EXECUTED.  bOTH TECHNIQUES PLAY AN IMPORTANT ROLE IN THE SYSTEM
  6024. CHECKOUT PROCESS.
  6025.  
  6026. 3.2.2   eXTERNALLY iNDUCED lOOPS
  6027.         tHE MOST DIRECT MEANS OF CAUSING THE PROCESSOR TO EXECUTE A LOOP IS
  6028. TO DRIVE ONE OF THE DIRECT INPUTS (res, irq OR nmi) WITH A SIGNAL GEN-
  6029. ERATOR.  tHIS TECHNIQUE CAN BE USED TO TROUBLE-SHOOT SYSTEMS WHICH ARE ONLY
  6030. PARTIALLY OPERATIONAL SINCE IT DOES NOT RELY ON PROPER EXECUTION OF A PAR-
  6031. TICULAR SET OF INSTRUCTIONS TO CAUSE LOOPING TO OCCUR.  hOWEVER, THIS TECH-
  6032. NIQUE CAN ONLY BE USED IF AN OSCILLOSCOPE CAN BE EMPLOYED IN EXAMINING
  6033. SYSTEM OPERATION.  tO DO SO REQUIRES AN EFFECTIVE SCOPE-SYNCHRONIZING
  6034. SIGNAL.  fOR THIS REASON, THE FOLLOWING SECTION WILL DISCUSS NOT ONLY THE
  6035. SIGNALS TO BE TESTED AND THE WAVEFORMS WHICH ONE SHOULD SEE BUT ALSO THE
  6036. TECHNIQUES ONE MAY USE TO ASSURE GENERATION OF AN EFFECTIVE SCOPE SYNC.
  6037.         pROBABLY THE MOST BASIC OPERATION PERFORMED WITHIN THE PROCESSOR IS
  6038. THE reset FUNCTION.  wITHOUT THE reset HARDWARE AND SOFTWARE OPERATING PRO-
  6039. PERLY, THE SYSTEM WILL NEVER ENTER ITS NORMAL OPERATING MODE.  fOR THIS
  6040. REASON, THE FIRST MAJOR FUNCTION TO BE TESTED, BOTH STATICALLY AND DYNAM-
  6041. ICALLY, IS THE res INPUT.
  6042.         a SUGGESTED CONFIGURATION FOR DYNAMICALLY TESTING THE reset INPUT IS
  6043. SHOWN IN fIGURE 3.5.  iN THIS DIAGRAM, THE reset INPUT IS BEING DRIVEN FROM
  6044. A SIGNAL GENERATOR.  bETWEEN THE SIGNAL GENERATOR AND THE PROCESSOR IS A d-
  6045. TYPE FLIP-FLOP TO SYNCHRONIZE THE CHIP RESET SIGNAL TO THE PROCESSOR CLOCKS.
  6046.  
  6047.  
  6048.                                    -130-
  6049.  
  6050. ============================================================================
  6051.  
  6052.                +5v
  6053.                 o
  6054.                 {$7c}
  6055.                -+-
  6056.                {$7c} {$7c}
  6057.                {$7c} {$7c}
  6058.                {$7c} {$7c}
  6059.                -+-
  6060.                 {$7c}    ---------
  6061.                 {$7c}    {$7c}       {$7c}
  6062.   from signal---+----+       +---
  6063.   generator          {$7c}       {$7c}  {$7c}
  6064.                      {$7c}       {$7c}  {$7c}
  6065.                      {$7c}       {$7c}  {$7c}
  6066.                      {$7c}       {$7c}  {$7c}
  6067.                      {$7c}       {$7c}  {$7c}
  6068.            p2-------o{$7c}c      {$7c}  {$7c}
  6069.                      {$7c}       {$7c}  {$7c}
  6070.                      ---------  {$7c}
  6071.                                 {$7c}   ----
  6072.                                 ----\   \                      ___
  6073. from power-on------------------------)   )o------ to system   (res)
  6074.    reset                        ----/   /           reset
  6075.                                 {$7c}   ----
  6076.                  --    {$7c}\       {$7c}    nor
  6077.                 -++-   {$7c} \      {$7c}
  6078.              ---o  o---+  >o-----
  6079.              {$7c}  manual {$7c} /
  6080.             -+- reset  {$7c}/
  6081.              -
  6082.  
  6083.  
  6084.                           sUGGESTED cONFIGURATION
  6085.                          fOR dYNAMIC rESET tESTING.
  6086.                                 figure 3.5
  6087.  
  6088.  
  6089.                                    -131-
  6090.  
  6091. ============================================================================
  6092.  
  6093. tHIS SYNCHRONIZING IS EXTREMELY IMPORTANT BECAUSE IT STABILIZES THE DATA
  6094. BEING DISPLAYED ON THE OSCILLOSCOPE WITH RESPECT TO THE SCOPE SYNC.
  6095.         tHE MOST EFFECTIVE PROCEDURE FOR TESTING THE DYNAMIC OPERATION OF
  6096. THE reset FUNCTION IS TO RESET THE SYSTEM INITIALLY AT A RATE OF APPROXI-
  6097. MATELY ONE-FIFTH OF THE CLOCK RATE.  tHIS WILL ALLOW THE PROCESSOR TO
  6098. EXECUTE THE FIRST FEW INSTRUCTIONS IN THE RESET SEQUENCE BEFORE BEING RE-
  6099. CYCLED.  tHE DESIGNER CAN THEN CLOSELY EXAMINE THE TIMING OF ADDRESS, DATA
  6100. AND r/w SIGNALS.  uSE OF THE DELAYED SWEEP FEATURE AVAILABLE ON MOST MODERN
  6101. OSCILLOSCOPES WILL ALLOW EXAMINATION OF ANY PART OF THE reset OPERATION.
  6102.         wHEN PROPER OPERATION OF THE reset INPUT HAS BEEN VERIFIED, THE SAME
  6103. TECHNIQUE CAN BE APPLIED TO BOTH THE irq AND THE nmi INPUTS.  dRIVING EITHER
  6104. OF THESE INPUTS WITH A SIGNAL GENERATOR SYNCHRONIZED TO THE PROCESSOR CLOCKS
  6105. WILL ALLOW A CLOSE EXAMINATION OF THE DYNAMIC OPERATION OF THE INTERRUPT
  6106. POLLING SEQUENCE.  tHIS PROVIDES A VERY IMPORTANT LOOK AT THE pERIPHERAL
  6107. iNTERFACE SELECTION LOGIC TO ASSURE THAT ALL PERIPHERAL DEVICES ARE RESPOND-
  6108. ING TO THE PROPER ADDRESS.
  6109.  
  6110. 3.2.3   sOFTWARE lOOPS
  6111.         dURING SYSTEM CHECKOUT, THE DESIGNER MUST VERIFY THE OPERATION OF
  6112. MANY SIMPLE FUNCTIONS WHICH MUST ALL OPERATE PROPERLY BEFORE THE ENTIRE SYS-
  6113. TEM IS OPERATIONAL.  tHE USE OF SIMPLE SOFTWARE LOOPS WILL ALLOW A DETAILED
  6114. EXAMINATION OF ONE FUNCTION AT A TIME.  mOST IMPORTANTLY, IT ALLOWS THE
  6115. DESIGNER TO USE AN OSCILLOSCOPE TO EXAMINE EVENTS WHICH MAY OCCUR VERY IN-
  6116. FREQUENTLY AND WHICH ARE NORMALLY VERY DIFFICULT TO SEE.
  6117.         tHE EXECUTION OF SOFTWARE LOOP REQUIRES THE WRITING OF A PROGRAM
  6118. WHICH ENDS IN A jmp BACK TO THE BEGINNING OF THE PROGRAM.  oNCE THE PROCESSOR
  6119. ENTERS THE LOOP IT WILL CONTINUE TO EXECUTE THE SAME SEQUENCE OF INSTRUCTIONS
  6120. UNTIL THE reset SWITCH IS PUSHED.
  6121.         tO UTILIZE SOFTWARE LOOPS EFFECTIVELY THERE MUST BE AN EVENT WHICH
  6122. HAPPENS ONLY ONCE EACH TIME THE PROCESSOR EXECUTES THE LOOP.  tHIS SIGNAL
  6123. CAN BE USED TO TRIGGER THE OSCILLOSCOPE.  iNCLUDING A SINGLE write OPERATION
  6124. IN THE PROGRAM ALLOWS THE r/w SIGNAL TO BE USED TO TRIGGER THE SCOPE.  lIKE-
  6125. WISE, CAREFUL SELECTION OF ADDRESS IN THE PROGRAM WILL ALLOW USE OF AN
  6126. ADDRESS LINE AS A SCOPE SYNC.  fINALLY, LACKING ANYTHING ELSE, SETTING AND
  6127. RESETTING A PERIPHERAL INTERFACE DEVICE OUTPUT PIN AT THE BEGINNING OF THE
  6128. PROGRAM PROVIDES A VERY EFFECTIVE SYNC SIGNAL.
  6129.  
  6130.  
  6131.                                    -132-
  6132.  
  6133. ============================================================================
  6134.  
  6135. 3.3 system diagnosis using hard wa re programmer aids
  6136.     iN ADDITION TO THE TECHNIQUES DESCRIBED IN WHICH THE USER UTILIZES OSCIL-
  6137. LOSCOPES AND HIS OWN INNOVATIVE TECHNIQUES FOR ANALYZING DATA, mos tECHNOLOGY,
  6138. iNC. MAKES AVAILABLE TO THE USER SEVERAL HARDWARE AIDS WHICH ASSIST IN DEBUGGING
  6139. OF A MICROCOMPUTER SYSTEM AND ALSO A SOFTWARE AID CALLED THE EMULATOR.  tHE
  6140. HARDWARE AIDS ARE A kEYBOARD iNPUT mONITOR (kim), A tELETYPE iNPUT mONITOR (tim),
  6141. AND A mICROCOMPUTER dEVELOPMENT tERMINAL (mdt) .  eACH OF THESE AIDS IS DESIGNED
  6142. TO ALLOW THE DEBUGGING OF MICROPROCESSOR CODE WITHOUT NEED TO RESORT TO SCOPES
  6143. OR OTHER DATA TRAPPING TECHNIQUES, BUT RATHER ATTEMPTS TO REDUCE THE PROBLEM OF
  6144. DEBUGGING THE CODE TO THE SAME TECHNIQUES THAT ARE AVAILABLE ON A LARGE COMPUTER
  6145. SYSTEM.
  6146.     tHE BASIC ASSUMPTION OF EACH OF THESE DEVICES, EITHER HARDWARE OR SOFTWARE,
  6147. IS THAT THE MICROPROCESSOR SYSTEM IS CONNECTED CORRECTLY, ALL THE ELECTRICAL
  6148. CHARACTERISTICS HAVE ALREADY BEEN CHECKED AND MET AND THAT THE ONLY PROBLEM TO
  6149. BE SOLVED IS ONE OF DEBUGGING PROGRAMS AND i/o HARDWARE WHICH HAVE BEEN ENTERED
  6150. INTO THE MICROCOMPUTER.
  6151.     eACH OF THE HARDWARE TECHNIQUES ASSUMES THAT THE USER WILL START HIS DESIGN
  6152. SEQUENCE WITH ALL OF HIS PROGRAMMING BEING DONE IN SOME FORM OF RANDOM ACCESS
  6153. MEMORY WHICH IS LOADABLE FROM AN i/o DEVICE, EXAMINABLE BY THE i/o DEVICE AND
  6154. CHANGEABLE BY THE i/o DEVICE.  tHIS IS THE NORMAL FIRST STEP IN DEVELOPING A
  6155. MICROCOMPUTER SYSTEM AND ONE THAT SHOULD BE USED PRIOR TO COMMITTING ANY OF THE
  6156. HARDWARE TO promS OR ALTERABLE MEMORY.  tHE ONLY EXCEPTION TO THIS IS IF THE
  6157. USER IS TAKING ADVANTAGE OF THE SOFTWARE EMULATOR AND IF HIS PROGRAM IS SUCH THAT
  6158. THE EMULATOR CAN GIVE HIM A SIGNIFICANT DEGREE OF CONFIDENCE IN HIS CODING IN
  6159. WHICH CASE THE USE OF THE kim OR tim DEVICES IS PRIMARILY THAT OF ALLOWING HIM
  6160. TO HAVE FINAL DEBUGGING ACCESS TO HIS VARIOUS MEMORY LOCATIONS.  tHEREFORE, THE
  6161. COMMON CHARACTERISTIC OF ALL THESE APPROACHES IS THAT BY SOME TECHNIQUE, IN THE
  6162. CASE OF THE eMULATOR BY READING AN INPUT FILE, IN THE CASE OF tim BY READING
  6163. IN AN INPUT TAPE FROM THE OUTPUT cROSS-aSSEMBLER, IN THE CASE OF kim LOADING A
  6164. PROGRAM INTO MEMORY BY HAND, AND IN THE CASE OF mdt EITHER ASSEMBLING THE PRO-
  6165. GRAM OR LOADING INPUT DATA FROM THE cROSS-aSSEMBLER, THE PROGRAM HAS BEEN
  6166. ENTERED INTO A PROGRAM STORAGE.  eACH OF THESE TECHNIQUES ALLOWS THE USER TO
  6167.  
  6168.  
  6169.                                    -133-
  6170.  
  6171. ============================================================================
  6172.  
  6173. INITIALIZE VARIOUS MEMORY AND REGISTER LOCATIONS AND TO "START EXECUTION" OF THIS
  6174. PROGRAM AT A MEMORY LOCATION.  tECHNIQUES ARE IMPLEMENTED WHICH ALLOW THE USER
  6175. TO STOP HIS PROGRAM AT A PARTICULAR POINT AND ANALYZE THE RESULTS OF THE OPERA-
  6176. TIONS WHICH HAVE JUST BEEN COMPLETED.  iF THE RESULTS ARE CORRECT, THE CODING
  6177. BETWEEN THE START POINT AND THE STOP POINT IS CORRECT.  iF THE CODING IS INCOR-
  6178. RECT, THE USER ANALYZES THE DATA WHICH HE DISPLAYS BY USE OF THE i/o DEVICE AND
  6179. THE HARDWARE OR SOFTWARE THAT INTERFACES IT, AND DETERMINES BY INSPECTION OF THE
  6180. DATA AND ANALYSIS OF HIS CODING WHAT ERROR COULD CAUSE THE RESULTS DETECTED.
  6181.     iF THE TECHNIQUE OF JUST ANALYZING CODING IS NOT SUFFICIENT, EACH OF THESE
  6182. SYSTEMS HAS THE ABILITY TO ALLOW THE USER TO GO IN AND RE-EXECUTE THE CODE WITH
  6183. NEW DATA OR THE ORIGINAL DATA, ONLY STOPPING AT EARLIER STOP POINTS UNTIL HE IS
  6184. ABLE TO TRAP THE OPERATION THAT CAUSES THE ERRONEOUS DATA TO OCCUR.  bOTH THE
  6185. EMULATOR AND mdt HAVE ADDITIONAL FEATURES WHICH ALLOW THE USER TO ANALYZE THE
  6186. OPERATION OF INSTRUCTIONS AS THEY OCCUR WHICH IS VERY USEFUL IN DETERMINING
  6187. WHICH PART OF THE PROGRAM CAUSES OPERATIONS TO BE PERFORMED INCORRECTLY.
  6188.     tHE NORMAL DESIGN CYCLE SHOULD ACTUALLY INCLUDE A COMBINATION OF TECHNIQUES.
  6189. iF THE USER IS NOT USING mdt, THEN HE SHOULD WRITE HIS CODE ON A cROSS-aSSEMBLER
  6190. AND DEBUG MUCH OF HIS LOOPS AND NON-i/o PROGRAMMING USING THE eMULATOR.  tHE
  6191. eMULATOR HAS BEEN DESIGNED TO ALLOW VERY EASY ANALYSIS OF DATA PATHS, LOOPS AND
  6192. PERFORMANCE OF PROGRAM ON A NON-HARDWARE BASIS.  iT IS PARTICULARLY USEFUL FOR
  6193. THE USER WHO IS DEVELOPING ROUTINES WHICH HAVE SIGNIFICANT LOOP AND SUBROUTINING
  6194. OR ANY COMPLETED ALGORITHM.
  6195.     tHE USE OF EMULATION HAS THE FOLLOWING ADVANTAGES:
  6196.     1.  iT GIVES THE POWER OF A LARGE MACHINE TO ALLOW TRACING OPERATIONS WHICH
  6197.         ARE NOT VERY FEASIBLE AT THE HARDWARE LEVEL.
  6198.     2.  iT MAY INDICATE PRIOR TO THE TIME THAT THE HARDWARE IS COMMITTED THAT
  6199.         MORE MEMORY OR MORE TIME IS REQUIRED TO PERFORM AN OPERATION WHICH MAY
  6200.         DRAMATICALLY CHANGE THE HARDWARE IMPLEMENTATION WHICH IS TO BE COMMITTED.
  6201.     iN ANY CASE, ATTEMPTING TO BRING UP THE MICROPROCESSOR SYSTEM WITHOUT USE
  6202. OF ASSEMBLERS AND AN INTERFACE MODULE SUCH AS tim IS NOT THE MOST EFFICIENT USE
  6203. OF THE DESIGNER'S TIME.
  6204.     fOR THE USER WHO IS JUST STARTING IN MICROPROCESSORS, THE kim TECHNIQUE IS
  6205. ACCEPTABLE BECAUSE THE LENGTH AND COMPLEXIBILITY OF THE PROGRAMS TO BE WRITTEN
  6206. SHOULD BE SHORTER AND THE USER CAN PROGRAM DIRECTLY IN hEX AND DEBUG USING THE
  6207. kim EXCLUSIVELY.
  6208.  
  6209.  
  6210.                                    -134-
  6211.  
  6212. ============================================================================
  6213.  
  6214. 3.3.1   kim--kEYBOARD iNPUT mONITOR
  6215.         kim ALLOWS THE USER TO KEY IN hEX VALUES INTO SPECIFIED MEMORY LOCA-
  6216. TIONS AND TO MONITOR RESULTS.
  6217.         kim IS AVAILABLE TO THE SYSTEM DESIGNER IN SEVERAL FORMS.  iN ITS
  6218. SIMPLEST FORM, A SINGLE DEVICE OF THE mcs6530 TYPE INCLUDING 1024 BYTES OF
  6219. PRE-PROGRAMMED rom MAY BE INCLUDED AS A COMPONENT IN AN EXISTING SYSTEM.
  6220. tHE kim ARRAY INCLUDES A MONITOR PROGRAM WHICH PROVIDES THE FOLLOWING
  6221. FEATURES:
  6222.         A) dATA INPUT AND OUTPUT CONTROL FROM SERIAL TELETYPEWRITERS (asr 33,
  6223. sILENT 700, ETC.)
  6224.         B) dATA INPUT AND SYSTEM CONTROL FROM A 22-KEY KEYBOARD
  6225.         C) aDDRESS AND DATA DISPLAY ON A 6-DIGIT, 7-SEGMENT TYPE DISPLAY.
  6226.         a MICROPROCESSOR SYSTEM DESIGNED TO INCLUDE THE kim ARRAY WILL ALLOW
  6227. THE DESIGNER TO PERFORM THE FOLLOWING OPERATIONS:
  6228.         A) tHE USER MAY SELECT KEYBOARD (kb) OR TELETYPEWRITER (tty) MODE
  6229. FOR ENTRY, DISPLAY AND CONTROL.
  6230.         B) iF IN kb MODE, THE USER MAY ENTER ADDRESS OR DATA FIELDS FROM THE
  6231. KEYBOARD.  tHE USER MAY DISPLAY THE CONTENTS OF ANY ADDRESS LOCATION IN THE
  6232. SYSTEM AND CAN MODIFY THE CONTENTS OF ANY ADDRESS LOCATION (OTHER THAN PRE-
  6233. PROGRAMMED rom LOCATIONS).  tHE STEP OPERATION (step KEY) PROVIDES A CON-
  6234. VENIENT METHOD FOR DISPLAYING THE DATA CONTAINED IN SUCCESSIVE MEMORY LOCA-
  6235. TIONS.  pROGRAM EXECUTION MAY BE AUTHORIZED TO BEGIN FROM ANY SELECTED
  6236. STARTING ADDRESS USING THE run KEY.
  6237.         C) iF IN THE tty MODE, THE USER MAY OBTAIN A PRINTING OF THE DATA AT
  6238. ANY MEMORY LOCATION.  hE CAN MODIFY THE DATA CONTAINED IN ANY MEMORY LOCA-
  6239. TION.  pROGRAM LISTING FROM ANY START ADDRESS TO ANY END ADDRESS MAY BE
  6240. AUTHORIZED.  pAPER TAPES MAY BE LOADED OR GENERATED AUTOMATICALLY.  fINALLY,
  6241. PROGRAM EXECUTION MAY BE INITIATED FROM ANY SELECTED STARTING ADDRESS.
  6242.         D) iN EITHER MODE, THE USER TERMINATES PROGRAM EXECUTION USING
  6243. THE stop KEY WHICH WILL RETURN CONTROL OF THE SYSTEM TO THE kim PROGRAM.
  6244. aLTERNATIVELY, A DEPRESSION OF THE rst KEY CAUSES A TOTAL RESET OF THE SYS-
  6245. TEM AND A RETURN OF THE SYSTEM TO kim PROGRAM CONTROL.
  6246.         tHE kim ARRAY IS ALSO AVAILABLE TO THE SYSTEM DESIGNER AS A PART OF
  6247. A SPECIAL DESIGN-IN SUB-SYSTEM PROVIDED IN THE FORM OF A PRINTED CIRCUIT
  6248. CARD.  iNCLUDED ON THIS CARD ARE THE FOLLOWING FUNCTIONAL ELEMENTS:
  6249.  
  6250.  
  6251.                                    -135-
  6252.  
  6253. ============================================================================
  6254.  
  6255.         A) mcs6502 MICROPROCESSOR ARRAY
  6256.         B) mcs6530-002 ARRAY (CONTAINING THE kim MONITOR PROGRAM)
  6257.         C) 22-KEY KEYBOARD AND MODE-SELECT SWITCH
  6258.         D) 6-DIGIT, 7-SEGMENT led DISPLAY
  6259.         E) 1024 x 8 ram
  6260.         F) MCS6530-003 ARRAY PROVIDING AN INTERVAL TIMER, 16 i/o PINS, AND
  6261. 64 BYTES OF ram
  6262.         G) aLL INTERFACE CIRCUITS FOR OPERATION WITH SERIAL TELETYPEWRITERS.
  6263.         tHIS SUBSYSTEM PROVIDES THE SAINE OPERATING FEATURES DESCRIBED
  6264. EARLIER BUT IS SUPPLIED AS AN OPERATING UNIT REQUIRING THE USER TO PROVIDE
  6265. ONLY THE +5vOLT POWER SUPPLY IN ORDER TO COMMENCE OPERATING.  aS A "STAND-
  6266. ALONE" SUBSYSTEM, THE USER MAY ENTER AND DEBUG PROGRAMS OF UP TO 1024
  6267. STEPS AND CONTROL THE ACTION OF UP TO 16 i/o PINS.
  6268.         fOR FURHER DETAILS ON PHYSICAL AND OPERATING CHARACTERISTICS OF THE
  6269. kim ARRAY AND SUBSYSTEM, THE READER IS REFERRED TO THE kim MANUAL SUPPLIED
  6270. SEPARATELV.
  6271.  
  6272. 3.3.2   tim - tELETYPE iNPUT mONITOR
  6273.         tim IS A PREPROGRAMMED mcs6530.  tHE APPLICATION OF THE tELETYPE
  6274. iNPUT mONITOR IS TO ALLOW THE USER TO INTERFACE TO AN ascii DEVICE SUCH AS
  6275. A tELETYPE, crt, eXECUPORT, ETC. USING THE ascii SERIAL COMMUNICATION TECH-
  6276. NIQUES TO COMMUNICATE TO AND FROM THE MICROPROCESSOR.  tHIS EFFECTIVELY
  6277. ALLOWS THE USER TO LOAD MEMORY FROM THE KEYBOARD OR FROM PAPER TAPE OR
  6278. CASSETTE WHICH ARE ATTACHED TO HIS DEVICE.  bY THE ADDITION OF A SINGLE
  6279. ttl PACKAGE TO THE SYSTEM, tim CAN BE CONFIGURED SO THAT IT IS THE STARTING
  6280. POINT FOR THE MICROPROCESSOR, BUT ONCE THE INITIALIZATION HAS BEEN ACCOM-
  6281. PLISHED IT TRANSFERS ITSELF OUT OF THE START-UP MEMORY, CHANGES THE REST
  6282. OF THE MICROPROSSESSOR MEMORY TO NORMAL CONFIGURATION AND OPERATES TRANS-
  6283. PARENT TO THE MICROPROCESSOR.
  6284.         tHE TECHNIQUE FOR USING THE tim TO DEVELOP A MICROPROCESSOR SYSTEM
  6285. IS PRIMARILY AFTER THE SYSTEM IS DETERMINED TO BE WIRED CORRECTLY BY THE
  6286. TECHNIQUES ALREADY DESCRIBED.  iT IS THEN USED TO DEBUG THE USER'S CODE BY
  6287. MEANS OF ALLOWING THE USER TO INPUT PRE-SPECIFIED VALUES, EXECUTE PORTIONS
  6288. OF THE CODE AND EXAMINE THE RESULTS.
  6289.         iT SHOULD BE NOTED THAT BECAUSE i/o DEVICES ARE EXTENSION OF MEMORY
  6290. DEBUGGING TECHNIQUES ARE SIMPLIFIED.  tHEY CAN BE CONFIGURED TO
  6291.  
  6292.  
  6293.                                    -136-
  6294.  
  6295. ============================================================================
  6296.  
  6297. CONTROL i/o DEVICES TO TEST THAT LIGHTS CAN BE LIT, SWITCHES TESTED,
  6298. MOTORS STARTED AND STOPPED, ETC.  fOR INSTANCE, ALL OF THE CONNECTIONS TO
  6299. LIGHTS AND SWITCHES CAN BE CHECKED FROM THE TELETYPE KEYBOARD BY
  6300. WRITING INTO THE i/o REGISTERS THE APPROPRIATE CODE THAT TURNS ON THE
  6301. LIGHTS.  cORRECT OPERATION OF SWITCHES CAN BE CHECKED WITHOUT THE PROGRAM
  6302. RUNNING BY PUTTING THE SWITCHES IN EITHER STATE AND READING THE i/o DEVICE
  6303. RESULT INDICATED TO THE PROGRAMMER.  tHIS TYPE OF CHECKING TOTALLY SHAKES
  6304. OUT THE i/o CONNECTIONS TO MAKE SURE THE i/o DEVICE IS LOCATED IN THE COR-
  6305. RECT MEMORY ADDRESS, DETERMINES THAT THE WIRING TO THE i/o DEVICES IS COR-
  6306. RECT AND CHECKS ON THE MICROPROCESSOR BUS.
  6307.         a RATIONAL TECHNIQUE FOR USING EITHER tim OR kim IS TO INTERCONNECT
  6308. THE DEVICE INTO THE SYSTEM TO GET THE MICROPROCESSOR TO PASS THE SINGLE-
  6309. STEP START-UP SEQUENCE AND THEN TO USE THE DEBUGGING CAPABILITY OF THE tim
  6310. PRIOR TO EXECUTING ANY OF THE USER'S CODE TO VERIFY THAT ALL INPUT/OUTPUT
  6311. CONNECTIONS ARE CORRECT.  iN CASES SUCH AS STOPPING MOTORS AND OTHER DEVICES
  6312. WHICH REQUIRE TIMING, THE PROPER CONNECTION TO THE MOTORS AND OTHER DEVICES
  6313. CAN BE CHECKED WITHOUT THE MOTOR ITSELF PHYSICALLY BEING CHECKED BY UNCON-
  6314. NECTING LEADS, OPENING UP CONNECTORS AND VERIFYING WITH A SCOPE OR A METER
  6315. THAT THE MICROPROCESSOR'S INFLUENCE AT THAT POINT IS AS WOULD BE EXPECTED
  6316. ON A STATIC BASIS.  tHEREFORE, THIS TECHNIQUE IS RECOMMENDED AS THE SECOND
  6317. STEP OF A START-UP SEQUENCE.
  6318.         sIGNIFICANT DETAILS ARE GIVEN IN THE SECTION ON THE USE OF RESTART
  6319. OR START SEQUENCE AND A SINGLE CYCLE OPERATION TO VERIFY THE INTERCONNEC-
  6320. TION OF MOST OF THE SYSTEM.  iT SHOULD BE RECALLED THAT THE INSTRUCTIONS
  6321. WERE GIVEN INDEPENDENT OF THE CODING THAT WAS AVAILABLE TO THE PROGRAMMER.
  6322.         tHE ADVANTAGE OF USING THE tim OR kim IN THE START-UP CHECK-OUT IS
  6323. THAT THERE IS KNOWN CODE WHICH IS GUARANTEED TO BE ACCURATE THAT SHOULD BE
  6324. EVOKED DURING THIS START-UP SEQUENCE.  bY LOOKING AT THE CODING OF THE rom
  6325. AS IT APPEARS IN THE DOCUMENTATION ON THE tim OR kim, THE USER CAN USE THE
  6326. KNOWN SEQUENCES FROM THE tim OR kim PROGRAM TO VERIFY THE START-UP SEQUENCE,
  6327. THEREBY REMOVING ONE MORE VARIABLE.  tHEREFORE, ALL INITIAL SYSTEMS CHECK-
  6328. OUT SHOULD BE DONE USING tim OR kim PROGRAM FIRST IN THE START-UP SEQUENCE
  6329. TO MAKE SURE THAT THE INTERCONNECTION TO tim AND TO MEMORY ARE COR-
  6330. RECT.  tHEN ONCE THE BASIC OPERATION OF tim HAS BEEN VERIFIED, THERE
  6331. IS A KNOWN SEQUENCE THAT THE tim WILL GO THROUGH DYNAMICALLY WHICH WILL
  6332. ALLOW THE USER TO VERIFY THAT THE tim IS OPERATIONAL.  tHEN THE USER SHOULD
  6333.  
  6334.  
  6335.                                    -137-
  6336.  
  6337. ============================================================================
  6338.  
  6339. VERIFY THE REST OF HIS MEMORY AND i/o CONNECTIONS BY USE OF WRITING AND
  6340. READING IN THE MEMORY LOCATIONS USING THE DEBUGGING FEATURE OF THE tim OR
  6341. kim.  tHIS VERIFIES THE CONNECTION AND OPERATION OF EACH OF THE CHIPS OF
  6342. THE SYSTEM AND WILL VERIFY ALL THE INTERCONNECTIONS TO ALL OUTBOARD DEVICES.
  6343.         nOW THE PROBLEM IS TRULY REDUCED TO MAKING SURE THAT THE PROGRAM-
  6344. MER'S CODE IS CORRECT AND THE USER'S PROGRAM CAN BE LOADED BY MEANS OF
  6345. EITHER THROUGH-THE-KEYBOARD OR THROUGH-THE-AUXILIARY DEVICES.
  6346.         tHE PROGRAM CAN BE DEBUGGED AS A PROGRAM RATHER THAN WORRYING ABOUT
  6347. WHETHER OR NOT THE PROBLEM IS ONE OF HARDWARE OR SOFTWARE.  bY DEFINITION
  6348. OTHER THAN INCORRECT TIMING TO i/o DEVICES, THE PROBLEM HAS BEEN REDUCED TO
  6349. ONE OF PROGRAMMING MISTAKES.
  6350.         fOR A MORE DETAILED DISCUSSION ON THE PROGRAMMING ON tim, THE USER
  6351. IS REFERRED TO THE tim MANUAL SUPPLIED SEPARATELY.
  6352.  
  6353. 3.3.3   mdt--mICROCOMPUTER dEVELOPMENT tERMINAL
  6354.         aLMOST ALL OF THE SECTIONS IN THIS REPORT HAD TO DO WITH HOW ONE
  6355. GOES ABOUT INTERCONNECTING A SYSTEM AND DEBUGGING IT.  mdt IS A PREPACKAGED
  6356. SYSTEM AND, THEREFORE, SHOULD NOT HAVE THE PROBLEMS DESCRIBED ABOVE UNLESS
  6357. IT IS BEING USED IN CIRCUIT EMULATION MODE.  tHEREFORE, THE USER WILL PRI-
  6358. MARILY BE DEBUGGING HIS PROGRAMS AND HIS BASIC INTERCONNECTION TO HIS i/o
  6359. DEVICES WITH THE mdt.  tHEREFORE, USE OF THE mdt REPRESENTS A SIGNIFICANTLY
  6360. DIFFERENT TECHNIQUE THAN DESCRIBED IN THIS MANUAL.  tHIS TECHNIQUE IS DE-
  6361. SCRIBED IN THE mdt MANUAL.
  6362.  
  6363.  
  6364.                                    -138-
  6365.  
  6366. ============================================================================
  6367.  
  6368. 3.4 microprocessor star tupprocedure
  6369.  
  6370. 3.4.1   iNTRODUCTION
  6371.         tHIS SECTION ATTEMPTS TO TIE TOGETHER ALL OF THE TECHNIQUES PREVI-
  6372. OUSLY DISCUSSED INTO ONE ORDERED PROCEDURE.  tHIS PROCEDURE IS BASED ON
  6373. EXPERIENCE GAINED IN BRINGING UP SYSTEMS USING PROCESSORS FROM SEVERAL
  6374. DIFFERENT MANUFACTURERS.  wHILE IT IS CERTAINLY TRUE THAT NO SINGLE PRO-
  6375. CEDURE CAN BE EXPECTED TO CATCH ALL THE SOFTWARE AND HARDWARE ERRORS WHICH
  6376. CAN EXIST IN MICROCOMPUTER SYSTEMS, IT IS HOPED THAT THIS STEP-BY-STEP
  6377. APPROACH WILL ALLOW THE DESIGNER TO BRING UP HIS SYSTEM WITH AN ABSOLUTE
  6378. MINIMUM OF DIFFICULTY.
  6379.         tHIS PROCEDURE ASSUMES THE EXISTENCE OF sINGLE cYCLE AND/OR sINGLE
  6380. iNSTRUCTION LOGIC.  aNY OF THE sYSTEM dEVELOPMENT TOOLS DISCUSSED IN sEC-
  6381. TION 3.3 WILL ASSIST THE USER IN BRINGING UP HIS SYSTEM.  tHESE DEVICES
  6382. ALLOW CONVENIENT ENTRY OF TEST PROGRAMS AS WELL AS MODIFICATION OF THE SYS-
  6383. TEM PROGRAM AND DATA.
  6384.         eACH STEP IN THE PROCEDURE INCLUDES THE FOLLOWING INFORMATION:
  6385.         *   sECTION OF THE sYSTEM HARDWARE/SOFTWARE TO BE CHECKED.
  6386.         *   hARDWARE, TEST EQUIPMENT, ETC. REQUIRED TO PERFORM THE TEST.
  6387.         *   aCTION TO BE TAKEN IN IMPLEMENTING THE TEST.
  6388.         *   eXPECTED RESULTS.
  6389.         *   sUGGESTED PROCEDURES FOR ANALYZING FAILURE MODES.
  6390.         iT CANNOT BE EMPHASIZED TOO STRONGLY THAT ONE MUST UTILIZE A VERY
  6391. METHODICAL, STEP-BY-STEP PROCEDURE AIMED AT SOLVING ONE PROBLEM AT A TIME
  6392. WITHIN THE SYSTEM.  iT IS VERY EASY FOR SEVERAL PROBLEMS TO AMPLIFY EACH
  6393. OTHER TO SUCH AN EXTENT THAT NOTHING WITHIN THE SYSTEM SEEMS TO BE OPERAT-
  6394. ING PROPERLY.  cORRECTING PROBLEMS ONE AT A TIME WILL ULTIMATELY YIELD A
  6395. COMPLETE WORKING SYSTEM WITH MINIMUM FRUSTRATION.
  6396.  
  6397. 3.4.2   sYSTEM pOWER--sTEP 1
  6398.         iT IS GENERALLY RECOMMENDED THAT FIRST PROTOTYPES OF MICROCOMPUTER
  6399. SYSTEMS BE BUILT USING SOCKETS FOR THE icS (PROCESSOR, MEMORIES, ETC.).
  6400. oNE DISTINCT ADVANTAGE OF THIS TECHNIQUE IS THAT IT ALLOWS THE DESIGNER TO
  6401. VERIFY THAT vDD AND vSS ARE PROPERLY CONNECTED TO EACH SOCKET BEFORE THE
  6402. CHIPS ARE INSERTED.  tHE vDD LINE SHOULD BE WITHIN THE TOLERANCES SPECIFIED
  6403. ABOUT THE 5 VOLT NOMINAL RELATIVE TO vSS.  tHIS BASIC FIRST STEP CAN HELP
  6404. AVOID POWER SUPPLY CONNECTIONS WHICH MAY BE FATAL TO THE CHIPS IN THE SYS-
  6405. TEM.
  6406.  
  6407.  
  6408.                                    -139-
  6409.  
  6410. ============================================================================
  6411.  
  6412.         aFTER USING A VOLTMETER OR OSCILLOSCOPE TO CHECK POWER CONNECTIONS,
  6413. INSERT THE PROCESSOR INTO ITS SOCKET AND VERIFY THAT THE ADDITIONAL CUR-
  6414. RENT DRAIN IS WITHIN SPECIFICATIONS FOR THIS DEVICE.
  6415.         bEFORE INSERTING THE OTHER DEVICES, EXAMINE THE ADDRESS LINES, sync
  6416. LINE (6502) AND THE OUTPUT CLOCKS (6502, 6503) TO MAKE SURE THAT THE PRO-
  6417. CESSOR IS GENERATING SIGNALS.  tHE ADDRESS LINES SHOULD BE INCREMENTING
  6418. AND THE SYNC LINE SHOULD BE GENERATING REGULAR, POSITIVE GOING PULSES.
  6419. tHE res LINE AND THE rdy LINE SHOULD BE HIGH (> +2.4v) FOR THIS TEST.
  6420.         iF THE PROCESSOR APPEARS TO BE OPERATING AND POWER CONSUMPTION IS
  6421. REASONABLE, THE REST OF THE DEVICES IN THE SYSTEM CAN BE INSERTED INTO
  6422. THEIR SOCKETS.
  6423.  
  6424. 3.4.3   bASIC sYSTEM tIMING--sTEP 2
  6425.         bEFORE ONE CAN EXPECT A MICROPROCESSOR SYSTEM TO FUNCTION, PROPER
  6426. OPERATION OF THE BASIC SYSTEM TIMING SIGNALS (p1, p2, ETC.) MUST BE VERI-
  6427. FIED.  tHE MOST IMPORTANT OF THESE SIGNALS IS THE SYSTEM CLOCK.
  6428.         a COMMON FAULT IN mc6800 AND mcs6501 SYSTEMS IS GENERATION OF INPUT
  6429. CLOCKS (p1 AND p2) WHICH ARE NOT FULL VOLTAGE OR WHICH HAVE SIGNIFICANT
  6430. OVERLAP.  aNOTHER VERY SERIOUS DIFFICULTY OFTEN ENCOUNTERED IS UNDERSHOOT.
  6431. eACH OF THE SPECIFICATIONS LISTED IN THE DATA SHEET FOR THE SYSTEM CLOCKS
  6432. MUST BE PROPERLY MET.  fIGURE 3.6A ILLUSTRATES THE PROBLEMS OFTEN EN-
  6433. COUNTERED IN CLOCK SIGNALS SUCH AS UNDERSHOOT AND OVERLAP.  fIGURE 3.6B IS
  6434. AN EXAMPLE OF mcs6501 p1 AND p2 CLOCKS AS THEY WOULD NORMALLY APPEAR IN A
  6435. PROPERLY OPERATING SYSTEM.
  6436.         iN SYSTEMS BASED ON OTHER THAN THE mcs6501, THE CLOCKS WHICH MUST
  6437. BE EXAMINED ARE THE PROCESSOR OUTPUT CLOCKS.  iN THE 6502, BOTH PHASES (p1
  6438. AND p2) ARE AVAILABLE FOR DRIVING THE REST OF THE SYSTEM.  iN THIS SYSTEM
  6439. IT IS NECESSARY TO CHECK THE CLOCK TIMING VERY CAREFULLY TO ASSURE THAT
  6440. THE TIMING OF THE CLOCK SIGNALS WITHIN THE PROCESSOR IS COMPATIBLE WITH
  6441. THAT USED ON THE SUPPORT CHIPS.
  6442.         uSING AN OSCILLOSCOPE, COMPARE THE p1 INPUT CLOCK AND THE p2 CLOCK
  6443. PRESENTED TO THE SUPPORT CHIPS TO VERIFY THAT THE DELAY DUE TO CLOCK BUF-
  6444. FERING DOES NOT EXCEED THE ALLOWABLE MAXIMUM.
  6445.  
  6446. 3.4.4   sYSTEM rESET--sTEP 3
  6447.         sTATIC AND DYNAMIC ANALYSIS OF THE rESET FUNCTION CAN PROVIDE VERY
  6448. DETAILED INFORMATION ON HOW THE SYSTEM IS OPERATING.  iN FACT, IT IS THIS
  6449.  
  6450.  
  6451.                                    -140-
  6452.  
  6453. ============================================================================
  6454.  
  6455.  
  6456.                     [ pICTURE OF oSCILLOSCOPE DISPLAY ]
  6457.  
  6458.  
  6459.         figure 3 6A - iMPROPER cLOCKS (nOTE UNDERSHOOT AND OVERLAP)
  6460.  
  6461.  
  6462.  
  6463.                     [ pICTURE OF oSCILLOSCOPE DISPLAY ]
  6464.  
  6465.  
  6466.                         figure 3.6B - pROPER cLOCKS
  6467.  
  6468.  
  6469.  
  6470.                                   mcs65o1
  6471.                             cLOCK tIMING sIGNALS
  6472.                                 figure 3.6
  6473.  
  6474.  
  6475.                                    -141-
  6476.  
  6477. ============================================================================
  6478.  
  6479.  
  6480.  
  6481.                     [ pICTURE OF oSCILLOSCOPE DISPLAY ]
  6482.  
  6483.  
  6484.                     figure 3. 7A - pROPER aDDRESS lINES
  6485.  
  6486.  
  6487.  
  6488.                     [ pICTURE OF oSCILLOSCOPE DISPLAY ]
  6489.  
  6490.  
  6491.                  figure 3. 7B - eXCESS aDDRESS lINE lOADING
  6492.  
  6493.  
  6494.  
  6495.                       aDDRESS lINES IN mcs650x sYSTEMS
  6496.                                 figure 3.7
  6497.  
  6498.  
  6499.                                    -142-
  6500.  
  6501. ============================================================================
  6502.  
  6503.  
  6504.  
  6505.                     [ pICTURE OF oSCILLOSCOPE DISPLAY ]
  6506.  
  6507.  
  6508.                     [ pICTURE OF oSCILLOSCOPE DISPLAY ]
  6509.  
  6510.  
  6511.                       tHE dATA bUS IN mcs650x sYSTEMS
  6512.                                 figure 3.8
  6513.  
  6514.  
  6515.                                    -143-
  6516.  
  6517. ============================================================================
  6518.  
  6519. STEP WHICH WILL VERIFY THE OPERATION OF MOST OF THE BASIC SYSTEM HARDWARE.
  6520. tHE TOOLS REQUIRED ARE:
  6521.         *   sINGLE cYCLE/sINGLE iNSTRUCTION lOGIC
  6522.         *   oSCILLOSCOPE
  6523.         *   sIGNAL GENERATOR (FOR DRIVING reset)
  6524.  
  6525. 3.4.4.1  sTATIC aNALYSIS OF sYSTEM dETAILS
  6526.          dEPRESS THE halt BUTTON AND THEN THE MANUAL reset SWITCH; THEN PUSH
  6527. THE SINGLE CYCLE SWITCH SIX TIMES.  tHIS WILL STEP THE PROCESSOR THROUGH THE
  6528. FIRST PART OF THE brk SEQUENCE AND INTO THE reset VECTOR FETCH.  aT THIS
  6529. TIME THE PROCESSOR SHOULD BE GENERATING fffc ON THE ADDRESS BUS AND THE rom
  6530. SHOULD HAVE PUT THE LOW ORDER BYTE OF THE reset VECTOR ONTO THE DATA BUS IN
  6531. RESPONSE TO THIS ADDRESS.  tHIS IS AN EXCELLENT TIME TO CHECK THE FOLLOWING
  6532. VERY BASIC ITEMS:
  6533.         a.  aDDRESS lINES:
  6534.             uSING THE OSCILLOSCOPE, VERIFY THAT THE LOGIC LEVELS ON THE
  6535.             ADDRESS LINES ARE PROPER AND THAT THEY ARE REFLECTED PROPERLY
  6536.             THROUGH ANY BUS EXPANDERS ONTO THE MEMORY AND PERIPHERAL
  6537.             CHIPS.  tHIS IS A VERY IMPORTANT TEST SINCE IMPROPER IMPLEMEN-
  6538.             TATION OF BUS EXPANDERS IS A VERY COMMON CIRCUIT FAULT.
  6539.         b.  rom/prom CHIP SELECTS:
  6540.             uSING THE OSCILLOSCOPE, VERIFY THAT THE ADDRESS fffc DOES
  6541.             SELECT THE rom WHICH CONTAINS THE LOW ORDER BYTE OF THE reset
  6542.             VECTOR.
  6543.         c.  dATA bUS:
  6544.             uSING THE OSCILLOSCOPE, VERIFY THAT THE VOLTAGES ON THE DATA
  6545.             BUS PINS OF THE PROCESSOR ARE PROPER.  iT IS IMPORTANT THAT
  6546.             THESE SIGNALS BE ANALYZED AT THE PROCESSOR TO ASSURE PROPER
  6547.             OPERATION OF ANY BI-DIRECTIONAL BUS EXPANDERS IN THE SYSTEM.
  6548.             iN THIS TEST, THE MOST COMMON INDICATION OF IMPROPER OPERATION
  6549.             OF THE DATA BUS EXPANDERS IS "FLOATING" PROCESSOR DATA BUS
  6550.             PINS, I.E., THE PROCESSOR DATA BUS PINS ARE BEING DRIVEN
  6551.             NEITHER HIGH NOR LOW BECAUSE THE BUS EXPANDERS ARE IN THE
  6552.             OPEN-CIRCUIT CONDITION OR ARE REVERSED.
  6553.  
  6554.  
  6555.                                    -144-
  6556.  
  6557. ============================================================================
  6558.  
  6559.         d.  mISCELLANEOUS pROCESSOR pINS:
  6560.             uSING THE OSCILLOSCOPE, BRIEFLY EXAMINE THE OTHER PROCESSOR
  6561.             PINS (r/w, irq, nmi, ETC.) TO ASSURE THAT THERE ARE NO VOLT-
  6562.             AGE LEVEL PROBLEMS DETECTABLE AT THIS POINT.  bOTH OF THE
  6563.             INTERRUPT INPUTS AND THE r/w OUTPUT SHOULD BE HIGH.  eXAMINE
  6564.             THE r/w SIGNAL ON THE INPUT TO THE MEMORY AND PERIPHERAL
  6565.             DEVICES.
  6566.         aFTER THESE INITIAL TESTS ARE COMPLETE, IT SHOULD BE POSSIBLE TO
  6567. PRESS THE SINGLE STEP SWITCH ONCE MORE TO FETCH THE HIGH ORDER BYTE OF THE
  6568. INTERRUPT VECTOR FROMADDRESS fffd. oN THE NEXT ACTUATION OF THE SINGLE
  6569. CYCLE SWITCH, THE PROCESSOR ADDRESS BUS SHOULD CONTAIN THE reset VECTOR
  6570. WHICH WAS FETCHED FROM MEMORY.
  6571.         aT THIS POINT, THE PROCESSOR IS READY TO EXECUTE THE SYSTEM INI-
  6572. TIALIZATION ROUTINE.  dURING INITIALIZATION, IT CAN BE EXPECTED THAT PRO-
  6573. GRAM MEMORY WILL BE ACCESSED, PERIPHERAL REGISTERS WILL BE LOADED, AND
  6574. INTERNAL PROCESSOR REGISTERS WILL BE CLEARED OR SET TO A STARTING VALUE.
  6575. iT IS EXTREMELY USEFUL TO EXECUTE THIS ROUTINE ONE INSTRUCTION AT A TIME TO
  6576. DETERMINE THAT EACH TIME PROGRAM MEMORY IS ACCESSED, THE PROPER INSTRUCTION
  6577. IS RETURNED.  hOWEVER, UNLESS A DATA TRAP IS PROVIDED, IT WILL BE MORE
  6578. MEANINGFUL TO UTILIZE DYNAMIC ANALYSIS TECHNIQUES TO ANALYZE THE OPERATION
  6579. OF PERIPHERAL DEVICES, SINCE MOST PERIPHERAL ACCESSES WILL BE FOR THE PUR-
  6580. POSE OF WRITING EITHER THE i/o CONTROL OR THE CONTROL REGISTERS IN THE
  6581. PERIPHERAL DEVICES.
  6582.  
  6583. 3.4.4.2  dYNAMIC aNALYSIS OF sYSTEM dETAILS
  6584.          tHE GENERAL TECHNIQUE OF DYNAMIC ANALYSIS IS DISCUSSED IN sECTION
  6585. 3.2.  tHE DISCUSSION WHICH FOLLOWS WILL USE THIS TECHNIQUE TO ANALYZE MANY
  6586. OF THE DETAILS OF THE SYSTEM OPERATION.
  6587.         sET UP THE SYSTEM AS DESCRIBED IN sECTION 3.2.2.  aFTER THE TEST
  6588. EQUIPMENT IS OPERATING PROPERLY, MOST OF THE SYSTEM OPERATION CAN BE VERI-
  6589. FIED USING ONLY THE OSCILLOSCOPE.
  6590.  
  6591. 3.4.4.2.1   aDDRESS bUS vERIFICATION
  6592.             tHE FIRST ITEM WHICH MUST BE CHECKED IS THE SPECIFIC TIMING OF
  6593. THE ADDRESS LINES.  tHESE LINES WILL CHANGE DURING THE FIRST PART OF p1 BUT
  6594. AFTER THE SPECIFIED PERIOD, THEY SHOULD STABILIZE AND REMAIN STABLE THROUGH
  6595.  
  6596.  
  6597.                                    -145-
  6598.  
  6599. ============================================================================
  6600.  
  6601. THE REST OF THE CYCLE.  fIGURE 3.7A SHOWS THE WAVEFORM WHICH ONE SHOULD EX-
  6602. PECT TO SEE WHILE EXAMINING p1, p2 AND TWO ADDRESS LINES.  iN THIS ILLUS-
  6603. TRATION, ONE ADDRESS LINE IS GOING HIGH AND THE OTHER IS GOING LOW.  tHESE
  6604. LINES ARE BEING GENERATED WITHIN THE PROCESSOR AND ARE GUARANTEED TO OPER-
  6605. ATE PROPERLY PROVIDED THE TOTAL LOADING ON THE PINS IS WITHIN SPECIFICA-
  6606. TIONS.  tHE MOST COMMON CAUSE OF BOTH VOLTAGE LEVEL AND RISE TIME PROBLEMS
  6607. IS OVERLOADING.  vOLTAGE LEVEL PROBLEMS ARE COMMONLY EVIDENCED BY THE
  6608. "ZERO" LEVEL BEING TOO HIGH, I.E., THE ADDRESS BUFFER IS BEING ASKED TO
  6609. SINK TOO MUCH CURRENT.  eXCESS CAPACITANCE IS USUALLY EVIDENCED BY THE RISE
  6610. ATID FALL TIMES BEING TOO LONG (fIGURE 3.7B).
  6611.         iN EXAMINING THE ADDRESS LINES, IT IS IMPORTANT THAT THE DATA BE
  6612. EXAMINED ON THE PROCESSOR AND DIRECTLY ON THE VARIOUS SUPPORT CHIPS.  tHIS
  6613. WILL ASSURE THAT ANY BUS EXPANDERS IN THE SYSTEM ARE OPERATING PROPERLY AND
  6614. THAT THE ADDRESSES ARE VALID WHERE THEY ARE ACTUALLY BEING USED.
  6615.  
  6616. 3.4.4.2.2   dATA bUS vERIFICATION
  6617.             aFTER THE ADDRESSES HAVE BEEN VERIFIED, THE NEXT STEP IS TO EX-
  6618. AMINE THE DATA BUS TO VERIFY THE VALIDITY OF DATA BEING TRANSFERRED BOTH
  6619. FROM THE PROCESSOR TO THE SUPPORT CHIPS AND FROM THE SUPPORT CHIPS BACK
  6620. INTO THE PROCESSOR.
  6621.             fIGURE 3.8 ILLUSTRATES THE WAVEFORM WHICH ONE CAN EXPECT TO SEE
  6622. ON THE DATA BUS LINES.  iT IS VERY IMPORTANT TO NOTE THAT DURING 80 THERE
  6623. IS NO WAY TO PREDICT THE VOLTAGE ON THE DATA BUS SINCE NEITHER THE PROCES-
  6624. SOR NOR THE SUPPORT CHIPS ARE DRIVING THESE LINES.  hOWEVER, DURING p1 THE
  6625. DATA BUS PINS SHOULD GO EITHER HIGH OR LOW.  iT IS ONLY DURING p2 (HIGH)
  6626. THAT THE VALIDITY OF THE DATA CAN BE VERIFIED.
  6627.             tHREE VERY IMPORTANT PARAMETERS MUST BE CONSIDERED WHEN EXAMIN-
  6628. ING THE DATA BUS.  tHESE ARE THE VOLTAGE LEVELS, THE TIME AT WHICH THE DATA
  6629. IS VALID AND THE DELAY FROM THE TRAILING EDGE OF p2 TO DATA BECOMING IN-
  6630. VALID.
  6631.             a.  vOLTAGE lEVELS:
  6632.                 tHE LOGIC LEVELS ON THE PROCESSOR DATA BUS MUST ALWAYS BE
  6633.                 GREATER THAN 2.4 VOLTS FOR A LOGIC 1 AND LESS THAN 0.4 VOLTS
  6634.                 FOR A LOGIC 0.  tHIS IS A VERY BASIC CONCEPT BUT A QUICK
  6635.                 CHECK ON THESE LEVELS VERY EARLY IN THE CHECKOUT PROCEDURE
  6636.                 CAN HELP THE DESIGNER AVOID HOURS OF ATTEMPTING TO MAKE A
  6637.  
  6638.  
  6639.                                    -146-
  6640.  
  6641. ============================================================================
  6642.  
  6643.                 SYSTEM OPERATE WITH SIGNALS WHICH ARE ACTUALLY MARGINAL BUT
  6644.                 WHICH ON THE SURFACE APPEAR TO BE SATISFACTORY.
  6645.                     aNOTHER VERY IMPORTANT ITEM TO CHECK IS WHETHER OR NOT
  6646.                 THE LOGIC "0" VOLTAGE IS ACTUALLY GOING NEGATIVE (BELOW gnd).
  6647.                 iT IS VERY IMPORTANT THAT THE LOGIC SIGNALS GOING INTO ALL
  6648.                 THE CHIP INPUTS NOT BE ALLOWED TO GO BELOW -0.3 VOLTS AS
  6649.                 INDICATED IN THE SPECIFICATIONS.
  6650.             b.  dATA vALID tIME:
  6651.                 tHE TIME AT WHICH DATA BECOMES VALID INDICATES THE TOTAL
  6652.                 TIME WHICH THE PROCESSOR OR MEMORY HAS AVAILABLE TO STABIL-
  6653.                 IZE THE GATES AND LATCHES USED TO TRAP THE DATA WITHIN THE
  6654.                 CHIP.  fOR THIS REASON THE DATA MUST NOT TAKE TOO LONG TO
  6655.                 REACH EITHER A VALID HIGH "1" OR A VALID LOW "0."  tHE PRI-
  6656.                 MARY CAUSE OF SLOW SIGNALS ON THE DATA BUS IS EXCESSIVE
  6657.                 LOADING, EITHER RESISTIVE OR CAPACITIVE.  cAREFULLY CHECK
  6658.                 THE DEVICES WHICH ARE ATTACHED TO THE BUS TO MAKE SURE THAT
  6659.                 THE TOTAL LOADING IS WITHIN SPECIFICATIONS.
  6660.             c.  hOLD tIME:
  6661.                 tHE LAST IMPORTANT CONSIDERATION, "HOLD TIME," IS DEFINED AS
  6662.                 THE TIME BETWEEN THE TRAILING EDGE OF THE p2 PULSE AND THE
  6663.                 POINT AT WHICH DATA IS NO LONGER VALID.  a MINIMUM OF 10
  6664.                 NSEC HOLD TIME IS REQUIRED FOR THE PROCESSOR TO TRAP THE
  6665.                 DATA INTO ITS INTERNAL INPUT LATCHES.  tHE PROCESSOR INTER-
  6666.                 NAL p2 PULSE IS USED TO GATE THE CONTENTS OF THE DATA BUS
  6667.                 INTO THESE LATCHES.  hOLD TIME IS ALSO REQUIRED BY THE VARI-
  6668.                 OUS SUPPORT CHIPS WITHIN THE SYSTEM.  cAREFULLY CHECK THE
  6669.                 SIGNALS AS THEY APPEAR ON THE ramS, romS, ETC. TO VERIFY
  6670.                 THAT EACH IS BEING OPERATED IN ACCORDANCE WITH ITS SPECIFI-
  6671.                 CATION.
  6672.  
  6673.  
  6674.                                    -147-
  6675.  
  6676. ============================================================================
  6677.  
  6678. 3.4.5   dETAILED cOMPONENT cHECK
  6679.         aFTER THE DYNAMIC CHECK OF THE RESET ROUTINE, THE NEXT STEP IS TO
  6680. ATTEMPT TO RUN THE SYSTEM PROGRAM.  tHE SUCCESS OF THIS OPERATION WILL
  6681. DETERMINE WHETHER OR NOT A FURTHER DETAILED COMPONENT CHECK IS NECESSARY.
  6682. iT IS IMPORTANT TO NOTE THAT THE CHECKOUT OF THE SYSTEM PROGRAM SHOULD
  6683. PROCEED ONE STEP AT A TIME IN MUCH THE SAME MANNER AS WE HAVE APPROACHED
  6684. THE HARDWARE CHECKOUT.  iF A CAREFUL EXAMINATION HAS BEEN MADE OF ALL OF
  6685. THE DEVICES, DATA PATHS, ETC. IN THE SYSTEM, THE SOFTWARE CHECKOUT CAN
  6686. PROCEED UNDER THE ASSUMPTION THAT THE HARDWARE IS FULLY OPERATIONAL.  hOW-
  6687. EVER, IT IS INEVITABLE THAT DOUBTS WILL ARISE.  tHERE ARE TIMES IN THE
  6688. SOFTWARE CHECKOUT PROCESS THAT THE PROGRAM WILL APPEAR TO BE INCORRECT;
  6689. DATA WON'T BE GOING INTO MEMORY AS IT SHOULD OR, IN GENERAL, SOME HARDWARE
  6690. FAILURE WILL BE INDICATED.  aS SOON AS THIS HAPPENS, THE SUSPECTED COM-
  6691. PONENTS SHOULD BE EXAMINED IN DETAIL.  iN KEEPING WITH THE POLICY OF "ONE
  6692. STEP OR ONE PROBLEM AT A TIME," IT IS IMPORTANT THAT POTENTIAL HARDWARE
  6693. PROBLEMS NOT BE ALLOWED TO INVALIDATE THE EFFORT BEING PUT INTO THE SOFT-
  6694. WARE CHECKOUT.
  6695.         cOMPONENT PROBLEMS CAN BE ONE OF TWO TYPES:  COMPONENT FAILURE,
  6696. I.E., A PART NOT OPERATING PER SPECIFICATIONS; OR SYSTEM FAILURE, I.E., A
  6697. PART BEING USED WRONG IN THE SYSTEM.  tHE LATTER PROBLEM CAN BE A RESULT
  6698. OF INCORRECT SYSTEM DESIGN OR INCORRECT WIRING.  tHE PROBLEM OF FUNCTIONAL
  6699. COMPONENTS NOT OPERATING PROPERLY IN THE SYSTEM IS THE ONE WHICH WILL BE
  6700. ADDRESSED HERE.  iN FACT, IF THERE IS ANY DOUBT ABOUT A COMPONENT BEING
  6701. FUNCTIONAL, IT SHOULD BE REPLACED IMMEDIATELY UPON VERIFICATION OF PROPER
  6702. SIGNALS TO ALL INPUTS.  iF IT STILL DOES NOT OPERATE PROPERLY, THE PROBLEM
  6703. IS MOST LIKELY SYSTEM RELATED.
  6704.         tHE DETAILED COMPONENT CHECK IS PERFORMED MOST EFFECTIVELY BY LOAD-
  6705. ING A SMALL LOOPING PROGRAM INTO THE SYSTEM ram.  fOR THIS REASON, THE tim
  6706. OR kim DEBUG SOFTWARE (SEE tim AND kim mANUALS) CAN BE OF SIGNIFICANT
  6707. VALUE IN THIS PROCESS.  tHE PROCEDURE INVOLVES STATIC AND DYNAMIC OPERATION
  6708. OF A SMALL TEST PROGRAM WHICH EXERCISES EACH OF THE COMPONENTS IN THE SYS-
  6709. TEM.  tHE GOAL OF THIS STEP SHOULD BE A COMPLETE VERIFICATION THAT ALL CHIP
  6710. SELECTS ARE OPERATING PROPERLY, THAT ALL DATA ADDRESS LINES ARE OPERATING
  6711. PROPERLY AND THAT THE SUPPORT CHIPS ARE DRIVING THE PROCESSOR PROPERLY.
  6712.  
  6713.  
  6714.                                    -148-
  6715.  
  6716. ============================================================================
  6717.  
  6718. tHE SUGGESTED PROCEDURE FOR CHECKOUT OF EACH TYPE OF COMPONENT IS DISCUSSED
  6719. SEPARATELY BELOW.
  6720.         a.  romS (proms):
  6721.             tHE MOST STRAIGHTFORWARD COMPONENT IN ANY MICROPROCESSOR SYSTEM
  6722.             IS THE rom.  tHIS DEVICE SIMPLY PUTS OUT AN 8-BIT WORD ONTO THE
  6723.             DATA BUS IN RESPONSE TO AN ADDRESS.  dIFFICULTY WITH roms IS
  6724.             USUALLY CAUSED BY IMPROPER CHIP SELECTS OR BY MIS-APPLICATION
  6725.             OF DEVICES WHICH ARE NOT PART OF THE mcs6500 FAMILY.  fOR THIS
  6726.             REASON, STATIC TESTING OF romS IS USUALLY A VERY EFFECTIVE FIRST
  6727.             STEP.  tHIS REQUIRES ENTERING A TEST PROGRAM INTO ram AND EXE-
  6728.             CUTING THIS PROGRAM USING THE SINGLE CYCLE SWITCH.  tHE PROGRAM
  6729.             ITSELF SHOULD SIMPLY PERFORM A read (FOR EXAMPLE, AN lda OR ldx
  6730.             INSTRUCTION) OF A SELECTED WORD FOR EACH rom CHIP TO BE TESTED.
  6731.             tHE CHIP SELECTS CAN THEN BE EXAMINED AND AT THE SAME TIME, THE
  6732.             ADDRESS LINES PRESENTED TO THE CHIPS CAN BE EXAMINED ALONG WITH
  6733.             THE DATA PUT ON THE DATA BUS.
  6734.                 aFTER THE CHIP SELECT, ADDRESS BUS AND DATA BUS HAVE BEEN
  6735.             VERIFIED STATICALLY, IT MAY BE NECESSARY TO EXECUTE THE SAME
  6736.             TEST PROGRAM DYNAMICALLY TO ASSURE THAT ALL CHIPS IN THE SYSTEM
  6737.             ARE OPERATING AT SYSTEM SPEED.  aT THIS POINT, IT MAY BE NECES-
  6738.             SARY TO INCLUDE A write OPERATION (sta, stx, sty, ETC.) IN THE
  6739.             LOOP TO PROVIDE A SYNC SIGNAL.
  6740.             aNALYSIS OF THE DYNAMIC OPERATION OF THE romS SHOULD INVOLVE
  6741.             FIRST LOOKING AT EACH ADDRESS AND DATA BUS LINES DIRECTLY ON THE
  6742.             PROCESSOR CHIP.  iT IS HERE THAT THE ADDRESS IS BEING GENERATED,
  6743.             AND IT IS HERE THAT THE DATA MUST MEET A SPEED SPECIFICATION.
  6744.             iF DATA IS NOT VALID AT THE PROPER TIME, THE NEXT STEP IS TO
  6745.             DETERMINE WHERE EXCESSIVE DELAY HAS BEEN INTRODUCED INTO THE
  6746.             DATA PATH FROM ADDRESS OUTPUT, THROUGH THE rom AND BACK TO THE
  6747.             PROCESSOR DATA BUS.  kEEP IN MIND THAT IT IS THIS ENTIRE PATH
  6748.             WHICH MUST OPERATE AT SPEED TO ASSURE PROPER PROCESSOR OPERA-
  6749.             TION.  iN FACT, IF THE DELAYS ARE EXCESSIVE, IT MAY BE NECESSARY
  6750.             TO SLOW DOWN THE SYSTEM CLOCK RATE TO ALLOW THE PROGRAM DATA TO
  6751.             REACH THE PROCESSOR IN TIME.  aN ALTERNATIVE SOLUTION TO THIS
  6752.             PROBLEM IS THE IMPLEMENTATION OF THE rdy SIGNAL TO HOLD THE PRO-
  6753.  
  6754.  
  6755.                                    -149-
  6756.  
  6757. ============================================================================
  6758.  
  6759.             CESSOR FOR ONE CYCLE EACH TIME IT FETCHES DATA OR PROGRAM FROM
  6760.             THE roms.
  6761.                 aLTHOUGH THE PROBLEMS DISCUSSED ABOVE MAY BE ENCOUNTERED AT
  6762.             THIS POINT, IT IS MUCH MORE LIKELY THAT A WIRING ERROR WILL
  6763.             CAUSE A SINGLE ADDRESS OR DATA LINE TO BE EXCESSIVELY LOADED SO
  6764.             THAT IT OPERATES SLOW OR NOT AT ALL.  tHIS PROBLEM CAN USUALLY
  6765.             BE DETECTED AND FIXED QUITE EASILY BY LOOKING AT EACH COMPONENT
  6766.             IN THE DATA PATH.
  6767.         b.  ramS:
  6768.             oPERATION OF THE ramS IN A MICROPROCESSOR SYSTEM CAN BE CHECKED
  6769.             IN MUCH THE SAME MANNER AS THE romS.  eXECUTION OF A TEST LOOP
  6770.             PROGRAM BOTH STATICALLY AND DYNAMICALLY FOR EACH CHIP IN THE
  6771.             SYSTEM SHOULD BE SUFFICIENT TO VERIFY PROPER OPERATION OF THE
  6772.             ramS IN THE SYSTEM.  fOR EACH ram, BOTH A write AND A read OPER-
  6773.             ATION SHOULD BE INCLUDED IN THE TEST LOOP.  tHIS WILL ALLOW
  6774.             CHECKOUT OF DATA TRANSFERS IN BOTH DIRECTIONS.
  6775.                 dURING SINGLE CYCLE EXECUTION OF THE TEST LOOP, THE PROCES-
  6776.             SOR WILL STOP ONLY IN THE ram READ OPERATIONS.  hOWEVER, THIS
  6777.             WILL ALLOW A STATIC CHECK OF THE CHIP SELECT LOGIC AND THE
  6778.             ADDRESS AND DATA LINES.  rUNNING THE PROGRAM DYNAMICALLY WILL
  6779.             ALLOW VERIFICATION THAT THE DATA AND ADDRESS SIGNALS PRESENTED
  6780.             TO THE ramS DURING THE write OPERATION ARE WITHIN SPECIFICA-
  6781.             TION FOR THE ram BEING USED IN THE SYSTEM AND THAT THE TOTAL
  6782.             DELAYS THROUGH THE ADDRESS, ram, AND DATA BUS PATH ARE WITHIN
  6783.             SPECIFICATIONS FOR THE PROCESSOR DURING THE read OPERATIONS.
  6784.             aS WITH THE romS, THE MOST LIKELY PROBLEM TO BE ENCOUNTERED AT
  6785.             THIS POINT IS WIRING ERRORS WHICH CAUSE A SPECIFIC DEVICE TO
  6786.             OPERATE IMPROPERLY.  a CAREFUL CHECK OF EACH PIN WILL ALLOW
  6787.             DETECTION OF THIS TYPE OF PROBLEM.
  6788.         c.  piaS:
  6789.             tHE PERIPHERAL INTERFACE DEVICES (6520, 6530, ETC.) CAN ALL BE
  6790.             CHECKED OUT IN THE MANNER DESCRIBED ABOVE.  hOWEVER, SINCE THESE
  6791.             CHIPS DO MANY DIFFERENT OPERATIONS, THE TEST PROGRAM MUST BE
  6792.             MUCH MORE COMPLEX THAN THAT REQUIRED FOR THE rom AND ram.
  6793.  
  6794.  
  6795.                                    -150-
  6796.  
  6797. ============================================================================
  6798.  
  6799.             hOWEVER, IT CAN USUALLY BE LIMITED TO TESTING ONLY THOSE FUNC-
  6800.             TIONS WHICH ARE USED IN THE SYSTEM.
  6801.                 a LARGE PART OF THE OPERATION OF THE PERIPHERAL INTERFACE
  6802.             DEVICES CAN BE VERIFIED BY DOING A write FOLLOWED BY A read FOR
  6803.             EACH REGISTER ON THE CHIP.  tHIS WILL ALLOW A COMPLETE CHECKOUT
  6804.             OF THE DATA PATHS BETWEEN THE PROCESSOR AND THE CHIPS AS WELL AS
  6805.             A CHECKOUT OF ALL THE CHIP SELECT FUNCTIONS.  hOWEVER, A MORE
  6806.             COMPLETE ANALYSIS MAY BE REQUIRED TO VERIFY THAT DATA IS APPEAR-
  6807.             ING PROPERLY ON THE OUTPUT PINS OF THE PERIPHERAL CHIP AND THAT
  6808.             DATA ON THE INPUTS IS BEING REFLECTED PROPERLY BACK INTO THE
  6809.             PROCESSOR.  tHIS WILL INVOLVE DISCONNECTING THE PERIPHERAL SUB-
  6810.             SYSTEM WHICH THE PROCESSOR IS ATTEMPTING TO DRIVE AND MANUALLY
  6811.             PUTTING DATA INTO THE INPUTS.  a SEPARATE TEST CAN VERIFY THE
  6812.             VALIDITY OF OUTPUT DATA.
  6813.     aFTER THE SYSTEM HARDWARE HAS BEEN EXAMINED IN THE DETAIL DISCUSSED ABOVE,
  6814. THE DESIGNER WILL HAVE DEVELOPED CONFIDENCE THAT HIS SYSTEM CAN OPERATE PROPERLY
  6815. ONCE THE SYSTEM PROGRAM IS COMPLETELY DEBUGGED.  vERIFICATION OF THE SYSTEM PRO-
  6816. GRAM SHOULD PROCEED WITH A SECTION-BY-SECTION CHECKOUT AS DISCUSSED ABOVE.  eACH
  6817. SUBROUTINE, INTERRUPT ROUTINE, ETC. SHOULD BE EXAMINED SEPARATELY.  tHEY CAN
  6818. THEN BE COMBINED TO FORM THE MAJOR PERIPHERAL OPERATING ROUTINES, ARITHMETIC
  6819. ROUTINES, ETC. THAT MAKE UP THE SYSTEM.  tHE FINAL RESULT SHOULD BE A FUNCTION-
  6820. ING PROGRAM WHICH HAS BEEN EXAMINED IN ALL ITS DETAILS RUNNING ON A SYSTEM
  6821. WHICH IS FULLY OPERATIONAL.
  6822.  
  6823.  
  6824.                                    -151-
  6825.  
  6826. ============================================================================
  6827.  
  6828.                                 appendix a
  6829.  
  6830.                     summary of single cycle execution
  6831.  
  6832.     tHIS SECTION CONTAINS AN OUTLINE OF THE DATA ON BOTH THE ADDRESS BUS AND
  6833. THE DATA BUS FOR EACH CYCLE OF THE VARIOUS PROCESSOR INSTRUCTIONS.  iT TELLS
  6834. THE SYSTEM DESIGNER EXACTLY WHAT TO EXPECT WHILE SINGLE CYCLING THROUGH A
  6835. PROGRAM.
  6836.     nOTE THAT THE PROCESSOR WILL NOT STOP IN ANY CYCLE WHERE r/w IS A 0 (WRITE
  6837. CYCLE).  iNSTEAD, IT WILL GO RIGHT INTO THE NEXT READ CYCLE AND STOP THERE.  fOR
  6838. THIS REASON, SOME INSTRUCTIONS MAY APPEAR TO BE SHORTER THAN INDICATED HERE.
  6839.     aLL INSTRUCTIONS BEGIN WITH t0 AND THE FETCH OF THE op code AND CONTINUE
  6840. THROUGH THE REQUIRED NUMBER OF CYCLES UNTIL THE NEXT t0 AND THE FETCH OF THE
  6841. NEXT op code.
  6842.     wHILE THE BASIC TERMINOLOGY USED IN THIS APPENDIX IS DISCUSSED IN THE pRO-
  6843. GRAMMING mANUAL, IT HAS BEEN DEFINED BELOW FOR EASE OF REFERENCE WHILE STUDYING
  6844. sINGLE cYCLE eXECUTION.
  6845.  
  6846. op code--tHE FIRST BYTE OF THE INSTRUCTION CONTAINING THE OPERATOR AND MODE OF
  6847.          ADDRESS.
  6848.  
  6849. operand--tHE DATA ON WHICH THE OPERATION SPECIFIED IN THE op code IS PERFORMED.
  6850.  
  6851. base address--tHE ADDRESS IN iNDEXED ADDRESSING MODES WHICH SPECIFIES THE LOCA-
  6852.          TION IN MEMORY TO WHICH INDEXING IS REFERENCED.  tHE HIGH ORDER OF BYTE
  6853.          OF THE BASE ADDRESS (ab08 TO ab15) IS bah (bASE aDDRESS hIGH) AND THE
  6854.          LOW ORDER BYTE OF THE BASE ADDRESS (ab00 TO ab07) IS bal (bASE aDDRESS
  6855.          lOW).
  6856.  
  6857. effective address--tHE DESTINATION IN MEMORY IN WHICH DATA IS TO BE FOUND.  tHE
  6858.          EFFECTIVE ADDRESS MAY BE LOADED DIRECTLY AS IN THE CASE OF pAGE zERO
  6859.          AND aBSOLUTE aDDRESSING OR MAY BE CALCULATED AS IN iNDEXING OPERATIONS.
  6860.          tHE HIGH ORDER BYTE OF THE EFFECTIVE ADDRESS (ab08 TO ab15) IS adh AND
  6861.          THE LOW ORDER BYTE OF THE EFFECTIVE ADDRESS (ab00 TO ab07) IS adl.
  6862.  
  6863. indirect address--tHE ADDRESS FOUND IN THE OPERAND OF INSTRUCTIONS UTILIZING
  6864.          (iNDIRECT),y WHICH CONTAINS THE LOW ORDER BYTE OF THE BASE ADDRESS.
  6865.          iah AND ial REPRESENT THE HIGH AND LOW ORDER BYTES.
  6866.  
  6867. jump address--tHE VALUE TO BE LOADED INTO pROGRAM cOUNTER AS A RESULT OF A
  6868.          jUMP INSTRUCTION.
  6869.  
  6870.  
  6871.                                    a-1
  6872.  
  6873. ============================================================================
  6874.  
  6875. a.  1.  single byte instructions
  6876.         asl     dex     nop     tax     tya
  6877.         clc     dey     rol     tay
  6878.         cld     inx     sec     tsx
  6879.         cli     iny     sed     txa
  6880.         clv     lsr     sei     txs
  6881.  
  6882.        tHESE SINGLE BYTE INSTRUCTIONS REQUIRE TWO CYCLES TO EXECUTE.  dURING THE
  6883. SECOND CYCLE THE ADDRESS OF THE NEXT INSTRUCTION IN PROGRAM SEQUENCE WILL BE
  6884. PLACED ON THE ADDRESS BUS.  hOWEVER, THE op code WHICH APPEARS ON THE DATA BUS
  6885. DURING THE SECOND CYCLE WILL BE IGNORED.  tHIS SAME INSTRUCTION WILL BE FETCHED
  6886. ON THE FOLLOWING CYCLE AT WHICH TIME IT WILL BE DECODED AND EXECUTED.  tHE asl,
  6887. rol AND lsr INSTRUCTIONS APPLY TO THE ACCUMULATOR MODE OF ADDRESS.
  6888.  
  6889.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  6890.  
  6891.     t0      pc              op code      1      fETCH op code
  6892.     t1      pc + 1          op code      1
  6893.                             (dISCARDED)
  6894.     t0      pc + 1          op code      1      nEXT iNSTRUCTION
  6895.  
  6896.  
  6897. a. 2.   internal execution on memory data
  6898.         adc     cmp     bor     ldy
  6899.         and     cpx     lda     ora
  6900.         bit     cpy     ldx     sbc
  6901.  
  6902.         tHE INSTRUCTIONS LISTED ABOVE WILL EXECUTE BY PERFORMING OPERATIONS IN-
  6903. SIDE THE MICROPROCESSOR USING DATA FETCHED FROM THE EFFECTIVE ADDRESS.  tHIS
  6904. TOTAL OPERATION REQUIRES THREE STEPS.  tHE FIRST STEP (ONE CYCLE) IS THE op code
  6905. FETCH.  tHE SECOND (ZERO TO FOUR CYCLES) IS THE CALCULATION OF AN EFFECTIVE
  6906. ADDRESS.  tHE FINAL STEP IS THE FETCHING OF THE DATA FROM THE EFFECTIVE ADDRESS.
  6907. eXECUTION OF THE INSTRUCTION TAKES PLACE DURING THE FETCHING AND DECODING OF
  6908. THE NEXT INSTRUCTION.
  6909.  
  6910.  
  6911.                                    PAG
  6912.  
  6913. ============================================================================
  6914.  
  6915. a. 2.1.  iMMEDIATE aDDRESSIN0 (2 CYCLES)
  6916.  
  6917.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  6918.  
  6919.     t0      pc              op code      1      fETCH op code
  6920.     t1      pc + 1          dATA         1      fETCH dATA
  6921.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  6922.  
  6923.  
  6924. a. 2.2.  zERO pAGE aDDRESSIN0 (3 CYCLES)
  6925.  
  6926.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  6927.  
  6928.     t0      pc              op code      1      fETCH op code
  6929.     t1      pc + 1          adl          1      fETCH eFFECTIVE aDDRESS
  6930.     t2      00, adl         dATA         1      fETCH dATA
  6931.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  6932.  
  6933.  
  6934. a. 2.3. aBSOLUTE aDDRESSING (4 CYCLES)
  6935.  
  6936.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  6937.  
  6938.     t0      pc              op code      1      fETCH op code
  6939.     t1      pc + 1          adl          1      fETCH LOW ORDER eFFECTIVE
  6940.                                                 aDDRESS BYTE
  6941.     t2      pc + 2          adh          1      fETCH HIGH ORDER eFFECTIVE
  6942.                                                 aDDRESS BYTE
  6943.     t3      adh, adl        dATA         1      fETCH dATA
  6944.     t0      pc + 3          op code      1      nEXT iNSTRUCTION
  6945.  
  6946.  
  6947. a. 2.4.  iNDIRECT, x aDDRESSING (6 CYCLES)
  6948.  
  6949.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  6950.  
  6951.     t0      pc              op code      1      fETCH op code
  6952.     t1      pc + 1          ba1          1      fETCH pAGE zERO bASE
  6953.                                                 aDDRESS
  6954.     t2      00, bal         dATA         1
  6955.                             (dISCARDED)
  6956.     t3      00, bal + x     adl          1      fETCH LOW ORDER BYTE OF
  6957.                                                 eFFECTIVE aDDRESS
  6958.     t4      00, bal +       adh          1      fETCH HIGH ORDER BYTE OF
  6959.                   x + l                         eFFECTIVE aDDRESS
  6960.     t5      adh, adl        dATA         1      fETCH dATA
  6961.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  6962.  
  6963.  
  6964.                                         a-3
  6965.  
  6966. ============================================================================
  6967.  
  6968. a. 2.5.  aBSOLUTE, x OR aBSOLUTE, y aDDRESSING (4 OR 5 CYCLES)
  6969.  
  6970.     tN  aDDRESS bUS                     dATA bUS    r/w   cOMMENTS
  6971.  
  6972.     t0      pc              op code      1      fETCH op code
  6973.     t1      pc + 1          bal          1      fETCH LOW ORDER BYTE OF
  6974.                                                 bASE aDDRESS
  6975.     t2      pc + 2          bah          1      fETCH HIGH ORDER BYTE OF
  6976.                                                 bASE aDDRESS
  6977.     t3      adl: bal +      dATA*        1      fETCH DATA (NO PAGE CROSS-
  6978.             INDEX REGISTER                      ING)
  6979.             adh: bah + c                cARRY IS 0 OR 1 AS RE
  6980.                                                 QUIRED FROM PREVIOUS ADD
  6981.                                                 OPERATION
  6982.     t4*     adl: bal +      dATA         1      fETCH DATA FROM NEXT PAGE
  6983.             INDEX REGISTER
  6984.             adh: bah + 1
  6985.     t0      pc + 3          op code     1       nEXT iNSTRUCTION
  6986.  
  6987.     *iF THE PAGE BOUNDARY IS CROSSED IN THE INDEXING OPERATION, THE DATA
  6988.     FETCHED IN t3 IS IGNORED.  iF PAGE BOUNDARY IS NOT CROSSED, THE t4
  6989.     CYCLE IS BYPASSED.
  6990.  
  6991.  
  6992. a. 2.6.  zERO pAGE, x OR zERO pAGE, y aDDRESSING mODES (4 CYCLES)
  6993.  
  6994.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  6995.  
  6996.     t0      pc              op code      1      fETCH op code
  6997.     t1      pc + 1          bal          1      fETCH pAGE zERO bASE
  6998.                                                 aDDRESS
  6999.     t2      00, bal         dATA         1
  7000.                             (dISCARDED)
  7001.     t3      00, bal +       dATA         1      fETCH dATA (NO PAGE CROSS
  7002.             INDEX                               ING)
  7003.             REGISTER
  7004.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  7005.  
  7006.  
  7007.                                         a-4
  7008.  
  7009. ============================================================================
  7010.  
  7011. a. 2.7. iNDIRECT, y aDDRESSING hODE (5 OR 6 CYCLES)
  7012.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7013.     t0      pc              op code      1      fETCH op code
  7014.     tI      pc + 1          ial          1      fETCH pAGE zERO iNDIRECT
  7015.                                                 aDDRESS
  7016.     t2      00, ial         bal          1      fETCH LOW ORDER BYTE OF
  7017.                                                 bASE aDDRESS
  7018.     t3      00, ial + 1     bah          1      fETCH HIGH ORDER BYTE OF
  7019.                                                 bASE aDDRESS
  7020.     t4      adl: bal + y    dATA*        1      fETCH dATA FROM SAME PAGE
  7021.             adh: bah + c                        cARRY IS 0 OR 1 AS RE
  7022.                                                 QUIRED FROM PREVIOUS ADD
  7023.                                                 OPERATION
  7024.     t5*     adl: bal + y    dATA         1      fETCH dATA FROM NEXT PAGE
  7025.             adh: bah + 1
  7026.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  7027.  
  7028.     *iF PAGE BOUNDARY IS CROSSED IN INDEXING OPERATION, THE DATA FETCH IN
  7029.     t4 IS IGNORED.  iF PAGE BOUNDARY IS NOT CROSSED, THE t5 CYCLE IS BY-
  7030.     PASSED.
  7031.  
  7032.  
  7033. a.  3.  st0re operations
  7034.         sta
  7035.         stx
  7036.         sty
  7037.  
  7038.         tHE SPECIFIC STEPS TAKEN IN THE sTORE oPERATIONS ARE VERY SIMILAR TO
  7039. THOSE TAKEN IN THE PREVIOUS GROUP (iNTERNAL EXECUTION ON MEMORY DATA).  hOWEVER,
  7040. IN THE sTORE oPERATION, THE FETCH OF DATA IS REPLACED BY A write (r/w = 0)
  7041. CYCLE.  nO OVERLAPPING OCCURS AND NO SHORTENING OF THE INSTRUCTION TIME OCCURS
  7042. ON INDEXING OPERATIONS.
  7043.  
  7044. a. 3.1. zERO pAGE aDDRESSING (3 CYCLES)
  7045.  
  7046.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7047.     t0      pc              op code      1      fETCH op code
  7048.     tI      pc + 1          adl          1      fETCH zERO pAGE eFFECTIVE
  7049.                                                 aDDRESS
  7050.     t2      00, adl         dATA         0      wRITE INTERNAL REGISTER
  7051.                                                 TO MEMORY
  7052.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  7053.  
  7054.  
  7055.                                         a-5
  7056.  
  7057. ============================================================================
  7058.  
  7059. a. 3.2. aBSOLUTE aDDRESSING (4 CYCLES)
  7060.  
  7061.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7062.  
  7063.     t0      pc              op code      1      fETCH op code
  7064.     t1      pc + 1          adl          1      fETCH LOW ORDER BYTE OF
  7065.                                                 eFFECTIVE a0DRESS
  7066.     t2      pc + 2          adh          1      fETCH HIGH ORDER BYTE OF
  7067.                                                 eFFECTIVE aDDRESS
  7068.     t3      adh, adl        dATA         0      wRITE INTERNAL REGISTER
  7069.                                                 TO MEMORY
  7070.     t0      pc + 3          op code      1      nEXT iNSTRUCTION
  7071.  
  7072.  
  7073. a. 3.3. iNDIRECT, x aDDRESSING (6 CYCLES)
  7074.  
  7075.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7076.  
  7077.     t0      pc              op code      1      fETCH op code
  7078.     t1      pc + 1          bal          1      fETCH pAGE zERO bASE
  7079.                                                 aDDRESS
  7080.     t2      00, bal         dATA         1
  7081.                             (dISCARDED)
  7082.     t3      00, bal + x     adl          1      fETCH LOW ORDER BYTE OF
  7083.                                                 eFFECTIVE aDDRESS
  7084.     t4      00, bal +       adh          1      fETCH HIGH ORDER BYTE OF
  7085.                   x + 1                         eFFECTIVE aDDRESS
  7086.     t5      adh, aLL        dATA         0      wRITE INTERNAL REGISTER
  7087.                                                 TO MEMORY
  7088.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  7089.  
  7090.  
  7091. a. 3.4. aBSOLUTE, x OR aBSOLUTE, y aDDRESSING (5 CYCLES)
  7092.  
  7093.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7094.  
  7095.     t0      pc              op code      1      fETCH op code
  7096.     t1      pc + 1          bal          1      fETCH LOW ORDER BYTE OF
  7097.                                                 bASE aDDRESS
  7098.     t2      pc + 2          bah          1      fETCH HIGH ORDER BYTE OF
  7099.                                                 bASE aDDRESS
  7100.     t3      adl: bal +      dATA         1
  7101.             INDEX           (dISCARDED)
  7102.             REGISTER
  7103.             adh: bah + c
  7104.     t4      adh, adl        dATA         0      wRITE INTERNAL REGISTER
  7105.                                                 TO MEMORY
  7106.     t0      pc + 3          op code      1      nEXT iNSTRUCTION
  7107.  
  7108.  
  7109.                                         a-6
  7110.  
  7111. ============================================================================
  7112.  
  7113. a. 3.5. zERO pAGE, x OR zERO pAGE, y aDDRESSING mODES (4 CYCLES)
  7114.  
  7115.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7116.  
  7117.     t0      pc              op code      1      fETCH op code
  7118.     tI      pc + 1          bal          1      fETCH pAGE zERO bASE
  7119.                                                 aDDRESS
  7120.     t2      00, bal         dATA         1
  7121.                             (dISCARDED)
  7122.     t3      adl: bal +      dATA         0      wRITE INTERNAL REGISTER
  7123.             INDEX                               TO MEMORY
  7124.             REGISTER
  7125.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  7126.  
  7127.  
  7128. a. 3.6. iNDIRECT, y aDDRESSING mODE (6 CYCLES)
  7129.  
  7130.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7131.  
  7132.     t0      pc              op code      1      fETCH op code
  7133.     tI      pc + 1          ial          1      fETCH pAGE zERO iNDIRECT
  7134.                                                 aDDRESS
  7135.     t2      00, ial         bal          1      fETCH LOW ORDER BYTE OF
  7136.                                                 bASE aDDRESS
  7137.     t3      00, ial + 1     bah          1      fETCH HIGH ORDER BYTE OF
  7138.                                                 bASE aDDRESS
  7139.     t4      adl: bal + y    dATA         1
  7140.                             (dISCARDED)
  7141.             adh: bah
  7142.     15      alh, adi        dATA         0      wRITE iNTERNAL rEGISTER
  7143.                                                 TO MEMORY
  7144.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  7145.  
  7146.  
  7147. a.  4.  read--modify--write operations
  7148.         asl        lsr
  7149.         dec        rol
  7150.         inc        ror
  7151.  
  7152.         tHE rEAD--mODIFY--wRITE OPERATIONS INVOLVE THE LOADING OF OPERANDS
  7153. FROM THE OPERAND ADDRESS, MODIFICATION OF THE OPERAND AND THE RESULTING MODI-
  7154. FIED DATA BEING STORED IN THE ORIGINAL LOCATION.
  7155.         nOTE:  tHE ror INSTRUCTION WILL BE AVAILABLE ON mcs650x MICROPROCESSORS
  7156.                AFTER jUNE, 1976.
  7157.  
  7158.  
  7159.                                         a-7
  7160.  
  7161. ============================================================================
  7162.  
  7163. a. 4.1. zERO pAGE aDDRESSING (5 CYCLES)
  7164.  
  7165.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7166.  
  7167.     t0      pc              op code      1      fETCH op code
  7168.     t1      pc + 1          aLL          1      fETCH pAGE zERO eFFECTIVE
  7169.                                                 aDDRESS
  7170.     t2      00, adl         dATA         1      fETCH dATA
  7171.     t3      00, adl         dATA         0
  7172.     t4      00, adl         mODIFIED     0      wRITE MODIFIED dATA BACK
  7173.                             dATA                TO MEMORY
  7174.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  7175.  
  7176.  
  7177. a. 4.2. aBSOLUTE aDDRESSING (6 CYCLES)
  7178.  
  7179.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7180.  
  7181.     t0      pc              op code      1      fETCH op code
  7182.     tI      pc + 1          adl          1      fETCH LOW ORDER BYTE OF
  7183.                                                 eFFECTIVE aDDRESS
  7184.     t2      pc + 2          adh          1      fETCH HIGH ORDER BYTE OF
  7185.                                                 eFFECTIVE aDDRESS
  7186.     t3      adh, adl        dATA         1
  7187.     t4      adh, adl        dATA         0
  7188.     t5      adh, adl        mODIFIED     0      wRITE MODIFIED dATA BACK
  7189.                             dATA                INTO MEMORY
  7190.             pc + 3          op code      1      nEXT iNSTRUCTION
  7191.  
  7192.  
  7193. a. 4.3. zERO pAGE, x aDDRESSING (6 CYCLES)
  7194.  
  7195.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7196.  
  7197.     t0      pc              op code      1      fETCH op code
  7198.     t1      pc + 1          bal          1      fETCH pAGE zERO bASE
  7199.                                                 aDDRESS
  7200.     t2      00, bal         dATA         1
  7201.                             (dISCARDED
  7202.     t3      adl: bal + x  dATA           1      fETCH dATA
  7203.             (WITHOUT
  7204.             CARRY)
  7205.     t4      adl: bal + x dATA            0
  7206.             (WITHOUT
  7207.             CARRY)
  7208.     t5      adl: bal + x    mODIFIED     0      wRITE MODIFIED dATA BACK
  7209.             (WITHOUT        dATA                INTO MEMORY
  7210.             CARRY)
  7211.     t0      pc + 2          op code      1      nEXT iNSTRUCTION
  7212.  
  7213.  
  7214.                                         a-8
  7215.  
  7216. ============================================================================
  7217.  
  7218. a. 4.4. aBSOLUTE, x aDDRESSING (7 CYCLES)
  7219.  
  7220.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7221.  
  7222.     t0      pc              op code      1      fETCH op code
  7223.     t1      pc + 1          bal          1      fETCH LOW ORDER BYTE OF
  7224.                                                 bASE aDDRESS
  7225.     t2      pc + 2          bah          1      fETCH HIGH ORDER BYTE OF
  7226.                                                 bASE aDDRESS
  7227.     t3      adl: bal + x    dATA         1
  7228.             (dISCARDED)
  7229.             adh: bah + c
  7230.     t4      adl: bal + x    dATA         1      fETCH dATA
  7231.             adh: bah + c
  7232.     t5      adh, adl        dATA         0
  7233.     t6      alh, adl        mODIFIED     0      wRITE MODIFIED dATA BACK
  7234.                             dATA                INTO MEMORY
  7235.     t0      pc + 3          op code      1      nEW iNSTRUCTION
  7236.  
  7237.  
  7238. a.  5.  miscellaneous operations
  7239.         bcc        brk       php
  7240.         bcs        bvc       pla
  7241.         beq        bvs       plp
  7242.         bmi        jmp       rti
  7243.         bne        jsr       rts
  7244.         bpl        pha
  7245.  
  7246. a. 5.1. pUSH oPERATION--php, pha (3 CYCLES)
  7247.  
  7248.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7249.  
  7250.     t0      pc              op code      1      fETCH op code
  7251.     t1      pc + 1          op code      1
  7252.                             (dISCARDED)
  7253.     t2      sTACK pOINTER*  dATA         0      wRITE iNTERNAL rEGISTER
  7254.                                                 INTO sTACK
  7255.     t0      pc + 1          op code      1      nEXT iNSTRUCTION
  7256.  
  7257.     *sUBSEQUENTLY REFERRED TO AS "sTACK pTR."
  7258.  
  7259.  
  7260.                                         a-9
  7261.  
  7262. ============================================================================
  7263. a. 5.2. pULL oPERATIONS--plp, pla (4 CYCLES)
  7264.  
  7265.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7266.  
  7267.     t0      pc              op code      1      fETCH op code
  7268.     t1      pc + 1          op code      1
  7269.                             (dISCARDED)
  7270.     t2      sTACK pTR.      dATA         1
  7271.                             (dISCARDED)
  7272.     t3      sTACK pTR. + 1  dATA         1      fETCH dATA FROM sTACK
  7273.     t0      pc + 1          op code      1      nEXT iNSTRUCTION
  7274.  
  7275.  
  7276. a. 5.3. jUMP TO sUBROUTINE--jsr (6 CYCLES)
  7277.  
  7278.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7279.  
  7280.     t0     pc               op code      1      fETCH op code
  7281.     t1     pc + 1           adl          1      fETCH LOW ORDER BYTE OF
  7282.                                                 sUBROUTINE aDDRESS
  7283.     t2      sTACK pTR.      dATA         1
  7284.                             (dISCARDED)
  7285.     t3      sTACK pTR.      pch          0      pUSH HIGH ORDER BYTE OF
  7286.                                                 PROGRAM COUNTER TO sTACK
  7287.     t4      sTACK pTR. - 1  pcl          0      pUSH LOW ORDER BYTE OF
  7288.                                                 PROGRAM COUNTER TO sTACK
  7289.     t5      pc + 2          adh          1      fETCH HIGH ORDER BYTE OF
  7290.                                                 sUBROUTINE aDDRESS
  7291.     t0      sUBROUTINE      op code      1      nEXT iNSTRUCTION
  7292.             aDDRESS (adh,
  7293.             adl)
  7294.  
  7295.  
  7296.                                         a-10
  7297.  
  7298. ============================================================================
  7299.  
  7300. a. 5.4. bREAK oPERATION--(hARDWARE iNTERRUPT)-brk (7 CYCLES)
  7301.  
  7302.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7303.  
  7304.     t0      pc              op code      1      fETCH erk op code (OR
  7305.                                                 FORCE brk)
  7306.     t1      pc + 1          dATA         1
  7307.             (pc ON HARD-    (dISCARDED)
  7308.             WARE INTER
  7309.             RUPT)
  7310.     t2      sTACK pTR.      pch          0      pUSH HIGH ORDER BYTE OF
  7311.                                                 PROGRAM COUNTER TO sTACK
  7312.     t3      sTACK pTR. - 1  pcl          0      pUSH LOW ORDER BYTE OF
  7313.                                                 PROGRAM COUNTER TO sTACK
  7314.     t4      sTACK pTR. - 2  p            0      pUSH sTATUS rEGISTER TO
  7315.                                                 sTACK
  7316.     t5      fffe            adi          1      fETCH LOW ORDER BYTE OF
  7317.             (nmi-fffa)                          INTERRUPT VECTOR
  7318.             (res-fffc)
  7319.     t6      ffff            adh          1      fETCH HIGH ORDER BYTE OF
  7320.             (nni-fffb)                          INTERRUPT VECTOR
  7321.             (res-fffd)
  7322.     t0      iNTERRUPT vEC-  op code      1      nEXT iNSTRUCTION
  7323.             TOR (adh, adl)
  7324.  
  7325.  
  7326. a. 5.5. rETURN FROM iNTERRUPT-rti (6 CYCLES)
  7327.  
  7328.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7329.  
  7330.     t0      pc              op code      1      fETCH op code
  7331.     t1      pc + 1          dATA         1
  7332.                             (dISCARDED)
  7333.     t2      sTACK pTR.      dATA         1
  7334.                             (dISCARDED)
  7335.     t3      sTACK pTR. + 1  dATA         1      pULL p FROM sTACK
  7336.     t4      sTACK pTR. + 2  dATA         1      pULL pcl FROM sTACK
  7337.     t5      sTACK pTR. + 3  dATA         1      pULL pch FROM sTACK
  7338.     t0      pch, pcl        op code      1      nEXT iNSTRUCTION
  7339.  
  7340.  
  7341.                                         a-11
  7342.  
  7343. ============================================================================
  7344.  
  7345. a.  5.6.  jUMP oPERATION--jmp
  7346.  
  7347. a.5.6.L.    aBSOLUTE aDDRESSING mODE (3 YC0CLES)
  7348.  
  7349.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7350.  
  7351.     t0      pc              op code      1      fETCH op code
  7352.     t1      pc + 1          adl          1      fETCH LOW ORDER BYTE OF
  7353.                                                 jUMP aDDRESS
  7354.     t2      pc + 2          adh          1      fETCH HIGH ORDER BYTE OF
  7355.                                                 jUMP aDDRESS
  7356.     t0      adh, adl        op code      1      nEXT iNSTRUCTION
  7357.  
  7358.  
  7359. a.5.6.2.    iNDIRECT aDDRESSIN0 mO0DE0(5 YC0LES)
  7360.  
  7361.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7362.  
  7363.     t0      pc              op code      1      fETCH op code
  7364.     t1      pc + 1          ial          1      fETCH LOW ORDER BYTE OF
  7365.                                                 iNDIRECT aDDRESS
  7366.     t2      pc + 2          iah          1      fETCH HIGH ORDER BYTE OF
  7367.                                                 iNDIRECT aDDRESS
  7368.     t3      iah, ial        adl          1      fETCH LOW ORDER BYTE OF
  7369.                                                 jUMP aDDRESS
  7370.     t4      iah, ial + 1    adh          1      fETCH HIGH ORDER BYTE OF
  7371.                                                 jUMP aDDRESS
  7372.     t0      adh, adl        op code      1      nEXT iNSTRUCTION
  7373.  
  7374.  
  7375. a. 5.7. rETURN FROM sUBROUTINE--rts (6 CYCLES)
  7376.  
  7377.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7378.  
  7379.     t0      pc              op code      1      fETCH op code
  7380.     t1      pc + 1          dATA         1
  7381.                             (dISCARDED)
  7382.     t2      sTACK pTR.      dATA         1
  7383.                             (dISCARDED)
  7384.     t3      sTACK pTR. + 1  pcl          1      pULL pcl FROM sTACK
  7385.     t4      sTACK pTR. + 2  pch          1      pULL pch FROM sTACK
  7386.     t5      pch, pcl (FROM  dATA         1
  7387.             sTACK)          (dISCARDED)
  7388.     t0      pch, pcl + 1    op code      1      nEXT iNSTRUCTION
  7389.  
  7390.  
  7391.                                         a-12
  7392.  
  7393. ============================================================================
  7394.  
  7395. a. 5.8. bRANCH oPERATION--bcc, bcs9 beq, bmi, bne, bpl, bvc9 bvs (2, 3, OR 4
  7396. CYCLES)
  7397.  
  7398.     tN  aDDRESS bUS         dATA bUS    r/w     cOMMENTS
  7399.  
  7400.     t0      pc              op code      1      fETCH op code
  7401.     tI      pc + 1          oFFSET       1      fETCH bRANCH oFFSET
  7402.     t2*     pc + 2 +        op code      1      oFFSET aDDED TO pROGRAM
  7403.             OFFSET (W/O                         cOUNTER
  7404.             CARRY)
  7405.     t3**    pc + 2 +        op code      1      cARRY aDDED
  7406.             OFFSET (WITH
  7407.             CARRY)
  7408.  
  7409.      *sKIP IF BRANCH NOT TAKEN
  7410.     **sKIP IF BRANCH NOT TAKEN; SKIP IF BRANCH OPERATION DOESN T CROSS PAGE
  7411.       BOUNDARY
  7412.  
  7413.  
  7414.                                         a-13
  7415.  
  7416. ============================================================================
  7417.  
  7418.