Jump to content
IGNORED

The TI-99/4A Operating System


Lee Stewart
 Share

Recommended Posts

This is a great project and effort Lee!

I tried my ways once to recreate a commented version of the console rom / groms for the 99/4a by starting from the 99/8 console source files, which were released.

The "official" comments by TI are a great ressource. The 99/8 console rom can be considered to be identical over many parts, so the comments can be "moved" over to a disassembled 99/4a rom/grom file.

Diff Tools like WinMerge [www.winmerge.org] are essential for such a comparison project.

I also tried to align the sourcecode with Intern to include his comments.

This is another source i discovered already on whtech:

ftp://ftp.whtech.com/source/console.src

The 99/8 source files are in the same ftp-directory.

 

I also discovered another ressource for commented source files inside the Genie.

Here is all what I have so far. I got sidetracked by some other "interesting" thing.

TI-99#8-wip.zip

System-Software-Lee.zip

 

Maybe its of help.

  • Like 1
Link to comment
Share on other sites

In the last days I have tried to prepare a merge of these two files by adding comment lines to the file if the other had a code or comment line to achieve a better diff comparison. It's not finished yet, but once it is, the extensive original comments from the 99/8 source code [intsim.txt] can be moved over to your work file [ROM-4A-a.a99] quite easily.

Unless I made a mistake, the ROM-4A-a-comments.a99 file should still generate the same binary output.

 

Whenever I added a line, i did it with "****".

 

ROM-4A-a-comments.a99

intsim.txt

  • Like 2
Link to comment
Share on other sites

  • 1 year later...

Hi Guys,

I am currently working on something in the direction of this thread.

My tool tries to read in all kinds of assembler source code files and automatically identifies the label, opcode, operands and comment fields of each line. So far it is doing a good job I assume.

It even validates the used opcodes already, currently trying my ways with validating the allowed operands for each opcode.

I already tried my ways generating an html out of it with all parts of the syntaxes in another color to easy up reading. When a Label Reference is used as Operand you can click on it and it goes to the Label Definition.

What I am really trying to achieve is auto-combining the comments next to statements from all available Comments Ressources:

- 99/4A Rom0 Commented Source

- Heiner Martin Rom0 Comments

- 99/8 Rom Commented Source

- XB Rom0 and Rom1 Commented Source (thx to Rich RXB).

 

The comments should be auto-addable not only to the 99/4A ROM but to any passages of matching disassembled code (like 99/5 rom or Tomy Tutor rom).

 

I am troubling finding documentation on the following instructions of assembler source code files:

"SPIN", occurs without any operands (occurs several times in the file ROM-4A_B.a99 and seems to match an instruction in Heiner Martin Disassembly of the ROM to ">13F0 10FF JMP >13F0 Wait for interrupt"

"SCRNOP" occurs as opcode with one operand in the 99/8 assembler source code files.

 

Is it common to use "SET0" [Zero Number] instead of the correct "SETO", like happening in the 99/8 source disk files?

 

Is there some editor that marks your line "MOV R1" as red/error as long as the second operand is missing? If not, such an editor might become a nice side-product of the project.

  • Like 4
Link to comment
Share on other sites

I am troubling finding documentation on the following instructions of assembler source code files:

"SPIN", occurs without any operands (occurs several times in the file ROM-4A_B.a99 and seems to match an instruction in Heiner Martin Disassembly of the ROM to ">13F0 10FF JMP >13F0 Wait for interrupt"

 

“SPIN” is not a TMS9900 Assembler instruction. It is a comment, which is an abbreviation for “spin our wheels”—a reference to a vehicle stuck in a spot and going nowhere because it has lost traction. The TI programmers used “LABEL JMP LABEL” to set up an infinite loop until a timer interrupt forced a return to the instruction following the loop. This code assembles to >10FF and is used in four places in the tape-cassette routine in console ROM0. After an interrupt, the following code increments the return address to the instruction following the infinite loop:

*
* TIMER INTERRUPT ROUTINE
*
TIMER  SBZ  0                MAKE SURE WE'RE IN INTPT MODE
       SBO  3                CLEAR DECREMENTER INTPT
       MOV  R1,R1            TEST FLAG REGISTER
       JLT  TIMER1           FLAG SET -> ERROR EXIT
       LWPI WKSC             BACK TO REGULAR WORKSPACE
 
       C    *R14,@HXSPIN     DOING A SPIN?
 
       JNE  TIMER1           NO, DON'T INC ADR.
       INCT R14              BYPASS SPIN        <----Increments return address past “SPIN”
TIMER2 RTWP                  AND RETURN
TIMER1 LWPI WKSC
 
       MOV  @WKSE+R6+R6,R14  GET EXIT ADDRESS
 
       JMP  TIMER2           AND EXIT

...lee

  • Like 1
Link to comment
Share on other sites

  • 4 years later...
  • 3 weeks later...
On 12/12/2022 at 10:44 AM, FSword7 said:Yes.

 

It is Dave Pitts' asm990, which he provides   with sim990. It's a C-source package. It can  assemble all instructions for 9900 cpu types up to 990/12. There is also a link editor and some macro support.  The output is regular tagged object format as used in the 4A too. 

The native assemblers in DX10 are SDSMAC and TXMIRA. SDSMAC has a big macro language. Some 4A programs  turn out to have the SDSMAC identifier at the bottom...

 

Asm990 runs on any Unix-y system. The accompanying lnk990 has facilities for making the libraries, overlays and segments used in DX10. Don't use those 🙂 

 

Ralphb's xdt99 package has xas99, which is a 4A assembler with specific features for binary images. And you need it's xdm99 to copy files into a DSK image for use in a 4A emulator or TIF files for transfer. 
 

  • Like 4
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...