Advertisement
Guest User

Untitled

a guest
May 29th, 2016
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. ; 8080 + 8251 KICK START
  2. ;
  3. USRTRD EQU 11111110B ;8251 data register
  4. USRTRC EQU 11111111B ;8251 control register
  5. ;
  6. ; RESET VECTOR
  7. ORG 0000H
  8. SYSINI:
  9. LXI SP,0FEFCH ;setup stack
  10. MVI A,00H
  11. STA RBFCNT ;setup ring buffer
  12. STA RBFRDP
  13. STA RBFWTP
  14. OUT USRTRC ;setup 8251
  15. OUT USRTRC
  16. OUT USRTRC
  17. MVI A,01000000B
  18. OUT USRTRC
  19. MVI A,01001110B
  20. OUT USRTRC
  21. MVI A,00110111B
  22. OUT USRTRC
  23. EI
  24. JMP MAIN
  25. ;
  26. ; A -> 8251
  27. PUTCHR:
  28. PUSH PSW
  29. PCLOP1: IN USRTRC
  30. ANI 00000001B ;transmitter ready?
  31. JZ PCLOP1
  32. POP PSW
  33. OUT USRTRD ;transmit
  34. RET
  35. ;
  36. ; RST7 VECTOR
  37. ORG 0038H
  38. ;
  39. ; 8251 -> BUFFER
  40. DI
  41. PUSH PSW
  42. PUSH B
  43. PUSH D
  44. PUSH H
  45. IN USRTRC
  46. ANI 00000010B ;receiver ready?
  47. JZ INTEXT
  48. IN USRTRD ;receive
  49. MOV D,A ;data -> reg.byte.D
  50. LDA RBFCNT ;get data count
  51. CPI 0FFH ;buffer full?
  52. JZ INTEXT
  53. INR A ;increment data count
  54. STA RBFCNT
  55. LDA RBFWTP ;get write point
  56. MOV C,A ;write point low -> reg.byte.C
  57. MVI B,00H ;write point high -> reg.byte.B
  58. LXI H,RECBUF ;buffer top -> HL
  59. DAD B ;HL + BC -> HL
  60. MOV M,D ;reg.byte.D -> (HL)
  61. INR A ;increment write point
  62. STA RBFWTP
  63. INTEXT: POP H
  64. POP D
  65. POP B
  66. POP PSW
  67. EI
  68. RET
  69. ;
  70. ; BUFER -> A
  71. GETCHR:
  72. PUSH B
  73. PUSH D
  74. PUSH H
  75. GCLOP1: LDA RBFCNT ;get data count
  76. CPI 00H ;Is there data?
  77. JZ GCLOP1
  78. DI
  79. DCR A ;decrement data count
  80. STA RBFCNT
  81. LDA RBFRDP ;get read point
  82. MOV C,A ;read point low -> reg.byte.C
  83. MVI B,00H ;read point high -> reg.byte.B
  84. LXI H,RECBUF ;buffer top -> HL
  85. DAD B ;HL + BC -> HL
  86. MOV D,M ;(HL) -> reg.byte.D
  87. INR A ;increment read point
  88. STA RBFRDP
  89. MOV A,D ;data -> Acc
  90. EI
  91. POP H
  92. POP D
  93. POP B
  94. RET
  95. ;
  96. MAIN:
  97. MVI A,'A' ;print 'A'
  98. CALL PUTCHR
  99. MVI A,'B' ;print 'B'
  100. CALL PUTCHR
  101. MVI A,'C' ;print 'C'
  102. CALL PUTCHR
  103. MVI A,13 ;CR, LF
  104. CALL PUTCHR
  105. MVI A,10
  106. CALL PUTCHR
  107. LOOP:
  108. CALL GETCHR ;key-in and echo
  109. CALL PUTCHR
  110. JMP LOOP
  111. ;
  112. ; SYSTEM PARAMETERS
  113. ORG 0FEFDH
  114. RBFCNT DS 01H ;data count
  115. RBFRDP DS 01H ;read point
  116. RBFWTP DS 01H ;write point
  117. RECBUF DS 100H ;buffer
  118. ;
  119. END 0000H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement