dsktool 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/bin/dsktool.rb +14 -7
  2. data/doc/classes/AppleSoftFile.html +19 -18
  3. data/doc/classes/AppleSoftFile.src/M000011.html +4 -4
  4. data/doc/classes/AppleSoftFile.src/M000012.html +4 -4
  5. data/doc/classes/AppleSoftFile.src/M000013.html +18 -0
  6. data/doc/classes/AppleSoftFile.src/M000014.html +18 -0
  7. data/doc/classes/BinaryFile.html +19 -18
  8. data/doc/classes/BinaryFile.src/M000024.html +4 -4
  9. data/doc/classes/BinaryFile.src/M000025.html +4 -5
  10. data/doc/classes/BinaryFile.src/M000026.html +19 -0
  11. data/doc/classes/BinaryFile.src/M000029.html +18 -0
  12. data/doc/classes/BinaryFile.src/M000030.html +18 -0
  13. data/doc/classes/BinaryFile.src/M000031.html +19 -0
  14. data/doc/classes/D65.html +10 -10
  15. data/doc/classes/D65.src/M000009.html +4 -50
  16. data/doc/classes/D65.src/M000010.html +18 -0
  17. data/doc/classes/D65.src/M000011.html +64 -0
  18. data/doc/classes/DOSDisk.html +15 -15
  19. data/doc/classes/DOSDisk.src/M000014.html +6 -5
  20. data/doc/classes/DOSDisk.src/M000015.html +6 -62
  21. data/doc/classes/DOSDisk.src/M000016.html +19 -0
  22. data/doc/classes/DOSDisk.src/M000017.html +76 -0
  23. data/doc/classes/DOSFile.html +19 -18
  24. data/doc/classes/DOSFile.src/M000027.html +8 -3
  25. data/doc/classes/DOSFile.src/M000028.html +3 -4
  26. data/doc/classes/DOSFile.src/M000029.html +18 -0
  27. data/doc/classes/DOSFile.src/M000032.html +22 -0
  28. data/doc/classes/DOSFile.src/M000033.html +17 -0
  29. data/doc/classes/DOSFile.src/M000034.html +18 -0
  30. data/doc/classes/DSK.html +35 -35
  31. data/doc/classes/DSK.src/M000017.html +8 -8
  32. data/doc/classes/DSK.src/M000018.html +8 -13
  33. data/doc/classes/DSK.src/M000019.html +8 -5
  34. data/doc/classes/DSK.src/M000020.html +20 -4
  35. data/doc/classes/DSK.src/M000021.html +4 -25
  36. data/doc/classes/DSK.src/M000022.html +4 -9
  37. data/doc/classes/DSK.src/M000023.html +40 -0
  38. data/doc/classes/DSK.src/M000024.html +23 -0
  39. data/doc/classes/IntegerBasicFile.html +19 -18
  40. data/doc/classes/IntegerBasicFile.src/M000005.html +4 -4
  41. data/doc/classes/IntegerBasicFile.src/M000006.html +4 -4
  42. data/doc/classes/IntegerBasicFile.src/M000007.html +18 -0
  43. data/doc/classes/IntegerBasicFile.src/M000008.html +18 -0
  44. data/doc/classes/RDoc.html +5 -5
  45. data/doc/classes/RDoc.src/M000033.html +40 -0
  46. data/doc/classes/RDoc.src/M000038.html +40 -0
  47. data/doc/classes/SCAsmFile.html +226 -0
  48. data/doc/classes/SCAsmFile.src/M000025.html +18 -0
  49. data/doc/classes/SCAsmFile.src/M000026.html +18 -0
  50. data/doc/classes/SCAsmFile.src/M000027.html +18 -0
  51. data/doc/classes/SCAsmFile.src/M000028.html +36 -0
  52. data/doc/classes/TestDOSDisks.html +31 -1
  53. data/doc/classes/TestDOSDisks.src/M000003.html +3 -21
  54. data/doc/classes/TestDOSDisks.src/M000004.html +41 -0
  55. data/doc/classes/TestDOSDisks.src/M000005.html +27 -0
  56. data/doc/classes/TestDisassembly.html +5 -5
  57. data/doc/classes/TestDisassembly.src/M000008.html +19 -0
  58. data/doc/classes/TestDisassembly.src/M000009.html +19 -0
  59. data/doc/classes/TextFile.html +19 -18
  60. data/doc/classes/TextFile.src/M000030.html +4 -4
  61. data/doc/classes/TextFile.src/M000031.html +4 -6
  62. data/doc/classes/TextFile.src/M000032.html +20 -0
  63. data/doc/classes/TextFile.src/M000035.html +18 -0
  64. data/doc/classes/TextFile.src/M000036.html +18 -0
  65. data/doc/classes/TextFile.src/M000037.html +20 -0
  66. data/doc/created.rid +1 -1
  67. data/doc/dot/f_3.dot +13 -0
  68. data/doc/dot/f_3.png +0 -0
  69. data/doc/files/bin/dsktool_rb.html +32 -22
  70. data/doc/files/lib/DOSDisk_rb.html +1 -1
  71. data/doc/files/lib/DOSFile_rb.html +5 -4
  72. data/doc/files/lib/DSK_rb.html +3 -1
  73. data/doc/files/test/tc_dos_disks_rb.html +1 -1
  74. data/doc/fr_class_index.html +1 -0
  75. data/doc/fr_method_index.html +36 -30
  76. data/lib/CHANGES.txt +5 -0
  77. data/lib/DOSDisk.rb +1 -1
  78. data/lib/DOSFile.rb +91 -0
  79. data/lib/DSK.rb +10 -2
  80. data/test/AAL_1.DSK +0 -0
  81. data/test/tc_dos_disks.rb +25 -3
  82. metadata +37 -1
