ET
;
;
WRITE.DATA
     DO
       DO B=$80
         DO
           A=PORT(PC) A=A.&.2
         UNTIL NZ
         A=(HL+) PORT(PB)=A
         A=9 PORT(CM)=A
         DO
           A=PORT(PC) A=A.&.4
         UNTIL NZ
         A=(HL+) PORT(PB)=A
         A=8 PORT(CM)=A
         DO
           A=PORT(PC) A=A.&.4
         UNTIL Z
       UNTIL DEC(B)=0
     UNTIL DEC(C)=0
     RET
;
;
COMMAND.OUT
     AF<>AF'
     A=$F PORT(CM)=A GOTO D0001
DATA.OUT
     AF<>AF'
D0001
     DO
       A=PORT(PC) A=A.&.2
     UNTIL NZ
     A=$E PORT(CM)=A
     AF<>AF'
     PORT(PB)=A
     A=9 PORT(CM)=A
     DO
       A=PORT(PC) A=A.&.4
     UNTIL NZ
     A=8 PORT(CM)=A
     DO
       A=PORT(PC) A=A.&.4
     UNTIL Z
     RET
;
;
DATA.INPUT
     A=$B PORT(CM)=A
     DO
       A=PORT(PC) A=A.&.1
     UNTIL NZ
     A=$A PORT(CM)=A
     A=PORT(PA)
     AF<>AF'
     A=$D PORT(CM)=A
     DO
       A=PORT(PC) A=A.&.1
     UNTIL Z
     A=$C PORT(CM)=A
     AF<>AF'
     RET
;
;
ERROR.CHECK
     A=6 !COMMAND.OUT !DATA.INPUT A=A.&.1
     IF Z THEN CY=0 RETURN
     CY=1 RETURN
;
;
DATA.CHECK
     A=E IF A>=80 THEN CY=1 RET
     A=D IF A>=6  THEN CY=1 RET
     CY=0 RET

SPRITE.BUFF    DEFS 260