Thursday, November 28, 2024

Hello World Examples from different 80's platforms

Programming in the 80's, every platform had to be differnt.
Odyssey2 Computer Intro! Assembler has multiple ways of 
displaying Hello World, here is one.

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 goto 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       ;No opperation, just a place to land

TI-99/4 and TI-99/4A BASIC

10 CALL CLEAR
20 PRINT "HELLO WORLD"


ATARI 8-bit (400/800/800XL/130XE) BASIC

10 PRINT CHR$(125)
20 PRINT "HELLO WORLD"

Commodore VIC 20 BASIC

10 PRINT "{CLRSCN}"
20 PRINT "HELLO WORLD"

Commodore 64 BASIC

10 PRINT CHR$(147)
20 PRINT "HELLO WORLD"

IBM AT GW-BASIC

10 CLS
20 PRINT "HELLO WORLD"

Wednesday, November 27, 2024

joystick programming with Odyssey2

I wrote a couple of examples of joystick programming with Odyssey2's Computer Intro! cart.
I also added this function to my o2 programming manual for Computer Intro!
http://mrgibson.com/o2man.php
Super simple version Joystick test
STEP HEX  Assembler Remarks
00   6B   LDV.B.05  ;sets display position with Register B
01   05             ;loading 05 for position to register B
02   0A             ;grab joystick status and save to accumulator
03   B1   UNP.1     ;Unpack to Register 1 and 2
04   C1   OUT.1
05   C2   OUT.2
06   00   NOP       ;No Operation, to cut on flicker
07   12   GTO.00    ;Goto step 00
08   00

shows characters for values of UP, Down, and Center
STEP HEX  Assembler Remarks
                    ;Set our fixed values
00   61   LDV.1.FF  ;set register 1 with value
01   FF             ;FF for center stick
02   62   LDV.2.FE  ;set register 2 with value
03   FE             ;FE for stick up
04   63   LDV.3.FB  ;set register 3 with value
05   FB             ;FB for stick down 
06   6D   LDV.D.23  ;set register D with value
07   23             ;23 Hex for C
08   6E   LDV.E.15  ;set register E with value
09   15             ;15 Hex for U
10   6F   LDV.F.1A  ;set register F with value
11   1A             ;Hex for D
                    ;this is our loop start, always resetting to position 5
12   6B   LDV.B.05  ;sets display position with Register B
13   05             ;loading 05 for position to register B
14   0A             ;grab joystick status and save to accumulator
15   31   BEQ.1.23  ;check if Accumulator and Register 1 are equal
16   23
17   32   BEQ.2.26  ;check if Accumulator and Register 2 are equal
18   26
19   33   BEQ.3.29  ;check if Accumulator and Register 1 are equal
20   29
21   12   GTO.12
22   12             ;Goto/loop back to step 12
23   CD   OUT.D     ;Display C for center from Register D 
24   12   GTO.12    ;set goto
25   12             ;Goto/loop back to step 12
26   CE   OUT.E     ;Display U for up from Register E
27   12   GTO.12    ;set goto
28   12             ;Goto/loop back to step 12
29   CF   OUT.E     ;Display D for down from Register F
30   12   GTO.12    ;set goto
31   12             ;Goto/loop back to step 12

Wednesday, November 20, 2024

Adding 6th and 7th computer to my lab


New to the lab, but not new to the household is the Apple Mac. This Apple computer has not been used in a while, taken out of storage, and dusted off.


Also new to the lab, but not household, an RCA computer. I know nothing about this RCA, just found it in my old computer storage. At one time I must have purchased it for one of my daughters as it is hot pink. lol It is a "Viking Pro RCA"


So my lab now has three Windows boxes, RCA (Android Linux), TI-99/4A, Atari 400, and an Apple.


I have also added a backend ethernet network and file server to easily share files between the machines without being public and using up wi-fi resources.


Plus setting up a new KVM. the HP server, RCA, and Apple will share a large monitor while the TI-99, Atari, HP laptop and Lenovo laptop share a monitor.




Saturday, November 16, 2024

Went book shopping and picked up Terry

Spent some time with my two oldest kids today at the book barn in Forsyth IL. Picked up three books for my Terry Brooks and Terry Goodkind collection.

- Pillars of Creation by Terry Goodkind
- Confessor by Terry Goodkind

and

- Dark Wrath of Shannara by Terry Brooks


Lastly, I purchased the eBook, Indomitable by Terry Brooks that is between the Wishsong and Dark Wrath.

That is the most high-fantasy books I have purchased in one day in a while. 

My collection listing can be seen at http://mrgibson.com/tbtg/

Monday, November 11, 2024

Dungeon Crawler : Hell's Halls

From the software packaging:

A Perilous Quest
In search of gold and glory, you travel to a dungeon.
It's said incredible wealth hides within the crypts
men call Hell's Hall.

But evil touches all who enter.

Hell's Halls

The Dungeon Awaits

A TI BASIC dungeon adventure for the TI-99/4 and
TI-99/4A home computers. Explore a dangerous
catacomb, collect treasure, and find its evil master.

I found a newer dungeon crawler called Hell's Halls that was released in 2022 by PixelPedant.  The game is only released for the TI-99/4A and for TI-BASIC (standard).  The game cost $10 for the full digital version or free for the first half of the game.



The way the game was created was quite creative, putting as much punch out of the system that a base unmodified TI-99 with only BASIC can muster.

This adventure type game is full of rewards, traps, and obstacles - all making your points go up and down as you play.  Each level/Floor is identified by a color, starting with white stone blocks.  There are four levels/floors and you race against the clock to get to the final exit before time runs out and you're trapped there forever.

 The game is mostly about efficiency and survival and the dungeon master makes sure you know time is your enemy.

The floors are randomized every game, so no two games are the same.


The free WAV file can be downloaded here: https://pixelpedant.com/hh/HALLS-MAIN.wav

The full digital download ($10) and the physical media ($25) can be purchased here:

https://www.arcadeshopper.com/wp/store/#!/Pixelpedant-Software/c/143941511
 

Wednesday, November 6, 2024

More on 80s math processing.



I can see why Atari was so frustrated in the 80s. They were making better 8-bit and 16-bit computers than IBM and Apple for a whole lot less.



How were they better? First lets look at simple number storage in memory.

Here is IBM with a 16-bit Intel processor with Microsoft's GW-BASIC. This would have been standard with the 8086, 286, 386 processors.






With IBM, there are two interesting things going on. First, only 8 places after the decimal point is stored for processing and display.  Secondly, even in the code, the hard coded numbers past the 17th spot are cut off.


Next, I tried with the TI-99/4A. I had gotten some pretty good responses with math on this computer. The TI-99 has a 16-bit TMS9900 CPU also (the first home computer to ever to be 16-bit)




>LIST                         
 100 TEST=.123456789123456789 
 200 PRINT TEST               
>RUN                          
  .1234567891                 
  ** DONE **                  

The TI-99/4A has neither problem the IBM has.  All numbers are stored and the TI-99 display 10 digits behind the decimal.

With Atari's 8-bit MOSS 6802 CPU, we get a little bit better response than the IBM, but not much.
The better is we get 9 decimal places to work with instead of IBM's 8. Unfortunately, the hard coded value also get's changed:





100 TEST=.1234567891123456789    
200 PRINT TEST                   
RUN                              
0.123456789                      
                                 
READY                            
LIST                             
100 TEST=0.123456789             
200 PRINT TEST                   
                                 
READY                            
One additional decimal place (9) and the 0 before the decimal.

I would love to see how the Atari ST 520 , Apple Mac, or the Apple IIe stacked up against these three.

But back to the TI-99/4A.  Why did it do better than the 16 bit intel IBM computers and the 8-bit Atari computers?

Key points about the TI-99/4A's math capabilities:

First, it had an advanced (for it's time) 16-bit CPU for processing. Unlike most other home computers at the time which were 8-bit, the TI-99/4A's 16-bit processor allowed for more complex calculations with greater precision. But it still beat the x86 (that was also a 16-bit CPU).  

Although I would love to, I have not compared the TI-99/4A to computers that used the 6800 CPU.

But the TI-99/4A had another trick, The TI-99 computers had a dedicated floating-point unit. The TI-99/4A had a dedicated hardware component for handling floating-point operations, which significantly improved the speed and accuracy of mathematical calculations. 

Optimized floating-point format:
The way the TI-99/4A represented floating-point numbers internally was specifically designed for efficiency, further enhancing its mathematical performance. 


Monday, November 4, 2024

Program a SS and Compare BASICs (and stuff)

I have changed my mind.  My next project is going to be a multiplatform spreadsheet in BASIC.  This would not be the first time I have programmed a spreadsheet, but the last time I programmed it in C for Windows and Linux.  This time it will see how well I can make a SS for older computers like Atari 800, TI-99/4A, and old DOS computers.

First to see what I am dealing with, I did a math accuracy test:

100 PRINT ATN(5)
RUN

TI-99/4A TI BASIC         displays 1.373400767
Atari 400/800/800XL/130XE displays 1.37340076
IBM PC GW-BASIC/PC-BASIC  displays 1.373401



My guess is Microsoft purposely chose this accuracy level to promote paid products.

The cable I purchased has worked really well. still factory sealed, from 1979! Just opened it, looks, feels, and smells like brand new! I dumped a hundred TI-99/4A WAV files on my virtual tape drive and it is great!



So another successful experiment with my TI-99/4A 


Sunday, November 3, 2024

BASIC Manuals

Now that I have both my Atari Computer and My Texas Instruments Computer hooked up to the KVM system, I plan on doing even more programming on them this winter.



So this weekend, I started writing two BASIC programming manuals, one for each system.

For the TI-99/4A
http://mrgibson.com/TI/Basic.php

For the Atari 800/800XL/800XE
http://mrgibson.com/atari/atari_basic.php

I got a lot done with both manuals, and have a lot of useful information, but neither completed.

As soon as I have my PEB completed for my TI-99/4A, I plan on loading a lot of BASIC games on my website in both BASIC text and WAV file audio.

My next programming project will be to complete that slots program for the Atari computers.

Merry Christmas!