I have my altair clone set up to have no ROM, so I am using the full 64K of memory. The layout I am attempting to use goes like this:
- Code: Select all
0 Bottom of Memory
100 Monitor
5100 Editor
11520 AM2
Symbol Table
110000 Start of Editor Buffer
147377 End of Editor Buffer
160000 Start of User Space
The trouble is that when I try to set my program start assembling at 160000Q, it always has a symbol table overflow error at the first label.
This strikes me as odd because the manual says that the symbol table for AM2 begins at address 17006Q and grows upwards. My layout should provide it with about 45KB of
space, which should be plenty!
Playing around a bit, I discovered that if I put my program earlier in memory it works. I tried (20000Q, 100000Q, and 110000Q). Once I get to 120000Q, it starts to overflow, and continues to do so for the rest of memory. The program I am testing is a very small one which simply puts the numbers 1-10 in memory, and contains only 2 symbols.
Does anyone know for sure where the symbol table actually resides? It seems odd that it would have somehow claimed such a high address, especially given that very few of the original altairs of the period had RAM that far up.
BTW, what I am doing is writing the operating systems homework which I am currently giving to my students on my altair. They are writing a UNIX-Like system on an x86, and I am following suit on my clone. I have some ideas about how I am going to handle context switching and relocation, but a lot of them depend on my placing my kernel at the end of memory. I think 8K will be more than enough to house my toy OS, but I would like to get it set up so it can be resident with mon, am2, and edt. Any help/advice would be greatly appreciated!
Also, if you are interesting my OS assignments check out my wiki at https://cs.maryvillecollege.edu/wiki/Os/spring2017