<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=Rob_Northern_Decrypted2</id>
	<title>Rob Northern Decrypted2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=Rob_Northern_Decrypted2"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;action=history"/>
	<updated>2026-05-13T20:17:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;diff=16801&amp;oldid=prev</id>
		<title>&gt;Wongck at 11:42, 13 October 2011</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;diff=16801&amp;oldid=prev"/>
		<updated>2011-10-13T11:42:27Z</updated>

		<summary type="html">&lt;p&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 07:42, 13 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l351&quot;&gt;Line 351:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 351:&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;Back to [[Assembly_language]]&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;Back to [[Assembly_language]]&lt;/div&gt;&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;[[Category: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Programming&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;[[Category: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Assembly Language&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;div&gt;[[Category: Cheats]]&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;[[Category: Cheats]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Wongck</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;diff=16800&amp;oldid=prev</id>
		<title>&gt;Wongck at 15:44, 11 October 2011</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;diff=16800&amp;oldid=prev"/>
		<updated>2011-10-11T15:44:43Z</updated>

		<summary type="html">&lt;p&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 11:44, 11 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l351&quot;&gt;Line 351:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 351:&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;Back to [[Assembly_language]]&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;Back to [[Assembly_language]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;[[Category: Programming]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;[[Category: Cheats]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Wongck</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;diff=16799&amp;oldid=prev</id>
		<title>&gt;Muguk at 12:08, 25 September 2008</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;diff=16799&amp;oldid=prev"/>
		<updated>2008-09-25T12:08:48Z</updated>

		<summary type="html">&lt;p&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 08:08, 25 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l350&quot;&gt;Line 350:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 350:&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;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; 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;Back to&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;Back to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Assembly_language]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Muguk</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;diff=16798&amp;oldid=prev</id>
		<title>&gt;Muguk at 12:08, 25 September 2008</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Rob_Northern_Decrypted2&amp;diff=16798&amp;oldid=prev"/>
		<updated>2008-09-25T12:08:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Rob Northern Decrypted2 - Xenon 2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
RNC - XENON II                                       last revision 2006/12/27&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$40088:[]move.l    a6,(sp)&lt;br /&gt;
$4008A:[]lea.l     $40016(pc),a6       ; register&lt;br /&gt;
$4008E:[]movem.l   d0-d7/a0-a7,(a6)&lt;br /&gt;
$40092:[]lea.l     $40(a6),a6          ; $40056&lt;br /&gt;
$40096:[]move.l    (sp)+,-$8(a6)                                   &lt;br /&gt;
$4009A:[]move.l    $10,d0              ; save Illegal vector &lt;br /&gt;
$400A0:[]pea       $400ac(pc)          ; &lt;br /&gt;
$400A4:[]move.l    (sp)+,$10           ; new Illegal vector&lt;br /&gt;
$400AA:[]illegal&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$400AC:[]move.l    d0,$10              ; restore Illegal vector&lt;br /&gt;
$400B2:[]movem.l   $8,d0-d7            ; &lt;br /&gt;
$400BA:[]movem.l   d0-d7,(a6)	       ; save exception vectors&lt;br /&gt;
$400BE:[]lea.l     $40144(pc),a0       ;&lt;br /&gt;
$400C2:[]move.l    a0,$10              ; new Illegal vector (toggle Trace)&lt;br /&gt;
$400C8:[]lea.l     $40080(pc),a0&lt;br /&gt;
$400CC:[]move.l    a0,(a0)&lt;br /&gt;
$400CE:[]illegal                       ; Trace ON&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
dummy code&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$400D0:[]bra       $400e0&lt;br /&gt;
$400D4:[]bra       $400fc&lt;br /&gt;
$400D8:[]bra       $4013c&lt;br /&gt;
$400DC:[]bra       $40108&lt;br /&gt;
$400E0:[]bra       $4010c&lt;br /&gt;
$400E4:[]bra       $400ec&lt;br /&gt;
$400E8:[]bra       $40104&lt;br /&gt;
$400EC:[]bra       $4011c&lt;br /&gt;
$400F0:[]bra       $40138&lt;br /&gt;
$400F4:[]bra       $40120&lt;br /&gt;
$400F8:[]bra       $40110&lt;br /&gt;
$400FC:[]bra       $40114&lt;br /&gt;
$40100:[]bra       $401aa              ; skip this code&lt;br /&gt;
$40104:[]bra       $40124&lt;br /&gt;
$40108:[]bra       $400f8&lt;br /&gt;
$4010C:[]bra       $40140&lt;br /&gt;
$40110:[]bra       $400d4&lt;br /&gt;
$40114:[]bra       $400e8&lt;br /&gt;
$40118:[]bra       $400f4&lt;br /&gt;
$4011C:[]bra       $40134&lt;br /&gt;
$40120:[]bra       $400dc&lt;br /&gt;
$40124:[]bra       $4012c&lt;br /&gt;
$40128:[]bra       $400d8&lt;br /&gt;
$4012C:[]bra       $400e4&lt;br /&gt;
$40130:[]bra       $40118&lt;br /&gt;
$40134:[]bra       $400f0&lt;br /&gt;
$40138:[]bra       $40128&lt;br /&gt;
$4013C:[]bra       $40100&lt;br /&gt;
$40140:[]bra       $40130&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
new Illegal vector - Trace ON/OFF&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$40144:[]movem.l   d0/a0/a1,-(sp)&lt;br /&gt;
$40148:[]lea.l     $4017e(pc),a0&lt;br /&gt;
$4014C:[]move.l    a0,$24              ; new Trace vector&lt;br /&gt;
$40152:[]lea.l     $406d0,(pc),a0&lt;br /&gt;
$40156:[]move.l    a0,$20              ; new Privilege Violation vector&lt;br /&gt;
$4015C:[]addi.l    #$2,$e(sp)          ; next PC after illegal op-code&lt;br /&gt;
$40164:[]ori.b     #$7,$c(sp)          ; Supervisor ON&lt;br /&gt;
$4016A:[]bchg      #$7,$c(sp)          ; Trace ON/OFF&lt;br /&gt;
$40170:[]lea.l     $40080(pc),a1&lt;br /&gt;
$40174:[]beq.s     $40190&lt;br /&gt;
$40176:[]movea.l   (a1),a0             ; previous address&lt;br /&gt;
$40178:[]move.l    $4(a1),(a0)         ; restore previous encrypted long word&lt;br /&gt;
$4017C:[]bra.s     $401a4&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
new Trace vector - encrypt/decrypt&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$4017E:[]andi.w    #$f8ff,sr&lt;br /&gt;
$40182:[]movem.l   d0/a0/a1,-(sp)&lt;br /&gt;
$40186:[]lea.l     $40080(pc),a1       ; &lt;br /&gt;
$4018A:[]movea.l   (a1),a0             ; previous address&lt;br /&gt;
$4018C:[]move.l    $4(a1),(a0)         ; restore previous encrypted long word&lt;br /&gt;
$40190:[]movea.l   $e(sp),a0           ; current address&lt;br /&gt;
$40194:[]move.l    a0,(a1)             ; save current address&lt;br /&gt;
$40196:[]move.l    (a0),$4(a1)         ; save current encrypted long word&lt;br /&gt;
$4019A:[]move.l    -$4(a0),d0          ; get long word for decryption&lt;br /&gt;
$4019E:[]not.l     d0                  ;&lt;br /&gt;
$401A0:[]swap      d0                  ;&lt;br /&gt;
$401A2:[]eor.l     d0,(a0)             ; decrypt current address&lt;br /&gt;
$401A4:[]movem.l   (sp)+,d0/a0/a1&lt;br /&gt;
$401A8:[]rte&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
load new exception vectors&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$401AA:[]move.l    $4,$7c&lt;br /&gt;
$401B4:[]lea.l     $401d4(pc),a0&lt;br /&gt;
$401B8:[]movea.l   #$8,a1&lt;br /&gt;
$401BE:[]lea.l     $40088(pc),a4&lt;br /&gt;
$401C2:[]moveq.l   #$7,d0&lt;br /&gt;
$401C4:[]moveq.l   #$0,d1&lt;br /&gt;
$401C6:[]move.w    (a0)+,d1&lt;br /&gt;
$401C8:[]add.l     a4,d1&lt;br /&gt;
$401CA:[]move.l    d1,(a1)+&lt;br /&gt;
$401CC:[]dbra      d0,$401c4&lt;br /&gt;
$401D0:[]bra       $401e4&lt;br /&gt;
$401D4:[]...&lt;br /&gt;
$401E4:[]cmpi.b    #$fa,$13d&lt;br /&gt;
$401EC:[]bne.s     $40200&lt;br /&gt;
$401EE:[]move.w    #$60fe,$7c&lt;br /&gt;
$401F6:[]move.l    #$1f,$13c&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$40200:[]lea.l     $404d0(pc),a0       ; sector buffer&lt;br /&gt;
$40204:[]bsr       $4039c              ; FDC Init&lt;br /&gt;
$40208:[]moveq.l   #$6,d2              ; main loop counter&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
main loop - read sectors and compare counter&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$4020A:[]moveq.l   #$0,d0&lt;br /&gt;
$4020C:[]subq.l    #$1,d2         &lt;br /&gt;
$4020E:[]beq.s     $4026e              ; skip after 6 errors&lt;br /&gt;
$40210:[]moveq.l   #$1,d0&lt;br /&gt;
$40212:[]bsr       $40276              ; read sector and count&lt;br /&gt;
$40216:[]beq.s     $4020a&lt;br /&gt;
$40218:[]move.l    d0,-(sp)            ; save first sector counter&lt;br /&gt;
$4021A:[]moveq.l   #$6,d0              ; RNC sector&lt;br /&gt;
$4021C:[]bsr       $40276              ; read sector and count&lt;br /&gt;
$40220:[]beq.s     $4020a&lt;br /&gt;
$40222:[]move.l    (sp)+,d1            ; restore first sector counter&lt;br /&gt;
$40224:[]sub.l     d1,d0&lt;br /&gt;
$40226:[]bmi.s     $4020a              ; skip on error&lt;br /&gt;
$40228:[]mulu      #$64,d0&lt;br /&gt;
$4022C:[]divu      d1,d0&lt;br /&gt;
$4022E:[]cmp.b     #$2,d0&lt;br /&gt;
$40232:[]blt.s     $4020a              ; skip on error&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
magic key calculation&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$40234:[]moveq.l   #$5,d1&lt;br /&gt;
$40236:[]moveq.l   #$0,d0&lt;br /&gt;
$40238:[]cmpi.l    #$526f6220,(a0)     ;'Rob '&lt;br /&gt;
$4023E:[]bne.s     $4020a&lt;br /&gt;
$40240:[]cmpi.l    #$4e6f7274,$4(a0)   ;'Nort'&lt;br /&gt;
$40248:[]bne.s     $4020a&lt;br /&gt;
$4024A:[]cmpi.l    #$68656e20,$8(a0)   ;'hen '&lt;br /&gt;
$40252:[]bne.s     $4020a&lt;br /&gt;
$40254:[]cmpi.l    #$436f6d70,$c(a0)   ;'Comp'&lt;br /&gt;
$4025C:[]bne.s     $4020a&lt;br /&gt;
$4025E:[]add.l     (a0)+,d0&lt;br /&gt;
$40260:[]rol.l     #$3,d0              ; DE534692         &lt;br /&gt;
$40262:[]dbra      d1,$4025e           &lt;br /&gt;
$40266:[]lea.l     $40056(pc),a0&lt;br /&gt;
$4026A:[]move.l    d0,$1c(a0)          ; &amp;lt;&amp;lt;&amp;lt; save magic key for xor ($406DC)&lt;br /&gt;
$4026E:[]bsr       $403d4              ; clean up&lt;br /&gt;
$40272:[]bra       $404a2              ; exit&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
read sector in d0 and return counter&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$40276:[]movem.l   d1-d3/a1,-(sp)&lt;br /&gt;
$4027A:[]bsr       $4028c&lt;br /&gt;
$4027E:[]tst.w     d0&lt;br /&gt;
$40280:[]beq.s     $40284&lt;br /&gt;
$40282:[]moveq.l   #$0,d1&lt;br /&gt;
$40284:[]move.l    d1,d0&lt;br /&gt;
$40286:[]movem.l   (sp+),d1-d3/a1&lt;br /&gt;
$4028A:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
DMA read&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$4028C:[]move.w    #$84,$ff8606&lt;br /&gt;
$40294:[]move.w    d0,$ff8604&lt;br /&gt;
$4029A:[]move.l    a0,d0               ; sector buffer $404d0&lt;br /&gt;
$4029C:[]move.b    d0,$ff860d          ; DMA low&lt;br /&gt;
$402A2:[]lsr.l     #$8,d0              ;&lt;br /&gt;
$402A4:[]move.b    d0,$ff860b          ; DMA mid&lt;br /&gt;
$402AA:[]lsr.l     #$8,d0              ;&lt;br /&gt;
$402AC:[]move.b    d0,$ff8609          ; DMA high           &lt;br /&gt;
$402B2:[]move.w    #$90,$ff8606        ; &lt;br /&gt;
$402BA:[]move.w    #$190,$ff8606       ; toggle DMA read&lt;br /&gt;
$402C2:[]move.w    #$90,$ff8606        ;&lt;br /&gt;
$402CA:[]move.w    #$16,$ff8604        ; 512 byte blocks &lt;br /&gt;
$402D2:[]move.w    #$80,$ff8606        ; select command register&lt;br /&gt;
$402DA:[]lea.l     $ff860b,a1&lt;br /&gt;
$402E0:[]moveq.l   #$0,d1              ; clear counter&lt;br /&gt;
$402E2:[]move.l    a0,d2&lt;br /&gt;
$402E4:[]move.l    #$61a80,d3&lt;br /&gt;
$402EA:[]illegal                       ; Trace OFF (timing)&lt;br /&gt;
$402EC:[]move.w    #$80,$ff8604        ; read sector&lt;br /&gt;
$402F4:[]subq.l    #$1,d3&lt;br /&gt;
$402F6:[]beq.s     $4032a&lt;br /&gt;
$402F8:[]movep.w   $0(a1),d0&lt;br /&gt;
$402FC:[]cmp.w     d0,d2&lt;br /&gt;
$402FE:[]beq.s     $402f4&lt;br /&gt;
$40300:[]addi.l    #$200,d2&lt;br /&gt;
$40306:[]addq.l    #$1,d1              ; counter+1&lt;br /&gt;
$40308:[]movep.w   $0(a1),d0&lt;br /&gt;
$4030C:[]cmp.w     d0,d2&lt;br /&gt;
$4030E:[]bne.s     $40306&lt;br /&gt;
$40310:[]subq.l    #$1,d3&lt;br /&gt;
$40312:[]beq.s     $4032a              ; Force Interrupt (skip on error)&lt;br /&gt;
$40314:[]btst      #$5,$fffa01         ; ready?&lt;br /&gt;
$4031C:[]bne.s     $40310&lt;br /&gt;
$4031E:[]illegal                       ; Trace ON&lt;br /&gt;
$40320:[]bsr       $40486              ; get status&lt;br /&gt;
$40324:[]andi.w    #$10,d0&lt;br /&gt;
$40328:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
Force Interrupt (skip on error)&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$4032A:[]bsr       $4046e&lt;br /&gt;
$4032E:[]moveq.l   #$ffffffff,d0&lt;br /&gt;
$40330:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
FDC Seek in d2&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$40332:[]move.w    #$86,$ff8606&lt;br /&gt;
$4033A:[]move.w    d2,$ff8604&lt;br /&gt;
$40340:[]move.w    #$14,d0             ; seek&lt;br /&gt;
$40344:[]bsr       $40440              ; FDC command in d0&lt;br /&gt;
$40348:[]bmi.s     $4035a              ; skip on error              &lt;br /&gt;
$4034A:[]move.w    $40076(pc),d0&lt;br /&gt;
$4034E:[]lsl.w     #$1,d0&lt;br /&gt;
$40350:[]lea.l     $40078(pc),a0&lt;br /&gt;
$40354:[]move.w    d2,$0(a0,d0.w)&lt;br /&gt;
$40358:[]moveq.l   #$0,d0&lt;br /&gt;
$4035A:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
skip on error&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$4035C:[]moveq.l   #$54,d1&lt;br /&gt;
$4035E:[]bsr       $4046e              ; Force Interrupt&lt;br /&gt;
$40362:[]btst      #$2,d0              ; Track 00?&lt;br /&gt;
$40366:[]bne.s     $40378&lt;br /&gt;
$40368:[]moveq.l   #$60,d0             ; step-out&lt;br /&gt;
$4036A:[]bsr       $40440              ; FDC command in d0&lt;br /&gt;
$4036E:[]bmi.s     $40374&lt;br /&gt;
$40370:[]subq.l    #$1,d1&lt;br /&gt;
$40372:[]bne.s     $40362&lt;br /&gt;
$40374:[]moveq.l   #$ffffffff,d0&lt;br /&gt;
$40376:[]rts&lt;br /&gt;
$40378:[]moveq.l   #$54,d2&lt;br /&gt;
$4037A:[]sub.l     d1,d2&lt;br /&gt;
$4037C:[]move.w    $40076(pc),d0&lt;br /&gt;
$40380:[]lsl.l     #$1,d0&lt;br /&gt;
$40382:[]lea.l     $40078(pc),a0&lt;br /&gt;
$40386:[]clr.w     $0(a0,d0.w)&lt;br /&gt;
$4038A:[]move.w    #$82,$ff8606        ; Track register&lt;br /&gt;
$40392:[]moveq.l   #$0,d0              ;&lt;br /&gt;
$40394:[]move.w    d0,$ff8604          ;&lt;br /&gt;
$4039A:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
FDC Init&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$4039C:[]movem.l   d0-d2/a0,-(sp)&lt;br /&gt;
$403A0:[]lea.l     $4007e(pc),a0&lt;br /&gt;
$403A4:[]move.w    $43e,(a0)           ; save Flock&lt;br /&gt;
$403AA:[]st        $43e                ; set&lt;br /&gt;
$403B0:[]move.w    #$82,$ff8606        ; Track register&lt;br /&gt;
$403B8:[]move.w    $ff8604,d2&lt;br /&gt;
$403BE:[]lea.l     $4007c(pc),a0&lt;br /&gt;
$403C2:[]move.w    d2,(a0)             ; save Track Register&lt;br /&gt;
$403C4:[]bsr       $403f2              ; Drive select&lt;br /&gt;
$403C8:[]moveq.l   #$0,d0              ; Restore&lt;br /&gt;
$403CA:[]bsr       $40440              ; FDC command in d0&lt;br /&gt;
$403CE:[]movem.l   (sp)+,d0-d2/a0&lt;br /&gt;
$403D2:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
FDC end&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$403D4:[]movem.l   d0-d2/a0,-(sp)&lt;br /&gt;
$403D8:[]move.w    $4007c(pc),d2       ; Track&lt;br /&gt;
$403DC:[]bsr       $40332              ; FDC Seek&lt;br /&gt;
$403E0:[]bsr       $40426              ; Drive deselect&lt;br /&gt;
$403E4:[]move.w    $4007e(pc),$43e     ; restore Flock&lt;br /&gt;
$403EC:[]movem.l   (sp)+,d0-d2/a0&lt;br /&gt;
$403F0:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
Drive select&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$403F2:[]move.w    $40076(pc),d0&lt;br /&gt;
$403F6:[]addq.b    #$1,d0&lt;br /&gt;
$403F8:[]lsl.b     #$1,d0&lt;br /&gt;
$403FA:[]ori.w     #$0,d0&lt;br /&gt;
$403FE:[]eori.b    #$7,d0&lt;br /&gt;
$40402:[]andi.b    #$7,d0&lt;br /&gt;
$40406:[]illegal                       ; Trace OFF&lt;br /&gt;
$40408:[]move.b    #$e,$ff8800&lt;br /&gt;
$40410:[]move.b    $ff8800,d1&lt;br /&gt;
$40416:[]andi.b    #$f8,d1&lt;br /&gt;
$4041A:[]or.b      d0,d1&lt;br /&gt;
$4041C:[]move.b    d1,$ff8802&lt;br /&gt;
$40422:[]illegal                       ; Trace ON&lt;br /&gt;
$40424:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
Drive deselect&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$40426:[]movem.l   d0/d1,-(sp)&lt;br /&gt;
$4042A:[]move.w    #$3a98,d0&lt;br /&gt;
$4042E:[]bsr       $4049c              ; wait&lt;br /&gt;
$40432:[]move.b    #$7,d0&lt;br /&gt;
$40436:[]bsr       $40406&lt;br /&gt;
$4043A:[]movem.l   (sp)+,d0/d1&lt;br /&gt;
$4043E:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
FDC command in d0&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$40440:[]ori.w     #$3,d0&lt;br /&gt;
$40444:[]move.w    #$80,$ff8606&lt;br /&gt;
$4044C:[]move.w    d0,$ff8604&lt;br /&gt;
$40452:[]move.l    #$60000,d0&lt;br /&gt;
$40458:[]btst      #$5,$fffa01         ; ready?&lt;br /&gt;
$40460:[]beq.s     $40486              ; get status&lt;br /&gt;
$40462:[]subq.l    #$1,d0&lt;br /&gt;
$40464:[]bne.s     $40458&lt;br /&gt;
$40466:[]bsr       $4046e              ; Force Interrupt&lt;br /&gt;
$4046A:[]moveq.l   #$ffffffff,d0&lt;br /&gt;
$4046C:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
DMA Force Interrupt&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$4046E:[]move.w    #$80,$ff8606&lt;br /&gt;
$40476:[]move.w    #$d0,$ff8604&lt;br /&gt;
$4047E:[]move.w    #$f,d0&lt;br /&gt;
$40482:[]bsr       $4049c              ; wait&lt;br /&gt;
$40486:[]move.w    #$80,$ff8606&lt;br /&gt;
$4048E:[]moveq.l   #$0,d0&lt;br /&gt;
$40490:[]move.w    $ff8604,d0          ; get status&lt;br /&gt;
$40496:[]andi.w    #$1f,d0&lt;br /&gt;
$4049A:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
wait d0&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$4049C:[]dbra      d0,$4049c&lt;br /&gt;
$404A0:[]rts&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
exit&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$404A2:[]lea.l     $40016(pc),a0&lt;br /&gt;
$404A6:[]move.l    d0,(a0)             ; magic key &lt;br /&gt;
$404A8:[]movem.l   $40056(pc),d0-d7    ; old exception vectors magic key = d7&lt;br /&gt;
$404AE:[]move.l    $4,d0&lt;br /&gt;
$404B4:[]move.l    d0,d1&lt;br /&gt;
$404B6:[]lea.l     $406d0(pc),a0       ; &amp;lt;&amp;lt;&amp;lt; next PC&lt;br /&gt;
$404BA:[]move.l    a0,$2(sp)&lt;br /&gt;
$404BE:[]illegal                       ; Trace OFF&lt;br /&gt;
$404C0:[]movem.l   d0-d7,$8            ; restore exception vectors&lt;br /&gt;
$404C8:[]movem.l   $40016(pc),d0-d7/a0-a6 ; magic key in d0   &lt;br /&gt;
$404CE:[]rte&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
$404D0:  52 6F 62 20 4E 6F 72 74 68 65 6E 20 43 6F 6D 70   Rob Northen Comp&lt;br /&gt;
$404E0:  6C C6 06 66 A6 AB 2A DF C9 E4 13 C8 27 90 4F 20   l..f..*.......O &lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back to&lt;/div&gt;</summary>
		<author><name>&gt;Muguk</name></author>
	</entry>
</feed>