Friday, March 21, 2025

GDX-Lib version of DDD is working again!

 GDX-Lib version of DDD is working again on Debian Linux!  Will publish soon.  Mac OS X and Windows will follow shortly. 


Thursday, March 20, 2025

Dragons, Druids, and Dice for Linux.

 So, there has been delays with the release 1.2 for Linux.  In fact, there has been a fork in the code.  It was my plan to make this version as nice looking as possible with GDX-Lib.  Unfortunately, I'm having issue with this and Debian.  My plan at this point is not to go to GTK or Xlib, but to create a new GDX-Lib-lite version of the GUI library.   This will not rely on other graphic libraries and make the app even easier to cross compile.


Saturday, March 15, 2025

Dragons, Druids, and Dice 1.2 for the TI-99/4A

I finalized Dragons, Druids, and Dice 1.2 for the TI-99/4A (March 15, 2025). I will put out the Atari XL/XE version next (March 16, 2025).


Here is a screen shot from the TI-99 version of 1.2



Screen shot of the Atari version of 1.2




Thursday, March 13, 2025

Memory struggle

I have really struggled to do ROM to RAM mapping on the C64 and Atari 8-bit. The processes is very much alike, between the two systems. The problem is making the process consistent. Additionally, re-running the same program with the same memory calls causes crashes. I have in the time being just made 1.1 versions very simple. I wanted to use the same graphics that I made for the TI-99/4A. In theory that is possible. I just have not been able to consistently do so.

My compromise:

Instead of using this code:

100 MEMTOP=PEEK(106) 
110 GRTOP=MEMTOP-4 
120 POKE 106,GRTOP

140 GRAPHICS 0 
160 CHROM=PEEK(756)*256 
170 CHRAM=GRTOP*256 

500 FOR N=0 TO 1023 
510 POKE CHRAM+N,PEEK(CHROM+N) 
520 NEXT N 

540 POKE 756,GRTOP

Wednesday, March 12, 2025

Preview screenshots of Dragons, Druids, and Dice 1.1

Just posting some progress screen shots of Dragons, Druids, and Dice 1.1 shown on TI-99/4A 



Screen shot of Atari 800XL


Tuesday, March 11, 2025

Working on version 1.1 D&D dice program

So the basic logic is laid out for rolling different D&D dice and has been completed. Now to make the program a little nicer for the Atari, C64, and TI-99/4A computers. So I'm going to make the dice graphical.   I may make this app available for every possible platform I can program on. Below is the layout of the 6 sided (6D) dice I did tonight with just a text editor. 
TI-dice

call char(33,"0101010101010101")

char !=33
12341234
_______x 1 01  
_______x 2 01  
_______x 3 01
_______x 4 01
_______x 5 01 
_______x 6 01
_______x 7 01
_______x 8 01

call char(42,"00000708102040FF")
call char(43,"0000FC0C14244484")

char *=42        char +=43          
12341234         12341234
________  1 00   ________  1 00
________  2 00   ________  2 00 
     xxx  3 07   xxxxxx__  3 FC
____x___  4 08       xx__  4 0C
___x____  5 10      x x__  5 14
__x_____  6 20     x  x__  6 24
_x______  7 40    x   x__  7 44
xxxxxxxx  8 FF   x    x__  8 84


call char(64,"8585858991A1C181")

                 char @=64
                 12341234
                 x    x x  1 85
                 x    x x  2 85
                 x    x x  3 85
                 x   x  x  4 89
                 x  x   x  5 91
                 x x    x  6 A1
                 xx     x  7 C1
                 x      x  8 81

call char(94,"FF")

char ^=94
12341234
xxxxxxxx  1 FF

call char(36,"8080808080808080") 

char $
12341234
x         1 80
x         2 80
x         3 80
x         4 80
x         5 80
x         6 80
x         7 80 
x         8 80



Monday, March 10, 2025

Simple D&D dice roller for C64, Atari XL, and TI-99/4A (Ver 1.0)

I only tested this code with the C64, Atari XL and TI-99/4a (standard basic).
This will likely work on more platforms with little or no modifications
See the note on the bottom for the TI-99/4A.

Atari 800XL output


TI-99/4A output

Code for C64 AND ATARI

