test65 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/help.txt +3 -3
- data/lib/test65/build_file_list.rb +3 -0
- data/lib/test65/enclosures/ca65.rb +7 -8
- data/lib/test65/enclosures/cc65.rb +43 -0
- data/lib/test65/perform_test.rb +9 -0
- data/lib/test65/process_files.rb +5 -2
- data/lib/test65/version.rb +1 -1
- data/t65/c_err.c65 +8 -0
- data/t65/min_fail2.rb +9 -0
- data/t65/min_fail2_c.rb +9 -0
- data/t65/min_fail_c.c65 +8 -0
- data/t65/{min_pass.rb → min_pass2.rb} +0 -0
- data/t65/min_pass2_c.rb +9 -0
- data/t65/min_pass3.asm +12 -0
- data/t65/min_pass3_c.c +8 -0
- data/t65/min_pass_c.c65 +8 -0
- data/t65/t65_pass2_c.c +8 -0
- data/t65/t65_pass_c.c65 +8 -0
- data/t65/t65_test2_cfg.asm +13 -0
- metadata +15 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce0b53ee6e1abb5f043427d993e103352f195fc2
|
4
|
+
data.tar.gz: 8f4cb1e01eb2f3fd19d5d05f1393b744a8547b63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4863b308d617644627b0727380de7c6d7a5527ad37fdb317065a358b11289d215f5296eba4e10b6da9a2b82a5e533e898eb3438a4ff0441c7e228822e8d19404
|
7
|
+
data.tar.gz: 10fad1c205776264cd83ba4d99ba654f79e6efd7bae25d389dbd233f2284b770ae2e920351082c54d385b792c1ca8ff1c3257f07a285be2bd20c7c77486f785a
|
data/help.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
test65 - Run tests of
|
1
|
+
test65 - Run tests of 65C02 C and assembler code.
|
2
2
|
|
3
3
|
Usage: test65 {options} {files}
|
4
4
|
|
@@ -19,6 +19,6 @@ Notes:
|
|
19
19
|
- By default, test files are located in a folder called "t65" in the current
|
20
20
|
folder or one of its parent folders.
|
21
21
|
- Wildcards are allowed for files but not the path.
|
22
|
-
- If no files are specified, then all files matching "t65*.
|
23
|
-
in the test folder are tested.
|
22
|
+
- If no files are specified, then all files matching "t65*.c65", "t65*.a65",
|
23
|
+
"t65*.c", "t65*.asm", or "t65*.rb" in the test folder are tested.
|
24
24
|
- If files are specified, only the specified file(s) are tested.
|
@@ -15,6 +15,9 @@ module Test65
|
|
15
15
|
# Scan the path for files to be processed.
|
16
16
|
def self.scan_files
|
17
17
|
@test_files = Dir.glob(@options[:path] + "/t65*.a65") +
|
18
|
+
Dir.glob(@options[:path] + "/t65*.asm") +
|
19
|
+
Dir.glob(@options[:path] + "/t65*.c65") +
|
20
|
+
Dir.glob(@options[:path] + "/t65*.c") +
|
18
21
|
Dir.glob(@options[:path] + "/t65*.rb")
|
19
22
|
fail "Cannot locate any test files" if @test_files.empty?
|
20
23
|
end
|
@@ -3,28 +3,27 @@ class TestScript
|
|
3
3
|
|
4
4
|
# Setup ca65
|
5
5
|
def ca65_initialize
|
6
|
-
@options[:
|
7
|
-
@options[:
|
8
|
-
@options[:objs] = []
|
6
|
+
@options[:ca65_target] = "sim65c02"
|
7
|
+
@options[:ca65_inc_paths] = ["#{@options[:gem_root]}/asminc"]
|
9
8
|
end
|
10
9
|
|
11
10
|
# Add some include paths for the assembler.
|
12
11
|
def ca65_inc_paths(*more_paths)
|
13
12
|
fail "Sequence error: ca65_inc_paths" unless @phase == :create
|
14
|
-
append_option(:
|
13
|
+
append_option(:ca65_inc_paths, more_paths)
|
15
14
|
end
|
16
15
|
|
17
16
|
# Assemble some files.
|
18
17
|
def ca65(file, options="")
|
19
18
|
fail "Sequence error: ca65" unless @phase == :create
|
20
19
|
source = File.absolute_path(@options[:path] + "/" + file)
|
21
|
-
target = "--target #{@options[:
|
22
|
-
paths = build_args("-I", @options[:
|
20
|
+
target = "--target #{@options[:ca65_target]} "
|
21
|
+
paths = build_args("-I", @options[:ca65_inc_paths])
|
23
22
|
|
24
|
-
# Convert source
|
23
|
+
# Convert source assembler files into object files.
|
25
24
|
object = change_type(source, ".o")
|
26
25
|
list = @options[:list] ? "-l " + change_type(source, ".lst") : ""
|
27
|
-
command = "ca65 #{target}#{paths}#{list}#{options} -o #{object} #{source} #{@quiet}\n"
|
26
|
+
command = "ca65 #{target}#{paths}#{list} #{options} -o #{object} #{source} #{@quiet}\n"
|
28
27
|
puts command if @options[:debug]
|
29
28
|
system(command)
|
30
29
|
fail "Error assembling #{source.localize_path}" unless $?.exitstatus == 0
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# An enclosure for the cc65 compiler.
|
2
|
+
class TestScript
|
3
|
+
|
4
|
+
# Setup cc65
|
5
|
+
def cc65_initialize
|
6
|
+
@options[:cc65_target] = "sim65c02"
|
7
|
+
@options[:cc65_inc_paths] = ["#{@options[:gem_root]}/include"]
|
8
|
+
end
|
9
|
+
|
10
|
+
# Add some include paths for the compiler.
|
11
|
+
def cc65_inc_paths(*more_paths)
|
12
|
+
fail "Sequence error: cc65_inc_paths" unless @phase == :create
|
13
|
+
append_option(:cc65_inc_paths, more_paths)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Compile some files.
|
17
|
+
def cc65(file, options="")
|
18
|
+
fail "Sequence error: cc65" unless @phase == :create
|
19
|
+
source = File.absolute_path(@options[:path] + "/" + file)
|
20
|
+
target = "--target #{@options[:cc65_target]} "
|
21
|
+
paths = build_args("--include-dir", @options[:cc65_inc_paths])
|
22
|
+
|
23
|
+
# Convert source C files into assembler files.
|
24
|
+
list = @options[:list] ? "--add-source " : " "
|
25
|
+
command = "cc65 #{target}#{list}#{paths}#{options} #{source} #{@quiet}\n"
|
26
|
+
puts command if @options[:debug]
|
27
|
+
system(command)
|
28
|
+
fail "Error compiling #{source.localize_path}" unless $?.exitstatus == 0
|
29
|
+
|
30
|
+
# Convert intermediate assembler files into object files.
|
31
|
+
temp = change_type(source, ".s")
|
32
|
+
object = change_type(source, ".o")
|
33
|
+
list = @options[:list] ? "-l " + change_type(source, ".lst") : ""
|
34
|
+
command = "ca65 #{target}#{list} -o #{object} #{temp} #{@quiet}\n"
|
35
|
+
puts command if @options[:debug]
|
36
|
+
system(command)
|
37
|
+
fail "Error assembling #{source.localize_path}" unless $?.exitstatus == 0
|
38
|
+
|
39
|
+
@options[:temps] << temp
|
40
|
+
@options[:objs] << object
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
data/lib/test65/perform_test.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Run a test script for the test65 program.
|
2
2
|
|
3
3
|
require_relative 'enclosures/utils'
|
4
|
+
require_relative 'enclosures/cc65'
|
4
5
|
require_relative 'enclosures/ca65'
|
5
6
|
require_relative 'enclosures/ld65'
|
6
7
|
require_relative 'enclosures/sim65'
|
@@ -12,6 +13,10 @@ class TestScript
|
|
12
13
|
@options = options.full_dup
|
13
14
|
@phase = :create
|
14
15
|
|
16
|
+
@options[:objs] = []
|
17
|
+
@options[:temps] = []
|
18
|
+
|
19
|
+
cc65_initialize
|
15
20
|
ca65_initialize
|
16
21
|
ld65_initialize
|
17
22
|
sim65_initialize
|
@@ -25,6 +30,10 @@ class TestScript
|
|
25
30
|
unless @options[:keep]
|
26
31
|
File.delete(@output) if File.exists?(@output)
|
27
32
|
|
33
|
+
@options[:temps].each do |file|
|
34
|
+
File.delete(file) if File.exists?(file)
|
35
|
+
end
|
36
|
+
|
28
37
|
@options[:objs].each do |file|
|
29
38
|
File.delete(file) if File.exists?(file)
|
30
39
|
end
|
data/lib/test65/process_files.rb
CHANGED
@@ -21,8 +21,11 @@ module Test65
|
|
21
21
|
def self.process_file(file)
|
22
22
|
puts file.localize_path if @options[:verbose]
|
23
23
|
|
24
|
-
case File.extname(file)
|
25
|
-
when ".
|
24
|
+
case File.extname(file).downcase
|
25
|
+
when ".c65", ".c"
|
26
|
+
script { cc65(File.basename(file)); ld65; sim65 }
|
27
|
+
|
28
|
+
when ".a65", ".asm"
|
26
29
|
script { ca65(File.basename(file)); ld65; sim65 }
|
27
30
|
|
28
31
|
when ".rb"
|
data/lib/test65/version.rb
CHANGED
data/t65/c_err.c65
ADDED
data/t65/min_fail2.rb
ADDED
data/t65/min_fail2_c.rb
ADDED
data/t65/min_fail_c.c65
ADDED
File without changes
|
data/t65/min_pass2_c.rb
ADDED
data/t65/min_pass3.asm
ADDED
data/t65/min_pass3_c.c
ADDED
data/t65/min_pass_c.c65
ADDED
data/t65/t65_pass2_c.c
ADDED
data/t65/t65_pass_c.c65
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test65
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- PeterCamilleri
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: full_dup
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/test65.rb
|
87
87
|
- lib/test65/build_file_list.rb
|
88
88
|
- lib/test65/enclosures/ca65.rb
|
89
|
+
- lib/test65/enclosures/cc65.rb
|
89
90
|
- lib/test65/enclosures/ld65.rb
|
90
91
|
- lib/test65/enclosures/sim65.rb
|
91
92
|
- lib/test65/enclosures/utils.rb
|
@@ -98,6 +99,7 @@ files:
|
|
98
99
|
- lib/test65/version.rb
|
99
100
|
- rakefile.rb
|
100
101
|
- t65/asm_err.a65
|
102
|
+
- t65/c_err.c65
|
101
103
|
- t65/callee.a65
|
102
104
|
- t65/caller.a65
|
103
105
|
- t65/foo.txt
|
@@ -105,10 +107,20 @@ files:
|
|
105
107
|
- t65/macro_err1.a65
|
106
108
|
- t65/macro_err2.a65
|
107
109
|
- t65/min_fail.a65
|
110
|
+
- t65/min_fail2.rb
|
111
|
+
- t65/min_fail2_c.rb
|
112
|
+
- t65/min_fail_c.c65
|
108
113
|
- t65/min_pass.a65
|
109
|
-
- t65/
|
114
|
+
- t65/min_pass2.rb
|
115
|
+
- t65/min_pass2_c.rb
|
116
|
+
- t65/min_pass3.asm
|
117
|
+
- t65/min_pass3_c.c
|
118
|
+
- t65/min_pass_c.c65
|
110
119
|
- t65/pass.a65
|
111
120
|
- t65/t65_min_pass.rb
|
121
|
+
- t65/t65_pass2_c.c
|
122
|
+
- t65/t65_pass_c.c65
|
123
|
+
- t65/t65_test2_cfg.asm
|
112
124
|
- t65/t65_test_cfg.a65
|
113
125
|
- t65/t65_test_macros.a65
|
114
126
|
- t65/t65_two_files.rb
|