VOGONS


First post, by tschak909

User metadata
Rank Newbie
Rank
Newbie

Hello everyone,

I've recently borrowed a Mindset computer, for the purpose of writing new software for it, and am writing it in Watcom C 1.9.

Currently set to generate 80186 instructions, with texan optimizations.

Thus far, I have brought up a copy of PLATOTERM on the system:
https://www.youtube.com/watch?v=e0VZveLqMoY

This uses polyline, polypoint, and a few other BLT functions to do output, and works okay....

However, I am trying to get BLT COPY from this document, to work properly:
http://www.bitsavers.org/pdf/mindset/Mindset_ … opers_Guide.pdf <-- page 4-43

And I've thus written so far:
https://gist.github.com/tschak909/75a7e9e6804 … 3019820e10c9c19

and all I see is a sea of blackness. argh It's something I am doing wrong.. wtf is it?

Reply 1 of 19, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie

Interesting, I don't recall hearing about this Mindset system before.

51        blt_params[0]=FP_OFF(blitdata);          // Source offset
52 blt_params[1]=FP_SEG(blitdata); // Source seg
53 blt_params[2]=8; // 16 bytes?
54 blt_params[3]=0; // X source offset
55 blt_params[4]=0; // Y source offset
56 blt_params[5]=128; // X dest offset
57 blt_params[6]=128; // Y dest offset
58 blt_params[8]=16; // X width in pixels
59 blt_params[9]=16; // Y width in pixels
60 blt_params[10]=0xFFFF; // Source mask (everything)

Looks like you skipped 7? How about this instead:

58	  blt_params[7]=16;                // X width in pixels
59 blt_params[8]=16; // Y width in pixels
60 blt_params[9]=0xFFFF; // Source mask (everything)

Reply 2 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

oh wow *smack-head* thanks 😀

I've been writing a whole host of test programs trying to document the hardware, and I guess I've just been at the keyboard too long 😀

Here it is running on actual hardware:
https://www.youtube.com/watch?v=d6G7HrCC3cI

Keep in mind, the CPU is a 6MHz 80186. 😉

-Thom

Reply 3 of 19, by Merovign

User metadata
Rank Member
Rank
Member

Good on your for doing this project! Rare hardware that deserves preservation.

Were I rich *and* mad instead of just mad, I'd think about trying to get hold of one and possibly even see what kind of upgrades could be done (on new scratch hardware), I'm always curious about what could have happened had, say, CP/M continued to evolve or the Mindset had become like the Amiga or ST in the market.

*Too* *many* *things*!

Reply 5 of 19, by Scali

User metadata
Rank l33t
Rank
l33t
tschak909 wrote:

Keep in mind, the CPU is a 6MHz 80186. 😉

Yea, but it's the graphics chip doing the interesting stuff, not the CPU 😀
The Mindset is actually somewhat similar to the Amiga... Which is no surprise, given that it was designed by former Atari employees, like the Amiga.
The Mindset shows what early PCs could have been. Sadly IBM and clones were nowhere near as advanced in terms of graphics.
The Mindset wasn't even an expensive machine. It was actually a bargain, in the world of MS-DOS clones.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 6 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

Believe me, I know. I've been knee deep in virtually everything about this system, for a bit now.. 😉

I'm trying to both document this machine to a wider audience (Demos are BEGGING to be written for this system), and try to show how little this machine was actually explored.

The vast majority of demonstrations made for the system were literally written in GW-BASIC, which, while it is USABLE for simple stuff, the interpreter overhead is predictably, very hard.

The nice thing here, is that recent MAME git checkouts (from the last month or so), have a functional Mindset emulation (sans sound, and some odds and ends), which was sufficient for me to start this work before I borrowed the hardware. 😀

