2
\$\begingroup\$

I know this is a long shot but my college is closed at the moment so i’ll ask here for now.

For my senior lab we are asked to program a 28C16A EEPROM. What is expected to go on this EEPROM is incredibly simple. It’s just a truth table with 10 or so lines. Inputs and outputs. Nothing special.

Now what’s very odd is they ask us to create the .hex file for the EEPROM using ASM68K.EXE, but I have not been able to find much info on this assembler. Seems like people use it for retro sonic games. I could just make the .hex file from a text file right? But they specifically ask to use this assembler. How would you even begin to do this? Python? C? The lab doesn’t give much more info

From the public lab manual:

lab manual

\$\endgroup\$
1
  • \$\begingroup\$ The assembler will generate a file that meets this description. You are supposed to write some code that can be input to the assembler, without generating errors. If you succeed, then you will have an output file that meets the above SREC description. Apparently, this can then be an input to another program (Superpro) that is able to read that format and then perform "programming" of the EEPROM IC. I'm not sure what is confusing about that process. \$\endgroup\$
    – jonk
    Commented Aug 29, 2021 at 6:14

1 Answer 1

4
\$\begingroup\$

I don't know the answer for the ASM68K.exe, but I can give you the answer for any assembler, which you'll have to complete with some digging.

And, on second reading of your given code snippit, I think they've handed the answer to you.

Typically, assemblers let you define constants to be placed in memory. The syntax is different from assembler to assembler, but they all let you do this.

  • Define a starting address (this is the ORG statement in your code snippet)
  • Define numeric data --or--
  • Define string data (i.e. "hello world")

I'm pretty sure that the code snippet they gave you generates exactly the sort of table you want. The DC.B directives are followed by numbers that are prefaced by dollar signs -- IIRC, Motorola assembler used $ to mean "hex constant to follow", and the following numbers are certainly one-byte hex numbers. And DC.B sounds like assembler-ese for "Data, constant, byte".

So -- assemble that code, see what the hex file looks like, and report back.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ That’s starting to make a lot more sense. Why do you think they did this using 4 lines of DC.B instead of 1? I can confirm that each hexa number is an input/output from the truth table. The first digit the input, second digit the output. \$\endgroup\$
    – BobaJFET
    Commented Aug 28, 2021 at 21:48
  • 1
    \$\begingroup\$ I can only guess: one line of text would be at least 80 characters long, and wouldn't fit on a period-correct dot matrix printer; long lines are hard to read; it's just easier to keep your place in a table like that if the lines are shorter; finally, with assembly you want lots of comments, so the style of having a line of assembly followed by a comment is usually a Good Idea -- and shorter lines give you room for that. \$\endgroup\$
    – TimWescott
    Commented Aug 29, 2021 at 4:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.