Initial sync from fossil repo

This commit is contained in:
Carsten Strotmann 2017-04-24 00:25:49 +02:00
parent dcf90e94d0
commit 857eedeafd
446 changed files with 106592 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.fossil

BIN
6502/Apple1/f6502.com Normal file

Binary file not shown.

843
6502/Apple1/f6502.hex Normal file
View File

@ -0,0 +1,843 @@
300: EA 4C 1D 33 EA 4C 91 33 4C 6 70 20 1B 29 0 70
: 0 70 80 7A 9E 37 0 0 A 0 A4 35 8D 34 4 26
: E0 36 1E 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
: 0 0 0 0 24 56 6F 6C 6B 73 46 6F 72 74 68 2D
: 38 33 20 33 2E 38 20 43 4F 4D 50 49 4C 45 44 20
: 30 35 61 70 72 31 33 43 53 8D FF FF B1 2C 85 3B
: AD FF FF 85 3A 18 A5 2C 69 2 85 2C B0 3 6C FF
: FF E6 2D B0 F9 6 0 0 0 9 45 4E 44 2D 54 52
: 41 43 45 35 4 A9 A5 85 31 A9 2C 85 32 A9 69 85
: 33 A9 2 85 34 4C 27 0 7 0 27 4 7 52 45 43
: 4F 56 45 52 A9 1C 68 85 3A 68 85 3B A5 3A D0 2
: C6 3B C6 3A 4C DE 1D 7 0 4A 4 4 4E 4F 4F 50
: 27 0 8 0 69 4 6 4F 52 49 47 49 4E 2B 1E 8
: 3 8 0 74 4 2 53 30 A9 1E 8 8 0 83 4 2
: 52 30 A9 1E A 8 0 8D 4 2 44 50 A9 1E C 8
: 0 97 4 6 4F 46 46 53 45 54 A9 1E E 8 0 A1
: 4 4 42 41 53 45 A9 1E 10 8 0 AF 4 6 4F 55
: 54 50 55 54 A9 1E 12 8 0 BB 4 5 49 4E 50 55
: 54 A9 1E 14 8 0 C9 4 C 45 52 52 4F 52 48 41
: 4E 44 4C 45 52 A9 1E 16 8 0 D6 4 8 56 4F 43
: 2D 4C 49 4E 4B A9 1E 18 8 0 EA 4 3 55 44 50
: A9 1E 1A 9 0 FA 4 3 53 50 40 D 5 A5 25 85
: 42 A5 26 85 43 A2 42 A5 25 38 E9 2 85 25 B0 2
: C6 26 B5 1 91 25 B5 0 A2 0 4C 24 0 9 0 5
: 5 3 53 50 21 37 5 A1 25 AA B1 25 85 26 86 25
: A2 0 4C 27 0 A 0 2F 5 3 55 50 40 4F 5 A2
: 22 4C 17 5 A 0 47 5 83 55 50 21 5E 5 A2 22
: B1 25 95 1 88 B1 25 95 0 A2 0 A0 1 A5 25 18
: 69 2 85 25 90 2 E6 26 4C 27 0 B 0 56 5 3
: 52 50 40 85 5 A2 20 4C 17 5 B 0 7D 5 83 52
: 50 21 94 5 A2 20 4C 60 5 B 0 8C 5 82 3E 52
: A2 5 A5 20 38 E9 2 85 20 B0 2 C6 21 A1 25 81
: 20 B1 25 91 20 4C 6D 5 C 0 9B 5 82 52 3E C1
: 5 A5 25 38 E9 2 85 25 B0 2 C6 26 A1 20 81 25
: B1 20 91 25 A9 2 18 65 20 85 20 90 2 E6 21 4C
: 27 0 D 0 BA 5 2 52 40 EB 5 A5 25 38 E9 2
: 85 25 B0 2 C6 26 B1 20 91 25 A1 20 4C 24 0 D
: 0 E4 5 85 52 44 52 4F 50 D4 5 D 0 1 6 4
: 45 58 49 54 16 6 A1 20 85 2C B1 20 85 2D 4C D4
: 5 E 0 D 6 5 3F 45 58 49 54 2D 6 A1 25 11
: 25 8 A5 25 18 69 2 85 25 90 2 E6 26 28 D0 D6
: 4C 27 0 E 0 23 6 7 45 58 45 43 55 54 45 51
: 6 A1 25 85 3A B1 25 85 3B A5 25 18 69 2 85 25
: 90 2 E6 26 4C 39 0 E 0 45 6 7 50 45 52 46
: 4F 52 4D DE 1D DA 6 4F 6 14 6 F 0 69 6 2
: 43 40 84 6 A1 25 85 42 B1 25 85 43 A9 0 91 25
: A1 42 4C 24 0 F 0 7D 6 2 43 21 9E 6 A1 25
: 85 42 B1 25 85 43 C8 B1 25 81 42 88 A5 25 18 69
: 4 85 25 90 2 E6 26 4C 27 0 10 0 97 6 7 43
: 54 4F 47 47 4C 45 DE 1D 34 8 82 6 6 9 43 7
: 9C 6 14 6 10 0 BC 6 1 40 DC 6 A1 25 85 42
: B1 25 85 43 B1 42 91 25 A1 42 4C 24 0 10 0 D6
: 6 1 21 F5 6 A1 25 85 42 B1 25 85 43 C8 B1 25
: 81 42 C8 B1 25 A0 1 91 42 4C AC 6 11 0 EF 6
: 2 2B 21 15 7 A1 25 85 42 B1 25 85 43 C8 B1 25
: 18 61 42 81 42 C8 B1 25 A0 1 71 42 4C 7 7 11
: 0 E 7 4 44 52 4F 50 6D 5 12 0 31 7 4 53
: 57 41 50 45 7 B1 25 AA A0 3 B1 25 85 42 8A 91
: 25 A5 42 A0 1 91 25 C8 A2 0 B1 25 85 42 A1 25
: 91 25 88 A5 42 4C 24 0 13 0 3C 7 3 44 55 50
: 72 7 A5 25 38 E9 2 85 25 B0 2 C6 26 A0 3 B1
: 25 A0 1 91 25 C8 B1 25 88 4C 24 0 13 0 6A 7
: 4 3F 44 55 50 97 7 A1 25 11 25 D0 3 4C 27 0
: 4C 72 7 14 0 8E 7 4 4F 56 45 52 AE 7 A5 25
: 38 E9 2 85 25 B0 2 C6 26 A0 4 B1 25 81 25 C8
: B1 25 A0 1 91 25 4C 27 0 15 0 A5 7 3 52 4F
: 54 D3 7 A0 3 B1 25 85 43 A0 1 B1 25 A0 3 91
: 25 A0 5 B1 25 85 42 A5 43 91 25 A0 1 A5 42 91
: 25 C8 B1 25 85 43 A1 25 91 25 A0 4 B1 25 81 25
: A5 43 91 25 A0 1 4C 27 0 16 0 CB 7 4 2D 52
: 4F 54 DE 1D D1 7 D1 7 14 6 16 0 B 8 3 4E
: 49 50 DE 1D 43 7 38 7 14 6 16 0 1C 8 5 55
: 4E 44 45 52 DE 1D 43 7 AC 7 14 6 16 0 2C 8
: 4 50 49 43 4B DE 1D DB 9 EE 10 B 5 AF 8 DA
: 6 14 6 16 0 3E 8 4 52 4F 4C 4C DE 1D 70 7
: A0 5 45 8 B 5 70 7 F9 9 BF 5 DB 9 EE 10
: B5 12 38 7 14 6 17 0 55 8 5 32 53 57 41 50
: DE 1D D1 7 A0 5 D1 7 BF 5 14 6 17 0 78 8
: 5 32 44 52 4F 50 AC 6 17 0 8E 8 4 32 44 55
: 50 DE 1D AC 7 AC 7 14 6 18 0 9A 8 1 2B B1
: 8 18 C8 A1 25 71 25 91 25 88 B1 25 A0 3 71 25
: 91 25 4C 69 5 18 0 AB 8 2 4F 52 CE 8 C8 A1
: 25 11 25 91 25 88 B1 25 A0 3 11 25 91 25 4C 69
: 5 18 0 C7 8 3 41 4E 44 EB 8 C8 A1 25 31 25
: 91 25 88 B1 25 A0 3 31 25 91 25 4C 69 5 18 0
: E3 8 3 58 4F 52 8 9 C8 A1 25 51 25 91 25 88
: B1 25 A0 3 51 25 91 25 4C 69 5 19 0 0 9 1
: 2D 23 9 C8 B1 25 38 E1 25 91 25 C8 B1 25 A0 1
: F1 25 A0 3 91 25 4C 69 5 19 0 1D 9 3 4E 4F
: 54 43 9 18 8A E1 25 81 25 8A F1 25 91 25 4C 27
: 0 19 0 3B 9 6 4E 45 47 41 54 45 5E 9 38 B0
: E3 1A 0 53 9 7 44 4E 45 47 41 54 45 6F 9 C8
: 38 8A F1 25 91 25 C8 8A F1 25 91 25 8A E1 25 81
: 25 A0 1 8A F1 25 91 25 4C 27 0 A AA A8 88 B1
: 25 99 42 0 88 10 F8 8A 18 65 25 85 25 90 2 E6
: 26 A2 0 A0 1 60 1B 0 63 9 2 44 2B AF 9 A9
: 2 20 8B 9 C8 B1 25 18 65 44 91 25 C8 B1 25 65
: 45 91 25 A1 25 65 42 81 25 A0 1 B1 25 65 43 91
: 25 4C 27 0 1C 0 A8 9 2 31 2B DD 9 A9 1 18
: 61 25 B0 3 4C 24 0 81 25 B1 25 69 0 91 25 4C
: 27 0 1C 0 D6 9 2 32 2B FB 9 A9 2 D0 E0 1C
: 0 F4 9 2 33 2B 8 A A9 3 D0 D3 E A A9 4
: D0 CD 14 A A9 6 D0 C7 1D 0 1 A 2 31 2D 21
: A 38 A1 25 E9 1 90 3 4C 24 0 81 25 B1 25 E9
: 0 91 25 4C 27 0 1D 0 1A A 2 32 2D 3F A 18
: 90 E0 1D 0 38 A 4 54 52 55 45 2B 1E FF FF 1D
: 0 44 A 5 46 41 4C 53 45 2B 1E 0 0 1D 0 51
: A 22 2D 31 4B A 1D 0 5F A 21 30 59 A 1D 0
: 68 A 1 31 2B 1E 1 0 1D 0 70 A 1 32 2B 1E
: 2 0 1D 0 7A A 1 33 2B 1E 3 0 1D 0 84 A
: 1 34 2B 1E 4 0 1D 0 8E A 2 4F 4E DE 1D 4B
: A 43 7 F3 6 14 6 1D 0 98 A 3 4F 46 46 DE
: 1D 59 A 43 7 F3 6 14 6 1E 0 A9 A 84 43 4C
: 49 54 C4 A A5 25 38 E9 2 85 25 B0 2 C6 26 A1
: 2C 81 25 8A 91 25 E6 2C D0 2 E6 2D 4C 27 0 1E
: 0 BB A 83 4C 49 54 E9 A A5 25 38 E9 2 85 25
: B0 2 C6 26 B1 2C 91 25 A1 2C 81 25 A5 2C 18 69
: 2 85 2C 90 2 E6 2D 4C 27 0 1E 0 E1 A C7 4C
: 49 54 45 52 41 4C DE 1D 70 7 E7 A 0 FF E9 8
: 3E E A 0 FA 13 E7 A CF 13 14 6 FA 13 C2 A
: E2 13 14 6 1F 0 C B 2 30 3C 3D B B1 25 10
: 3 A9 FF 24 8A 91 25 4C 24 0 1F 0 36 B 2 30
: 3D 53 B A1 25 11 25 F0 E8 D0 E9 1F 0 4C B 7
: 55 57 49 54 48 49 4E 69 B A9 2 20 8B 9 A0 1
: A1 25 C5 42 B1 25 E5 43 B0 A A1 25 C5 44 B1 25
: E5 45 B0 BD 4C 44 B 20 0 5D B 1 3C 8F B A1
: 25 85 42 B1 25 85 43 A5 25 18 69 2 85 25 90 2
: E6 26 A5 43 51 25 30 95 A1 25 C5 42 B1 25 E5 43
: 4C 3F B 20 0 89 B 2 55 3C BC B A1 25 85 42
: B1 25 85 43 A5 25 18 69 2 85 25 90 2 E6 26 A1
: 25 C5 42 B1 25 E5 43 B0 3 4C 41 B 4C 44 B DE
: 1D E7 A 0 80 E9 8 10 C 14 6 21 0 B5 B 1
: 3E DE 1D 43 7 8D B 14 6 21 0 ED B 2 30 3E
: DE 1D 5C 9 DF B 14 6 21 0 FB B 3 30 3C 3E
: DE 1D 51 B 41 9 14 6 21 0 A C 2 55 3E DE
: 1D 43 7 BA B 14 6 21 0 1A C 1 3D DE 1D 21
: 9 51 B 14 6 21 0 29 C 3 44 30 3D DE 1D CC
: 8 51 B 14 6 21 0 37 C 2 44 3D DE 1D 6D 9
: AD 9 3D C 14 6 21 0 47 C 2 44 3C DE 1D D1
: 7 A1 8 21 9 3E E C 0 F1 B 22 8 22 8 1C
: E 6 0 96 8 BA B 14 6 DE 1D 9 6 3E E 4
: 0 43 7 38 7 14 6 22 0 58 C 3 4D 49 4E DE
: 1D A1 8 F1 B 79 C 22 0 89 C 3 4D 41 58 DE
: 1D A1 8 8D B 79 C 22 0 99 C 4 55 4D 41 58
: DE 1D A1 8 BA B 79 C 22 0 A9 C 4 55 4D 49
: 4E DE 1D A1 8 1F C 79 C 22 0 BA C 6 45 58
: 54 45 4E 44 DE 1D 70 7 DF B 14 6 22 0 CB C
: 4 44 41 42 53 DE 1D D4 C 3E E 4 0 6D 9 14
: 6 22 0 DE C 3 41 42 53 DE 1D D4 C 3E E 4
: 0 5C 9 14 6 DE 1D 9 6 BF 5 F9 9 70 7 A0
: 5 D1 7 A0 5 43 7 A0 5 A0 5 14 6 23 0 F3
: C 83 28 44 4F DE 1D AC 7 21 9 5 D 23 0 1F
: D 84 28 3F 44 4F DE 1D AC 7 21 9 95 7 3E E
: 4 0 5 D BF 5 70 7 DA 6 AF 8 A0 5 38 7
: 14 6 23 0 2F D 6 42 4F 55 4E 44 53 DE 1D AC
: 7 AF 8 43 7 14 6 23 0 54 D 87 45 4E 44 4C
: 4F 4F 50 75 D A9 6 4C D6 5 24 0 69 D 85 28
: 4C 4F 4F 50 86 D 18 A9 1 61 20 81 20 90 B B1
: 20 69 0 91 20 90 3 4C 27 0 A0 5 B1 20 85 2D
: 88 B1 20 85 2C A0 1 4C 27 0 24 0 7C D 86 28
: 2B 4C 4F 4F 50 B7 D 18 A1 25 61 20 81 20 B1 25
: 71 20 91 20 6A 51 25 8 A5 25 18 69 2 85 25 90
: 2 E6 26 28 10 C4 4C 27 0 25 0 AC D 81 49 E1
: D A0 0 A5 25 38 E9 2 85 25 B0 2 C6 26 18 B1
: 20 C8 C8 71 20 81 25 88 B1 20 C8 C8 71 20 A0 1
: 91 25 4C 27 0 25 0 DB D 81 4A D E A0 6 D0
: D2 26 0 7 E 86 42 52 41 4E 43 48 1E E 18 A5
: 2C 61 2C 85 42 A5 2D 71 2C 85 2D A5 42 85 2C 4C
: 27 0 26 0 13 E 87 3F 42 52 41 4E 43 48 40 E
: A1 25 11 25 8 A5 25 18 69 2 85 25 90 2 E6 26
: 28 F0 CB 4C FC A 27 0 34 E 5 3E 4D 41 52 4B
: DE 1D 9B 13 59 A CF 13 14 6 27 0 58 E 8 3E
: 52 45 53 4F 4C 56 45 DE 1D 9B 13 AC 7 21 9 43
: 7 F3 6 14 6 27 0 6C E 5 3C 4D 41 52 4B DE
: 1D 9B 13 14 6 27 0 87 E 8 3C 52 45 53 4F 4C
: 56 45 DE 1D 9B 13 21 9 CF 13 14 6 27 0 97 E
: 6 3F 50 41 49 52 53 DE 1D 21 9 3A 26 C 55 4E
: 53 54 52 55 43 54 55 52 45 44 14 6 C9 0 10 6
: 48 A9 FF 4C D9 E 48 A9 0 AA A5 25 38 E9 2 85
: 25 B0 2 C6 26 8A A0 1 91 25 68 A2 0 4C 24 0
: 28 0 AE E 5 43 41 53 45 3F FC E A9 1 20 8B
: 9 A5 42 C1 25 D0 9 A5 43 D1 25 D0 3 4C 41 B
: 8A 4C D6 E 29 0 F2 E C2 49 46 DE 1D FA 13 3E
: E 60 E 74 A 14 6 29 0 16 F C4 54 48 45 4E
: DE 1D F9 C 74 A B7 E 77 E 14 6 29 0 29 F
: C4 45 4C 53 45 DE 1D 74 A B7 E FA 13 1C E 60
: E 43 7 77 E 4B A 14 6 29 0 3E F C5 42 45
: 47 49 4E DE 1D 8F E 7E A 14 6 29 0 5B F C5
: 57 48 49 4C 45 DE 1D 7E A B7 E 7E A FA 13 3E
: E 60 E E7 A FE FF 80 8 14 6 DE 1D A2 E 70
: 7 E7 A FE FF 2D C 3E E A 0 38 7 77 E 1C
: E EE FF 14 6 29 0 6D F C6 52 45 50 45 41 54
: DE 1D 7E A B7 E FA 13 1C E 8B F 14 6 29 0
: A7 F C5 55 4E 54 49 4C DE 1D 7E A B7 E FA 13
: 3E E 8B F 14 6 2A 0 C0 F C2 44 4F DE 1D FA
: 13 25 D 60 E 88 A 14 6 2A 0 D8 F C3 3F 44
: 4F DE 1D FA 13 36 D 60 E 88 A 14 6 0 2A 0
: EB F C4 4C 4F 4F 50 DE 1D 88 A B7 E FA 13 84
: D FA 13 73 D 77 E 14 6 2A 0 0 10 C5 2B 4C
: 4F 4F 50 DE 1D 88 A B7 E FA 13 B5 D FA 13 73
: D 77 E 14 6 2A 0 1B 10 85 4C 45 41 56 45 DE
: 1D 73 D BF 5 3D A 70 7 DA 6 AF 8 A0 5 14
: 6 2B 0 37 10 3 55 4D 2A 5B 10 B1 25 85 42 A1
: 25 85 43 C8 86 44 86 45 A2 10 6 45 26 44 26 43
: 26 42 90 17 18 B1 25 65 45 85 45 C8 B1 25 88 65
: 44 85 44 90 6 E6 43 D0 2 E6 42 CA D0 DC A5 45
: 91 25 C8 A5 44 91 25 A0 1 A5 42 91 25 A5 43 81
: 25 4C 27 0 2C 0 53 10 2 4D 2A DE 1D 70 7 DF
: B 70 7 A0 5 3E E 4 0 5C 9 43 7 70 7 DF
: B 3E E A 0 5C 9 BF 5 41 9 A0 5 59 10 BF
: 5 3E E 4 0 6D 9 14 6 2C 0 A6 10 1 2A DE
: 1D 59 10 38 7 14 6 2C 0 DB 10 2 32 2A F0 10
: A1 25 A 81 25 B1 25 2A 91 25 4C 27 0 DE 1D 70
: 7 AF 8 14 6 DE 1D 4B A 3A 26 11 44 49 56 49
: 53 49 4F 4E 20 4F 56 45 52 46 4C 4F 57 14 6 2D
: 0 E9 10 6 55 4D 2F 4D 4F 44 2C 11 A1 25 85 47
: B1 25 85 46 A5 25 18 69 2 85 25 90 2 E6 26 A1
: 25 85 43 B1 25 85 42 C8 B1 25 85 45 C8 B1 25 85
: 44 A2 11 18 66 48 38 A5 43 E5 47 A8 A5 42 E5 46
: B0 2 26 48 90 4 85 42 84 43 26 45 26 44 26 43
: 26 42 CA D0 DF A0 1 66 42 66 43 90 7 20 56 4
: 5 11 14 6 A5 44 91 25 C8 A5 43 91 25 C8 A5 42
: 91 25 A0 1 A5 45 4C 24 0 2F 0 21 11 5 4D 2F
: 4D 4F 44 DE 1D 70 7 A0 5 F9 C AC 7 DF B 3E
: E 8 0 34 8 AF 8 43 7 2A 11 E9 5 DF B 3E
: E 14 0 5C 9 AC 7 3E E C 0 43 7 E9 5 AF
: 8 43 7 1F A 9 6 14 6 2F 0 9B 11 2 32 2F
: E2 11 B1 25 A B1 25 6A 91 25 A1 25 6A 4C 24 0
: 30 0 DB 11 4 2F 4D 4F 44 DE 1D A0 5 D4 C BF
: 5 A3 11 14 6 30 0 F2 11 1 2F DE 1D F9 11 22
: 8 14 6 30 0 7 12 3 4D 4F 44 DE 1D F9 11 38
: 7 14 6 30 0 15 12 5 2A 2F 4D 4F 44 DE 1D A0
: 5 AB 10 BF 5 A3 11 14 6 30 0 25 12 2 2A 2F
: DE 1D 2D 12 22 8 14 6 30 0 3B 12 5 55 2F 4D
: 4F 44 DE 1D 59 A 43 7 2A 11 14 6 30 0 4A 12
: 6 55 44 2F 4D 4F 44 DE 1D A0 5 59 A E9 5 2A
: 11 BF 5 43 7 A0 5 2A 11 BF 5 14 6 31 0 5E
: 12 5 43 4D 4F 56 45 89 12 A9 3 20 8B 9 88 C4
: 42 D0 9 C6 43 10 5 A0 1 4C 27 0 B1 46 91 44
: C8 D0 EC E6 47 E6 45 4C 8F 12 32 0 7F 12 6 43
: 4D 4F 56 45 3E B7 12 A9 3 20 8B 9 18 A5 43 65
: 45 85 45 18 A5 43 65 47 85 47 E6 43 A4 42 18 90
: 5 88 B1 46 91 44 98 D0 F8 C6 45 C6 47 C6 43 D0
: F0 A0 1 4C 27 0 32 0 AC 12 4 4D 4F 56 45 DE
: 1D A0 5 A1 8 BA B 3E E 8 0 BF 5 B5 12 14
: 6 BF 5 87 12 14 6 33 0 E8 12 5 50 4C 41 43
: 45 DE 1D AC 7 A0 5 D1 7 AC 7 DB 9 BF 5 EF
: 12 9C 6 14 6 33 0 9 13 5 43 4F 55 4E 54 31
: 13 A1 25 85 42 18 69 1 81 25 B1 25 85 43 69 0
: 91 25 A5 25 38 E9 2 85 25 B0 2 C6 26 4C 8C 6
: 33 0 27 13 5 45 52 41 53 45 DE 1D 59 A 6B 13
: 14 6 34 0 52 13 4 46 49 4C 4C 6D 13 A9 3 20
: 8B 9 88 A5 42 A6 45 F0 A 91 46 C8 D0 FB E6 47
: CA D0 F6 A6 44 F0 6 91 46 C8 CA D0 FA A0 1 4C
: 27 0 35 0 64 13 4 48 45 52 45 DE 1D 9C 4 DA
: 6 14 6 35 0 94 13 3 50 41 44 DE 1D 9B 13 E7
: A 42 0 AF 8 14 6 35 0 A5 13 5 41 4C 4C 4F
: 54 DE 1D 9C 4 13 7 14 6 35 0 B9 13 1 2C DE
: 1D 9B 13 F3 6 7E A C1 13 14 6 35 0 CB 13 2
: 43 2C DE 1D 9B 13 9C 6 74 A C1 13 14 6 35 0
: DD 13 87 43 4F 4D 50 49 4C 45 DE 1D BF 5 70 7
: F9 9 A0 5 DA 6 CF 13 14 6 36 0 F0 13 4 23
: 54 49 42 A9 1C 0 0 36 0 C 14 4 3E 54 49 42
: A9 1C 0 1 36 0 19 14 3 3E 49 4E A9 1C 0 0
: 36 0 26 14 3 42 4C 4B A9 1C 0 0 36 0 32 14
: 4 53 50 41 4E A9 1C 0 0 36 0 3E 14 3 54 49
: 42 DE 1D 20 14 DA 6 14 6 36 0 4B 14 5 51 55
: 45 52 59 DE 1D 51 14 E7 A 50 0 13 32 45 14 DA
: 6 13 14 F3 6 2C 14 AF A 38 14 AF A 14 6 37
: 0 5B 14 4 53 43 41 4E DE 1D A0 5 70 7 3E E
: 1A 0 AC 7 82 6 E9 5 21 9 3E E E 0 1F A
: 43 7 DB 9 43 7 1C E E4 FF 9 6 14 6 37 0
: 81 14 4 53 4B 49 50 DE 1D A0 5 70 7 3E E 1A
: 0 AC 7 82 6 E9 5 2D C 3E E E 0 1F A 43
: 7 DB 9 43 7 1C E E4 FF 9 6 14 6 37 0 B0
: 14 7 2F 53 54 52 49 4E 47 DE 1D AC 7 C1 C D1
: 7 AC 7 AF 8 12 8 21 9 14 6 C9 61 90 7 C9
: 7B B0 3 38 E9 20 60 38 0 DF 14 7 43 41 50 49
: 54 41 4C 15 15 A1 25 20 FB 14 81 25 4C 27 0 39
: 0 9 15 A 43 41 50 49 54 41 4C 49 5A 45 30 15
: A1 25 85 42 B1 25 85 43 A1 42 85 44 88 C4 44 D0
: 5 A0 1 4C 27 0 C8 B1 42 20 FB 14 91 42 4C 3D
: 15 53 15 86 48 A0 3 B1 25 99 42 0 88 10 F8 A0
: 1 18 AD 2E 14 65 44 85 44 AD 2F 14 65 45 85 45
: 38 A5 42 ED 2E 14 85 42 A5 43 ED 2F 14 85 43 B0
: D A1 25 8D 2E 14 B1 25 8D 2F 14 4C E5 15 A0 4
: A5 42 5 43 F0 3D A1 44 D1 25 D0 11 E6 44 D0 2
: E6 45 A5 42 D0 2 C6 43 C6 42 4C 90 15 A5 44 85
: 46 A5 45 85 47 A1 44 D1 25 8 E6 44 D0 2 E6 45
: A5 42 D0 2 C6 43 C6 42 28 F0 8 E6 48 A5 42 5
: 43 D0 E2 38 A0 2 A5 44 F1 25 8D 2E 14 C8 A5 45
: F1 25 8D 2F 14 18 A9 4 65 25 85 25 90 2 E6 26
: A0 C B1 22 81 25 85 42 C8 B1 22 A0 1 91 25 85
: 43 88 A5 48 91 42 B1 46 C8 C6 48 10 F7 A9 20 91
: 42 A0 1 4C 27 0 3D 0 21 15 6 53 4F 55 52 43
: 45 DE 1D 38 14 DA 6 95 7 3E E 8 0 8 2C C0
: 35 14 6 51 14 13 14 DA 6 14 6 3D 0 18 16 4
: 57 4F 52 44 DE 1D 21 16 51 15 14 6 3D 0 3D 16
: 5 50 41 52 53 45 DE 1D A0 5 21 16 2C 14 DA 6
: E9 14 AC 7 43 7 BF 5 88 14 A0 5 AC 7 21 9
: 70 7 BF 5 10 C 21 9 2C 14 13 7 14 6 3D 0
: 4E 16 4 4E 41 4D 45 DE 1D 99 26 44 16 2E 15 14
: 6 14 6 3E 0 80 16 5 53 54 41 54 45 A9 1C 0
: 0 3E 0 95 16 45 41 53 43 49 49 DE 1D 99 26 44
: 16 DB 9 82 6 9D 16 DA 6 3E E 4 0 16 B 14
: 6 3E 0 A3 16 2 2C 22 DE 1D E7 A 22 0 56 16
: 9B 13 AC 7 DB 9 C1 13 11 13 14 6 3E 0 C3 16
: 84 22 4C 49 54 DE 1D BF 5 BF 5 34 8 2F 13 AF
: 8 A0 5 A0 5 14 6 3E 0 DE 16 82 28 22 DE 1D
: E5 16 14 6 3E 0 F9 16 C1 22 DE 1D FA 13 FE 16
: C8 16 14 6 3F 0 6 17 83 28 2E 22 DE 1D E5 16
: 2F 13 5D 31 14 6 3F 0 16 17 C2 2E 22 DE 1D FA
: 13 1C 17 C8 16 14 6 3F 0 28 17 41 28 DE 1D E7
: A 29 0 56 16 96 8 14 6 3F 0 39 17 42 2E 28
: DE 1D E7 A 29 0 56 16 5D 31 14 6 3F 0 4B 17
: 41 5C DE 1D 2C 14 DA 6 63 28 B 12 DB 9 63 28
: DF 10 2C 14 F3 6 14 6 3F 0 5E 17 42 5C 5C DE
: 1D C0 35 2C 14 F3 6 14 6 3F 0 7A 17 6 5C 4E
: 45 45 44 53 DE 1D 87 16 65 21 22 8 3E E 4 0
: 62 17 14 6 3F 0 8B 17 3 48 45 58 DE 1D E7 A
: 10 0 B6 4 F3 6 14 6 3F 0 A6 17 7 44 45 43
: 49 4D 41 4C DE 1D E7 A A 0 B6 4 F3 6 14 6
: 40 0 BA 17 6 44 49 47 49 54 3F DE 1D E7 A 30
: 0 21 9 70 7 E7 A 9 0 1F C 3E E 14 0 E7
: A 7 0 21 9 70 7 E7 A 9 0 1F C 3E E E
: 0 B6 4 DA 6 AC 7 1F C 95 7 2B 6 38 7 59
: A 14 6 40 0 D2 17 A 41 43 43 55 4D 55 4C 41
: 54 45 DE 1D 43 7 A0 5 43 7 B6 4 DA 6 59 10
: 38 7 D1 7 B6 4 DA 6 59 10 AD 9 BF 5 14 6
: 40 0 15 18 7 43 4F 4E 56 45 52 54 DE 1D DB 9
: 2F 13 DB 17 3E E 8 0 22 18 1C E F4 FF 1F A
: 14 6 DE 1D 3A 19 DA 6 51 B 14 6 DE 1D 2F 13
: 4B A 3A 19 13 7 14 6 DE 1D 1F A 2F 13 14 6
: 41 0 42 18 3 44 50 4C A9 1C FF FF DE 1D 3E E
: C 0 9 6 96 8 38 7 9 6 59 A 14 6 DE 1D
: 3E E 20 0 9 6 38 7 BF 5 3E E 4 0 6D 9
: D1 7 38 7 88 18 DA 6 DB 9 95 7 2B 6 38 7
: 4B A 14 6 DE 1D E7 A 26 0 FA E 3E E A 0
: E7 A A 0 4B A 14 6 E7 A 24 0 FA E 3E E
: A 0 E7 A 10 0 4B A 14 6 E7 A 48 0 FA E
: 3E E A 0 E7 A 10 0 4B A 14 6 E7 A 25 0
: FA E 3E E 8 0 7E A 4B A 14 6 59 A 14 6
: DE 1D E7 A 2C 0 AC 7 2D C 43 7 E7 A 2E 0
: 2D C CC 8 14 6 DE 1D 88 18 DA 6 4B A 2D C
: 2B 6 74 A 88 18 13 7 14 6 A9 1C 0 0 43 0
: 82 18 7 4E 55 4D 42 45 52 3F DE 1D B6 4 66 24
: 70 7 2F 13 3A 19 F3 6 88 18 9D A 59 A A0 5
: E7 A 0 0 E7 A 0 0 D1 7 62 18 8C 18 6C 18
: E7 A 2D 0 FA E 3E E E 0 9 6 4B A A0 5
: 62 18 8C 18 6C 18 C4 18 3E E C 0 B6 4 F3 6
: 62 18 8C 18 6C 18 DB 17 51 B 8C 18 22 18 26 19
: 62 18 9E 18 6C 18 DB 17 51 B 3E E F0 FF 78 18
: 10 19 51 B 8C 18 88 18 AF A 62 18 9E 18 6C 18
: 1C E D4 FF 14 6 43 0 40 19 6 4E 55 4D 42 45
: 52 DE 1D 4A 19 95 7 51 B 3A 26 1 3F DF B 3E
: E 4 0 D4 C 14 6 44 0 C8 19 4 4C 41 53 54
: A9 1C 0 0 DE 1D F0 19 DA 6 95 7 14 6 44 0
: E9 19 4 48 49 44 45 DE 1D F4 19 3E E C 0 3D
: A DA 6 23 1F DA 6 F3 6 14 6 44 0 0 1A 6
: 52 45 56 45 41 4C DE 1D F4 19 3E E A 0 3D A
: 23 1F DA 6 F3 6 14 6 44 0 1D 1A C9 52 45 43
: 55 52 53 49 56 45 DE 1D 26 1A 14 6 DE 1D F4 19
: 3E E C 0 34 8 82 6 CC 8 AC 7 9C 6 38 7
: 14 6 44 0 3A 1A 9 49 4D 4D 45 44 49 41 54 45
: DE 1D E7 A 40 0 4C 1A 14 6 44 0 64 1A 8 52
: 45 53 54 52 49 43 54 DE 1D E7 A 80 0 4C 1A 14
: 6 45 0 7C 1A A 43 4C 45 41 52 53 54 41 43 4B
: A2 1A A0 8 B1 22 85 25 C8 B1 22 85 26 A0 1 4C
: 27 0 45 0 93 1A 6 48 41 4C 4C 4F 54 DE 1D 88
: 4 DA 6 AC 7 21 9 43 7 B 5 F9 9 70 7 D1
: 7 21 9 70 7 88 4 F3 6 7E A 45 8 AC 7 21
: 9 EF 12 A0 1A 88 4 F3 6 14 6 45 0 B4 1A 4
: 48 45 41 50 DE 1D 88 4 DA 6 12 A 14 6 45 0
: ED 1A 5 48 45 41 50 3F DE 1D F4 1A 4D 5 67 B
: 14 6 DE 1D 70 7 9B 13 AC 7 21 9 70 7 BD 1A
: F4 1A 43 7 87 12 F4 1A AC 7 21 9 F0 19 13 7
: 26 1A 14 6 A5 20 38 E9 2 85 20 B0 2 C6 21 A5
: 2D 91 20 A5 2C 81 20 18 A1 3A 69 3 85 2C 8A 71
: 3A 85 2D A9 2 18 65 3A 48 8A 65 3B 4C D9 E DE
: 1D BF 5 F0 19 DA 6 66 1D F3 6 14 6 46 0 0
: 1B C5 44 4F 45 53 3E DE 1D FA 13 5F 1B E7 A 4C
: 0 E2 13 FA 13 34 1B 14 6 DE 1D 70 7 E7 A FF
: 0 E9 8 E7 A FF 0 2D C 21 9 14 6 DE 1D 9B
: 13 E7 A FF 0 E9 8 E7 A FF 0 2D C 3E E 1C
: 0 70 7 70 7 DB 9 9B 13 AC 7 21 9 DB 9 B5
: 12 74 A F0 19 13 7 74 A C1 13 14 6 47 0 6F
: 1B 5 3F 48 45 41 44 A9 1C 0 0 47 0 CF 1B 1
: 7C DE 1D D7 1B DA 6 2B 6 4B A D7 1B F3 6 14
: 6 48 0 DD 1B 7 57 41 52 4E 49 4E 47 A9 1C 0
: 0 DE 1D FD 1B DA 6 2B 6 F0 19 DA 6 23 1F DA
: 6 A9 20 22 8 3E E 16 0 EB 26 F0 19 DA 6 98
: 1D 1C 17 7 45 58 49 53 54 53 20 F0 30 14 6 48
: 0 F3 1B 6 43 52 45 41 54 45 DE 1D 9B 13 38 14
: DA 6 CF 13 23 1F DA 6 DA 6 CF 13 87 16 82 6
: 70 7 74 A E7 A 20 0 67 B 41 9 3A 26 C 49
: 4E 56 41 4C 49 44 20 4E 41 4D 45 9B 13 F0 19 F3
: 6 DB 9 C1 13 1 1C D7 1B DA 6 3E E 20 0 74
: A D7 1B 13 7 70 7 89 1B CF 13 12 1B E7 A 20
: 0 4C 1A 89 1B 9C 4 F3 6 1C E 6 0 9D 1B 38
: 7 26 1A 59 A CF 13 5F 1B 4C 53 1B AE 1C A1 25
: 85 46 B1 25 85 47 A5 25 18 69 2 85 25 90 2 E6
: 26 A1 25 85 44 B1 25 85 45 5 44 D0 3 4C 44 B
: B1 44 91 25 85 43 A1 44 81 25 85 42 5 43 D0 3
: 4C 27 0 A5 42 18 69 2 85 42 90 2 E6 43 A1 42
: 48 38 29 1F 65 42 85 42 90 2 E6 43 68 29 20 F0
: A B1 42 48 A1 42 85 42 68 85 43 A5 42 C5 46 D0
: B0 A5 43 C5 47 D0 AA 4C FB 9 4A 0 31 1C 5 3E
: 4E 41 4D 45 DE 1D F5 4 DA 6 70 7 3E E 1C 0
: A1 8 92 A 21 9 43 7 AC 1C 95 7 3E E 8 0
: 12 8 96 8 14 6 1C E E0 FF 22 8 14 6 DE 1D
: 2F 13 E7 A 1F 0 E9 8 AF 8 14 6 4A 0 1C 1D
: 5 4E 41 4D 45 3E DE 1D 70 7 4E 1D 43 7 82 6
: E7 A 20 0 E9 8 3E E 4 0 DA 6 14 6 4A 0
: 5E 1D 5 3E 42 4F 44 59 DE 1D F9 9 14 6 4A 0
: 80 1D 5 2E 4E 41 4D 45 DE 1D 95 7 3E E 1C 0
: 70 7 8 1B 3E E 6 0 1C 17 1 7C 2F 13 E7 A
: 1F 0 E9 8 5D 31 1C E 8 0 1C 17 3 3F 3F 3F
: EB 26 14 6 4B 0 90 1D 1 3A DE 1D 3A 1C 7 1A
: 23 1F DA 6 33 1F F3 6 FE 22 59 A 5F 1B A5 20
: 38 E9 2 85 20 B0 2 C6 21 A5 2C 81 20 A5 2D 91
: 20 A5 3A 18 69 2 85 2C 8A 65 3B 85 2D 4C 27 0
: 4B 0 C6 1D C1 3B DE 1D 59 A B7 E FA 13 14 6
: E8 22 26 1A 14 6 4B 0 2 1E 8 43 4F 4E 53 54
: 41 4E 54 DE 1D 3A 1C CF 13 5F 1B A5 25 38 E9 2
: 85 25 B0 2 C6 26 A0 2 B1 3A 81 25 C8 B1 3A A0
: 1 91 25 4C 27 0 4B 0 18 1E 8 56 41 52 49 41
: 42 4C 45 DE 1D 3A 1C 7E A C1 13 14 6 4C 0 48
: 1E 6 55 41 4C 4C 4F 54 DE 1D 70 7 0 5 DA 6
: AF 8 E7 A FF 0 1F C 3A 26 D 55 53 45 52 41
: 52 45 41 20 46 55 4C 4C 0 5 DA 6 43 7 0 5
: 13 7 14 6 4C 0 5F 1E 4 55 53 45 52 DE 1D 3A
: 1C 7E A 68 1E E2 13 5F 1B A5 25 38 E9 2 85 25
: B0 2 C6 26 A0 2 B1 3A 18 65 22 81 25 8A C8 65
: 23 A0 1 91 25 4C 27 0 4C 0 96 1E 5 41 4C 49
: 41 53 DE 1D 3A 1C F0 19 DA 6 70 7 82 6 E7 A
: 20 0 E9 8 3E E C 0 E7 A FE FF C1 13 1C E
: 8 0 E7 A 20 0 4C 1A 4E 1D F3 6 14 6 4D 0
: CA 1E 2 56 50 A9 1C 0 0 0 0 0 0 0 0 0
: 0 0 0 0 0 0 0 4D 0 0 1F 7 43 55 52 52
: 45 4E 54 A9 1C 0 0 4D 0 19 1F 7 43 4F 4E 54
: 45 58 54 DE 1D 5 1F 70 7 DA 6 AF 8 F9 9 14
: 6 DE 1D 5 1F F9 9 33 1F 14 6 4D 0 29 1F 4
: 41 4C 53 4F DE 1D 5 1F DA 6 E7 A A 0 F1 B
: 54 26 15 56 4F 43 41 42 55 4C 41 52 59 20 53 54
: 41 43 4B 20 46 55 4C 4C 33 1F DA 6 7E A 5 1F
: 13 7 33 1F F3 6 14 6 4D 0 4D 1F 4 54 4F 53
: 53 DE 1D E7 A FE FF 5 1F 13 7 14 6 4E 0 8A
: 1F A 56 4F 43 41 42 55 4C 41 52 59 DE 1D 3A 1C
: 59 A CF 13 59 A CF 13 9B 13 F5 4 DA 6 CF 13
: F5 4 F3 6 5F 1B 4C 34 1B 33 1F F3 6 14 6 4E
: 0 9F 1F 5 46 4F 52 54 48 C6 1F 0 0 CE 36 0
: 0 4E 0 D1 1F 4 4F 4E 4C 59 F4 1F 0 0 5D 32
: DF 1F 5F 1B 4C 34 1B 59 A 5 1F F3 6 33 1F F3
: 6 54 1F 14 6 4E 0 E3 1F 9 4F 4E 4C 59 46 4F
: 52 54 48 DE 1D EA 1F D9 1F 54 1F 2F 20 14 6 4F
: 0 7 20 B 44 45 46 49 4E 49 54 49 4F 4E 53 DE
: 1D 33 1F DA 6 23 1F F3 6 14 6 DE 1D DA 6 3D
: A 24 1D 98 1D 14 6 4F 0 21 20 5 4F 52 44 45
: 52 DE 1D 41 1F 25 D E 0 DF D 3B 20 E7 A FE
: FF B5 D 73 D 7E A FE 26 23 1F 3B 20 14 6 4F
: 0 49 20 5 57 4F 52 44 53 DE 1D 33 1F DA 6 DA
: 6 70 7 D8 30 51 B E9 8 3E E 10 0 F0 30 70
: 7 F9 9 98 1D EB 26 1C E E6 FF 38 7 14 6 50
: 0 71 20 5 28 46 49 4E 44 AB 20 A0 3 B1 25 99
: 42 0 88 10 F8 A1 44 29 1F 85 46 A0 0 B1 42 AA
: C8 B1 42 85 43 86 42 5 42 D0 7 A0 1 A2 0 4C
: 44 B C8 B1 42 29 1F C5 46 D0 E0 18 A9 2 65 42
: 85 47 A9 0 65 43 85 48 A4 46 B1 44 D1 47 D0 CB
: 88 D0 F7 A0 3 A5 48 91 25 88 A5 47 91 25 88 A2
: 0 4C 41 B 6 21 A1 25 85 42 B1 25 85 43 A1 42
: 85 44 29 1F 38 65 42 85 42 90 2 E6 43 A5 44 29
: 20 D0 9 A5 42 81 25 A5 43 4C 32 21 A1 42 81 25
: B1 42 91 25 A5 25 38 E9 2 85 25 B0 2 C6 26 A5
: 44 10 1 C8 A 30 5 98 49 FF A8 C8 98 81 25 10
: 3 A9 FF 24 8A A0 1 91 25 4C 27 0 54 0 A1 20
: 4 46 49 4E 44 DE 1D 33 1F 70 7 DA 6 AC 7 3D
: A DA 6 2D C 3E E 4 0 3D A 34 8 DA 6 A9
: 20 3E E 8 0 22 8 4 21 14 6 AC 7 5 1F F9
: 9 1F C 3E E A 0 43 7 3D A 1C E DE FF 22
: 8 59 A 14 6 54 0 5E 21 1 27 DE 1D 87 16 65
: 21 51 B 3A 26 5 57 48 41 54 3F 14 6 54 0 A7
: 21 C9 5B 43 4F 4D 50 49 4C 45 5D DE 1D AB 21 CF
: 13 14 6 54 0 BF 21 C3 5B 27 5D DE 1D AB 21 16
: B 14 6 54 0 D5 21 B 4E 55 4C 4C 53 54 52 49
: 4E 47 3F DE 1D 70 7 82 6 51 B 70 7 3E E 4
: 0 22 8 14 6 C8 18 B1 3A 69 2 85 2C C8 B1 3A
: 69 0 85 2D A0 1 4C 27 0 55 0 E5 21 A 3E 49
: 4E 54 45 52 50 52 45 54 5 22 6D 22 56 0 1B 22
: 8 4E 4F 54 46 4F 55 4E 44 32 23 4F 22 56 0 2E
: 22 D 4E 4F 2E 45 58 54 45 4E 53 49 4F 4E 53 DE
: 1D 54 26 5 57 48 41 54 3F 14 6 56 0 3F 22 9
: 49 4E 54 45 52 50 52 45 54 DE 1D 28 22 DE 1D 3
: 24 87 16 65 21 95 7 3E E 1D 0 74 A E9 8 3E
: E 6 0 4F 6 28 22 3A 26 C 43 4F 4D 50 49 4C
: 45 20 4F 4E 4C 59 F3 21 2B 6 4A 19 51 B 3E E
: 4 0 39 22 28 22 DE 1D 3 24 87 16 65 21 95 7
: 3E E 10 0 0 C 3E E 6 0 4F 6 28 22 CF 13
: 28 22 F3 21 2B 6 4A 19 95 7 3E E 12 0 0 C
: 3E E 6 0 43 7 16 B 16 B 1C E 4 0 39 22
: 28 22 57 0 5D 22 41 5B DE 1D E7 A 6D 22 4C 23
: 2A 22 9D 16 AF A 14 6 57 0 E4 22 1 5D DE 1D
: E7 A A6 22 4C 23 2A 22 9D 16 9D A 14 6 DE 1D
: 4B A 3A 26 5 43 52 41 53 48 14 6 58 0 FA 22
: 5 44 45 46 45 52 DE 1D 3A 1C E7 A E 23 CF 13
: 5F 1B A0 2 B1 3A 48 C8 B1 3A 85 3B 68 85 3A A0
: 1 4C 39 0 58 0 1E 23 3 28 49 53 DE 1D BF 5
: 70 7 F9 9 A0 5 DA 6 F3 6 14 6 DE 1D DA 6
: E7 A 39 22 DA 6 AC 7 2D C 43 7 E7 A 28 22
: DA 6 2D C CC 8 41 9 3A 26 C 4E 4F 54 20 44
: 45 46 45 52 52 45 44 14 6 58 0 46 23 42 49 53
: DE 1D AB 21 70 7 5C 23 88 1D 9D 16 DA 6 3E E
: A 0 FA 13 4C 23 CF 13 14 6 F3 6 14 6 DE 1D
: 31 25 E7 A 20 0 F1 B 3A 26 B 54 49 47 48 54
: 20 53 54 41 43 4B 26 1A F4 19 3E E 16 0 70 7
: 8 1B 3E E 8 0 66 1D 1C E 6 0 92 A 21 9
: FA 2F 4B A 3A 26 F 44 49 43 54 49 4F 4E 41 52
: 59 20 46 55 4C 4C 14 6 59 0 8B 23 6 3F 53 54
: 41 43 4B 5 24 A0 C 38 A5 25 F1 22 85 42 C8 A5
: 26 F1 22 D0 9 A0 1 20 56 4 AE 23 14 6 A0 8
: B1 22 C5 25 C8 B1 22 E5 26 A0 1 90 3 4C 27 0
: 20 56 4 4B A 3A 26 B 53 54 41 43 4B 20 45 4D
: 50 54 59 5A 0 FA 23 7 2E 53 54 41 54 55 53 32
: 23 70 4 A9 1C BF 5 BF 5 F3 6 14 6 5A 0 45
: 24 84 50 55 53 48 DE 1D BF 5 43 7 70 7 A0 5
: DA 6 A0 5 53 24 A0 5 A0 5 14 6 5A 0 5F 24
: 4 4C 4F 41 44 DE 1D 95 7 51 B 2B 6 38 14 66
: 24 38 14 F3 6 2C 14 66 24 2C 14 AF A 4F 24 69
: 22 14 6 5B 0 7E 24 5 2B 4C 4F 41 44 DE 1D 38
: 14 DA 6 AF 8 85 24 14 6 5B 0 A5 24 4 54 48
: 52 55 DE 1D DB 9 43 7 25 D A 0 DF D 85 24
: 84 D 73 D 14 6 5B 0 BB 24 5 2B 54 48 52 55
: DE 1D DB 9 43 7 25 D A 0 DF D AD 24 84 D
: 73 D 14 6 5B 0 D8 24 43 2D 2D 3E DE 1D 74 A
: 38 14 13 7 2C 14 AF A 4F 24 14 6 5B 0 F6 24
: 6 52 44 45 50 54 48 DE 1D 92 4 DA 6 83 5 F9
: 9 21 9 E0 11 14 6 5B 0 E 25 5 44 45 50 54
: 48 DE 1D B 5 88 4 DA 6 43 7 21 9 E0 11 14
: 6 DE 1D 9D 16 DA 6 3E E 11 0 1C 17 A 20 43
: 4F 4D 50 49 4C 49 4E 47 14 6 1C 17 3 20 4F 4B
: 14 6 5C 0 29 25 5 28 51 55 49 54 DE 1D 4F 24
: 51 31 63 14 69 22 41 25 1C E F4 FF 5C 0 64 25
: 5 27 51 55 49 54 32 23 6C 25 5C 0 7E 25 4 51
: 55 49 54 DE 1D 92 4 DA 6 92 5 E8 22 86 25 5C
: 0 8C 25 B 53 54 41 4E 44 41 52 44 49 2F 4F DE
: 1D E7 A 1A 3 C4 4 92 A 87 12 14 6 5C 0 A1
: 25 6 27 41 42 4F 52 54 32 23 70 4 5C 0 BF 25
: 5 41 42 4F 52 54 DE 1D A0 1A 33 4 C8 25 AF 25
: 93 25 5D 0 CE 25 3 53 43 52 A9 1C 1 0 5D 0
: E4 25 2 52 23 A9 1C 0 0 5D 0 F0 25 6 28 45
: 52 52 4F 52 DE 1D AF 25 EB 26 9B 13 98 1D 2F 13
: 5D 31 EB 26 F0 30 38 14 DA 6 95 7 3E E E 0
: EA 25 F3 6 2C 14 DA 6 F5 25 F3 6 93 25 5D 0
: FB 25 87 28 41 42 4F 52 54 22 DE 1D E5 16 43 7
: 3E E E 0 A0 5 A0 1A BF 5 E5 4 73 6 14 6
: 38 7 14 6 DE 1D E5 16 43 7 3E E 8 0 E5 4
: 73 6 14 6 38 7 14 6 5E 0 30 26 C6 41 42 4F
: 52 54 22 DE 1D FA 13 3A 26 C8 16 14 6 5E 0 6A
: 26 C6 45 52 52 4F 52 22 DE 1D FA 13 54 26 C8 16
: 14 6 5F 0 7F 26 2 42 4C 2B 1E 20 0 5F 0 94
: 26 9 2D 54 52 41 49 4C 49 4E 47 AD 26 98 20 8B
: 9 A1 25 85 44 18 B1 25 65 43 85 45 A4 42 18 90
: 13 88 B1 44 C9 20 F0 C C8 D0 2 E6 43 98 48 A5
: 43 4C D9 E 98 D0 EA C6 45 C6 43 10 E4 98 4C D6
: E 60 0 9F 26 5 53 50 41 43 45 DE 1D 99 26 47
: 31 14 6 60 0 E3 26 6 53 50 41 43 45 53 DE 1D
: 59 A 36 D 8 0 EB 26 84 D 73 D 14 6 DE 1D
: AB 13 3D A 14 6 61 0 F5 26 4 48 4F 4C 44 DE
: 1D 4B A E 27 13 7 E 27 DA 6 9C 6 14 6 61
: 0 18 27 2 3C 23 DE 1D E 27 E 27 F3 6 14 6
: 61 0 31 27 2 23 3E DE 1D 96 8 E 27 DA 6 E
: 27 AC 7 21 9 14 6 61 0 42 27 4 53 49 47 4E
: DE 1D DF B 3E E 8 0 E7 A 2D 0 1F 27 14 6
: 61 0 59 27 1 23 DE 1D B6 4 DA 6 67 12 D1 7
: E7 A 9 0 AC 7 8D B 3E E 8 0 E7 A 7 0
: AF 8 E7 A 30 0 AF 8 1F 27 14 6 61 0 72 27
: 2 23 53 DE 1D 76 27 A1 8 3D C 3E E F8 FF 14
: 6 62 0 9E 27 3 44 2E 52 DE 1D 12 8 34 8 E5
: C 36 27 A3 27 D1 7 60 27 47 27 D1 7 AC 7 9F
: C AC 7 21 9 FE 26 5D 31 14 6 62 0 B3 27 2
: 2E 52 DE 1D 43 7 D4 C D1 7 B9 27 14 6 62 0
: DD 27 3 55 2E 52 DE 1D 59 A 43 7 B9 27 14 6
: 62 0 F0 27 2 44 2E DE 1D 59 A B9 27 EB 26 14
: 6 62 0 2 28 1 2E DE 1D D4 C 7 28 14 6 62
: 0 13 28 2 55 2E DE 1D 59 A 7 28 14 6 63 0
: 21 28 2 2E 53 DE 1D B 5 88 4 DA 6 AC 7 21
: 9 E7 A 20 0 C1 C 5D D 36 D E 0 DF D DA
: 6 26 28 7E A B5 D 73 D 14 6 63 0 30 28 3
: 43 2F 4C 2B 1E 40 0 63 0 5D 28 3 4C 2F 53 2B
: 1E 10 0 63 0 69 28 4 4C 49 53 54 DE 1D EA 25
: F3 6 1C 17 4 53 43 52 20 EA 25 DA 6 70 7 26
: 28 1C 17 3 44 52 20 20 36 17 28 6F 28 59 A 25
: D 24 0 51 31 DF D 7E A E2 27 EB 26 EA 25 DA
: 6 8 2C DF D 63 28 DF 10 AF 8 63 28 AB 26 5D
: 31 84 D 73 D 51 31 14 6 64 0 75 28 5 50 41
: 55 53 45 27 0 64 0 CB 28 4 4C 4F 43 4B DE 1D
: 70 7 DA 6 4D 5 2D C 3E E 6 0 38 7 14 6
: 70 7 DA 6 3E E 8 0 D3 28 1C E F4 FF 4D 5
: 43 7 F3 6 14 6 64 0 D7 28 6 55 4E 4C 4F 43
: 4B DE 1D 70 7 DE 28 AF A 14 6 68 38 E9 5 85
: 22 68 E9 0 85 23 A9 4C 81 22 A0 6 B1 22 85 25
: C8 B1 22 85 26 A0 1 A1 25 85 20 B1 25 85 21 A5
: 25 18 69 2 85 25 90 2 E6 26 A2 2C 4C 60 5 65
: 0 8 29 4 46 49 4C 45 A9 1E 1C 65 0 51 29 4
: 50 52 45 56 A9 1C 0 0 A9 1C 0 0 65 0 5D 29
: 5 42 2F 42 55 46 2B 1E 8 4 A0 2 B1 46 D9 40
: 0 D0 5 C8 C0 6 D0 F4 60 8B 29 A0 3 B1 25 99
: 42 0 88 10 F8 A0 E 18 B1 22 65 44 85 44 C8 B1
: 22 65 45 85 45 AD 66 29 85 46 AD 67 29 85 47 20
: 7A 29 D0 1D A5 25 18 69 2 85 25 90 2 E6 26 A0
: 1 A9 8 18 65 46 81 25 A5 47 69 0 91 25 4C 16
: 6 A5 46 85 48 A5 47 85 49 A1 48 85 46 A0 1 B1
: 48 85 47 5 46 D0 3 4C 27 0 20 7A 29 D0 E2 A1
: 46 81 48 A0 1 B1 46 91 48 AD 66 29 81 46 AD 67
: 29 91 46 A5 46 8D 66 29 A5 47 8D 67 29 4C B4 29
: 6A 0 6E 29 8 28 44 49 53 4B 45 52 52 DE 1D 1C
: 17 14 45 52 52 4F 52 20 21 20 20 52 20 54 4F 20
: 52 45 54 52 59 20 EB 31 70 7 E7 A 52 0 2D C
: 43 7 E7 A 52 0 2D C CC 8 41 9 3A 26 7 41
: 42 4F 52 54 45 44 14 6 6A 0 12 2A 7 44 49 53
: 4B 45 52 52 32 23 1D 2A 6A 0 5A 2A 3 52 2F 57
: 32 23 9D 36 DE 1D 70 7 12 A DA 6 DF B 3E E
: 4B 0 F9 9 70 7 DA 6 DB 9 3E E 33 0 D1 4
: 66 24 C4 4 66 24 AF 25 70 7 12 A AC 7 F9 9
: DA 6 7E A 45 8 DA 6 59 A 70 2A 3E E 11 0
: 1C 17 6 57 52 49 54 45 20 64 2A 1C E DB FF E7
: A 80 0 AC 7 C A DB 9 C6 6 38 7 14 6 DE
: 1D F9 9 70 7 9D A C A AF A 14 6 DE 1D 70
: 7 CF 2A D1 4 66 24 C4 4 66 24 AF 25 A0 5 AC
: 7 AA 4 DA 6 AF 8 AC 7 E9 5 E7 A 8 0 AF
: 8 12 8 74 A 70 2A 3E E 10 0 1C 17 5 52 45
: 41 44 20 64 2A 1C E D8 FF BF 5 14 6 DE 1D 64
: 29 70 7 DA 6 3E E 12 0 DA 6 70 7 F9 9 DA
: 6 4B A 2D C 3E E EA FF 68 29 DE 28 70 7 74
: 2A 14 6 DE 1D F9 9 A0 5 A1 8 E9 5 F3 6 AA
: 4 DA 6 AF 8 E9 5 F9 9 F3 6 BF 5 C A AF
: A 68 29 11 29 14 6 DE 1D 64 29 DA 6 70 7 3E
: E E 0 70 7 12 A DA 6 DF B 3E E EE FF 14
: 6 DE 1D 64 29 DA 6 70 7 DA 6 51 B 3E E F6
: FF 12 A DA 6 DF B 14 6 6C 0 6A 2A 5 43 4F
: 52 45 3F DE 1D 89 29 96 8 59 A 14 6 6D 0 9B
: 2B 7 28 42 55 46 46 45 52 DE 1D 89 29 1D 2B 43
: 2B 1C E F8 FF 6D 0 AF 2B 6 28 42 4C 4F 43 4B
: DE 1D 89 29 1D 2B DD 2A 43 2B 1C E F6 FF E0 2B
: A0 1C B1 22 48 C8 B1 22 4C D9 E 6D 0 C7 2B 6
: 42 55 46 46 45 52 DE 1D DE 2B B9 2B 14 6 6D 0
: ED 2B 5 42 4C 4F 43 4B DE 1D DE 2B D0 2B 14 6
: 6E 0 0 2C 6 55 50 44 41 54 45 DE 1D E7 A 80
: 0 64 29 DA 6 12 A DB 9 9C 6 14 6 6E 0 12
: 2C C 53 41 56 45 2D 42 55 46 46 45 52 53 DE 1D
: 68 29 DE 28 67 2B 95 7 3E E 8 0 74 2A 1C E
: F4 FF 68 29 11 29 14 6 6E 0 2F 2C D 45 4D 50
: 54 59 2D 42 55 46 46 45 52 53 DE 1D 68 29 DE 28
: 64 29 DA 6 95 7 3E E A 0 70 7 CF 2A 1C E
: F2 FF 68 29 11 29 14 6 6E 0 5A 2C 5 46 4C 55
: 53 48 DE 1D 3E 2C 6A 2C 14 6 DE 1D 70 7 DE 2B
: A3 2B 3E E 8 0 64 29 DA 6 CF 2A 81 2B 3E E
: 4 0 3E 2C AA 4 DA 6 AF 8 43 7 8 2C 3D A
: 3D A F3 6 1B 2C 14 6 DE 1D 3E 2C A0 5 AC 7
: E9 5 AF 8 AC 7 1F C A0 5 A1 8 BA B BF 5
: E9 8 3E E 24 0 E9 5 E9 5 AD 9 BF 5 59 A
: 36 D 12 0 4B A E7 A FE FF AD 9 A1 8 9A 2C
: 84 D 73 D 1C E 18 0 BF 5 59 A 36 D 10 0
: A1 8 9A 2C 74 A 74 A AD 9 84 D 73 D 3E 2C
: 96 8 14 6 6F 0 8A 2C 4 43 4F 50 59 DE 1D 74
: A C8 2C 14 6 6F 0 26 2D 6 43 4F 4E 56 45 59
: DE 1D 43 7 DB 9 7E A 45 8 21 9 70 7 0 C
: 41 9 3A 26 4 4E 4F 21 21 C8 2C 14 6 70 0 37
: 2D 5 4C 49 4D 49 54 2B 1E 0 7F 70 0 5F 2D 5
: 46 49 52 53 54 A9 1C 0 0 70 0 6D 2D B 41 4C
: 4C 4F 54 42 55 46 46 45 52 DE 1D 75 2D DA 6 92
: 4 DA 6 21 9 76 29 F9 9 BA B 2B 6 76 29 5C
: 9 75 2D 13 7 75 2D DA 6 70 7 CF 2A 64 29 DA
: 6 AC 7 F3 6 64 29 F3 6 14 6 70 0 7B 2D A
: 46 52 45 45 42 55 46 46 45 52 DE 1D 75 2D DA 6
: 67 2D 76 29 21 9 BA B 3E E 28 0 3E 2C 70 7
: DA 6 75 2D DA 6 21 9 3E E 8 0 DA 6 1C E
: EE FF 75 2D DA 6 DA 6 43 7 F3 6 76 29 75 2D
: 13 7 14 6 70 0 BD 2D B 41 4C 4C 2D 42 55 46
: 46 45 52 53 DE 1D 75 2D DA 6 89 2D 75 2D DA 6
: 2D C 3E E F2 FF 14 6 DE 1D 82 6 E7 A 20 0
: E9 8 14 6 DE 1D 66 1D 34 8 DB 9 BA B 43 7
: 8 1B CC 8 14 6 DE 1D F4 1A F5 4 DA 6 A0 5
: BF 5 DA 6 95 7 3E E 5E 0 70 7 A0 5 92 A
: 21 9 A0 5 BF 5 DA 6 A0 5 AC 7 1F A 70 7
: E9 5 BA B 43 7 E9 5 F9 9 66 1D BA B E9 8
: 3E E 2E 0 E9 5 8 1B 3E E DA FF E9 5 F9 9
: 28 2E 3E E 18 0 AC 7 E9 5 F9 9 34 2E 3E E
: C 0 E9 5 F9 9 4E 1D F9 9 B0 C 1C E B6 FF
: 9 6 1C E 9C FF 14 6 BA 2E A0 5 B1 25 99 42
: 0 88 10 F8 A0 8 18 B1 22 69 6 85 48 C8 B1 22
: 69 0 85 49 A0 1 A1 42 85 4A B1 42 85 4B 5 4A
: F0 35 A5 4A C5 48 A5 4B E5 49 90 B A5 4A C5 44
: A5 4B E5 45 4C FF 2E A5 46 C5 4A A5 47 E5 4B B0
: B A1 4A 81 42 B1 4A 91 42 4C 14 2F A5 4A 85 42
: A5 4B 85 43 4C D6 2E 4C 6D 5 DE 1D F5 4 DA 6
: 95 7 3E E 12 0 70 7 A0 5 92 A 21 9 B8 2E
: BF 5 1C E EA FF 14 6 DE 1D 4D 5 DB 9 70 7
: DA 6 4D 5 21 9 3E E 28 0 A1 8 DA 6 43 7
: 9B 13 67 B 3E E 14 0 70 7 DA 6 DB 9 DA 6
: AC 7 F3 6 1F A 1C E 4 0 DA 6 1C E CE FF
: 96 8 14 6 DE 1D F5 4 B8 2E 41 1F 25 D 20 0
: A1 8 DF D DA 6 12 8 67 B 3E E A 0 E7 A
: DB 1F DF D F3 6 E7 A FE FF B5 D 73 D A1 8
: 23 1F DA 6 12 8 67 B 3E E A 0 E7 A DB 1F
: 23 1F F3 6 14 6 DE 1D AC 7 38 2F 74 2F 1A 2F
: F4 1A 43 7 21 9 BD 1A 9C 4 F3 6 59 A F0 19
: F3 6 14 6 75 0 6 2E 5 43 4C 45 41 52 DE 1D
: 9B 13 70 7 4D 5 B6 2F 9C 4 F3 6 14 6 75 0
: D6 2F 7 28 46 4F 52 47 45 54 DE 1D 70 7 8 1B
: 3A 26 9 49 53 20 53 59 4D 42 4F 4C 46 2E B6 2F
: 14 6 75 0 F0 2F 6 46 4F 52 47 45 54 DE 1D AB
: 21 70 7 E7 A 14 3 DA 6 BA B 3A 26 9 50 52
: 4F 54 45 43 54 45 44 24 1D 70 7 8 1B 3E E 8
: 0 66 1D 1C E 6 0 3D A 3D A FA 2F 14 6 75
: 0 14 30 5 45 4D 50 54 59 DE 1D E7 A 14 3 DA
: 6 4D 5 B6 2F E7 A 22 3 DA 6 0 5 F3 6 14
: 6 76 0 51 30 4 53 41 56 45 DE 1D 9B 13 4D 5
: B6 2F F5 4 DA 6 70 7 3D A 3D A DA 6 AC 7
: 3D A F3 6 DA 6 95 7 51 B 3E E EA FF 4D 5
: 7D 4 E7 A 0 1 87 12 14 6 76 0 73 30 3 42
: 59 45 DE 1D 92 2C 59 30 B2 35 14 6 DE 1D EB 31
: F7 33 2D C 3E E 6 0 4B A 9 6 14 6 76 0
: AC 30 5 53 54 4F 50 3F DE 1D F7 31 3E E 6 0
: BC 30 BC 30 59 A 14 6 76 0 D0 30 3 3F 43 52
: DE 1D A4 31 63 28 E7 A A 0 21 9 1F C 3E E
: 4 0 51 31 14 6 DE 1D 3A 1C 70 7 E2 13 F9 9
: 5F 1B 4C 34 1B 82 6 C4 4 DA 6 AF 8 73 6 14
: 6 77 0 EA 30 7 4F 55 54 50 55 54 3A DE 1D 3A
: 1C FE 22 5F 1B 4C 34 1B C4 4 F3 6 14 6 77 0
: 23 31 4 45 4D 49 54 12 31 0 77 0 40 31 2 43
: 52 12 31 2 77 0 4C 31 4 54 59 50 45 12 31 4
: 77 0 56 31 3 44 45 4C 12 31 6 77 0 62 31 4
: 50 41 47 45 12 31 8 77 0 6D 31 2 41 54 12 31
: A 77 0 79 31 3 41 54 3F 12 31 C 77 0 83 31
: 3 52 4F 57 DE 1D 89 31 38 7 14 6 77 0 8E 31
: 3 43 4F 4C DE 1D 89 31 22 8 14 6 DE 1D 3A 1C
: 70 7 E2 13 F9 9 5F 1B 4C 34 1B 82 6 D1 4 DA
: 6 AF 8 73 6 14 6 77 0 9E 31 6 49 4E 50 55
: 54 3A DE 1D 3A 1C FE 22 5F 1B 4C 34 1B D1 4 F3
: 6 14 6 77 0 C9 31 3 4B 45 59 B8 31 0 77 0
: E5 31 4 4B 45 59 3F B8 31 2 77 0 F0 31 6 44
: 45 43 4F 44 45 B8 31 4 77 0 FC 31 6 45 58 50
: 45 43 54 B8 31 6 78 0 0 0 4 53 45 41 4C DE
: 1D 59 A E7 A EA 1F 88 1D F3 6 14 6 78 0 18
: 32 24 4F 4E 4C 59 EA 1F 78 0 2F 32 25 46 4F 52
: 54 48 D9 1F 78 0 3A 32 25 57 4F 52 44 53 79 20
: 78 0 46 32 24 41 4C 53 4F 54 1F 78 0 52 32 2B
: 44 45 46 49 4E 49 54 49 4F 4E 53 2F 20 DE 1D F5
: 4 DA 6 70 7 3D A DA 6 AC 7 92 A 21 9 F3
: 6 DA 6 95 7 51 B 3E E EA FF 14 6 DE 1D 59
: A 64 29 F3 6 67 2D 75 2D F3 6 14 2E 14 6 79
: 0 A 32 5 27 43 4F 4C 44 32 23 70 4 DE 1D 6D
: 32 8D 32 74 31 A9 32 13 20 1C 17 1F 76 6F 6C 6B
: 73 46 4F 52 54 48 2D 38 33 20 20 33 2E 38 2E 37
: 20 30 35 61 70 72 31 33 20 43 53 51 31 8F 33 79
: 0 A1 32 8 27 52 45 53 54 41 52 54 32 23 70 4
: DE 1D E7 A 6C 25 4C 23 88 25 3A 36 EC 32 E7 A
: 1E 3 DA 6 E5 4 F3 6 E7 A 70 4 4C 23 CA 25
: D6 25 7A 0 E1 32 4 43 4F 4C 44 1D 33 A9 32 48
: A9 AF 48 58 A0 0 18 AD 10 3 69 6 85 42 AD 11
: 3 69 0 85 43 B9 8 3 91 42 C8 D0 F8 A0 1B B9
: 9 4 99 24 0 88 10 F7 18 AD 10 3 69 6 85 22
: AD 11 3 69 0 85 23 A0 8 B1 22 85 25 C8 B1 22
: 85 26 A0 A B1 22 85 20 C8 B1 22 85 21 A2 0 A0
: 1 8A 81 20 91 20 68 85 2C 68 85 2D A2 0 A0 1
: 4C 27 0 7B 0 14 33 7 52 45 53 54 41 52 54 91
: 33 A9 32 48 A9 F2 48 4C 3D 33 2B 1E 10 D0 2B 1E
: 11 D0 A4 33 AD 11 D0 30 5 A9 0 4C B0 33 A9 1
: 4C D6 E B5 33 AD 10 D0 29 7F 4C D6 E BF 33 4C
: 27 0 C4 33 4C 27 0 2 0 85 33 5 36 35 4B 45
: 59 DE 1D BD 33 D3 28 A2 33 3E E FA FF C2 33 B3
: 33 14 6 3 0 C9 33 3 23 42 53 2B 1E 8 0 3
: 0 E5 33 3 23 43 52 2B 1E D 0 3 0 F1 33 4
: 23 45 53 43 2B 1E 1B 0 3 0 FD 33 8 36 35 44
: 45 43 4F 44 45 DE 1D EB 33 FA E 3E E E 0 70
: 7 3E E 6 0 68 31 1F A 14 6 F7 33 FA E 3E
: E A 0 70 7 45 14 F3 6 14 6 A0 5 A1 8 AF
: 8 E9 5 43 7 9C 6 BF 5 47 31 DB 9 14 6 3
: 0 A 34 8 36 35 45 58 50 45 43 54 DE 1D 45 14
: F3 6 59 A 70 7 45 14 DA 6 BA B 3E E A 0
: EB 31 5 32 1C E EE FF 96 8 EB 26 14 6 3 0
: 51 34 8 4B 45 59 42 4F 41 52 44 DA 31 D1 33 A2
: 33 15 34 5C 34 2B 1E 12 D0 9B 34 AD 12 D0 29 80
: 49 80 4C D6 E 4 0 80 34 5 28 45 4D 49 54 B1
: 34 A1 25 8D 12 D0 4C 6D 5 A9 1C 0 0 2B 1E 28
: 0 5 0 A7 34 6 36 35 45 4D 49 54 DE 1D D3 28
: 99 34 3E E FA FF 74 A B9 34 13 7 AF 34 14 6
: 5 0 C3 34 4 36 35 43 52 DE 1D F7 33 CC 34 B9
: 34 DA 6 BD 34 B 12 DB 9 BD 34 DF 10 B9 34 F3
: 6 14 6 5 0 E2 34 5 36 35 44 45 4C DE 1D E7
: A 5F 0 CC 34 4B A B9 34 13 7 14 6 5 0 5
: 35 6 36 35 50 41 47 45 DE 1D E7 A 18 0 59 A
: 25 D 8 0 51 31 84 D 73 D B9 34 AF A 14 6
: 5 0 1F 35 4 36 35 41 54 DE 1D 43 7 BD 34 DF
: 10 AF 8 B9 34 F3 6 14 6 5 0 42 35 5 36 35
: 41 54 3F DE 1D B9 34 DA 6 BD 34 F9 11 E7 A 18
: 0 8F C 43 7 14 6 6 0 5B 35 6 36 35 54 59
: 50 45 DE 1D 5D D 36 D C 0 DF D 82 6 47 31
: 84 D 73 D 14 6 7 0 79 35 7 44 49 53 50 4C
: 41 59 35 31 CC 34 E9 34 82 35 D 35 28 35 49 35
: 63 35 DE 1D 14 6 8 0 98 35 5 42 2F 42 4C 4B
: 2B 1E 0 4 8 0 B8 35 7 42 4C 4B 2F 44 52 56
: 2B 1E AA 0 A9 1C 0 0 DE 1D D4 35 DA 6 E7 A
: 8 0 AF 8 14 6 8 0 C6 35 5 44 52 49 56 45
: DE 1D D0 35 DF 10 AA 4 F3 6 14 6 9 0 E8 35
: 6 3E 44 52 49 56 45 DE 1D D0 35 DF 10 AF 8 AA
: 4 DA 6 21 9 14 6 9 0 FE 35 4 44 52 56 3F
: DE 1D AA 4 DA 6 AF 8 D0 35 B 12 14 6 9 0
: 19 36 7 44 52 56 49 4E 49 54 DE 1D 70 4 14 6
: DE 1D E7 A 1B 0 47 31 EB 26 B6 4 66 24 C4 17
: 17 28 51 31 E7 A 0 4 5D D 25 D C 0 EB 31
: DF D 9C 6 84 D 73 D 14 6 DE 1D E7 A 1B 0
: 47 31 EB 26 B6 4 66 24 C4 17 17 28 51 31 E7 A
: 0 4 5D D 25 D C 0 DF D 82 6 47 31 84 D
: 73 D 14 6 A 0 30 36 4 28 52 2F 57 DE 1D 43
: 7 3A 26 7 6E 6F 20 66 69 6C 65 3E E 8 0 40
: 36 1C E 4 0 6A 36 59 A 14 6 7C 0 96 36 8
: 46 4F 52 54 48 2D 38 33 DE 1D 14 6 7D 0 BD 36
: 9 41 53 53 45 4D 42 4C 45 52 C6 1F 0 0 94 37
: F0 1F 7D 0 0 0 5 50 55 53 48 41 2B 1E CC E
: 7D 0 E4 36 6 50 55 53 48 30 41 2B 1E D6 E 7D
: 0 F2 36 4 50 55 53 48 2B 1E D9 E 7D 0 1 37
: 2 52 50 2B 1E 20 0 7D 0 E 37 2 55 50 2B 1E
: 22 0 7D 0 19 37 2 53 50 2B 1E 25 0 7D 0 24
: 37 2 49 50 2B 1E 2C 0 7D 0 2F 37 1 4E 2B 1E
: 42 0 7D 0 3A 37 4 50 55 54 41 2B 1E 24 0 7D
: 0 44 37 1 57 2B 1E 3A 0 7D 0 51 37 5 53 45
: 54 55 50 2B 1E 8B 9 7E 0 5B 37 4 4E 45 58 54
: 2B 1E 27 0 7E 0 69 37 6 58 59 4E 45 58 54 2B
: 1E 7C 33 7E 0 76 37 6 50 4F 50 54 57 4F 2B 1E
: AC 6 7E 0 85 37 3 50 4F 50 2B 1E 6D 5 0 0