10 PRINT "DRAGON AND DICE"
20 PRINT "A) ROLL 4D"
30 PRINT "B) ROLL 6D"
40 PRINT "C) ROLL 8D"
50 PRINT "D) ROLL 10D"
60 PRINT "E) ROLL 12D"
70 PRINT "F) ROLL 20D"
80 PRINT "G) ROLL FOUR 6D"
85 PRINT "Z) QUIT"
90 INPUT A$
100 IF A$="A" THEN 200
110 IF A$="B" THEN 300
120 IF A$="C" THEN 400
130 IF A$="D" THEN 500
140 IF A$="E" THEN 600
150 IF A$="F" THEN 700
160 IF A$="G" THEN 800
170 IF A$="Z" THEN 1000
180 PRINT "----"
190 GOTO 10
200 D=INT(1+4*RND(1))
210 PRINT "YOU ROLLED A "
220 PRINT D
230 PRINT "WITH 4D"
240 PRINT "--"
250 GOTO 10
300 D=INT(1+6*RND(1))
310 PRINT "YOU ROLLED A "
320 PRINT D
330 PRINT "WITH 6D"
340 PRINT "--"
350 GOTO 10
400 D=INT(1+8*RND(1))
410 PRINT "YOU ROLLED A "
420 PRINT D
430 PRINT "WITH 8D"
440 PRINT "--"
450 GOTO 10
500 D=INT(1+10*RND(1))
510 PRINT "YOU ROLLED A "
520 PRINT D
530 PRINT "WITH 10D"
540 PRINT "--"
550 GOTO 10
600 D=INT(1+12*RND(1))
610 PRINT "YOU ROLLED A "
620 PRINT D
630 PRINT "WITH 12D"
640 PRINT "--"
650 GOTO 10
700 D=INT(1+20*RND(1))
710 PRINT "YOU ROLLED A "
720 PRINT D
730 PRINT "WITH 20D"
740 PRINT "--"
750 GOTO 10
800 D1=INT(1+6*RND(1))
802 D2=INT(1+6*RND(1))
804 D3=INT(1+6*RND(1))
806 D4=INT(1+6*RND(1))
810 PRINT "YOU ROLLED A "
820 PRINT D1;" ";D2;" ";D3;" ";D4
830 PRINT "WITH FOUR 6D"
840 PRINT "--  --  --  --"
850 GOTO 10
1000 END

For the TI-99/4A computer, change the randomize calls with this format: 

D=INT(1+4*RND)
D=INT(1+6*RND)

Sunday, March 9, 2025

ugBASIC 1.17.1 RELEASED



ugBASIC 1.17.1 RELEASED!

A new version of ugBASIC, the open source isomorphic BASIC compiler, has been released.

This version for multiple compliable computer ports 

ATARI 400/800/XL/XEGS implements an improved DOJO protocol, allowing for multiplayer games thanks to the integration with FujiNet. It also contains numerous additional keywords, serial support, and specific optimizations for ATARI computers.

Full list of Atari supported:
Atari 400, 
Atari 800
Atari 1200XL, 
Atari 130XE, 
Atari 600XL, 
Atari 65XE, 
Atari 800XE, 
Atari 800XL, 
Atari XEGS




Commodore 64 and Commodore VIC-20, in addition to containing numerous corrections and implementations, has many new instructions related to joystick movement, text positioning and character detection. It is now possible to define functions and perform sums and counts on arrays.


ugBASIC is a cross compiler for Linux and Windows, for writing games in the BASIC language, running on dozens of different home computers and 8-bit consoles. There is also a convenient integrated IDE for Microsoft Windows and even a sandbox, if you do not want to install anything.


Wednesday, February 19, 2025

useful POKE commands - C64

Some of the most useful POKE commands for the


For more POKE commands for sound and graphics, you read my C64 manual - but here they are POKE commands for general programming use.


POKE 53272,21 switch to uppercase mode
POKE 53272,23 switch to lowercase mode

POKE 53280,C change border color (C=0-15)
POKE 53281,C change screen color (C=0-15)
POKE 646,C change cursor color (C=0-15)

POKE 54296,15:POKE 54296,0 make a click sound

POKE 56341,S set cursor speed (S=0-255)

POKE 56334,129 Clock Reset for 50 Cycle Current
POKE 56590,128 Clock Reset for 50 Cycle Current

POKE 1,0 Disable Operating SYStem (Default Value 1,1)

POKE 19,65 turn off question mark during INPUT
POKE 19,0 turn question mark back on

POKE 22,35 With List Command, Shows No Line Numbers

POKE 198,0 Clears Keyboard Buffer (Default Value 198,0)

POKE 204,0 turn cursor on during a GET
POKE 204,255 turn cursor back off

POKE 649,0 Disable Keyboard
POKE 649,1 disable keyboard buffering
POKE 649,10 Enable Keyboard
POKE 649,15 Increase Keyboard Buffer

POKE 650,0 Disable key Repeat
POKE 650,127 Disable keys repeat
POKE 650,128 Enable keys Repeat
POKE 650,64 Disables Repeat of All Keys

POKE 657,128 disable SHIFT-Commodore
POKE 657,0 enable SHIFT-Commodore

POKE 774,0 With List Command, Shows Only Line Numbers
POKE 774,141 With List Command, Vanishes Completely (Default Value 774,26)

POKE 775,167 Enable List Command
POKE 775,168 Disable List Command
POKE 775,171 Causes Computer to Crash If a LIST Command is Attempted
POKE 775,200 Disable List Command

POKE 788,49 Enable Syop Key and TI$
POKE 788,52 Disables Stop Key and TI$
POKE 792,193 disable RUN-STOP/RESTORE
POKE 808,225:POKE 818,32 Disable Runstop/Restore & LIST
POKE 808,234 disable RUN-STOP/RESTORE and LIST
POKE 808,237:POKE 818,237 Enable Runstop/Restore & LIST
POKE 808,239 disable RUN/STOP key



Tuesday, February 11, 2025

TI-99 Football!

Finally purchased this game. Wanted it when I was a very young teen in the 80s, now I pick it up for just $5
I had to download the manual. Going to post some of the more important parts:














Saturday, February 8, 2025

Fun Coding project

Currently I'm writing some code for C64, Atari 8-bit, and T-999/4A for advanced graphic functions. The C64 will be based off these BASIC commands.





I'm still working out the details for the TI-99/4A and GW-BASIC for early PCs

Saturday, January 11, 2025

Ball Bounce - Saturday BASIC coding Exercise

Here is my Saturday programming exercise. 

X is the ball's X position
DX is the ball's X direction
Y is the ball's Y position
DY is the ball's Y direction

Positioning the ball on Atari computer
170 POSITION X,Y
175 PRINT CHR$(20)

Character 20 being the ball.

Positioning the ball on C64
170 POKE 1024 + X + 40*Y,81

81 being the ball.

Positioning the ball on TI-99
170 CALL HCHAR(Y,X,81)

Positioning the cross on the Apple II
161 PLOT X, Y
162 PLOT X-1,Y+1
163 PLOT X,Y+1
164 PLOT X+1,Y+1
165 PLOT X,Y+2

The TI uses Y,X coordinates where C64 and Apple use X,Y coordinates.

Atari and C64 both have predefined ball characters.  TI-99 and Apple does not.
I'm using character 81 as the ball on C64  - 20 on Atari
I'm rewriting character 81 and drawing it as a ball on the TI.
There is no simple middle ground with the Apple when doing graphic.
I simply slapped 5 blocks together with the plot command in low res
graphics.

Using TI-99 Extended BASIC, I could have shortened up the TI-99
code a lot, but wanted the code to work with both versions of 
BASIC.

For that matter, I could have shortened up all the BASIC code by
CATing code on the same lines, but I'm not a fan of that.  Too 
much and the code stops being easily readable.

I have been programming the far majority of my life.  
I still feel the same about these 4 platforms of the 80s.
TI-99 Extended #1, Atari 2nd, C64 3rd, and Apple II still sucks.



On to the Code!!

The Atari Code First

100 REM CLEAR SCREEN
110 PRINT CHR$(125)
120 GRAPHICS 0 : POKE 752,1
140 X = 1 
145 Y = 1
150 DX = 1 
155 DY = 1
160 REM DISPLAY BALL
170 POSITION X,Y
175 PRINT CHR$(20)
180 REM LINE 190 SLOW CODE DOWN
190 FOR T = 1 TO 50 
195 NEXT T
200 POSITION X,Y
205 PRINT " "
210 X = X + DX
220 IF X <= 0 THEN DX=-DX
225 IF X >= 34 THEN DX=-DX 
230 Y = Y + DY
240 IF Y <= 0 THEN DY=-DY
245 IF Y >= 22 THEN DY=-DY 
250 GOTO 160

