• Please review our updated Terms and Rules here

Display Telecommunications Corporation "Megaboard".

Thanks to 640KB for the compressing !
I fed the BIOS thru an OCR that gave an acceptable result a part from the page layout and the indentations/tabulations.
Now I've started cleaning up the mess which will take some time, but I find it would be nice to have a clean assembler source that can be fed thru an assembler/linker.
Don't hold your breath, though. I have lots of spare time, but... a life to live as well :)
 
We did some more digging and turned up some interesting history about DTC, and its fate.

It appears that they were caught up in the IBM BIOS lawsuit net, with their "army of lawyers" asserting that DTC's MEGA-BIOS did contain IBM copyrighted code. They managed to "negotiate" a settlement with DTC, whereby IBM assumed ownership and became the copyright holder to the source code of MEGA-BIOS. IBM then used this to aggressively go after the Taiwanese cloners, since they now fully owned the BIOS being sold with those PCs. These facts were brought to light by a former DTC employee and verified by records with the U.S. Copyright Office.


After that, it would appear that DTC changed its registered agent to "CT Corporation", in either 1985 or 1986, perhaps implying they were retained to aid in a sale or dissolution. CT Corp then resigned as their registered agent in 1988 and it was de-listed as an active Texas corporation in that same year (see attached).

So, they were the classic story of the birth of a "Silicon Prairie" clone PC company in the early 1980's. If anything, they were probably as close as you'll find to the story of such a company depicted in AMC's "Halt and Catch Fire".
 

Attachments

  • DTC Change of Registered Agent.PDF
    20.6 KB · Views: 5
  • DTC CT Corp Resignation of Agent.PDF
    33.2 KB · Views: 3
Wow, thanks for digging up all of this information. This is exactly why I like going through these vintage systems - finding interesting unsung bits of history.
 
Thanks to 640KB for the compressing !
I fed the BIOS thru an OCR that gave an acceptable result a part from the page layout and the indentations/tabulations.
Now I've started cleaning up the mess which will take some time, but I find it would be nice to have a clean assembler source that can be fed thru an assembler/linker.
Don't hold your breath, though. I have lots of spare time, but... a life to live as well :)
I don't know if you've made some progress, but I've put the original files here: https://github.com/sergioag/dosstuff/tree/master/dtcpcbios
There were some missing lines in the listing because of $Nolist. I have filled in the blanks the best I could, but still untested. You can search for "MISSING LINE" to see where they were.
This seems to have been assembled using ASM86 1.1, which I currently don't have a way to run. Thus, there may be all kinds of typing mistakes.
 
I don't know if you've made some progress, but I've put the original files here: https://github.com/sergioag/dosstuff/tree/master/dtcpcbios
There were some missing lines in the listing because of $Nolist. I have filled in the blanks the best I could, but still untested. You can search for "MISSING LINE" to see where they were.
This seems to have been assembled using ASM86 1.1, which I currently don't have a way to run. Thus, there may be all kinds of typing mistakes.
Fine !
In the meantime I finished OCR'ing and proofreading the sources so we should be able to run a diff on the two to weed out the last typos.
As an example, I noticed one typo at line 121 of the ibminc that should read "PPICLoopPost..."
I also found quite a few typos in my versions.
 
I don't know if you've made some progress, but I've put the original files here: https://github.com/sergioag/dosstuff/tree/master/dtcpcbios
There were some missing lines in the listing because of $Nolist. I have filled in the blanks the best I could, but still untested. You can search for "MISSING LINE" to see where they were.
This seems to have been assembled using ASM86 1.1, which I currently don't have a way to run. Thus, there may be all kinds of typing mistakes.
Oh wow, thanks for posting those. Did you OCR those source files from Finn's pdf? We haven't posted the source files we did yet and we're still hoping to find an original binary ROM of it to compare and make sure it's all accurate. Perhaps we can post ours as a fork on your project.

We have been able to build it with ASM86 2.1, albeit with some small modifications putting segment address definitions inline. They originally built it with the Intel ISIS tool set using that linker and specifying segment locations externally using a command line recipe not included in source. I even spoke with Don Harrison, the original author, and he said he doesn't have any build scripts or notes on that. I have not been able to replicate that build process using the LINK86 tool since I couldn't find a copy of version 2.1 of it, and the 3.1 version seems to lock up in dosbox. Perhaps someone with experience with that toolset can help put that together.

Intestingly, we've already discovered a few bugs in the source version. We can post the original version and then a branch for a "bugfix" version for those interested.
 
Oh wow, thanks for posting those. Did you OCR those source files from Finn's pdf?
It's from Finn's PDF + manually correcting.
We haven't posted the source files we did yet and we're still hoping to find an original binary ROM of it to compare and make sure it's all accurate. Perhaps we can post ours as a fork on your project.
No objections, though I think it would be better to compare and fix your versions, given that you have already built it. I bet yours has less bugs than mine :)

