Jump to content
IGNORED

In search of the TI Assembler source code


FALCOR4

Recommended Posts

E/A's, source code is written in GPL...

Downloads/Disassembly

 

Edit: Come to think of it ...I guess the actual assembler is on DISK 1.:roll:

 

The Editor/Assembler module

 

...The last section of the above, is somewhat relative to this topic.

 

...The Line-By-Line assembler is 9900, machine language.:ponder:

 

Edited by HOME AUTOMATION
Link to comment
Share on other sites

32 minutes ago, HOME AUTOMATION said:

E/A's, source code is written in GPL...

Downloads/Disassembly

 

Edit: Come to think of it ...I guess the actual assembler is on DISK 1.:roll:

 

The Editor/Assembler module

 

...The last section of the above, is somewhat relative to this topic.

 

...The Line-By-Line assembler is 9900, machine language.:ponder:

 

I'd also like to get the line-by-line assembler source code but that might be more difficult.  A last resort would be to use the Diskassember on it and start ploughing through the code to figure it out.  I also selfishly try the easy way first. 😁

  • Like 1
Link to comment
Share on other sites

1 hour ago, Lee Stewart said:

You might gain some insight from David Pitts’ asm990 assembler on his Texas Instruments TI-990 Page. He worked on the TI-990 from the beginning and wrote and/or collaborated on its utilities including the assembler. It is written in C.

 

...lee

Thank you, Lee!  Very interesting site and history.  I'll try to make contact with Dave and see if he has some original code he might share.  My thought is if the 99/4 assembler came from a 990 source then I might be able to put some of the parts and pieces back together from the 990 code that represent the 99/4 code.  We'll see.

  • Like 4
Link to comment
Share on other sites

On 4/5/2023 at 7:51 PM, FALCOR4 said:

I'd also like to get the line-by-line assembler source code but that might be more difficult.  A last resort would be to use the Diskassember on it and start ploughing through the code to figure it out.  I also selfishly try the easy way first. 😁

