Yet another CoCo & MC-10 site

Dedicated to the Tandy/Radio Shack MC-10 Micro Color Computer and the Color Computers 1, 2 & 3

(The following Article was featured for the March '99 edition of this page)

Hi-res Text Display with the MC-10

In the Yahoo! MC-10 Group there has been lots of interest on unmentioned (at least by Radio Shack) video modes that the MC-10 can support. I found this literally stumbling into it POKEing around the MC-10's RAM and after a few trial and error tests I was able to make ends meet and produced a conversion table to help me translate TRS-80 Models I & III character block graphic screens into MC-10 format. Sadly, text is unsupported in this mode and my lack of tech info prevented me into coming out with a solution to this problem; the block graphics that result are exactly the same except for the fact that the MC-10 is limited to 32 characters per line vs. 64 characters per line in the Model I & III TRS-80s.

It is more fun to try things first so copy the following Micro Color Basic program into your MC-10 and play!. The point of this bare-bones game is to advance as much as possible dodging the incoming asteroids using the [1] and [-] keys to move left and right. This game is just for demonstration purposes so there are lots of things that can be improved. For your convenience, the listing is presented in 32 characters per line format:

MC-10 Spaceship vs. Asteroids

0 CLEAR 2000:DIM L$(31):AI$=CHR$
(157):AD$=CHR$(174):GOAT 20
1 CLSZ:POKEPP,SC:FORX=UTOU:PRINT
@AT,L$(RND(R));:PRINT@L,N$;:A=PE
EK(KP)ANDPEEK(DS):IFA=IZANDL>UTH
ENL=L-U
2 IFA=DRTHENL=L+U
3 IF(PEEK(L+L1)ORPEEK(L+L2))<>CV
THEN5
4 P=P+U:X=Z:NEXT
5 FORT=UTOCN:PRINT@L-T,EI$;:PRIN
T@L+T,ED$;:FORG=UTOFT:NEXTG,T:SO
UNDST,U
6 CLS:PRINT:PRINT:PRINT"SCORE:";
P;"POINTS":PRINT:INPUT"ANOTHER G
AME (Y/N)";J$:IF LEFT$(J$,1)="Y"
 THEN P=0:L=16:GOTO 1
7 CLS:END
20 FOR I=2 TO 31:FOR N=1 TO I-2
25 NI$=NI$+CHR$(128):NEXT N:Q=N-
1
30 FOR N=Q TO 29:ND$=ND$+CHR$(12
8):NEXT N
35 L$=NI$+AI$+AD$+ND$
40 NI$="":ND$="":NEXT I
45 L=16:PP=49151:SC=4:U=1:AT=480
50 R=31:N$=CHR$(169)+CHR$(150)
55 KP=17023:DS=2:IZ=49:DR=45
60 L1=16416:L2=16417:CV=128
65 EI$=CHR$(160)+CHR$(128)
70 ED$=CHR$(128)+CHR$(150)
75 FT=50:ST=230:CN=5:Z=0:GOTO 1

It has been sooo many years... remember that saying about documenting your programs?. Ok, I'll give a somewhat vague explanation at what the program does where, and please note the following comes all from HBRAM (Human Brain Random Access Memory). In an attempt to squeeze every bit of speed from a Basic program I have always placed the vital portions of a program at the beginning of the listing and the definitions last, also, all constants are defined into variables and used as such in the core (lines 1 to 5). I am not sure if this Basic (generally speaking of the interpreter for many micros) also benefits from this setup, I know that the regular CoCos do. Most of the names I used for variables are spanish based mnemonics like IZ (IZquierda - left), DR (DeRecha - right), the breakdown being: 

L$

Dimensioned variable used to hold all the "random" asteroid positions plus blank spaces [CHR$(128)]

AI$, AD$

Left and right portions of the "asteroid"

NI$, ND$

Temporary strings used to create the whole line consisting of leading blank spaces, the two asteroid halves and blank space padding at the end

PP

RAM location to POKE to in order to obtain the 64x64 text graphics hi-res screen

SC

The SCreen code I found to cause the jump into the 64x64 grid - there's a nice table on the VDG modes with this tech info, visit the group!

U, DS, AT

Constants that hold a value of 1, 2 and the PRINT@ location used to put the asteroids on screen (screen position 480)

N$

Holds the two halves of the ship... hey! does that resemble the Enterprise?

KP

Used to snoop out which Key was last Pressed. See the previous month article for more info on this (below)

L1, L2

Hold the video RAM locations to test for impact

EI$, ED$

Hold the two halves of the ship needed to create the "split" effect after hitting an asteroid

FT, ST, CN, DS, IZ, DR...

These hold values set for a delay counter (split), sound routine... the other variables are values used for defining the ASCII codes to test for key presses and other portions of control within the core portion of the program

The asteroids had to be created as whole 32 characters long lines because printing a regular "space" character on the hi-res screen gets garbage, and this side-effect is visible as a flashing line at the bottom of the screen due to the scrolling... I thought I could live with it just for the fun of seeing the ol' TRS-80 block graphic characters in full splendor. As I mentioned above, it has been a while. From my memories comes an almost faded fact on the colors of the characters that can be used in the MC-10 set up with this screen: only two color combinations are possible, orange and blue and I'd had to setup my MC-10 and try again at printing each ASCII code into that 64x64 screen to see which ones work and how. Try the program and let me know what your think!, and please feel free to hack it and report your findings.

RPHWeb


BuiltWithNOF

Actually, this was first edited using the HTML editor found in Netscape Gold (remember this one?), back then the page resided in the Delphi personal web space. When that died, the page was moved to Tripod and maintained with (oh sacrilege!) MS Frontpage. I got wise, moved out of Tripod and now use NetObjects Fusion...

TRS-80 Tandy Color Computer
[ Join Now | Ring Hub | Random | << Prev | Next >> ]