@@ -5,60 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>disassemble (D65)</title>
8
+ <title>annotations (D65)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/D65.rb, line 104</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-constant">D65</span>.<span class="ruby-identifier">disassemble</span>(<span class="ruby-identifier">buffer</span>,<span class="ruby-identifier">start_address</span>=<span class="ruby-value">0</span>)
15
-
16
- <span class="ruby-identifier">index</span>=<span class="ruby-value">0</span>
17
- <span class="ruby-identifier">s</span>=<span class="ruby-value str">&quot;&quot;</span>
18
- <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">index</span><span class="ruby-operator">&lt;</span><span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">length</span>
19
- <span class="ruby-identifier">byte</span>=<span class="ruby-identifier">buffer</span>[<span class="ruby-identifier">index</span>]
20
- <span class="ruby-identifier">current_address</span>=<span class="ruby-identifier">start_address</span><span class="ruby-operator">+</span><span class="ruby-identifier">index</span>
21
- <span class="ruby-identifier">opcode_name</span>=<span class="ruby-constant">OPCODES</span>[<span class="ruby-identifier">byte</span>][<span class="ruby-value">0</span>]
22
- <span class="ruby-identifier">operand_type</span>=<span class="ruby-constant">OPCODES</span>[<span class="ruby-identifier">byte</span>][<span class="ruby-value">1</span>]
23
- <span class="ruby-identifier">next_byte</span>=(<span class="ruby-identifier">index</span><span class="ruby-operator">&lt;</span><span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span><span class="ruby-operator">?</span><span class="ruby-identifier">buffer</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]<span class="ruby-operator">:</span><span class="ruby-value">0</span>)
24
- <span class="ruby-identifier">next_word</span>=(<span class="ruby-identifier">index</span><span class="ruby-operator">&lt;</span><span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">2</span><span class="ruby-operator">?</span><span class="ruby-identifier">buffer</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">buffer</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">2</span>]<span class="ruby-operator">*</span><span class="ruby-value">256</span><span class="ruby-operator">:</span><span class="ruby-value">0</span>)
25
- <span class="ruby-identifier">operand_format</span>,<span class="ruby-identifier">operand_address</span>= <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">operand_type</span>
26
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:imp</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">''</span>,<span class="ruby-value str">''</span>]
27
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:acc</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;A&quot;</span>,<span class="ruby-value str">''</span>]
28
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:imm</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;\#$%02X&quot;</span>,<span class="ruby-identifier">next_byte</span>]
29
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:abs</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%04X&quot;</span>,<span class="ruby-identifier">next_word</span>]
30
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:abx</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%04X,X&quot;</span>,<span class="ruby-identifier">next_word</span>]
31
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:aby</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%04X,Y&quot;</span>,<span class="ruby-identifier">next_word</span>]
32
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:zpg</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%02X&quot;</span>,<span class="ruby-identifier">next_byte</span>]
33
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:zpx</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%02X,X&quot;</span>,<span class="ruby-identifier">next_byte</span>]
34
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:zpy</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%02X,Y&quot;</span>,<span class="ruby-identifier">next_byte</span>]
35
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:ind</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;($%04X)&quot;</span>,<span class="ruby-identifier">next_word</span>]
36
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:inx</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;($%04X),X&quot;</span>,<span class="ruby-identifier">next_word</span>]
37
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:iny</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;($%04X),Y&quot;</span>,<span class="ruby-identifier">next_word</span>]
38
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:inz</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;($%02X),Y&quot;</span>,<span class="ruby-identifier">next_byte</span>]
39
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:rel</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%04X&quot;</span>,(<span class="ruby-identifier">current_address</span><span class="ruby-operator">+</span><span class="ruby-identifier">next_byte</span>.<span class="ruby-identifier">chr</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;c&quot;</span>)[<span class="ruby-value">0</span>]<span class="ruby-operator">+</span><span class="ruby-value">2</span>)<span class="ruby-operator">%</span><span class="ruby-value">0x10000</span>]
40
- <span class="ruby-keyword kw">else</span>
41
- <span class="ruby-identifier">abort</span>(<span class="ruby-node">&quot;unknown symbol #{operand_type}&quot;</span>)
42
- <span class="ruby-keyword kw">end</span>
43
- <span class="ruby-identifier">operand</span> = <span class="ruby-identifier">sprintf</span>(<span class="ruby-identifier">operand_format</span>,<span class="ruby-identifier">operand_address</span>)
44
- <span class="ruby-identifier">opcode_size</span>=<span class="ruby-constant">OPCODE_SIZE</span>[<span class="ruby-identifier">operand_type</span>]
45
- <span class="ruby-identifier">instruction_bytes</span>=<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">opcode_size</span>
46
- <span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%02X &quot;</span>,<span class="ruby-identifier">byte</span>)
47
- <span class="ruby-keyword kw">when</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%02X %02X &quot;</span>,<span class="ruby-identifier">byte</span>,<span class="ruby-identifier">next_byte</span>)
48
- <span class="ruby-keyword kw">when</span> <span class="ruby-value">3</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%02X %02X %02X&quot;</span>,<span class="ruby-identifier">byte</span>,<span class="ruby-identifier">next_byte</span>,<span class="ruby-identifier">next_word</span><span class="ruby-operator">&gt;&gt;</span><span class="ruby-value">8</span>)
49
- <span class="ruby-keyword kw">end</span>
50
-
51
-
52
- <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%04X: %s %s %s ; &quot;</span>,<span class="ruby-identifier">current_address</span>,<span class="ruby-identifier">instruction_bytes</span>,<span class="ruby-identifier">opcode_name</span>,<span class="ruby-identifier">operand</span>.<span class="ruby-identifier">ljust</span>(<span class="ruby-value">10</span>))
53
- <span class="ruby-identifier">annotation</span>=<span class="ruby-identifier">annotations</span>[<span class="ruby-identifier">operand_address</span>]
54
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">annotation</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">operand_type!</span>=<span class="ruby-identifier">:imm</span>)) <span class="ruby-keyword kw">then</span>
55
- <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-value str">&quot; &quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">annotation</span>.<span class="ruby-identifier">to_s</span>
56
- <span class="ruby-keyword kw">end</span>
57
- <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n&quot;</span>
58
- <span class="ruby-identifier">index</span><span class="ruby-operator">+=</span><span class="ruby-identifier">opcode_size</span>
59
- <span class="ruby-keyword kw">end</span>
60
-
61
- <span class="ruby-identifier">s</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/D65.rb, line 99</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">D65</span>.<span class="ruby-identifier">annotations</span>
15
+ <span class="ruby-ivar">@@annotations</span>
62
16
  <span class="ruby-keyword kw">end</span></pre>
63
17
  </body>
64
18
  </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>annotations (D65)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/D65.rb, line 99</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">D65</span>.<span class="ruby-identifier">annotations</span>
15
+ <span class="ruby-ivar">@@annotations</span>
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,64 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>disassemble (D65)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/D65.rb, line 104</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">D65</span>.<span class="ruby-identifier">disassemble</span>(<span class="ruby-identifier">buffer</span>,<span class="ruby-identifier">start_address</span>=<span class="ruby-value">0</span>)
15
+
16
+ <span class="ruby-identifier">index</span>=<span class="ruby-value">0</span>
17
+ <span class="ruby-identifier">s</span>=<span class="ruby-value str">&quot;&quot;</span>
18
+ <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">index</span><span class="ruby-operator">&lt;</span><span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">length</span>
19
+ <span class="ruby-identifier">byte</span>=<span class="ruby-identifier">buffer</span>[<span class="ruby-identifier">index</span>]
20
+ <span class="ruby-identifier">current_address</span>=<span class="ruby-identifier">start_address</span><span class="ruby-operator">+</span><span class="ruby-identifier">index</span>
21
+ <span class="ruby-identifier">opcode_name</span>=<span class="ruby-constant">OPCODES</span>[<span class="ruby-identifier">byte</span>][<span class="ruby-value">0</span>]
22
+ <span class="ruby-identifier">operand_type</span>=<span class="ruby-constant">OPCODES</span>[<span class="ruby-identifier">byte</span>][<span class="ruby-value">1</span>]
23
+ <span class="ruby-identifier">next_byte</span>=(<span class="ruby-identifier">index</span><span class="ruby-operator">&lt;</span><span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span><span class="ruby-operator">?</span><span class="ruby-identifier">buffer</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]<span class="ruby-operator">:</span><span class="ruby-value">0</span>)
24
+ <span class="ruby-identifier">next_word</span>=(<span class="ruby-identifier">index</span><span class="ruby-operator">&lt;</span><span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">2</span><span class="ruby-operator">?</span><span class="ruby-identifier">buffer</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">buffer</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">2</span>]<span class="ruby-operator">*</span><span class="ruby-value">256</span><span class="ruby-operator">:</span><span class="ruby-value">0</span>)
25
+ <span class="ruby-identifier">operand_format</span>,<span class="ruby-identifier">operand_address</span>= <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">operand_type</span>
26
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:imp</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">''</span>,<span class="ruby-value str">''</span>]
27
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:acc</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;A&quot;</span>,<span class="ruby-value str">''</span>]
28
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:imm</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;\#$%02X&quot;</span>,<span class="ruby-identifier">next_byte</span>]
29
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:abs</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%04X&quot;</span>,<span class="ruby-identifier">next_word</span>]
30
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:abx</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%04X,X&quot;</span>,<span class="ruby-identifier">next_word</span>]
31
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:aby</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%04X,Y&quot;</span>,<span class="ruby-identifier">next_word</span>]
32
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:zpg</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%02X&quot;</span>,<span class="ruby-identifier">next_byte</span>]
33
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:zpx</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%02X,X&quot;</span>,<span class="ruby-identifier">next_byte</span>]
34
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:zpy</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%02X,Y&quot;</span>,<span class="ruby-identifier">next_byte</span>]
35
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:ind</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;($%04X)&quot;</span>,<span class="ruby-identifier">next_word</span>]
36
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:inx</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;($%04X),X&quot;</span>,<span class="ruby-identifier">next_word</span>]
37
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:iny</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;($%04X),Y&quot;</span>,<span class="ruby-identifier">next_word</span>]
38
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:inz</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;($%02X),Y&quot;</span>,<span class="ruby-identifier">next_byte</span>]
39
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:rel</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value str">&quot;$%04X&quot;</span>,(<span class="ruby-identifier">current_address</span><span class="ruby-operator">+</span><span class="ruby-identifier">next_byte</span>.<span class="ruby-identifier">chr</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;c&quot;</span>)[<span class="ruby-value">0</span>]<span class="ruby-operator">+</span><span class="ruby-value">2</span>)<span class="ruby-operator">%</span><span class="ruby-value">0x10000</span>]
40
+ <span class="ruby-keyword kw">else</span>
41
+ <span class="ruby-identifier">abort</span>(<span class="ruby-node">&quot;unknown symbol #{operand_type}&quot;</span>)
42
+ <span class="ruby-keyword kw">end</span>
43
+ <span class="ruby-identifier">operand</span> = <span class="ruby-identifier">sprintf</span>(<span class="ruby-identifier">operand_format</span>,<span class="ruby-identifier">operand_address</span>)
44
+ <span class="ruby-identifier">opcode_size</span>=<span class="ruby-constant">OPCODE_SIZE</span>[<span class="ruby-identifier">operand_type</span>]
45
+ <span class="ruby-identifier">instruction_bytes</span>=<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">opcode_size</span>
46
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%02X &quot;</span>,<span class="ruby-identifier">byte</span>)
47
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%02X %02X &quot;</span>,<span class="ruby-identifier">byte</span>,<span class="ruby-identifier">next_byte</span>)
48
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">3</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%02X %02X %02X&quot;</span>,<span class="ruby-identifier">byte</span>,<span class="ruby-identifier">next_byte</span>,<span class="ruby-identifier">next_word</span><span class="ruby-operator">&gt;&gt;</span><span class="ruby-value">8</span>)
49
+ <span class="ruby-keyword kw">end</span>
50
+
51
+
52
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%04X: %s %s %s ; &quot;</span>,<span class="ruby-identifier">current_address</span>,<span class="ruby-identifier">instruction_bytes</span>,<span class="ruby-identifier">opcode_name</span>,<span class="ruby-identifier">operand</span>.<span class="ruby-identifier">ljust</span>(<span class="ruby-value">10</span>))
53
+ <span class="ruby-identifier">annotation</span>=<span class="ruby-identifier">annotations</span>[<span class="ruby-identifier">operand_address</span>]
54
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">annotation</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">operand_type!</span>=<span class="ruby-identifier">:imm</span>)) <span class="ruby-keyword kw">then</span>
55
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-value str">&quot; &quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">annotation</span>.<span class="ruby-identifier">to_s</span>
56
+ <span class="ruby-keyword kw">end</span>
57
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n&quot;</span>
58
+ <span class="ruby-identifier">index</span><span class="ruby-operator">+=</span><span class="ruby-identifier">opcode_size</span>
59
+ <span class="ruby-keyword kw">end</span>
60
+
61
+ <span class="ruby-identifier">s</span>
62
+ <span class="ruby-keyword kw">end</span></pre>
63
+ </body>
64
+ </html>
@@ -186,9 +186,9 @@ TRACK/SECTOR LIST FORMAT (from Beneath Apple DOS p 4-6)
186
186
  <h3 class="section-bar">Methods</h3>
