//
//    3-   6 ( )
//

//   - 8253
BIN    =    0       /16-  
BCD    =    1       /4- BCD 
MEANDR =   06       / 
LSB    =  020       /   
MSB    =  040       /   
ML2    =  060       /  ,   
CNTSEL = 0100       /  = N*CNTSEL

CNTBASE = 176060
OURCNT = 2          / #2 -> 3- 

//    INTEL-8251 (58051)
/                    
SYNENB=200                    /  SYNC-
INTRST=100                    / 
REQTRX=040                    /    ( 105)
ERRRST=020                    /  
SNDBRK=010                    / " "
ENBRCX=004                    /  
REQRCX=002                    /    ( 108)
ENBTRX=001                    /  
/                    
STOP1=100; STOP2=200          / 1/2  
EVEN=040; ODD=000             /    
YESPAR=020; NOPAR=000         /    
BITS7=010; BITS8=014          / 7/8   
CLCK16=002; CLCK64=003        /     16/64
/                    
MDMRDY=200                    /  ( 107)
SYNDET=100                    / SYNC!
NOSTOP=040                    /   
OVFRCX=020                    /  
EPAR  =010                    / 
TRBUSY=004                    / 
YESRCX=002                    / 
TRXRDY=001                    / 

ARTBASE = 176010

  .text

  .globl k6init
k6init:
  mov r0,-(sp)
  mov r5,-(sp)

/      
  mov $377,*$176044
  mov $377,*$176054

/  
  mov $CNTBASE,r5
   /: , 2-  
  mov $CNTSEL*OURCNT+ML2+MEANDR+BIN,6(r5)
  add $OURCNT*2,r5
  mov $12,*r5            / 
  mov $0,*r5             / 

/  USART
  mov $ARTBASE+2,r5
  clr *r5                     /     
  clr *r5                     /-    
  mov $INTRST,*r5             / 
  mov $2000,r0                /   
  1:
    nop ; nop
  dec r0 ; bpl 1b
  mov $BITS8+STOP1+CLCK16,*r5            /8n1, 1:16
   /   ,  DTR  RTS
  mov $REQTRX+ENBTRX+REQRCX+ENBRCX,*r5

  mov (sp)+,r5
  mov (sp)+,r0
  rts pc

/ r0 = 0:  , r0 <> 0:   
  .globl k6otst
k6otst:
  mov *$ARTBASE+2,r0
  bic $177777-TRXRDY,r0
  rts pc

  .globl k6itst
k6itst:
  bit $YESRCX,*$ARTBASE+2
  bne i_1
    mov $400,r0
    rts pc
  i_1:
  mov *$ARTBASE,r0
  bic $177400,r0
  rts pc

  .globl k6out
k6out:
  mov r0,*$ARTBASE
  rts pc
