diff --git a/applications/biffexplorer/BIFFExplorer.lpi b/applications/biffexplorer/BIFFExplorer.lpi
index 9a5363760..11c23aed9 100644
--- a/applications/biffexplorer/BIFFExplorer.lpi
+++ b/applications/biffexplorer/BIFFExplorer.lpi
@@ -17,6 +17,9 @@
+
+
+
diff --git a/applications/biffexplorer/bebiffgrid.pas b/applications/biffexplorer/bebiffgrid.pas
index 07db59736..faf45fde9 100644
--- a/applications/biffexplorer/bebiffgrid.pas
+++ b/applications/biffexplorer/bebiffgrid.pas
@@ -2739,6 +2739,33 @@ begin
ExtractString(FBufferIndex, 1, (FFormat = sfExcel8), s, numBytes);
ShowInRow(FCurrRow, FBufferIndex, numBytes, s, 'String value');
end;
+ $19: begin
+ ShowInRow(FCurrRow, FBufferIndex, numBytes, Format('$%.2x', [token]),
+ 'Token tAttr (special attribute)');
+ token := FBuffer[FBufferIndex];
+ case token of
+ $01: s := 'tAttrVolatile (volatile function)';
+ $02: s := 'tAttrIf (IF function control)';
+ $04: s := 'tAttrChoose (CHOOSE function control)';
+ $08: s := 'tAttrSkip (skip part of token array)';
+ $10: s := 'tAttrSum (SUM function with one parameter)';
+ $20: s := 'tAttrAssign (assignment-style formula in a macro sheet)';
+ $40: s := 'tAttrSpace (spaces and carriage returns)';
+ $41: s := 'tAttrSpaceVolatile';
+ end;
+ ShowInRow(FCurrRow, FBufferIndex, numbytes, Format('$%.2x', [token]), s);
+ if token in [$01, $10, $20] then begin
+ if FFormat = sfExcel2 then begin
+ numbytes := 1;
+ b := FBuffer[FBufferIndex];
+ ShowInRow(FCurrRow, FBufferIndex, numbytes, IntToStr(b), 'not used');
+ end else begin
+ numbytes := 2;
+ Move(FBuffer[FBufferIndex], w, numbytes);
+ ShowInRow(FCurrRow, FBufferIndex, numbytes, IntToStr(WordLEToN(w)), 'not used');
+ end;
+ end;
+ end;
$1C: begin
ShowInRow(FCurrRow, FBufferIndex, numBytes, Format('$%.2x', [token]),
'Token tERR (Error)');