10 REM > HdrList
   20 REM List entries in Acorn file header
   30 :
   40 DIM ctrl% 31,name% 15,mem% 255:X%=ctrl%:Y%=X%DIV256
   50 idx%=0:REPEAT:f$=FNgbpb8(idx%):idx%=X%!9:IF f$<>"":PROCObject
   60 UNTIL f$="":END
   70 :
   80 DEFPROCObject
   90 IF FNfile(f$,5)<>1:ENDPROC
  100 in%=OPENIN(f$):IF in%=0:ENDPROC
  110 PROCgbpb(3,in%,mem%,256,0):CLOSE#in%:in%=0
  120 rtype%=mem%?6:rcopy%=mem%?7
  130 IF mem%!rcopy%<>&29432800:ENDPROC
  140 PRINT"File:";TAB(14);f$
  150 PRINT"Type:";TAB(14);"&";FNh0(rtype%,2);" ";
  160 IF rtype%AND128:PRINT"S"ELSE PRINT"-";
  170 IF rtype%AND64 :PRINT"L"ELSE PRINT"-";
  180 IF rtype%AND32 :PRINT"R"ELSE PRINT"-";
  190 IF rtype%AND16 :PRINT"E"ELSE PRINT"-";
  200 PRINT" ";MID$("BASIC  65Turbo65x2   68xx   CPU4   CPU5   CPU6   PDP11  Z80    32000  CPU10  80x86  CPU12  ARM    CPU14  CPU15",(rtype%AND15)*7+1,7)
  210 num%=1:ptr%=mem%+9:REPEAT
  220   IF ptr%>rcopy%+mem%:PRINT"Copyright:";:num%=3
  230   IF num%=1:PRINT"Title:";
  240   IF num%=2:PRINT"Version:";
  250   A$=FNstr(ptr%):PRINTTAB(14);A$
  260   REPEATptr%=ptr%+1:UNTILptr%?-1=0:num%=num%+1
  270 UNTIL ptr%>rcopy%+mem%+1
  280 IF (rtype%AND&60)<>&60:PRINT:ENDPROC
  290 count%=1:rtype%=rtype%AND15
  300 IF rtype%=7 OR rtype%=9:count%=2
  310 FOR num%=1 TO count%
  320   IF num%=1:PRINT"Reload:";
  330   IF num%=2:PRINT"Entry offset:";
  340   PRINTTAB(14);"&";FNh0(!ptr%,8):ptr%=ptr%+4
  350 NEXT num%
  360 PRINT:ENDPROC
  370 :
  380 DEFFNfile(A$,A%):$name%=A$:?X%=name%:X%?1=name%DIV256:=(USR&FFDD)AND&FF
  390 DEFPROCgbpb(A%,ch%,X%!1,X%!5,X%!9):?X%=ch%:CALL &FFD1:ENDPROC
  400 DEFFNgbpb8(ptr%):X%!1=name%:X%!5=1:X%!9=ptr%:A%=8:CALL&FFD1:IFX%!5=1:=""
  410 A%=name%+1:A%!(A%?-1)=&D20:A%?(INSTR($A%," ")-1)=13:=$A%
  420 DEFFNstr(A%):IF?A%<32:=""
  430 A$="":REPEAT:A$=A$+CHR$?A%:A%=A%+1:UNTIL?A%<32:=A$
  440 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)