Sanyo MBC-XXXX CP/M models

stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

The initial support for the Sanyo MBC-200/1200 is ready, it includes appmake support for the floppy disk formats and bit-banging sound.
The graphics support is partial but satisfactory (especially because of the high resolution!)

eagle.png
othello_graphics.png
You do not have the required permissions to view the files attached to this post.
User avatar
RobertK
Well known member
Posts: 347
Joined: Mon Feb 26, 2018 12:58 pm

Re: Sanyo MBC-XXXX CP/M models

Post by RobertK »

Thank you Stefano for your work on that target, high-res targets are always interesting.

Two issues:

1. Am I doing anything wrong here?

Code: Select all

zcc +cpm -subtype=mbc200 -pragma-redirect:fputc_cons=fputc_cons_generic -o PT.COM plottest.c -create-app -D__MBC200__
error: file open: mbc200.lib
2. The link on the platform list pointing to the MBC-200/1200 page is broken. If it does not have its own page, then let it point to the CPM page.
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

You've been too quick, I haven't written it yet ! :)
This target has still a relevant issue because of problems in getting the terminal talkback mechanism work correctly.
I suspect this depends on the emulation accuracy, but I can't be 100% sure.

At the moment the graphics code is based on the terminal ESCape sequences (pixel plotting, line drawing).
I couldn't reliably read the graphics memory, so plot detection, fill or XOR operations are missing ATM.
Moreover putsprite and the filled area (stencil) routines rely on the slow generic code, while this target allows interesting and funny tricks, in theory.

The library should be in, I could have missed something in the Makefile.. please try building it yourself:

https://github.com/z88dk/z88dk/blob/439 ... file#L1079

Go in {z88dk}/libsrc and type "make mbc200.lib", then move the lib file into {z88dk}/lib/clibs.

EDIT: It shout be simpler now, Dom fixed it :blush:
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

I wrote the missing Wiki page, hope it helps
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

Considering the current emulation limits (not confirmed by comparing with the real machine) it is probably convenient to stub a one - way text library to support the z88dk generic terminal, etc
User avatar
dom
Well known member
Posts: 2076
Joined: Sun Jul 15, 2007 10:01 pm

Re: Sanyo MBC-XXXX CP/M models

Post by dom »

So, CP/M machines by default have support for --generic-console - it assumes there's an ADM3 console and uses bdos to print to the screen (so might go slightly wonky on the bottom row depending on the bios) along with a backbuffer for vpeeking.

It's preferable to write a specific implementation since that way you can have colours and other attributes, but it's better than nothing!
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

I'd really like to do so but I could find a reliable way to access to the video memory directly.
All the video stuff is in charge to a twin z80 CPU and something gets garbled. I'm not even sure the output way is 100% stable, even if the normal console operation runs perfectly.
The ESC codes are Sanyo proprietary, but they include cursor positioning and many other features, so I though to shortcut to what I'm sure to be in working order.
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

What's the best way to alter the existing --generic-console library ?
I tried to simply rewrite the functions but they collide with the existing library, I suppose the console code is built on the fly:

duplicate definition: generic_console_ADM3::generic_console_printc
error: duplicate definition: generic_console_set_attribute::generic_console_set_attribute
User avatar
dom
Well known member
Posts: 2076
Joined: Sun Jul 15, 2007 10:01 pm

Re: Sanyo MBC-XXXX CP/M models

Post by dom »

If you put the mbc200 code into the mbc200 library then it won't clash as the machine library ends up being searched for symbols before cpm_clib.lib.

That's what I did for the x820 - you might not have implemented all the functions or be missing the CAPS defc?
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

> ..you might not have implemented all the functions or be missing the CAPS defc?
As usual, you are right.
VT52.png
This technique has only one possible positive aspect, the code gets probably portable on other, never emulated SANYO models.

On the MBC-200/1200 series the attributes work only in 33 rows mode (IOCTL can set 40 or 33 rows mode, the latter is the default one).
VT52_33.png
You do not have the required permissions to view the files attached to this post.
User avatar
dom
Well known member
Posts: 2076
Joined: Sun Jul 15, 2007 10:01 pm

Re: Sanyo MBC-XXXX CP/M models

Post by dom »

Cool, you can actually have a bit more fun by doing a couple of things:

1. Add @stdio/ansicore.lst to the cpm.lst file
2. Compile with -pragma-define:CLIB_ANSITERMINAL_BRIDGE=1

Then vt100 should mostly work as well
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

I try immediately :)
I suppose the direct ansi VT implementation is still preferable, right?
User avatar
dom
Well known member
Posts: 2076
Joined: Sun Jul 15, 2007 10:01 pm

Re: Sanyo MBC-XXXX CP/M models

Post by dom »

I wrote the bridge to save the effort of having to write the same hardware bashing code multiple times for the same target. Gencon also supports more screen modes than vt. The only things that gencon doesn't have is "reset all attributes" and sub-byte fonts (eg 80 columns in 256px).

Looking at various projects, it looks like gencon is probably used more than vt these days, so imo it makes sense to focus on gencon and use vt if compatibility is needed when porting from "bigger" platforms

I raised https://github.com/z88dk/z88dk/issues/1707 a couple of years ago to support sub-byte fonts
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

It's very comfortable indeed.
I must have messed with the underlined text attribute, bit 7 in CAPS, which is tempting me to provide both the implementations (there's very little code in this case) .
I should also change the calls to mbc_send in the terminal code (OUTing to the 2nd CPU directly) and call the BIOS instead. Having chosen to remap the terminal sequences and losing the compatibility with the other Sanyo models is stupid.
stefano
Well known member
Posts: 2137
Joined: Mon Jul 16, 2007 7:39 pm

Re: Sanyo MBC-XXXX CP/M models

Post by stefano »

I think it is in a consistent status, now.
Considering that mbc_send() has its own advantages in terms of speed and control over BIOS or BDOS, I decided not to change it.
It is rather convenient to replace it with a function calling the BIOS on the other Sanyo systems.

I can't wait to move on and try the Visual 1050 graphics :p
ansitest.png
You do not have the required permissions to view the files attached to this post.
Post Reply