(hint hint, let's get some demos made!) 😉

Reply 7 of 19, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie

Looks like the gfx modes are the same as the ST: 320x200x4bpp, 640x200x2bpp, 640x400x1bpp, plus an additional 320x400x2bpp option. But this system does not use the dreaded bitplanes?? The sound is also better than the ST. Maybe freddy can get ModMaster to run on a Mindset...

Reply 8 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

All sorts of useful info here:
http://www.bitsavers.org/pdf/mindset/Mindset_ … opers_Guide.pdf

The entire graphics subsystem is explained in chapter 4. Some modes are double buffered (the 2 and 4 color modes for 320x200 and 640x200.. the interlaced 640x400 mode does not have such an option).... although you can set a destination buffer anywhere in memory, so this is merely what the system offers automatically...

-Thom

Reply 9 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

The #MINDSET can attach a handler to the display interrupt, on one of any scanline on screen. This allows a nice 60Hz timing for handling sound or animation. Shown here is a simple demo that changes the color palette for one color palette entry every 1/60th of a second.

vbi.gif
Filename
vbi.gif
File size
622.06 KiB
Views
1382 views
File license
Fair use/fair dealing exception

The code is here: https://github.com/tschak909/mindset-examples … ster/vbi/main.c

Reply 10 of 19, by Scali

User metadata
Rank l33t
Rank
l33t
tschak909 wrote:

(hint hint, let's get some demos made!) 😉

Yea, I really like this machine, and as an Amiga coder I'd love to check out this particular chipset, to see what tricks you can make it do.
Getting real hardware seems to be nearly impossible though.
But when I have more time, I may try out MAME, if it's any good.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 11 of 19, by Stiletto

User metadata
Rank l33t++
Rank
l33t++
Scali wrote:
Yea, I really like this machine, and as an Amiga coder I'd love to check out this particular chipset, to see what tricks you can […]
Show full quote
tschak909 wrote:

(hint hint, let's get some demos made!) 😉

Yea, I really like this machine, and as an Amiga coder I'd love to check out this particular chipset, to see what tricks you can make it do.
Getting real hardware seems to be nearly impossible though.
But when I have more time, I may try out MAME, if it's any good.

Our Amiga emulation currently sucks compared to WinUAE, I can tell you that much!

We've got the world's best Mindset emulation though! 😎 (as far as I know we now have the world's _only_ Mindset emulation... 🤣 )

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 12 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

As I said, the Mindset emulation is complete enough that I am actually able to do real development work with it. The only currently majorly missing feature is sound (and support for the interlaced modes)

-Thom

Reply 13 of 19, by VileR

User metadata
Rank l33t
Rank
l33t

Well done. Love to see new stuff being written for a system like the Mindset - definitely an interesting machine to delve into.

I'm woefully out-of-date when it comes to MAME - where might one obtain new builds as well as the files required for Mindset emulation? (software is already on bitsavers, I see.)

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]

Reply 14 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

MAME rom sets for latest release can be found with a bit of sleuthing. the machine driver is 'mindset'

Right now, the best way to get any of this working is to check out a copy of MAME from git, and build it yourself.

-Thom

Reply 15 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

Here is a completed "Scene" doing blitter animation, based on the PAC-MAN intermissions:
https://www.youtube.com/watch?v=AE8ieFNSpJM

Code is here: https://github.com/tschak909/mindset-examples … cutscene/main.c

Note that it has no problem moving big blits nice and smoothly. 😀

-Thom

Reply 17 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

Ok, the one remaining buggerboo in the graphics library is trying to call BLT STRING to output custom font data.

It's described here:
http://www.bitsavers.org/pdf/mindset/Mindset_ … opers_Guide.pdf
page 4-70 for SET FONT POINTER
page 4-73 for BLT STRING

and the code I am doing to exercise this is here:
https://github.com/tschak909/mindset-examples … ter/font/main.c

*braces-for-the-inevitable*

-Thom

Reply 18 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

I figured out in a nutshell what's going on:

The fonts aren't monochrome, they have to be in the target graphics mode format, which in my case is 320x200x16

and the pixels are arranged thusly:

7---4 3---0
XXXX YYYY

where X and Y are palette indices (0-F), so two pixels of color F are 0xFF

And the color index specified by the BLT STRING is in actuality a mask which is applied against the font data. So it's basically re-using the BLT COPY code.

It does mean that the text blitting will be very fast, too.

SOOO, my question to you guys is:

Do any of you have a tool that can convert e.g. a 16-color GIF or BMP to this format? Or am I gonna have to roll my own thing here? 😀

-Thom

Reply 19 of 19, by tschak909

User metadata
Rank Newbie
Rank
Newbie

The #MINDSET's BLITTER can also be used for fast text output of a custom font at any pixel position.

It took me a significant amount of time to figure out how the SET FONT POINTER and BLT STRING routines worked, because the documentation left out very critical details, and my initial assumptions were incorrect.

Namely, the font data has to be in the same format as used by BLT COPY for the target mode, in this case, 4 bits per pixel, and that the font data has to be laid end to end, as seen in the video.

Now I will be able to do tile based graphic output, very quickly, for both the custom fonts needed in #PLATOTERM, but also for game dev work on this machine.

The code is here:
https://github.com/tschak909/mindset-ex ... QhMGdQ1vZc