The C64 BALL BOUNCE code!

100 REM CLEAR SCREEN
110 PRINT "{CLR/HOME}"
120 REM BG L-GREEN AND YELLOW BORDER
130 POKE 53280,7 
135 POKE 53281,13
140 X = 1 
145 Y = 1
150 DX = 1 
155 DY = 1
160 REM DISPLAY BALL
170 POKE 1024 + X + 40*Y,81
180 REM LINE 190 SLOW CODE DOWN
190 FOR T = 1 TO 30 
195 NEXT
200 POKE 1024 + X + 40*Y,32
210 X = X + DX
220 IF X <= 0 OR X >= 39 THEN DX = -DX 
230 Y = Y + DY
240 IF Y <= 0 OR Y >= 24 THEN DY = -DY 
250 GOTO 160

The TI-99 BALL BOUNCE code!

100 CALL CLEAR
110 CALL SCREEN(4)
120 CALL CHAR(81,"3C7EFFFFFFFF7E3C")
140 X = 1 
145 Y = 1
150 DX = 1 
155 DY = 1
160 REM DISPLAY BALL
170 CALL HCHAR(Y,X,81)
180 REM LINE 190 SLOW CODE 
190 FOR T = 1 TO 30 
195 NEXT T
200 CALL HCHAR(Y,X,32)
210 X = X + DX
220 IF X < 2 THEN 300
225 IF X > 31 THEN 300 
230 Y = Y + DY
240 IF Y < 2 THEN 320
245 IF Y > 23 THEN 320 
250 GOTO 160
300 DX =-DX
310 GOTO 160
320 DY =-DY
330 GOTO 160

Apple II PLUS BOUNCE code! 
It is fairly difficult in GR or HGR to make a ball.

100 REM CLEAR SCREEN
120 GR
140 X = 17 
145 Y = 5
150 DX = 1 
155 DY = 1
160 COLOR = 6
161 PLOT X, Y
162 PLOT X-1,Y+1
163 PLOT X,Y+1
164 PLOT X+1,Y+1
165 PLOT X,Y+2
180 REM LINE 190 SLOW CODE DOWN
190 FOR T = 1 TO 30 
195 NEXT T
200 COLOR = 0
201 PLOT X, Y
202 PLOT X-1,Y+1
203 PLOT X,Y+1
204 PLOT X+1,Y+1
205 PLOT X,Y+2
210 X = X + DX
220 IF X <= 2 OR X >= 37 THEN DX = -DX 
230 Y = Y + DY
240 IF Y <= 2 OR Y >= 37 THEN DY = -DY 
250 GOTO 160
Really, Atari does the best job. TI-99 is the easiest to program. Apple II is the "worsteth" of the four.

Wednesday, January 8, 2025

RG Mini

C64
Retro Games LTD The C64 Micro Computer Mini

Product Key Features
Platform              Commodore 64
Year Manufactured     2017 thru 2025
Storage Capacity      512 MB
Case Color            Beige
Display Connectivity  HDMI

Connectivity          USB, HDMI
Screen Resolution     720p (HD)

ARM CPU A20 SoC and Linux operating system running the VICE emulator.

Pixel graphics in 4:3 format with CRT filter.
Savable game states for the 64 C64 games
Software updates over USB stick.
64 classical C64 games, which are onside of the ROM chip.

Dimensions: 250 * 50 * 200mm
Weight: 372g


Plugs rear
  HD output with 720p over HDMI
  Micro USB port for power

Plugs right side
  Two USB ports for USB keyboard or USB joystick.
  Power switch

Other informations
  Keys can be used with a popup keyboard on the screen.
  Alternative can used a USB keyboard
  If you want to use both USB joysticks, a USB keyboard and a USB stick, you need a active USB hub.
  The emulator being used is x64 from VICE 2.4



I just purchased RG mini to code for the Vic20 and C64.  
I can't wait to PEEK and POKE some.

GDX-Lib version of DDD is working again!

 GDX-Lib version of DDD is working again on Debian Linux!  Will publish soon.  Mac OS X and Windows will follow shortly.