[Coco] NitrOS9 with Deluxe RS232 Pak

Ron Klein ron at kdomain.org
Fri Jun 19 11:14:25 EDT 2015


Hill Bill,

I'm going to try this out as soon as I have the time.  Thank you for taking
the time to explain this.  I'll update you once I get it working.

Thanks!

-Ron


On Fri, Jun 19, 2015 at 3:12 AM, Bill Pierce via Coco <coco at maltedmedia.com>
wrote:

> Ron, Just so you'll know, once you start using Drivewire4, the RS-232 pak
> will become obsolete. DW4 already has the ability to have terminals running
> on the PC server and at a much faster baud rate by using the bitbanger
> port. The RS-232 pak cannot match the speeds at which DW4 can reach.
>
> Once you have DW4 going, you have access to the entire Coco library of
> software on your PC, DW4 MIDI, virtual printer, telnet, as well as PC
> terminals. DW4 is possibly one of the best innovations yet for the Coco.
> The explination Barry provided for telnet is very good... but for just a
> "dumb terminal" for the Coco, DW4 has that built in and it's much easier.
>
> You say you've already had DW4 going in HDBDOS, then all you need is the
> DW disk image for NitrOS9 and you're good to go. All needed drivers are
> already there except (IIRC), the current NitrOS9 build (for some odd
> reason) had the "/z1"-"/z7" descriptors removed from the bootfile and they
> will have to be added back in to use the terminals. The "/Zx" descripters
> are what is used for the virtual terminal (in it's simplest form). These
> descriptors are on the disk in the "nitros9/6x09Lx/modules/scf" folder. At
> least "/z1" (more if you want more terminals) has to be added to the
> bootfile. The driver is already there. To activate, just type:
>
> shell i=/z1&<ENTER>
>
> and DW4 does the rest... a terminal pops up on the server screen :-)
> Most "text" based cmds can then be run from the terminal. No graphics
> based operation can be used though.
>
> I Hope this helps.
>
>
>
>
>
>
> Bill Pierce
> "Charlie stole the handle, and the train it won't stop going, no way to
> slow down!" - Ian Anderson - Jethro Tull
>
>
>
> My Music from the Tandy/Radio Shack Color Computer 2 & 3
> https://sites.google.com/site/dabarnstudio/
> Co-Contributor, Co-Editor for CocoPedia
> http://www.cocopedia.com/wiki/index.php/Main_Page
> Global Moderator for TRS-80/Tandy Color Computer Forums
> http://www.tandycoco.com/forum/
>
> E-Mail: ooogalapasooo at aol.com
>
>
>
>
>
>
> -----Original Message-----
> From: Ron Klein <ron at kdomain.org>
> To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
> Sent: Thu, Jun 18, 2015 2:46 pm
> Subject: Re: [Coco] NitrOS9 with Deluxe RS232 Pak
>
>
> Hi Gene,
>
> That is a fascinating story about the Coco!  As a kid, I remember
> seeing
> your name quite a bit but then left the Coco world for many, many years.
> I
> love hearing stories like this from pioneer hackers like yourself.
> Marty
> Goodman was another person who seemed legendary in the Coco scene.
> I
> actually had some very pleasant email exchanges with him back in the 90's
> and
> purchased a few things from him.  It doesn't appear he's an active
> participant
> in the Coco scene any longer.  I hope he's doing well, wherever
> he may be.
>
> As
> an FYI, I don't know if my RS232 Pak has been modded in any way.  Not
> sure if
> this would be important for my purposes.  My intent is to use the
> RS232 pak as a
> way to remote into my Coco.
>
> As always, thank you for all your
> help!
>
> -Ron
>
>
>
>
>
>
> On Thu, Jun 18, 2015 at 4:17 AM, Gene Heskett
> <gheskett at wdtv.com> wrote:
>
> > On Thursday 18 June 2015 01:38:29 Barry Nelson
> wrote:
> > > This page seems to have a good collection of null modem wiring
> > >
> diagrams.
> > >
> > > http://www.pccompci.com/rs232-cable-technology.html
> > >
> > >
> Here is what I believe is my last version of the ACAIPAK driver that I
> > > used
> to use with my BBS. This is assembly source code, and needs to be
> > > compiled
> with: asm aciapak o=aciapak #40k
> > >
> > > This is optional, but if I recall, it
> has some enhancements and
> > > stability improvements. It should certainly wait
> indefinitely for a
> > > connection. It appears to be hardcoded to have the RS232
> pak in slot 1
> > > of the multipak. I think this is the case for the regular
> driver as
> > > well.
> > >
> > >  nam ACIAPAK
> > >  ifp1
> > >  use /dd/defs/defsfile
> >
> >  endc
> > >  ttl New ACIAPAK with set screen size.
> > > verson equ $01
> > >  mod
> endmod,namemd,drivr+objct,reent+verson,xferad,endmem
> > > IRQReq  set %10000111
> >
> > ErrorFl set %00000111
> > > INSIZ  set 255 <- Must be between 32 and 255
> > >
> OUTSIZ set 255 <- Must be between 32 and 255
> > >  org V.SCF
> > > INXTI rmb
> $0001
> > > INXTO rmb $0001
> > > INCNT rmb $0001
> > > ONXTI rmb $0001
> > > ONXTO rmb
> $0001
> > > HALTED rmb $0001
> > > INHALT rmb $0001
> > > LASTDCD rmb $0001
> > > SIGPRC
> rmb $0002
> > > STATUS rmb $0001
> > > Parity rmb $0001
> > > Baud rmb $0001
> > > COLS
> rmb $0001
> > > ROWS rmb $0003
> > > INBUF rmb INSIZ
> > > OUTBUF rmb OUTSIZ+1
> > >
> virqmem rmb 5
> > > endmem equ .
> > >  nam ACIAPAK
> > > lFF92 equ $00AF
> > > PDESCADD
> equ $0050
> > > cFF92 equ $0092
> > > xFF22 equ $FF22
> > > xFF23 equ $FF23
> > >
> MultPak equ $FF7F
> > > xFF92 equ $FF92
> > > IT.COL equ $2C
> > > IT.PAR equ $26
> > >
> fcb $03
> > > namemd fcs "ACIAPAK"
> > >  fcb $0C
> > > xferad
> > >  lbra INIT
> > >
> lbra READ
> > >  lbra WRITE
> > >  lbra GETSTA
> > >  lbra SETSTA
> > >  lbra TERM
> > >
> irqpakt
> > >  fcb 0
> > >  fcb IRQReq
> > >  fcb 10
> > > virqpkt
> > >  fcb 0,3
> > >  fcb
> 0,3
> > >  fcb $80
> > > *****************************
> > > * Initialize the RS232
> pak. *
> > > *****************************
> > > INIT ldx V.PORT,u
> > >  stb $01,x
> >
> >  ldd IT.COL,y
> > >  std COLS,u
> > >  ldd IT.PAR,y
> > >  lbsr SetComSt
> > >  ldd
> V.PORT,u
> > >  addd #$0001
> > >  leax irqpakt,pcr
> > >  leay IRQRout,pcr
> > >  os9
> f$irq
> > >  bcs InitEnd
> > > ****************
> > > * Install VIRQ *
> > >
> ****************
> > >  leay virqpkt,pcr
> > >  leax virqmem,u
> > >  ldb #5
> > >
> vcopy
> > >  lda ,y+
> > >  sta ,x+
> > >  decb
> > >  bne vcopy
> > >  ldx #1
> > >  leay
> virqmem,u
> > >  ldd #3
> > >  os9 f$virq
> > >  bcs InitEnd
> > >  pshs cc
> > >  orcc
> #$50
> > >  lda >xFF23
> > >  anda #$FC
> > >  sta >xFF23
> > >  lda >xFF22
> > >  lda
> <cFF92
> > >  ora #$01
> > >  sta <cFF92
> > >  sta >xFF92
> > >  puls cc
> > >  lda
> #$03
> > >  sta >MultPak
> > >  clrb
> > > InitEnd rts
> > > z006E orcc #$50
> > >  lda
> ,x
> > >  lda ,x
> > >  lda $01,x
> > >  ldb $01,x
> > >  ldb $01,x
> > >  bmi z00E0
> > >
> lda #$02
> > >  sta HALTED,u
> > >  clra
> > >  andb #$60
> > >  std INHALT,u
> > >
> clrb
> > >  std INXTI,u
> > >  std ONXTI,u
> > >  sta INCNT,u
> > >  std SIGPRC,u
> > >
> andcc #$AF
> > >  rts
> > > RecMT bsr Sleep
> > > ********************
> > > * Read a
> character *
> > > ********************
> > > READ
> > >  orcc #$50
> > >  lda INHALT,u
> >
> >  ble z00B1
> > >  ldb INCNT,u
> > >  cmpb #$0A
> > >  bhi z00B1
> > >  ldb V.XON,u
> > >
> orb #$80
> > >  stb INHALT,u
> > >  ldb #$05
> > >  lbsr IPort1
> > > z00B1 tst
> SIGPRC,u
> > >  bne z00E0
> > >  ldb INXTO,u
> > >  leax INBUF,u
> > >  cmpb INXTI,u
> > >
> beq RecMT
> > >  abx
> > >  lda ,x
> > >  dec INCNT,u
> > >  incb
> > >  cmpb #INSIZ-1
> > >
> bls z00CF
> > >  clrb
> > > z00CF stb INXTO,u
> > >  ldb V.ERR,u
> > >  beq ExitWrOk
> > >
> stb PD.ERR,y
> > >  clr V.ERR,u
> > >  comb
> > >  ldb #$F4
> > >  bra ExitWr
> > > z00E0
> comb
> > >  ldb #$F6
> > >  rts
> > > Sleep pshs x,b,a
> > >  lda V.BUSY,u
> > >  sta
> V.WAKE,u
> > >  andcc #$AF
> > >  ldx #0
> > >  os9 f$sleep
> > >  ldx <PDESCADD
> > >
> ldb $19,x
> > >  beq z00FD
> > >  cmpb #$03
> > >  bls z0113
> > > z00FD clra
> > >  lda
> $0C,x
> > >  bita #$02
> > >  bne z0113
> > >  ldb #$DC
> > >  lda V.ERR,u
> > >  bita
> #$20
> > >  bne z010E
> > >  puls pc,x,b,a
> > > z010E inc $3F,y
> > >  clr V.ERR,u
> > >
> z0113 leas $06,s
> > >  coma
> > >  rts
> > > TXFull bsr Sleep
> > >
> *********************
> > > * Write a character *
> > > *********************
> > >
> WRITE
> > >  orcc #$50
> > >  leax OUTBUF,u
> > >  ldb ONXTI,u
> > >  abx
> > >  sta ,x
> >
> >  incb
> > >  cmpb #OUTSIZ-1
> > >  bls z0128
> > >  clrb
> > > z0128
> > >  cmpb
> ONXTO,u
> > >  beq TXFull
> > >  stb ONXTI,u
> > >  lda HALTED,u
> > >  beq ExitWrOk
> > >
> anda #$FD
> > >  sta HALTED,u
> > >  bne ExitWrOk
> > >  ldb #$05
> > >  lbsr IPort1
> > >
> ExitWrOk clrb
> > > ExitWr andcc #$AF
> > >  rts
> > > ***********************
> > > *
> Get status routines *
> > > ***********************
> > > GETSTA ldx PD.RGS,y
> > >
> cmpa #SS.Ready
> > >  bne NotSSRDY
> > >  ldb INCNT,u
> > >  beq z00E0
> > >  stb
> R$B,x
> > > ExitSta clrb
> > >  rts
> > > NotSSRDY cmpa #SS.Eof
> > >  beq ExitSta
> > >
> cmpa #SS.ScSiz
> > >  beq GetScSiz
> > >  cmpa #SS.ComSt
> > >  bne NotFound
> > >  ldd
> Parity,u
> > >  std R$Y,x
> > >  bra ExitSta
> > > GetScSiz clra
> > >  ldb COLS,u
> > >
> std R$X,x
> > >  ldb ROWS,u
> > >  std R$Y,x
> > >  bra ExitSta
> > > NotFound comb
> > >
> ldb #$D0
> > >  rts
> > > ***********************
> > > * Set status routines *
> > >
> ***********************
> > > SETSTA ldx PD.RGS,y
> > >  cmpa #SS.SSig
> > >  bne
> NotSSig
> > >  lda PD.CPR,y
> > >  ldb R$X+1,x
> > >  orcc #$50
> > >  tst INCNT,u
> > >
> bne SendSig
> > >  std SIGPRC,u
> > >  bra ExitWrOk
> > > SendSig andcc #$AF
> > >  os9
> f$send
> > >  clrb
> > >  rts
> > > NotSSig cmpa #SS.Open
> > >  beq SetOpen
> > >  cmpa
> #SS.Close
> > >  beq SetClose
> > >  cmpa #SS.ScSiz
> > >  beq SetScSiz
> > >  cmpa
> #SS.Relea
> > >  bne NotRelea
> > >  lda PD.CPR,y
> > >  cmpa SIGPRC,u
> > >  bne
> ExitSta
> > >  clr SIGPRC,u
> > >  rts
> > > SetScSiz clra
> > >  ldd R$X,x
> > >  stb
> COLS,u
> > >  ldd R$Y,x
> > >  stb ROWS,u
> > >  clrb
> > >  rts
> > > NotRelea cmpa
> #SS.ComSt
> > >  bne NotFound
> > >  ldd R$Y,x
> > > SetComSt std Parity,u
> > >  andb
> #$E0
> > >  pshs b
> > >  ldb Baud,u
> > >  andb #$07
> > >  leax <z01D7,pcr
> > >  ldb
> b,x
> > >  orb ,s+
> > >  anda #$E0
> > >  sta V.TYPE,u
> > >  ldx V.PORT,u
> > >  lda
> $02,x
> > >  anda #$1F
> > >  ora V.TYPE,u
> > >  std $02,x
> > >  bra z020C
> > > z01D7
> fcb $13
> > >  fcb $16
> > >  fcb $17
> > >  fcb $18
> > >  fcb $1A
> > >  fcb $1C
> > >
> fcb $1E
> > >  fcb $1F
> > > SetOpen ldb #$09
> > >  lda $07,x
> > >  cmpa #$01
> > >  bne
> z020C
> > >  orcc #$50
> > >  lbsr IPort1
> > >  lbra z006E
> > > SetClose lda $07,x
> > >
> bne z020C
> > >  ldb #$0B
> > >  lda Parity,u
> > >  bita #$10
> > >  beq z01FD
> > >
> z01FC clrb
> > > z01FD pshs b
> > > z01FF bsr z0211
> > >  bcs z01FF
> > >  puls b
> > >
> orcc #$50
> > >  lbsr IPort1
> > >  andcc #$AF
> > > z020C clrb
> > >  rts
> > > z020E
> lbsr Sleep
> > > z0211 ldb ONXTI,u
> > >  orcc #$50
> > >  cmpb ONXTO,u
> > >  bne
> z020E
> > >  rts
> > > ************************
> > > * Terminate the device *
> > >
> ************************
> > > TERM ldx <PDESCADD
> > >  lda ,x
> > >  sta V.BUSY,u
> >
> >  sta V.LPRC,u
> > >  bsr z01FC
> > >  lda <cFF92
> > >  anda #$FE
> > >  sta <cFF92
> >
> >  sta >xFF92
> > >  ldx #0
> > >  os9 f$irq
> > > *******************
> > > *
> De-install VIRQ *
> > > *******************
> > >  ldx #0
> > >  leay virqmem,u
> > >
> ldd #3
> > >  os9 f$virq
> > >  clrb
> > >  rts
> > > ***********************
> > > * IRQ
> handler routine *
> > > ***********************
> > > another ldb >xFF92
> > >  orb
> <lFF92
> > >  bra reentry
> > > IRQRout
> > >  ldb <lFF92
> > > reentry
> > >  andb #$FE
> >
> >  stb <lFF92
> > >  ldx V.PORT,u
> > >  sta STATUS,u
> > >  tfr a,b
> > >  andb #$60
> >
> >  cmpb LASTDCD,u
> > >  beq dcdok
> > >  tfr b,a
> > >  eorb LASTDCD,u
> > >  sta
> LASTDCD,u
> > >  lda STATUS,u
> > >  bitb #$20
> > >  beq z027F
> > >  bita #$20
> > >
> beq z027F
> > >  lda Parity,u
> > >  bita #$10
> > >  beq ExitIRQ
> > >  ldx V.PDLHd,u
> >
> >  beq nocd2
> > > nocd inc $3F,x
> > >  ldx $3D,x
> > >  bne nocd
> > > nocd2 lda
> #$20
> > >  bsr setverr
> > >  bra wake
> > > z027F bitb #$40
> > >  beq ExitIRQ
> > >
> bita #$40
> > >  lbne z03A2
> > >  lbra z0391
> > > dcdok bita #$08
> > >  bne INPUT
> > >
> bita #ErrorFl      Error flags?
> > >  bne ERROR          Handle it
> > >  bita
> #$10
> > >  beq ExitIRQ
> > >  lda INHALT,u
> > >  bpl NotHalt
> > >  anda #$7F
> > >  sta
> ,x
> > >  eora V.XON,u
> > >  anda #$7F
> > >  sta INHALT,u
> > >  lda HALTED,u
> > >  bne
> z02CF
> > >  bra ExitIRQ
> > > NotHalt leay OUTBUF,u
> > >  ldb ONXTO,u
> > >  cmpb
> ONXTI,u
> > >  beq TXMT
> > >  clra
> > >  lda d,y
> > >  incb
> > >  cmpb #OUTSIZ-1
> > >
> bls z02BD
> > >  clrb
> > > z02BD stb ONXTO,u
> > >  sta ,x
> > >  cmpb ONXTI,u
> > >  bne
> wake
> > > TXMT lda HALTED,u
> > >  ora #$02
> > >  sta HALTED,u
> > > z02CF ldb #$09
> >
> >  lbsr IPort2
> > > wake ldb #$01
> > >  lda V.WAKE,u
> > > wake2 beq ExitIRQ
> > >
> clr V.WAKE,u
> > > wake3 os9 f$send
> > > ExitIRQ ldx V.PORT,u
> > >  lda $01,x
> > >
> lbmi another
> > >  clrb
> > >  rts
> > > setverr ora V.ERR,u
> > >  sta V.ERR,u
> > >
> rts
> > > INPUT
> > >  bita #$07
> > >  beq InputOk
> > > ERROR
> > >  tfr a,b
> > >  tst
> ,x
> > >  anda #ErrorFl
> > >  bsr setverr
> > >  lda $02,x
> > >  sta $01,x
> > >  sta
> $02,x
> > >  bra ExitIRQ
> > > InputOk lda ,x
> > >  beq StorINP
> > >  cmpa V.INTR,u
> >
> >  lbeq z0380
> > >  cmpa V.QUIT,u
> > >  lbeq z0384
> > >  cmpa V.PCHR,u
> > >  beq
> z0378
> > >  cmpa V.XON,u
> > >  lbeq z0391
> > >  cmpa V.XOFF,u
> > >  lbeq z03A2
> > >
> StorINP leax INBUF,u
> > >  ldb INXTI,u
> > >  abx
> > >  sta ,x
> > >  incb
> > >  cmpb
> #INSIZ-1
> > >  bls notend1
> > >  clrb
> > > notend1
> > >  stb INXTI,u
> > >  cmpb
> INXTO,u
> > >  bne NotFull
> > >  lda INXTO,u
> > >  inca
> > >  cmpa #INSIZ-1
> > >  bls
> notend2
> > >  clra
> > > notend2
> > >  sta INXTO,u
> > >  lda #INSIZ-1
> > >  sta
> INCNT,u
> > >  lda #$04
> > >  bsr setverr
> > >  bra NoInc
> > > NotFull
> > >  inc
> INCNT,u
> > > NoInc
> > >  tst SIGPRC,u
> > >  beq z034A
> > >  ldd SIGPRC,u
> > >  clr
> SIGPRC,u
> > >  lbra wake3
> > > z034A lda V.XOFF,u
> > >  lbeq wake
> > >  ldb
> INCNT,u
> > >  cmpb #INSIZ-32
> > >  lbcs wake
> > >  ldb INHALT,u
> > >  lbne wake
> > >
> anda #$7F
> > >  sta V.XOFF,u
> > >  ora #$80
> > >  sta INHALT,u
> > >  ldb #$05
> > >
> bsr IPort1
> > >  lbra wake
> > > IPort1 ldx V.PORT,u
> > > IPort2 orb V.TYPE,u
> > >
> stb $02,x
> > >  clrb
> > >  rts
> > > z0378 ldx V.DEV2,u
> > >  beq StorINP
> > >  sta
> $08,x
> > >  bra StorINP
> > > z0380 ldb #$03
> > >  bra z0386
> > > z0384 ldb #$02
> > >
> z0386 pshs a
> > >  lda V.LPRC,u
> > >  lbsr wake2
> > >  puls a
> > >  lbra StorINP
> > >
> z0391 lda HALTED,u
> > >  anda #$FE
> > >  sta HALTED,u
> > >  bne z039F
> > >  ldb
> #$05
> > >  bsr IPort2
> > > z039F lbra ExitIRQ
> > > z03A2 lda HALTED,u
> > >  bne
> z03AB
> > >  ldb #$09
> > >  bsr IPort2
> > > z03AB ora #$01
> > >  sta HALTED,u
> > >
> bra z039F
> > >  emod
> > > endmod equ *
> > >  end
> >
> > This worked flawlessly for 15
> years, using /t1, from the forgotten chip
> > article in RBow all those years ago.
> It functioned in this case as a
> > personality storage/retrieval system for a
> Grass Valley Group 300-3A/B
> > production video switcher.  Written in B09,
> running on a coco2 at WDTV.
> > Grass had a somewhat similar device called an
> EDisk that ran 4x slower
> > and was downright klunky to use, but they wanted
> $20,000 for their
> > version.  I sold the tv station a coco2 out of my collection
> with that
> > added acia on some perfboard under the keyboard, with 2 disk drives
> for
> > $245.  But it gave our Tech Directors running a newscast, the ability
> >
> for each of them to save and recall his own "bag of tricks" to use to
> > pretty
> up a newscast.  Grass's version had to be setup by the time the
> > cast opened
> because it was so slow, mine was fast enough the T.D. could
> > discover that
> button didn't do what he expected, he could run to the
> > keyboard and call up
> his stuff, and it was done by the end of the
> > opening commercial break.  They
> loved it.
> >
> > Bruce Istead I think it was, made up a patch that because the 6551
> was
> > drain bamaged, (and because of that, I have never really understood why
> >
> it was so widely used) swapped two of the status lines which made the 7
> > wire
> hardware flow control protocol work correctly, and it was in the
> > next
> generation driver, SACIA.dr, but I am not convinced that patch
> > survived the
> nitros9 conversion to sc6551.dr.  My rs232 pack has that
> > hardware hack in it,
> and I have never been able to make flow controls
> > work properly with it since
> it became sc6551.dr.  Someone with time on
> > their hands needs to check that out
> and make it work again.  Its
> > controlled by a bit in the descriptor, plays with
> the DCR/DCD functions
> > being reversed, IIRC.  I hope that patch is on RTSI, if
> not I may have a
> > copy.  I used it extensively when nitros9 was at about
> V1.16-V1.22.
> >
> > > On Jun 17, 2015, at 11:18 PM, coco-request at maltedmedia.com
> wrote:
> > > > Date: Wed, 17 Jun 2015 23:15:55 -0400
> > > > From: Michael Brant
> <brant.michael.l at gmail.com>
> > > > To: CoCoList for Color Computer Enthusiasts
> <coco at maltedmedia.com>
> > > > Subject: Re: [Coco] NitrOS9 with Deluxe RS232 Pak
> >
> > > Message-ID:
> > > >     <CAGJGKwjr5JQDvhLnvJq3CA_2i-Xd=b-=
> >
> MiKevX_T10xsKxNJEg at mail.gmail.com
> > > >> Content-Type: text/plain;
> charset=UTF-8
> > > >
> > > > Will all this talk of rs232 and null modem cables.
> How would one
> > > > make one?  Or does anyone know where they can aquired ?
> >
> >
> Cheers, Gene Heskett
> > --
> > "There are four boxes to be used in defense of
> liberty:
> >  soap, ballot, jury, and ammo. Please use in that order."
> > -Ed
> Howdershelt (Author)
> > Genes Web page <http://geneslinuxbox.net:6309/gene>
> >
> >
> --
> > Coco mailing list
> > Coco at maltedmedia.com
> >
> https://pairlist5.pair.net/mailman/listinfo/coco
> >
>
> --
> Coco mailing
> list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>


More information about the Coco mailing list