% === RAW:TEST === %  11.10.88 VERSION 19
GLOBAL (LOCATION=&400) (START=MAIN)
  DATA GDIFF,AZC
  EQUALS BRCKSY=&04,SPECSY=&07

LOCALS LMAIN
  EQUALS X:OFF="S"-&40  ,X:ON="Q"-&40
  BYTES INPSY[1]

  EQUALS DUMDLY=100        %    X-OFF
  EQUALS STPDLY=250        %    

  DATA DUMCTR,STPCTR
  DATA ISOUT

%%   
  BYTES 0     ,IOF[1],IGF[1],IPF[1]
  BYTES OIF[1],0     ,OGF[1],OPF[1]
  BYTES GIF[1],GOF[1],0     ,GPF[1]
  BYTES PIF[1],POF[1],PGF[1],0

%%
%%   
%%
PROGRAM MAIN()
. BPT
  CALL GPINIT          %%   
  CALL INIBUF          %%  
%  ....                %%  
  (WHILE
    GOSUB CCKGET
    GOSUB CCKPUT
    GOSUB CCKINP
    GOSUB CCKOUT
%.. SYSCALL DELAY ......
  )WHILE


%%
%%     
%%
LABEL CCKGET
  (IF R0(CALL GTEST)<>0       %  ?
    STPCTR='STPDLY'           %    . 
    CALL PUTBUF R0(CALL GET)  %  
    (IF R0(CALL TSTFUL)<>0    %  ?
      GPF:=1                  %  X-OFF'A
      DUMCTR='DUMDLY'         %    
      STPCTR=0                %    2 X-OFF'
    )IF
  )IF

  (IF STPCTR<>0
    (IF STPCTR(-1)=           %    ?
      GPF:=1                  % X-OFF
      DUMCTR='DUMDLY'
    )IF
  )IF

  (IF DUMCTR<>0
    (IF DUMCTR(-1)=           %   
      GOF:=1                  %   
    )IF
  )IF

  RETURN ,

%%
%%     
%%
LABEL CCKPUT
%%                     
  (IF GPF:<>0                 % X-OFF ?
    GPF:=0
    INPSY:='X:OFF+&80' ; ISOUT=1
  ELSE IF OPF:<>0             % X-ON ?
    OPF:=0
    INPSY:='X:ON+&80' ; ISOUT=1
  ELSE IF IPF:<>0             %  ?
    IPF:=0
    ISOUT=1
  )IF

  (IF ISOUT<>0                %  ?
    (IF R0(CALL PTEST)<>0     %  ?
      CALL PUT R0:(INPSY)
      ISOUT=0
    )IF
  )IF

  RETURN ,

%%
%%     
%%
LABEL CCKINP
  (IF R0(SYSCALL DPM)>=0
    IF R0:='SPECSY' THEN SYSCALL EXIT &FFFF   %BRCKSY   

    IF R0:='"K"-&40' THEN R0='X:ON+&80'

    INPSY:=R0                 %   
    IPF:=1                    %     
  )IF
  RETURN ,

%%
%%     
%%
LABEL CCKOUT
  (IF GOF:<>0                 %   ?
    GOF:=0
    CALL FLUSH                %  ( )
    OPF:=1                    %  X-ON
  )IF
  RETURN ,
