Showing posts with label Odyssey. Show all posts
Showing posts with label Odyssey. Show all posts

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  



Sunday, June 8, 2025

Some system photos from this weekend.

Atari 800

Atari 800XL, Atari 130XE, Atari XEGS
Magnavox Odyssey 2
Texas Instruments TI-99/4A

Bally Computer System Videocade

Saturday, June 7, 2025

Yearly Illinois Game Con - my haul!

Darth Duck.  Hey, it's funny.

This is the complete Quest for the Rings (overlay, tokens, game board/map, cartridge) for Odyssey 2. Had it before, loved the game, but sold my childhood copy. They wanted $15. I purchased this for just $10.  I can't believe I found it.  I can't believe I purchased for that price.

Four NES carts for $32. I didn't actually have an original Mario/Duck Hunt Cart. I am hoping that the Defender II is actually Stargate. Also curious about about the Super Pitfall since I love Pitfall and Pitfall II for Atari 2600.

Six Calcite and Quarts geoids for just $5.  Trust me that is a good deal.

New copy of Five Nights at Freddie's for $15 for the Switch.  Felt like that was a pretty good deal. 

Friday, December 6, 2024

Macro Assembler versus "Computer Intro!" Assembler for Odyssey2

First, lets look at the Macro Assembler "Hello World"
  cpu   8048              ; using the Intel 8048 CPU
  org   400h
  include "g7000.h"       ; common developer header
  jmp   myinit            ; go directly to myinit and skip start screen
  jmp   irq
  jmp   timer             ; required to have here, but not to use
  jmp   vsyncirq
  jmp   start             ; start of the app code 
  jmp   soundirq

myinit
  call init

timer
                          ; not used

start
  call gfxoff             ; turn off graphics mode while we paint
  mov r0,#vdc_char0       ; using #0 of the graphic character set
  mov r3,#20h             ; set the x
  mov r4,#20h             ; set the y
  mov r2,#0Bh             ; set to 11 characters long
  mov r1,#hellostr & 0FFh ; point to the string we will read 0FF is the terminator

loop
 mov a,r1                 ; move character into the accumulator
 movp a,@a                ; memory move the accumulator
 mov r5,a                 ; put the accumulator into register 5 where the call 
                          ; to vdc_char0 is stored to display
 inc r1                   ; ready for next character
 mov r6,#col_chr_white    ; register 6 is where vdc_char0 looks for color
 call printchar           ; display character
 djnz r2,loop             ; is register 2 in loop at 11 yet, if not continue loop
 call gfxon               ; turn on graphics mode
 
 stop
  jmp   stop

hellostr
  db   1Dh, 12h, 0Eh, 0Eh, 17h, 0Ch
  db   11h, 17h, 13h, 0Eh, 1Ah

Now lets look at "Computer Intro!" Assembler for Odyssey2
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 operation, just a place to land
Both Hello Worlds have major differences while working mostly the same and using the same character set.

Tuesday, December 3, 2024

Less than a week

Less than a week before I get my new office/computer play ground (if you will).
I will have new cabinets, desk, storage, wire management, conduit, network switches, monitor switches, USB hubs and switches, ect....

I'm becoming quite familiar with the Magnavox Odyssey2 computer and realizing it is well within my means to create software for it now. I'm hoping to create one of the best manuals for this also.

http://mrgibson.com/

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

Tuesday, September 10, 2024

List of supported the Atari Gamestation Pro consoles


People on Facebook and Forums keep asking for a compatibility list for the AGSP, so I made one.
Default Firmware 1.10 and updated 1.20
Game Platform file extension
Atari 2600 .a26
Atari 5200 .a52
Atari 7800 .a72
--
Nintendo Gameboy .gb
Nintendo Gameboy Advance .gba
Nintendo Gameboy Color .gbc
Nintendo NES .nes
--
Sega genesis .bin
Sega cd .bin/cue
--
TurboGrafx-16 .pce
--
Mame/arcade .zip
Updated Firmware 1.30 adds
Game Platform file extension
Nintendo Super NES .sfc
--
Sega Master System .sms
Updated Firmware 1.30c adds
Game Platform file extension
Atari 400/800 .atr or .com
Atari ST games zip, .st, .stx, .m3u
Atari Lynx
Atari Jaguar
CBM
PET
C64
Intellivsion
Oddyssey 2
ColecoVision

I have tested Atari 2600, 7800, NES, SNES, and Sega Genesis. I have tried over a hundred ROMs without a failure yet.

Sunday, September 8, 2024

The Atari Gamestation pro

The Atari/MyArcade Gamestation pro has become my primary console. So much so, I'm thinking about shelving many of my other game consoles. I'm beginning to see this is an underrated console. The system plays Atari 2600, Atari 5200, Atari 7800, Genesis, NES, SNES, Game Boy, MAME Arcade, as well as several other game systems. With Firmware "1.30c", there are ways of making Odyssey2 and Intellivision games run on the console. Really almost any 8-bit or 16-bit game console. Plus the amount of controllers that people have made run on the console is impressive too. If some could get PS1 and PS2 to run this would be my one console, but I'm not holding my breath as I really don't know the amount of horse power under the hood of this console.

