Advertisement
buckoka

Servo

Jul 30th, 2017
550
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.36 KB | None | 0 0
  1. MACRO-80 3.44 09-Dec-81 PAGE 1
  2.  
  3.  
  4. ;****************************
  5. ;* *
  6. ;* Serial servo interface *
  7. ;* *
  8. ;****************************
  9.  
  10. ; Z80-A CPU
  11. ; CY=250 ns
  12. ; /no ram use/
  13.  
  14. ;PHERIPHERIALS&CONTROLS
  15. ;======================
  16.  
  17. ;8255
  18. 1000 APORT EQU 1000H ;io data bus buffer
  19. 1001 BPORT EQU 1001H ;input: b0=SD
  20. ; b1=SCCLK
  21. 0000 LAPORT EQU 0 ;aport low byte
  22. 1002 CPORT EQU 1002H ;output:b0=NSD
  23. 1003 CREG EQU 1003H ;command register
  24. 1002 SREG EQU CPORT ;status register
  25. ;b0..b2 =PC0..2
  26. ;b3 =INTR A not used
  27. ;b4 =INTE 2 not used
  28. ;b5 =IBF A
  29. ;b6 =INTE 1 not used
  30. ;b7 =NOBF A
  31. 00C2 CW EQU 0C2H ;mode 2
  32. ;B group mode 0
  33. ;PB input
  34. ;PC 0..2 output
  35. 0003 SCLK0 EQU 3 ;SET SCLK=0
  36. 0002 SCLK1 EQU 2 ;SET SCLK=1
  37. 0001 SD0 EQU 1 ;SET SD=0&MASK
  38. 0000 SD1 EQU 0 ;SET SD=1
  39. 0001 SDMSK EQU 1 ;SD MASK
  40. 00FF ACK EQU 0FFH ;ACK TO CPU
  41. 000E DEL50 EQU 14 ;50uS DELAY
  42.  
  43. SSCLK MACRO XXX
  44. EX DE,HL
  45. LD (HL),XXX
  46. EX DE,HL
  47. ENDM
  48.  
  49. ORG 0
  50. 0000' F3 SERIAL: DI
  51. 0001' 21 1003 LD HL,CREG
  52. 0004' 36 C2 LD (HL),CW;init. 8255
  53. 0006' ED 56 IM 1 ;restart 38h
  54. 0008' 21 1001 LD HL,BPORT
  55. 000B' 11 1003 LD DE,CREG
  56. SSCLK SCLK1 ;force SCLK=1
  57. 000E' EB + EX DE,HL
  58. 000F' 36 02 + LD (HL),SCLK1
  59. 0011' EB + EX DE,HL
  60. MACRO-80 3.44 09-Dec-81 PAGE 1-1
  61.  
  62.  
  63. SSCLK SD1 ;SD=1
  64. 0012' EB + EX DE,HL
  65. 0013' 36 00 + LD (HL),SD1
  66. 0015' EB + EX DE,HL
  67. 0016' 3A 1000 LD A,(APORT);clear APORT interrupt
  68. 0019' CB 56 NEN: BIT 2,(HL) ;SERVO ENABLE=HIGH?
  69. 001B' 28 FC JR Z,NEN
  70. 001D' 06 20 LD B,20H ;servo reset executing
  71. 001F' 00 INI0: NOP
  72. 0020' 10 FD DJNZ INI0
  73. U 0022' C3 0000 JP MAIN00
  74.  
  75. ORG 38H ;RST 7 INPUT FROM CPU
  76. ;HL=BPORT
  77. ;DE=CREG
  78. 0038' A7 AND A ;RE-TEST SD=0
  79. U 0039' CA 0000 JP Z,REC ;SD LOW
  80. SSCLK SCLK0 ;SET SCLK=0
  81. 003C' EB + EX DE,HL
  82. 003D' 36 03 + LD (HL),SCLK0
  83. 003F' EB + EX DE,HL
  84. 0040' 2D DEC L ;HL=APORT
  85. 0041' 4E LD C,(HL) ;FIRST BYTE TO C
  86. 0042' EB EX DE,HL ;CREG TO HL mod
  87. 0043' 2D DEC L ;POINT SREG *
  88. 0044' CB 7E OFULL: BIT 7,(HL) ;NOBF A *
  89. 0046' 28 FC JR Z,OFULL ;WAIT WHILE READING LAST OUTPUT *
  90. 0048' 2C INC L ;POINT CREG *
  91. 0049' EB EX DE,HL ;APORT TO HL mod
  92. 004A' 36 FF LD (HL),ACK;ACK TO CPU
  93. 004C' 2C INC L ;HL=BPORT
  94. 004D' CB 46 WD10: BIT 0,(HL) ;SD=0?
  95. 004F' 20 FC JR NZ,WD10
  96. U 0051' 06 00 LD B,STBL/100H
  97. 0053' 0A LD A,(BC) ;LENGTH FROM STBL
  98. 0054' 07 RLCA
  99. 0055' 07 RLCA
  100. 0056' 07 RLCA
  101. 0057' 47 LD B,A ;BIT COUNT
  102. SSCLK SCLK1 ;SET SCLK=1
  103. 0058' EB + EX DE,HL
  104. 0059' 36 02 + LD (HL),SCLK1
  105. 005B' EB + EX DE,HL
  106. 005C' CB 46 WD01: BIT 0,(HL) ;SD=1 ?
  107. 005E' 28 FC JR Z,WD01
  108. U 0060' C3 0000 JP TRANS
  109. 0063' 2D TRANS0: DEC L ;HL=APORT
  110. 0064' 4E LD C,(HL) ;load new data
  111. 0065' 71 LD (HL),C ;ack
  112. 0066' 2C INC L ;HL=BPORT
  113. 0067' AF TRANS: XOR A ;A=0&CLEAR FLAGS
  114. 0068' CB 19 RR C ;BIT TO CY
  115. 006A' 3F CCF ;NEG DATA
  116. 006B' 17 RLA ;BIT TO A/b0
  117. 006C' 12 LD (DE),A ;SET DATA
  118. 006D' CB 4E W102: BIT 1,(HL) ;SCLK=0 ?
  119. MACRO-80 3.44 09-Dec-81 PAGE 1-2
  120.  
  121.  
  122. 006F' 20 FC JR NZ,W102
  123. 0071' 05 DEC B
  124. 0072' 3E 07 LD A,7
  125. 0074' A0 AND B ;MOD 8
  126. U 0075' 20 00 JR NZ,RTRANS
  127. 0077' CB 4E W012: BIT 1,(HL) ;SCLK=1 ?;
  128. 0079' 28 FC JR Z,W012
  129. 007B' B0 OR B
  130. 007C' C2 0063' JP NZ,TRANS0
  131. U 007F' C3 0000 JP ARET
  132.  
  133. 0082' CB 4E RTRANS: BIT 1,(HL) ;SCLK=1?
  134. 0084' 28 FC JR Z,RTRANS
  135. 0086' C3 0067' JP TRANS
  136.  
  137. 0089' CB 4E ARET: BIT 1,(HL) ;SCLK=1?
  138. 008B' 28 FC JR Z,ARET
  139. SSCLK SD1 ;SD=1
  140. 008D' EB + EX DE,HL
  141. 008E' 36 00 + LD (HL),SD1
  142. 0090' EB + EX DE,HL
  143.  
  144. U 0091' 31 0000 MAIN00: LD SP,STACKP ;return address=main0
  145. 0094' 11 1003 LD DE,CREG
  146. 0097' 3E 01 LD A,SDMSK
  147. 0099' FB EI
  148.  
  149. 009A' A6 MAIN: AND (HL) ;SD=0?
  150. 009B' 20 FD JR NZ,MAIN
  151. 009D' F3 DI ;disable INPUT interrupt
  152. 009E' 06 02 REC: LD B,2 ;hold=20us
  153. 00A0' 10 FE REC1: DJNZ REC1
  154. 00A2' 06 0E LD B,DEL50
  155. SSCLK SCLK0 ;SET SCLK=0
  156. 00A4' EB + EX DE,HL
  157. 00A5' 36 03 + LD (HL),SCLK0
  158. 00A7' EB + EX DE,HL
  159.  
  160. 00A8' 10 FE K00: DJNZ K00 ;~50us delay
  161. 00AA' CB 46 WD011: BIT 0,(HL) ;SD=1?
  162. 00AC' 28 FC JR Z,WD011
  163. SSCLK SCLK1 ;set SCLK=1
  164. 00AE' EB + EX DE,HL
  165. 00AF' 36 02 + LD (HL),SCLK1
  166. 00B1' EB + EX DE,HL
  167. U 00B2' 01 0080 LD BC,RECTBL+80H
  168. 00B5' 1E 00 LD E,LAPORT
  169. 00B7' CB 4E W100: BIT 1,(HL) ;SCLK=0?
  170. 00B9' 20 FC JR NZ,W100
  171. 00BB' CB 4E W010: BIT 1,(HL) ;SCLK=1?
  172. 00BD' 28 FC JR Z,W010
  173. 00BF' 7E LD A,(HL) ;data in b0
  174. 00C0' 1F RRA ;data in CY
  175. 00C1' CB 19 RR C ;data to b7
  176. 00C3' 30 F2 JR NC,W100
  177. 00C5' 79 LD A,C ;data
  178. MACRO-80 3.44 09-Dec-81 PAGE 1-3
  179.  
  180.  
  181. 00C6' 12 LD (DE),A;output
  182. 00C7' 0A LD A,(BC) ;command length-1
  183. 00C8' A7 AND A
  184. U 00C9' 28 00 JR Z,W1 ;1 byte command
  185. 00CB' 47 LD B,A ;byte count
  186. 00CC' 0E 80 W000: LD C,80H ;bit flag
  187. 00CE' CB 4E W101: BIT 1,(HL) ;SCLK=0?
  188. 00D0' 20 FC JR NZ,W101
  189. 00D2' CB 4E W011: BIT 1,(HL) ;SCLK=1?
  190. 00D4' 28 FC JR Z,W011
  191. 00D6' 7E LD A,(HL) ;data in b0
  192. 00D7' 1F RRA ;data in CY
  193. 00D8' CB 19 RR C ;data to b7
  194. 00DA' 30 F2 JR NC,W101
  195. 00DC' 79 LD A,C ;data
  196. 00DD' 12 LD (DE),A;output
  197. 00DE' 10 EC DJNZ W000
  198. 00E0' CB 46 W1: BIT 0,(HL) ;test data line<>0
  199. 00E2' 28 FC JR Z,W1
  200. 00E4' C3 0091' JP MAIN00
  201. ORG 100H
  202. 0100' 07 07 07 07 RECTBL: DEFB 7,7,7,7,5,2,0,0,0,0,0,0,0,0,0,0 ;00
  203. 0104' 05 02 00 00
  204. 0108' 00 00 00 00
  205. 010C' 00 00 00 00
  206. 0110' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;10
  207. 0114' 00 00 00 00
  208. 0118' 00 00 00 00
  209. 011C' 00 00 00 00
  210. 0120' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;20
  211. 0124' 00 00 00 00
  212. 0128' 00 00 00 00
  213. 012C' 00 00 00 00
  214. 0130' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;30
  215. 0134' 00 00 00 00
  216. 0138' 00 00 00 00
  217. 013C' 00 00 00 00
  218. 0140' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;40
  219. 0144' 00 00 00 00
  220. 0148' 00 00 00 00
  221. 014C' 00 00 00 00
  222. 0150' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;50
  223. 0154' 00 00 00 00
  224. 0158' 00 00 00 00
  225. 015C' 00 00 00 00
  226. 0160' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;60
  227. 0164' 00 00 00 00
  228. 0168' 00 00 00 00
  229. 016C' 00 00 00 00
  230. 0170' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;70
  231. 0174' 00 00 00 00
  232. 0178' 00 00 00 00
  233. 017C' 00 00 00 00
  234. 0180' 07 07 07 07 DEFB 7,7,7,7,0,2,0,0,0,0,0,0,0,0,0,0 ;80
  235. 0184' 00 02 00 00
  236. 0188' 00 00 00 00
  237. MACRO-80 3.44 09-Dec-81 PAGE 1-4
  238.  
  239.  
  240. 018C' 00 00 00 00
  241. 0190' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;90
  242. 0194' 00 00 00 00
  243. 0198' 00 00 00 00
  244. 019C' 00 00 00 00
  245. 01A0' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;A0
  246. 01A4' 00 00 00 00
  247. 01A8' 00 00 00 00
  248. 01AC' 00 00 00 00
  249. 01B0' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;B0
  250. 01B4' 00 00 00 00
  251. 01B8' 00 00 00 00
  252. 01BC' 00 00 00 00
  253. 01C0' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;C0
  254. 01C4' 00 00 00 00
  255. 01C8' 00 00 00 00
  256. 01CC' 00 00 00 00
  257. 01D0' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;D0
  258. 01D4' 00 00 00 00
  259. 01D8' 00 00 00 00
  260. 01DC' 00 00 00 00
  261. 01E0' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;E0
  262. 01E4' 00 00 00 00
  263. 01E8' 00 00 00 00
  264. 01EC' 00 00 00 00
  265. 01F0' 07 07 07 07 DEFB 7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0 ;F0
  266. 01F4' 00 00 00 00
  267. 01F8' 00 00 00 00
  268. 01FC' 00 00 00 00
  269.  
  270. 0200' 00 03 00 00 STBL: DEFB 0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;00
  271. 0204' 00 00 00 00
  272. 0208' 00 00 00 00
  273. 020C' 00 00 00 00
  274. 0210' 01 04 00 00 DEFB 1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;10
  275. 0214' 00 00 00 00
  276. 0218' 00 00 00 00
  277. 021C' 00 00 00 00
  278. 0220' 01 05 00 00 DEFB 1,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;20
  279. 0224' 00 00 00 00
  280. 0228' 00 00 00 00
  281. 022C' 00 00 00 00
  282. 0230' 01 01 00 00 DEFB 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;30
  283. 0234' 00 00 00 00
  284. 0238' 00 00 00 00
  285. 023C' 00 00 00 00
  286. 0240' 01 04 00 00 DEFB 1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;40
  287. 0244' 00 00 00 00
  288. 0248' 00 00 00 00
  289. 024C' 00 00 00 00
  290. 0250' 01 02 00 00 DEFB 1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;50
  291. 0254' 00 00 00 00
  292. 0258' 00 00 00 00
  293. 025C' 00 00 00 00
  294. 0260' 01 04 00 00 DEFB 1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;60
  295. 0264' 00 00 00 00
  296. MACRO-80 3.44 09-Dec-81 PAGE 1-5
  297.  
  298.  
  299. 0268' 00 00 00 00
  300. 026C' 00 00 00 00
  301. 0270' 01 04 00 00 DEFB 1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;70
  302. 0274' 00 00 00 00
  303. 0278' 00 00 00 00
  304. 027C' 00 00 00 00
  305. 0280' 01 02 00 00 DEFB 1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;80
  306. 0284' 00 00 00 00
  307. 0288' 00 00 00 00
  308. 028C' 00 00 00 00
  309. 0290' 01 01 00 00 DEFB 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;90
  310. 0294' 00 00 00 00
  311. 0298' 00 00 00 00
  312. 029C' 00 00 00 00
  313. 02A0' 01 03 00 00 DEFB 1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;A0
  314. 02A4' 00 00 00 00
  315. 02A8' 00 00 00 00
  316. 02AC' 00 00 00 00
  317. 02B0' 01 03 02 00 DEFB 1,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0 ;B0
  318. 02B4' 00 00 00 00
  319. 02B8' 00 00 00 00
  320. 02BC' 00 00 00 00
  321. 02C0' 01 01 02 00 DEFB 1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0 ;C0
  322. 02C4' 00 00 00 00
  323. 02C8' 00 00 00 00
  324. 02CC' 00 00 00 00
  325. 02D0' 01 01 02 00 DEFB 1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0 ;D0
  326. 02D4' 00 00 00 00
  327. 02D8' 00 00 00 00
  328. 02DC' 00 00 00 00
  329. 02E0' 01 01 02 00 DEFB 1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0 ;E0
  330. 02E4' 00 00 00 00
  331. 02E8' 00 00 00 00
  332. 02EC' 00 00 00 00
  333.  
  334. MACRO-80 3.44 09-Dec-81 PAGE S
  335.  
  336.  
  337. Macros:
  338. SSCLK
  339.  
  340. Symbols:
  341. 00FF ACK 1000 APORT 0089' ARET
  342. 1001 BPORT 1002 CPORT 1003 CREG
  343. 00C2 CW 000E DEL50 001F' INI0
  344. 00A8' K00 0000 LAPORT 009A' MAIN
  345. 0091' MAIN00 0019' NEN 0044' OFULL
  346. 009E' REC 00A0' REC1 0100' RECTBL
  347. 0082' RTRANS 0003 SCLK0 0002 SCLK1
  348. 0001 SD0 0000 SD1 0001 SDMSK
  349. 0000' SERIAL 1002 SREG 0000U STACKP
  350. 0200' STBL 0067' TRANS 0063' TRANS0
  351. 00CC' W000 00BB' W010 00D2' W011
  352. 0077' W012 00E0' W1 00B7' W100
  353. 00CE' W101 006D' W102 005C' WD01
  354. 00AA' WD011 004D' WD10
  355.  
  356.  
  357.  
  358. 9 Fatal error(s)
  359.  
  360.  
  361. 0002 SCLK1
  362. 0001 SD0 0000 SD1 0001 SDMSK
  363. 0000' SE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement