Monday, July 21, 2025

something fun - 3d cone

10 CLS
15 SCREEN 9
20 FOR N=0 TO 100 STEP 2
30 CIRCLE (150+N,150),100-N,9
40 NEXT N


Replace N by N*0.8 or so, or even N*1.1, and the 3D cone effect will be stronger.


PS
I have something coding wise that I plan to announce soon.  A new programming language.  Waiting for it to mature to a certain level before I announce it.



Monday, July 14, 2025

More cards

Even though I will be in Chicago during the Nationals, and it free for me to get in, I will very likely not be attending this year. That said, I'm purchasing a lot of cards the last couple of days. 81 cards to be exact for only $11. Makes me wonder if the Baseball Card market is crashing. Every time I accumulate a lot of cards for very little, I don't complain. Mostly because I don't sell and I don't collect to profit. I just love Baseball and I just love baseball cards. Here are some Chicago White Sox, Stl Cardinals, and Chicago Cubs cards I picket up today. Also got a few HoF and All-star players.





Wednesday, July 9, 2025

Computer intro 2 - Lets make it better

I believe I have mentioned several times that Odyssey 2's "Computer Intro!" was one of my first programming experiences. Before I was coding BASIC on and Extended BASIC on the TI-99/4A, I was pecking away on the Odyssey 2 keyboard.

Recently, I have created an extended "Computer Intro!" manual that that has functions never documented in the original manual.
https://mrgibson.com/o2man.php

One thing that bothered me the most, or should I say, disappointed me the most when I was young, was that output being limited to one line on the screen.

Output placement was implemented by specifying the position in register B starting with position 00.

Example:
00 6B LDV.B.00 ;Load display register B with position 00

No matter what value you entered into the position field, you were limited to one line of text, numbers, and special charactrs.

This is where if they had expanded this, this would have been a better and more entertaining programming environment.
Given that valid input could range from 00 to FF, in theory, that would have given us 256 different positions on the screen. Where 00 could have been the upper left corner. I'm going to try to reverse engineer the code and try to see if this functionality can be added.

Although it is true that in this environment there are 16 Registers, some have special purposes. Like Register B and Register C. So here is an example of the limits of text programming on "Computer Intro!" that uses Register B and C.
Example:
  Odyssey2 Computer Intro! Assembler has multiple ways of displaying the
  text "Hello World", one of the better methods is using the MOV instruction.

  00 6B LDV.B.00  ;Load display register B with position 00
  01 00
  02 60 LDV.0.00  ;load register 0 with NULL
  03 00
  04 6C LDV.C.12  ;Load data space register C with step 12
  05 12
  06 09 MOV       ;Move data space to accumulator
  07 30 BEQ.0.24  ;If NULL go to end
  08 24
  09 0B OTA       ;Display accumulator
  10 12 GTO.06    ;go back to move at step 06   
  11 06
  12 1D           ;H  Start of data space
  13 12           ;E
  14 0E           ;L
  15 0E           ;L
  16 17           ;O
  17 0C           ;space
  18 11           ;W 
  19 17           ;O
  20 13           ;R
  21 0E           ;L
  22 1A           ;D
  23 00           ;NULL  end of string
  24 00 NOP  



Tuesday, July 8, 2025

More on the TMS9900 CPU

 


The TMS9900 loads address 0000h and 0002h when power is applied, and it gets its workspace pointer (see previous post, the location in RAM where it will store its general purpose register file) and the starting PC value from those locations, but it also uses addresses 0000h through 0100h for interrupt and extended operation (think software interrupt) vectors, which, on a system with a general purpose operating system, almost certainly need to be in RAM. Contrast this to the 6502, which uses a zero page at 0000h through 0100h that usually must be in RAM, but loads its boot vector from FFFEh and FFFFh. This allows RAM to be located at address zero, and ROM the top of memory space. For the 9900, you almost need both RAM and ROM at address zero! The TIC Mk 0 (my first floating breadboard design) used a latch to redirect the ROM bank to the bottom of memory until the processor loads its first instruction, at which point it was shoved to the top of memory and RAM was addressed at address zero. However, the 9900 also has a LOAD line which, when brought low, causes the processor to load a workspace pointer and PC from addresses FFFCh and FFFEh; much more convenient! The Mk 1 is configured to latch LOAD low until the processor fetches its first instruction, and RAM is always low in memory while ROM is always high in memory.

Monday, July 7, 2025

TMS9900 CPU

Studying the TMS9900 processor of the 70s and 80s, I have learned that it was capable of Multi-user preemptive multiprocessing. This is very sad that I'm not aware of this every being utilized with the TI-99/4A computer. This can be done with workplace register pointers that can be handled by the CPU, but stored in memory.





Because we are using pointer, this can be changed on the fly. Because of the interrupt processes, we can go back and forth between tasks.






Tuesday, July 1, 2025

Texas Instruments Computer history

I have created a page that is a brief overview of Texas Instruments' Computer history.

This is the timeline of TI mini computers, TI desktop computers/home computers, and TI handheld computers.

 https://mrgibson.com/TI/ti-history.php



Dice Roller for TI-95

 I have published my first version of the TI-95 dice roller: http://mrgibson.com/dd/dragon-n-dice-ti-95-v1-0.txt A couple of screenshots: