ac6502 1.0.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.
Files changed (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/dist/components/CPU.js +1170 -0
  4. package/dist/components/CPU.js.map +1 -0
  5. package/dist/components/Cart.js +23 -0
  6. package/dist/components/Cart.js.map +1 -0
  7. package/dist/components/IO/Empty.js +19 -0
  8. package/dist/components/IO/Empty.js.map +1 -0
  9. package/dist/components/IO/GPIOAttachments/GPIOAttachment.js +71 -0
  10. package/dist/components/IO/GPIOAttachments/GPIOAttachment.js.map +1 -0
  11. package/dist/components/IO/GPIOAttachments/GPIOJoystickAttachment.js +90 -0
  12. package/dist/components/IO/GPIOAttachments/GPIOJoystickAttachment.js.map +1 -0
  13. package/dist/components/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.js +489 -0
  14. package/dist/components/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.js.map +1 -0
  15. package/dist/components/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.js +274 -0
  16. package/dist/components/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.js.map +1 -0
  17. package/dist/components/IO/GPIOCard.js +597 -0
  18. package/dist/components/IO/GPIOCard.js.map +1 -0
  19. package/dist/components/IO/InputBoard.js +19 -0
  20. package/dist/components/IO/InputBoard.js.map +1 -0
  21. package/dist/components/IO/LCDCard.js +19 -0
  22. package/dist/components/IO/LCDCard.js.map +1 -0
  23. package/dist/components/IO/RAMCard.js +63 -0
  24. package/dist/components/IO/RAMCard.js.map +1 -0
  25. package/dist/components/IO/RTCCard.js +483 -0
  26. package/dist/components/IO/RTCCard.js.map +1 -0
  27. package/dist/components/IO/SerialCard.js +282 -0
  28. package/dist/components/IO/SerialCard.js.map +1 -0
  29. package/dist/components/IO/SoundCard.js +620 -0
  30. package/dist/components/IO/SoundCard.js.map +1 -0
  31. package/dist/components/IO/StorageCard.js +428 -0
  32. package/dist/components/IO/StorageCard.js.map +1 -0
  33. package/dist/components/IO/VGACard.js +9 -0
  34. package/dist/components/IO/VGACard.js.map +1 -0
  35. package/dist/components/IO/VideoCard.js +623 -0
  36. package/dist/components/IO/VideoCard.js.map +1 -0
  37. package/dist/components/IO.js +3 -0
  38. package/dist/components/IO.js.map +1 -0
  39. package/dist/components/Machine.js +310 -0
  40. package/dist/components/Machine.js.map +1 -0
  41. package/dist/components/RAM.js +24 -0
  42. package/dist/components/RAM.js.map +1 -0
  43. package/dist/components/ROM.js +23 -0
  44. package/dist/components/ROM.js.map +1 -0
  45. package/dist/index.js +441 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/tests/CPU.test.js +1626 -0
  48. package/dist/tests/CPU.test.js.map +1 -0
  49. package/dist/tests/Cart.test.js +119 -0
  50. package/dist/tests/Cart.test.js.map +1 -0
  51. package/dist/tests/IO/GPIOAttachments/GPIOAttachment.test.js +339 -0
  52. package/dist/tests/IO/GPIOAttachments/GPIOAttachment.test.js.map +1 -0
  53. package/dist/tests/IO/GPIOAttachments/GPIOJoystickAttachment.test.js +126 -0
  54. package/dist/tests/IO/GPIOAttachments/GPIOJoystickAttachment.test.js.map +1 -0
  55. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.test.js +779 -0
  56. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.test.js.map +1 -0
  57. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.test.js +355 -0
  58. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.test.js.map +1 -0
  59. package/dist/tests/IO/GPIOCard.test.js +503 -0
  60. package/dist/tests/IO/GPIOCard.test.js.map +1 -0
  61. package/dist/tests/IO/RAMCard.test.js +229 -0
  62. package/dist/tests/IO/RAMCard.test.js.map +1 -0
  63. package/dist/tests/IO/RTCCard.test.js +177 -0
  64. package/dist/tests/IO/RTCCard.test.js.map +1 -0
  65. package/dist/tests/IO/SerialCard.test.js +423 -0
  66. package/dist/tests/IO/SerialCard.test.js.map +1 -0
  67. package/dist/tests/IO/SoundCard.test.js +528 -0
  68. package/dist/tests/IO/SoundCard.test.js.map +1 -0
  69. package/dist/tests/IO/StorageCard.test.js +647 -0
  70. package/dist/tests/IO/StorageCard.test.js.map +1 -0
  71. package/dist/tests/IO/VideoCard.test.js +549 -0
  72. package/dist/tests/IO/VideoCard.test.js.map +1 -0
  73. package/dist/tests/Machine.test.js +383 -0
  74. package/dist/tests/Machine.test.js.map +1 -0
  75. package/dist/tests/RAM.test.js +160 -0
  76. package/dist/tests/RAM.test.js.map +1 -0
  77. package/dist/tests/ROM.test.js +123 -0
  78. package/dist/tests/ROM.test.js.map +1 -0
  79. package/jest.config.cjs +9 -0
  80. package/package.json +43 -0
  81. package/src/components/CPU.ts +1371 -0
  82. package/src/components/Cart.ts +20 -0
  83. package/src/components/IO/GPIOAttachments/GPIOAttachment.ts +189 -0
  84. package/src/components/IO/GPIOAttachments/GPIOJoystickAttachment.ts +99 -0
  85. package/src/components/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.ts +465 -0
  86. package/src/components/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.ts +287 -0
  87. package/src/components/IO/GPIOCard.ts +677 -0
  88. package/src/components/IO/RAMCard.ts +68 -0
  89. package/src/components/IO/RTCCard.ts +518 -0
  90. package/src/components/IO/SerialCard.ts +335 -0
  91. package/src/components/IO/SoundCard.ts +711 -0
  92. package/src/components/IO/StorageCard.ts +473 -0
  93. package/src/components/IO/VideoCard.ts +730 -0
  94. package/src/components/IO.ts +11 -0
  95. package/src/components/Machine.ts +364 -0
  96. package/src/components/RAM.ts +23 -0
  97. package/src/components/ROM.ts +19 -0
  98. package/src/index.ts +474 -0
  99. package/src/tests/CPU.test.ts +2045 -0
  100. package/src/tests/Cart.test.ts +149 -0
  101. package/src/tests/IO/GPIOAttachments/GPIOAttachment.test.ts +413 -0
  102. package/src/tests/IO/GPIOAttachments/GPIOJoystickAttachment.test.ts +147 -0
  103. package/src/tests/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.test.ts +961 -0
  104. package/src/tests/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.test.ts +449 -0
  105. package/src/tests/IO/GPIOCard.test.ts +644 -0
  106. package/src/tests/IO/RAMCard.test.ts +284 -0
  107. package/src/tests/IO/RTCCard.test.ts +222 -0
  108. package/src/tests/IO/SerialCard.test.ts +530 -0
  109. package/src/tests/IO/SoundCard.test.ts +659 -0
  110. package/src/tests/IO/StorageCard.test.ts +787 -0
  111. package/src/tests/IO/VideoCard.test.ts +668 -0
  112. package/src/tests/Machine.test.ts +437 -0
  113. package/src/tests/RAM.test.ts +196 -0
  114. package/src/tests/ROM.test.ts +154 -0
  115. package/tsconfig.json +12 -0
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ROM_1 = require("../components/ROM");
4
+ describe('ROM', () => {
5
+ let rom;
6
+ beforeEach(() => {
7
+ rom = new ROM_1.ROM();
8
+ });
9
+ describe('Initialization', () => {
10
+ test('can initialize', () => {
11
+ expect(rom).not.toBeNull();
12
+ expect(rom).toBeInstanceOf(ROM_1.ROM);
13
+ });
14
+ test('initializes with correct size', () => {
15
+ expect(rom.data.length).toBe(ROM_1.ROM.SIZE);
16
+ expect(rom.data.length).toBe(0x8000); // 32KB
17
+ });
18
+ test('initializes all memory to zero', () => {
19
+ for (let i = 0; i < ROM_1.ROM.SIZE; i++) {
20
+ expect(rom.data[i]).toBe(0x00);
21
+ }
22
+ });
23
+ });
24
+ describe('Static Properties', () => {
25
+ test('START is 0x8000', () => {
26
+ expect(ROM_1.ROM.START).toBe(0x8000);
27
+ });
28
+ test('END is 0xFFFF', () => {
29
+ expect(ROM_1.ROM.END).toBe(0xFFFF);
30
+ });
31
+ test('CODE is 0xA000', () => {
32
+ expect(ROM_1.ROM.CODE).toBe(0xA000);
33
+ });
34
+ test('SIZE is calculated correctly', () => {
35
+ expect(ROM_1.ROM.SIZE).toBe(0x8000);
36
+ expect(ROM_1.ROM.SIZE).toBe(ROM_1.ROM.END - ROM_1.ROM.START + 1);
37
+ });
38
+ });
39
+ describe('read()', () => {
40
+ test('reads zero from uninitialized address', () => {
41
+ expect(rom.read(0x0000)).toBe(0x00);
42
+ expect(rom.read(0x4000)).toBe(0x00);
43
+ expect(rom.read(0x7FFF)).toBe(0x00);
44
+ });
45
+ test('reads data from address', () => {
46
+ rom.data[0x1234] = 0x42;
47
+ expect(rom.read(0x1234)).toBe(0x42);
48
+ });
49
+ test('reads from start address', () => {
50
+ rom.data[0x0000] = 0xFF;
51
+ expect(rom.read(0x0000)).toBe(0xFF);
52
+ });
53
+ test('reads from end address', () => {
54
+ rom.data[0x7FFF] = 0xAB;
55
+ expect(rom.read(0x7FFF)).toBe(0xAB);
56
+ });
57
+ test('reads different values from different addresses', () => {
58
+ rom.data[0x0100] = 0x11;
59
+ rom.data[0x0200] = 0x22;
60
+ rom.data[0x0300] = 0x33;
61
+ expect(rom.read(0x0100)).toBe(0x11);
62
+ expect(rom.read(0x0200)).toBe(0x22);
63
+ expect(rom.read(0x0300)).toBe(0x33);
64
+ });
65
+ });
66
+ describe('load()', () => {
67
+ test('loads data of correct size', () => {
68
+ const testData = new Array(ROM_1.ROM.SIZE).fill(0x00);
69
+ testData[0x0000] = 0xAA;
70
+ testData[0x1234] = 0xBB;
71
+ testData[0x7FFF] = 0xCC;
72
+ rom.load(testData);
73
+ expect(rom.data[0x0000]).toBe(0xAA);
74
+ expect(rom.data[0x1234]).toBe(0xBB);
75
+ expect(rom.data[0x7FFF]).toBe(0xCC);
76
+ });
77
+ test('does not load data of incorrect size (too small)', () => {
78
+ const originalData = [...rom.data];
79
+ const testData = new Array(ROM_1.ROM.SIZE - 1).fill(0xFF);
80
+ rom.load(testData);
81
+ expect(rom.data).toEqual(originalData);
82
+ });
83
+ test('does not load data of incorrect size (too large)', () => {
84
+ const originalData = [...rom.data];
85
+ const testData = new Array(ROM_1.ROM.SIZE + 1).fill(0xFF);
86
+ rom.load(testData);
87
+ expect(rom.data).toEqual(originalData);
88
+ });
89
+ test('loaded data can be read back', () => {
90
+ const testData = new Array(ROM_1.ROM.SIZE).fill(0x00);
91
+ testData[0x1000] = 0x42;
92
+ testData[0x2000] = 0x84;
93
+ testData[0x3000] = 0xC6;
94
+ rom.load(testData);
95
+ expect(rom.read(0x1000)).toBe(0x42);
96
+ expect(rom.read(0x2000)).toBe(0x84);
97
+ expect(rom.read(0x3000)).toBe(0xC6);
98
+ });
99
+ test('load replaces existing data', () => {
100
+ // Set some initial data
101
+ rom.data[0x0100] = 0xAA;
102
+ rom.data[0x0200] = 0xBB;
103
+ // Load new data
104
+ const testData = new Array(ROM_1.ROM.SIZE).fill(0x00);
105
+ testData[0x0100] = 0x11;
106
+ testData[0x0300] = 0x22;
107
+ rom.load(testData);
108
+ expect(rom.read(0x0100)).toBe(0x11);
109
+ expect(rom.read(0x0200)).toBe(0x00); // Old data replaced
110
+ expect(rom.read(0x0300)).toBe(0x22);
111
+ });
112
+ test('load with all different values', () => {
113
+ const testData = new Array(ROM_1.ROM.SIZE).fill(0).map((_, i) => i % 256);
114
+ rom.load(testData);
115
+ expect(rom.read(0x0000)).toBe(0);
116
+ expect(rom.read(0x0001)).toBe(1);
117
+ expect(rom.read(0x00FF)).toBe(255);
118
+ expect(rom.read(0x0100)).toBe(0);
119
+ expect(rom.read(0x0101)).toBe(1);
120
+ });
121
+ });
122
+ });
123
+ //# sourceMappingURL=ROM.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ROM.test.js","sourceRoot":"","sources":["../../src/tests/ROM.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ module.exports = {
2
+ preset: 'ts-jest',
3
+ testEnvironment: 'node',
4
+ testMatch: ['**/*.test.ts'],
5
+ moduleFileExtensions: ['ts', 'js', 'json'],
6
+ clearMocks: true,
7
+ collectCoverage: true,
8
+ collectCoverageFrom: ['src/**/*.ts', '!src/index.ts']
9
+ }
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "ac6502",
3
+ "version": "1.0.0",
4
+ "description": "Emulator for the A.C. Wright 6502 project",
5
+ "main": "index.js",
6
+ "bin": {
7
+ "ac6502": "dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "npx tsc",
11
+ "start": "node ./dist/index.js",
12
+ "test": "NODE_OPTIONS='--no-experimental-webstorage' jest",
13
+ "test:watch": "NODE_OPTIONS='--no-experimental-webstorage' jest --watch",
14
+ "test:coverage": "NODE_OPTIONS='--no-experimental-webstorage' jest --coverage --coverageReporters=text-summary --coverageReporters=lcov"
15
+ },
16
+ "keywords": [
17
+ "6502",
18
+ "emulator",
19
+ "8-bit",
20
+ "sdl",
21
+ "binary",
22
+ "assembly",
23
+ "typescript"
24
+ ],
25
+ "author": "A.C. Wright",
26
+ "license": "MIT",
27
+ "repository": "https://github.com/acwright/6502-Emulator",
28
+ "homepage": "https://github.com/acwright/6502-Emulator/README.md",
29
+ "type": "commonjs",
30
+ "dependencies": {
31
+ "@kmamal/sdl": "^0.11.13",
32
+ "commander": "^14.0.3",
33
+ "figlet": "^1.10.0",
34
+ "serialport": "^13.0.0"
35
+ },
36
+ "devDependencies": {
37
+ "@types/jest": "^30.0.0",
38
+ "@types/node": "^25.3.3",
39
+ "jest": "^30.2.0",
40
+ "ts-jest": "^29.4.6",
41
+ "typescript": "^5.9.3"
42
+ }
43
+ }