CPCWiki forum

General Category => Programming => Topic started by: FloppySoftware on 17:55, 21 July 15

Title: PCW graphics library
Post by: FloppySoftware on 17:55, 21 July 15
Hi all!

Any interest in a graphics library for the Amstrad PCW?

I'm writting a RSX based library for CP/M Plus.

It should be usable from any computer language, say, Basic or assembler, because it has a standard BDOS interface, but I'm writting some additional libraries for MESCC, my Small-C variant:And I have in mind to write libraries to draw icons, sprites, etc. (the RSX has already a basic support for that).

It will be released under the GPL license.
Title: Re: PCW graphics library
Post by: AMSDOS on 11:47, 22 July 15
My slogan reads "The User Formerly known as CP/M User" because of the amount of complaints I got, when I told other users I wasn't using GSX.
Title: Re: PCW graphics library
Post by: FloppySoftware on 15:26, 22 July 15
Quote from: AMSDOS on 11:47, 22 July 15
My slogan reads "The User Formerly known as CP/M User" because of the amount of complaints I got, when I told other users I wasn't using GSX.
Well, GSX is good as CP/M is good for a lot of computers, including the Amstrad PCW (same OS for a variety of computers), but IMHO it is too big and slow for some purposes.

Title: Re: PCW graphics library
Post by: AMSDOS on 10:45, 23 July 15
Quote from: FloppySoftware on 15:26, 22 July 15
Well, GSX is good as CP/M is good for a lot of computers, including the Amstrad PCW (same OS for a variety of computers), but IMHO it is too big and slow for some purposes.


Huh, that's funny last time I recall a PCW had 256k minimum.  :D


I don't know GSX well enough to know what it can or can't do, though understand a number of CP/M systems which support graphics use it, so in a way the CP/M community treat that as if it was like DirectX for Windows (even though Windows was going longer than that).
But from what I've seen PCW breaks those rules, by using System Specific stuff which, as I understand it, can sometimes be the only way.
Title: Re: PCW graphics library
Post by: MaV on 11:51, 23 July 15
The idea behind GSX is to offer a solution for all possible graphical devices, so you're not limited to screen but there's printer, etc. The internal resolution is 32768x32768 and every command is scaled in software to the dimensions of the hardware it currently writes to (i.e. 720x256 for the display) which is extremely costly.

The idea is not speed but first and foremost compatibility across all possible CP/M machines. That's ideal for graphs and pie charts. And of course, this is slow by design.

That's all from the top of my head. I haven't done anything with GSX for a very long time.
Title: Re: PCW graphics library
Post by: AMSDOS on 12:15, 23 July 15
I'm assuming that to have compatibility means an compromise in speed? Though source code for GSX is probably scarce, this site (http://www.cpm.z80.de/source.html) only has GSX86.
Title: Re: PCW graphics library
Post by: arnoldemu on 13:08, 23 July 15
Quote from: AMSDOS on 12:15, 23 July 15
I'm assuming that to have compatibility means an compromise in speed? Though source code for GSX is probably scarce, this site (http://www.cpm.z80.de/source.html) only has GSX86.
Each gsx implementation has it's own driver code.

The CPC one uses the firmware.
Don't know about the PCW one.
Title: Re: PCW graphics library
Post by: FloppySoftware on 13:27, 23 July 15
Quote from: AMSDOS on 10:45, 23 July 15

Huh, that's funny last time I recall a PCW had 256k minimum.  :D


But only 61 Kb of TPA.  ;)

