

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.amigaos.net/w/index.php?action=history&amp;feed=atom&amp;title=PGTB_IFF_Program_Traceback</id>
	<title>PGTB IFF Program Traceback - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.amigaos.net/w/index.php?action=history&amp;feed=atom&amp;title=PGTB_IFF_Program_Traceback"/>
	<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=PGTB_IFF_Program_Traceback&amp;action=history"/>
	<updated>2026-05-06T17:16:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=PGTB_IFF_Program_Traceback&amp;diff=2106&amp;oldid=prev</id>
		<title>Steven Solie: /* PRTB */</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=PGTB_IFF_Program_Traceback&amp;diff=2106&amp;oldid=prev"/>
		<updated>2012-05-10T19:39:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;PRTB&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:39, 10 May 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PRTB&lt;/del&gt; =&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PGTB&lt;/ins&gt; =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key docwiki:diff:1.41:old-2105:rev-2106:wikidiff2=table:1.14.1:bc2a06be --&gt;
&lt;/table&gt;</summary>
		<author><name>Steven Solie</name></author>
	</entry>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=PGTB_IFF_Program_Traceback&amp;diff=2105&amp;oldid=prev</id>
		<title>Steven Solie: Created page with &quot;= PRTB =  &lt;pre&gt; Program traceback (SAS Institute)  FORM PGTB  Proposal:         New IFF chunk type, to be named PGTB, meaning ProGram TraceBack.  Format:          &#039;PGTB&#039;      ...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=PGTB_IFF_Program_Traceback&amp;diff=2105&amp;oldid=prev"/>
		<updated>2012-05-10T19:39:15Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= PRTB =  &amp;lt;pre&amp;gt; Program traceback (SAS Institute)  FORM PGTB  Proposal:         New IFF chunk type, to be named PGTB, meaning ProGram TraceBack.  Format:          &amp;#039;PGTB&amp;#039;      ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= PRTB =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program traceback (SAS Institute)&lt;br /&gt;
&lt;br /&gt;
FORM PGTB&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
        New IFF chunk type, to be named PGTB, meaning ProGram TraceBack.&lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
&lt;br /&gt;
        &amp;#039;PGTB&amp;#039;          - chunk identifier&lt;br /&gt;
        length          - longword for length of chunk&lt;br /&gt;
&lt;br /&gt;
        &amp;#039;FAIL&amp;#039;          - subfield giving environment at time of crash&lt;br /&gt;
        length          - longword length of subfield&lt;br /&gt;
        NameLen         - length of program name in longwords (BSTR)&lt;br /&gt;
        Name            - program name packed in longwords&lt;br /&gt;
        Environment     - copy of AttnFlags field from ExecBase,&lt;br /&gt;
                          gives type of processor, and existence of&lt;br /&gt;
                          math chip&lt;br /&gt;
        VBlankFreq      - copy of VBlankFrequency field from ExecBase&lt;br /&gt;
        PowerSupFreq    - copy of PowerSupplyFrequency field from ExecBase&lt;br /&gt;
                          above fields may be used to determine whether&lt;br /&gt;
                          machine was PAL or NTSC&lt;br /&gt;
        Starter         - non-zero = CLI, zero = WorkBench&lt;br /&gt;
        GURUNum         - exception number of crash&lt;br /&gt;
        SegCount        - number of segments for program&lt;br /&gt;
        SegList         - copy of seglist for program&lt;br /&gt;
                          (Includes all seglist pointers, paired with&lt;br /&gt;
                           sizes of the segments)&lt;br /&gt;
&lt;br /&gt;
        &amp;#039;REGS&amp;#039;          - register dump subfield&lt;br /&gt;
        length          - length of subfield in longwords&lt;br /&gt;
        GURUAddr        - PC at time of crash&lt;br /&gt;
        Flags           - copy of Condition Code Register&lt;br /&gt;
        DDump           - dump of data registers&lt;br /&gt;
        ADump           - dump of address registers&lt;br /&gt;
&lt;br /&gt;
        &amp;#039;VERS&amp;#039;          - revision of program which created this file&lt;br /&gt;
        length          - length of subfield in longwords&lt;br /&gt;
        version         - main version of writing program&lt;br /&gt;
        revision        - minor revision level of writing program&lt;br /&gt;
        TBNameLen       - length of name of writing program&lt;br /&gt;
        TBName          - name of writing program packed in longwords (BSTR)&lt;br /&gt;
&lt;br /&gt;
        &amp;#039;STAK&amp;#039;          - stack dump subfield&lt;br /&gt;
        length          - length of subfield in longwords&lt;br /&gt;
        (type)          - tells type of stack subfield, which can be any of&lt;br /&gt;
                          the following:&lt;br /&gt;
                -----------------------------------------------------------&lt;br /&gt;
                Info            - value 0&lt;br /&gt;
                StackTop        - address of top of stack&lt;br /&gt;
                StackPtr        - stack pointer at time of crash&lt;br /&gt;
                StackLen        - number of longwords on stack&lt;br /&gt;
&lt;br /&gt;
                -----------------------------------------------------------&lt;br /&gt;
                Whole stack     - value 1&lt;br /&gt;
                                  only used if total stack to be dumped is 8k&lt;br /&gt;
                                  or less in size&lt;br /&gt;
                Stack           - dump of stack from current to top&lt;br /&gt;
&lt;br /&gt;
                -----------------------------------------------------------&lt;br /&gt;
                Top 4k          - value 2&lt;br /&gt;
                                  if stack used larger than 8k, this part&lt;br /&gt;
                                  is a dump of the top 4k&lt;br /&gt;
                Stack           - dump of stack from top - 4k to top&lt;br /&gt;
&lt;br /&gt;
                -----------------------------------------------------------&lt;br /&gt;
                Bottom 4k       - value 3&lt;br /&gt;
                                  if stack used larger than 8k, this part&lt;br /&gt;
                                  is a dump of the bottom 4k&lt;br /&gt;
                Stack           - dump of stack from current to current + 4k&lt;br /&gt;
&lt;br /&gt;
        In other words, we will dump a maximum of 8k of stack data.  This&lt;br /&gt;
        does NOT mean the stack must be less than 8k in size to dump the&lt;br /&gt;
        entire stack, just that the amount of stack USED be less than 8k.&lt;br /&gt;
&lt;br /&gt;
        &amp;#039;UDAT&amp;#039;          - Optional User DATa chunk.  If the user assigns&lt;br /&gt;
                          a function pointer to the label &amp;quot;_ONGURU&amp;quot;, the&lt;br /&gt;
                          catcher will call this routine prior to closing&lt;br /&gt;
                          the SnapShot file, passing one parameter on the&lt;br /&gt;
                          stack - an AmigaDOS file pointer to the SnapShot&lt;br /&gt;
                          file.  Spec for the _ONGURU routine:&lt;br /&gt;
&lt;br /&gt;
                                void &amp;lt;function name&amp;gt;(fp)&lt;br /&gt;
                                long fp;&lt;br /&gt;
&lt;br /&gt;
                          In other words, your routine must be of type &amp;#039;void&amp;#039;&lt;br /&gt;
                          and must take one parameter, an AmigaDOS file&lt;br /&gt;
                          handle (which AmigaDOS wants to see as a LONG).&lt;br /&gt;
        length          - length of the UserDATa chunk, calculated after the&lt;br /&gt;
                          user routine terminates.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Steven Solie</name></author>
	</entry>
</feed>