The LBLA source code is actually easier ... see the attached source code listing for my MiniMem LBLA & Utilities Cartridge (http://www.stuartconner.me.uk/ti/ti.htm#minimem_lbla_tibug_disassembler_cartridge) which include the (slightly modified) MiniMem LBLA. This is largely commented, and it seems was developed from the no-labels LBLA (also attached) for the TM990 range of modules.

MP325_990-402_Asm (LBLA User Guide and Listing).pdf MiniMem LBLA & Utilities Cartridge.lst

  • Like 4
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Ksarul said:

One other potential source would be the code used in the BASIC Support Module, as that later evolved into the Mini Memory. I suspect that the Assembly code portions got reused in a lot of places, as Sumiko Endo was the primary coder for both of them, IIRC, as well as the E/A.

TI BASIC Support Module (Restored).pdf 512.53 kB · 3 downloads

Thanks @Ksarul. I had totally forgotten about that module.  I went into my archives and found a file marked: "TI BASIC Support Module (Complete)" that I may have gotten from you years ago.  Do you know how that might be different than the one you posted here?

 

Anyway, the standalone debugger/assembler code might prove to be very helpful.

Link to comment
Share on other sites

54 minutes ago, FALCOR4 said:

Thanks @Ksarul. I had totally forgotten about that module.  I went into my archives and found a file marked: "TI BASIC Support Module (Complete)" that I may have gotten from you years ago.  Do you know how that might be different than the one you posted here?

 

Anyway, the standalone debugger/assembler code might prove to be very helpful.

It is the same file, @FALCOR4. I renamed it at some point. . .

  • Like 2
Link to comment
Share on other sites

On 4/5/2023 at 8:51 PM, FALCOR4 said:

I'd also like to get the line-by-line assembler source code but that might be more difficult.  A last resort would be to use the Diskassember on it and start ploughing through the code to figure it out.  I also selfishly try the easy way first. 😁

Here you have it ... something I did a few years ago. lbla.a99 is the final product of the 4 stages I disassembled the LBLA.

 

 

Lbla.zip

 

Edited by F.G. Kaal
  • Like 7
  • Thanks 1
Link to comment
Share on other sites

Around 1985, I was given some 5.25" floppy disks.   They are backups of source code directories on a 990.

 

One of them is Commander Systems' Disassembler.   It runs under TXDS or DX10.  A rare glimpse into a 3rd party's 990 assembly language source.

 

I don't think the disks contained the Assembler source. 

DISAS1.txt DISAS3.txt DISAS4.txt DISAS2.txt

  • Like 5
  • Thanks 2
Link to comment
Share on other sites

CARTRIDGE sources from Editor/Assembler

 

These are the original, fully commented CARTRIDGE sources.  They are backups of a directory "SD2.ASSM.SRC". (Software Development 2?)  See the later directory names, below under GCAS.

 

The individual files are concatenated into 3 "archives".  Within those, files are separated by +++++. (like Unix shar files) The original filenames were:

 

 

part 1:

SRC
     ALUTIL           KSCAN, VDP, DSRLNK, LOADER, XMLLNK, GPLLNK          
     ASSEM            All menu screens in the cartridge.     July 17, 1981      Author S.Endo
     BASIC            Routines callable from console BASIC.  Sept 09, 1981      Author S.Endo  
     BUG              BUG FILE - bugs corrected on           September 4, 1981
     ERROR            GPL ERROR HANDLING ROUTINES            July 17, 1981      Author S.Endo 
     GCAS

part 2:

SRC
     GROM6000
     LOADER
     USERS

part 3:

OBJ
     GROM6000

 

 

 

ALUTIL is machine language source, the rest are GPL source.  According to comments (below) their object code files were GROM and ALUTIL. They were concatenated to make the cartridge file ASSMBLR.

 

GCAS is a batch file,  collecting the GPL sources.  

 

From comments in EA2.txt, the cartridge would built by command line:

 

 

 

************************************************************
*   STANDALONE EDITOR & ASSEMBLER FOR 99/4                 *
************************************************************
************************************************************
************************************************************
*   USE GCA COMMAND ON THE FOLLOWING FILES                 *
*   GCA FILE NAME              SD2.ASSM.SRC.GCA
*                                                          *
*   OUT PUT FILE NAME IS       SD2.ASSM.OBJ.GROM           *
*   TO LIST WHOLE GPL CODE     SD2.ASSM.LST.GROM
*                                                          *
*   CONCATINATE LOADER TO THIS GPL OBJECT FILE             *
*                              SD2.ASSM.OBJ.GROM           *
*                              SD2.ASSM.OBJ.ALUTIL         *
*                  OUTPUT FILE SD2.ASSM.OBJ.ASSMBLR        *
*                                                          *
*   AUTHOR SUMIKO ENDO    September 1981                   *
************************************************************

 

GCA SD2.ASSM.SRC.GCAS SD2.ASSM.OBJ.GROM

 

where file GCAS was

 

?COPY ARCHIVE.EDTASM.V090881.SRC.USERS
?COPY ARCHIVE.EDTASM.V080581.SRC.ASSEM
?COPY ARCHIVE.EDTASM.V080581.SRC.LOADER
?COPY ARCHIVE.EDTASM.V080581.SRC.ERROR
?COPY ARCHIVE.EDTASM.V090881.SRC.BASIC
?COPY ARCHIVE.EDTASM.V090881.SRC.BUG

 

 

 

Unfortunately, USERS and LOADER (in part 2) are corrupted. 

 

 

Interesting Tidbits:

 

Calling attention to a few details in here:

 

• Comment on DSRLNK:  "Search ROM CROM GROM for DSR"  Some other DSRLNK versions will only search ROM!

 

• Here is the source code to the Assembler.  Kidding!!!  It's just the GPL part.  Love that first comment. 

 

***
************   Now assemble !!!!!!  *********
***
       CALL CLRTOP      Clear editor information
       ALL  SPACE
       XML  ASM         Assemble the program.                           
       BS   EMSG        Error routine shared with editor
*********   Close files before going back to menu   ******
*
ASMOUT
       CALL CLRTOP           Clear editor information
       DST  PAB1,@SREF       Close source file
       CALL CLOSE
       DST  PAB2,@SREF       Close object file
       CALL CLOSE
       $IF .BIT(ALST) @FLAG .EQ. 1 THEN
         DST  PAB3,@SREF     Close list file
         CALL CLOSE
       $END
       CLR  @FLAG
*********
       CALL CONT        Issue message and continue.
       BR   START       Go back to menu screen.

 

 

 

XML ASM is XML >21 .  It must have entered the file ASSM# after it was in memory.  I didn't know there was an XMLLNK table to run things out of low RAM.  The cartridge has this little XML lookup table:

 

From part 2:   the XML table would vary depending on whether you were in EDIT# or ASSM#.

 

 

 

****
*   EQUATES
*
*   XML EQUATES
*
LOADX  EQU  >21       EXECUTE LOADER
SAVEX  EQU  >22       EXECUTE SAVE ROUTINE
EDITX  EQU  >23       EXECUTE EDITOR
*
ASM    EQU  >21       EXECUTE ASSEMBLER
*
ALSUP  EQU  >21       EXECUTE ASSEMBLY LANGUAGE CODE
TGOBLD EQU  >22       TAGGED OBJECT LOADER.

 

•  EA6000

 

This is object code, probably the output OBJ.GROM. It begins with the comment:

 

GROM    F                    11/27/84    12 25 12   

 

I think somebody had tested in 1984 that it could still assemble properly!  The floppy disks were given to me in 1985. 

 

• Small caps charset.  It has GPLLNK number 4A, very cute!

 

I think the small caps address varied with later 4A console ROMs, so this would get it correctly. 

 

 

From part 2:

 


CHAR2$ EQU  >18         CHARACTER TABLE ADDRESS IN MONITOR
CHAR3$ EQU  >4A         LOWER CASE CHARACTERS

 

and here "small characters" must refer to the regular (TI BASIC) capitals, as opposed to the BIG CAPITALS on the title screen.

 

 

       DST  >900,@FAC        Load small characters.
       CALL CHAR2$
       CLR  RAM(>800)        Clean up TI logo stuff.
       MOVE >FF FROM RAM(>800) TO RAM(>801)
*
*
       MOVE 7 FROM ROM(#VDPRG2) TO VDP(1)  SET UP VDP REGISTER.
*      CHCEK IF ERAM EXISTS
       CALL BUG1             Fix the bug
*
       MOVE 16 FROM ROM(#CDATA) TO CHAR(>1E) LOAD CURSOR CHARS

 

 

Later on, subroutine 4A  loads the small caps (lowercase) if the console is a 4A.

Otherwise 99/4, where it puts little bars "C0" into chars 96-127, a-z.

 

 

 

***********************************************************
*      BEGIN -- First entry point                         *
***********************************************************
BEGIN
       DCLR @IDCODE           CLEAR ALL FILES IN MEMORY
****
*      Initilazation section
*      Color >F5 (color table 0 through 12), blue screen
*      Define VDP registers, load character sets,
*      No motion and no sprites
****
*
BEGIN2
       CALL COLOR            Load color table
       ST   5,@KEYBRD        Scan keyboard 5.
       SCAN                  Enable keyboard for /4A
       $IF @KEYBRD .EQ. 0 THEN  MUST BE 4A KEYBOARD
         DST  >B00,@FAC
         CALL CHAR3$         Load lower case character
       $SELSE
         DST >A00,@FAC
         CALL CHAR2$         Load semi-lower character
         DST >B00,@FAC       First character definition
CHRLP    ST   >C0,RAM(@FAC)  Place two dots for lower case
         DADD 8,@FAC
         $IF @FAC .DL. >C00 GOTO CHRLP  Fix next character
       $END IF
       CLR  @KEYBRD          Scan standard keyboard
*
       DST  >900,@FAC        Load small characters.
       CALL CHAR2$
       CLR  RAM(>800)        Clean up TI logo stuff.
       MOVE >FF FROM RAM(>800) TO RAM(>801)

 

 

Thierry Nouspikel's version, diassembled and commented:

 

A disassembly of the E/A cartridge is in Thierry Nouspikel's excellent titechpages.  See here:

 

https://www.unige.ch/medecine/nouspikel/ti99/ea1.txt

 

 

 

EA1.txt EA6000.txt

EA2.txt

Edited by FarmerPotato
Replace EA2.txt which had raw bytes appended
  • Like 3
Link to comment
Share on other sites

Check out https://www.imdb.com/title/tt4846340/ . A must-see movie I really enjoyed. 

 

Very interesting trivia from IMDB: 

Astronaut John Glenn did specifically request that Katherine Johnson [co-worker of Dorothy] review all of the calculations for the Friendship 7 mission - (his dialogue in the film based on actual NASA transcripts*) - before he could be confident enough to proceed, but which in reality actually occurred a few weeks before launch: not as depicted in the film whilst awaiting the actual launch. And Katherine Johnson's calculations (more realistically) actually took (just!) three days to confirm.

  • 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...
  • Recently Browsing   0 members

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