[Coco] NitrOS9 with Deluxe RS232 Pak

Barry Nelson barry.nelson at amobiledevice.com
Thu Jun 18 01:38:29 EDT 2015


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

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 ?



More information about the Coco mailing list