So, it's a little difficult to describe it without the actual file but I'll try. For proper disassembly, you should load code so that it matches the expected addresses. For example, last 64K should normally be loaded into segment F000, so that the first byte of that segment is at F000:0000, or linear address 0xF0000 (seg<<4 + ofs).
Some simple rules of thumb:
- 64KB binary: load at F000:0000 (0xF0000)
- 128KB binary: load at E000:0000 (0xE0000)
- 256KB binary: load at C000:0000 (0xC0000)
- 512KB binary: load at 8000:0000 (0x80000)
Next, you'll need to create segments based on far jumps and calls, for example:
EA 00 00 FD AF jmp far ptr 0AFFDh:0
means there is a segment with the base 0xAFFD, so, create the following segment:
start address: 0xAFFD0 (base<<4)
end address: 0xBFFD0 (maximum 64KB long)
base: 0xAFFD
(*) 16-bit
next, go through disassembly and look for other far jumps/calls to gather other possible segment bases (a good source for that is the problems list). Create corresponding segments (you will likely have to truncate some of the previously created ones; this is normal as segments using full 64KB are not very common). You may also need to use a start address not at seg:0 but small offset, e.g. seg:7 (so seg<<4 + 7).
For most BIOS ROMs it may be be useful to create at least the last two segments (E000 and F000) straight away.
For more info on how segmentation works in IDA, see here.
Related question: Segments in IDA. How to overcome NONAME problem