26
6502/Apple1/mkhex.fs Normal file
View File

@ -0,0 +1,26 @@
( forth version of the mkhex tool )
( creates a hex file to load into the Apple 1 monitor )
( usage: gforth mkhex.fs > f6502.hex )
: read-image ( file-id -- addr size )
dup file-size drop d>s ( file-id size )
dup allocate drop dup >r ( file-id size addr )
swap rot read-file drop r> swap ( addr size )
;
: find-end ( end-addr -- new-end-addr )
begin dup @ 0= while 1- repeat
;
: dump16 ( addr len -- )
over + swap ?do I c@ 3 .r loop ;
: dump-hex ( end begin -- )
hex ." 300:"
do I $10 dump16 cr ." :" $10 +loop
;
S" f6502.com" r/o open-file drop read-image
over + find-end cr swap dump-hex
bye

16
6502/Apple1/mkhex.py Normal file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env python
import sys
# first command line argument can be load address in hex
if len(sys.argv) > 1:
addr = int(sys.argv[1], 16)
else:
addr = 0x300
while True:
bytes = sys.stdin.read(16)
if bytes == '':
break
print "%04x: %s" % (addr, " ".join("%02x" % ord(b) for b in bytes))
addr += len(bytes)

21
6502/Apple1/readme.txt Normal file
View File

