home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / gendoc / hd64180.bug < prev    next >
Text File  |  1986-02-20  |  5KB  |  133 lines

  1.  
  2.                      Last update:  02/09/86
  3.                            HD64180.BUG
  4.                               V 1.0
  5.  
  6.  
  7. I believe the following section was written by:
  8.  
  9.                              WA7GXD
  10.  
  11.            (See Gateway Vol 2, No 11.  Jan. 24, 1986)
  12.  
  13.  
  14.      If  you  are planning on using a Hitachi HD64180 (guess  you 
  15. have to use Hitachi if you plan on using a 64180...) please  note 
  16. that it is not directly compatible with Z80 (tm) style peripheral 
  17. ICs when using the Mode 2 interrupt scheme.   I know; I found out 
  18. the hard, expensive way.
  19.  
  20.      I  have  designed a packet switch for Amateur  packet  radio 
  21. usage that is based on the 64180, a PIO, a pair of SIO/2s and the 
  22. NCR5380 SCSI chip.  It also has 16 bytewide sockets and screws on 
  23. the  side of a 5.25" floppy disk controller.   It is on a 4-layer 
  24. board  and we had prototype boards made (compiled is the  nearest 
  25. software  equivalent...).   During final hardware debug  testing, 
  26. mode 2 interrupts were switched on.
  27.  
  28.      The peripheral would service exactly 1 interrupt,  then lock 
  29. its IEO line low and stay that way until power off/power on reset 
  30. was accomplished!
  31.  
  32.      It  turns  out that the timing of the LIR* output  from  the 
  33. 64180  needs to be delayed (undocumented requirement of  the  Z80 
  34. (tm)  peripherals!).  Hitachi has a simple circuit to  accomplish 
  35. this  if  you  happen  to have the spare flip flop  and  OR  gate 
  36. floating  around on your board.   I didn't and simply  redesigned 
  37. the wait-state generator to accomplish the same thing.
  38.  
  39.      Now Mode 2 works just fine.
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.   
  55.  
  56.   
  57.                   The following section is by:
  58.  
  59.                              KA8BMT
  60.  
  61.                            Reference:
  62.   
  63. Hitachi  HD64180 8-Bit High Integration CMOS Microprocessor  Data 
  64. Book  [January, 1985 #U77]
  65.  
  66.                   PG 27: I/O ADDRESSING NOTES:
  67.  
  68.      "The  on-chip I/O register addresses are located in the  I/O 
  69. address  space from 0000H to 00FFH (16-bit I/O  addresses)."   [A 
  70. note  under figure 2.2.5 on page 15:  'NOTE:  A16-A18 = 0 for I/O 
  71. cycles'.] "Thus,  to access the on-chip I/O registers (using  I/O 
  72. instructions),"
  73.  
  74.  
  75.      [Is there some other way to access these registers,  besides 
  76. I/O instructions?  IOE* and ME* would determine whether it is I/O 
  77. or  MEmory,  so what does the last part of the previous paragraph 
  78. mean?]
  79.  
  80. "the high-order 8 bits of the 16-bit I/O address must be 0."
  81.  
  82.      "The  conventional I/O instructions (OUT (m),A / IN A,(m)  / 
  83. OUTI / INI / etc.) Place the contents of a CPU register,"
  84.  
  85.      [The "B" register,  this is because of the way the Z-80 (tm) 
  86. handles  the "IN g,(C)" and the "OUT (C),g"  instructions.   This 
  87. means  that you could design a Z-80 circuit that could have  more 
  88. than  256 I/O address,  by using the "B" register as part of  the 
  89. I/O  address.  This  could  also means that if your  I/O  address 
  90. decoder does not properly account for the A8 - A15 address  lines 
  91. you may not get the I/O address you want.]
  92.  
  93. "on  the  high-order 8 bits of the address bus,  and thus may  be 
  94. difficult to use for accessing on chip I/O registers."
  95.  
  96.      "For efficient on-chip I/O registers access, a number of new 
  97. instructions have been added which force the high-order 8 bits of 
  98. the 16-bit I/O address to 0.   These instructions are IN0,  OUT0, 
  99. OTIM,  OTIMR, OTDM, OTDMR and TSTIO (See section 3.1 Instructions 
  100. set)."
  101.  
  102.      [Unfortunitly   the  instructions  described  in  the   last 
  103. paragraph  would  not  be Z-80 compatible,  if  that  is  of  any 
  104. consideration.   A  possible  solution would be to zero  the  "B" 
  105. register   of  the  64180  or  the  Z-80  before  doing  any  I/O 
  106. instructions,  however  this  may  not be possible  {if  the  "B" 
  107. register is being used} or practical in all cases.]
  108.   
  109.  
  110.      "Note  that when writing to an internal  I/O  register,  the 
  111. same  I/O  write  occurs  on  the  external  bus.   However,  the 
  112. duplicate  external  I/O  write cycle will exhibit  internal  I/O 
  113. write  cycle  timing.   For  example,  the WAIT*  input  and  the 
  114. programmable  wait  state generator are  ignored."   [This  could 
  115. conceivably  cause  some slow peripherals to 'go out to  lunch'.] 
  116. "Similarly,  internal  I/O  read cycles also  cause  a  duplicate 
  117. external  I/O  read cycle - however,  the external read  data  is 
  118. ignored by the HD64180."
  119.  
  120.      "Normally,  external I/O addresses should be chosen to avoid 
  121. overlap  with  internal  I/O  addresses to  avoid  duplicate  I/O 
  122. accesses."
  123.  
  124.      Several places Hitachi states that the HD64180 can  directly 
  125. address  64K of I/O address [which it can in hardward] (pages  2, 
  126. 5,  15,  51 and others), however it does not tell how to do it in 
  127. software.   Is there some way besides doing tricks with "B",  DMA 
  128. or  I/O block instructions,  that I missed,  to address more than 
  129. 256   I/O  locations?     (Such  as  "OUT  (1234H),reg"  or   "IN 
  130. reg,(1234H)".)
  131.  
  132.  
  133.