Mercurial > hg > dmlib
comparison tools/objlink.c @ 2555:6249aa494e83
Rename "ROM/WT" blocks to just "WT", move the description to --help.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 27 Feb 2022 16:38:35 +0200 |
parents | aabfa00eafd9 |
children | 12ea1ea93522 |
comparison
equal
deleted
inserted
replaced
2554:aabfa00eafd9 | 2555:6249aa494e83 |
---|---|
69 }; | 69 }; |
70 | 70 |
71 enum | 71 enum |
72 { | 72 { |
73 MTYPE_NONE = 0, | 73 MTYPE_NONE = 0, |
74 MTYPE_ROM, // Hard ROM | 74 MTYPE_ROM, // ROM |
75 MTYPE_ROM_WT, // Write to RAM through ROM | 75 MTYPE_WT, // Write to RAM through ROM |
76 MTYPE_IO, // I/O lines | 76 MTYPE_IO, // I/O lines |
77 MTYPE_RES // RESERVED | 77 MTYPE_RES // RESERVED |
78 }; | 78 }; |
79 | 79 |
80 enum | 80 enum |
81 { | 81 { |
82 LA_NONE = -2, | 82 LA_NONE = -2, |
90 { | 90 { |
91 { "C64 unrestricted", "$01 = $34", | 91 { "C64 unrestricted", "$01 = $34", |
92 64 * 1024, | 92 64 * 1024, |
93 0, | 93 0, |
94 { | 94 { |
95 { 0x0000, 0x0000, 0 , NULL , 0 } | 95 { 0x0000, 0x0000, 0 , NULL , 0 } |
96 } | 96 } |
97 }, | 97 }, |
98 | 98 |
99 { "C64 normal (IO+Basic+Kernal)", "$01 = $37", | 99 { "C64 normal (IO+Basic+Kernal)", "$01 = $37", |
100 64 * 1024, | 100 64 * 1024, |
101 3, | 101 3, |
102 { | 102 { |
103 { 0xA000, 0xBFFF, MTYPE_ROM_WT , "Basic ROM" , PLACE_STATIC }, | 103 { 0xA000, 0xBFFF, MTYPE_WT , "Basic ROM" , PLACE_STATIC }, |
104 { 0xD000, 0xDFFF, MTYPE_IO , "I/O" , PLACE_STATIC }, | 104 { 0xD000, 0xDFFF, MTYPE_IO , "I/O" , PLACE_STATIC }, |
105 { 0xE000, 0xFFFF, MTYPE_ROM_WT , "Kernal ROM" , PLACE_STATIC }, | 105 { 0xE000, 0xFFFF, MTYPE_WT , "Kernal ROM" , PLACE_STATIC }, |
106 } | 106 } |
107 }, | 107 }, |
108 | 108 |
109 { "C64 modified (IO+Kernal)", "$01 = $36", | 109 { "C64 modified (IO+Kernal)", "$01 = $36", |
110 64 * 1024, | 110 64 * 1024, |
111 2, | 111 2, |
112 { | 112 { |
113 { 0xD000, 0xDFFF, MTYPE_IO , "I/O" , PLACE_STATIC }, | 113 { 0xD000, 0xDFFF, MTYPE_IO , "I/O" , PLACE_STATIC }, |
114 { 0xE000, 0xFFFF, MTYPE_ROM_WT , "Kernal ROM" , PLACE_STATIC }, | 114 { 0xE000, 0xFFFF, MTYPE_WT , "Kernal ROM" , PLACE_STATIC }, |
115 } | 115 } |
116 }, | 116 }, |
117 | 117 |
118 { "C64 modified (IO only)", "$01 = $35", | 118 { "C64 modified (IO only)", "$01 = $35", |
119 64 * 1024, | 119 64 * 1024, |
120 1, | 120 1, |
121 { | 121 { |
122 { 0xD000, 0xDFFF, MTYPE_IO , "I/O" , PLACE_STATIC }, | 122 { 0xD000, 0xDFFF, MTYPE_IO , "I/O" , PLACE_STATIC }, |
123 } | 123 } |
124 }, | 124 }, |
125 | 125 |
126 { "C64 modified (Char+Kernal+Basic)", "$01 = $33", | 126 { "C64 modified (Char+Kernal+Basic)", "$01 = $33", |
127 64 * 1024, | 127 64 * 1024, |
128 3, | 128 3, |
129 { | 129 { |
130 { 0xA000, 0xBFFF, MTYPE_ROM_WT , "Basic ROM" , PLACE_STATIC }, | 130 { 0xA000, 0xBFFF, MTYPE_WT , "Basic ROM" , PLACE_STATIC }, |
131 { 0xD000, 0xDFFF, MTYPE_ROM , "Char ROM" , PLACE_STATIC }, | 131 { 0xD000, 0xDFFF, MTYPE_ROM , "Char ROM" , PLACE_STATIC }, |
132 { 0xE000, 0xFFFF, MTYPE_ROM_WT , "Kernal ROM" , PLACE_STATIC }, | 132 { 0xE000, 0xFFFF, MTYPE_WT , "Kernal ROM" , PLACE_STATIC }, |
133 } | 133 } |
134 }, | 134 }, |
135 }; | 135 }; |
136 | 136 |
137 static const int nmemoryModels = sizeof(memoryModels) / sizeof(memoryModels[0]); | 137 static const int nmemoryModels = sizeof(memoryModels) / sizeof(memoryModels[0]); |
202 const DMMemModel *m = &memoryModels[i]; | 202 const DMMemModel *m = &memoryModels[i]; |
203 fprintf(stdout, | 203 fprintf(stdout, |
204 " %d = %-40s [%s] (%d kB)\n", | 204 " %d = %-40s [%s] (%d kB)\n", |
205 i, m->name, m->desc, m->size / 1024); | 205 i, m->name, m->desc, m->size / 1024); |
206 } | 206 } |
207 | |
208 fprintf(stdout, | |
209 "\n" | |
210 "Memory block types:\n" | |
211 " NC = Not Connected\n" | |
212 " RSVD = Reserved\n" | |
213 " WT = RAM under 'write-through' ROM\n" | |
214 "\n" | |
215 ); | |
207 } | 216 } |
208 | 217 |
209 | 218 |
210 off_t dmGetFileSize(FILE *f) | 219 off_t dmGetFileSize(FILE *f) |
211 { | 220 { |
782 // Print current block | 791 // Print current block |
783 switch (curr->type) | 792 switch (curr->type) |
784 { | 793 { |
785 case MTYPE_NONE: s = "N/A (NC)"; break; | 794 case MTYPE_NONE: s = "N/A (NC)"; break; |
786 case MTYPE_ROM: s = "ROM"; break; | 795 case MTYPE_ROM: s = "ROM"; break; |
787 case MTYPE_ROM_WT: s = "ROM/WT"; break; | 796 case MTYPE_WT: s = "WT"; break; |
788 case MTYPE_IO: s = "I/O"; break; | 797 case MTYPE_IO: s = "I/O"; break; |
789 case MTYPE_RES: s = "RSVD"; break; | 798 case MTYPE_RES: s = "RSVD"; break; |
790 default: s = "????"; break; | 799 default: s = "????"; break; |
791 } | 800 } |
792 | 801 |
798 fprintf(f, "$%.4x - $%.4x | %-40s |\n", curr->start, curr->end, desc); | 807 fprintf(f, "$%.4x - $%.4x | %-40s |\n", curr->start, curr->end, desc); |
799 if (kz > 1) memPrintEmpty(f, kz); | 808 if (kz > 1) memPrintEmpty(f, kz); |
800 memPrintLine(f); | 809 memPrintLine(f); |
801 | 810 |
802 } | 811 } |
803 | |
804 fprintf(f, | |
805 "\n" | |
806 "NC = Not Connected\n" | |
807 "RSVD = Reserved\n" | |
808 "ROM/WT = RAM under 'write-through' ROM\n" | |
809 "\n" | |
810 ); | |
811 } | 812 } |
812 | 813 |
813 | 814 |
814 /* | 815 /* |
815 * The main program | 816 * The main program |