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

LOCALS LMAIN
  DATA XOFMRK                    % ' '
  EQUALS X:OFF="S"-&40 ,X:ON="Q"-&40

  BYTES INPSY[1]
  BYTES ISOUT[1]                 % '  '

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

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

%%
%%     
%%
LABEL CCKGET
  (IF R0(CALL GTEST)<>0          %  ?
    CALL PUTBUF R0(CALL GET)     %   
    (IF R0(CALL TSTFUL)<>0       %   ?
      (IF XOFMRK=0               %  ?
        XOFMRK=1
        GPF:=1                   %  X-OFF'
      )IF
    )IF
  )IF
  RETURN ,

%%
%%     
%%
%     
LABEL CCKPUT
  (IF GPF:<>0                    % X-OFF ?
    GPF:=0
    INPSY:='X:OFF' ; ISOUT:=1
  ELSE IF OPF:<>0                % X-ON ?
    OPF:=0
    INPSY:='X:ON' ; 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(CALL DPMTST)<>0         %  ?
    R0:=R0(CALL DPM)             % 
    (IF R0:='SPECSY'             %  BRCKSY   
      CALL DPEND                 %   
      SYSCALL EXIT &FFFF
    )IF
    IF R0:='"K"-&40' THEN R0='X:ON'           %  X-OFF
    INPSY:=R0                    %   
    IPF:=1                       %    
  )IF
  RETURN ,

%%
%%     
%%
LABEL CCKOUT
  (IF R0(CALL TSTEMP)=0          %   ?
    (IF R0(CALL DPOTST)<>0       %  ?
      CALL DPO R0:(CALL GETBUF)  %    
    )IF
  ELSE
* ELSE IF R0(CALL TSTFUL)=0      %  ?
    (IF XOFMRK<>0                %   ?
      XOFMRK=0
      OPF:=1                     %    (X-ON)
    )IF
  )IF
  RETURN ,
