Jump to content
IGNORED

MC-10 Madness


JamesD
 Share

Recommended Posts

Emulating a 64 column by 24 row text display in 256x192 (RG6) mode.
The video recording software couldn't keep up, the real thing doesn't stop or stutter like the video.
The program is printing the entire font over and over. When it reaches the end of the last line it scrolls the display, clears the last line and starts printing again.
The mirroring of the top 1/3 of the display on the bottom 1/3 hides some of that but it is updating the entire display RAM and you can see it if you upgrade internal RAM to 8K.

  • Like 1
Link to comment
Share on other sites

The MC-10 is a powerful machine, looks like Telewriter-64 could be ported :)

I tried to tell people it was a powerful little beast but I don't think people got it.

Look how fast that is scrolling a 256x192 display, clearing the last line of text and printing new characters... then remember it's only running at .89MHz (less than 1MHz).

The 6803 is no 6809 but of any 8 bit CPU that was actually used in an 8 bit personal computer it comes the closest in code density and it's plenty fast.

 

Porting Telewriter-64 is a definite possibility but with a little external hardware that does some creative memory mapping, the MC-10 could run the FLEX OS and any of it's software with minor patching. That includes word processors, spelling checkers, database programs, compilers...

 

I've actually sped that code up and fixed a bug since I recorded that video. That video is jerky and doesn't really reflect quite how fast the code really is already but when I tried recording a new version it's so bad it's not worth messing with.

The 64 column text code is probably fast enough to keep up with a 9600 baud modem if you used an interrupt driven serial port with internal buffering. (the code does disable interrupts briefly)

 

I've been optimizing the VZ200 version of the 64 column text code I wrote since producing that video.

The Z80 is noticeably slower even though it's almost 4MHz and the VZ doesn't have video wait states like the Spectrum and some other machines.

I think I can get a little more speed out of the Z80 but the bottleneck is the scroll and I've already used faster instructions and unrolled the loop enough to scroll an entire line of text at a shot like I do on the MC-10.

*edit* You can find a video of the old VZ200 version on the same youtube account.

 

I'm working on a 6502 version for the Acorn Atom. Based on clock cycles I've looked at, it will be competitive speed wise for drawing characters but I had to make some drastic changes to accommodate the strengths/weaknesses of the 6502.

 

 

Was there ever an external keyboard modification ever made for this machine?

No, which is a shame since it wouldn't be any more difficult than other machine.

There are a couple other possible solutions to this though.

The 6803 is actually a subset the 68HC11 and a guy is working on an MC-10 compatible machine he's calling the MC-11 which is based on the HC11.

It should run MC-10 software, plus the HC11 offers new features for programs that want to take advantage of them, it fixes the screen issue from the start, has video out, it offers a double speed mode and it uses an external keyboard, I wish he'd build a drop in replacement board.

You can find photos here:

https://groups.yahoo.com/neo/groups/TRS80MC10Club/photos/albums/1887718143

 

The other possible solution is an FPGA based version of the machine. Someone has created an FPGA version of the Alice which is an MC-10 copy for the most part and it will use an external keyboard. I'm sure it will make it's way to several of the FPGA based projects. The biggest advantage of this is you get to run multiple systems on the hardware and people can continue to enhance the hardware. A 25MHz CPU mode isn't out of the question and switching the design to an HC11 core should not be too difficult.

http://forum.system-cfg.com/viewtopic.php?f=25&t=6303&p=107482

 

Edited by JamesD
  • Like 1
Link to comment
Share on other sites

I tried to tell people it was a powerful little beast but I don't think people got it.

Look how fast that is scrolling a 256x192 display, clearing the last line of text and printing new characters... then remember it's only running at .89MHz (less than 1MHz).

The 6803 is no 6809 but of any 8 bit CPU that was actually used in an 8 bit personal computer it comes the closest in code density and it's plenty fast.

 

Porting Telewriter-64 is a definite possibility but with a little external hardware that does some creative memory mapping, the MC-10 could run the FLEX OS and any of it's software with minor patching. That includes word processors, spelling checkers, database programs, compilers...

 

I've actually sped that code up and fixed a bug since I recorded that video. That video is jerky and doesn't really reflect quite how fast the code really is already but when I tried recording a new version it's so bad it's not worth messing with.

The 64 column text code is probably fast enough to keep up with a 9600 baud modem if you used an interrupt driven serial port with internal buffering. (the code does disable interrupts briefly)

 

I've been optimizing the VZ200 version of the 64 column text code I wrote since producing that video.

The Z80 is noticeably slower even though it's almost 4MHz and the VZ doesn't have video wait states like the Spectrum and some other machines.

I think I can get a little more speed out of the Z80 but the bottleneck is the scroll and I've already used faster instructions and unrolled the loop enough to scroll an entire line of text at a shot like I do on the MC-10.

*edit* You can find a video of the old VZ200 version on the same youtube account.

 

I'm working on a 6502 version for the Acorn Atom. Based on clock cycles I've looked at, it will be competitive speed wise for drawing characters but I had to make some drastic changes to accommodate the strengths/weaknesses of the 6502.

 

 

No, which is a shame since it wouldn't be any more difficult than other machine.

There are a couple other possible solutions to this though.

The 6803 is actually a subset the 68HC11 and a guy is working on an MC-10 compatible machine he's calling the MC-11 which is based on the HC11.

It should run MC-10 software, plus the HC11 offers new features for programs that want to take advantage of them, it fixes the screen issue from the start, has video out, it offers a double speed mode and it uses an external keyboard, I wish he'd build a drop in replacement board.

