10 REM > GSEcho.bbc
   20 REM GSEcho for DOS/Windows
   30 REM J.G.Harston
   40 :
   50 *ESC OFF
   60 ON ERROR REPORT:PRINT:QUIT
   70 SYS"GetStdHandle",-10 TO @hfile%(1):*INPUT 13
   80 SYS"GetStdHandle",-11 TO @hfile%(2):*OUTPUT 14
   90 SYS"SetConsoleMode",@hfile%(1),0
  100 A$=@cmd$:B$=""
  110 IF LEFT$(A$,1)="""":IF RIGHT$(A$,1)="""":A$=MID$(A$,2,LENA$-2)
  120 REPEAT:PROCchar:UNTIL A$=""
  130 PRINT B$;
  140 QUIT
  150 :
  160 DEFPROCchar
  170 set%=0
  180 IF LEFT$(A$,2)="|!":set%=128:A$=MID$(A$,3)
  190 IF LEFT$(A$,2)="|?":B$=B$+CHR$(set%+127):A$=MID$(A$,3):ENDPROC
  200 IF LEFT$(A$,2)="||":B$=B$+CHR$(set%+ASC"|"):A$=MID$(A$,3):ENDPROC
  210 IF LEFT$(A$,2)="|""":B$=B$+CHR$(set%+ASC""""):A$=MID$(A$,3):ENDPROC
  220 IF LEFT$(A$,2)="""""":B$=B$+CHR$(set%+ASC""""):A$=MID$(A$,3):ENDPROC
  230 IF LEN A$>1:IF LEFT$(A$,1)="|":B$=B$+CHR$(set%+ASCMID$(A$,2,1)AND31):A$=MID$(A$,3):ENDPROC
  240 B$=B$+CHR$(set%+ASCLEFT$(A$,1)):A$=MID$(A$,2)
  250 ENDPROC