> VDUEcho/zx 1.01 AEcho BBC vdu codes to screen from serial input, reads local and .external keyboard and sends to serial output !8v1.01: COLOUR 192+ is border, CHR$127 instead of "(C)" (: 2G0:23750\,0:c(8):k=1 8:c(k):k <4"Spectrum keyboard? ";y$:y$"Y" y$"y" y$="N" F\#:4;"b":200:0,2,4,6,1,3,5,7 P: Z;Read a key from serial, or sends from the local keyboards dq$=#4:q$"" ny$="N" 100d x41:w$=¿253:w$255 160 w$=:w$="" 100d 1w$" " w$<127 #4;w$;:100d 700:100d +w$=¿253:w$=255 100d 700:100d : Main Loop: #1;"_";8;:100d (q$" " q$<127 q$;:200 1;"_";8;:; +q$=7 .1L},1:200 +q$=8 q$=9 q$;:200 'q$=10 q$=0 200 q$=12 :200 q$=13 :200 %q$=17 400:200 "%q$=18 500:200 ,%q$=20 550&:200 62q$=22 100d:550&::200 @-q$=30 0,0;:200 J%q$=31 600X:200 T3q$=127 8;" ";8;:200 ^5q$>127 q$143 650:200 hDq$>159 1;"_";8;(q$-128);:200 r"[";q$;"]";:200 |: CVDU 17,n - COLOUR n 0..7=ink, 128..135=paper, 192..199=border 0100d:n=(q$/64@):c=q$-n*64@ Vc<31 ۺ(c/16):ܺ((c-16*(c/16))/8):FLASH+BRIGHT bits Bn=0 c(c-8*(c/8)): :INK Dn=1 :FLASH+BRIGHT Bn=2 c(c-8*(c/8)): :PAPER Gc(c-8*(c/8)):23750\,c(c-8*(c/8)):;:  : VDU 18,k,n - GCOL 100d:k=q$:100d k=15 q$;  : VDU 20 - Reset colours &E7:0:0:0:0:;:23750\,0 0 :: D: NVDU 31,x,y - PRINT TAB(x,y); X=100d:x=q$:100d:y=q$:x>31 x=31 by>21 y=21 l y,x;: v: $VDU &8x - Teletext colour codes &q$=128 q$>135 q$;: c(q$-127):" ";: : : Send local key to serial 'w$=12 #4;127;: &w$=14 #4;27;: #4;w$;: