New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

French Rom toggle on 65C02 apple //e and apple //c #574

Closed
aram-gilbert opened this Issue Aug 7, 2018 · 31 comments

Comments

Projects
None yet
4 participants
@aram-gilbert

aram-gilbert commented Aug 7, 2018

winapple - french characters set missing

Dears,
I'll be pleased to get a new toggle as I have on my Apple //e 65c02 - French.
There is a small switch under the keyboard to select which character set to use, depending on the software used.
I've attached a screenshot of AppleWorks French starting using the current WinApple rom.
Thanks for your great software ! It let me use all my software and data !

Kind regards,

Alexandre GILBERT

@tomcw tomcw added the enhancement label Aug 7, 2018

@tomcw

This comment has been minimized.

Contributor

tomcw commented Aug 7, 2018

Same with my UK Apple //e - the switch just gives me a £ instead of a # !

@tomcw

This comment has been minimized.

Contributor

tomcw commented Aug 8, 2018

Have you got a ROM image of the French keyboard character ROM?

@sicklittlemonkey

This comment has been minimized.

Contributor

sicklittlemonkey commented Aug 9, 2018

@MarcoVerpelli

This comment has been minimized.

MarcoVerpelli commented Aug 9, 2018

Also the Italian version of the Apple // c has the ability to show the nationalized characters.

In the (now deceased) site http://www.ctrl-pomme-reset.fr there was instructions on how to replace the font image with one of user choice using a resource editor

Marco

@tomcw

This comment has been minimized.

Contributor

tomcw commented Aug 9, 2018

Thanks Nick - from your URL, under Dual-Euro, are the 8K video ROMs (French, German, UK).
No Italian though. @MarcoVerpelli - do you have a dump of your ROM?

@tomcw

This comment has been minimized.

Contributor

tomcw commented Aug 9, 2018

NB. This dsk image gives a similar display to the original comment above:

ftp://ftp.apple.asimov.net/pub/apple_II/images/non-english/french/apple/AppleWorks%20v1.2%20-%20boot%20(French).DSK

@MarcoVerpelli

This comment has been minimized.

MarcoVerpelli commented Aug 9, 2018

No sorry. Never opened it in my life, and even if I opened it I would have no idea how to do a ROM dump. Time ago some one told me that the hardware has to do with electricity, but I think he wanted to make fun of me, nobody knows what the electricity really is!

@sicklittlemonkey

This comment has been minimized.

Contributor

sicklittlemonkey commented Aug 9, 2018

@tomcw

This comment has been minimized.

Contributor

tomcw commented Aug 10, 2018

Great hunting, Nick!
I have a bit of C code to dump the 8K video ROMs to ascii-pixel representation. I will check it this weekend.

@tomcw

This comment has been minimized.

Contributor

tomcw commented Aug 12, 2018

Yes, both the French and Italian are video char ROMs.
Here's a bit of code to dump them:

#include <stdio.h>

int main(int argc, char* argv[])
{
	const int CHAR_ROM_SIZE = 8192;
	unsigned char nBuffer[CHAR_ROM_SIZE];
	FILE* hFile;
	char* fileName;
	if (argc == 1) fileName = "UKCHAR.ROM";
	else fileName = argv[1];
	hFile = fopen(fileName, "rb");
	if (hFile == NULL)
	{
		printf("Failed to open %s\n", fileName);
		return 1;
	}

	unsigned int nLen = fread(nBuffer, 1, CHAR_ROM_SIZE, hFile);
	fclose(hFile);
	if (!nLen)
	{
		printf("Failed to read bytes\n");
		return 1;
	}

	const int NUM_CHARS = nLen / 8;
	for (int i=0; i<NUM_CHARS; i++)
	{
		for (int j=0; j<8; j++)
		{
			unsigned char n = nBuffer[i*8+j];
			for (int k=0; k<8; k++)
			{
				// Output LSB on left & MSB on right (ie. backwards)
				printf("%c", n&(1<<k) ? '#' : '.');
			}
			printf("\n");
		}
		printf("\n");
	}
	return 0;
}
@aram-gilbert

This comment has been minimized.

aram-gilbert commented Aug 15, 2018

Tom,
Maybe my C knowledge is a bit old, but my opinion on your code :

  1. In C on apple //e ; I only know Aztec C that could do that and to compile, it takes 20 minutes and 4 floppy change.
  2. I don't see the base address of the ROM in the C source. May you tell me what is the base address in hex ?
  3. I suggest making an applesoft basic program to "peek" the ROM values and display it in hex table. Then, using a picture of the screen then OCR it to get the data. A bit tricky but restarting the serial port on my old Apple //e, full of dust won't be easy.

Thanks for you interest in my post !

Kind regards,

Alexandre.

@aram-gilbert

This comment has been minimized.

aram-gilbert commented Aug 15, 2018

Tom,

May you have a look at https://wiki.reactivemicro.com/Apple_IIe_Enhancement_Kit ?
I guess you can download the ROM directly from there.

https://downloads.reactivemicro.com/Apple%20II%20Items/ROM_and_JEDEC/IIe/

When checking my initial Screenshot and characters tables, it matches !

Regards,

Alexandre.
roms

@tomcw

This comment has been minimized.

Contributor

tomcw commented Aug 15, 2018

Hi Alexandre,

Maybe my C knowledge is a bit old, but my opinion on your code :

Actually my code was for a Windows (or Linux) machine... not an Apple II!

So from a Windows machine, build the code (eg. using Visual Studio), then you can dump the 4K or 8K video ROM file to an ascii output.

@sicklittlemonkey

This comment has been minimized.

Contributor

sicklittlemonkey commented Aug 15, 2018

@tomcw

This comment has been minimized.

Contributor

tomcw commented Aug 16, 2018

Hi Nick,
I'm just thinking a little about the spec for supporting video (character) ROMs.

In AppleWin, there are many models of Apple II supported (ie. II, II+,//e, Enhanced //e and clones too), and you wouldn't want (eg) an enhanced //e ROM used when emulating a II or II+. But maybe you have a custom French Apple II+ video ROM, which you only want used with a II+ machine. So potentially there's a complex combination of Apple II models x video ROMs that could be supported!

IMO the mainline use-case is supporting different video ROMs for the Enhanced //e.

So we could support this via:

  1. a cmd-line switch to specify an alternative video ROM just for the Enhanced //e
    • I'd want to avoid specifying an Apple II type on the cmd line too, as I feel this over complicates things
  2. a GUI Configuration drop-down to specify a video ROM language, and if there is an (AppleWin) build-in video ROM for that language then it would take affect
    • this can work for models other than Enhanced //e, assuming those video ROMs exist and have been built into AppleWin
    • eg. this would allow for French unenhanced and enhanced video ROMs to work with unenhanced and enhanced machines respectively
@tomcw

This comment has been minimized.

Contributor

tomcw commented Nov 11, 2018

OK, I've found 3 French character/video ROMs, all different(!):

  1. Apple IIe Video - Custom - French-US - Enhanced - 2764.bin
    • 8KiB, ReactiveMicro.com here.
    • Contains 32 chars of mousetext at char offset 576
  2. Apple IIe Video French-US - Unenhanced - 342-0274-A - 2764.bin
    • 8KiB, ReactiveMicro.com here.
    • No mousetext (eg. at char offset 576 just 32 non-inverse chars: @,A,B,C,...[,\,],^,_)
    • But from the asimov list of common ROM numbers (ftp://ftp.apple.asimov.net/pub/apple_II/documentation/hardware/misc/Apple%20II%20Common%20ROM%20Numbers.txt), this ROM should be enhanced:
    • 342-0274-A //c, //e (enhanced) Char Gen French
  3. VID-342-274A.bin
    • 16KiB (first 8KiB is all 0xFF's), asimov here: ftp://ftp.apple.asimov.net/pub/apple_II/emulators/rom_images/VID-342-274A.bin
    • Contains 32 chars of mousetext at char offset 64
    • Contains 32 chars of mousetext at char offset 576

EDIT: If I were to embed one of these into AppleWin, then which one to choose? Presumably one with mousetext... and perhaps (3), since this could actually be from a real //c (given the leading 8K of 0xFF's).

@aram-gilbert

This comment has been minimized.

aram-gilbert commented Nov 11, 2018

@tomcw

This comment has been minimized.

Contributor

tomcw commented Nov 11, 2018

I'm just making some preliminary notes - but as soon as I have something working, I'll let you have a build to test.

@tomcw

This comment has been minimized.

Contributor

tomcw commented Nov 14, 2018

@aram-gilbert,

Here's a experimental build (zipped) with support for other video ROMs: Applewin-1.27.11.0.zip

Just extract it over the top of AppleWin 1.27.10.0.

To use it, from the command line (cmd shell):
>applewin.exe -videorom <filename>

EG.
>Applewin.exe -videorom "Apple IIe Video - Custom - French-US - Enhanced - 2764.bin"

It supports video ROM bin files of size 8KiB or 16KiB (the latter it just uses the top 8KiB). 4KiB files are not implemented yet.

I've tested it on "AppleWorks v1.2 - boot (French).dsk" with the 3 ROM files listed in a previous comment.

NB. There's no GUI configuration support (it's command line only).

Please give it a test and let me know how you get on.

@tomcw

This comment has been minimized.

Contributor

tomcw commented Nov 14, 2018

I forgot to mention that this new video rom only works in Enhanced //e mode.

@tomcw

This comment has been minimized.

Contributor

tomcw commented Nov 14, 2018

And a bonus (and as @MarcoVerpelli mentions above) you can now enjoy French Touch's Block Ansi Anthology with this command line:

>Applewin.exe -videorom eprom2164.bin

@tomcw

This comment has been minimized.

Contributor

tomcw commented Nov 16, 2018

Actually (having read Sather on video ROMs), my implementation isn't quite right: it'll show US (alt char set=0) & Euro (alt char set=1). What I need to do it support the rocker switch under the keyboard (for PAL //e's) to provide this:

  • US chars; alt char set=0|1 (rocker switch=0)
  • Euro chars; alt char set=0|1 (rocker switch=1)
@aram-gilbert

This comment has been minimized.

aram-gilbert commented Nov 16, 2018

Thanks Tom for your time and effort. Maybe to make it easier, why not considering the rocker switch to 1 when video rom is passed in command line. At least for testing while you are developping the rocker switch emulation. It may not be piece of cake. Thanks for taking care of that request.

@tomcw

This comment has been minimized.

Contributor

tomcw commented Nov 17, 2018

@aram-gilbert, OK here's a release build, AppleWin 1.27.12.0.

Use F10 to toggle the rocker switch (with it defaulting to the European video ROM, as you suggested).
See the release notes here for a bit more info.

I also tested with the 4K Canadian video ROM, here.
NB. F10 has no effect for 4K video ROMs.

Does this new build work for you?

@tomcw tomcw added this to the 1.27.12 milestone Nov 17, 2018

@aram-gilbert

This comment has been minimized.

aram-gilbert commented Nov 17, 2018

@tomcw : Works fine ! I guess I should find the proper ROM now. The "apple-?" for assistance is converted to an A-?. When I press F10, I got the EmptyApple-?
It's not in the program, but in the rom file.

Thank you so much for making it live !

apple iie test

@MarcoVerpelli

This comment has been minimized.

MarcoVerpelli commented Nov 17, 2018

I can confirm that this ROM works very well with the Italian language, it seems to be my real iron // c

https://museo.freaknet.org/files/apple-2c/a2-chargen-342-0276-A-2764.bin

Marco

@tomcw

This comment has been minimized.

Contributor

tomcw commented Nov 17, 2018

Thanks both for confirming.

@aram-gilbert: re. A-?
It's possible that the video ROM that you chose doesn't have the mouse-text characters.
Which French video ROM are you using?

This was referenced Nov 17, 2018

@MarcoVerpelli

This comment has been minimized.

MarcoVerpelli commented Nov 18, 2018

We can always use this to make our custom ROMs

https://github.com/robmcmullen/omnivore

@aram-gilbert

This comment has been minimized.

aram-gilbert commented Nov 18, 2018

@tomcw

This comment has been minimized.

Contributor

tomcw commented Dec 8, 2018

Added tests here: AppleWin/AppleWin-Test@2e97993.

@tomcw

This comment has been minimized.

Contributor

tomcw commented Dec 8, 2018

Closing this issue, as it's been confirmed working.

@tomcw tomcw closed this Dec 8, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment