/* * io.h * * This file is part of Emu48 * * Copyright (C) 1999 Christoph Gießelink * */ // I/O addresses without mapping offset #define BITOFFSET 0x00 // Display bit offset and DON #define CRC 0x04 // Crc (16 bit, LSB first) #define LPD 0x08 // Low Power Detection #define LPE 0x09 // Low Power detection Enable #define ANNCTRL 0x0b // Annunciator Control (2 nibble) #define BAUD 0x0d // Baudrate (Bit 2-0) #define CARDCTL 0x0e // card control #define CARDSTAT 0x0f // card status #define IOC 0x10 // IO CONTROL #define RCS 0x11 // RCS #define TCS 0x12 // TCS #define CRER 0x13 // CRER #define RBR_LSB 0x14 // RBR low nibble #define RBR_MSB 0x15 // RBR high nibble #define TBR_LSB 0x16 // TBR low nibble #define TBR_MSB 0x17 // TBR high nibble #define SRQ1 0x18 // SRQ1 #define SRQ2 0x19 // SRQ2 #define IR_CTRL 0x1a // IR CONTROL #define LCR 0x1c // Led Control Register #define LBR 0x1d // Led Buffer Register #define DISP1CTL 0x20 // Display Start Address #define LINENIBS 0x25 // Display Line Offset #define LINECOUNT 0x28 // Display Line Counter #define TIMER1_CTRL 0x2e // Timer1 Control #define TIMER2_CTRL 0x2f // Timer2 Control #define DISP2CTL 0x30 // Display Secondary Start Address #define TIMER1 0x37 // Timer1 (4 bit) #define TIMER2 0x38 // Timer2 (32 bit, LSB first) // 0x00 Display bit offset and DON [DON OFF2 OFF1 OFF0] #define DON 0x08 // Display On #define OFF2 0x04 // Display OFFset Bit2 #define OFF1 0x02 // Display OFFset Bit1 #define OFF0 0x01 // Display OFFset Bit0 // 0x08 Low Power Detection [LB2 LB1 LB0 VLBI] #define LB2 0x08 // Low Battery indicator memory port 2 #define LB1 0x04 // Low Battery indicator memory port 1 #define LB0 0x02 // Low Battery indicator system battery #define VLBI 0x01 // Very Low Battery Indicator // 0x09 Low Power detection Enable [ELBI EVLBI GRAM RST] #define ELBI 0x08 // Enable Low Battery Indicator #define EVLBI 0x04 // Enable Very Low Battery Indicator #define GRAM 0x02 // Glitch sensitive RAM #define RST 0x01 // ReSeT // 0x0b Annunciator Control [AON XTRA LA6 LA5] [LA4 LA3 LA2 LA1] #define AON 0x80 // Annunciators on #define LXTRA 0x40 // does nothing #define LA6 0x20 // LA6 - Transmitting #define LA5 0x10 // LA5 - Busy #define LA4 0x08 // LA4 - Alert #define LA3 0x04 // LA3 - Alpha #define LA2 0x02 // LA2 - ALT Shift #define LA1 0x01 // LA1 - Shift // 0x0d SERIAL Baud Rate [UCK BD2 BD1 BD0] #define UCK 0x08 // Uart ClocK #define BD2 0x04 // BauDrate Bit2 #define BD1 0x02 // BauDrate Bit1 #define BD0 0x01 // BauDrate Bit0 // 0x0e Card Control [ECDT RCDT SMP SWINT] #define ECDT 0x08 // Enable Card Detect #define RCDT 0x04 // Run Card Detect #define SMP 0x02 // Set module pulled #define SWINT 0x01 // Software Interrupt // 0x0f Card Status [P2W P1W P2C P1C] #define P2W 0x08 // High when Port2 writeable #define P1W 0x04 // High when Port1 writeable #define P2C 0x02 // High when Card in Port2 inserted #define P1C 0x01 // High when Card in Port1 inserted // 0x10 Serial I/O Control [SON ETBE ERBF ERBZ] #define SON 0x08 // Serial on #define ETBE 0x04 // Interrupt on transmit buffer empty #define ERBF 0x02 // Interrupt on receive buffer full #define ERBZ 0x01 // Interrupt on receiver busy // 0x11 Serial Receive Control/Status [RX RER RBZ RBF] #define RX 0x08 // Rx pin state (read-only) #define RER 0x04 // Receiver error #define RBZ 0x02 // Receiver busy #define RBF 0x01 // Receive buffer full // 0x12 Serial Transmit Control/Status [BRK LPB TBZ TBF] #define BRK 0x08 // Break #define LPB 0x04 // Loopback #define TBZ 0x02 // Transmitter busy #define TBF 0x01 // Transmit buffer full // 0x18 Service Request Register 1 [ISRQ TSRQ USRQ VSRQ] #define ISRQ 0x08 // IR receiver pulls NINT2 #define TSRQ 0x04 // Timer pulls NINT2 #define USRQ 0x02 // UART pulls NINT2 #define VSRQ 0x01 // VLBI pulls NINT2 // 0x19 Service Request Register 2 [KDN NINT2 NINT LSRQ] #define KDN 0x08 // Bit set when ON Key or Key Interrupt #define NINT2 0x04 // State of NINT2 #define NINT 0x02 // State of NINT #define LSRQ 0x01 // LED driver pulls NINT2 // 0x1a IR Control Register [IRI EIRU EIRI IRE] #define IRI 0x08 // IR input (read-only) #define EIRU 0x04 // Enable IR UART mode #define EIRI 0x02 // Enable IR interrupt #define IRE 0x01 // IR event // 0x1c Led Control Register [LED ELBE LBZ LBF] #define LED 0x08 // Turn on LED #define ELBE 0x04 // Enable Interrupt on Led Buffer empty #define LBZ 0x02 // Led Port Busy #define LBF 0x01 // Led Buffer Full // 0x1d Led Buffer Register [0 0 0 LBO] (bits 1-3 read zero) #define LBO 0x01 // 0x28 Display Line Counter LSB [LC3 LC2 LC1 LC0] #define LC3 0x08 // LC3 - Line Counter Bit3 #define LC2 0x04 // LC2 - Line Counter Bit2 #define LC1 0x02 // LC1 - Line Counter Bit1 #define LC0 0x01 // LC0 - Line Counter Bit0 // 0x29 Display Line Counter MSB [DA19 M32 LC5 LC4] #define DA19 0x08 // Drive A[19] #define M32 0x04 // Multiplex 32 way #define LC5 0x02 // LC5 - Line Counter Bit5 #define LC4 0x01 // LC4 - Line Counter Bit4 // 0x2e Timer1 Control [SRQ WKE INT XTRA] #define SRQ 0x08 // Service request #define WKE 0x04 // Wake up #define INTR 0x02 // Interrupt #define XTRA 0x01 // Extra function // 0x2f Timer2 Control [SRQ WKE INT RUN] #define SRQ 0x08 // Service request #define WKE 0x04 // Wake up #define INTR 0x02 // Interrupt #define RUN 0x01 // Timer run