We have been able to build it with ASM86 2.1, albeit with some small modifications putting segment address definitions inline.
You mean like invoking the structs and adding "Bios Code Segment At 0F000H" in some places?
They originally built it with the Intel ISIS tool set using that linker and specifying segment locations externally using a command line recipe not included in source.
I had the same thought, some kind of linker script to put everything together. I didn't think too much about it since I had no way of assembling the source file though.
I even spoke with Don Harrison, the original author, and he said he doesn't have any build scripts or notes on that.
That's super cool! It would be interesting to get this thoughts and other related things on the code :)
I have not been able to replicate that build process using the LINK86 tool since I couldn't find a copy of version 2.1 of it, and the 3.1 version seems to lock up in dosbox. Perhaps someone with experience with that toolset can help put that together.
I can try to run it in a IBM 5150, if that helps. Not that I have any experience with LINK86, but I can do my best.
Intestingly, we've already discovered a few bugs in the source version. We can post the original version and then a branch for a "bugfix" version for those interested.
Not surprised. Agree that one branch should be kept original, for conservation purposes, and another one could be modified to make it actually useful.

I'm trying to use MASM to build it, though it's obviously a far shot from any ASM86 version. Ideally NASM would be the goal but, given how it handles offsets (Org), I think it's too much work for little gain. However, I would be happy to work with your version and make it work.
 
I started applying diff between your version of the source and what I found myself. I have found a few typos in your files and quite a lot in mine. Whenever diff indicates a difference, I check with the paper version. This way, I think we should be able to make a version without any typos. I can send you the diffs or the corrected files if you wish.
 
I started applying diff between your version of the source and what I found myself. I have found a few typos in your files and quite a lot in mine. Whenever diff indicates a difference, I check with the paper version. This way, I think we should be able to make a version without any typos. I can send you the diffs or the corrected files if you wish.
I just made a fairly large update in mine. About 46 typos found :) You may want to check again. This should take care of all name errors and similar, but not number errors though.
 
I just made a fairly large update in mine. About 46 typos found :) You may want to check again. This should take care of all name errors and similar, but not number errors though.
I should probably go ahead and upload the version I have too, since it contains several corrections needed to make it assemble completely. I just hadn't done that yet because I wanted to clean up the source to as original as I could from the "hacks" I had to do to make it build on the version of ASM86 I could find, and I wanted to write some documentation on everything learned. :)
 
I should probably go ahead and upload the version I have too, since it contains several corrections needed to make it assemble completely. I just hadn't done that yet because I wanted to clean up the source to as original as I could from the "hacks" I had to do to make it build on the version of ASM86 I could find, and I wanted to write some documentation on everything learned. :)
That would be great! You may also want to check this version, which I made it to assemble with MASM 5: https://github.com/sergioag/dosstuff/tree/master/dtcpcbios/masm
It's a quick and dirty hack, but it helped me a lot to figure out typos in the code. At this point it's only missing linking.
 
No objections, though I think it would be better to compare and fix your versions, given that you have already built it. I bet yours has less bugs than mine :)
Yeah, just need to figure out the best way to post them up for easy review and comparison (a fork or a branch?). Hmm.

You mean like invoking the structs and adding "Bios Code Segment At 0F000H" in some places?
Exactly. All of the Segment definitions in the printed code were just "BiosDataArea Segment Common" and he used linker directives and/or the LOC86 tool to place resolve references at link time. Since I don't really have a complete, working version of any one release of the ASM86/ISIS toolkit, and the little documentation I've been able to locate I've found to be somewhat arcane, I wasn't able to build it successfully that way. I ended up just specifying the segment addresses inline (using the syntax as you have above) which did the job to get it going, using the plain DOS version of LINK.EXE.

Another interesting feature of the LOC86/LINK86 tools is they have an implicit 8086 Power On vector jump - meaning the FAR Jump to F000:E05B at address F000:FFF0 is not actually in the code, it's inserted at link time.

I had the same thought, some kind of linker script to put everything together. I didn't think too much about it since I had no way of assembling the source file though. I can try to run it in a IBM 5150, if that helps. Not that I have any experience with LINK86, but I can do my best.
I was able to get it to run under other emulators, but having to transfer files between VM images became a bit time consuming. DOSBox is just nice because it shares a live file system with your OS, so you can just build from a change set really quickly!

That would be great! You may also want to check this version, which I made it to assemble with MASM 5: https://github.com/sergioag/dosstuff/tree/master/dtcpcbios/masm
It's a quick and dirty hack, but it helped me a lot to figure out typos in the code. At this point it's only missing linking.
Wow! You're quick! For sure, I'll check that out and it would be interesting to do a binary diff on the ROM files it finally produces.
 