@ -0,0 +1,21 @@
This is volksForth 3.8 for the Apple 1
It is a very early version. It can be loaded using a hexdump to the
Apple 1 monitor. The code loads and starts to address 0x300.
There is no I/O defined. It should be possible to bootstrap a simple
serial line I/O with Forth blocks using this image.
The sourcecode can be recompiled using the volksForth target
compiler. Currently only the 6502 target compiler for the Atari ST
works. I'm workin on getting the 6502 target compiler working again,
as well as a target compiler in CP/M and MS-DOS volksForth.
Additional information about volksForth can be found at
http://volksforth.sf.net and http://fossil.forth-ev.de/volksforth
If you have any questions about volksForth please contact me at
carsten@strotmann.de
Germany, April 5 2013
Carsten Strotmann

View File

@ -0,0 +1 @@
\ Additional definitions for 32bit values cas 26jan06 \ 2Words Loadscreen cas 26jan06 hex &2 &3 thru decimal \ 2! 2@ 2VARIABLE 2CONSTANT 08JUL85RE) CODE 2! ( D ADR --) TYA SETUP JSR 3 # LDY [[ SP )Y LDA N )Y STA DEY 0< ?] 1 # LDY POPTWO JMP END-CODE CODE 2@ ( ADR -- D) SP X) LDA N STA SP )Y LDA N 1+ STA SP 2DEC 3 # LDY [[ N )Y LDA SP )Y STA DEY 0< ?] XYNEXT JMP END-CODE \ : 2VARIABLE ( --) CREATE 4 ALLOT ; ( -- ADR) : 2CONSTANT ( D --) CREATE , , DOES> ( -- D) 2@ ; \ 2DUP EXISTS \ 2SWAP EXISTS \ 2DROP EXISTS

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
\ Crosscompile Script for 6502 Target cas 26jan06 \ loadscreen for cross-compiler cas 26jan06 include assemble.fb \ load 68000 assembler 2 loadfrom as65.fb page \ load 6502 assembler include crostarg.fb page \ load target compiler include 6502f83.fb \ load Forth Kernel Source save-target f6502.com \ save new forth as f6502.comkey drop page .( Ready ) cr \ wait for keypress bye \ and exit forth

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10
6502/Apple2/COPYING Executable file
View File