You can find photos here:

https://groups.yahoo.com/neo/groups/TRS80MC10Club/photos/albums/1887718143

 

The other possible solution is an FPGA based version of the machine. Someone has created an FPGA version of the Alice which is an MC-10 copy for the most part and it will use an external keyboard. I'm sure it will make it's way to several of the FPGA based projects. The biggest advantage of this is you get to run multiple systems on the hardware and people can continue to enhance the hardware. A 25MHz CPU mode isn't out of the question and switching the design to an HC11 core should not be too difficult.

http://forum.system-cfg.com/viewtopic.php?f=25&t=6303&p=107482

 

Very cool programming, will check out the Z-80 version! :)

 

I thought FLEX was pretty impressive, was it originally a 6800 port? I think OS9 was 6809 specific gauging from the name.

FLEX was really expensive though when it came out and didn't have RadioShack support, kept it from garnering a larger user base and then OS9 took over. I wonder, did Frank Hogg ever write any games after that or just the multitasking OS?

Link to comment
Share on other sites

 

Was there ever an external keyboard modification ever made for this machine?

The keyboard was surprisingly good for a chicklet keyboard, better than a membrane and had a better feel than the CoCo I's similar keyboard IMO. It was tiny but there was enough space between the keys it worked out OK for typing.

  • Like 1
Link to comment
Share on other sites

Very cool programming, will check out the Z-80 version! :)

 

I thought FLEX was pretty impressive, was it originally a 6800 port? I think OS9 was 6809 specific gauging from the name.

FLEX was really expensive though when it came out and didn't have RadioShack support, kept it from garnering a larger user base and then OS9 took over. I wonder, did Frank Hogg ever write any games after that or just the multitasking OS?

There are two versions of FLEX. FLEX for the 6800 and FLEX 9 which is a 6809 version.

Some of the "FLEX" programs are 6809 only but there's still a lot of stuff that will run on the 6803.

OS9 is 6809 only and follows a more Unix like design where FLEX is more like CP/M.

FHL FLEX is just a port of FLEX 9.

 

FLEX actually dates back to 1976 on the SWTPC and other SS-50/SS-30 machines.

When the "trinity" computers only had cassette storage, FLEX machines already had disk drives.

  • Like 1
Link to comment
Share on other sites

The keyboard was surprisingly good for a chicklet keyboard, better than a membrane and had a better feel than the CoCo I's similar keyboard IMO. It was tiny but there was enough space between the keys it worked out OK for typing.

It's more reliable than the original CoCo chicklet keyboard.

Link to comment
Share on other sites

There are two versions of FLEX. FLEX for the 6800 and FLEX 9 which is a 6809 version.

Some of the "FLEX" programs are 6809 only but there's still a lot of stuff that will run on the 6803.

OS9 is 6809 only and follows a more Unix like design where FLEX is more like CP/M.

FHL FLEX is just a port of FLEX 9.

 

FLEX actually dates back to 1976 on the SWTPC and other SS-50/SS-30 machines.

When the "trinity" computers only had cassette storage, FLEX machines already had disk drives.

Actually, there's also UniFLEX but that's 6809 also.

Link to comment
Share on other sites

I didn't think I could do it but I managed to optimize the Z80 code enough in the last few days to where the VZ200 can run the 64 column text code faster than the MC-10.
When I adjust the VMC10's cpu speed the two run about the same speed when the 6803 is set to 116% to 117% of normal speed
That works out to where a 6803 at about .93 MHz is the same speed as a 3.58 MHz Z80.
So around 3.8 times as fast per MHz.
The MC-11 I mentioned before has a double speed mode so enjoy the victory while you can VZ fans.

The 6809 version will require at least 5 fewer instructions in the character generator alone and the scroll should be much faster, so a regular CoCo *should* beat the VZ.
I still have to test how RAM expansion in the cart (ROM) bank behaves on the CoCo. If it works with double speed mode, moving the direct page, and this code to that memory should make it run much faster. If I can move the screen memory to that RAM in high speed mode it will run twice as fast.
I have to buy a new cassette cable so I can test it.

Link to comment
Share on other sites

I have an initial version of the 64 column text code running on the 1Mhz 6502 Acorn Atom.
There are still some bugs to fix and I can get a little more speed out of the 6502 code, but at normal speed the MC-10 stomps on it.
At 2MHz the Atom runs about the same speed.

Be aware that I still have to fix a few bugs in the Atom version so it looks slightly different.
Also, the video capture is jerky but the real thing isn't.





Why so different?

This draws a byte of the character to the screen on the 6803:
	pula					; get byte of font and point to next font data
	anda	#%11110000			; mask area used by new character
	ldab	32,x				; read byte at destination
	andb	#%00001111			; mask off unused half
	aba							; combine data
	staa	32,x				; write it back

This draws a byte of the character to the screen on the 6502:

	lda		FCol1,X				; get the 2nd byte of the font
	and		#%11110000			; mask area used by new character
	sta		temp0				; save it
	ldy		#32				; point to next screen byte
	lda		(fscreen),y			; read byte at destination
	and		#%00001111			; mask off unused half
	ora		temp0				; combine background with font data
	sta		(fscreen),y			; write back to the screen

Moving 2 bytes of data in the screen scroll on the 6803:

         ldd   A+30,x
         pshb
         psha

Moving 2 bytes of data in the screen scroll on the 6502:

	 lda (fscreen1),y
	 sta (fscreen),y
	 iny
	 lda (fscreen1),y
	 sta (fscreen),y
	 iny

The 6502 code is also longer everywhere else as well.

Edited by JamesD
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...