-
Content Count
1,055 -
Joined
-
Last visited
-
Days Won
3
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by kl99
-
That is the whole idea why I started all this. My TI Simulator will not run with the binary Rom but directly execute the source code providing full context to the debugger user. The ultimate goal is to abstract things away in the simulator by setting a config in the debugger, so the user can say he wants to concentrate only on Gpl or only Assembler or abstract away the Keyboard Scan, Grom Read Routine or the Basic Interpreter. However the first step is still to be completed. Which is a merge of all available source code files, their use of labels over resolved values, their comments together into one "archival" source code version. It should merge the comments by TI Intern, the comments from the original 99/4A source code files (there are two different ones) and the comments from the 99/8 source code files. I could have done this manually, but I am a programmer. And the benefit will be that it can be used to generate a commented source code for the 99/5 disassembly, published by Fabrice, and a commented version for shared code parts in the Tomy Tutor Rom disassembly, which I am curious to analyze. The small tool for reading in one source code file turned out to become that intelligent that I am using the Intermediate Representation in the tool as basis to execute a simulation of the TI-99. I have no insight how all the existing TI-99 emulators are representating the Rom during execution. From the target of MAME I assume, that is working very close to the hardware level. Simply showing the commented source code line to the debugging user would gain a bit but not much unless the emulator is actually aware of the symbols referenced in that line. Since the acutal TI is not aware of it, I assume all emulators are like that.
-
The Cyc already contains so many documents you only find if you understand the directory structure. It already contains all PHM Manuals. The EA Manual you find on the DVD here: \vendors\ti\phm\phm3055\phm3055.pdf Afaik it is included in the Cyc for decades already. It includes fixes from all published addendums and reports from magazines or newsletters.
-
Since I always use the documents from The Cyc I initally thought it to be a mistake in those only, but it is like this in the original printed manual. Then it was my thought that the round parantheses have a different meaning and it would help me understand the resolving better, but it seems not. At least I will ask Mike Wright to streamline it in their PHM 3055 Editor Assembler Manual. I also want the credits for the program author and the manual author to be corrected in terms of Susan Jean Bailey in his edition. From talking with her on Facebook and from her postings on Facebook TI99ers it seems she got way overruled back in the days in a men dominated TI company. Also I have discovered some mistakes in the TI Intern but once my Comparer is developed, I will have a complete list of its source code mistakes. The days at work are intense this week so I will not get to much to work on TIcode99.
-
After a long day in the office some question: The left side shows the EA manual syntax definition, while the right side shows the Definition from the 990/9900 Assembly Language Reference Manual. [<label>] b XOP b <gas>,<xop> b [<comment>] different: [<label>] b XOP b <gas>,<cnt> b [<comment>] [<label>] b MOVB b (gas),(gad) b [<comment>] different: [<label>] b MOVB <gas>,<gad> b [<comment>] [<label>] b STST b (wa) b [<comment>] different: [<label>] b STST b <wa> b [<comment>] [<label>] b STWP b (wa) b [<comment>] different: [<label>] b STWP b <wa> b [<comment>] [<label>] b SWPB b (gas) b [<comment>] different: [<label>] b SWPB b <gas> b [<comment>] [<label>] b ANDI b (wa),(iop) b [<comment>] different: [<label>] b ANDI b <wa>,<iop> b [<comment>] [<label>] b ORI b (wa),(iop) b [<comment>] different: [<label>] b ORI b <wa>,<iop> b [<comment>] [<label>] b XOR b (gas),(wad) b [<comment>] different: [<label>] b XOR b <gas>,<wad> b [<comment>] [<label>] b INV b (gas) b [<comment>] different: [<label>] b INV b <gas> b [<comment>] [<label>] b CLR b (gas) b [<comment>] different: [<label>] b CLR b <gas> b [<comment>] [<label>] b SETO b (gas) b [<comment>] different: [<label>] b SETO b <gas> b [<comment>] [<label>] b SOC b (gas),(gad) b [<comment>] different: [<label>] b SOC b <gas>,<gad> b [<comment>] [<label>] b SOCB b (gas),(gad) b [<comment>] different: [<label>] b SOCB b <gas>,<gad> b [<comment>] [<label>] b SZC b (gas),(gad) b [<comment>] different: [<label>] b SZC b <gas>,<gad> b [<comment>] [<label>] b SZCB b (gas),(gad) b [<comment>] different: [<label>] b SZCB b <gas>,<gad> b [<comment>] [<label>] b SRA b (wa),(scnt) b [<comment>] different: [<label>] b SRA b <wa>,<scnt> b [<comment>] [<label>] b SRL b (wa),(scnt) b [<comment>] different: [<label>] b SRL b <wa>,<scnt> b [<comment>] [<label>] b SLA b (wa),(scnt) b [<comment>] different: [<label>] b SLA b <wa>,<scnt> b [<comment>] [<label>] b SRC b (wa),(scnt) b [<comment>] different: [<label>] b SRC b <wa>,<scnt> b [<comment>] Is there any difference between <gas> and (gas) ? Somewhere the Manual writes () Indicates “the contents of”. Does this even refer to the syntax Definitions or to something else? I am currently trying to understand how to resolve all these expressions of operands that use Symbols to their actual value. It seems sometimes they refer to the memory address who contains the label. And sometimes the operand refers not to the memory address who contains the label but to the EQU value. Still lots to learn it seems
-
Can you share how Gregory and you organized the things out? Is everything related to the Gram Kracker project now at your place? What about internal TI docs (Specs)? Any among the archive?
-
Original: Hi Jon, there seems to be a german letter from Heiner Martin. Is all the letter content in the 3 photos or is there more text not shown here yet? Can you provide a higher quality version of the photos? It's a bit hard to identify some words from the photos. We german speakers can make a german digital .txt version and translate that to english for the archives. Edit: Sorry, I thought this was from the archives of DC Warren.
-
Attached Files gk_disks_v1.00.zip 554.65KB 7 downloads For the history books: I was download number 7
-
Thanks to DC Warren, his Wife and to you Jon for preservation work/effort.
-
This is not about executing such statements but rather align the representation of the data according to the given Rendering Options, when recreating a Text Source File or an Html Source File. The user of TIcode99 should be able to select: - I want to keep the opcode that was used in the original source lines. - I want to render always as DATA - I want to render always as BYTE This way I can eliminate that false alert of a difference when comparing two source code files by aligning their render mode to either DATA or BYTE. That is the whole purpose of those rendering Options. The User can run his original Source code File through TIcode99 with the Option: render all numbers with 4 digit and as Hexadecimal. And voila he gets a new file where all the Decimal numbers are suddenly Hexadecimals and use 4 digits. Same for "R" Prefix usage of Workspace Registers. And that will be true for all the other Rendering Options. With the Intermediate Representation of the Source Code File I can do a lot of things, and that is why there are currently multiple ways to use that: - start a TI Simulator - Recreate the Source Code File given the provided Rendering Options - Create an Html Version given the provided Rendering Options using syntax highlighting on a deep level and tooltips. - Compare two Sourcecode Files and settings options which things to ignore for that comparison. This list is not final and I could think of many more useful side-products: - Source Code Editor / Application to develop in an Application with syntax Highlighting and with much knowledge on the meaning of the code - Compile into Tms9900 Object Code - sort of High Level Assembler Source Code that is generated from Assembler Source Code file, and compiles back to it ...
-
I worked a lot on the project on the weekend. It is really a great feeling you get when building something. From having two routes for the project (Simulator, "Text/Html Compiler" using an Intermediate Representation) I introduced a third route on sunday which is a Comparer of two Source Files. Let me summarize, how it came: After being satisfied with the generated Html files from the commented Source Code (ROM-4A_Acomplete.a99, ROM-4A_Bcomplete.a99, ROM-4A_Ccomplete.a99) I did go back to my collection of other Source Files. con4ar0.txt The Cyc Dvd features a very nice file called con4ar0.txt in the path \vendors\ti\internal\consrc, which also represents the source code for Rom 0 of the TI-99/4A, therefore Memory Range >0000 - >1FFF. So we are talking about a file that is about the same Memory Range and basically should compile to the same binary like the combination of the upper 3 files. Never the less the Symbol Names are many times different. And there are many times that the file ROM-4A_A.a99 only features the resolved Value while there is a nicely named Symbol in con4ar0.txt. con4ar0.txt has some different but also familiar looking format, and looks to be like some list output file from some TI-990 Assembler. The original source code lines got trimmed because the lines got intended by adding line numbers, memory address and compiled values to the left. That sadly trimmed some of the valuable comments. After playing a bit in Notepad++ I got the file back to the supposed original source code format, so I was able to run it into the Text/Html Compiler. The Text Compiler is meant to recreate a perfect looking copy of the scanned file from the intermediate Representation, even though the various strings (">1000", ">0C", "124", "R4") got read in as correct objects with a value instead of a (not-so-intelligent) string representation. It takes into account zero leading numbers, stores whether a number was in hexadecimal or decimal Format in the original File and the spacing and positioning of Label, Opcode, Operands and Comments. con4ar0.txt brought some minor challenges: + last line in text file doesn't end with line break + spaces after the last non-whitespace Character in the line + first use of BYTE and EVEN opcodes and the requirements of their effect on the Memory address line. After taking care of those the Text Compiler recreated a .txt file that was identical to the scanned in file of con4ar0.txt as well. The Html Compiler created a well looking file with the Memory addresses matching the ones from TI Intern, at least on all occations I have checked. After starting a manul comparison of ROM-4A_A.a99 with con4ar0.txt I have immediately detected the need to introduce some rendering options to allow proper comparison + Option to turn off keeping leading zero digits in numbers + Settings how to render Workspace Registers, whether always use R as Prefix or never or keep the original way from the scanned line. + Settings how to render Numbers, whether to always render as Hexadecimal or always as Decimal or keep the original way from the scanned line. + Option to not render Empty Lines + Option to not render Comment Lines + Option to not render Comments + Option to Merge lines where Labels are defined in a dedicated line, with the actual opcode following in the line below, to one line only. (tricky one) It required some intensive changes, but the Text/Html Compiler can now recreate the Text/Html File based on the given Rendering Options. The two source code files look a lot more comparable already with the right set of renderOptions already. The last thing I am currently working on and I hope that clears out most of the remaining diffs, is an option to resolve Symbolic References to their actual value. Besides those I only see that one file might use DATA to define a word while the other file uses BYTE twice to define the same. So this might also be something to integrate into Rendering Options.
-
I think I got the automatic address number generation right, at least for these files I was not able to find a single offset from the address number shown in TI-99 Intern from Heiner Martin. These 3 files represent the original commented source code by TI for Rom 0 (>0000 - >1FFF) for the TI-99/4A, now with added address numbers. ROM-4A_Acomplete.html ROM-4A_Bcomplete.html ROM-4A_Ccomplete.html @mizapf: I am not sure whether I understood it right? There is a big bug in the operating system?
-
At least it is clear for me now. Please don't take it wrong, Classic99 is a great help for debugging, I need it to get this project anywhere. Since the 2nd word is the address of the first instruction and this is a data statement I was so far ignoring those, I missed that actual Branch to >0024 and my simulator therefore went another path. I will fix it and check the correct "route". The other 2 topics that popped up: 1. Byte versus Word instructions The memory representation for now is an ArrayList of size 65536, however I store the object at the target address when there is a MOV or similar instructions. This is wrong. So for word operation I either have to store the object at both byte addresses with some flag of LSB. Or I reduce the Array to represent 32768 words. And handle byte operations special. 2. Object gets destroyed when modified Since I want the provide the user with as much information as possible about what is in memory, I want to store the object in memory instead of its value only. Example: MOV @STKADD,R4 Let's assume R4 contains 0 (still initialized). After this instruction I store an object representing the operand @STKADD in R4 (actually at the address in Memory that R4 is pointing to). So far so good, instead of only having >8373 as value in R4, the user will see that R4 is containing the STKADD (which means Stack Address afaik). SRL R4,8 However the next instruction logically shifts the content of R4 to the right by 8 bit. So I wondered how do I not loose track of what is stored in R4 after processing this instruction? The only solution is to start storing an Expression of objects in R4. R4 contains an expression representing: SRL(@STKADD, 8 ) I could extend this expression whenever R4 is modified until R4 is freshly assigned with something that is not at all based on the current Value of R4. This way the user will not only see the actual value the expression or parts of it is resolving to but a history of how the current value evolved.
-
Wow. It looks like you are at a level of debugging the CPLD to proof that the CPLD is not working according to its specifications. Could it be a compatibility issue between the CPLD and the chips it interacts with? (I am no expert to name the correct ones) In the end you have to decide which technology you want to go forward with.
-
thanks. that was the missing piece in the puzzle. 0000 83E0 DATA >83E0 RESET vector 0002 0024 DATA >0024 0000 contains the Workspace Register Pointer 0002 contains the address of the first instruction i always wondered how it passed that first data bytes and Classic99 doesn't stop when you have a breakpoint at 0000. It seem to abstract this hardware logic away. Thank you a lot for this info. I think I handle most of the lengths correct, I still have to check the Assembler Directives and the Data, Text Statements to calculate their correct value.
-
The simulator got into development stage. So far I am processing these instructions with success: IDT TITL DEF EQU B BL MOV INCT I am ignoring DATA, BYTE and RORG so far. The simulator is already jumping to KSCAN and Branch Linking to PUTSTK. It feels a bit like Dr. Frankenstein bringing something to life. I am eager to continue on this. For now I am running the Memory as ArrayList and each address in the memory can have an object instead of only an Byte Value. This wiill slow it down but the purpose is to have full debugging not full speed. Should it be that 83E0 is set as Workspace Register Pointer when then computer starts to execute the first line? I assume the CPU starts with PC being at 0, right? Does the actual CPU detect Data/Byte/Text Statements and for those only increases the PC and goes on to the next instruction?
-
Hi Lee, nice to read from you. i will. i want to include more features still but nothing prevents a interims release of the set of files. The hard part was making an Intermediate Representation of all the segments of an instruction. Tweaking the html generation is now like putting sugar on the cake. Thinking forward big times would process the source code file like the Cpu and performs the instructions, line by line, in a TI-99 simulation sandbox. So instead of running a TI-99 simulator/emulator from a compiled binary for the System Roms/Groms, this simulator would run a TI-99 off from the assembler source code (and later Gpl source code). The final goal would be to be able to debug the TI operating system in this simulator with a full context of what is available in the source code files, with labels, symbols, expressions, references, comments and all its things.
-
Thank you again for your support. TIcode99 is starting to show off the first fruits. It can create a html version of any assembler source code with a much needed proper syntax highlighting. If you open both: the .a99 original file and the .html file with the same name in Mozilla Firefox you should see the same content, using the same fonts and sizes. ROM-4A_Acomplete.a99 ROM-4A_Acomplete.html However the .html version features syntax highlighting and some tooltips when you hover. You can also click on any Symbol Reference to jump to the Definition in the code. Here is some snapshot comparison: Now I am working on generating the proper address line left to the instruction. ROM-4A_Acomplete - WithAddresses.html However I am not calculating the instruction byte length correct yet for every type of Instruction. Has anyone a good read for this?
-
And on the emulated 99/4 and 99/4A QI it doesn't show?
-
afaik GROM1 and GROM2 are identical. those are TI BASIC. only GROM0 contains the v2.2 patch where the only difference is that they removed the check for ROM only cartridges. so only one of them should differ. In the 99/8 sourcefiles it can be read that they actually got the approval to re-insert the check for ROM only cartridges, but they didn't have the time to do that yet, at least for the version of the sourcecode that is public. that is why all 99/8 are not compatible with the Third party cartridges.
-
All your replies and discussions are so much appreciated. Thank you guys! I did some research on one question and found an easy answer to it: The manual on the 990 assembler shows a note on Immediate Addressing: So I can allow and simply ignore it in TIcode99. Stuart was correct with his assumption! Again, the manual on the 990 assembler shows a note on Symbolic Memory Addressing: So I can allow this syntax and simply ignore a missing symbol preFix in TIcode99 under the same circumstances. Stuart was again correct with his assumption!
-
There are documents showing the schematics of TI-990 machines: http://www.bitsavers.org/pdf/ti/990/schematics/990-10cpu.pdf http://www.bitsavers.org/pdf/ti/990/schematics/
-
Hi, can the experienced programmers confirm if the following statements are true and I understood the topics correct? The background is that I am working on a tool TIcode99 and would like to get it reading in 99xx(x) source code files correct. Special operand types [CruBit <cnt>, Xop <xop>, ShiftCount <scnt>] - If an opcode requires a numeric input for an operand, the sourcecode can define the number as decimal or hexadecimal. - If an opcode requires a numeric input for an operand, the sourcecode can always define a symbol (EQU opcode) and refer the symbol name instead of a direct numeric input - If an opcode requires a numeric input for an operand, the sourcecode can refer a Workspace Register instead (like 'SLA R5,R0'). However not the value of the Workspace Register is used but the number of the Workspace Register - for these operand types I can not use '1+2' as operand. Immediate operand type <iop> - If I define a Symbol, I can refer the symbol as immediate operand. Here I can also use a symbol reference like below to define an immediate operand. -SYMB1 SYMB1+2 SYMB1*256 SYMB1+SYMB2 All of these examples don't work for the operand types CruBit <cnt>, Xop <xop>, ShiftCount <scnt>. - Below instruction is not supported on the TI-99 Editor Assembler, but probably on the TI-990 Assembler (SDSMAC). LI R1,MF1+(>F*4) I assume it can be translated to? LI R1,MF1+>FFFF Questions about the Immediate Operand type: 1. What does this instruction mean? CI R0,@ENDDAT ... ENDDAT EQU $ It fails for me in the EA, never the less the 99/8 source code uses such code in DEBUGG. Other example: PAR02 CI R8,@INTEG$*256 ... INTEG$ EQU >AE 2. How can a String be useful as immediate Value? 'E' 'I'-'0' -'0' '--' '-'*256 I don't understand the usecase when to use a String like shown as Immediate operand. How are these "translated" into a numeric value? Symbol operand type <symbol> This operand type is a bit unclear to me. Afaik this i used by opcodes DEF, REF, SREF, LOAD, DXOP, END and DFOP. Should this solely allow the definition/reference of a symbol? Or should I be able to use something like "SYMB1+2" or other 'expressions'? Workspace operand type <wa> XPTL EQU 6 SRL XPTL,8 Since this works, it seems I can use a Symbol instead of a direct reference of one of the Workspace Register. Is it translated to Shift R6 by 8 to the right? However I can not use "XPTL+2" for that operand. Expression operand type <exp> It is quite clear that wherever the syntax definitions says here should be an <exp> as operand type it allows an expression to be used. However it seems that the Immediate operand type <iop> and the General Address operand types <gas>,<gad> are heavily using expressions as well. Is the assumption correct, that every expression has to result in some number (address) during assembling time? General operand type <gas>, <gad> I see sometimes an operand looking like indexed memory addressing, however the @ sign is not there. WRTADD EQU >402 ... MOVB R4,WRTADD(R9) Any explanations on why this is missing the @ sign? Many thanks for your help in advance.
- 73 replies
-
So far I found these documents/brochures related to this topic: http://www.bitsavers.org/components/ti/TMS7000/TMS7000_Family_Microarchitecture_-_Nov_1982.pdf http://www.computerhistory.org/brochures/doc-437295725f2bf/
-
Very interesting thread. I read some thing about this in the Software Development Handbook, Geoff Vincent and Jim Gill, TI 1981. Find it here: http://www.hexbus.com/tibooks/ti/software-development.zip Can you specify which document/book/manual is lost? The more we know about Title, Publisher, release date the better we can search our archives.
-
This is my set of christmas gift I got. Most of it is from my wife, the Artcade from my mother in law. In addition I got this book from my brother: https://www.funstockretro.co.uk/image/cache/data/multi-images/0014845-625x440.jpg
