BBC SHEILA Hardware I/O Addresses ================================= Addr Write Action Read Action ------------------------------------------------------------------------- FE00-FF Electron ULA ==================== FE00 Interrupt Control Interrupt Status FE01 FE02 (Screen Start)DIV2 Low Byte FE03 (Screen Start)DIV2 High Byte FE04 Cassette data shift output Cassette data shift input FE05 ROMSEL and interrupt clear FE06 Counter FE07 Cassette, mode, caps light control FE08-0F Palette registers FE00-07 6845 CTRC Video controller ================================== FE00 Register Address &FE or CRTC status where supported FE01 Register Data Register Data From testing, the Master appears to use a CRTC with a status register, the BBC does not. FE08-0F 6850 ACIA Serial controller =================================== FE08 6850 Control 6850 Status FE09 6850 Data 6850 Data FE10-17 Serial ULA ================== FE10 Set Baud rate/cassette/motor BBC: reads &FE Master: a floating value that is %0xxxxxxx and usually %0x000000 FE18-1F Station ID/NMI Control (BBC B, B+) ========================================== FE18 - Station ID, disable net NMIs reads &FE if not present FE18-1F Analogue-to-Digital Convertor (Master) ============================================== FE18 Start conversion Status FE19 Data high byte FE1A Data low byte FE1B - - FE20-2F Video ULA ================= FE20 Video Control Enable network NMIs (B/B+) BBC: reads &FE Master: a floating value that is %0xxxxxxx and usually %0x000000 FE21 Palette Control - %ccccfbgr - palette selection FE22 Border colour/24-bit palette control %0000xbgr - border colour %01xxxxxx - palette control %1xxxxxxx - palette control FE23 24-bit palette selection - 1st write: %rrrrcccc 2nd write: %bbbbgggg FE24-27 Disk control (Master) ============================= FE24 Drive control register Master: a floating value that is %0xxxxxxx and usually %0x000000 FE28-2B 1770 Floppy Disk Controller (Master) ============================================ FE28 Command Status FE29 Track Track FE2A Sector Sector FE2B Data Data FE2C-2F (Master) ============================================ FE2C Master: a floating value that is FE2D %0xxxxxxx and usually %0x000000 FE2E FE2F FE30-3F Memory control ====================== FE30 ROMSEL BBC: reads &FE Master: ROMSEL FE34 ACCCON (B+/M) ACCON (B+/M) FE38 Disable network NMIs (Master) Disable network NMIs (Master) Read a floating value that is %0xxxxxxx and usually %0x000000 FE3C Enable network NMIs (Master) Enable network NMIs (Master) Read a floating value that is %0xxxxxxx and usually %0x000000 Solidisk RAM/ROM Expansion ========================== FE32 RAM Access Register - bank that writes to &8000-BFFF are directed to FE34 Shadow Register b7: 1=VDU and display uses shadow RAM 0=VDU and display uses main RAM FE36 Size Register 00 10 shadow RAM is 8000-FBFF 20 shadow RAM is 4000-C000 40 shadow RAM is 0800-8800 80 page in upper half of 32K ROM into 16K ROM area Integra-B ========= FE34 Memory control FE38 RTC register select FE3C Write RTC data Read RTC data FE40-5F System VIA ================== FE40 Output register B Input register B FE41 Output register A Input register A FE42 Data direction register B Data direction register B FE43 Data direction register A Data direction register A FE44 T1 low-order counter T1 low-order latches FE45 T1 high-order counter T1 high-order counter FE46 T1 low-order latches T1 low-order latches FE47 T1 high-order latches - FE48 T2 low-order latches T2 low-order counter FE49 T2 high order counter T2 high order counter FE4A Shift register Shift register FE4B Auxilary control register Auxilary control register FE4C Peripheral control register Peripheral control register FE4D Interrupt flag register Interrupt flag register FE4E Interrupt enable register Interrupt enable register FE4F Output register A, no handshake Input register A, no handshake FE60-7F User VIA ================ FE60 Output register B (User port) Input register B (User port) FE61 Output register A (Printer port) Input register A (Printer port) FE62 Data direction register B Data direction register B FE63 Data direction register A Data direction register A FE64 T1 low-order counter T1 low-order latches FE65 T1 high-order counter T1 high-order counter FE66 T1 low-order latches T1 low-order latches FE67 T1 high-order latches - FE68 T2 low-order latches T2 low-order counter FE69 T2 high order counter T2 high order counter FE6A Shift register Shift register FE6B Auxilary control register Auxilary control register FE6C Peripheral control register Peripheral control register FE6D Interrupt flag register Interrupt flag register FE6E Interrupt enable register Interrupt enable register FE6F Output register A, no handshake Input register A, no handshake FE80-9F 8271 Floppy disk controller (BBC B, B+) =============================================== FE80 Command Status FE81 Parameter Result FE82 Reset - FE83 - - FE84 Data Data FE80-9F 1770 Floppy disk controller (BBC B, B+) =============================================== FE80 Drive control register - FE81 FE82 FE83 FE84 Command Status FE85 Track Track FE86 Sector Sector FE87 Data Data FE80-9F Master internal expansion port (PL12) ============================================= If absent, reads a floating value that is %0xxxxxxx and usually %0x000000 FE80-8F Videodisc SCSI controller (Master) ========================================== FE80 Data Out Data In FE81 - Status FE82 Select - FE83 INT enable - FEA0-BF 6854 ALDC Econet controller =================================== FEA0 Control register 1 Status register 1 FEA1 Control register 2,3 Status register 2 FEA2 Transmit data, continue frame Receive data FEA3 Transmit data, terminate frame Receive data FEC0-DF Analogue-to-digital convertor (B/B+) ============================================ FEC0 Start conversion Status FEC1 Data high byte FEC2 Data low byte FEC3 - - FEC0-DF "Network interface" (Master) ==================================== If absent, reads a floating value that is %0xxxxxxx and usually %0x000000 FEDF Eureka memory control ============================= FEDF b3-b0: sideways ROM that Eureka overlays b4 : enable writing to side/switch RAM b5 : enable SIDE memory b6 : enable SWITCH memory b7 : enable Eureka 64K switch FEE0-FF Tube control ==================== BBC: reads as &FE if absent Master: reads as &FF if absent FEE0 Status Register 1 and Tube control Status Register 1 FEE1 Data Register 1 Data Register 1 FEE2 Status Register 2 Status Register 2 FEE3 Data Register 2 Data Register 2 FEE4 Status Register 3 Status Register 3 FEE5 Data Register 3 Data Register 3 FEE6 Status Register 4 and CPU control Status Register 4 FEE7 Data Register 4 Data Register 4 Torch Tube control ------------------ FEE0-EF 6522 VIA access to Torch 8255, release Torch reset line FEE0 Data out from host FEE1 Data in to host FEED Status: b4=TxRDY, b1=RxRDY FEF0-FF 6522 VIA access to Torch 8255, assert Torch reset line CUBE Tube control (may also be mirrored at &FEE0) ------------------------------------------------- FEF0-FF 6522 VIA access to CUBE 8255 FEF0 Data out from host FEF1 Data in to host FEFD Status: b4=TxRDY, b1=RxRDY Notes ===== On the BBC, IC26 pin 3 is not connected to anything, this is active when &FE30-F is read. This signal could be picked up something return some data. When &FE18 is written, IC96 selected and it drives the data bus with the station ID. Emulators ========= BeebEm ------ Reads from &FE00 CRTC return &00 Reads from &FE10 SERULA reads SERCONTROL register Reads from &FE18-F STATID return &FF if not present Reads from &FE20-3 VIDULA return &00-&03 (address AND 3) Reads from &FE30-3 ROMSEL on all machines