HRDISDX - High Resolution Graphics Display Program for the TRS-80 MC-10 computer BACKGROUND A few years back Radio Shack put out the MC-10 Micro Color Computer in an effort to compete in the first time user market. It featured 4K internal RAM expandable to 20K with the optional RAM Pak, a Microsoft BASIC interpreter that resembled Color BASIC, and a heafty price tag of $119.95. Besides the price, it lacked in several areas, such as a manual that ignored the USR and VARPTR function ad outright LIED about the effective range of the POKE command stating that it could only be used to put values into video memory. But the worst thing going against it was its lack of high res. graphics capability. It had the same VDG as the Color Computer (MC6847), but a look at the schematic in the service manual reveals that it was incompletely wired, probably as a money saving procedure. Needless to say, it did not last long on the market. I bought my MC-10 on sale for $50 one Christmas long ago when I was in Conneticut far away from my CoCo, and I was expecting to have a printer under the tree. After that, it more or less sat in a corner of my room in North Carolina when it came time to go to college, and it became apparent that the CoCo would have to stay behind. From downloads of information from CIS, articles in Color Computer Magazine notably one by Dennis Kitz to upgrade the MC-10 to 8K RAM on board, and my experience on the CoCo's 6809E, I managed to learn to program in assembly language on the MC-10. The following program is the result. It is a program that will take G6R (PMODE 4) pictures saved on tape by a Color Computer and display them on the MC-10. The program HAD to be in assembly language sice the interpreter stores some of its internal variables just below text screen memory and video memory is hardwired to begin at $4000 and cannot be changed. 10 FORA=34816TO35086 20 READ HX$:GOSUB 100 25 POKE A,T 30 NEXT 50 POKE 36864,127:EXEC 34816:POKE 36864,0 99 END 100 T=0:X$=LEFT$(HX$,1) 110 IF ASC(X$)>64 THEN T=T+(ASC(X$)-55)*16:GOTO 120 115 T=T+VAL(X$)*16 120 X$=RIGHT$(HX$,1) 130 IF ASC(X$)>64 THEN T=T+(ASC(X$)-55):GOTO 140 135 T=T+VAL(X$) 140 RETURN 1000 DATA 0E,CE,40,00,FF,8F,FA,CE,58,00,FF,8F,FC,FE,8F,FA,A6,00,08,FF,8F,FA 1010 DATA FE,8F,FC,A7,00,08,8C,70,00,27,05,FF,8F,FC,20,E7 1020 DATA CE,40,00,FF,8F,FA,CE,70,00,FF,8F,FE,FE,8F,FE,A6,00 1030 DATA 08,FF,8F,FE,FE,8F,FA,A7,00,08,8C,58,00,27,05,FF,8F,FA 1040 DATA 20,E7,CE,81,00,FF,8F,F6,CE,70,00,FF,8F,F8 1050 DATA B6,BF,FF,81,FB,27,2F,81,FD,27,6B,81,F7,26,F1 1060 DATA CE,58,00,FF,8F,FC,CE,40,00,FF,8F,FA,FE,8F,FC,A6,00 1070 DATA 08,FF,8F,FC,FE,8F,FA,A7,00,08,8C,58,00,27,05,FF,8F,FA,20,E7,0F,39 1080 DATA FE,8F,F6,8C,88,00,2C,C2,C6,20,08,5A,26,FC,FF,8F,F6 1090 DATA 09,FF,8F,F2,FE,8F,F8,C6,20,08,5A,26,FC,FF,8F,F8,CE,4F,FF,FF,FF ,8F,FA,FE,8F,F2,A6,00,09,FF,8F,F2 1100 DATA FE,8F,FA,A7,00,8C,40,00,27,45,09,FF,8F,FA,20,E7,FE,8F,F8 1110 DATA 8C,70,00,27,37,C6,20,09,5A,26,FC,FF,8F,F8,FF,8F,F4,FE,8F,F6 1120 DATA C6,20,09,5A,26,FC,FF,8F,F6,CE,40,00,FF,8F,FA,FE,8F,F4,A6,00 1130 DATA 08,FF,8F,F4,FE,8F,FA,A7,00,8C,4F,FF,27,06,08,FF,8F,FA,20,E7,7E,88,57 To use this program, load it into memory, then CLOADM the picture you have saved on to tape from a CoCo using the following command. CLOADM"FILENAME",25088 This is assuming the picture was saved from a disk system; pictures on a disk system start at $0E00. If it was saved from a cassette system, then you must exchange "25088" with "26624". This number is the offset to put the picture at $7000 in the MC-10. "W" scrolls the picture up ad "O" scrolls it down (notice the repeating area of the picture; this is due to the incomplete wirig of the VDG, thus we have to scroll the picture.) The spacebar exits the program. Please feel free to disassemble this program if you wish. Heres a rudown o how it works. The first part of the program copies the block from $4000-$57FF to $5800-$6FFF to save the current screen and BASIC control variables for eventual return to BASIC. Next, the proggram copies the picture from $7000- $87FF to $4000-$57FF. Notice the entire 6K picture is copied. This is in case you happen to get the Kitz 8K onboard RAM upgrade AND the 16K RAM Pak in which case the etire 6K picture can be displayed with o need to scroll. (If anyone has gotten both the upgrade and the RAM Pak to work together, PLEASE LET ME KNOW!) The middle part of the program polls the keyboard forthe keys to scroll the screen or exit the program. Next comes the end segment that copies the BASIC control variables back in to their proper place before transfering control back to BASIC. Lastely, tthere are the subroutines that actually do the scrolling of the screen. This is an extremely crude program. Since I have no 6803 assembler, I had to hand assemble the code, a royal pain! Still, its a good example of assembly language programming on the MC-10. If anyone else out there is an avid MC-10 ML programmer, send me EMAIL and lets exchange ideas. HAVE FUN! Will Snyder 72175,56