@ -0,0 +1,10 @@
Copyright (c) 1985-2005, Forthgesellschaft e.V. (www.forth-ev.de)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the Forthgesellschaft e.V. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

121
6502/Apple2/README.TXT Executable file
View File

@ -0,0 +1,121 @@
VolksForth (generic 6502 Version) Readme
Version 1.0
26. January 2006 (cas)
VolksForth is a 16bit Forth System produced by the german Forth Gesellschaft
e.V. Main development of this system was done between 1985 until 1989. The
VolksForth Project was revived in 2005 with the goal to produce a managable
Forthsystem for computer systems with restricted system resources.
Some modern Forth Systems were influenced by or were derived from VolksForth
(GNU-Forth, bigForth).
The current Version of VolskForth is 3.81. Work on Version 3.90 has started.
At this time VolksForth is available for this Systems:
VolksForth MS-DOS (Intel x86 Architecture i8086-ia64)
VolksForth 6502 (Commodore 64, Commodore Plus 4, generic, Atari XL, Apple 1)
VolksForth Z80 (CP/M, Schneider CPC)
VolksForth 68000 (Atari ST)
Copyright
The VolksForth Sources are made available under the terms of the
BSD Lizenz - http://www.opensource.org/licenses/bsd-license.php
The Handbook is Copyright (c) 1985 - 2005 Forth Gesellschaft
e.V. ( Klaus Schleisiek, Ulrich Hoffmann, Bernd Pennemann, Georg Rehfeld
and Dietrich Weineck).
The Handbook, binary Files and Sourcecode for VolksForth as well as Information
about Forth Gesellschaft are available on the Forth Gesellschaft Webserver at
http://www.forth-ev.de/
(most of the Information is still in german. We are planning to provide future
versions with englisch documentation)
Information and Help about the Programming Language Forth can be found in the
Internet, starting with the Website of the Forthgesellschaft, or in the Usenet Forum
de.comp.lang.forth (via Google Groups: http://groups.google.de/group/de.comp.lang.forth )
Details on VolksForth 6502 (generic)
* Requirements
the source is for a generic 6502 System and needs to be adjusted to run on real headware
* Files
This is list of VolksForth Files in this Distribution.
2words.fb - additional words to handle 32bit values
4th.prg - Atari ST volksFORTH 3.81 (needed for Crosscompilation)
6502f83.fb - 6502 volksFORTH Kernel Source
as65.fb - 6502 Forth Assembler (resident and transident version)
assemble.fb - volksFORTH M68000 Assembler
ccompile.fb - Crosscompile Script
crostarg.fb - Target Crosscompiler to create a new 6502 Forth System
ediicon.rsc - GEM Resource File needed for Atari ST volksFORTH
systemio.fb - Systemdependent IO definitions
tasker.fb - Multitask Extensions for volksFORTH
tools.fb - Development Tools (Debugger, Tracer)
* How to crosscompile a new 6502 volksFORTH binary?
** Requirements: Crosscompilation to a 6502 Target is currently only possible from Atari ST volksFORTH. We
are working on getting Crosscompilation working again on 6502 (native Metacompilation) and on other
volksFORTH Platforms (like MS-DOS). So you need a read Atari ST or an Atari ST Emulator.
** Emulator
VolksForth Atari ST 3.81 has been tested in the Atari ST Emulator "HATARI"
(hatari.sourceforge.net) with EmuTos (emutos.sourceforge.net). VolksForth 3.81 has
some display problems with screen resolutions above 640x480. We try to solve this in
later versions.
1) boot the Atari ST or Atari ST Emulator
2) start volksFORTH Atari ST (4th.prg) from GEM or EMUTOS
3) customize the sourcecode in 6502F83.FB and SYSTEMIO.FB (see instructions below)
4) configure FORTH to use only one IO-Diskbuffer (important!)
5) start crosscompilations process with "include ccompile.fb"
6) you should see a new file "f6502.com" in the directory
* How to customize the 6502 volksFORTH Sourcecode for a new target system?
1) open the volksFORTH kernel source "use 6502F83.FB"
2) change the constant "BASEADDR" in screen 1 (target memory address)
3) change the bootlabel in Screen 3
4) adjust the zero page locations in Screen 4 (default ZP $20 to $47)
5) adjust memory locations for data stack (S0, default $5000)
and return Stack (R0, default $550) in Screen 8
6) (optional) adjust memory location for Terminal Input Buffer (>TIB, default $100)
if needed in Screen 54
7) adjust Boot Message in "(COLD" in Screen 121 (optional)
8) adjust memory for data stack and return stack, and disk buffers (LIMIT) in
Screen 127
9) close file 6502F83.FB
10) open file SYSTEMIO.FB "use SYSTEMIO.FB"
11) change Definition for 65KEY?. This definition should leave TRUE on the Stack
(TOS <> 0) if a Keyevent is waiting. This Word should never block (multitasking!)
12) change Definition for GETKEY to place the ASCII value of last keypress on the Stack.
This Word might block.
13) change definitions CURON and CUROFF to display Cursor or hide Cursor. If this functions
are not available, make these Words a NOOP.
14) change constants for #BS (ASCII Backspace) #CR (ASCII Carriage Return) and
#ESC (ASCII Escape Key)
15) change definition (EMIT to print the ASCII Char from the top of Stack to the Screen
16) change definition for 65PAGE to clear screen and move cursor to home position
17) change definition for 65AT to move cursor to the row and column values on the stack
18) change definition for 65AT? to query the row and column values for the cursor and
place them on the stack
19) change constants B/BLK (Bytes per Block/physical Sector) and BLK/DRV (Number of Blocks
per Driver, each Block is 1024 Bytes)
20) implement a R/W Definition for your Disk Drive / Storage System
21) compile (see above) and test
22) if successfull, please report back to the project team and consider releasing your
code to the public.
Have fun with VolksForth
the VolksForth Team

1
6502/Apple2/vFORTH38/2words.fb Executable file
View File

@ -0,0 +1 @@
\ Additional definitions for 32bit values cas 26jan06 \ 2Words Loadscreen cas 26jan06 hex &2 &3 thru decimal \ 2! 2@ 2VARIABLE 2CONSTANT 08JUL85RE) CODE 2! ( D ADR --) TYA SETUP JSR 3 # LDY [[ SP )Y LDA N )Y STA DEY 0< ?] 1 # LDY POPTWO JMP END-CODE CODE 2@ ( ADR -- D) SP X) LDA N STA SP )Y LDA N 1+ STA SP 2DEC 3 # LDY [[ N )Y LDA SP )Y STA DEY 0< ?] XYNEXT JMP END-CODE \ : 2VARIABLE ( --) CREATE 4 ALLOT ; ( -- ADR) : 2CONSTANT ( D --) CREATE , , DOES> ( -- D) 2@ ; \ 2DUP EXISTS \ 2SWAP EXISTS \ 2DROP EXISTS

BIN
6502/Apple2/vFORTH38/4th.prg Executable file

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
6502/Apple2/vFORTH38/as65.fb Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
\ Crosscompile Script for 6502 Target cas 26jan06 \ loadscreen for cross-compiler cas 26jan06 include assemble.fb \ load 68000 assembler 2 loadfrom as65.fb page \ load 6502 assembler include crostarg.fb page \ load target compiler include 6502f83.fb \ load Forth Kernel Source save-target f6502.com \ save new forth as f6502.comkey drop page .( Ready ) cr \ wait for keypress bye \ and exit forth

File diff suppressed because one or more lines are too long

BIN
6502/Apple2/vFORTH38/ediicon.rsc Executable file

Binary file not shown.

BIN
6502/Apple2/vFORTH38/f6502.com Executable file

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,176 @@
\ System depended IO definitions for 6502 target cas 26jan06
\ loadscreen fuer generic System IO cas 26jan06
1 9 +thru
\\ This example IO definitions are based on serial communication
The definitions needs to be adapted for each system
\ 65KEY? GETKEY 25JAN85RE) er14dez88
CODE 65KEY? ( -- FLAG) $C0EA jsr push0a jmp end-code
CODE GETKEY ( -- 8B) $C0A6 jsr push0a jmp end-code
CODE CURON ( --) NEXT JMP END-CODE
CODE CUROFF ( --) NEXT JMP END-CODE
: 65KEY ( -- 8B)
CURON BEGIN PAUSE 65KEY? UNTIL CUROFF GETKEY ;
\ DECODE EXPECT KEYBOARD BP28MAY85)
08 CONSTANT #BS 0D CONSTANT #CR &27 CONSTANT #ESC
: 65DECODE ( ADDR CNT1 KEY -- ADDR CNT2)
#BS CASE? IF DUP IF DEL 1- THEN EXIT THEN
#CR CASE? IF DUP SPAN ! EXIT THEN
>R 2DUP + R@ SWAP C! R> EMIT 1+ ;
: 65EXPECT ( ADDR LEN1 -- ) SPAN ! 0
BEGIN DUP SPAN @ U<
WHILE KEY DECODE
REPEAT 2DROP SPACE ;
INPUT: KEYBOARD [ HERE INPUT ! ]
65KEY 65KEY? 65DECODE 65EXPECT [
\ send? (emit 65emit er14dez88 cas 26jan06
| $8001 Constant aciasr
| $8000 Constant aciaio
| Code send? ( -- flg )
aciasr lda pha $08 # and 0= not ?[ $c058 jsr ]?
pla $10 # and push0a jmp end-code
Code (emit ( 8b -- ) SP X) LDA aciaio sta (drop jmp end-code
\ EMIT CR DEL PAGE AT AT? 25JAN85RE) cas 26jan06
| Variable out 0 out ! | &80 Constant c/row
: 65emit ( 8b -- ) BEGIN pause send? UNTIL 1 out +! (emit ;
: 65CR #CR 65emit out @ c/row / 1+ c/row * out ! ;
: 65DEL #bs 65emit SPACE #bs 65emit -2 out +! ;
: 65PAGE .( insert code for page ) out off ;
: 65at ( row col -- )
.( insert code for at ) swap c/row * + out ! ;
: 65AT? ( -- ROW COL ) out @ c/row /mod &24 min swap ;
\ 65type cas 26jan06
: 65type ( adr len -- ) bounds ?DO I c@ emit LOOP ;
\ TYPE DISPLAY (BYE BP 28MAY85RE) er14dez88
OUTPUT: DISPLAY [ HERE OUTPUT ! ]
65EMIT 65CR 65TYPE 65DEL 65PAGE 65AT 65AT? [
| : (bye ;
\ B/BLK DRIVE >DRIVE DRVINIT 28MAY85RE) cas 26jan06
$400 CONSTANT B/BLK \ Bytes per physical Sector
$0AA CONSTANT BLK/DRV \ number of Blocks per Drive
| VARIABLE (DRV 0 (DRV !
| : DISK ( -- DEV.NO ) (DRV @ 8 + ;
: DRIVE ( DRV# -- ) BLK/DRV * OFFSET ! ;
\ cas 26jan06
: >DRIVE ( BLOCK DRV# -- BLOCK' )
BLK/DRV * + OFFSET @ - ;
: DRV? ( BLOCK -- DRV# )
OFFSET @ + BLK/DRV / ;
: DRVINIT NOOP ;
.( for read and write errorhandler is needed )
| : readserial ( adr blk -- )
&27 emit .( rb ) space base push decimal . cr
$400 bounds DO key I c! LOOP ;
| : writeserial ( adr blk -- )
&27 emit .( wb ) space base push decimal . cr
$400 bounds DO I c@ emit LOOP ;
\ (r/w er14dez88
: (R/W ( ADR BLK FILE R/WF -- FLAG)
swap abort" no file"
IF readserial ELSE writeserial THEN false ;
' (R/W IS R/W

1
6502/Apple2/vFORTH38/tasker.fb Executable file

File diff suppressed because one or more lines are too long

1
6502/Apple2/vFORTH38/tools.fb Executable file

File diff suppressed because one or more lines are too long

150
6502/Atari8bit/3.81.4/AS65.TXT Executable file
View File

@ -0,0 +1,150 @@
\ 6502 Assembler clv10oct87
\ Basis: Forth Dimensions VOL III No. 5)
\ internal loading 04may85BP/re)
\ Forth-6502 Assembler clv10oct87
\ Basis: Forth Dimensions VOL III No. 5)
CR .( Loading 6502 Assembler...) CR
Onlyforth Assembler also definitions
\ Forth-83 6502-Assembler 20oct87re
: end-code context 2- @ context ! ;
Create index
$0909 , $1505 , $0115 , $8011 ,
$8009 , $1D0D , $8019 , $8080 ,
$0080 , $1404 , $8014 , $8080 ,
$8080 , $1C0C , $801C , $2C80 ,
| Variable mode
: Mode: ( n -) Create c,
Does> ( -) c@ mode ! ;
0 Mode: .A 1 Mode: #
2 | Mode: mem 3 Mode: ,X
4 Mode: ,Y 5 Mode: X)
6 Mode: )Y $F Mode: )
\ upmode cpu 20oct87re
| : upmode ( addr0 f0 - addr1 f1)
IF mode @ 8 or mode ! THEN
1 mode @ $F and ?dup IF
0 DO dup + LOOP THEN
over 1+ @ and 0= ;
: cpu ( 8b -) Create c,
Does> ( -) c@ c, mem ;
00 cpu brk $18 cpu clc $D8 cpu cld
$58 cpu cli $B8 cpu clv $CA cpu dex
$88 cpu dey $E8 cpu inx $C8 cpu iny
$EA cpu nop $48 cpu pha $08 cpu php
$68 cpu pla $28 cpu plp $40 cpu rti
$60 cpu rts $38 cpu sec $F8 cpu sed
$78 cpu sei $AA cpu tax $A8 cpu tay
$BA cpu tsx $8A cpu txa $9A cpu txs
$98 cpu tya
\ m/cpu 20oct87re
: m/cpu ( mode opcode -) Create c, ,
Does>
dup 1+ @ $80 and IF $10 mode +! THEN
over $FF00 and upmode upmode
IF mem true Abort" invalid" THEN
c@ mode @ index + c@ + c, mode @ 7 and
IF mode @ $F and 7 <
IF c, ELSE , THEN THEN mem ;
$1C6E $60 m/cpu adc $1C6E $20 m/cpu and
$1C6E $C0 m/cpu cmp $1C6E $40 m/cpu eor
$1C6E $A0 m/cpu lda $1C6E $00 m/cpu ora
$1C6E $E0 m/cpu sbc $1C6C $80 m/cpu sta
$0D0D $01 m/cpu asl $0C0C $C1 m/cpu dec
$0C0C $E1 m/cpu inc $0D0D $41 m/cpu lsr
$0D0D $21 m/cpu rol $0D0D $61 m/cpu ror
$0414 $81 m/cpu stx $0486 $E0 m/cpu cpx
$0486 $C0 m/cpu cpy $1496 $A2 m/cpu ldx
$0C8E $A0 m/cpu ldy $048C $80 m/cpu sty
$0480 $14 m/cpu jsr $8480 $40 m/cpu jmp
$0484 $20 m/cpu bit
\ Assembler conditionals 20oct87re
| : range? ( branch -- branch )
dup abs $7F u> Abort" out of range " ;
: [[ ( BEGIN) here ;
: ?] ( UNTIL) c, here 1+ - range? c, ;
: ?[ ( IF) c, here 0 c, ;
: ?[[ ( WHILE) ?[ swap ;
: ]? ( THEN) here over c@ IF swap !
ELSE over 1+ - range? swap c! THEN ;
: ][ ( ELSE) here 1+ 1 jmp
swap here over 1+ - range? swap c! ;
: ]] ( AGAIN) jmp ;
: ]]? ( REPEAT) jmp ]? ;
\ Assembler conditionals 20oct87re
$90 Constant CS $B0 Constant CC
$D0 Constant 0= $F0 Constant 0<>
$10 Constant 0< $30 Constant 0>=
$50 Constant VS $70 Constant VC
: not $20 [ Forth ] xor ;
: beq 0<> ?] ; : bmi 0>= ?] ;
: bne 0= ?] ; : bpl 0< ?] ;
: bcc CS ?] ; : bvc VS ?] ;
: bcs CC ?] ; : bvs VC ?] ;
\ 2inc/2dec winc/wdec 20oct87re
: 2inc ( adr -- )
dup lda clc 2 # adc
dup sta CS ?[ swap 1+ inc ]? ;
: 2dec ( adr -- )
dup lda sec 2 # sbc
dup sta CC ?[ swap 1+ dec ]? ;
: winc ( adr -- )
dup inc 0= ?[ swap 1+ inc ]? ;
: wdec ( adr -- )
dup lda 0= ?[ over 1+ dec ]? dec ;
: ;c:
recover jsr end-code ] 0 last ! 0 ;
\ ;code Code code> bp/re03feb85
Onlyforth
: Assembler
Assembler [ Assembler ] mem ;
: ;Code
[compile] Does> -3 allot
[compile] ; -2 allot Assembler ;
immediate
: Code Create here dup 2- ! Assembler ;
: >label ( adr -)
here | Create immediate swap ,
4 hallot heap 1 and hallot ( 6502-alig)
here 4 - heap 4 cmove
heap last @ count $1F and + ! dp !
Does> ( - adr) @
state @ IF [compile] Literal THEN ;
: Label
[ Assembler ] here >label Assembler ;
Onlyforth

1
6502/Atari8bit/3.81.4/MATH.FS Executable file
View File