That would be great! You may also want to check this version, which I made it to assemble with MASM 5: https://github.com/sergioag/dosstuff/tree/master/dtcpcbios/masm
It's a quick and dirty hack, but it helped me a lot to figure out typos in the code. At this point it's only missing linking.
I just went ahead and did a PR to your repo for the version of the source Finn and I worked on. We can figure out the best way to merge and commit them for history once we reconcile everything and sort out any errors.

Also in the PR is the working MEGABIOS.ROM image which we've been able to compare to a partial original copy which unfortunately (due to some bad pins) is only 25% complete. Please don't archive this yet as an "official" version, it's likely got some more errors in it. :)

I added a "BugFix" define in the IBMINC that will build with either fixes to some of the obvious bugs or build as originally shipped. I'd want to remove that and probably post the source as a branch with the original vanilla listing, and then with "hotfixes" only. Note: the MEGABIOS.ROM is based on BugFix turned off so it would be the original version in all its glory!
 
Last edited:
I just went ahead and did a PR to your repo for the version of the source Finn and I worked on. We can figure out the best way to merge and commit them for history once we reconcile everything and sort out any errors.

Also in the PR is the working MEGABIOS.ROM image which we've been able to compare to a partial original copy which unfortunately (due to some bad pins) is only 25% complete. Please don't archive this yet as an "official" version, it's likely got some more errors in it. :)

I added a "BugFix" define in the IBMINC that will build with either fixes to some of the obvious bugs or build as originally shipped. I'd want to remove that and probably post the source as a branch with the original vanilla listing, and then with "hotfixes" only. Note: the MEGABIOS.ROM is based on BugFix turned off so it would be the original version in all its glory!
Thanks for the PR! I have merged it. This made me think... I use this repo "dosstuff" for stuff which may be interesting, but doesn't involve a lot of collaboration (if any). If this starts to take off, I'll create its own repo so we can all collaborate into it, plus have a branch for historical purposes.
 
Thanks for the PR! I have merged it. This made me think... I use this repo "dosstuff" for stuff which may be interesting, but doesn't involve a lot of collaboration (if any). If this starts to take off, I'll create its own repo so we can all collaborate into it, plus have a branch for historical purposes.
I think these two versions are very close - I was able to assemble yours with only minor fixes. Though, it won't link to a working ROM binary until we get the segment relocations working - either by doing it inline (like I did just to get it to build) or using another linker where we can specify them at link time, the way it was done originally. I honestly haven't spent a lot of time yet trying to make it work with LINK86/LOC86/ISIS, so it might not be all the much trouble to do.
 
floppy.src has two typos: line 87 labeled BadSeekStat contains an "8" instead of a "0"
Line 239 should be "Ret 2" instead of "Ret"
How can I reach you directly about these details ? I'm a new user of this forum (but a *very* old user of computers... since 1967...)
 
Thanks for the PR! I have merged it. This made me think... I use this repo "dosstuff" for stuff which may be interesting, but doesn't involve a lot of collaboration (if any). If this starts to take off, I'll create its own repo so we can all collaborate into it, plus have a branch for historical purposes.
Agreed, I think this certainly deserves a project of its own!

I was able to build the ROM image successfully using the ASM86/LINK86/LOC86/OH86 tools, with the segment relocations specified to the locator (LOC86). It's not the most straightforward process, so I want to clean it up a bit before posting it. I updated the finn640kb directory with source files that removed the changes to the segment declarations, so it's nearly back to original. I also added a README to the repo where we can document more specific issues, questions and bugs as we go.

640KB
 
Last edited:
Agreed, I think this certainly deserves a project of its own!
You asked for it and you got it: https://github.com/sergioag/megabios

I've imported all the history of the finn640kb directory. What you added is in the "master" branch. I'll create a branch called "original" where the goal is to be exactly as the source listing (doesn't matter if it builds or not), and eventually also a branch called "masm", where the goal is to build using masm.

If everyone agrees, I think the goal should be making it buildable and usable with something we can all get. After that, we can discuss other routes so it can be built by a broader audience (masm? maybe some day nasm?).

I was able to build the ROM image successfully using the ASM86/LINK86/LOC86/OH86 tools, with the segment relocations specified to the locator (LOC86). It's not the most straightforward process, so I want to clean it up a bit before posting it. I updated the finn640kb directory with source files that removed the changes to the segment declarations, so it's nearly back to original. I also added a README to the repo where we can document more specific issues, questions and bugs as we go.
Looks way better now indeed! Can you share where to get these tools and the arguments for each?
 
Done! Submitted a PR with build files and instructions in the README.
Awesome! Merged! I have updated BUILD.BAT, MBLINK, and MBLOC with DOS-style line endings so it works straight away in real MS-DOS.

Also, I have included @FinnJorgensen's changes in the "original" branch. Since there are, in some cases, code issues, I'll merge that into the master. It will cause a lot of changes (90% space changes), but it will be closer to stock, at least as a starting point.

I was thinking on having an initial release being just stock (with bugs and everything), then we tag it and start making some fixes. What do you think?

Thanks!
 
Back
Top