These are the PORTs found in IO map Real Hardware (number 6)

NOTE- with the addition of the new method for Remapping IO, selecting an IO map via menu(or via port) is depricated but will remain for compatability. Only MAPs 1,5 and 6 are needed. all other mapping can be derived from them. 

		IMSAI MIO
00:	Cassette I/O
01:	Parallel Data I/O
02: 	Serial Data I/O = Console 0 
03:	Status            Control       76                      54
'       RD-PScio            7654cd--    00 P1 Out Da in PIOS    00  no RW CRI
'       TT iiRRR                tt      01 P1 in  Dr            01  en write CRI
'       SR ooddd                sr      10 P0 out Da            10  en read CRI
'          ssyyy                        11 P0 in  Dr            11  en RW CRI

04:	
05:
		Altair Cassette
06:	CassetteTape Status/Control 
	Oxxx xxxI	
	 O=1 is Output ready	I=1 is input availible	
07:	CassetteTape I/O

     WD17XX, Tarbell FDCs, VersaFloppy and Cromemco 16FDC added 1.0.18
       ports normally at oxf8-0xfb for tarbel
       ports normally at ox30-0x33 for 16FDC
       ports normally at ox64-0x67 for 16FDC
08:	WD17xx Command/status
09:	WD17xx track
0A:	WD17xx sector
0B:	WD17xx data

0C:	Tarbell double Density Disk Controller command/wait(normal logic)
       port normally at oxFC for tarbell
     d7-DRQ
     d6-side select - side0=0 side1=1
     d5-DS
     d4-DS
     d3-density - single=0 double=1
     d2
     d1
     d0

0D:	Tarbell original  Disk Controller command/wait(INVERTED LOGIC)
       port normally at oxFC for tarbell
     d7-0=wait seek complete 1=normal???(probably DRQ)
     d6-side select - side0=1 side1=0
     d5-DS (low)
     d4-DS (low)
     d3
     d2
     d1-Make Command - 1(high) TO LATCH
     d0

0E:	 VersaFloppy II Reset
	normally at 0x60
0F:	 VersaFloppy II Select
	normally at 0x63 (INVERTED LOGIC)
     b0-3 Drive Select 1,2,3,4
     b4   Side Select
     b5   5/8
     b6   Double/Single Density
     b7   Wait State Enable/INUSE STB*

       ports normally at ox00-0x9 for 16FDC
10:	16FDC serial status/baud
11:	16FDC serial data
12:	16FDC serial command
13:	16FDC IRQ Vector/interupt mask
14:	16FDC Aux Disk Stat/Ext Command
       d7-DRQ/RTC            d7-not used
       d6-seek in progress   d6-eject low
       d5-not used           d5-DS override low
       d4 sw5(64FDC)         d4-Fast Seek low
       d3-sw5/sw1(64FDC)     d3-restore low
       d2-sw6/sw2(64FDC)     d2-Control out low
       d1-sw7/sw3(64FDC)     d1-side select low
       d0-sw8/sw4(64FDC)     d0-not used

     note.. SW 0n=0, SW off=1
	64/16
	j1/sw1 - off Rdos-II is not defeated
	j2/sw2 - on  Rdos-II disabled after boot
	j3/sw3 - on  OS auto loads 
	j4/sw4 - off OS can format disk
	sw1/sw5 - off Baud Rate not preset
	sw2/sw6 -  Reserved
	sw3/sw7 -  Reserved
	sw4/sw8 - Reserved
	    sw2 sw3 sw4	-64FDC
	  - off off off drive A 
	  - off off on  drive B 
	  - off on  off drive C 
	  - off on  on  drive D
	sw5 -auto self test -64FDC

15:	IN not connected / OUT Timer 1
16:	IN not connected / OUT Timer 2
17:	IN not connected / OUT Timer 3   
18:	IN not connected / OUT Timer 4
19:	IN not connected / OUT Timer 5

       port normally at ox34 for 16FDC
1A:	16FDC Disk Flags
      d7-DRQ                      d7-1=Auto Wait
      d6-Boot (low) SW3/j3        d6-1=double density
      d5-HeadLoad  1793 asking    d5-1=turn motors on
      d4-inhibit Init (low) SW 4  d4-Maxi mini 1=8"/0=5"
      D3-Motor on FDC asking      d3-DS4 1=select
      D2- Motor TimeOut           d2=DS3
      d1-autowait TimeOut         d1-DS2
      d0-End Of Job=1             d0-DS1

       port normally at ox40 for 16FDC
1B:	Cromemco bank select port(for cromemco, common start should be page 0x80 (0x8000)
	 bank selected  0 1 2 3 4 5 6 7	Cromemco bank
	 ------------------------------
	 above common   0 x x x x x x x	Z80 Emulator bank
	 below common   0 1 2 3 4 5 6 7 
		(no other memory configuration is supported)

		High Speed Paper Tape Reader
1C:	High Speed Reader in status  40h =ready
1D:	High Speed Reader in data 
1E:	High Speed Reader out status 40h =ready
1F:	High Speed Reader out data 

' TUART dev A (20-29)
' only serial IO and parallel out is implemented

20: ' in status/out baud
    'd7-1=TBE
    'D6-1=RDA
    'D5-1=Irq pending
    'D4-start bit detect
    'D3-Full bit detect
    'D2-ser recive
    'D1-Overrun
    'D0-Frame Err

21: ' in recieve /out transmit

22: ' IN NOT CONNECTED / out 
    'd7 - Not used
    'd6 - Not used
    'd5 - test
    'd4 - HighBaud
    'd3 - INTA enable
    'd2 - RST7 sel.
    'd1 - Break
    'd0 - Reset
    
O23: ' In IRQ Vector/out interupt mask
    'FF     d7-timer 5
    'F7     d6-timer 4
    'EF     d5-TBE
    'E7     d4=RDA
    'DF     d3-timer 3
    'D7     d2-
    'CF     d1-timer 2
    'C7     d0-timer 1

24: ' Parallel
' 	the input uses IO WAit(same as Z80Sim)
' 	output assumes IO Wait, but all output is IO wait

25: 'IN not connected / OUT Timer 1
26: 'IN not connected / OUT Timer 2
27: 'IN not connected / OUT Timer 3  
28: 'IN not connected / OUT Timer 4
29: 'IN not connected / OUT Timer 5

    ' first Intellec FDC
'FDCS are normally mapped to 0x78-0x7f and 0x88-0x8f
30: 'base +0
	Status(r)
31: 'base +1 
	Result Type(r)
	IOPBlow (w)
32: 'base +2
        IOPBhigh (w)
33: 'base +3
	Result Byte (r)
        Stop Operation (w)
34: 'base +4
35: 'base +5
36: 'base +6
37: 'base +7
        Reset (w)
        
    ' second Intellec FDC
38: 'base +0
	Status
39: 'base +1
	Result Type
        IOPBlow
3A: 'base +2
        IOPBhigh 
3B: 'base +3
	Result Byte
        StopOperation
3C: 'base +4
3D: 'base +5
3E: 'base +6
3F: 'base +7
        Reset 
        

'Cromemco PRI (only dot matrix interface implemented)
O53: ' out interupt mask
    '    d7-
    '    d6-
    '    d5-
    '    d4-
    '    d3-
    '    d2-Int Enable
    '    d1-
    '    d0-

54: ' Printer data out(bit 7=strobe)/status in (busy=0x20)

; partial implementation of 8259 Interrupt Controllers for MDS800/Series II
; warning - this is not final (may Change)
; not implemented correctly, but can be used to UN/MASK interrupts for the Intellec FDCs
; if mapped to the right address for each machine

5c: interrupt mask (W/O)
	null
5d: control
	null
5E: interrupt mask (W/O)
	bit 2 is LEVEL 2 and controls only FDC0 and FDC1, 0=enabled 1=masked
5F: control
	null

'  $PIO Board
60: 	status 4pio in	80h =ready
61: 	  data 4pio in
62: 	status 4pio out	80h =ready
63: 	  data 4pio out
64: 	status 4pio in	80h =ready
65: 	  data 4pio in
66: 	status 4pio out	80h =ready
67: 	  data 4pio out
68: 	status 4pio in	80h =ready
69: 	  data 4pio in
6A: 	status 4pio out	80h =ready
6B: 	  data 4pio out
6C: 	status 4pio in	80h =ready
6D: 	  data 4pio in
6E: 	status 4pio out	80h =ready
6F: 	  data 4pio out

' Digital Systems FDC model 1
7c:	(added to implement Pin functions)
	in (nothing) OUT (bit 0=Ireset, bit 1=Bootstrap, bit 2=dzprot(not implemented))
			(bit7=home3,bit6=home2,bit5=home1,bit4=home0,)
	hint: simlulate a boot in debug console with (boot auto homes drive 0)
		>>o 7c 3
		>>go 0
	hint: to home drive0
		>>o 7c 10
7D:	in (nothing) OUT DMA LOW
7E:	in (nothing) OUT DMA high
7F:	in Status    out Command

' TUART dev B (80-89)
' only serial IO and parallel out is implemented

80: ' in status/out baud
    'd7-1=TBE
    'D6-1=RDA
    'D5-1=Irq pending
    'D4-start bit detect
    'D3-Full bit detect
    'D2-ser recive
    'D1-Overrun
    'D0-Frame Err

81: ' in recieve /out transmit

82: ' IN NOT CONNECTED / out 
    'd7 - Not used
    'd6 - Not used
    'd5 - test
    'd4 - HighBaud
    'd3 - INTA enable
    'd2 - RST7 sel.
    'd1 - Break
    'd0 - Reset
    
83: ' In IRQ Vector/out interupt mask
    'FF     d7-timer 5
    'F7     d6-timer 4
    'EF     d5-TBE
    'E7     d4=RDA
    'DF     d3-timer 3
    'D7     d2-
    'CF     d1-timer 2
    'C7     d0-timer 1

84: ' Parallel
' 	the input uses IO WAit(same as Z80Sim)
' 	output assumes IO Wait, but all output is IO wait

85: 'IN not connected / OUT Timer 1
86: 'IN not connected / OUT Timer 2
87: 'IN not connected / OUT Timer 3
88: 'IN not connected / OUT Timer 4
89: 'IN not connected / OUT Timer 5