@ -0,0 +1 @@
\ A SINUS-TABLE 20OCT87RE\ SINUS-TABLE FROM FD Vol IV/1| : TABLE ( VALUES N -) CREATE 0 DO , LOOP ;CODE ( N - VALUE) SP Ø) LDA CLC 1 # ADC .A ASL TAY W )Y LDA SP X) STA INY W )Y LDA 1 # LDY SP )Y STA NEXT JMP END-CODE10000 9998 9994 9986 9976 9962 9945 9925 9903 9877 9848 9816 9781 9744 9703 9659 9613 9563 9511 9455 9397 9336 9272 9205 9135 9063 8988 8910 8829 8746 8660 8572 8480 8387 8290 8192 8090 7986 7880 7771 7660 7547 7431 7314 7193 7071 6947 6820 6691 6561 6428 6293 6157 6018 5878 5736 5592 5446 5299 5150 5000 4848 4695 4540 4384 4226 4067 3907 3746 3584 3420 3256 3090 2924 2756 2588 2419 2250 2079 1908 1736 1564 1392 1219 1045 0872 0698 0523 0349 0175 0000&91 | TABLE SINTABLE| : S180 ( DEG -- SIN*10000:SIN 0-180) DUP &90 > IF &180 SWAP - THEN SINTABLE ;: SIN ( DEG -- SIN*10000) &360 MOD DUP 0< IF &360 + THEN DUP &180 > IF &180 - S180 NEGATE ELSE S180 THEN ;: COS ( DEG -- COS*10000) &360 MOD &90 + SIN ;: TAN ( DEG -- TAN*10000) DUP SIN SWAP COS ?DUP IF &100 SWAP */ ELSE 3 * THEN ;CODE D2* ( D1 - D2) 2 # LDA SETUP JSR N 2+ ASL N 3 + ROL N ROL N 1+ ROL SP 2DEC N 3 + LDA SP )Y STA N 2+ LDA SP X) STA SP 2DEC N 1+ LDA SP )Y STA N LDA SP X) STA NEXT JMP END-CODE: DU< &32768 + ROT &32768 + ROT ROT D< ;| : EASY-BITS ( N1 -- N2) 0 DO >R D2* D2* R@ - DUP 0< IF R@ + R> 2* 1- ELSE R> 2* 3 + THEN LOOP ;| : 2'S-BIT >R D2* DUP 0< IF D2* R@ - R> 1+ ELSE D2* R@ 2DUP U< IF DROP R> 1- ELSE - R> 1+ THEN THEN ;| : 1'S-BIT >R DUP 0< IF 2DROP R> 1+ ELSE D2* &32768 R@ DU< 0= NEGATE Ò> + THEN ;: SQRT ( UD1 - U2) 0 1 8 EASY-BITS ROT DROP 6 EASY-BITS 2'S-BIT 1'S-BIT ;\ Test\\ : XX \ &16 * &62500 UM*\ SQRT 0 <# # # # ASCII . HOLD #S #>\ TYPE SPACE ;CODE 100* ( N1 - N2) SP Ø) LDA N STA SP )Y LDA N 1+ STA N ASL N 1+ ROL N ASL N 1+ ROL N LDA N 2+ STA N 1+ LDA N 3 + STA N 2+ ASL N 3 + ROL N 2+ ASL N 3 + ROL N 2+ ASL N 3 + ROL CLC N LDA N 2+ ADC N STA N 1+ LDA N 3 + ADC N 1+ STA N 2+ ASL N 3 + ROL CLC N LDA N 2+ ADC SP X) STA N 1+ LDA N 3 + ADC SP )Y STA NEXT JMP END-CODELABEL 4/+ N 7 + LSR N 6 + ROR N 5 + ROR N 4 + ROR N 7 + LSR N 6 + ROR N 5 + ROR N 4 + ROR CLC N LDA N 4 + ADC N STA N 1+ LDA N 5 + ADC N 1+ STA SP X) LDA N 6 + ADC SP X) STA SP )Y LDA N 7 + ADC SP )Y STA RTSCODE 100U/ ( U - N) N STX N 4 + STX SP X) LDA .A ASL N 1+ STA N 5 + STA SP )Y LDA .A ROL SP X) STA N 6 + STA TXA .A ROL SP )Y STA N 7 + STA 4/+ JSR N 7 + LSR N 6 + ROR N 5 + ROR N 4 + ROR 4/+ JSR NEXT JMP END-CODE

19
6502/Atari8bit/3.81.4/array.fs Executable file
View File

@ -0,0 +1,19 @@
\ Arrays with bounds checking
| : (ARRAYERROR
ABORT" Array out of bounds!" ;
: ARRAY ( size -- )
CREATE DUP , 2* ALLOT
DOES> ( i -- addr )
OVER 0< (ARRAYERROR
2DUP @ 1- - 0> (ARRAYERROR
SWAP 1+ 2* + ;
: CARRAY ( size -- )
CREATE DUP , ALLOT
DOES> ( i -- addr )
OVER 0< (ARRAYERROR
2DUP @ 1- - 0> (ARRAYERROR
+ 1+ ;

257
6502/Atari8bit/3.81.4/atariio.fs Executable file
View File

@ -0,0 +1,257 @@
PRT2C ok
14 0 pall ATARIIO.FB Scr 0 Dr 0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ATARIIO.FB Scr 1 Dr 0
0 \ loadscreen fuer ATARI 8bit cas11aug06
1 \ 800 / 600 XL / 800 XL / 1200 XL / 130 XE / 65 XE / 800 XE
2
3 1 &14 +thru
4
5
6
7
8
9
10
11
12
13
14
15
ATARIIO.FB Scr 2 Dr 0
0 \ 65KEY? GETKEY cas09jan07
1
2 | $02FC Constant CH
3 | CODE 65KEY? ( -- FLAG) CH lda clc 1 # adc push0a jmp end-code
4
5 LABEL GETCHK $E425 lda pha $E424 lda pha rts
6 | CODE GETKEY ( -- 8B) $FF sty $FE stx GETCHK jsr
7 $FE ldx $FF ldy push0a jmp end-code
8
9 | $02F0 Constant CRSINH
10 | CODE CURON ( --) 01 # lda
11 LABEL CRS01 CRSINH sta NEXT JMP END-CODE
12 | CODE CUROFF ( --) 00 # lda CRS01 JMP END-CODE
13
14 | : 65KEY ( -- 8B)
15 CURON BEGIN PAUSE 65KEY? UNTIL CUROFF GETKEY ;
ATARIIO.FB Scr 3 Dr 0
0 \ DECODE EXPECT KEYBOARD BP28MAY85) cas09jan07
1 $7E CONSTANT #BS $9B CONSTANT #CR &27 CONSTANT #ESC
2
3 | : 65DECODE ( ADDR CNT1 KEY -- ADDR CNT2)
4 #BS CASE? IF DUP IF DEL 1- THEN EXIT THEN
5 #CR CASE? IF DUP SPAN ! EXIT THEN
6 >R 2DUP + R@ SWAP C! R> EMIT 1+ ;
7
8 | : 65EXPECT ( ADDR LEN1 -- ) SPAN ! 0
9 BEGIN DUP SPAN @ U<
10 WHILE KEY DECODE
11 REPEAT 2DROP SPACE ;
12
13 INPUT: KEYBOARD [ HERE INPUT ! ]
14 65KEY 65KEY? 65DECODE 65EXPECT [
15
ATARIIO.FB Scr 4 Dr 0
0 \ (emit 65emit ) cas09jan07
1
2 LABEL OUTCHK
3 $E407 lda pha $E406 lda pha txa rts
4
5 | Code (emit ( 8b -- ) $FF sty $FE stx
6 SP X) lda tax OUTCHK jsr
7 $FE ldx $FF ldy (drop jmp end-code
8
9
10
11
12
13
14
15
ATARIIO.FB Scr 5 Dr 0
0 \ EMIT CR DEL PAGE AT AT? 25JAN85RE) cas09jan07
1
2 | &40 Constant c/row
3
4 | : 65emit ( 8b -- ) (emit ;
5
6 | : 65CR #CR 65emit ;
7
8 | : 65DEL #bs 65emit SPACE #bs 65emit ;
9
10 | : 65PAGE &125 EMIT ;
11
12 | : 65at ( row col -- ) $55 ! $54 C! ;
13
14 | : 65AT? ( -- ROW COL ) $54 C@ $55 @ ;
15
ATARIIO.FB Scr 6 Dr 0
0 \ cas09jan07
1
2 | : 65type ( adr len -- ) bounds ?DO I c@ emit LOOP ;
3
4
5
6
7
8
9
10
11
12
13
14
15
ATARIIO.FB Scr 7 Dr 0
0 \ TYPE DISPLAY (BYE BP 28MAY85RE) cas09dec05
1
2 OUTPUT: DISPLAY [ HERE OUTPUT ! ]
3 65EMIT 65CR 65TYPE 65DEL 65PAGE 65AT 65AT? [
4
5 \ fix dosini vector and jump through dosvec
6 | code (bye warmboot 1+ lda $0C sta warmboot 2+ lda
7 $0D sta $000A ) jmp end-code
8
9
10
11
12
13
14
15
ATARIIO.FB Scr 8 Dr 0
0 \ FileInterface cas09jan07
1
2
3 \ definitions for fileinterface
4
5 &4 CONSTANT R/O &8 CONSTANT W/O &12 CONSTANT R/W
6 3 CONSTANT IO-OPEN 5 CONSTANT IO-GETREC 7 CONSTANT IO-GETCHR
7 9 CONSTANT IO-PUTREC $B CONSTANT IO-PUTCHR $C CONSTANT IO-CLOSE
8
9 $340 CONSTANT ICFLG $342 CONSTANT ICCOM $343 CONSTANT ICSTA
10 $344 CONSTANT ICBAL $345 CONSTANT ICBAH $348 CONSTANT ICBLL
11 $349 CONSTANT ICBLH $34A CONSTANT ICAX1 $34B CONSTANT ICAX2
12 $E456 CONSTANT CIOV
13
14
15
ATARIIO.FB Scr 9 Dr 0
0 \ definitions for fileinterface cas09jan07
1
2 label freeiocb0 70 # lda label freeiocb2 tay ICFLG ,y lda
3 $FF # cmp 0<> ?[ tya sec $10 # sbc freeiocb2 bne ]?
4 tya rts
5
6 | code freeiocb freeiocb0 jsr .a lsr .a lsr .a lsr .a lsr pha
7 push0a jmp end-code
8
9 label getfileid sp x) lda .a ASL .a ASL .a ASL .a ASL tay rts
10
11 label getparam 2 # ldy sp )y lda ICBLL ,x sta
12 iny sp )y lda ICBLH ,x sta
13 iny sp )y lda ICBAL ,x sta
14 iny sp )y lda ICBAH ,x sta
15 rts
ATARIIO.FB Scr 10 Dr 0
0 \ definitions for fileinterface cas13dec05
1
2 code close-file getfileid jsr tax IO-CLOSE # lda ICCOM ,x sta
3 CIOV jsr sp 2inc ICSTA ,x lda 0>= ?[ 0 # lda ]? pha
4 PUSH0A jmp end-code
5
6 code open-file freeiocb0 jsr tax IO-OPEN # lda ICCOM ,y sta
7 4 # ldy sp )y lda ICBAL ,x sta
8 iny sp )y lda ICBAH ,x sta
9 0 # ldy sp )y lda ICAX1 ,x sta
10 tya ICAX2 ,x sta
11 CIOV jsr sp 2inc 0 # ldy ICSTA ,x lda sp )y sta
12 0>= ?[ 0 # lda sp )y sta ]? 0 # lda tay iny sp )y sta
13 iny iny sp )y sta txa clc .a lsr .a lsr .a lsr
14 .a lsr dey sp )y sta xynext jmp end-code
15
ATARIIO.FB Scr 11 Dr 0
0 \ definitions for fileinterface cas11aug06
1
2 code read-file ( caddr u fileid -- u2 ior )
3 getfileid jsr tax getparam jsr
4 IO-GETCHR # lda ICCOM ,x sta
5 CIOV jsr sp 2inc 0 # ldy
6 ICSTA ,x lda sp )y sta
7 0>= ?[ 0 # lda sp )y sta ]? tya iny sp )y sta
8 clc iny ICBLL ,x lda sp )y sta
9 iny ICBLH ,x lda sp )y sta xynext jmp end-code
10
11
12
13
14
15
ATARIIO.FB Scr 12 Dr 0
0 \ definitions for fileinterface cas11aug06
1
2 code read-line ( caddr u fileid -- u2 flag ior )
3 getfileid jsr tax getparam jsr
4 IO-GETREC # lda ICCOM ,x sta
5 CIOV jsr 0 # ldy
6 ICSTA ,x lda
7 0>= ?[ tya ]? sp )y sta
8 4 # ldy ICBLL ,x lda sp )y sta
9 ICBAL ,x adc tay dey n sty 5 # ldy ICBLH ,x lda sp )y sta
10 ICBAH ,x adc n 1+ sta 0 # lda tay n )y sta iny
11 sp )y sta iny sp )y sta iny sp )y sta xynext jmp end-code
12
13
14
15
ATARIIO.FB Scr 13 Dr 0
0 \ definitions for fileinterface cas11aug06
1
2 code write-file ( caddr u fileid -- ior )
3 getfileid jsr tax getparam jsr
4 IO-PUTCHR # lda ICCOM ,x sta
5 CIOV jsr sp 2inc sp 2inc 0 # ldy
6 ICSTA ,x lda sp )y sta
7 0>= ?[ 0 # lda sp )y sta ]?
8 xynext jmp end-code
9
10
11
12
13
14
15
ok
display PRT2C ATARIIO.FB Scr 14 Dr 0
0 \ definitions for fileinterface cas09jan07
1 VARIABLE SOURCE-ID 0 SOURCE-ID !
2 | $580 CONSTANT FNBUF
3 : REFILL tib $50 erase tib $50 SOURCE-ID @ READ-LINE
4 ROT 1 - #tib ! >in off nip ;
5 : INCLUDE-FILE ( fileid -- )
6 SOURCE-ID ! BEGIN REFILL $80 < WHILE INTERPRET .STATUS REPEAT
7 SOURCE-ID @ CLOSE-FILE ABORT" File Error" ;
8 : INCLUDED ( caddr u -- )
9 SOURCE-ID @ >R R/O OPEN-FILE DUP $80 < IF DROP
10 INCLUDE-FILE HERE $50 ERASE #TIB @ >IN ! ELSE
11 ." FileError:" . ABORT THEN R> SOURCE-ID ! ;
12 : FILE" FNBUF $50 BL FILL HERE $50 BL FILL ASCII " WORD
13 COUNT FNBUF SWAP CMOVE FNBUF 0 ;
14 : INCLUDE" ( FNAME ) FILE" INCLUDED ; IMMEDIATE
15

2178
6502/Atari8bit/3.81.4/atarivf.fs Executable file

File diff suppressed because it is too large Load Diff

119
6502/Atari8bit/3.81.4/math.txt Executable file
View File

@ -0,0 +1,119 @@
\ A SINUS-TABLE 20OCT87RE
\ SINUS-TABLE FROM FD Vol IV/1
| : TABLE ( VALUES N -)
CREATE 0 DO , LOOP
;CODE ( N - VALUE)
SP Ø) LDA CLC 1 # ADC .A ASL TAY
W )Y LDA SP X) STA
INY W )Y LDA 1 # LDY SP )Y STA
NEXT JMP END-CODE
10000 9998 9994 9986 9976 9962 9945 9925
9903 9877 9848 9816 9781 9744 9703 9659
9613 9563 9511 9455 9397 9336 9272 9205
9135 9063 8988 8910 8829 8746 8660 8572
8480 8387 8290 8192 8090 7986 7880 7771
7660 7547 7431 7314 7193 7071 6947 6820
6691 6561 6428 6293 6157 6018 5878 5736
5592 5446 5299 5150 5000 4848 4695 4540
4384 4226 4067 3907 3746 3584 3420 3256
3090 2924 2756 2588 2419 2250 2079 1908
1736 1564 1392 1219 1045 0872 0698 0523
0349 0175 0000
&91 | TABLE SINTABLE
| : S180 ( DEG -- SIN*10000:SIN 0-180)
DUP &90 >
IF &180 SWAP - THEN
SINTABLE ;
: SIN ( DEG -- SIN*10000)
&360 MOD DUP 0< IF &360 + THEN
DUP &180 >
IF &180 - S180 NEGATE
ELSE S180 THEN ;
: COS ( DEG -- COS*10000)
&360 MOD &90 + SIN ;
: TAN ( DEG -- TAN*10000)
DUP SIN SWAP COS ?DUP
IF &100 SWAP */ ELSE 3 * THEN ;
CODE D2* ( D1 - D2)
2 # LDA SETUP JSR
N 2+ ASL N 3 + ROL N ROL N 1+ ROL
SP 2DEC N 3 + LDA SP )Y STA
N 2+ LDA SP X) STA
SP 2DEC N 1+ LDA SP )Y STA
N LDA SP X) STA
NEXT JMP END-CODE
: DU< &32768 + ROT &32768 + ROT ROT D< ;
| : EASY-BITS ( N1 -- N2)
0 DO
>R D2* D2* R@ - DUP 0<
IF R@ + R> 2* 1-
ELSE R> 2* 3 +
THEN
LOOP ;
| : 2'S-BIT
>R D2* DUP 0<
IF D2* R@ - R> 1+
ELSE D2* R@ 2DUP U<
IF DROP R> 1- ELSE - R> 1+ THEN
THEN ;
| : 1'S-BIT
>R DUP 0<
IF 2DROP R> 1+
ELSE D2* &32768 R@ DU< 0=
NEGATE Ò> +
THEN ;
: SQRT ( UD1 - U2)
0 1 8 EASY-BITS
ROT DROP 6 EASY-BITS
2'S-BIT 1'S-BIT ;
\ Test
\
\ : XX
\ &16 * &62500 UM*
\ SQRT 0 <# # # # ASCII . HOLD #S #>
\ TYPE SPACE ;
CODE 100* ( N1 - N2)
SP Ø) LDA N STA SP )Y LDA N 1+ STA
N ASL N 1+ ROL N ASL N 1+ ROL
N LDA N 2+ STA N 1+ LDA N 3 + STA
N 2+ ASL N 3 + ROL N 2+ ASL N 3 + ROL
N 2+ ASL N 3 + ROL
CLC N LDA N 2+ ADC N STA
N 1+ LDA N 3 + ADC N 1+ STA
N 2+ ASL N 3 + ROL
CLC N LDA N 2+ ADC SP X) STA
N 1+ LDA N 3 + ADC SP )Y STA
NEXT JMP END-CODE
LABEL 4/+
N 7 + LSR N 6 + ROR N 5 + ROR N 4 + ROR
N 7 + LSR N 6 + ROR N 5 + ROR N 4 + ROR
CLC N LDA N 4 + ADC N STA
N 1+ LDA N 5 + ADC N 1+ STA
SP X) LDA N 6 + ADC SP X) STA
SP )Y LDA N 7 + ADC SP )Y STA RTS
CODE 100U/ ( U - N)
N STX N 4 + STX
SP X) LDA .A ASL N 1+ STA N 5 + STA
SP )Y LDA .A ROL SP X) STA N 6 + STA
TXA .A ROL SP )Y STA N 7 + STA
4/+ JSR
N 7 + LSR N 6 + ROR N 5 + ROR N 4 + ROR
4/+ JSR
NEXT JMP END-CODE

BIN
6502/Atari8bit/3.81.4/shell2.atr Executable file

Binary file not shown.

BIN
6502/Atari8bit/3.81.4/vf0608.atr Executable file

Binary file not shown.

BIN
6502/Atari8bit/3.81.4/vfdisk1.atr Executable file

Binary file not shown.

BIN
6502/Atari8bit/3.81.4/vfdisk2.atr Executable file

Binary file not shown.

BIN
6502/Atari8bit/3.81.4/vforth.com Executable file

Binary file not shown.

50
6502/Atari8bit/COPYING Executable file
View File

@ -0,0 +1,50 @@
Copyright (c) 1985-2005,
Forthgesellschaft e.V.
(www.forth-ev.de)
All rights reserved.
Redistribution and use in source
and binary forms, with or without
modification, are permitted provided
that the following conditions are met:
* Redistributions of source code
must retain the above copyright
notice, this list of conditions
and the following disclaimer.
* Redistributions in binary form
must reproduce the above copy-
right notice, this list of
conditions and the following
disclaimer in the documentation
and/or other materials provided
with the distribution.
* Neither the name of the
Forthgesellschaft e.V. nor the
names of its contributors may
be used to endorse or promote
products derived from this
software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPY-
RIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

152
6502/Atari8bit/OOF.TXT Executable file
View File

@ -0,0 +1,152 @@
\ Mini-OOF by Bernd Paysan
CR .( loading Mini-OOF ... )
: METHOD ( m v -- m' v )
CREATE OVER , SWAP 2+ SWAP
DOES> ( ... o -- ... )
@ OVER @ + @ EXECUTE ;
: VAR ( m v size -- )
CREATE OVER , +
DOES> ( o -- addr )
@ + ;
: CLASS ( class -- class methods vars )
DUP 2@ ;
: END-CLASS ( -- class methods vars )
CREATE HERE >R , DUP ,
4 ?DO ['] NOOP , 2 +LOOP
2+ DUP 2+ R> ROT @ 4 /STRING MOVE ;
: DEFINES ( xt class -- )
' >BODY @ + ! ;
: NEW ( class -- o )
HERE OVER @ ALLOT SWAP OVER ! ;
: :: ( class "name" -- )
' >BODY @ + @ , ;
CREATE OBJECT 2 , 4 ,
CR .( Mini-OOF loaded. )
\ Mini OOF Example
\needs class INCLUDE" D:MINIOOF.F"
CR .( loading OOF Example )
CR .( creating object class "animal" )
object class
2 var sound
2 var color
2 var kind
method init
method say
method present
end-class animal
CR .( Implementing Methods )
: m-say ( o -- )
cr ." it says "
sound @ COUNT TYPE ;
' m-say animal defines say
: m-present ( o -- )
cr ." This animal is a "
DUP color @ COUNT TYPE BL EMIT
kind @ COUNT TYPE ." !" ;
' m-present animal defines present
: m-init ( say color kind o -- )
>R
R@ SOUND !
R@ COLOR !
R> KIND ! ;
' m-init animal defines init
CR .( creating animal objects )
animal new constant dog
animal new constant cat
animal new constant eagle
CR .( initializing objects )
: S>A DROP 1- ; ( convert string to address )
S" MAMAL" S>A
S" BLACK" S>A
S" BARK BARK" S>A dog init
S" MAMAL" S>A
S" SILVER" S>A
S" MEOW MEOW" S>A cat init
S" BIRD" S>A
S" BROWN" S>A
S" ARK ARK" S>A eagle init
CR .( now lets the objects speak )
CR
dog present dog say
cat present cat say
eagle present eagle say
CR .( Finish! )
CR
\ String Ext.
CR .( loading String extensions )
: S" ASCII " PARSE
HERE 2DUP ! 1+
OVER 1+ ALLOT
2DUP 4 ROLL SWAP ROT
1+ MOVE SWAP ;
CR .( String extensions loaded )
\ 2! 2@ 2variable 2constant
cr .( Loading 2words ...)
\needs code INCLUDE" D:TAS65.F"
code 2! ( d addr -- )
tya setup jsr 3 # ldy
[[ sp )y lda n )y sta dey 0< ?]
1 # ldy poptwo jmp end-code
code 2@ ( addr -- d )
sp x) lda n sta sp )y lda n 1+ sta
sp 2dec 3 # ldy
[[ n )y lda sp )y sta dey 0< ?]
xyNext jmp end-code
: 2VARIABLE ( -- )
create 4 allot ;
: 2CONSTANT ( d -- )
CREATE , , DOES> ( -- d ) 2@ ;
\ 2dup exists
\ 2swap exists
\ 2drop exists
cr .( 2Words loaded. )

186
6502/Atari8bit/README.TXT Executable file
View File

