MIB2 low-level access

Posts about Input & Output Cards for the Coleco Adam
User avatar
Posts: 11
Joined: Sun Jul 21, 2019 3:28 pm

Re: MIB2 low-level access

Post by pearsoe » Fri Aug 02, 2019 5:44 pm

Wmaalouli wrote:
Fri Aug 02, 2019 5:33 pm
This is one aspect of the ADAM which I find annoying: No standard serial or parallel port. How about using the Adamnet network? Any documents on how to access and decode the signals?
There is documentation for ADAMNet in the ADAM Technical Manual which you can probably find on http://adamarchive.org/

User avatar
Site Admin
Posts: 113
Joined: Fri Jul 19, 2019 3:13 pm
Location: Beaver Falls PA

Re: MIB2 low-level access

Post by Milli » Fri Aug 02, 2019 8:02 pm

No I was wrong / I assumed they were the same - look in the cpm section of the archive you may find code in one of the telecommunications images

Posts: 17
Joined: Mon Jan 20, 2020 3:13 pm

Re: MIB2 low-level access

Post by MrPix » Mon Feb 03, 2020 2:05 pm

Milli wrote:
Thu Aug 01, 2019 8:29 am
Here is code I use - should be self explanatory

Code: Select all

DataPort       .equ    044h            ; Data port (in/out)
StatPort       .equ    045h            ; Status port (in)
BaudRatePort   .equ    046h            ; Baud rate port (out)
ControlPort    .equ    047h            ; Control port (out)
InMask         .equ    2               ; 8251 RxRDY
OutMask        .equ    1               ; 8251 TxRDY
ChipSet        .equ    037h            ; 8251 RTS,ER,RxE,DTR,TxEN
ChipOff        .equ    035h            ; 8251 RTS,ER,RxE,TxEN (no dtr)
Break          .equ    ChipSet | 8     ; ChipSet OR send break
Freeze         .equ    022h
Reset          .equ    027h

n71            .equ    001001010b      ; 7n1
n81            .equ    001001110b      ; 8n1
n72            .equ    011001010b      ; 7n2
n82            .equ    011001110b      ; 8n2
e71            .equ    001111010b      ; 7e1
e81            .equ    001111110b      ; 8e1
e72            .equ    011111010b      ; 7e2
e82            .equ    011111110b      ; 8e2
o71            .equ    001011010b      ; 7o1
o81            .equ    001011110b      ; 8o1
o72            .equ    011011010b      ; 7o2
o82            .equ    011011110b      ; 8o2

b19200         .equ    03fh            ; 19200
b9600          .equ    03eh            ;  9600
b4800          .equ    03ch            ;  4800
b2400          .equ    03ah            ;  2400
b1200          .equ    037h            ;  1200
b600           .equ    036h            ;   600
b300           .equ    035h            ;   300

BitParityStop  .equ    n81
BaudRate       .equ    b300

Echo           .equ    FALSE

I will be able to go through and provide a replacement section here for a few common UARTs. They do all vary but are in four main compatibility groups.

2681 and compatibles - 68681 etc.
28L92 and compatibles.

This way, alternate drivers can be easily be delivered for every mainstream UART.

Posts: 17
Joined: Mon Jan 20, 2020 3:13 pm

Re: MIB2 low-level access

Post by MrPix » Wed Feb 19, 2020 8:02 pm

I have made some progress here. However, using the ‘2681 proved very unsatisfactory because of the basically non-existent FIFOs. It would stall out after a single character, making it very hard for external devices to lock onto the bit rate. Above 19200, match up was basically impossible and the Adam can’t handle the service load.

So I am going with a different DUART which I will document and provide the datasheet for. A brief test with it showed it would operate happily at 38,400. Unfortunately, then my monitor died so testing is halted for the moment.

That DUART will be incorporated into the multi card instead.

The main thing holding me up right now is the refresh of the internal DRAM, which on my Adam is also occurring on the expansion ports. If refresh were disabled and all RAM was static, the machine would be about 20% faster all the time.

Post Reply