10 REM > TestGBPB
   20 REM Test OSGBPB
   30 :
   40 DIM ctrl% 31,name% 31:X%=ctrl%:Y%=X%DIV256
   50 act%=3:ptr%=0:mem%=&FFFF7C00:chn%=0
   60 ON ERROR REPORT:PROCClose:PRINT:END
   70 :
   80 MODE7:PRINTTAB(0,7);"^^^ I/O memory ^^^ ---- vvv Language vvv";TAB(0,15)
   90 chn%=OPENIN("TestGBP")
  100 IF chn%=0:chn%=OPENIN("TestGB*")
  110 IF chn%=0:PROCgbpb(8,0,name%,1,0):name%?(?name%+1)=13:IFname%?1>32:chn%=OPENIN($(name%+1))
  120 IF chn%=0:PRINT"Can't open test file":END
  130 ext%=EXT#chn%
  140 REPEAT
  150   PRINT TAB(0,15):PROCgbpb(act%,chn%,mem%,240,ptr%)
  160   PRINT"&B0: "FNh0(!&B0,8)" "FNh0(!&B4,8)" "FNh0(!&B8,8)" "FNh0(!&BC,8);CHR$8
  170   PRINT"&C0: "FNh0(!&C0,8)" "FNh0(!&C4,8)" "FNh0(!&C8,8)" "FNh0(!&CC,8);CHR$8
  180   REM PRINT"&A8: "FNh0(!&A8,8)" "FNh0(!&AC,8)
  190   PRINTTAB(0,8);:FORA%=mem%AND&1FFFF TO (mem%+255)AND&1FFFF:VDU?A%OR&80:NEXT:PRINT
  200   PRINTTAB(0,20);"<TAB>:Toggle IO/Lang  <ENT>:ptr+40"'"<SPC>:Toggle action   <DEL>:ptr-40"
  210   PRINT"R:Repeat call ";
  220   A%=GET:IF A%=32:act%=7-act%
  230   IF A%=9  :mem%=mem%EOR&FFFE0000
  240   IF A%=127:ptr%=ptr%-40:IFptr%<0:ptr%=0
  250   IF A%=13 :ptr%=ptr%+40:IFptr%>ext%:ptr%=ptr%-40
  260 UNTIL0
  270 :
  280 :
  290 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)
  300 DEFPROCClose:IFchn%:A%=chn%:chn%=0:CLOSE#A%
  310 ENDPROC
  320 DEFPROCgbpb(A%,chn%,addr%,num%,ptr%):?X%=chn%:X%!1=addr%:X%!5=num%:X%!9=ptr%
  330 PRINT"IN:  "FNh0(A%,2)" "FNh0(A%,2)" "FNh0(?X%,2)" "FNh0(X%!1,8)" "FNh0(X%!5,8)" "FNh0(X%!9,8);CHR$8
  340 PRINT'''':A%=USR&FFD1:VDU11,11,11,11,11
  350 PRINT"OUT: C";MID$("SC",2+((A%AND&1000000)<>0),1);" "FNh0(A%,2)" "FNh0(?X%,2)" "FNh0(X%!1,8)" "FNh0(X%!5,8)" "FNh0(X%!9,8);CHR$8
  360 ENDPROC