@ -0,0 +1,186 @@
VolksForth Atari 8-bit Readme
Version 1.1
13. August 2006 (cas)
VolksForth is a 16bit Forth System
produced by the german Forth
Gesellschaft e.V. Main development
of this system was done between 1985
until 1989. The VolksForth Project was
revived in 2005 with the goal to
produce a managable Forthsystem for
computer systems with restricted system
resources.
Some modern Forth Systems were influenced
by or were derived from VolksForth
(GNU-Forth, bigForth).
The current Version of VolskForth is 3.81.
Work on Version 3.90 has started.
At this time VolksForth is available
for this Systems:
VolksForth MS-DOS (Intel x86
Architecture
i8086-ia64)
VolksForth 6502 (Commodore 64,
Commodore Plus 4,
Atari 8bit, Apple I)
VolksForth Z80 (CP/M,
Schneider CPC CP/M)
VolksForth 68000 (Atari ST)
VolksForth is in work for this Systems:
VolksForth MS-DOS (Atari Portfolio)
VolksForth 6502 (Apple II)
VolksForth Z80 (Schneider CPC AMSDOS)
VolksForth 68000 (Mac Classic)
Copyright
The VolksForth Sources are made avail-
able under the terms of the BSD License
http://www.opensource.org/licenses/bsd-license.php
The Handbook is Copyright (c)
1985 - 2006 Forth Gesellschaft e.V.
( Klaus Schleisiek, Ulrich Hoffmann,
Bernd Pennemann, Georg Rehfeld and
Dietrich Weineck).
The Handbook, binary Files and Source-
code for VolksForth as well as Informa-
tion about Forth Gesellschaft are
available on the Forth Gesellschaft
Webserver at http://www.forth-ev.de/
(most of the Information is still
in german. We are planning to provide
future versions with full englisch
documentation)
Information and Help about the Program-
ming Language Forth can be found in the
Internet, starting with the Website of
the Forthgesellschaft, or in the Usenet
Forum de.comp.lang.forth
(via Google Groups:
http://groups.google.de/group/de.comp.lang.forth )
Details on VolksForth 6502
(Atari 8bit)
* Requirements
Atari 8bit with 48 KB RAM, Floppy
Atari 800, 800XL, Atari 130 XE
600XL (+ Atari 1064),
* Files
This is list of VolksForth Files in
this Distribution.
DISK 1:
DOS.SYS
DUP.SYS - Atari DOS 2.5
VFORTH.COM - the plain volksForth
kernel
4TH.COM - volksForth binary
STAR4TH.COM - volksForth with
SPARTA/REAL/BEWE
DOS Extensions
DEBUG.COM - volksForth with
Debug Tools
(Tracer etc)
CALL.F - Sourcecode for CALL,
to call Machine-
language Suproutines
CREATE.F - Sourcecode for CREATE
DIR.F - Sourcecode for DIR and
DIR" Commands, to list
Diskdirectories
AS65.F - Sourcecode for the
resident 6502 Assembler
TAS65.F - Sourcecode for the
transient 6502 Assembler
(living in HEAP)
SAVESYS.F - Sourcecode for
SAVE-SYSTEM command
SIEVE.F - Primes Sieve Benchmark
4TH.F - Build volksForth binary
from plain kernel
README.TXT - This Text
COPYING - License Information
Disk 2
DOS.SYS
DUP.SYS - Atari DOS 2.5
4TH.COM - volksForth binary
COPYING - License Information
DEBUG.F - Script to build an
volksForth with
DEBUGGER
TAS65.F - Sourcecode for the
transient 6502 Assembler
(living in HEAP)
CREATE.F - Sourcecode for CREATE
TOOLS.F - Debugging Tools
TRACER.F - Interactive Tracer
DEBUGT.F - more Debugging Tools
SEE.F - build Decompiler without
Disassembler
SEE2.F - built Decompiler with
Disassembler
DISAS.F - 6502 Disassembler
DECOMP.F - volksForth Decompiler
DIS.F - build 6502 Disassembler
MTASK.F - volksForth Multitasker
MTDEMO.F - Multitask Demo
"RatRace"
CALL.F - Sourcecode for CALL,
to call Machine-
language Suproutines
SPARTA.F - Sparta/Real/BEWE-DOS
Support
LAUNCH.F - Sparta DOS CLI
Support
SPAR4TH.F - Build volksForth with
Sparta-DOS Support
TEST.F
TEST2.F
TEST3.F - Test Files for
nested INCLUDE"
* Editor
This verion of volksForth for Atari
8bit does not contain an Editor for
Sourcecode. An Forth Editor will be
supplied for Version 3.90. We
recommend Ken Siders KEDIT
( http://atari.ksiders.tzo.com/ )
or the CompyShop Editor.
* Emulator
VolksForth 6502 Atari 8bit 3.81 has
been tested in the Atari 8bit Emulator
"Atari800" (atari800.sourceforge.net)
The Forth Live-Linux CD-ROM (available
in the Downloadsection of the Forth
Gesellschaft Website) includes the
current Versions of VolksForth direct
usable without Installation including
the Handbooks as PDF-Files.
Have fun with VolksForth
the VolksForth Team

View File

@ -0,0 +1 @@
\ 2Words Loadscreen hex &2 &3 thru decimal \ 2! 2@ 2VARIABLE 2CONSTANT 08JUL85RE) CODE 2! ( D ADR --) TYA SETUP JSR 3 # LDY [[ SP )Y LDA N )Y STA DEY 0< ?] 1 # LDY POPTWO JMP END-CODE CODE 2@ ( ADR -- D) SP X) LDA N STA SP )Y LDA N 1+ STA SP 2DEC 3 # LDY [[ N )Y LDA SP )Y STA DEY 0< ?] XYNEXT JMP END-CODE \ : 2VARIABLE ( --) CREATE 4 ALLOT ; ( -- ADR) : 2CONSTANT ( D --) CREATE , , DOES> ( -- D) 2@ ; \ 2DUP EXISTS \ 2SWAP EXISTS \ 2DROP EXISTS

View File

@ -0,0 +1 @@
\ 2Words Loadscreen hex &2 &3 thru decimal \ 2! 2@ 2VARIABLE 2CONSTANT 08JUL85RE) CODE 2! ( D ADR --) TYA SETUP JSR 3 # LDY [[ SP )Y LDA N )Y STA DEY 0< ?] 1 # LDY POPTWO JMP END-CODE CODE 2@ ( ADR -- D) SP X) LDA N STA SP )Y LDA N 1+ STA SP 2DEC 3 # LDY [[ N )Y LDA SP )Y STA DEY 0< ?] XYNEXT JMP END-CODE \ : 2VARIABLE ( --) CREATE 4 ALLOT ; ( -- ADR) : 2CONSTANT ( D --) CREATE , , DOES> ( -- D) 2@ ; \ 2DUP EXISTS \ 2SWAP EXISTS \ 2DROP EXISTS

BIN
6502/Atari8bit/VForth35/4th.prg Executable file

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,192 @@
\ TRANSIENT FORTH-6502 ASSEMBLER WFR ) er14dez88
( BASIS: FORTH DIMENSIONS VOL III NO. 5)
( INTERNAL LOADING 04MAY85BP/RE)
hex
\ HERE $200 HALLOT HEAP DP !
&10 LOAD
&11 LOAD
3 &8 THRU
&9 LOAD \ for System-Assembler
\ DP !
ONLYFORTH
decimal
\ FORTH-65 ASSEMBLER WFR ) er14dez88
( BASIS: FORTH DIMENSIONS VOL III NO. 5)
ONLYFORTH
Vocabulary tassembler
TASSEMBLER ALSO DEFINITIONS
hex
8 +load \ relocate
1 6 +THRU
\ 7 +load \ System Assembler
decimal
\ FORTH-83 6502-ASSEMBLER ) er14dez88
: END-CODE CONTEXT 2- @ CONTEXT ! ;
CREATE INDEX
09 c, 09 c, 05 c, 15 c, 15 c, 01 c, 11 c, 80 c,
09 c, 80 c, 0D c, 1D c, 19 c, 80 c, 80 c, 80 c,
80 c, 00 c, 04 c, 14 c, 14 c, 80 c, 80 c, 80 c,
80 c, 80 c, 0C c, 1C c, 1C c, 80 c, 80 c, 2C c,
| VARIABLE MODE
: MODE: ( N -) CREATE C, DOES> ( -) C@ MODE ! ;
0 MODE: .A 1 MODE: # 2 | MODE: MEM 3 MODE: ,X
4 MODE: ,Y 5 MODE: X) 6 MODE: )Y 0F MODE: )
6 MODE: )Y 0F MODE: ) 6 MODE: )Y 0F MODE: )
6 MODE: )Y 0F MODE: ) 6 MODE: )Y 0F MODE: )
\ UPMODE CPU ) er14dez88
| : UPMODE ( ADDR0 F0 - ADDR1 F1)
IF MODE @ 8 OR MODE ! THEN 1 MODE @ 0F AND ?DUP IF
0 DO DUP + LOOP THEN OVER 1+ @ AND 0= ;
: CPU ( 8B -) CREATE C, DOES> ( -) C@ >c, MEM ;
00 CPU BRK 18 CPU CLC D8 CPU CLD
58 CPU CLI B8 CPU CLV CA CPU DEX
88 CPU DEY E8 CPU INX C8 CPU INY
EA CPU NOP 48 CPU PHA 08 CPU PHP
68 CPU PLA 28 CPU PLP 40 CPU RTI
60 CPU RTS 38 CPU SEC F8 CPU SED
78 CPU SEI AA CPU TAX A8 CPU TAY
BA CPU TSX 8A CPU TXA 9A CPU TXS
98 CPU TYA
\ M/CPU ) er14dez88
: M/CPU ( MODE OPCODE -) CREATE C, , DOES>
DUP 1+ @ 80 AND IF 10 MODE +! THEN OVER FF00 AND UPMODE UPMODE
IF MEM TRUE ABORT" INVALID" THEN
C@ MODE @ INDEX + C@ + >c, MODE @ 7 AND
IF MODE @ 0F AND 7 < IF >c, ELSE >, THEN THEN MEM ;
1C6E 60 M/CPU ADC 1C6E 20 M/CPU AND 1C6E C0 M/CPU CMP
1C6E 40 M/CPU EOR 1C6E A0 M/CPU LDA 1C6E 00 M/CPU ORA
1C6E E0 M/CPU SBC 1C6C 80 M/CPU STA 0D0D 01 M/CPU ASL
0C0C C1 M/CPU DEC 0C0C E1 M/CPU INC 0D0D 41 M/CPU LSR
0D0D 21 M/CPU ROL 0D0D 61 M/CPU ROR 0414 81 M/CPU STX
0486 E0 M/CPU CPX 0486 C0 M/CPU CPY 1496 A2 M/CPU LDX
0C8E A0 M/CPU LDY 048C 80 M/CPU STY 0480 14 M/CPU JSR
8480 40 M/CPU JMP 0484 20 M/CPU BIT
\ ASSEMBLER CONDITIONALS ) er14dez88
| : RANGE? ( BRANCH -- BRANCH )
DUP ABS 07F U> ABORT" OUT OF RANGE " ;
: [[ ( BEGIN) >here ;
: ?] ( UNTIL) >c, >here 1+ - RANGE? >c, ;
: ?[ ( IF) >c, >here 0 >c, ;
: ?[[ ( WHILE) ?[ SWAP ;
: ]? ( THEN) >here OVER >c@ IF SWAP >!
ELSE OVER 1+ - RANGE? SWAP >c! THEN ;
: ][ ( ELSE) >here 1+ 1 JMP
SWAP >here OVER 1+ - RANGE? SWAP >c! ;
: ]] ( AGAIN) JMP ;
: ]]? ( REPEAT) JMP ]? ;
\ ASSEMBLER CONDITIONALS ) er14dez88
90 CONSTANT CS B0 CONSTANT CC
D0 CONSTANT 0= F0 CONSTANT 0<>
10 CONSTANT 0< 30 CONSTANT 0>=
50 CONSTANT VS 70 CONSTANT VC
: NOT 20 [ FORTH ] XOR ;
: BEQ 0<> ?] ; : BMI 0>= ?] ;
: BNE 0= ?] ; : BPL 0< ?] ;
: BCC CS ?] ; : BVC VS ?] ;
: BCS CC ?] ; : BVS VC ?] ;
\ 2INC/2DEC WINC/WDEC KS 19 MAY 84 ) er14dez88
: 2INC
DUP LDA CLC 2 # ADC DUP STA CS ?[ SWAP 1+ INC ]? ;
: 2DEC
DUP LDA SEC 2 # SBC DUP STA CC ?[ SWAP 1+ DEC ]? ;
: WINC DUP INC 0= ?[ SWAP 1+ INC ]? ;
: WDEC DUP LDA 0= ?[ OVER 1+ DEC ]? DEC ;
: ;C: RECOVER JSR END-CODE ] 0 LAST ! 0 ;
\ ;CODE CODE CODE> BP 03 02 85) er14dez88
ONLYFORTH
: ASSEMBLER ASSEMBLER [ ASSEMBLER ] MEM ;
: ;CODE [COMPILE] DOES> -3 >allot
[COMPILE] ; -2 >allot ASSEMBLER ; IMMEDIATE
: CODE CREATE >here DUP 2- >! ASSEMBLER ;
: >LABEL ( ADR -)
>here | CREATE SWAP , 4 HALLOT
HEAP 1 AND HALLOT ( 6502-ALIGN) HERE 4 - HEAP 4 CMOVE
HEAP LAST @ COUNT 01F AND + ! DP ! DOES> ( - ADR) @ ;
: LABEL [ ASSEMBLER ] >here >LABEL ASSEMBLER ;
\ Code generating primitives er14dez88
Variable >codes
| Create nrc ] c, , c@ here allot ! c! [
: nonrelocate nrc >codes ! ; nonrelocate
| : >exec Create c,
Does> c@ >codes @ + @ execute ;
| 0 >exec >c, | 2 >exec >, | 4 >exec >c@
| 6 >exec >here | 8 >exec >allot | $0A >exec >!
| $0C >exec >c!
\ FORTH-65 ASSEMBLER WFR ) er14dez88
( BASIS: FORTH DIMENSIONS VOL III NO. 5)
ONLYFORTH
ASSEMBLER ALSO DEFINITIONS

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,304 @@
\ loadscreen fuer ATARI 8bit cas11aug06
\ 800 / 600 XL / 800 XL / 1200 XL / 130 XE / 65 XE / 800 XE
1 &14 +thru
\ 65KEY? GETKEY cas11aug06
| $02FC Constant CH
| CODE 65KEY? ( -- FLAG) CH lda clc 1 # adc push0a jmp end-code
LABEL GETCHK $E425 lda pha $E424 lda pha rts
| CODE GETKEY ( -- 8B) $FF sty $FE stx GETCHK jsr
$FE ldx $FF ldy push0a jmp end-code
| $02F0 Constant CRSINH
| CODE CURON ( --) 01 # lda
LABEL CRS01 CRSINH sta NEXT JMP END-CODE
| CODE CUROFF ( --) 00 # lda CRS01 JMP END-CODE
: 65KEY ( -- 8B)
CURON BEGIN PAUSE 65KEY? UNTIL CUROFF GETKEY ;
\ DECODE EXPECT KEYBOARD BP28MAY85) cs08aug05
7E CONSTANT #BS $9B CONSTANT #CR &27 CONSTANT #ESC
: 65DECODE ( ADDR CNT1 KEY -- ADDR CNT2)
#BS CASE? IF DUP IF DEL 1- THEN EXIT THEN
#CR CASE? IF DUP SPAN ! EXIT THEN
>R 2DUP + R@ SWAP C! R> EMIT 1+ ;
: 65EXPECT ( ADDR LEN1 -- ) SPAN ! 0
BEGIN DUP SPAN @ U<
WHILE KEY DECODE
REPEAT 2DROP SPACE ;
INPUT: KEYBOARD [ HERE INPUT ! ]
65KEY 65KEY? 65DECODE 65EXPECT [
\ (emit 65emit ) cas11aug06
LABEL OUTCHK
$E407 lda pha $E406 lda pha txa rts
Code (emit ( 8b -- ) $FF sty $FE stx
SP X) lda tax OUTCHK jsr
$FE ldx $FF ldy (drop jmp end-code
\ EMIT CR DEL PAGE AT AT? 25JAN85RE) cas13aug06
| &40 Constant c/row
: 65emit ( 8b -- ) (emit ;
: 65CR #CR 65emit ;
: 65DEL #bs 65emit SPACE #bs 65emit ;
: 65PAGE &125 EMIT ;
: 65at ( row col -- ) $55 ! $54 C! ;
: 65AT? ( -- ROW COL ) $54 C@ $55 @ ;
\ er14dez88
: 65type ( adr len -- ) bounds ?DO I c@ emit LOOP ;
\ TYPE DISPLAY (BYE BP 28MAY85RE) cas09dec05
OUTPUT: DISPLAY [ HERE OUTPUT ! ]
65EMIT 65CR 65TYPE 65DEL 65PAGE 65AT 65AT? [
\ fix dosini vector and jump through dosvec
| code (bye warmboot 1+ lda $0C sta warmboot 2+ lda
$0D sta $000A ) jmp end-code
\ B/BLK cas21dec05
$400 CONSTANT B/BLK
\ definitions for fileinterface
&4 CONSTANT R/O &8 CONSTANT W/O &12 CONSTANT R/W
3 CONSTANT IO-OPEN 5 CONSTANT IO-GETREC 7 CONSTANT IO-GETCHR
9 CONSTANT IO-PUTREC $B CONSTANT IO-PUTCHR $C CONSTANT IO-CLOSE
$340 CONSTANT ICFLG $342 CONSTANT ICCOM $343 CONSTANT ICSTA
$344 CONSTANT ICBAL $345 CONSTANT ICBAH $348 CONSTANT ICBLL
$349 CONSTANT ICBLH $34A CONSTANT ICAX1 $34B CONSTANT ICAX2
$E456 CONSTANT CIOV
\ definitions for fileinterface cas11aug06
label freeiocb0 70 # lda label freeiocb2 tay ICFLG ,y lda
$FF # cmp 0<> ?[ tya sec $10 # sbc freeiocb2 bne ]?
tya rts
code freeiocb freeiocb0 jsr .a lsr .a lsr .a lsr .a lsr pha
push0a jmp end-code
label getfileid sp x) lda .a ASL .a ASL .a ASL .a ASL tay rts
label getparam 2 # ldy sp )y lda ICBLL ,x sta
iny sp )y lda ICBLH ,x sta
iny sp )y lda ICBAL ,x sta
iny sp )y lda ICBAH ,x sta
rts
\ definitions for fileinterface cas13dec05
code close-file getfileid jsr tax IO-CLOSE # lda ICCOM ,x sta
CIOV jsr sp 2inc ICSTA ,x lda 0>= ?[ 0 # lda ]? pha
PUSH0A jmp end-code
code open-file freeiocb0 jsr tax IO-OPEN # lda ICCOM ,y sta
4 # ldy sp )y lda ICBAL ,x sta
iny sp )y lda ICBAH ,x sta
0 # ldy sp )y lda ICAX1 ,x sta
tya ICAX2 ,x sta
CIOV jsr sp 2inc 0 # ldy ICSTA ,x lda sp )y sta
0>= ?[ 0 # lda sp )y sta ]? 0 # lda tay iny sp )y sta
iny iny sp )y sta txa clc .a lsr .a lsr .a lsr
.a lsr dey sp )y sta xynext jmp end-code
\ definitions for fileinterface cas11aug06
code read-file ( caddr u fileid -- u2 ior )
getfileid jsr tax getparam jsr
IO-GETCHR # lda ICCOM ,x sta
CIOV jsr sp 2inc 0 # ldy
ICSTA ,x lda sp )y sta
0>= ?[ 0 # lda sp )y sta ]? tya iny sp )y sta
clc iny ICBLL ,x lda sp )y sta
iny ICBLH ,x lda sp )y sta xynext jmp end-code
\ definitions for fileinterface cas11aug06
code read-line ( caddr u fileid -- u2 flag ior )
getfileid jsr tax getparam jsr
IO-GETREC # lda ICCOM ,x sta
CIOV jsr 0 # ldy
ICSTA ,x lda
0>= ?[ tya ]? sp )y sta
4 # ldy ICBLL ,x lda sp )y sta
ICBAL ,x adc tay dey n sty 5 # ldy ICBLH ,x lda sp )y sta
ICBAH ,x adc n 1+ sta 0 # lda tay n )y sta iny
sp )y sta iny sp )y sta iny sp )y sta xynext jmp end-code
\ definitions for fileinterface cas11aug06
code write-file ( caddr u fileid -- ior )
getfileid jsr tax getparam jsr
IO-PUTCHR # lda ICCOM ,x sta
CIOV jsr sp 2inc sp 2inc 0 # ldy
ICSTA ,x lda sp )y sta
0>= ?[ 0 # lda sp )y sta ]?
xynext jmp end-code
\ definitions for fileinterface cas11aug06
VARIABLE SOURCE-ID 0 SOURCE-ID !
$580 CONSTANT FNBUF
: REFILL tib $50 erase tib $50 SOURCE-ID @ READ-LINE
ROT 1 - #tib ! >in off blk off nip ;
: INCLUDE-FILE ( fileid -- )
SOURCE-ID ! BEGIN REFILL $80 < WHILE INTERPRET REPEAT
SOURCE-ID @ CLOSE-FILE ABORT" File Error" ;
: INCLUDED ( caddr u -- )
SOURCE-ID @ >R R/O OPEN-FILE DUP $80 < IF DROP
INCLUDE-FILE HERE $50 ERASE #TIB @ >IN ! ELSE
." FileError:" . ABORT THEN R> SOURCE-ID ! ;
: FILE" FNBUF $50 BL FILL HERE $50 BL FILL ASCII " WORD
COUNT FNBUF SWAP CMOVE FNBUF 0 ;
: INCLUDE" ( FNAME ) FILE" INCLUDED ; IMMEDIATE
\ cas21dec05

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

1
6502/Atari8bit/VForth35/C.FB Executable file
View File

@ -0,0 +1 @@
\ Atari 8bit volksForth Compile Script cas11aug06 .( Include 68000 Assembler for Cross-Compiler ) CR include assemble.fb .( Include 6502 Assembler ) CR 2 loadfrom as65.fb CR .( Include volksForth Cross-Compiler ) CR include crostarg.fb CR .( Include Atari 8bit volksForth Kernel Source ) CR include atarivf.fb CR .( Save new Atari 8bit volksForth Kernel File ) CR save-target vforth.com key drop page .( Ready ) CR

1
6502/Atari8bit/VForth35/C.SCR Executable file
View File

@ -0,0 +1 @@
\ cas08dec05include assemble.scr 2 loadfrom as65.scr page include crostarg.scr page include 6502f83.scr save-target f6502.com key drop page .( Ready ) cr

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
6502/Atari8bit/VForth35/bin2hex Executable file

Binary file not shown.

161
6502/Atari8bit/VForth35/bin2hex.c Executable file
View File

@ -0,0 +1,161 @@
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/stat.h>
void help(char *name)
{
printf("%s - BINARY to Intel HEX file convertor version 1.00\n"\
"(c)BCL Vysoke Myto 2001 (benedikt@lphard.cz)\n\n",name);
printf("Usage: %s [-option] binfile hexfile\n"\
" -l Bytes to read from binary file\n"\
" -i Binary file starting offset\n"\
" -o Output file offset (where HEX data starts)\n"\
" -t Exclude EOF record\n"\
" -a Append to end of existing HEX file\n"\
" -q Quiet mode (no statistics are printed)\n", name);
}
int main(int argc,char *argv[])/*Main routine*/
{
char *ifile = NULL;
char *ofile = NULL;
char c;
FILE *inp, *outp;
int ch,csum;
int ofsa = 0;
int cnt = 0;
struct stat statbuf;
long int foffset = 0;
long int fsize = 0;
long int fsub;
long int fpoint = 0;
long int adrs = 0;
unsigned char quiet = 0;
unsigned char eofrec = 0;
unsigned char append = 0;
opterr = 0; //print error message if unknown option
while ((c = getopt (argc, argv, "l:i:o:taqv")) != -1)
switch (c) {
case 'l':
fsize = atol(optarg);
break;
case 'i':
foffset = atol(optarg);
break;
case 'o':
adrs = atol(optarg);
break;
case 't':
eofrec = 1;
break;
case 'a':
append = 1;
break;
case 'q':
quiet = 1;
break;
case 'v':
printf("%s - BINARY to Intel HEX file convertor version 1.00\n"\
"(c)BCL Vysoke Myto 2001 (benedikt@lphard.cz)\n",argv[0]);
return 0;
case '?':
help (argv[0]);
return 1;
}
if ((argc - optind) != 2) {
printf("ERROR: Missing input/output file.\n");
help(argv[0]);
return 1;
}
ifile = argv[optind];
ofile = argv[optind+1];
/*Open file check*/
if((inp = fopen(ifile, "rb")) == NULL){
printf("ERROR: Cannot open input file.\n");
return 1;
}
fseek (inp, foffset, SEEK_SET);
if (append == 0) {
if((outp = fopen(ofile, "wt")) == NULL){
printf("ERROR: Cannot open output file.\n");
return 1;
}
} else {
if((outp = fopen(ofile, "at")) == NULL){
printf("ERROR: Cannot re-open output file.\n");
return 1;
}
fseek (outp, 0, SEEK_END);
}
fstat(fileno(inp), &statbuf);
if (quiet == 0) printf("Input file size=%ld\n",statbuf.st_size);
if (foffset > statbuf.st_size) {
printf("ERROR: Input offset > input file length\n");
}
if ((fsize == 0) || (fsize > (statbuf.st_size - foffset)))
fsize = statbuf.st_size - foffset;
// fprintf(outp,":020000020000FC\n");/*Start Header*/
fsub = fsize - fpoint;
if (fsub > 0x20) {
fprintf(outp,":20%04X00",adrs);/*Hex line Header*/
csum = 0x20 + (adrs>>8) + (adrs & 0xFF);
adrs += 0x20;
}
else {
fprintf(outp, ":%02X%04X00", fsub,adrs);/*Hex line Header*/
csum = fsub + (adrs>>8) + (adrs & 0xFF);
adrs += fsub;
}
while (fsub > 0){
ch = fgetc(inp);
fprintf(outp,"%02X",ch);/*Put data*/
cnt++; fpoint++;
fsub = fsize - fpoint;
csum = ch + csum;
if((fsub == 0)||(cnt == 0x20)){
cnt = 0; csum = 0xFF & (~csum + 1);
fprintf(outp,"%02X\n",csum);/*Put checksum*/
if(fsub == 0) break;
if(adrs > 0xFFFF){
ofsa = 0x1000 + ofsa;
adrs = 0;
fprintf(outp,":02000002%04X",ofsa);/*Change offset address*/
csum = 0x02 + 0x02 + (ofsa>>8) + (ofsa & 0xFF);
csum = 0xFF & (~csum + 1);
fprintf(outp,"%02X\n", csum);
}
adrs = 0xFFFF & adrs;
if (fsub > 0x20) {
fprintf(outp,":20%04X00",adrs);/*Next Hex line Header*/
csum = 0x20 + (adrs>>8) + (adrs & 0xFF);
adrs += 0x20;
}
else {
if(fsub > 0){
fprintf(outp, ":%02X%04X00", fsub,adrs);/*Next Hex line Header*/
csum = fsub + (adrs>>8) + (adrs & 0xFF);
adrs += fsub;
}
}
}
}
if (eofrec == 0) fprintf(outp,":00000001FF\n");/*End footer*/
fflush (outp);
fstat(fileno(outp), &statbuf);
if (quiet == 0) printf("Output file size=%ld\n",statbuf.st_size);
fclose(inp);
fclose(outp);
return 0;
}

File diff suppressed because one or more lines are too long

BIN
6502/Atari8bit/VForth35/da65 Executable file

Binary file not shown.

190
6502/Atari8bit/VForth35/diff Executable file
View File

@ -0,0 +1,190 @@
17c17
< \ cas21dec05
---
> \ cs08aucas
20c20
<
---
> include assemble.scr 2 loadfrom as65.scr include crostarg.scr
28,29c28,29
< .( Unresolved: )
< .UNRESOLVED cr
---
>
> .UNRESOLVED
49c49
< \ HIER BEGINNEN DIE KALTSTARTWERTE DER cas21dec05
---
> \ HIER BEGINNEN DIE KALTSTARTWERTE DER cs09aug05
57c57
< ," VOLKSFORTH-83 3.8 COMPILED 21DEC05CS"
---
> ," VOLKSFORTH-83 3.5 COMPILED 09AUG05CS"
129c129
< \ USER VARIABLES 17MAR84KS) cas09dec05
---
> \ USER VARIABLES 17MAR84KS) er14dez88
135c135
< USER S0 $7000 S0 ! USER R0 $7500 R0 !
---
> USER S0 $5000 S0 ! USER R0 $5500 R0 !
977c977
< \ SOURCE WORD PARSE NAME 08APR85BP) cas21dec05
---
> \ SOURCE WORD PARSE NAME 08APR85BP)
980c980
< TIB #TIB @ ;
---
> BLK @ ?DUP IF BLOCK B/BLK EXIT THEN TIB #TIB @ ;
1345c1345
< \ FIND ' ['] 13JAN85BP) cas21dec05
---
> \ FIND ' ['] 13JAN85BP)
1353c1353
< : ' ( -- CFA ) NAME FIND 0= ABORT" WHAT?" ;
---
> : ' ( -- CFA ) NAME FIND 0= ABORT" HAEH?" ;
1377c1377
< \ INTERPRET INTERACTIVE 31DEC84KS/BP) cas21dec05
---
> \ INTERPRET INTERACTIVE 31DEC84KS/BP)
1381c1381
< : NO.EXTENSIONS ( STRING -- ) ERROR" WHAT?" ; \ STRING NOT 0
---
> : NO.EXTENSIONS ( STRING -- ) ERROR" HAEH?" ; \ STRING NOT 0
1441c1441
< \ .STATUS PUSH LOAD 08SEP84KS) cas21dec05
---
> \ .STATUS PUSH LOAD 08SEP84KS)
1450c1450
< \\
---
>
1457c1457
< \ +LOAD THRU +THRU --> RDEPTH DEPTH KS) cas21dec05
---
> \ +LOAD THRU +THRU --> RDEPTH DEPTH KS)
1459c1459
< \ : +LOAD ( OFFSET --) BLK @ + LOAD ;
---
> : +LOAD ( OFFSET --) BLK @ + LOAD ;
1461c1461
< \ : THRU ( FROM TO --) 1+ SWAP DO I LOAD LOOP ;
---
> : THRU ( FROM TO --) 1+ SWAP DO I LOAD LOOP ;
1463c1463
< \ : +THRU ( OFF0 OFF1 --) 1+ SWAP DO I +LOAD LOOP ;
---
> : +THRU ( OFF0 OFF1 --) 1+ SWAP DO I +LOAD LOOP ;
1465c1465
< \ : --> 1 BLK +! >IN OFF .STATUS ; IMMEDIATE
---
> : --> 1 BLK +! >IN OFF .STATUS ; IMMEDIATE
1585c1585
< \ .S LIST C/L L/S 24DEC83KS) cas21dec05
---
> \ .S LIST C/L L/S 24DEC83KS)
1592c1592
< \\
---
>
1649,1650c1649,1650
< \ SEARCH FOR BLOCKS IN MEMORY 11JUN85BP) cas21dec05
< \\
---
> \ SEARCH FOR BLOCKS IN MEMORY 11JUN85BP)
>
1665,1666c1665,1666
< \ " 11JUN85BP) cas21dec05
< \\
---
> \ " 11JUN85BP)
>
1697,1698c1697,1698
< \ (DISKERR 11JUN85BP) cas21dec05
< \\
---
> \ (DISKERR 11JUN85BP)
>
1713c1713
< \\ BACKUP EMPTYBUF READBLK 11JUN85BP) cas21dec05
---
> \ BACKUP EMPTYBUF READBLK 11JUN85BP)
1729c1729
< \\ TAKE MARK UPDATES? FULL? CORE? BP) cas21dec05
---
> \ TAKE MARK UPDATES? FULL? CORE? BP)
1745c1745
< \\ BLOCK & BUFFER MANIPULATION 11JUN85BP) cas21dec05
---
> \ BLOCK & BUFFER MANIPULATION 11JUN85BP)
1761c1761
< \\ BLOCK & BUFFER MANIPULATION 09SEP84KS) cas21dec05
---
> \ BLOCK & BUFFER MANIPULATION 09SEP84KS)
1777c1777
< \\ MOVING BLOCKS 15DEC83KS) cas21dec05
---
> \ MOVING BLOCKS 15DEC83KS)
1793c1793
< \ ALLOCATING BUFFERS 23SEP83KS) cas21dec05
---
> \ ALLOCATING BUFFERS 23SEP83KS)
1796c1796
< \\
---
>
1889c1889
< \ SAVE BYE STOP? ?CR 20OCT84KS/BP) cas21dec05
---
> \ SAVE BYE STOP? ?CR 20OCT84KS/BP)
1896c1896
< : BYE (BYE ;
---
> : BYE FLUSH EMPTY (BYE ;
1937c1937
< \ 'COLD 07JUN85BP) cas21dec05
---
> \ 'COLD 07JUN85BP)
1941c1941
< | : INIT-BUFFERS 0 PREV ! LIMIT FIRST ! ;
---
> | : INIT-BUFFERS 0 PREV ! LIMIT FIRST ! ALL-BUFFERS ;
1945,1946c1945,1946
< | : (COLD INIT-VOCABULARYS INIT-BUFFERS PAGE 'COLD ONLYFORTH
< ." volksFORTH-83 REV 3.81.02" CR RESTART ; -2 ALLOT
---
> | : (COLD INIT-VOCABULARYS INIT-BUFFERS PAGE 'COLD ONLYFORTH
> ." ULTRAFORTH-83 REV 3.5" CR RESTART ; -2 ALLOT
1950c1950
< 'RESTART [ ERRORHANDLER ] LITERAL @ ERRORHANDLER !
---
> DRVINIT 'RESTART [ ERRORHANDLER ] LITERAL @ ERRORHANDLER !
1953c1953
< \ COLD BOOTSYSTEM RESTART 09JUL85WE) cas09dec05
---
> \ COLD BOOTSYSTEM RESTART 09JUL85WE)
1955a1956
>
1959,1960c1960
< $C lda HERE 9 + sta $D lda HERE 5 + sta
< LABEL WARMBOOT $e474 jsr BOOTNEXTLEN 1- # LDY
---
> LABEL WARMBOOT BOOTNEXTLEN 1- # LDY
1966,1967c1966
< PLA IP STA PLA IP 1+ STA warmboot 100 U/MOD # lda $D sta
< # lda $C sta
---
> PLA IP STA PLA IP 1+ STA
1968a1968
>
2033c2033
< \ SYSTEM PATCHUP 05JAN85BP) cas09dec05
---
> \ SYSTEM PATCHUP 05JAN85BP)
2037,2038c2037,2038
< A000 ' LIMIT >BODY !
< $9800 S0 ! $9B00 R0 !
---
> 6000 ' LIMIT >BODY !
> $5800 S0 ! $5B00 R0 !

