+atari2600land Posted October 25, 2012 Share Posted October 25, 2012 (edited) How do I get rid of this error message? DASM V2.20.07, Macro Assembler (C)1988-2003 --- Unresolved Symbol List pfcenter 0000 ???? (R ) kernelmacrodef 0000 ???? (R ) pfhalfwidth 0000 ???? (R ) scoretable 0000 ???? (R ) Fatal assembly error: Source is not resolvable. Errors were encountered during assembly. What are these symbols and why do they appear anyway? I went into the h and asm files and found the references and tried to remove them but couldn't. What's worse is they didn't appear and now they suddenly do. What the hell is pfhalfwidth? If pfwidth=4 why bother with halfwidth? What is kernelmacrodef? What is pfcenter? Wouldn't the playfield be center without it? I know I wrote a topic about this, but I couldn't find it. I guess the question I'm asking is why does a 30 year old computer have to be so f888ing hard to write code for?! Edited October 25, 2012 by atari2600land Quote Link to comment Share on other sites More sharing options...
+Gemintronic Posted October 25, 2012 Share Posted October 25, 2012 Some kernel option or some included library expects those constants or variables to already be defined. RevEng once pointed out some variable/constant definitions he usually puts at the top of his code just to be sure.. don't remember exactly what they were. Quote Link to comment Share on other sites More sharing options...
RevEng Posted October 25, 2012 Share Posted October 25, 2012 In this case these are standard bB symbols that likely would have resolved eventually, had the assembly not been halted by a syntax issue. Run bblint if you have it, and manually check your bB code for a syntax problem. Alternatively, post the .bas. Sometimes one of your variables or labels will pop up in the unresolved list amongst all these other standard ones. In that case it is significant, and you find the source. (usually you misspelled the label or variable somewhere) I guess the question I'm asking is why does a 30 year old computer have to be so f888ing hard to write code for?! The thin veneer bB puts around asm to make development easy while still being space-efficient makes it difficult to debug sometimes. Its not perfect, but it's suited to the 2600. Quote Link to comment Share on other sites More sharing options...
+atari2600land Posted October 25, 2012 Author Share Posted October 25, 2012 OK, here is my .bas file. minefield6a.bas Quote Link to comment Share on other sites More sharing options...
RevEng Posted October 25, 2012 Share Posted October 25, 2012 I'm at my work computer, so I can't do more than glance over it right now... the first thing I'm seeing that's off is the "include" line should go first. The documented behaviour is that bB will ignore this include line if it follows certain commands. This could cause the addbcd and subbcd functions to be undefined, and lead to a syntax problem. Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted October 25, 2012 Share Posted October 25, 2012 What is this about: include bcdmath.asm I searched the bB page and AtariAge and can't find anything about it. Quote Link to comment Share on other sites More sharing options...
+atari2600land Posted October 25, 2012 Author Share Posted October 25, 2012 It's a little asm file that came with the playerscores minikernel made by CurtisK. I tried putting it in there even though I had no player0score or player1score (with and without the underscore) and neither didn't seem to work. But apparently it's not the problem since it does the same thing if you rem the line "include bcd_math.asm". bcd_math.asm Quote Link to comment Share on other sites More sharing options...
RevEng Posted October 25, 2012 Share Posted October 25, 2012 If you rem the include to test, you'd also need to rem the addbcd and subbcd references in your code. Did you try the "include" as the first line? Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted October 25, 2012 Share Posted October 25, 2012 This works: minefield6a_2012y_10m_25d_1427.bin minefield6a_2012y_10m_25d_1427.bas I already changed your labels to have two underscores in front of them by the time you posted bcd_math.asm. You didn't have bcd_math.asm in your program, you had bcdmath.asm instead. That's one reason why I copy and paste everything. In case you want to know, when I make a program, I put one underscore in front of variable aliases and two underscores in front of labels so I can easily tell them apart and so I'll never use a reserved name by mistake. 1 Quote Link to comment Share on other sites More sharing options...
+atari2600land Posted October 25, 2012 Author Share Posted October 25, 2012 OK, I guess I found a solution to the problem: Whenever something like this happens, reinstall all the include files. Quote Link to comment Share on other sites More sharing options...
orange808 Posted October 25, 2012 Share Posted October 25, 2012 There's really no magic bullet. Check the syntax of your program first and make sure you are making valid calls in your program. And, if you are new to programming, you will soon discover there are true "gotchas" everywhere you go. Half the programs in my first structured programming course threw a cryptic value range error and gave a memory address. Viva la Apple Pascal! I started coding Java apps for mobile and discovered the garbage collector couldn't reclaim memory if I created objects and destroyed objects in the body of my program. Had to reuse objects and avoid many good programming techniques because the virtual machine was virtualy worthless... I spent some time with a 3rd party physics engine last year and wished I'd written my own. Many of the built in functions weren't thread safe on their own and I was left to figure out the timing issues on my own. Pulling your hair out is part of the fun. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.