Previous Thread
Next Thread
Print Thread
Page 81 of 82 1 2 79 80 81 82
Darkstar #120372 01/16/22 11:35 AM
Joined: Apr 2005
Posts: 612
Likes: 4
Senior Member
OP Online Content
Senior Member
Joined: Apr 2005
Posts: 612
Likes: 4
I decided to dump the EPROMs on that beautiful DEC DMB32 communication controller:
[Linked Image from i.imgur.com]

Yes, I know, there's no VAX emulation in MAME (yet) but maybe at some point this will come in handy. Now I'll get this framed and hang it on a wall smile

The EPROM dumps and some higher-resolution photos can be downloaded here. I also included the two manuals for the DMB32 that are available on MANX, just in case.

1 member likes this: exidyboy
Darkstar #120391 01/21/22 11:06 PM
Joined: Jan 2021
Posts: 58
Likes: 39
R
Member
Online Content
Member
R
Joined: Jan 2021
Posts: 58
Likes: 39
https://revenant1.net/casio/ld50.zip
ROM and 87c52 MCU dumps from the Casio LD-50 electronic drums. Also includes the demo and built-in rhythms as MIDI files, which is how they're stored in ROM.

This is clearly a rebranded/outsourced product, sort of like the LD-80 (also sold as the Medeli DD-306), but I can't tell if this one was ever sold under other brands or who the actual developer is. The ROM mentions "SharpWin", which might be this company, but I'm not entirely sure.

Anyway, the actual sound chip is a Dream SAM9793 MIDI-synth-on-a-chip (i.e. MIDI goes in, I2S comes out), which isn't a very viable emulation target. Alternately, you should just be able to connect the MCU's UART output to a generic MIDI out port and just have it control something else instead, if it'd be worth having a driver that does that.

1 member likes this: Robbbert
Darkstar #120392 01/22/22 06:03 AM
Joined: Jan 2021
Posts: 157
Likes: 5
=
Senior Member
Offline
Senior Member
=
Joined: Jan 2021
Posts: 157
Likes: 5
Casio rebranded also other music stuff?

I only know the awful Casio MA-150/MA-170 midsize keyboard that actually was a Medeli MC-36 (i.e. mainvoice of primitive static waveforms with noisy DAC output). Casio really did themselves no favour with ruining their reputation with selling this really poor sounding tablehooter. If I remeber well, even the play training modes were full of glitches and in some songs unusable because instead of the melody voice it did some rapid arpeggio stuff that is impossible by hand if you are not a pianist skilled like Lang Lang.


MAY THE SOFTWARE BE WITH YOU!

{weltenschule.de}
=CO=Windler #120755 04/13/22 10:08 PM
Joined: Jan 2021
Posts: 58
Likes: 39
R
Member
Online Content
Member
R
Joined: Jan 2021
Posts: 58
Likes: 39
https://revenant1.net/casio/ct647.zip

Mask ROM dump from the Casio CT-647 / CT-648 (1992), also released as CTK-500 / CTK-510 and Concertmate 950

Service manual: https://revenant1.net/casio/manuals/msm6626/ctk500.pdf

The CPU/sound chip can be either MSM6566-03 or MSM6626-01 depending on revision (mine has the former, the service manual has the latter), but the PCBs are otherwise the same. I don't know of any other models that used these aside from possibly the KT-80 (similar keyboard with built-in CD player) and KT-90G (same but with CD+G). As usual with these custom OKI chips the program code is probably internal.

Last edited by Revenant; 04/13/22 10:17 PM.
Darkstar #121244 08/14/22 09:23 PM
Joined: Jan 2021
Posts: 58
Likes: 39
R
Member
Online Content
Member
R
Joined: Jan 2021
Posts: 58
Likes: 39
https://revenant1.net/phusion.zip

VTech "Phusion" handheld organizer/PDA (2000).

Code
Version 1.73 12:00 20000426
VTECH ET39700

CPU is an epoxy blob (go figure). Code at the beginning of the ROM seems like CR16B, similar to the machines in vtech/glcx.cpp, though probably not the same exact SoC.

Darkstar #121822 01/02/23 05:40 AM
Joined: Jan 2021
Posts: 58
Likes: 39
R
Member
Online Content
Member
R
Joined: Jan 2021
Posts: 58
Likes: 39
https://revenant1.net/vtech-alligator.zip

SPI flash dump from the VTech "Pull & Learn Alligator" toy from 2016 (teardown by Foone here). The CPU is a blob as usual but the flash contains 65C02 code and lots of audio in some weird format. I couldn't really find any vectors or boot code anywhere in the dump, so I assume there's some internal ROM also. Structurally it looks kind of similar to the "Cars 2 Laptop" ROM from inteladv.cpp.

Last edited by Revenant; 01/02/23 05:42 AM.
R. Belmont #121867 01/11/23 02:43 AM
Joined: Feb 2014
Posts: 1,016
Likes: 110
G
Very Senior Member
Offline
Very Senior Member
G
Joined: Feb 2014
Posts: 1,016
Likes: 110
regarding the blw700i LW-700i from awhile back (page 72-73 of this thread), I found a manual for the lw-810 search for ("BROTHER LW-810iC") that has basically the same keyboard matrix:


[Linked Image from i.imgur.com]

[Linked Image from i.imgur.com]

Note that the keyboard in the pic is for the US layout but the rom has the UK layout.

Using the Emulated keyboard vs the Natural Keyboard, I can get it to pass the keyboard self test if I hit it in the right sequence.
Interestingly, it doesn't give you much feedback aside from a beep (currently unemulated) if you don't hit the right sequence.

from the main menu screen, hitting CTRL (CODE)+SHIFT+BACKSPACE gives you a self test menu:
also (CODE+SHIFT+ENTER) gives you a self test print.

[Linked Image from i.imgur.com]

[Linked Image from i.imgur.com]
[Linked Image from i.imgur.com]


Code
// row 0:   | 4 | 3 | W | E | D | X | ? | Enter? |
// row 1:   | 5 | 6 | R | T | C | F | ? | DArr |
// row 2:   | 8 | 7 | Y | H | G | V | ? | ? |
// row 3:   | 1 | 2 | Q | Z | A | S | ? | Shift Lock? |
// row 4:   | 9 | J | I | U | B | N | ? | RArr |
// row 5:   | - | 0 | P | O | M | , | ? | Menu |
// row 6:   | ? | ; |2/3| | |LAr|UAr| ? | ? |
// row 7:   | ? | ? |ENT|BkS| ? | ? | ? | Shift? |
// row 8:   |3/4| L | = | K | . |1/2| * | ? |

static INPUT_PORTS_START( lw700i )
	PORT_START("X0")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)  PORT_CHAR('4') PORT_CHAR('@')
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)  PORT_CHAR('3') PORT_CHAR('/')
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)  PORT_CHAR('w') PORT_CHAR('W')
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)  PORT_CHAR('e') PORT_CHAR('E')
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)  PORT_CHAR('d') PORT_CHAR('D')
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)  PORT_CHAR('x') PORT_CHAR('X')
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_UNKNOWN)
	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD)  PORT_CODE(KEYCODE_TAB)

	PORT_START("X1")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5)  PORT_CHAR('5') PORT_CHAR(0xa3)  // a3=pound symbol
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6)  PORT_CHAR('6') PORT_CHAR('_')
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)  PORT_CHAR('r') PORT_CHAR('R')
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T)  PORT_CHAR('t') PORT_CHAR('T')
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)  PORT_CHAR('c') PORT_CHAR('C')
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F)  PORT_CHAR('f') PORT_CHAR('F')
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_UNKNOWN)  // F19 (unused)

	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_UP)    PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))  // F10

	PORT_START("X2")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)  PORT_CHAR('8') PORT_CHAR('\'')
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7)  PORT_CHAR('7') PORT_CHAR('&')
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y)  PORT_CHAR('y') PORT_CHAR('Y')
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H)  PORT_CHAR('h') PORT_CHAR('H')
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G)  PORT_CHAR('g') PORT_CHAR('G')
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V)  PORT_CHAR('v') PORT_CHAR('V')
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_UNKNOWN)
	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD)  PORT_NAME("P INS / P BREAK") PORT_CODE(KEYCODE_PGUP)  // F5

	PORT_START("X3")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)  PORT_CHAR('1') PORT_CHAR('*')
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)  PORT_CHAR('2') PORT_CHAR('"')
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)  PORT_CHAR('q') PORT_CHAR('Q')
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)  PORT_CHAR('z') PORT_CHAR('Z')
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)  PORT_CHAR('a') PORT_CHAR('A')
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)  PORT_CHAR('s') PORT_CHAR('S')
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_UNKNOWN)
	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))

	PORT_START("X4")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)  PORT_CHAR('9') PORT_CHAR('(')
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J)  PORT_CHAR('j') PORT_CHAR('J')
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I)  PORT_CHAR('i') PORT_CHAR('I')
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U)  PORT_CHAR('u') PORT_CHAR('U')
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)  PORT_CHAR('b') PORT_CHAR('B')
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N)  PORT_CHAR('n') PORT_CHAR('N')
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_UNKNOWN)
	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))

	PORT_START("X5")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)  PORT_CHAR('-') PORT_CHAR('?')  // A11
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0)      PORT_CHAR('0') PORT_CHAR(')')
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P)      PORT_CHAR('p') PORT_CHAR('P')
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O)      PORT_CHAR('o') PORT_CHAR('O')
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M)      PORT_CHAR('m') PORT_CHAR('M')
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)  PORT_CHAR(',')
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_UNKNOWN)
	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Menu / PgUp")  PORT_CODE(KEYCODE_HOME)


	PORT_START("X6")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME ("P CLIP / C CLIP") PORT_CODE(KEYCODE_INSERT) // (grid says A2)  no it's F2
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)      PORT_CHAR(';') PORT_CHAR(':')       // AA3
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(0x2154) PORT_CHAR(0x2153) // AA2 2154 = ⅔ 2153 = ⅓
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)  PORT_CHAR(0xbc) PORT_CHAR(0xbd)     // AA1
	
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT)          PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // F12
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN)          PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))  // F13
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CODE")             PORT_CODE(KEYCODE_LCONTROL)    // F15
	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_UNKNOWN)

	PORT_START("X7")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Print")              PORT_CODE(KEYCODE_PGDN) // F1
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Cancel / Page Down") PORT_CODE(KEYCODE_END)  // F3
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return")             PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)  // F9
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE)    PORT_CHAR(8)  // F7
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL)                        // F17 DELETE
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Clear")              PORT_CODE(KEYCODE_RCONTROL) // F18 WORD OUT / LINE OUT
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE)        PORT_CHAR(' ')  // F16 SPACE
	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift")              PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT)  // F11 SHIFT PORT_CHAR(UCHAR_SHIFT_1)

	PORT_START("X8")
	PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)    PORT_CHAR(0xbe) PORT_CHAR(0xbc)  // 3/4 and 1/4
	PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L)         PORT_CHAR('l') PORT_CHAR('L')
	PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE)     PORT_CHAR('=') PORT_CHAR('+')  // A0  = and +
	PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K)         PORT_CHAR('k') PORT_CHAR('K')
	PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)      PORT_CHAR('.')
	PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)     PORT_CHAR(0xbd) PORT_CHAR('%')  // 1/2 and %
	PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)     PORT_CHAR(0xb7) PORT_CHAR(0xf7) // AA4 QUOTE middle dot, division sign
	PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_UNKNOWN)

Darkstar #122017 02/23/23 09:07 PM
Joined: Jan 2012
Posts: 1,179
Likes: 16
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2012
Posts: 1,179
Likes: 16
A guy on the German VzEkC forum pointed out a computer I hadn't heard about - the Commodore 900 workstation which uses the Z8001 CPU.

It's already included in MAME, but the comments in the source include "Need schematics, technical manuals and so on. Eventually, will need software."

It appears that these have been scanned and dumped, there are kryoflux images of the four original disks and even a harddisk dump at https://datamuseum.dk/wiki/Bits:Keyword/CBM900, as well as scans of technical data.


NCR DMV- DEC Rainbow- Siemens PCD- ITT 3030-Oly People- Acorn A5000- Olivetti M20
3 members like this: mixmaster, robcfg, Revenant
Darkstar #122018 02/24/23 12:47 PM
Joined: May 1999
Posts: 604
Likes: 1
Senior Member
Offline
Senior Member
Joined: May 1999
Posts: 604
Likes: 1
Incidentally, there's a nice video by RMC on that computer, look here

Darkstar #122152 04/08/23 10:13 PM
Joined: Jan 2012
Posts: 1,179
Likes: 16
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2012
Posts: 1,179
Likes: 16
Philips had a wide range of experimenting equipment for kids and teenagers, physics, chemistry, electronics, you name it. The Micro-Computer Master Lab is a relatively late foray (1983) into computer technology, using a INS 8070 microprocessor.

https://norbert.old.no/kits/6400/6400.html

https://www.hansotten.com/electronic-kits/microcomputerlab-ce6400/

https://ee.old.no/library/6400-MC-de.pdf

https://forum.classic-computing.de/...6400-eprom/&postID=408438#post408438

https://norbert.old.no/extra/extra3.html

The differences between the INS 8060 (which is already in MAME) and the 8070 are
Code
SC/MP and INS8060 (SC/MP II)		INS8070(SC/MP III)
No T-Register				Additional T-Register available

The data bus is also used to output	Pure 16bit Address and 8bit Data
the 8 highest address bits and 4	bus. There are no 4 additional
additional flags.			flags on the data bus

No Stack				16bit stack pointer

There are commands to directly set	The S register can only be mani-
and reset the IE and CY/L flags in	pulated via the accumilator or 
the S register				with AND resp. OR commands.

The SIO and DLY commands exist to 	The E-register can be used in 
create a simple serial in-/output on 	conjunction with the accumulator
the SIN and SOUT pins			as the 16bit EA register. The 	
					pins SIN and SOUT don't exist

It's difficult to create subroutines	16 short CALL commands (1 byte),
due to the lack of CALL, JSR and RET	a JSR command (3 bytes) and RET
commands				are present

8bit addition and subtraction only	includes 16bit calculations, inc.
					multiplication and division

INS8070 had 64 Bytes RAM, no ROM
INS8072 had 64 Bytes RAM, 2.5KB ROM
INS8073 had 64 Bytes RAM, 2.5KB ROM with a Tiny BASIC interpreter
INS8074 had 64 Bytes RAM, 4KB ROM
INS8075 had 64 Bytes RAM, 4KB ROM, contains a N²BASIC interpreter

64 Byte RAM are on adresses FFC0h...FFFFh
ROM is from 0000H

The CE6400 uses the INS8070 with an external 4KB EPROM 2732 and 2x2114 for RAM from 1000h to 13FFh.

The ROM and documentation are on the FTP.


NCR DMV- DEC Rainbow- Siemens PCD- ITT 3030-Oly People- Acorn A5000- Olivetti M20
Page 81 of 82 1 2 79 80 81 82

Link Copied to Clipboard
Who's Online Now
5 members (dormml, Revenant, Richard Bannister, 2 invisible), 44 guests, and 7 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,239
Posts120,950
Members5,061
Most Online1,283
Dec 21st, 2022
Our Sponsor
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!

Superior Solitaire
Forum hosted by www.retrogamesformac.com