As long as you put the games in the "Games" folder of the root of the micro SD card and use the correct extensions for the BIN/ROM file, the system plays thousands of different games across all these systems.

For example (not a complete list):
.a26 for Atari 2600
.a52 for Atari 5200
.a78 for Atari 7800

.gb for Game Boy
.gba for Game Boy Advanced
.gbc for Game Boy Color
.nes for NES

.bin for Sega Genesis
.gg for Sega Game Gear

for updated firmware 1.30 [vendor]
.sfc for Super Nintendo
.sms for Sega Master System

Saturday, June 8, 2024

Another Pickup and more about last weeks Illinois Game Conference 2024

 I finally picked up KC munchkin for the Odyssey 2 this weekend.  My find list is now complete. I never owned that game, but it is the first game I played on that system.  Picked it up for $8 .

I have my TI-99/4A hooked up.  Let's face it -  How cool is it that in 1981 the TI had made a  computer with a16 bit processor and S-Video out!  Unlike everything else of that era, I don't need an RF demodulation.  Here is a photo of it hooked to a 60 inch monitor via HDMI. Better than that CRT TV I had when I was a kid.  But hey I guess it did me fine back then.
Here are some photos of my last week pickups. Yes there are duplicates of stuff I already owned, BUT, some of these are for display and not playing. The TI I had been wanting for some time.  Someone sold it to my for $60 and I could not turn that down.  Tore the TI down and apart - and it was amazingly clean on the inside.





And here are some pics of the Illinois Game Conference in Bloomington IL.  This conference was the best one yet! It has grown every year, so I'm curious about next years.
















Saturday, May 27, 2023

Illinois Game Con 2023

SATURDAY, JUNE 24, 2023 AT 9 AM – 5 PM
Illinois Game Con 2023
1106 Interstate Dr, Bloomington, IL 61705

Tuesday, May 23, 2023

105 Odyssey2 games!

This is not a complete list, but here is a list of 105 Odyssey2 games!  There are some great gems in this list arranged in alphabetical order.  The Odyssey2 was released in 1978 in the United States by Magnavox. Magnavox/Philips released a total of 47 cartridges in the American market in the 80s. Imagic later got into the act by releasing two cartridges.

4 in 1 Row 
Aaron the Aant!
Air Battle

Alien Invaders Plus
Alpine Skiing
Amok!
Armada 
Armored Encounter/Sub Chase
Astrododge
Astrododge Versus
Atlantis
Attack of the Timelord
Baseball
Baseball +
Backgammon 
Blobbers 
Blockout/Breakdown
Boom Box
Bowling/Basketball
Casino Slot Machine
Catch the Ball/Noughts and Crosses 
Chez Maxime 
Chinese Logic 
Clay Pigeon 
Comando Noturno 
Computer Golf
Computer Intro
Conquest of the World
Cosmic Conflict
Demon Attack
Depth Charge/Marksman
Dynasty
Didi na Mina Encantada 
Electronic Table Soccer
Exojet + 
Football
Freedom Fighters
Frogger
Golf Tournament!
The Great Wall Street Fortune Hunt
Helicopter Rescue
Hockey/Soccer
Invaders from Hyperspace
I've Got Your Number
K.C. Munchkin
K.C.'s Krazy Chase
Keyboard Creations
Killer Bees
Kinder im Verkehr 1 
Labyrinth Game/Supermind 
Lady Frog!
Las Vegas Blackjack
Le Trésor Englouti + 
Loony Balloon 
Mage 2: The Dark Mirror
Mage 3: The Final Journey
Mage: The Enchanted Crystals
Matchmaker/Buzzword/Logix
Math-A-Magic/Echo
Mean Santa!
Monkeyshines
Morse 
Moto-Crash + 
Mr. Roboto!
The Mousing Cat 
Musician 
Neutron Star 
Nightmare
Nimble Numbers Ned
Norseman 
Out of this World/Helicopter Rescue
Pachinko
Pick Axe Pete
Pinball!
Pocket Billiards
Popeye
Power Lords
P.T. Barnum's Acrobats
Q*Bert 
The Quest for the Rings
Race 
S.I.D. the Spellbinder
Secret of the Pharaohs
Showdown in 2100 AD
Smithereens
Spaceman Splorf: Planet of Doom
Speedway/Spin-Out/Crypto-Logic
Spider-Man
Super Bee 
Super Cobra 
Syracuse 
Take the Money and Run
Thunderball
Traffic!
Trans American Rally
Turtles
Tutankham
Type & Tell
UFO
Volleyball
Walls!
War of Nerves
Western +
Wildlife!
Wildlife+

w-view

 I have added a ton of new code to my w-view project.  That said, I have a ton of testing to do.  What is new?  A lot of sub modules.  A GUI...