Mirror of CollapseOS
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.6KB

  1. ( ----- 600 )
  2. 601 MC6850 driver 606 Zilog SIO driver
  3. 615 SPI relay 619 Xcomp unit
  4. ( ----- 601 )
  5. ( MC6850 Driver. Load range B601-B603. Requires:
  6. 6850_CTL for control register
  7. 6850_IO for data register.
  8. CTL numbers used: 0x16 = no interrupt, 8bit words, 1 stop bit
  9. 64x divide. 0x56 = RTS high )
  10. CODE 6850<
  11. A 0x16 ( RTS low ) LDri, 6850_CTL OUTiA,
  12. BEGIN,
  13. 6850_CTL INAi, 0x01 ANDi, ( is ACIA rcv buf full? )
  14. JRZ, ( no, loop ) AGAIN,
  15. A 0x56 ( RTS high ) LDri, 6850_CTL OUTiA,
  16. ( we have data, fetch and push )
  17. 6850_IO INAi, PUSHA,
  18. ;CODE
  19. ( ----- 602 )
  20. CODE 6850>
  21. HL POP, chkPS,
  22. BEGIN,
  23. 6850_CTL INAi, 0x02 ANDi, ( are we transmitting? )
  24. JRZ, ( yes, loop ) AGAIN,
  25. A L LDrr, 6850_IO OUTiA,
  26. ;CODE
  27. ( ----- 603 )
  28. : (key) 6850< ;
  29. : (emit) 6850> ;
  30. : 6850$ 0x56 ( RTS high ) [ 6850_CTL LITN ] PC! ;
  31. ( ----- 605 )
  32. ( Zilog SIO driver. Load range B605-607. Requires:
  33. SIOA_CTL for ch A control register
  34. SIOA_DATA for ch A data register
  35. SIOB_CTL for ch B control register
  36. SIOB_DATA for ch B data register )
  37. CODE SIOA<
  38. A 0x05 ( PTR5 ) LDri, SIOA_CTL OUTiA,
  39. A 0b01101000 ( De-assert RTS ) LDri, SIOA_CTL OUTiA,
  40. BEGIN,
  41. SIOA_CTL ( RR0 ) INAi, 0x01 ANDi, ( is rcv buf full? )
  42. JRZ, ( no, loop ) AGAIN,
  43. A 0x05 ( PTR5 ) LDri, SIOA_CTL OUTiA,
  44. A 0b01101010 ( Assert RTS ) LDri, SIOA_CTL OUTiA,
  45. ( we have data, fetch and push )
  46. SIOA_DATA INAi, PUSHA,
  47. ;CODE
  48. ( ----- 606 )
  49. CODE SIOA>
  50. HL POP, chkPS,
  51. BEGIN,
  52. SIOA_CTL INAi, 0x04 ANDi, ( are we transmitting? )
  53. JRZ, ( yes, loop ) AGAIN,
  54. A L LDrr, SIOA_DATA OUTiA,
  55. ;CODE
  56. CREATE _ ( init data ) 0x18 C, ( CMD3 )
  57. 0x24 C, ( CMD2/PTR4 ) 0b11000100 C, ( WR4/64x/1stop/nopar )
  58. 0x03 C, ( PTR3 ) 0b11000001 C, ( WR3/RXen/8char )
  59. 0x05 C, ( PTR5 ) 0b01101010 C, ( WR5/TXen/8char/RTS )
  60. 0x21 C, ( CMD2/PTR1 ) 0 C, ( WR1/Rx no INT )
  61. : SIOA$ 9 0 DO _ I + C@ [ SIOA_CTL LITN ] PC! LOOP ;
  62. ( ----- 607 )
  63. CODE SIOB<
  64. BEGIN,
  65. SIOB_CTL ( RR0 ) INAi, 0x01 ANDi, ( is rcv buf full? )
  66. JRZ, ( no, loop ) AGAIN,
  67. ( we have data, fetch and push )
  68. SIOB_DATA INAi, PUSHA,
  69. ;CODE
  70. CODE SIOB>
  71. HL POP, chkPS,
  72. BEGIN,
  73. SIOB_CTL INAi, 0x04 ANDi, ( are we transmitting? )
  74. JRZ, ( yes, loop ) AGAIN,
  75. A L LDrr, SIOB_DATA OUTiA,
  76. ;CODE
  77. : SIOB$ 9 0 DO _ I + C@ [ SIOB_CTL LITN ] PC! LOOP ;
  78. ( ----- 619 )
  79. ( RC2014 classic with MC6850 )
  80. 0xff00 CONSTANT RS_ADDR 0xfffa CONSTANT PS_ADDR
  81. RS_ADDR 0x80 - CONSTANT SYSVARS
  82. 0x8000 CONSTANT HERESTART
  83. 0x80 CONSTANT 6850_CTL 0x81 CONSTANT 6850_IO
  84. 4 CONSTANT SPI_DATA 5 CONSTANT SPI_CTL 1 CONSTANT SDC_DEVID
  85. 5 LOAD ( z80 assembler )
  86. 262 LOAD ( xcomp ) 282 LOAD ( boot.z80.decl )
  87. 270 LOAD ( xcomp overrides ) 283 335 LOADR ( boot.z80 )
  88. 353 LOAD ( xcomp core low ) 601 603 LOADR ( MC6850 )
  89. 419 LOAD ( SPI relay ) 423 436 LOADR ( SD Card )
  90. 400 LOAD ( AT28 )
  91. 390 LOAD ( xcomp core high )
  92. (entry) _
  93. PC ORG @ 8 + ! ( Update LATEST )
  94. ," 6850$ BLK$ " EOT,
  95. ( ----- 620 )
  96. ( RC2014 classic with SIO )
  97. 0xff00 CONSTANT RS_ADDR 0xfffa CONSTANT PS_ADDR
  98. RS_ADDR 0x80 - CONSTANT SYSVARS
  99. 0x8000 CONSTANT HERESTART
  100. 0x80 CONSTANT SIOA_CTL 0x81 CONSTANT SIOA_DATA
  101. 0x82 CONSTANT SIOB_CTL 0x83 CONSTANT SIOB_DATA
  102. 4 CONSTANT SPI_DATA 5 CONSTANT SPI_CTL 1 CONSTANT SDC_DEVID
  103. 5 LOAD ( z80 assembler )
  104. 262 LOAD ( xcomp ) 282 LOAD ( boot.z80.decl )
  105. 270 LOAD ( xcomp overrides ) 283 335 LOADR ( boot.z80 )
  106. 353 LOAD ( xcomp core low ) 605 607 LOADR ( SIO )
  107. 419 LOAD ( SPI relay ) 423 436 LOADR ( SD Card )
  108. 400 LOAD ( AT28 ) : (key) SIOB< ; : (emit) SIOB> ;
  109. 390 LOAD ( xcomp core high )
  110. (entry) _ PC ORG @ 8 + ! ( Update LATEST )
  111. ," SIOB$ BLK$ " EOT,