187
187
 
188
188
  <div class="name-list">
189
- <a href="#M000013">dump_catalog</a>&nbsp;&nbsp;
190
- <a href="#M000014">new</a>&nbsp;&nbsp;
191
- <a href="#M000015">read_vtoc</a>&nbsp;&nbsp;
189
+ <a href="#M000015">dump_catalog</a>&nbsp;&nbsp;
190
+ <a href="#M000016">new</a>&nbsp;&nbsp;
191
+ <a href="#M000017">read_vtoc</a>&nbsp;&nbsp;
192
192
  </div>
193
193
  </div>
194
194
 
@@ -210,12 +210,12 @@ TRACK/SECTOR LIST FORMAT (from Beneath Apple DOS p 4-6)
210
210
  <div id="methods">
211
211
  <h3 class="section-bar">Public Class methods</h3>
212
212
 
213
- <div id="method-M000014" class="method-detail">
214
- <a name="M000014"></a>
213
+ <div id="method-M000016" class="method-detail">
214
+ <a name="M000016"></a>
215
215
 
216
216
  <div class="method-heading">
217
- <a href="DOSDisk.src/M000014.html" target="Code" class="method-signature"
218
- onclick="popupCode('DOSDisk.src/M000014.html');return false;">
217
+ <a href="DOSDisk.src/M000016.html" target="Code" class="method-signature"
218
+ onclick="popupCode('DOSDisk.src/M000016.html');return false;">
219
219
  <span class="method-name">new</span><span class="method-args">(file_bytes)</span>
220
220
  </a>
221
221
  </div>
@@ -226,12 +226,12 @@ TRACK/SECTOR LIST FORMAT (from Beneath Apple DOS p 4-6)
226
226
 
227
227
  <h3 class="section-bar">Public Instance methods</h3>
228
228
 
229
- <div id="method-M000013" class="method-detail">
230
- <a name="M000013"></a>
229
+ <div id="method-M000015" class="method-detail">
230
+ <a name="M000015"></a>
231
231
 
232
232
  <div class="method-heading">
233
- <a href="DOSDisk.src/M000013.html" target="Code" class="method-signature"
234
- onclick="popupCode('DOSDisk.src/M000013.html');return false;">
233
+ <a href="DOSDisk.src/M000015.html" target="Code" class="method-signature"
234
+ onclick="popupCode('DOSDisk.src/M000015.html');return false;">
235
235
  <span class="method-name">dump_catalog</span><span class="method-args">()</span>
236
236
  </a>
237
237
  </div>
@@ -240,12 +240,12 @@ TRACK/SECTOR LIST FORMAT (from Beneath Apple DOS p 4-6)
240
240
  </div>
241
241
  </div>
242
242
 
243
- <div id="method-M000015" class="method-detail">
244
- <a name="M000015"></a>
243
+ <div id="method-M000017" class="method-detail">
244
+ <a name="M000017"></a>
245
245
 
246
246
  <div class="method-heading">
247
- <a href="DOSDisk.src/M000015.html" target="Code" class="method-signature"
248
- onclick="popupCode('DOSDisk.src/M000015.html');return false;">
247
+ <a href="DOSDisk.src/M000017.html" target="Code" class="method-signature"
248
+ onclick="popupCode('DOSDisk.src/M000017.html');return false;">
249
249
  <span class="method-name">read_vtoc</span><span class="method-args">()</span>
250
250
  </a>
251
251
  </div>
@@ -5,15 +5,16 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>new (DOSDisk)</title>
8
+ <title>dump_catalog (DOSDisk)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/DOSDisk.rb, line 94</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">file_bytes</span>)
15
- <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">file_bytes</span>)
16
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">read_vtoc</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/DOSDisk.rb, line 87</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dump_catalog</span>
15
+ <span class="ruby-identifier">files</span>.<span class="ruby-identifier">each_value</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
16
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{file.locked ? '*':' '}#{file.file_type} #{sprintf('%03X',file.sector_count)} #{file.filename}&quot;</span>
17
+ }
17
18
  <span class="ruby-keyword kw">end</span></pre>
18
19
  </body>
19
20
  </html>
@@ -5,72 +5,16 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>read_vtoc (DOSDisk)</title>
8
+ <title>dump_catalog (DOSDisk)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/DOSDisk.rb, line 100</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_vtoc</span>
15
- <span class="ruby-identifier">vtoc_sector</span>=<span class="ruby-identifier">get_sector</span>(<span class="ruby-value">17</span>,<span class="ruby-value">0</span>)
16
-
17
- <span class="ruby-identifier">catalog_sector</span>=<span class="ruby-identifier">get_sector</span>(<span class="ruby-identifier">vtoc_sector</span>[<span class="ruby-value">01</span>],<span class="ruby-identifier">vtoc_sector</span>[<span class="ruby-value">02</span>])
18
- <span class="ruby-identifier">done</span>=<span class="ruby-keyword kw">false</span>
19
- <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-identifier">done</span>
20
- (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">file_number</span><span class="ruby-operator">|</span>
21
- <span class="ruby-identifier">file_descriptive_entry_start</span>=<span class="ruby-value">11</span><span class="ruby-operator">+</span><span class="ruby-identifier">file_number</span><span class="ruby-operator">*</span><span class="ruby-value">35</span>
22
- <span class="ruby-identifier">file_descriptive_entry</span>=<span class="ruby-identifier">catalog_sector</span>[<span class="ruby-identifier">file_descriptive_entry_start</span><span class="ruby-operator">..</span><span class="ruby-identifier">file_descriptive_entry_start</span><span class="ruby-operator">+</span><span class="ruby-value">35</span>]
23
- <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">0</span>]<span class="ruby-operator">==</span><span class="ruby-value">0x</span><span class="ruby-constant">FF</span>) <span class="ruby-comment cmt"># skip deleted files</span>
24
- <span class="ruby-identifier">filename</span>=<span class="ruby-value str">&quot;&quot;</span>
25
- <span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">3</span><span class="ruby-operator">..</span><span class="ruby-value">32</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">each_byte</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">filename</span><span class="ruby-operator">+=</span>(<span class="ruby-identifier">b</span>.<span class="ruby-operator">%</span><span class="ruby-value">128</span>).<span class="ruby-identifier">chr</span>}
26
- <span class="ruby-identifier">filename</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/ *$/</span>,<span class="ruby-value str">&quot;&quot;</span>) <span class="ruby-comment cmt">#strip off trailing spaces</span>
27
- <span class="ruby-identifier">locked</span>=(<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">2</span>]<span class="ruby-operator">&gt;=</span><span class="ruby-value">0x80</span>)
28
- <span class="ruby-identifier">sector_count</span>=<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">0x21</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">0x22</span>]<span class="ruby-operator">*</span><span class="ruby-value">256</span>
29
-
30
- <span class="ruby-identifier">file_type_code</span>=<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">2</span>]<span class="ruby-operator">%</span><span class="ruby-value">0x80</span>
31
-
32
-
33
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">sector_count</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
34
- <span class="ruby-identifier">contents</span>=<span class="ruby-value str">&quot;&quot;</span>
35
- <span class="ruby-identifier">ts_list_track_no</span>=<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">0</span>]
36
- <span class="ruby-identifier">ts_list_sector_no</span>=<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">1</span>]
37
- <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">ts_list_track_no</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">ts_list_track_no</span><span class="ruby-operator">&lt;=</span><span class="ruby-value">0</span><span class="ruby-constant">X22</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">ts_list_sector_no</span><span class="ruby-operator">&lt;=</span><span class="ruby-value">0x0f</span>)
38
- <span class="ruby-identifier">ts_list_sector</span>=<span class="ruby-identifier">get_sector</span>(<span class="ruby-identifier">ts_list_track_no</span>,<span class="ruby-identifier">ts_list_sector_no</span>)
39
- <span class="ruby-identifier">ts_list_track_no</span>=<span class="ruby-identifier">ts_list_sector</span>[<span class="ruby-value">1</span>]
40
- <span class="ruby-identifier">ts_list_sector_no</span>=<span class="ruby-identifier">ts_list_sector</span>[<span class="ruby-value">2</span>]
41
-
42
- <span class="ruby-value">0x0</span><span class="ruby-constant">C</span>.<span class="ruby-identifier">step</span>(<span class="ruby-value">0xff</span>,<span class="ruby-value">2</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
43
- <span class="ruby-identifier">data_track_no</span>=<span class="ruby-identifier">ts_list_sector</span>[<span class="ruby-identifier">i</span>]
44
- <span class="ruby-identifier">data_sector_no</span>=<span class="ruby-identifier">ts_list_sector</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]
45
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">data_track_no</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">data_track_no</span><span class="ruby-operator">&lt;=</span><span class="ruby-value">0</span><span class="ruby-constant">X22</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">data_sector_no</span><span class="ruby-operator">&lt;=</span><span class="ruby-value">0x0f</span>) <span class="ruby-keyword kw">then</span>
46
- <span class="ruby-identifier">contents</span><span class="ruby-operator">+=</span><span class="ruby-identifier">get_sector</span>(<span class="ruby-identifier">data_track_no</span>,<span class="ruby-identifier">data_sector_no</span>)
47
- <span class="ruby-keyword kw">end</span>
48
- }
49
- <span class="ruby-keyword kw">end</span>
50
-
51
- <span class="ruby-ivar">@files</span>[<span class="ruby-identifier">filename</span>]= <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">file_type_code</span>
52
- <span class="ruby-keyword kw">when</span> <span class="ruby-value">0x00</span> <span class="ruby-keyword kw">then</span> <span class="ruby-constant">TextFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
53
- <span class="ruby-keyword kw">when</span> <span class="ruby-value">0x01</span> <span class="ruby-keyword kw">then</span> <span class="ruby-constant">IntegerBasicFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
54
- <span class="ruby-keyword kw">when</span> <span class="ruby-value">0x02</span> <span class="ruby-keyword kw">then</span> <span class="ruby-constant">AppleSoftFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
55
- <span class="ruby-keyword kw">when</span> <span class="ruby-value">0x04</span> <span class="ruby-keyword kw">then</span> <span class="ruby-constant">BinaryFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
56
- <span class="ruby-comment cmt"># when 0x08 then &quot;S&quot; #S type file</span>
57
- <span class="ruby-comment cmt"># when 0x10 then &quot;R&quot; #RELOCATABLE object module file</span>
58
- <span class="ruby-comment cmt"># when 0x20 then &quot;a&quot; #??</span>
59
- <span class="ruby-comment cmt"># when 0x40 then &quot;b&quot; #??</span>
60
- <span class="ruby-keyword kw">else</span> <span class="ruby-constant">DOSFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
61
- <span class="ruby-keyword kw">end</span>
62
-
63
- <span class="ruby-keyword kw">end</span>
64
- }
65
- <span class="ruby-identifier">next_track</span>=<span class="ruby-identifier">catalog_sector</span>[<span class="ruby-value">1</span>]
66
- <span class="ruby-identifier">next_sector</span>=<span class="ruby-identifier">catalog_sector</span>[<span class="ruby-value">2</span>]
67
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">next_track</span><span class="ruby-operator">==</span><span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span>( <span class="ruby-identifier">next_sector</span><span class="ruby-operator">==</span><span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
68
- <span class="ruby-identifier">done</span>=<span class="ruby-keyword kw">true</span>
69
- <span class="ruby-keyword kw">else</span>
70
- <span class="ruby-identifier">catalog_sector</span>=<span class="ruby-identifier">get_sector</span>(<span class="ruby-identifier">next_track</span>,<span class="ruby-identifier">next_sector</span>)
71
- <span class="ruby-keyword kw">end</span>
72
- <span class="ruby-keyword kw">end</span>
73
-
13
+ <pre><span class="ruby-comment cmt"># File lib/DOSDisk.rb, line 87</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dump_catalog</span>
15
+ <span class="ruby-identifier">files</span>.<span class="ruby-identifier">each_value</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
16
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{file.locked ? '*':' '}#{file.file_type} #{sprintf('%03X',file.sector_count)} #{file.filename}&quot;</span>
17
+ }
74
18
  <span class="ruby-keyword kw">end</span></pre>
75
19
  </body>
76
20
  </html>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>new (DOSDisk)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/DOSDisk.rb, line 94</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">file_bytes</span>)
15
+ <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">file_bytes</span>)
16
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">read_vtoc</span>
17
+ <span class="ruby-keyword kw">end</span></pre>
18
+ </body>
19
+ </html>
@@ -0,0 +1,76 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>read_vtoc (DOSDisk)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/DOSDisk.rb, line 100</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_vtoc</span>
15
+ <span class="ruby-identifier">vtoc_sector</span>=<span class="ruby-identifier">get_sector</span>(<span class="ruby-value">17</span>,<span class="ruby-value">0</span>)
16
+
17
+ <span class="ruby-identifier">catalog_sector</span>=<span class="ruby-identifier">get_sector</span>(<span class="ruby-identifier">vtoc_sector</span>[<span class="ruby-value">01</span>],<span class="ruby-identifier">vtoc_sector</span>[<span class="ruby-value">02</span>])
18
+ <span class="ruby-identifier">done</span>=<span class="ruby-keyword kw">false</span>
19
+ <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-identifier">done</span>
20
+ (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">file_number</span><span class="ruby-operator">|</span>
21
+ <span class="ruby-identifier">file_descriptive_entry_start</span>=<span class="ruby-value">11</span><span class="ruby-operator">+</span><span class="ruby-identifier">file_number</span><span class="ruby-operator">*</span><span class="ruby-value">35</span>
22
+ <span class="ruby-identifier">file_descriptive_entry</span>=<span class="ruby-identifier">catalog_sector</span>[<span class="ruby-identifier">file_descriptive_entry_start</span><span class="ruby-operator">..</span><span class="ruby-identifier">file_descriptive_entry_start</span><span class="ruby-operator">+</span><span class="ruby-value">35</span>]
23
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">0</span>]<span class="ruby-operator">==</span><span class="ruby-value">0x</span><span class="ruby-constant">FF</span>) <span class="ruby-comment cmt"># skip deleted files</span>
24
+ <span class="ruby-identifier">filename</span>=<span class="ruby-value str">&quot;&quot;</span>
25
+ <span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">3</span><span class="ruby-operator">..</span><span class="ruby-value">32</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">each_byte</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">filename</span><span class="ruby-operator">+=</span>(<span class="ruby-identifier">b</span>.<span class="ruby-operator">%</span><span class="ruby-value">128</span>).<span class="ruby-identifier">chr</span>}
26
+ <span class="ruby-identifier">filename</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/ *$/</span>,<span class="ruby-value str">&quot;&quot;</span>) <span class="ruby-comment cmt">#strip off trailing spaces</span>
27
+ <span class="ruby-identifier">locked</span>=(<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">2</span>]<span class="ruby-operator">&gt;=</span><span class="ruby-value">0x80</span>)
28
+ <span class="ruby-identifier">sector_count</span>=<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">0x21</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">0x22</span>]<span class="ruby-operator">*</span><span class="ruby-value">256</span>
29
+
30
+ <span class="ruby-identifier">file_type_code</span>=<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">2</span>]<span class="ruby-operator">%</span><span class="ruby-value">0x80</span>
31
+
32
+
33
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">sector_count</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
34
+ <span class="ruby-identifier">contents</span>=<span class="ruby-value str">&quot;&quot;</span>
35
+ <span class="ruby-identifier">ts_list_track_no</span>=<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">0</span>]
36
+ <span class="ruby-identifier">ts_list_sector_no</span>=<span class="ruby-identifier">file_descriptive_entry</span>[<span class="ruby-value">1</span>]
37
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">ts_list_track_no</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">ts_list_track_no</span><span class="ruby-operator">&lt;=</span><span class="ruby-value">0</span><span class="ruby-constant">X22</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">ts_list_sector_no</span><span class="ruby-operator">&lt;=</span><span class="ruby-value">0x0f</span>)
38
+ <span class="ruby-identifier">ts_list_sector</span>=<span class="ruby-identifier">get_sector</span>(<span class="ruby-identifier">ts_list_track_no</span>,<span class="ruby-identifier">ts_list_sector_no</span>)
39
+ <span class="ruby-identifier">ts_list_track_no</span>=<span class="ruby-identifier">ts_list_sector</span>[<span class="ruby-value">1</span>]
40
+ <span class="ruby-identifier">ts_list_sector_no</span>=<span class="ruby-identifier">ts_list_sector</span>[<span class="ruby-value">2</span>]
41
+
42
+ <span class="ruby-value">0x0</span><span class="ruby-constant">C</span>.<span class="ruby-identifier">step</span>(<span class="ruby-value">0xff</span>,<span class="ruby-value">2</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
43
+ <span class="ruby-identifier">data_track_no</span>=<span class="ruby-identifier">ts_list_sector</span>[<span class="ruby-identifier">i</span>]
44
+ <span class="ruby-identifier">data_sector_no</span>=<span class="ruby-identifier">ts_list_sector</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]
45
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">data_track_no</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">data_track_no</span><span class="ruby-operator">&lt;=</span><span class="ruby-value">0</span><span class="ruby-constant">X22</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">data_sector_no</span><span class="ruby-operator">&lt;=</span><span class="ruby-value">0x0f</span>) <span class="ruby-keyword kw">then</span>
46
+ <span class="ruby-identifier">contents</span><span class="ruby-operator">+=</span><span class="ruby-identifier">get_sector</span>(<span class="ruby-identifier">data_track_no</span>,<span class="ruby-identifier">data_sector_no</span>)
47
+ <span class="ruby-keyword kw">end</span>
48
+ }
49
+ <span class="ruby-keyword kw">end</span>
50
+
51
+ <span class="ruby-ivar">@files</span>[<span class="ruby-identifier">filename</span>]= <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">file_type_code</span>
52
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">0x00</span> <span class="ruby-keyword kw">then</span> <span class="ruby-constant">TextFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
53
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">0x01</span> <span class="ruby-keyword kw">then</span> <span class="ruby-constant">SCAsmFile</span>.<span class="ruby-identifier">can_be_scasm_file</span>(<span class="ruby-identifier">contents</span>)<span class="ruby-operator">?</span> <span class="ruby-constant">SCAsmFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)<span class="ruby-operator">:</span> <span class="ruby-constant">IntegerBasicFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
54
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">0x02</span> <span class="ruby-keyword kw">then</span> <span class="ruby-constant">AppleSoftFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
55
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">0x04</span> <span class="ruby-keyword kw">then</span> <span class="ruby-constant">BinaryFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
56
+ <span class="ruby-comment cmt"># when 0x08 then &quot;S&quot; #S type file</span>
57
+ <span class="ruby-comment cmt"># when 0x10 then &quot;R&quot; #RELOCATABLE object module file</span>
58
+ <span class="ruby-comment cmt"># when 0x20 then &quot;a&quot; #??</span>
59
+ <span class="ruby-comment cmt"># when 0x40 then &quot;b&quot; #??</span>
60
+ <span class="ruby-keyword kw">else</span> <span class="ruby-constant">DOSFile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>,<span class="ruby-identifier">locked</span>,<span class="ruby-identifier">sector_count</span>,<span class="ruby-identifier">contents</span>)
61
+ <span class="ruby-keyword kw">end</span>
62
+
63
+ <span class="ruby-keyword kw">end</span>
64
+ }
65
+ <span class="ruby-identifier">next_track</span>=<span class="ruby-identifier">catalog_sector</span>[<span class="ruby-value">1</span>]
66
+ <span class="ruby-identifier">next_sector</span>=<span class="ruby-identifier">catalog_sector</span>[<span class="ruby-value">2</span>]
67
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">next_track</span><span class="ruby-operator">==</span><span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span>( <span class="ruby-identifier">next_sector</span><span class="ruby-operator">==</span><span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
68
+ <span class="ruby-identifier">done</span>=<span class="ruby-keyword kw">true</span>
69
+ <span class="ruby-keyword kw">else</span>
70
+ <span class="ruby-identifier">catalog_sector</span>=<span class="ruby-identifier">get_sector</span>(<span class="ruby-identifier">next_track</span>,<span class="ruby-identifier">next_sector</span>)
71
+ <span class="ruby-keyword kw">end</span>
72
+ <span class="ruby-keyword kw">end</span>
73
+
74
+ <span class="ruby-keyword kw">end</span></pre>
75
+ </body>
76
+ </html>
@@ -81,9 +81,10 @@
81
81
  <map id="map" name="map">
