1 1.5 christos /* $NetBSD: rfreg.h,v 1.5 2019/10/29 03:49:59 christos Exp $ */ 2 1.1 ragge /* 3 1.1 ragge * Copyright (c) 2002 Jochen Kunz. 4 1.1 ragge * All rights reserved. 5 1.1 ragge * 6 1.1 ragge * Redistribution and use in source and binary forms, with or without 7 1.1 ragge * modification, are permitted provided that the following conditions 8 1.1 ragge * are met: 9 1.1 ragge * 1. Redistributions of source code must retain the above copyright 10 1.1 ragge * notice, this list of conditions and the following disclaimer. 11 1.1 ragge * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 ragge * notice, this list of conditions and the following disclaimer in the 13 1.1 ragge * documentation and/or other materials provided with the distribution. 14 1.3 simonb * 3. The name of Jochen Kunz may not be used to endorse or promote 15 1.3 simonb * products derived from this software without specific prior 16 1.1 ragge * written permission. 17 1.1 ragge * 18 1.1 ragge * THIS SOFTWARE IS PROVIDED BY JOCHEN KUNZ 19 1.1 ragge * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 1.1 ragge * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 1.1 ragge * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JOCHEN KUNZ 22 1.1 ragge * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 1.1 ragge * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 1.1 ragge * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 1.1 ragge * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 1.1 ragge * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 1.1 ragge * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 1.1 ragge * POSSIBILITY OF SUCH DAMAGE. 29 1.1 ragge */ 30 1.1 ragge 31 1.1 ragge 32 1.1 ragge 33 1.2 wiz /* Registers in Uni/QBus I/O space. */ 34 1.1 ragge #define RX2CS 0 /* Command and Status Register */ 35 1.1 ragge #define RX2DB 2 /* Data Buffer Register */ 36 1.1 ragge /* RX2DB is depending on context: */ 37 1.1 ragge #define RX2BA 2 /* Bus Address Register */ 38 1.1 ragge #define RX2TA 2 /* Track Address Register */ 39 1.1 ragge #define RX2SA 2 /* Sector Address Register */ 40 1.1 ragge #define RX2WC 2 /* Word Count Register */ 41 1.1 ragge #define RX2ES 2 /* Error and Status Register */ 42 1.1 ragge 43 1.1 ragge 44 1.1 ragge /* Bitdefinitions of CSR. */ 45 1.1 ragge #define RX2CS_ERR 0x8000 /* Error RO */ 46 1.1 ragge #define RX2CS_INIT 0x4000 /* Initialize WO */ 47 1.1 ragge #define RX2CS_UAEBH 0x2000 /* Unibus address extension high bit WO */ 48 1.1 ragge #define RX2CS_UAEBI 0x1000 /* Unibus address extension low bit WO */ 49 1.1 ragge #define RX2CS_RX02 0x0800 /* RX02 RO */ 50 1.1 ragge /* 0x0400 Not Used -- */ 51 1.1 ragge /* 0x0200 Not Used -- */ 52 1.1 ragge #define RX2CS_DD 0x0100 /* Double Density R/W */ 53 1.1 ragge #define RX2CS_TR 0x0080 /* Transfer Request RO */ 54 1.1 ragge #define RX2CS_IE 0x0040 /* Interrupt Enable R/W */ 55 1.1 ragge #define RX2CS_DONE 0x0020 /* Done RO */ 56 1.1 ragge #define RX2CS_US 0x0010 /* Unit Select WO */ 57 1.1 ragge #define RX2CS_FCH 0x0008 /* Function Code high bit WO */ 58 1.1 ragge #define RX2CS_FCM 0x0004 /* Function Code mid bit WO */ 59 1.1 ragge #define RX2CS_FCL 0x0002 /* Function Code low bit WO */ 60 1.1 ragge #define RX2CS_GO 0x0001 /* Go WO */ 61 1.1 ragge #define RX2CS_NU 0x0600 /* not used bits -- */ 62 1.1 ragge 63 1.1 ragge 64 1.1 ragge #define RX2CS_UAEB ( RX2CS_UAEBH | RX2CS_UAEBI ) 65 1.1 ragge #define RX2CS_FC ( RX2CS_FCH | RX2CS_FCM | RX2CS_FCL ) 66 1.1 ragge 67 1.1 ragge 68 1.1 ragge /* Commands of the controller and parameter cont. */ 69 1.5 christos #define RX2CS_FBUF 0x1 /* Fill Buffer, word count and bus address */ 70 1.5 christos #define RX2CS_EBUF 0x3 /* Empty Buffer, word count and bus address */ 71 1.5 christos #define RX2CS_WSEC 0x5 /* Write Sector, sector and track */ 72 1.5 christos #define RX2CS_RSEC 0x7 /* Read Sector, sector and track */ 73 1.5 christos #define RX2CS_SMD 0x9 /* Set Media Density, ??? */ 74 1.5 christos #define RX2CS_RSTAT 0xb /* Read Status, no params */ 75 1.5 christos #define RX2CS_WDDS 0xd /* Write Deleted Data Sector, sector and track */ 76 1.5 christos #define RX2CS_REC 0xf /* Read Error Code, bus address */ 77 1.5 christos #define RX2CS_MASK 0xf 78 1.1 ragge 79 1.1 ragge 80 1.1 ragge /* Track Address Register */ 81 1.1 ragge #define RX2TA_MASK 0x7f 82 1.1 ragge 83 1.1 ragge 84 1.1 ragge /* Sector Address Register */ 85 1.1 ragge #define RX2SA_MASK 0x1f 86 1.1 ragge 87 1.1 ragge 88 1.1 ragge /* Word Count Register */ 89 1.1 ragge #define RX2WC_MASK 0x7f 90 1.1 ragge 91 1.1 ragge 92 1.1 ragge /* Bitdefinitions of RX2ES. */ 93 1.3 simonb /* <15-12> Not Used -- */ 94 1.1 ragge #define RX2ES_NEM 0x0800 /* Non-Existend Memory RO */ 95 1.1 ragge #define RX2ES_WCO 0x0400 /* Word Count Overflow RO */ 96 1.1 ragge /* 0x0200 Not Used RO */ 97 1.1 ragge #define RX2ES_US 0x0010 /* Unit Select RO */ 98 1.1 ragge #define RX2ES_RDY 0x0080 /* Ready RO */ 99 1.1 ragge #define RX2ES_DEL 0x0040 /* Deleted Data RO */ 100 1.1 ragge #define RX2ES_DD 0x0020 /* Double Density RO */ 101 1.1 ragge #define RX2ES_DE 0x0010 /* Density Error RO */ 102 1.1 ragge #define RX2ES_ACL 0x0008 /* AC Lost RO */ 103 1.1 ragge #define RX2ES_ID 0x0004 /* Initialize Done RO */ 104 1.1 ragge /* 0x0002 Not Used -- */ 105 1.1 ragge #define RX2ES_CRCE 0x0001 /* CRC Error RO */ 106 1.1 ragge #define RX2ES_NU 0xF202 /* not used bits -- */ 107 1.1 ragge 108 1.1 ragge 109 1.1 ragge #define RX2_TRACKS 77 /* number of tracks */ 110 1.1 ragge #define RX2_SECTORS 26 /* number of sectors / track */ 111 1.1 ragge #define RX2_BYTE_SD 128 /* number of bytes / sector in single density */ 112 1.1 ragge #define RX2_BYTE_DD 256 /* number of bytes / sector in double density */ 113 1.1 ragge #define RX2_HEADS 1 /* number of heads */ 114 1.1 ragge 115