Binary file not shown.

BIN
6502/Atari8bit/VForth35/f6502.com Executable file

Binary file not shown.

BIN
6502/Atari8bit/VForth35/forth.ker Executable file

Binary file not shown.

BIN
6502/Atari8bit/VForth35/forth.sys Executable file

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,304 @@
\ loadscreen fuer EMUF i/o cas09dec05
1 &14 +thru
\ 65KEY? GETKEY 25JAN85RE) cs08aug05
| $02FC Constant CH
| CODE 65KEY? ( -- FLAG) CH lda clc 1 # adc
push0a jmp end-code
| CODE G1 LABEL GETCHK $E425 lda pha $E424 lda pha rts end-code
| CODE GETKEY ( -- 8B) $FF sty $FE stx GETCHK jsr
$FE ldx $FF ldy push0a jmp end-code
| $02F0 Constant CRSINH
| CODE CURON ( --) 01 # lda CRSINH sta NEXT JMP END-CODE
| CODE CUROFF ( --) 00 # lda CRSINH sta NEXT JMP END-CODE
: 65KEY ( -- 8B)
CURON BEGIN PAUSE 65KEY? UNTIL CUROFF GETKEY ;
\ DECODE EXPECT KEYBOARD BP28MAY85) cs08aug05
7E CONSTANT #BS $9B CONSTANT #CR &27 CONSTANT #ESC
: 65DECODE ( ADDR CNT1 KEY -- ADDR CNT2)
#BS CASE? IF DUP IF DEL 1- THEN EXIT THEN
#CR CASE? IF DUP SPAN ! EXIT THEN
>R 2DUP + R@ SWAP C! R> EMIT 1+ ;
: 65EXPECT ( ADDR LEN1 -- ) SPAN ! 0
BEGIN DUP SPAN @ U<
WHILE KEY DECODE
REPEAT 2DROP SPACE ;
INPUT: KEYBOARD [ HERE INPUT ! ]
65KEY 65KEY? 65DECODE 65EXPECT [
\ (emit 65emit ) cs09aug05
| Code O1 LABEL OUTCHK
$E407 lda pha $E406 lda pha txa rts end-code
Code (emit ( 8b -- ) $FF sty $FE stx
SP X) lda tax OUTCHK jsr
$FE ldx $FF ldy (drop jmp end-code
\ EMIT CR DEL PAGE AT AT? 25JAN85RE) cs09aug05
| Variable out 0 out ! | &40 Constant c/row
: 65emit ( 8b -- ) 1 out +! (emit ;
: 65CR #CR 65emit out @ c/row / 1+ c/row * out ! ;
: 65DEL #bs 65emit SPACE #bs 65emit -2 out +! ;
: 65PAGE .( page einf. ) out off ;
: 65at ( row col -- ) .( at einf. ) swap c/row * + out ! ;
: 65AT? ( -- ROW COL ) out @ c/row /mod &24 min swap ;
\ er14dez88
: 65type ( adr len -- ) bounds ?DO I c@ emit LOOP ;
\ TYPE DISPLAY (BYE BP 28MAY85RE) cas09dec05
OUTPUT: DISPLAY [ HERE OUTPUT ! ]
65EMIT 65CR 65TYPE 65DEL 65PAGE 65AT 65AT? [
\ fix dosini vector and jump through dosvec
| code (bye warmboot 1+ lda $0C sta warmboot 2+ lda
$0D sta $000A ) jmp end-code
\ B/BLK cas21dec05
$400 CONSTANT B/BLK
\ definitions for fileinterface
&4 CONSTANT R/O &8 CONSTANT W/O &12 CONSTANT R/W
3 CONSTANT IO-OPEN 5 CONSTANT IO-GETREC 7 CONSTANT IO-GETCHR
9 CONSTANT IO-PUTREC $B CONSTANT IO-PUTCHR $C CONSTANT IO-CLOSE
$340 CONSTANT ICFLG $342 CONSTANT ICCOM $343 CONSTANT ICSTA
$344 CONSTANT ICBAL $345 CONSTANT ICBAH $348 CONSTANT ICBLL
$349 CONSTANT ICBLH $34A CONSTANT ICAX1 $34B CONSTANT ICAX2
$E456 CONSTANT CIOV
\ definitions for fileinterface cas21dec05
label freeiocb0 70 # lda label freeiocb2 tay ICFLG ,y lda
$FF # cmp 0<> ?[ tya sec $10 # sbc freeiocb2 bne ]?
tya rts
code freeiocb freeiocb0 jsr .a lsr .a lsr .a lsr .a lsr pha
push0a jmp end-code
label getfileid sp x) lda .a ASL .a ASL .a ASL .a ASL tay rts
\ definitions for fileinterface cas13dec05
code close-file getfileid jsr tax IO-CLOSE # lda ICCOM ,x sta
CIOV jsr sp 2inc ICSTA ,x lda 0>= ?[ 0 # lda ]? pha
PUSH0A jmp end-code
code open-file freeiocb0 jsr tax IO-OPEN # lda ICCOM ,y sta
4 # ldy sp )y lda ICBAL ,x sta
iny sp )y lda ICBAH ,x sta
0 # ldy sp )y lda ICAX1 ,x sta
tya ICAX2 ,x sta
CIOV jsr sp 2inc 0 # ldy ICSTA ,x lda sp )y sta
0>= ?[ 0 # lda sp )y sta ]? 0 # lda tay iny sp )y sta
iny iny sp )y sta txa clc .a lsr .a lsr .a lsr
.a lsr dey sp )y sta xynext jmp end-code
\ definitions for fileinterface cas09dec05
code read-file ( caddr u fileid -- u2 ior )
getfileid jsr tax
2 # ldy sp )y lda ICBLL ,x sta
iny sp )y lda ICBLH ,x sta
iny sp )y lda ICBAL ,x sta
iny sp )y lda ICBAH ,x sta
IO-GETCHR # lda ICCOM ,x sta
CIOV jsr sp 2inc 0 # ldy
ICSTA ,x lda sp )y sta
0>= ?[ 0 # lda sp )y sta ]? tya iny sp )y sta
clc iny ICBLL ,x lda sp )y sta
iny ICBLH ,x lda sp )y sta xynext jmp end-code
\ definitions for fileinterface cas09dec05
code read-line ( caddr u fileid -- u2 flag ior )
getfileid jsr tax
2 # ldy sp )y lda ICBLL ,x sta
iny sp )y lda ICBLH ,x sta
iny sp )y lda ICBAL ,x sta
iny sp )y lda ICBAH ,x sta
IO-GETREC # lda ICCOM ,x sta
CIOV jsr 0 # ldy
ICSTA ,x lda
0>= ?[ tya ]? sp )y sta
4 # ldy ICBLL ,x lda sp )y sta
ICBAL ,x adc tay dey n sty 5 # ldy ICBLH ,x lda sp )y sta
ICBAH ,x adc n 1+ sta 0 # lda tay n )y sta iny
sp )y sta iny sp )y sta iny sp )y sta xynext jmp end-code
\ definitions for fileinterface cas21dec05
code write-file ( caddr u fileid -- ior )
getfileid jsr tax
2 # ldy sp )y lda ICBLL ,x sta
iny sp )y lda ICBLH ,x sta
iny sp )y lda ICBAL ,x sta
iny sp )y lda ICBAH ,x sta
IO-PUTCHR # lda ICCOM ,x sta
CIOV jsr sp 2inc sp 2inc 0 # ldy
ICSTA ,x lda sp )y sta
0>= ?[ 0 # lda sp )y sta ]?
xynext jmp end-code
\ definitions for fileinterface cas21dec05
VARIABLE SOURCE-ID 0 SOURCE-ID !
$580 CONSTANT FNBUF
: REFILL tib $50 erase tib $50 SOURCE-ID @ READ-LINE
ROT 1 - #tib ! >in off blk off nip ;
: TIBSAVE #TIB @ $FE ! >in @ $FC ! FNBUF >tib ! ;
: TIBREST $FC @ >in ! $FE @ #tib ! $100 >tib ! ;
: INCLUDE-FILE ( fileid -- )
SOURCE-ID ! BEGIN REFILL $80 < WHILE INTERPRET REPEAT
SOURCE-ID @ CLOSE-FILE ;
: INCLUDED ( caddr u -- ) R/O OPEN-FILE $80 < IF TIBSAVE
INCLUDE-FILE 0 SOURCE-ID ! TIBREST HERE $50 $20 FILL THEN ;
: FILE" FNBUF $50 BL FILL HERE $50 BL FILL ASCII " WORD
COUNT FNBUF SWAP CMOVE FNBUF 0 ;
: INCLUDE" ( FNAME ) FILE" INCLUDED ; IMMEDIATE
\ cas21dec05

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,176 @@
\ loadscreen fuer EMUF i/o er14dez88
1 9 +thru
\ 65KEY? GETKEY 25JAN85RE) er14dez88
CODE 65KEY? ( -- FLAG) $C0EA jsr push0a jmp end-code
CODE GETKEY ( -- 8B) $C0A6 jsr push0a jmp end-code
CODE CURON ( --) NEXT JMP END-CODE
CODE CUROFF ( --) NEXT JMP END-CODE
: 65KEY ( -- 8B)
CURON BEGIN PAUSE 65KEY? UNTIL CUROFF GETKEY ;
\ DECODE EXPECT KEYBOARD BP28MAY85)
08 CONSTANT #BS 0D CONSTANT #CR &27 CONSTANT #ESC
: 65DECODE ( ADDR CNT1 KEY -- ADDR CNT2)
#BS CASE? IF DUP IF DEL 1- THEN EXIT THEN
#CR CASE? IF DUP SPAN ! EXIT THEN
>R 2DUP + R@ SWAP C! R> EMIT 1+ ;
: 65EXPECT ( ADDR LEN1 -- ) SPAN ! 0
BEGIN DUP SPAN @ U<
WHILE KEY DECODE
REPEAT 2DROP SPACE ;
INPUT: KEYBOARD [ HERE INPUT ! ]
65KEY 65KEY? 65DECODE 65EXPECT [
\ senden? (emit 65emit 25JAN85RE) er14dez88
| $8001 Constant aciasr
| $8000 Constant aciaio
| Code senden? ( -- flg )
aciasr lda pha $08 # and 0= not ?[ $c058 jsr ]?
pla $10 # and push0a jmp end-code
Code (emit ( 8b -- ) SP X) LDA aciaio sta (drop jmp end-code
\ EMIT CR DEL PAGE AT AT? 25JAN85RE) er14dez88
| Variable out 0 out ! | &80 Constant c/row
: 65emit ( 8b -- ) BEGIN pause senden? UNTIL 1 out +! (emit ;
: 65CR #CR 65emit out @ c/row / 1+ c/row * out ! ;
: 65DEL #bs 65emit SPACE #bs 65emit -2 out +! ;
: 65PAGE .( page einf. ) out off ;
: 65at ( row col -- ) .( at einf. ) swap c/row * + out ! ;
: 65AT? ( -- ROW COL ) out @ c/row /mod &24 min swap ;
\ er14dez88
: 65type ( adr len -- ) bounds ?DO I c@ emit LOOP ;
\ TYPE DISPLAY (BYE BP 28MAY85RE) er14dez88
OUTPUT: DISPLAY [ HERE OUTPUT ! ]
65EMIT 65CR 65TYPE 65DEL 65PAGE 65AT 65AT? [
| : (bye ;
\ B/BLK DRIVE >DRIVE DRVINIT 28MAY85RE) er14dez88
$400 CONSTANT B/BLK
$0AA CONSTANT BLK/DRV
| VARIABLE (DRV 0 (DRV !
| : DISK ( -- DEV.NO ) (DRV @ 8 + ;
: DRIVE ( DRV# -- ) BLK/DRV * OFFSET ! ;
\ er14dez88
: >DRIVE ( BLOCK DRV# -- BLOCK' )
BLK/DRV * + OFFSET @ - ;
: DRV? ( BLOCK -- DRV# )
OFFSET @ + BLK/DRV / ;
: DRVINIT NOOP ;
.( fuer reads. u. writes. ist errorhandler erforderlich )
| : readserial ( adr blk -- )
&27 emit .( rb ) space base push decimal . cr
$400 bounds DO key I c! LOOP ;
| : writeserial ( adr blk -- )
&27 emit .( wb ) space base push decimal . cr
$400 bounds DO I c@ emit LOOP ;
\ (r/w er14dez88
: (R/W ( ADR BLK FILE R/WF -- FLAG)
swap abort" no file"
IF readserial ELSE writeserial THEN false ;
' (R/W IS R/W

File diff suppressed because one or more lines are too long

240
6502/Atari8bit/VForth35/tools.f Executable file
View File

@ -0,0 +1,240 @@
\ TOOLS LOADSCREEN 22MAR85RE)
ONLYFORTH
\NEEDS CODE abort( Assembler is needed )
VOCABULARY TOOLS
TOOLS ALSO DEFINITIONS
hex
1 &11 +THRU
decimal
ONLYFORTH
\ HANDLE STEPS BP 10 02 85)
ASSEMBLER ALSO DEFINITIONS
ONLY FORTH ALSO TOOLS ALSO DEFINITIONS
| VARIABLE (W | VARIABLE RPT
| CODE STEP
RPT DEC RP X) LDA IP STA
RP )Y LDA IP 1+ STA RP 2INC
(W LDA W STA (W 1+ LDA W 1+ STA
W 1- JMP END-CODE
| CREATE NEXTSTEP ] STEP [
\ THROW STATUS ON R-STACK B 23JUL85RE)
| CREATE NPULL 0 ]
RP@ COUNT 2DUP + RP! R> SWAP CMOVE ;
: NPUSH ( ADDR LEN -)
R> -ROT OVER >R RP@ OVER 1+ - DUP RP! PLACE
NPULL >R >R ;
| : ONELINE .STATUS SPACE QUERY INTERPRET
-82 ALLOT RDROP ( DELETE QUIT FROM TNEXT ) ;
\ TRAP AND DISPLAY KS 26MAR85RE)
LABEL TNEXT
IP 2INC RP LDA RPT CMP 0<> ?[
[[ W 1- JMP SWAP ]?
RP 1+ LDA RPT 1+ CMP 0= ?]
LABEL DOTRACE
RPT INC ( DISABLE TRACER )
W LDA (W STA W 1+ LDA (W 1+ STA
;C: R@ NEXTSTEP >R
INPUT PUSH KEYBOARD
OUTPUT PUSH DISPLAY
CR 2- DUP 4 U.R @ DUP 5 U.R 2 SPACES
>NAME .NAME 1C COL - 0 MAX SPACES .S
STATE PUSH BLK PUSH >IN PUSH
[ ' 'QUIT >BODY ] LITERAL PUSH
[ ' >INTERPRET >BODY ] LITERAL PUSH
\
#TIB PUSH TIB #TIB @ NPUSH R0 PUSH
RP@ R0 ! 082 ALLOT
['] ONELINE IS 'QUIT QUIT ; -2 ALLOT
\ TRACER COMMANDS BP 23JUL85RE)
| CODE (TRACE TNEXT 0 100 M/MOD
# LDA NEXT 0C + STA
# LDA NEXT 0B + STA
04C # LDA NEXT 0A + STA NEXT JMP END-CODE
: TRACE' RP@ 2- RPT ! ' (TRACE EXECUTE END-TRACE ;
: BREAK RP@ 2+ RPT ! (TRACE ; RESTRICT
: TRACEL: CREATE , DOES> @ RPT +! ;
-6 TRACEL: +DO 6 TRACEL: -DO
-2 TRACEL: +R 2 TRACEL: -R
-6 TRACEL: +PUSH 6 TRACEL: -PUSH
\ WATCH TRAP BP 10 02 85 )
| VARIABLE WATCHPT 2 ALLOT
LABEL WNEXT IP 2INC
WATCHPT LDA N STA WATCHPT 1+ LDA N 1+ STA
N X) LDA WATCHPT 2+ CMP 0<> ?[
[[ RP LDA RPT STA RP 1+ LDA RPT 1+ STA
( SET TO TNEXT) TNEXT 0 100 M/MOD
# LDA NEXT 0C + STA # LDA NEXT 0B + STA
DOTRACE JMP SWAP ]?
N )Y LDA WATCHPT 3 + CMP 0= ?] W 1- JMP END-CODE
\ WATCH COMMANDS BP 10 02 85 )
| CODE (WATCH WNEXT 0 100 M/MOD
# LDA NEXT 0C + STA
# LDA NEXT 0B + STA
04C # LDA NEXT 0A + STA NEXT JMP END-CODE
: WATCH' ( ADR -- )
DUP WATCHPT ! @ WATCHPT 2+ ! ' (WATCH EXECUTE END-TRACE ;
: CONT ( -) WATCHPT @ @ WATCHPT 2+ ! (WATCH ;
( SYNTAX : <VARNAME> WATCH' <PROCEDURE> )
\ TOOLS FOR DECOMPILING, KS 4 APR 83 )
( INTERACTIVE USE )
| : ?: DUP 4 U.R ." :" ;
| : @? DUP @ 6 U.R ;
| : C? DUP C@ 3 .R ;
| : BL 024 COL - 0 MAX SPACES ;
: S ( ADR - ADR+) ( PRINT LITERAL STRING)
?: SPACE C? 4 SPACES DUP COUNT TYPE
DUP C@ + 1+ BL ; ( COUNT + RE)
: N ( ADR - ADR+2) ( PRINT NAME OF NEXT WORD BY ITS CFA)
?: @? 2 SPACES DUP @ >NAME .NAME 2+ BL ;
: L ( ADR - ADR+2) ( PRINT LITERAL VALUE) ?: @? 2+ BL ;
\ TOOLS FOR DECOMPILING, INTERACTIVE )
: D ( ADR N - ADR+N) ( DUMP N BYTES)
2DUP SWAP ?: 3 SPACES SWAP 0 DO C? 1+ LOOP
4 SPACES -ROT TYPE BL ;
: C ( ADR - ADR+1) ( PRINT BYTE AS UNSIGNED VALUE) 1 D ;
: B ( ADR - ADR+2) ( PRINT BRANCH TARGET LOCATION )
?: @? DUP @ OVER + 6 U.R 2+ BL ;
( USED FOR : )
( NAME STRING LITERAL DUMP CLIT BRANCH )
( - - - - - - )
\ DEBUGGING UTILITIES BP 19 02 85 )
: UNRAVEL \ UNRAVEL PERFORM (ABORT"
RDROP RDROP RDROP CR ." TRACE DUMP IS " CR
BEGIN RP@ R0 @ -
WHILE R> DUP 8 U.R SPACE 2- @ >NAME .NAME CR
REPEAT (ERROR ;
' UNRAVEL ERRORHANDLER !

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,240 @@
\ TOOLS LOADSCREEN 22MAR85RE)
ONLYFORTH
\NEEDS CODE abort( Assembler is needed )
VOCABULARY TOOLS
TOOLS ALSO DEFINITIONS
hex
1 &11 +THRU
decimal
ONLYFORTH
\ HANDLE STEPS BP 10 02 85)
ASSEMBLER ALSO DEFINITIONS
ONLY FORTH ALSO TOOLS ALSO DEFINITIONS
| VARIABLE (W | VARIABLE RPT
| CODE STEP
RPT DEC RP X) LDA IP STA
RP )Y LDA IP 1+ STA RP 2INC
(W LDA W STA (W 1+ LDA W 1+ STA
W 1- JMP END-CODE
| CREATE NEXTSTEP ] STEP [
\ THROW STATUS ON R-STACK B 23JUL85RE)
| CREATE NPULL 0 ]
RP@ COUNT 2DUP + RP! R> SWAP CMOVE ;
: NPUSH ( ADDR LEN -)
R> -ROT OVER >R RP@ OVER 1+ - DUP RP! PLACE
NPULL >R >R ;
| : ONELINE .STATUS SPACE QUERY INTERPRET
-82 ALLOT RDROP ( DELETE QUIT FROM TNEXT ) ;
\ TRAP AND DISPLAY KS 26MAR85RE)
LABEL TNEXT
IP 2INC RP LDA RPT CMP 0<> ?[
[[ W 1- JMP SWAP ]?
RP 1+ LDA RPT 1+ CMP 0= ?]
LABEL DOTRACE
RPT INC ( DISABLE TRACER )
W LDA (W STA W 1+ LDA (W 1+ STA
;C: R@ NEXTSTEP >R
INPUT PUSH KEYBOARD
OUTPUT PUSH DISPLAY
CR 2- DUP 4 U.R @ DUP 5 U.R 2 SPACES
>NAME .NAME 1C COL - 0 MAX SPACES .S
STATE PUSH BLK PUSH >IN PUSH
[ ' 'QUIT >BODY ] LITERAL PUSH
[ ' >INTERPRET >BODY ] LITERAL PUSH
\
#TIB PUSH TIB #TIB @ NPUSH R0 PUSH
RP@ R0 ! 082 ALLOT
['] ONELINE IS 'QUIT QUIT ; -2 ALLOT
\ TRACER COMMANDS BP 23JUL85RE)
| CODE (TRACE TNEXT 0 100 M/MOD
# LDA NEXT 0C + STA
# LDA NEXT 0B + STA
04C # LDA NEXT 0A + STA NEXT JMP END-CODE
: TRACE' RP@ 2- RPT ! ' (TRACE EXECUTE END-TRACE ;
: BREAK RP@ 2+ RPT ! (TRACE ; RESTRICT
: TRACEL: CREATE , DOES> @ RPT +! ;
-6 TRACEL: +DO 6 TRACEL: -DO
-2 TRACEL: +R 2 TRACEL: -R
-6 TRACEL: +PUSH 6 TRACEL: -PUSH
\ WATCH TRAP BP 10 02 85 )
| VARIABLE WATCHPT 2 ALLOT
LABEL WNEXT IP 2INC
WATCHPT LDA N STA WATCHPT 1+ LDA N 1+ STA
N X) LDA WATCHPT 2+ CMP 0<> ?[
[[ RP LDA RPT STA RP 1+ LDA RPT 1+ STA
( SET TO TNEXT) TNEXT 0 100 M/MOD
# LDA NEXT 0C + STA # LDA NEXT 0B + STA
DOTRACE JMP SWAP ]?
N )Y LDA WATCHPT 3 + CMP 0= ?] W 1- JMP END-CODE
\ WATCH COMMANDS BP 10 02 85 )
| CODE (WATCH WNEXT 0 100 M/MOD
# LDA NEXT 0C + STA
# LDA NEXT 0B + STA
04C # LDA NEXT 0A + STA NEXT JMP END-CODE
: WATCH' ( ADR -- )
DUP WATCHPT ! @ WATCHPT 2+ ! ' (WATCH EXECUTE END-TRACE ;
: CONT ( -) WATCHPT @ @ WATCHPT 2+ ! (WATCH ;
( SYNTAX : <VARNAME> WATCH' <PROCEDURE> )
\ TOOLS FOR DECOMPILING, KS 4 APR 83 )
( INTERACTIVE USE )
| : ?: DUP 4 U.R ." :" ;
| : @? DUP @ 6 U.R ;
| : C? DUP C@ 3 .R ;
| : BL 024 COL - 0 MAX SPACES ;
: S ( ADR - ADR+) ( PRINT LITERAL STRING)
?: SPACE C? 4 SPACES DUP COUNT TYPE
DUP C@ + 1+ BL ; ( COUNT + RE)
: N ( ADR - ADR+2) ( PRINT NAME OF NEXT WORD BY ITS CFA)
?: @? 2 SPACES DUP @ >NAME .NAME 2+ BL ;
: L ( ADR - ADR+2) ( PRINT LITERAL VALUE) ?: @? 2+ BL ;
\ TOOLS FOR DECOMPILING, INTERACTIVE )
: D ( ADR N - ADR+N) ( DUMP N BYTES)
2DUP SWAP ?: 3 SPACES SWAP 0 DO C? 1+ LOOP
4 SPACES -ROT TYPE BL ;
: C ( ADR - ADR+1) ( PRINT BYTE AS UNSIGNED VALUE) 1 D ;
: B ( ADR - ADR+2) ( PRINT BRANCH TARGET LOCATION )
?: @? DUP @ OVER + 6 U.R 2+ BL ;
( USED FOR : )
( NAME STRING LITERAL DUMP CLIT BRANCH )
( - - - - - - )
\ DEBUGGING UTILITIES BP 19 02 85 )
: UNRAVEL \ UNRAVEL PERFORM (ABORT"
RDROP RDROP RDROP CR ." TRACE DUMP IS " CR
BEGIN RP@ R0 @ -
WHILE R> DUP 8 U.R SPACE 2- @ >NAME .NAME CR
REPEAT (ERROR ;
' UNRAVEL ERRORHANDLER !

File diff suppressed because one or more lines are too long

Binary file not shown.

118
6502/Atari8bit/math/FLOAT.fs Executable file
View File

@ -0,0 +1,118 @@
\ Floating Point Extension
\ using Atari 8bit ROM FP Routines
\ based on FIG Forth APX20029
\needs CALL INCLUDE" D:CALL.FS"
CR .( loading Floating Point ext. )
VOCABULARY FMATH
FMATH ALSO DEFINITIONS
$D4 CONSTANT FR0
$E0 CONSTANT FR1
$FC CONSTANT FLPTR
$F3 CONSTANT INBUF
$F2 CONSTANT CIX
| : XCALL CALL DROP ;
| : AFP $D800 XCALL ;
| : FASC $D8E6 XCALL ;
| : IFP $D9AA XCALL ;
| : FPI $D9D2 XCALL ;
| : FADD $DA66 XCALL ;
| : FSUB $DA60 XCALL ;
| : FMUL $DADB XCALL ;
| : FDIV $DB28 XCALL ;
| : FLG $DECD XCALL ;
| : FLG10 $DED1 XCALL ;
| : FEX $DDC0 XCALL ;
| : FEX10 $DDCC XCALL ;
| : FPOLY $DD40 XCALL ;
: F@ ( addr -- fp )
>R R@ @ R@ 2+ @ R> 4 + @ ;
: F! ( fp addr -- )
>R R@ 4 + ! R@ 2+ ! R> ! ;
: F.TY ( -- )
BEGIN
INBUF @ C@ DUP $7F AND EMIT
1 INBUF +!
$80 > UNTIL ;
: FSWAP ( fp1 fp2 -- fp2 fp1 )
5 ROLL 5 ROLL 5 ROLL ;
: FDROP ( fp -- )
2DROP DROP ;
: FDUP ( fp -- fp fp )
2 PICK 2 PICK 2 PICK ;
: FOVER ( fp1 fp2 -- fp1 fp2 fp1 )
5 PICK 5 PICK 5 PICK ;
: F. ( fp -- )
FR0 F@ FSWAP FR0 F!
FASC F.TY SPACE
FR0 F! ;
: F? ( addr -- )
F@ F. ;
: <F ( fp1 fp2 -- )
FR1 F! FR0 F! ;
: F> ( -- fp1 )
FR0 F@ ;
: FS ( fp -- )
FR0 F! ;
: F+ <F FADD F> ;
: F- <F FSUB F> ;
: F* <F FMUL F> ;
: F/ <F FDIV F> ;
: FLOAT ( n -- fp )
FR0 ! IFP F> ;
: FIX ( fp -- n )
FS FPI FR0 @ ;
: FLOG FS FLG F> ;
: FLOG10 FS FLG10 F> ;
: FEXP FS FEX F> ;
: FEXP10 FS FEX10 F> ;
: ASCF ( addr -- fp )
INBUF ! 0 CIX C! AFP F> ;
: F0= OR OR 0= ;
: F= F- F0= ;
: F< F- 2DROP $80 AND 0 > ;
: F, ( fp -- )
ROT , SWAP , , ;
: FCONSTANT
CREATE F, DOES> F@ ;
: FVARIABLE
CREATE 6 ALLOT DOES> ;
| : FLIT
R> DUP 6 + >R F@ ;
: FLITERAL
COMPILE FLIT F, ;
: FLOATING
BL WORD 1+
ASCF FLITERAL ; IMMEDIATE
: [FLOATING] [COMPILE] FLOATING ; IMMEDIATE
CR .( Floating Point ext. loaded. ) CR
ONLYFORTH

118
6502/Atari8bit/math/FLOAT.fs~ Executable file
View File

@ -0,0 +1,118 @@
\ Floating Point Extension
\ using Atari 8bit ROM FP Routines
\ based on FIG Forth APX20029
\needs CALL INCLUDE" D:CALL.FS"
CR .( loading Floating Point ext. )
VOCABULARY FMATH
FMATH ALSO DEFINITIONS
$D4 CONSTANT FR0
$E0 CONSTANT FR1
$FC CONSTANT FLPTR
$F3 CONSTANT INBUF
$F2 CONSTANT CIX
| : XCALL CALL DROP ;
| : AFP $D800 XCALL ;
| : FASC $D8E6 XCALL ;
| : IFP $D9AA XCALL ;
| : FPI $D9D2 XCALL ;
| : FADD $DA66 XCALL ;
| : FSUB $DA60 XCALL ;
| : FMUL $DADB XCALL ;
| : FDIV $DB28 XCALL ;
| : FLG $DECD XCALL ;
| : FLG10 $DED1 XCALL ;
| : FEX $DDC0 XCALL ;
| : FEX10 $DDCC XCALL ;
| : FPOLY $DD40 XCALL ;
: F@ ( -- fp )
>R R@ @ R@ 2+ @ R> 4 + @ ;
: F! ( fp addr -- )
>R R@ 4 + ! R@ 2+ ! R> ! ;
: F.TY ( -- )
BEGIN
INBUF @ C@ DUP $7F AND EMIT
1 INBUF +!
$80 > UNTIL ;
: FSWAP ( fp1 fp2 -- fp2 fp1 )
5 ROLL 5 ROLL 5 ROLL ;
: FDROP ( fp -- )
2DROP DROP ;
: FDUP ( fp -- fp fp )
2 PICK 2 PICK 2 PICK ;
: FOVER ( fp1 fp2 -- fp1 fp2 fp1 )
5 PICK 5 PICK 5 PICK ;
: F. ( fp -- )
FR0 F@ FSWAP FR0 F!
FASC F.TY SPACE
FR0 F! ;
: F? ( fp -- )
F@ F. ;
: <F ( fp1 fp2 -- )
FR1 F! FR0 F! ;
: F> ( -- fp1 )
FR0 F@ ;
: FS ( fp -- )
FR0 F! ;
: F+ <F FADD F> ;
: F- <F FSUB F> ;
: F* <F FMUL F> ;
: F/ <F FDIV F> ;
: FLOAT ( n -- fp )
FR0 ! IFP F> ;
: FIX ( fp -- n )
FS FPI FR0 @ ;
: FLOG FS FLG F> ;
: FLOG10 FS FLG10 F> ;
: FEXP FS FEX F> ;
: FEXP10 FS FEX10 F> ;
: ASCF ( addr -- fp )
INBUF ! 0 CIX C! AFP F> ;
: F0= OR OR 0= ;
: F= F- F0= ;
: F< F- 2DROP $80 AND 0 > ;
: F, ( fp -- )
ROT , SWAP , , ;
: FCONSTANT
CREATE F, DOES> F@ ;
: FVARIABLE
CREATE 6 ALLOT DOES> ;
| : FLIT
R> DUP 6 + >R F@ ;
: FLITERAL
COMPILE FLIT F, ;
: FLOATING
BL WORD 1+
ASCF FLITERAL ; IMMEDIATE
: [FLOATING] [COMPILE] FLOATING ; IMMEDIATE
CR .( Floating Point ext. loaded. ) CR
ONLYFORTH

89
6502/Atari8bit/math/MATH100.fs Executable file
View File

@ -0,0 +1,89 @@
\ 100* 100U/
\needs code INCLUDE" D:TAS65.FS
CODE 100* ( N1 - N2)
SP X) LDA
N STA
SP )Y LDA
N 1+ STA
N ASL
N 1+ ROL
N ASL
N 1+ ROL
N LDA
N 2+ STA
N 1+ LDA
N 3 + STA
N 2+ ASL
N 3 + ROL
N 2+ ASL
N 3 + ROL
N 2+ ASL
N 3 + ROL
CLC
N LDA
N 2+ ADC
N STA
N 1+ LDA
N 3 + ADC
N 1+ STA
N 2+ ASL
N 3 + ROL
CLC
N LDA
N 2+ ADC
SP X) STA
N 1+ LDA
N 3 + ADC
SP )Y STA
NEXT JMP
END-CODE
LABEL 4/+
N 7 + LSR
N 6 + ROR
N 5 + ROR
N 4 + ROR
N 7 + LSR
N 6 + ROR
N 5 + ROR
N 4 + ROR
CLC
N LDA
N 4 + ADC
N STA
N 1+ LDA
N 5 + ADC
N 1+ STA
SP X) LDA
N 6 + ADC
SP X) STA
SP )Y LDA
N 7 + ADC
SP )Y STA
RTS
CODE 100U/ ( U - N)
N STX
N 4 + STX
SP X) LDA
.A ASL
N 1+ STA
N 5 + STA
SP )Y LDA
.A ROL
SP X) STA
N 6 + STA
TXA
.A ROL
SP )Y STA
N 7 + STA
4/+ JSR
N 7 + LSR
N 6 + ROR
N 5 + ROR
N 4 + ROR
4/+ JSR
NEXT JMP END-CODE

48
6502/Atari8bit/math/SQRT.fs Executable file
View File

@ -0,0 +1,48 @@
\ SQRT
\needs code INCLUDE" D:TAS65.FS"
CODE D2* ( D1 - D2)
2 # LDA SETUP JSR
N 2+ ASL N 3 + ROL N ROL N 1+ ROL
SP 2DEC N 3 + LDA SP )Y STA
N 2+ LDA SP X) STA
SP 2DEC N 1+ LDA SP )Y STA
N LDA SP X) STA
NEXT JMP END-CODE
: DU< &32768 + ROT &32768 + ROT ROT D< ;
| : EASY-BITS ( N1 -- N2)
0 DO
>R D2* D2* R@ - DUP 0<
IF R@ + R> 2* 1-
ELSE R> 2* 3 +
THEN
LOOP ;
| : 2'S-BIT
>R D2* DUP 0<
IF D2* R@ - R> 1+
ELSE D2* R@ 2DUP U<
IF DROP R> 1- ELSE - R> 1+ THEN
THEN ;
| : 1'S-BIT
>R DUP 0<
IF 2DROP R> 1+
ELSE D2* &32768 R@ DU< 0=
NEGATE R> +
THEN ;
: SQRT ( UD1 - U2)
0 1 8 EASY-BITS
ROT DROP 6 EASY-BITS
2'S-BIT 1'S-BIT ;
\ Test
\
\ : XX
\ &16 * &62500 UM*
\ SQRT 0 <# # # # ASCII . HOLD #S #>
\ TYPE SPACE ;

1
6502/Atari8bit/math/SQRT.fs~ Executable file
View File

@ -0,0 +1 @@
\ SQRT  \needs code INCLUDE" D:TAS65.FS"  CODE D2* ( D1 - D2) 2 # LDA SETUP JSR N 2+ ASL N 3 + ROL N ROL N 1+ ROL SP 2DEC N 3 + LDA SP )Y STA N 2+ LDA SP X) STA SP 2DEC N 1+ LDA SP )Y STA N LDA SP X) STA NEXT JMP END-CODE  : DU< &32768 + ROT &32768 + ROT ROT D< ;  | : EASY-BITS ( N1 -- N2) 0 DO >R D2* D2* R@ - DUP 0< IF R@ + R> 2* 1- ELSE R> 2* 3 + THEN  LOOP ;  | : 2'S-BIT >R D2* DUP 0< IF D2* R@ - R> 1+ ELSE D2* R@ 2DUP U< IF DROP R> 1- ELSE - R> 1+ THEN THEN ;  | : 1'S-BIT >R DUP 0< IF 2DROP R> 1+ ELSE D2* &32768 R@ DU< 0= NEGATE R> + THEN ;  : SQRT ( UD1 - U2) 0 1 8 EASY-BITS ROT DROP 6 EASY-BITS 2'S-BIT 1'S-BIT ;  \ Test \ \ : XX  \ &16 * &62500 UM* \ SQRT 0 <# # # # ASCII . HOLD #S #> \ TYPE SPACE ; 

50
6502/Atari8bit/math/TRIG.fs Executable file
View File

@ -0,0 +1,50 @@
\ A SINUS-TABLE 20OCT87RE
\ SINUS-TABLE FROM FD Vol IV/1
\needs code INCLUDE" D:TAS65.FS"
| : TABLE ( VALUES N -)
CREATE 0 DO , LOOP
;CODE ( N - VALUE)
SP X) LDA CLC 1 # ADC .A ASL TAY
W )Y LDA SP X) STA
INY W )Y LDA 1 # LDY SP )Y STA
NEXT JMP END-CODE
BASE @ DECIMAL
10000 9998 9994 9986 9976 9962 9945 9925
9903 9877 9848 9816 9781 9744 9703 9659
9613 9563 9511 9455 9397 9336 9272 9205
9135 9063 8988 8910 8829 8746 8660 8572
8480 8387 8290 8192 8090 7986 7880 7771
7660 7547 7431 7314 7193 7071 6947 6820
6691 6561 6428 6293 6157 6018 5878 5736
5592 5446 5299 5150 5000 4848 4695 4540
4384 4226 4067 3907 3746 3584 3420 3256
3090 2924 2756 2588 2419 2250 2079 1908
1736 1564 1392 1219 1045 0872 0698 0523
0349 0175 0000
&91 | TABLE SINTABLE
BASE !
| : S180 ( DEG -- SIN*10000:SIN 0-180)
DUP &90 >
IF &180 SWAP - THEN
SINTABLE ;
: SIN ( DEG -- SIN*10000)
&360 MOD DUP 0< IF &360 + THEN
DUP &180 >
IF &180 - S180 NEGATE
ELSE S180 THEN ;
: COS ( DEG -- COS*10000)
&360 MOD &90 + SIN ;
: TAN ( DEG -- TAN*10000)
DUP SIN SWAP COS ?DUP
IF &100 SWAP */ ELSE 3 * THEN ;

BIN
6502/Atari8bit/math/fmath.atr Executable file

Binary file not shown.

BIN
6502/Atari8bit/math/fmath.zip Executable file

Binary file not shown.

View File

@ -0,0 +1 @@
\ 2Words Loadscreen hex &2 &3 thru decimal \ 2! 2@ 2VARIABLE 2CONSTANT 08JUL85RE) CODE 2! ( D ADR --) TYA SETUP JSR 3 # LDY [[ SP )Y LDA N )Y STA DEY 0< ?] 1 # LDY POPTWO JMP END-CODE CODE 2@ ( ADR -- D) SP X) LDA N STA SP )Y LDA N 1+ STA SP 2DEC 3 # LDY [[ N )Y LDA SP )Y STA DEY 0< ?] XYNEXT JMP END-CODE \ : 2VARIABLE ( --) CREATE 4 ALLOT ; ( -- ADR) : 2CONSTANT ( D --) CREATE , , DOES> ( -- D) 2@ ; \ 2DUP EXISTS \ 2SWAP EXISTS \ 2DROP EXISTS

Some files were not shown because too many files have changed in this diff Show More