82
82
  <area shape="RECT" coords="5,101,109,149" href="IntegerBasicFile.html" alt="IntegerBasicFile">
83
83
  <area shape="RECT" coords="133,101,227,149" href="AppleSoftFile.html" alt="AppleSoftFile">
84
- <area shape="RECT" coords="251,101,325,149" href="BinaryFile.html" alt="BinaryFile">
85
- <area shape="RECT" coords="197,5,269,53" href="DOSFile.html" alt="DOSFile">
86
- <area shape="RECT" coords="349,101,421,149" href="TextFile.html" alt="TextFile">
84
+ <area shape="RECT" coords="251,101,333,149" href="SCAsmFile.html" alt="SCAsmFile">
85
+ <area shape="RECT" coords="357,101,432,149" href="BinaryFile.html" alt="BinaryFile">
86
+ <area shape="RECT" coords="256,5,328,53" href="DOSFile.html" alt="DOSFile">
87
+ <area shape="RECT" coords="456,101,528,149" href="TextFile.html" alt="TextFile">
87
88
  </map>
88
89
  <img src="../dot/f_3.png" usemap="#map" border=0 alt="TopLevel">
89
90
  </div>
@@ -102,9 +103,9 @@ Apple DOS 3.3 file
102
103
  <h3 class="section-bar">Methods</h3>
