* DEQUEUE
*
MATCHW SRL  R7,1
       SOCB R7,@$RSTAT
       SOCB @DONE2,@$RSTA3
       MOV  R7,R7
       JEQ  MATCH2
       JMP  TOPDQ
MATCH2 BL   @RXD7
       MOVB R5,@$MWORD
       BL   @RXD7
       MOVB R5,@$MCERT
       JMP  TOPDQ
STRSYN MOVB R7,R7
       JEQ  ENDSYN
       SOCB @DONE7,@$RSTAT
       JMP  TOPDQ
ENDSYN SZCB @DONE7,@$RSTAT
       JMP  TOPDQ
BUFFER MOVB R7,R7
       JNE  BUFFON
       SZCB @DONE5,@$RSTAT
       JMP  TOPDQ
BUFFON SOCB @DONE5,@$RSTAT
       MOV  @$SYOLD,@$SYNAD
       AB   @$ONE,@$SYSTG
       MOVB @$RSTA3,R5
       ANDI R5,>100
       CI   R5,>100
       JNE  ENDR
       SOCB @DONE6,@$RSTAT
       SOCB @DONE7,@$RSTA3
       JMP  TOPDQ
MIKEON MOVB R7,R7
       JEQ  MIKEOF
       SOCB @DONE0,@$WORLD
       JMP  TOPDQ
MIKEOF SZCB @DONE0,@$WORLD
       JMP  TOPDQ
RDADDR MOVB @$NBYTE,R4
       SRL  R4,8
       MOV  @$XADDR,R3
RDADD2 LI   R7,8
       BL   @RXD
       MOVB R5,*R3+
       DEC  R4
       JNE  RDADD2
       SOCB @DONE4,@$RSTA3
       JMP  ENDR
MBEXID SOCB @DONE5,@$RSTA3
       MOVB R7,R7
       JEQ  MBEXOF
       SOCB @DONE6,@$WORLD
       JMP  TOPDQ
MBEXOF SZCB @DONE6,@$WORLD
ENDR   JMP  TOPDQ
* main deque
DEQUE  MOV  R11,*S+
DEQUE2
TOPDQ  LI   R7,4
       BL   @RXD
       MOV  R5,R7
       ANDI R7,>1000
       ANDI R5,>F00
       CI   R5,>E00
       JH   TOPDQ
       SRL  R5,7
       LI   R9,ZEROA
       A    R5,R9
       B    *R9
*
ZEROA  JMP  ENDDQ
       JMP  KEYR
       JMP  JOYR
       JMP  SETGAM
       JMP  SETTLK
       JMP  ALLCTM
       JMP  LISTEN
       JMP  ABRTLS
       JMP  TRAINW
       JMP  MATCHW
       JMP  STRSYN
       JMP  BUFFER
       JMP  MIKEON
       JMP  RDADDR
       JMP  MBEXID
*
KEYR   LI   R7,8
       MOV  R5,@KYWAIT
       BL   @RXD8
       MOVB R5,@$KYBRD
KEYR2  MOVB @$RSTA2,R7
       CI   R7,>8000
       JL   TOPDQ
       BL   @RXD8
       MOVB R5,@$KYBR2
       JMP  TOPDQ
*
JOYR   MOV  R5,@JYWAIT
       CLR  R4
NXTBYT AB   @$ONE,R4
       BL   @RXD8
NXTMSK AB   @$ONE,@$JOYCT
       CB   @$JOYCT,@EIGHT
       JL   JSCAN
       MOVB @ZERO$,@$JOYCT
JSCAN  MOVB @$JYMSK,R1
       MOVB @$JOYCT,R0
       SRL  R0,8
       MOV  R0,R0
       JEQ  NSHF
       SLA  R1,0
NSHF   CI   R1,>8000
       JL   NXTMSK
       MOVB @$JOYCT,R7
       SRL  R7,8
       MOVB R5,@$JOY1Y(R7)
       CI   R7,3
       JEQ  JBUTN
       CI   R7,7
       JNE  JNXT
JBUTN  MOVB R5,R5
JNXT   CB   R4,@$JYCNT
       JL   NXTBYT
       JMP  TOPDQ
*
SETGAM BL   @RXD7
       MOVB R5,@$TSLOT
       SOCB @DONE1,@$RSTA2
       JMP  TOPDQ
*
SETTLK BL   @RXD7
       MOVB R5,@$TSLOT
       SOCB @DONE2,@$RSTA2
       JMP  TOPDQ
*
ALLCTM SLA  R7,3
       SOCB R7,@$RSTAT
       SOCB @DONE3,@$RSTA2
       JMP  TOPDQ
*
LISTEN SLA  R7,2
       SOCB R7,@$RSTAT
       SOCB @DONE7,@$RSTA2
       JMP  TOPDQ
*
ABRTLS SLA  R7,1
       SOCB R7,@$RSTAT
       SOCB @DONE0,@$RSTA3
       SOCB @DONE1,@$RSTAT
       SOCB @DONE7,@$RSTA2
       B    @TOPDQ
*
TRAINW SOCB R7,@$RSTAT
       SOCB @DONE1,@$RSTA3
       B    @TOPDQ
*
ENDDQ  B    @EXITZ
* recv data from MBX
RXD8   LI   R7,8
       JMP  RXD
RXD7   LI   R7,7
RXD
RXDX   LI   R9,4
       CLR  R5
       SBO  16
RXD0   CLR  R1
RWD1   STCR R2,4
       STCR R6,4
       CB   R2,R6
       JNE  RWD1
       SRL  R2,8
       MOVB @NIBB(R2),R1
       CI   R1,>0300
       JH   RXD0
       SBZ  15
       MOV  R9,R0
       SLA  R0,1
       SRL  R1,0
       SOC  R1,R5
       DEC  R9
RXD1   CLR  R1
RWD2   STCR R2,4
       STCR R6,4
       CB   R2,R6
       JNE  RWD2
       SRL  R2,8
       INV  R2
       ANDI R2,>F
       MOVB @NIBB(R2),R1
       CI   R1,>0300
       JH   RXD1
       SBO  15
       MOV  R9,R0
       SLA  R0,1
       SRL  R1,0
       SOC  R1,R5
       DEC  R9
       JNE  RXD0
RXD2   STCR R2,4
       SRL  R2,8
       CI   R2,>F
       JNE  RXD2
       SBZ  16
       SLA  R5,8
RXD3   RT
NIBB   BYTE >FF,>FF,>FF,>FF
       BYTE >FF,>FF,>FF,>03
       BYTE >FF,>FF,>FF,>02
       BYTE >FF,>01,>00,>FF