Add to the program code and data size, the memory requirements of GSX + drivers. That's a lot.  :'(
Title: Re: PCW graphics library
Post by: FloppySoftware on 13:32, 23 July 15
Quote from: arnoldemu on 13:08, 23 July 15
Each gsx implementation has it's own driver code.

The CPC one uses the firmware.
Don't know about the PCW one.

GSX is the same as BDOS for CP/M: the same for all CP/M machines, is standard.
But the drivers are specific of every device: printers, plotters, screens, etc.
The PCW has no firmware at all, and the BIOS USERF jump doesn't have any graphical function as draw, plot, etc.
Then, the screen drivers must to do all the work, resulting in a lot of code, and some features are missing.
Title: Re: PCW graphics library
Post by: AMSDOS on 10:13, 24 July 15

Quote from: FloppySoftware on 13:27, 23 July 15

But only 61 Kb of TPA. 


Well that's just stupid, cause everyone knows CP/M Plus utilises the extra 64k and I can even get 61Kb of TPA out of my 6128, so I can only presume Memory is being wasted away by not doing anything on a 8256, unless you know otherwise? I suppose it would make sense if you had that set aside for a RAM disk.
Title: Re: PCW graphics library
Post by: CraigsBar on 10:27, 24 July 15
Quote from: AMSDOS on 10:13, 24 July 15

Well that's just stupid, cause everyone knows CP/M Plus utilises the extra 64k and I can even get 61Kb of TPA out of my 6128, so I can only presume Memory is being wasted away by not doing anything on a 8256, unless you know otherwise? I suppose it would make sense if you had that set aside for a RAM disk.
Yep, it's your m: drive
Title: Re: PCW graphics library
Post by: AMSDOS on 10:29, 24 July 15
Quote from: arnoldemu on 13:08, 23 July 15
Each gsx implementation has it's own driver code.

The CPC one uses the firmware.


This page (http://seasip.info/Cpm/gsxint.html) from John Elliott's website seems to support that since a number of standard GSX features aren't implemented in that version.
The PCW8256 version seems to borrow traits from the CPC version but replacing Firmware Drawing code with PCW specific, so has 2 sections. The 9512 has an Advanced version of GSX.
Title: Re: PCW graphics library
Post by: TFM on 17:47, 24 July 15
Quote from: AMSDOS on 10:29, 24 July 15

This page (http://seasip.info/Cpm/gsxint.html) from John Elliott's website seems to support that since a number of standard GSX features aren't implemented in that version.
The PCW8256 version seems to borrow traits from the CPC version but replacing Firmware Drawing code with PCW specific, so has 2 sections. The 9512 has an Advanced version of GSX.


OMG! I didn't know that the GSX drivers for CPC/PcW are actually that poor! So a new GFX library is a great idea for sure!!


One question I do have in mind... How much CP/M program are actually using GSX? Is it only DR Draw and DR Graph? Or are there more?

Title: Re: PCW graphics library
Post by: AMSDOS on 23:22, 24 July 15
DR Logo with CP/M Plus uses GSX and who knows there maybe a number of Hisoft Pascal 80 programs which use GSX.
Title: Re: PCW graphics library
Post by: radu14m on 06:11, 25 July 15
this resultion is great"such a resolution need the cpc too :)
Title: Re: PCW graphics library
Post by: FloppySoftware on 18:07, 10 August 15
Well, there's some progress in the work (or it was work in the progress?  ;) ).

Now I have a RSX and some MESCC libraries that use it.

With some luck, I will publish them very soon, including a small game that use some of these graphical functions.

In fact, the game is already finished, but I would like to publish it the next September, as a small present for our beloved Amstrad PCW, in its 30th anniversary.  :D :D :D
Title: Re: PCW graphics library
Post by: robcfg on 18:55, 10 August 15
Coooooool!  8)


The PCW is starting to get the love it deserves, thank you very much!
Title: Re: PCW graphics library
Post by: Prodatron on 19:23, 10 August 15
Great, I am looking forward to it! :)
Title: Re: PCW graphics library
Post by: Gryzor on 15:32, 11 August 15
Looking forward to it, too!
Title: PCW graphics library
Post by: FloppySoftware on 17:42, 30 August 15
Hi all!

I have just uploaded XPCW to my website.

XPCW is a graphics and keyboard library for the Amstrad PCW, under the CP/M operating system.

It consists of a CP/M Plus RSX file, with some library files (.h) for MESCC, my own version of the Small-C compiler.

The RSX is written in Z80 assembler source code.

It can be accessed by any CP/M program or language, provided it follows its conventions (read the RSX source code for more information).

The XPCW.RSX file, has to be attached to any program that uses this library.

Only one MESCC library is needed (xpcw.h), the other are optional.

The libraries are:

•xpcw.h - Main library.
•xdraw.h - Functions to draw pixels, lines, etc.
•xtext.h - Functions to write text, set the font, change attributes, etc.
•xchrdef.h - Functions to get / set character definitions.
•xbitmap.h - Functions to draw bitmaps.
•xkeyb.h - Functions to access the keyboard.

You can download XPCW in binary and source code form, from my website (includes Squarex, a little game).


(http://www.floppysoftware.vacau.com/xdemo.png)
Title: Re: PCW graphics library
Post by: Prodatron on 20:40, 30 August 15
Very cool, thank you for your work! Having a look at the source codes and the bresenham algorithms gave me a lot of new general motivation for coding for our 8bits :)
Powered by SMFPacks Menu Editor Mod