10 REM > PeekPoke 1.02
   20 :
   30 ON ERROR REPORT:PRINT:IF INKEY-1 END ELSE RUN
   40 DIM ctrl% 31,mem% 255:X%=ctrl%:Y%=X%DIV256
   50 PRINT "Test peeking and poking remote machines"
   60 INPUT "Remote machine: "A$:stn%=FNnet_StnNum(A$)
   70 INPUT "Remote address: &"A$:addr%=EVAL("&"+A$)
   80 PRINT "Press p(E)ek or p(O)ke:";
   90 REPEAT
  100   REPEAT A$=CHR$(GET AND &DF):A%=INSTR("EO",A$):UNTIL A%
  110   off%=off%+1
  120   IF A%=1:PROCpeek ELSE PROCpoke
  130 UNTIL FALSE
  140 :
  150 DEFPROCpeek
  160 FOR A%=0 TO 255:mem%?A%=off%-A%:NEXT A%:PRINT " PEEK"
  170 !X%=&81:X%!2=stn%:X%!4=mem%:X%!8=mem%+256:X%!12=addr%
  180 A%=&10:REPEATCALL&FFF1:UNTIL?X%:A%=&32:REPEATUNTIL(USR&FFF4 AND &8000)=0
  190 PROCdump:ENDPROC
  200 :
  210 DEFPROCpoke
  220 FOR A%=0 TO 255:mem%?A%=off%+A%:NEXT A%:PRINT " POKE"
  230 !X%=&82:X%!2=stn%:X%!4=mem%:X%!8=mem%+256:X%!12=addr%
  240 A%=&10:REPEATCALL&FFF1:UNTIL?X%:A%=&32:REPEATUNTIL(USR&FFF4 AND &8000)=0
  250 PROCdump:ENDPROC
  260 :
  270 DEFPROCdump
  280 FOR A%=0 TO 63 STEP 16:PRINTFNh0(addr%+A%,4);:FOR B%=A% TO A%+15
  290 PRINT " ";FNh0(mem%?B%,2);:NEXT B%:PRINT:NEXT A%
  300 ENDPROC
  310 :
  320 :
  330 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)
  340 DEFFNnet_StnNum(A$)
  350 A%=INSTR(A$,"."):IFA%:=256*VALLEFT$(A$,A%-1)+VALMID$(A$,A%+1) ELSE =VALA$