103
104
 
104
105
  <div class="name-list">
105
- <a href="#M000027">file_type</a>&nbsp;&nbsp;
106
- <a href="#M000026">new</a>&nbsp;&nbsp;
107
- <a href="#M000028">to_s</a>&nbsp;&nbsp;
106
+ <a href="#M000033">file_type</a>&nbsp;&nbsp;
107
+ <a href="#M000032">new</a>&nbsp;&nbsp;
108
+ <a href="#M000034">to_s</a>&nbsp;&nbsp;
108
109
  </div>
109
110
  </div>
110
111
 
@@ -159,12 +160,12 @@ Apple DOS 3.3 file
159
160
  <div id="methods">
160
161
  <h3 class="section-bar">Public Class methods</h3>
161
162
 
162
- <div id="method-M000026" class="method-detail">
163
- <a name="M000026"></a>
163
+ <div id="method-M000032" class="method-detail">
164
+ <a name="M000032"></a>
164
165
 
165
166
  <div class="method-heading">
166
- <a href="DOSFile.src/M000026.html" target="Code" class="method-signature"
167
- onclick="popupCode('DOSFile.src/M000026.html');return false;">
167
+ <a href="DOSFile.src/M000032.html" target="Code" class="method-signature"
168
+ onclick="popupCode('DOSFile.src/M000032.html');return false;">
168
169
  <span class="method-name">new</span><span class="method-args">(filename,locked,sector_count,contents)</span>
169
170
  </a>
170
171
  </div>
@@ -175,12 +176,12 @@ Apple DOS 3.3 file
175
176
 
176
177
  <h3 class="section-bar">Public Instance methods</h3>
177
178
 
178
- <div id="method-M000027" class="method-detail">
179
- <a name="M000027"></a>
179
+ <div id="method-M000033" class="method-detail">
180
+ <a name="M000033"></a>
180
181
 
181
182
  <div class="method-heading">
182
- <a href="DOSFile.src/M000027.html" target="Code" class="method-signature"
183
- onclick="popupCode('DOSFile.src/M000027.html');return false;">
183
+ <a href="DOSFile.src/M000033.html" target="Code" class="method-signature"
184
+ onclick="popupCode('DOSFile.src/M000033.html');return false;">
184
185
  <span class="method-name">file_type</span><span class="method-args">()</span>
185
186
  </a>
186
187
  </div>
@@ -192,12 +193,12 @@ File type as displayed in Apple DOS 3.3 Catalog
192
193
  </div>
193
194
  </div>
194
195
 
195
- <div id="method-M000028" class="method-detail">
196
- <a name="M000028"></a>
196
+ <div id="method-M000034" class="method-detail">
197
+ <a name="M000034"></a>
197
198
 
198
199
  <div class="method-heading">
199
- <a href="DOSFile.src/M000028.html" target="Code" class="method-signature"
200
- onclick="popupCode('DOSFile.src/M000028.html');return false;">
200
+ <a href="DOSFile.src/M000034.html" target="Code" class="method-signature"
201
+ onclick="popupCode('DOSFile.src/M000034.html');return false;">
201
202
  <span class="method-name">to_s</span><span class="method-args">()</span>
202
203
  </a>
203
204
  </div>