> VDUEcho/zx 1.01 E Echo BBC vdu codes to screen from serial input, reads local and 2 external keyboard and sends to serial output !< v1.01: COLOUR 192+ is border, CHR$127 instead of "(C)" (: 25BORDER 0:POKE 23750,0: c(8): k=1 8: c(k): k "Y" y$<>"y" y$="N" F+ #:OPEN#4;"b": dH@: 0,2,4,6,1,3,5,7 P: Z? Read a key from serial, or sends from the local keyboards d q$= #4: q$<>"" n y$="N" Dd@ x-PAUSE 1: w$= IN 253: w$<>255 t`@  w$=: w$="" Dd@ ( w$>=" " w$<127 #4;w$;: Dd@  t|B: Dd@ % w$= IN 253: w$= 255 Dd@  t|B: Dd@ :  Main Loop:  OVER 1;"_";8;: Dd@ & q$>=" " q$<127 q$;: dH@  OVER 1;"_";8;: ;  q$=7 BEEP .1,1: dH@ " q$=8 q$=9 q$;: dH@  q$=10 q$=0 dH@  q$=12 : dH@  q$=13 : dH@  q$=17 tPA: dH@ " q$=18 dtA: dH@ , q$=20 TfB: dH@ 6% q$=22 Dd@: TfB:: dH@ @ q$=30 AT 0,0;: dH@ J q$=31 DXB: dH@ T# q$=127 8;" ";8;: dH@ ^( q$>127 q$<=143 tJB: dH@ h6 q$>159 OVER 1;"_"; 8;(CODE q$-128);:dH@ r "[";CODE q$;"]";: dH@ |: G VDU 17,n - COLOUR n 0..7=ink, 128..135=paper, 192..199=border . Dd@: n= (CODE q$/64): c=CODE q$-n*64 I c<31 FLASH (c/16):BRIGHT ((c-16*(c/16))/8): FLASH+BRIGHT bits : n=0 INK c(c-8*(c/8)): : INK E n=1 : FLASH+BRIGHT < n=2 PAPER c(c-8*(c/8)): : PAPER 7BORDER c(c-8*(c/8)):POKE 23750,c(c-8*(c/8)): ;:  :  VDU 18,k,n - GCOL  Dd@: k=CODE q$: Dd@  k=15 q$;  :  VDU 20 - Reset colours &31 x=31 b y>21 y=21 l AT y,x;: v: ( VDU &8x - Teletext colour codes ! q$=128 q$>135 q$;: INK c(CODE q$-127): " ";: : :  Send local key to serial  w$=12 #4;127;:  w$=14 #4;27;:  #4;w$;: