home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / beehive / zcat / sysiop21.lbr / RELIOP.ZZ0 / RELIOP.Z80
Text File  |  1991-01-31  |  6KB  |  185 lines

  1. ; Edit Version 1.00
  2. ;**************************************************************************
  3. ;**************************************************************************
  4. ;***                                    ***
  5. ;***    Dummy IOP for MicroMint SB-180 bios.                ***
  6. ;***                                    ***
  7. ;**************************************************************************
  8. ;**************************************************************************
  9. ;
  10. ; File Name        : RELIOP.Z80
  11. ; Author        : Edmund Cramp
  12. ; Creation Date        : 29-Dec-1985
  13. ;
  14. ; Proccessor Type    : HD64180
  15. ; Assembler Name    : Z80ASM (S.L.R Systems)
  16. ;
  17. ; Ammendment Record
  18. ; *****************
  19. ; Name        Date        Details of Ammendment
  20. ; ----        ----        ---------------------
  21. ; Edmund Cramp    29-Dec-1985    Initial Creation.
  22. ;
  23. ; Module Function.
  24. ; ****************
  25. ;    This is a minimal IOP to provide I/O for the CONSOLE device only.
  26. ; It is written in relocatable code and uses polled I/O - you will need to
  27. ; modify the ASCI1 entry for STAT1 in the bios IOTABLE to DISABLE interrupts
  28. ; when the system is cold booted (see below).
  29. ;    This module is to be loaded into the IOP partition when the system
  30. ; is first cold booted and should be replaced by a compatible IOP via LDR
  31. ; or BLDR in the system startup alias.
  32. ;**************************************************************************
  33.  
  34. ;    ==============
  35. ;    External Files
  36. ;    ==============
  37.  
  38.         MACLIB    HD64180.MLB    ; HD64180 macro library
  39.         MACLIB    PORTS.LIB    ; SB-180 hardware definitions.
  40.  
  41. ;    =============
  42. ;    Local Equates
  43. ;    =============
  44.  
  45. TDRE        EQU    00000010B    ; Transmit data register empty
  46. RDRF        EQU    10000000B    ; Receive data register full
  47.  
  48. ;**************************************************************************
  49. ;***    Changes to standard bios routines                ***
  50. ;**************************************************************************
  51.  
  52. ;+
  53. ;    ...in IOTABLE...
  54. ;    DEFB    00000100B    ; STAT1 - enable CTS*, no interrupts.
  55. ;                               ^^^^^^^^^^^^^^
  56. ;    ...in INTTBL...
  57. ;    DEFB    INTERR        ; ASCI 1 - Console does not use interrupts.
  58. ;                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  59. ; Redirect ALL console I/O through the BIOS vectors to that any programs
  60. ; that PATCH the BIOS table will work correctly if the BIOS issues an
  61. ; internal error message...
  62. ;
  63. ; BIOS:        JP    BOOT        ; # 0 Cold start        
  64. ; WBOOTE:    JP    WBOOT        ; # 1 Warm start        
  65. ; CONST:    JP    IOP+12        ; # 2 Console status        <-- *
  66. ; CONIN:    JP    IOP+15        ; # 3 Console character in    <-- *
  67. ; CONOUT:    JP    IOP+18        ; # 4 Console character out    <-- *
  68. ;        JP    IOP+21        ; # 5 List character out    
  69. ;        JP    IOP+24        ; # 6 Punch character out    
  70. ;        JP    IOP+27        ; # 7 Reader character in    
  71. ;        JP    HOME        ; # 8 Move head to home position
  72. ;        JP    SELDSK        ; # 9 Select disk        
  73. ;        JP    SETTRK        ; #10 Set track number        
  74. ;        JP    SETSEC        ; #11 Set sector number        
  75. ;        JP    SETDMA        ; #12 Set dma address        
  76. ;        JP    READ        ; #13 Read disk            
  77. ;        JP    WRITE        ; #14 Write disk        
  78. ;        JP    IOP+30        ; #15 Return list status    
  79. ;        JP    SECTRAN        ; #16 Sector translate        
  80. ;        ; SB-180 BIOS vectors...                
  81. ;        JP    IOINIT        ; #17 Initialise SB-180.    
  82. ;        JP    TIME        ; #18 Return pointer to RTC buffer.
  83. ;-
  84.  
  85. ;**************************************************************************
  86. ;***    Minimum I/O package - supports CONSOLE only.            ***
  87. ;**************************************************************************
  88. ;+
  89. ; IOP jump table - all unused entries exit Z (not ready).  The jump table is
  90. ; constructed using two byte jump relative instructions at 3 byte intervals
  91. ; so that the table appears to ZCPR to be a standard IOP.
  92. ;-
  93. IOPENT:        JR    IOPERR        ; SELECT returns "NO IOP"
  94.         NOP            ; Pad to 3 bytes...
  95.         JR    IOPERR        ; SELECT n/a
  96.         NOP            ; 
  97.         JR    IOPERR        ; NAMER n/a
  98.         NOP            ; 
  99.         JR    IOPERR        ; TINIT n/a
  100.         NOP            ; 
  101.         JR    ICONST        ; Local console status support
  102.         NOP            ; 
  103.         JR    ICONIN        ; Local console input support
  104.         NOP            ; 
  105.         JR    ICONOUT        ; Local console output support
  106.         NOP            ; 
  107.         JR    IOPERR        ; LIST n/a
  108.         NOP            ; 
  109.         JR    IOPERR        ; PUNCH n/a
  110.         NOP            ; 
  111.         JR    IOPERR        ; READER n/a
  112.         NOP            ; 
  113.         JR    IOPERR        ; LISTST n/a
  114.         NOP            ; 
  115.         JR    IOPERR        ; NEWIO n/a
  116.         NOP            ; 
  117.         JR    IOPERR        ; COPEN n/a
  118.         NOP            ; 
  119.         JR    IOPERR        ; CCLOSE n/a
  120.         NOP            ; 
  121.         JR    IOPERR        ; LOPEN n/a
  122.         NOP            ; 
  123.         JR    IOPERR        ; LCLOSE n/a
  124.         NOP            ; 
  125.         DEFB    'Z3IOP'        ; IOP header.
  126.         DEFZ    'MINIMUM'    ; IOP name.
  127.  
  128. ;+
  129. ; General unimplemented error exit.
  130. ;-
  131. IOPERR:        XOR    A        ; Return ZERO...
  132.         RET            ; ...
  133.  
  134. ;+
  135. ; Console input status, return 0ffh if char ready, 00h if not.
  136. ;-
  137. ICONST:        IN0    A,(STAT1)    ; Get the console status...
  138.         AND    RDRF        ; ...test for data ready...
  139.         RET    Z        ; ...exit if No character waiting.
  140.         ; 
  141.         XOR    A        ; Return 0FFh if character waiting...
  142.         DEC    A        ; ...
  143.         RET            ; ...exit READY.
  144.  
  145. ;+
  146. ; Get a console character into register A.
  147. ;-
  148. ICONIN:        IN0    A,(STAT1)    ; Get the console status...
  149.         AND    RDRF        ; ...test for data ready...
  150.         JR    Z,ICONIN    ; ...branch until ready.
  151.         ; Character is waiting.
  152.         IN0    A,(RDR1)    ; Read character...
  153.         AND    01111111B    ; ...strip msb...
  154.         RET            ; ...exit - Char in Acc.
  155.  
  156. ;+
  157. ; Console character output from register C.
  158. ;-
  159. ICONOUT:    IN0    A,(STAT1)    ; Check console status register...
  160.         AND    TDRE        ; ...
  161.         JR    Z,ICONOUT    ; Wait for empty register.
  162.         OUT0    (TDR1),C    ; Output the C register...
  163.         RET            ; ...exit - done.
  164.  
  165. IOPLEN        EQU    $-IOPENT
  166.  
  167.  
  168. ;**************************************************************************
  169. ;***    Modifications to BIOS cold boot routine.            ***
  170. ;**************************************************************************
  171.  
  172. ;+
  173. ; This is the code that must be inserted in the SB180s' COLD BOOT routine
  174. ; prior to any use of CONIN, CONST or CONOUT to load the above routines
  175. ; into the IOP partition...
  176. ;
  177. ;        LD    HL,IOPENT    ; Load the minimum IOP...
  178. ;        LD    DE,IOP        ; ...into the IOP partition...
  179. ;        LD    BC,IOPLEN    ; ...
  180. ;        LDIR            ; ...
  181. ;-
  182.  
  183.         END
  184.