Previous Thread
Next Thread
Print Thread
Page 5 of 5 1 2 3 4 5
Re: BBC expansion devices WIP [Re: Pernod] #114746
02/23/19 09:18 PM
02/23/19 09:18 PM
Joined: Apr 2012
Posts: 238
UK
Pernod Online content OP
Senior Member
Pernod  Online Content OP
Senior Member
Joined: Apr 2012
Posts: 238
UK
Decided to tackle something a little more adventurous:
[Linked Image]
It's disassembler only at the moment, around 80% complete.


BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
Re: BBC expansion devices WIP [Re: Pernod] #115145
04/23/19 04:50 PM
04/23/19 04:50 PM
Joined: Apr 2012
Posts: 238
UK
Pernod Online content OP
Senior Member
Pernod  Online Content OP
Senior Member
Joined: Apr 2012
Posts: 238
UK
I'd like to emulate the Acorn Teletext Adaptor, see http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ANE01_TeletextAdapter.html. It receives an analogue TV signal and decodes teletext pages from the transmission using the SAA5020 and SAA5030 devices.

As analogue TV is now obsolete and the teletext services no longer exist I can't use them as a data source. Fortunately Jon Welch has captured some teletext data whilst the service was still available, and can be found at https://www.g7jjf.com/teletext.htm. The BeebEm emulator supports this data by streaming it in a loop so that the software on the BBC can extract requested pages. I believe others have also captured data from old VHS recordings so more data could be available, maybe worth softlisting.

There is also a community teletext service called Teefax that could be used as a source, but prefer to use authentic archive data rather than a modern remake.

As I won't be decoding any analogue video then I don't need to emulate the saa5020 and saa5030 devices, though I will document the fact they are part of the adaptor. Is this an acceptable approach, even though I'll be emulating very little of the actual adaptor?


BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
Re: BBC expansion devices WIP [Re: Pernod] #115149
04/23/19 11:06 PM
04/23/19 11:06 PM
Joined: Mar 2013
Posts: 287
I
ICEknight Offline
Senior Member
ICEknight  Offline
Senior Member
I
Joined: Mar 2013
Posts: 287
Originally Posted by Pernod
I'd like to emulate the Acorn Teletext Adaptor, see http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ANE01_TeletextAdapter.html. It receives an analogue TV signal and decodes teletext pages from the transmission using the SAA5020 and SAA5030 devices.

As analogue TV is now obsolete and the teletext services no longer exist I can't use them as a data source. Fortunately Jon Welch has captured some teletext data whilst the service was still available, and can be found at https://www.g7jjf.com/teletext.htm. The BeebEm emulator supports this data by streaming it in a loop so that the software on the BBC can extract requested pages. I believe others have also captured data from old VHS recordings so more data could be available, maybe worth softlisting.

There is also a community teletext service called Teefax that could be used as a source, but prefer to use authentic archive data rather than a modern remake.

As I won't be decoding any analogue video then I don't need to emulate the saa5020 and saa5030 devices, though I will document the fact they are part of the adaptor. Is this an acceptable approach, even though I'll be emulating very little of the actual adaptor?

I think the Domesday Duplicator guys are open to supporting VHS decoding which, to my knowledge, would allow for the Teletext signal to be reproduced from old recordings. So it might be possible in the future to actually use analogue video as the source.

EDIT: Oh, it looks like some work has already been done on this: https://github.com/happycube/ld-decode/issues/16

Last edited by ICEknight; 04/23/19 11:13 PM.

LCD artwork scans and cleanups: https://mega.nz/#F!uFYSzK7S!U-lJon9jsqyoCX_3y7_KLA
Re: BBC expansion devices WIP [Re: ICEknight] #115171
04/25/19 01:04 PM
04/25/19 01:04 PM
Joined: Apr 2012
Posts: 238
UK
Pernod Online content OP
Senior Member
Pernod  Online Content OP
Senior Member
Joined: Apr 2012
Posts: 238
UK
Originally Posted by ICEknight

I think the Domesday Duplicator guys are open to supporting VHS decoding which, to my knowledge, would allow for the Teletext signal to be reproduced from old recordings. So it might be possible in the future to actually use analogue video as the source.

EDIT: Oh, it looks like some work has already been done on this: https://github.com/happycube/ld-decode/issues/16

I think decoding analogue video is overkill for my purposes at this time, though may be worth revisiting in a few years. It's interesting to see they've recovered teletext data from one of the laserdiscs though.


BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
Re: BBC expansion devices WIP [Re: Pernod] #115212
05/01/19 12:42 PM
05/01/19 12:42 PM
Joined: Apr 2012
Posts: 238
UK
Pernod Online content OP
Senior Member
Pernod  Online Content OP
Senior Member
Joined: Apr 2012
Posts: 238
UK
I've just got the ROMs from a couple of interesting test devices, used by Acorn dealers to test BBC models after repair.
http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_FIT.html
http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_PET.html

The FIT is basically a port tester whilst the PET is used to pinpoint issues when the FIT tests fail. These things go on ebay for over £200 each, they're rare!

As they both need to be plugged into multiple ports they don't fit well into the slot system. The PET even has clips to attach to the 6502 and 6522 in the BBC so has full access to everything, it also overlays it's own ROM and IO where the BBC OS would normally be.

I think the best way to support these would be to define them in their own machines, ie. BBC Model B with FIT, BBC Model B with PET, etc. Any suggestions?


BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
Re: BBC expansion devices WIP [Re: Pernod] #115213
05/01/19 12:54 PM
05/01/19 12:54 PM
Joined: May 2004
Posts: 1,571
H
Haze Offline
Very Senior Member
Haze  Offline
Very Senior Member
H
Joined: May 2004
Posts: 1,571
if that works for now and allows them to be tested I'd go for it, until the day MAME has some kind of 'connect whatever to whatever' GUI anyway ;-)

Re: BBC expansion devices WIP [Re: Pernod] #115249
05/09/19 11:49 AM
05/09/19 11:49 AM
Joined: Apr 2012
Posts: 238
UK
Pernod Online content OP
Senior Member
Pernod  Online Content OP
Senior Member
Joined: Apr 2012
Posts: 238
UK
In the BBC driver I have an array of bbc_romslot_device:
Code
optional_device_array<bbc_romslot_device, 16> m_rom;

But the standard BBC only has 4 slots available:
Code
BBC_ROMSLOT(config, m_rom[0x0c], bbc_rom_devices, nullptr); /* ic101 */
BBC_ROMSLOT(config, m_rom[0x0d], bbc_rom_devices, nullptr); /* ic100 */
BBC_ROMSLOT(config, m_rom[0x0e], bbc_rom_devices, nullptr); /* ic88 */
BBC_ROMSLOT(config, m_rom[0x0f], bbc_rom_devices, nullptr); /* ic52 */

Internal expansion boards can be added to provide the additional sockets, along with other RAM related improvements. So I'm adding an internal expansion slot and in the internal slot device I want to be able to:
Code
BBC_ROMSLOT(config, m_rom[0x00], bbc_rom_devices, nullptr);
BBC_ROMSLOT(config, m_rom[0x01], bbc_rom_devices, nullptr);
BBC_ROMSLOT(config, m_rom[0x02], bbc_rom_devices, nullptr);
BBC_ROMSLOT(config, m_rom[0x03], bbc_rom_devices, nullptr);
BBC_RAMBANK(config, m_rom[0x04], bbc_rom_devices, "ram");
BBC_RAMBANK(config, m_rom[0x05], bbc_rom_devices, "ram");
BBC_RAMBANK(config, m_rom[0x06], bbc_rom_devices, "ram");
BBC_RAMBANK(config, m_rom[0x07], bbc_rom_devices, "ram");
BBC_ROMSLOT(config, m_rom[0x08], bbc_rom_devices, nullptr);
BBC_ROMSLOT(config, m_rom[0x09], bbc_rom_devices, nullptr);
BBC_ROMSLOT(config, m_rom[0x0a], bbc_rom_devices, nullptr);
BBC_ROMSLOT(config, m_rom[0x0b], bbc_rom_devices, nullptr);

I want the internal slot device to define the additional bbc_romslot_device in the drivers m_rom array.

In my bbc_internal_slot_device I thought I could use a template to pass the m_rom from the driver to the device:
Code
template <typename T> void set_romslots(T && tag, int slots) { for (int i = 0; i < slots; i++) m_rom[i].set_tag(std::forward<T>(tag)[i]); }

Code
/* internal expansion boards */
BBC_INTERNAL_SLOT(config, m_internal, bbc_internal_devices, nullptr);
m_internal->set_romslots(m_rom, 16);

I think this is in the right direction but probably needs more.

The driver needs to be aware of the romslots on the expansion board and don't want to have to check two sets of arrays:
Code
if (m_rom[m_romsel])
	data = m_rom[m_romsel]->read(offset);
else if (m_internal->rom[m_romsel])
	data = m_internal->rom(m_romsel).read(offset);

Additionally, the expansion board can re-assign the romslots defined in the driver. So where the driver defines romslots 12-15 the board will re-assign these slots to 0-3 and maybe redefine 12-15 as RAM banks rather than ROM slots. So I also need to be able to remove a driver device from the slot device:
Code
config.device_remove("romslot12");
config.device_remove("romslot13");
config.device_remove("romslot14");
config.device_remove("romslot15");


So overall, how can a slot device directly access a device defined in the driver?


BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
Re: BBC expansion devices WIP [Re: Pernod] #115250
05/09/19 11:59 AM
05/09/19 11:59 AM
Joined: Mar 2001
Posts: 16,231
USA
R
R. Belmont Online content
Very Senior Member
R. Belmont  Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,231
USA
Originally Posted by Pernod
So overall, how can a slot device directly access a device defined in the driver?


In general you pass a reference to the device to the slot device, the way some of the buses do with the CPU.

Re: BBC expansion devices WIP [Re: Pernod] #115401
06/07/19 01:16 PM
06/07/19 01:16 PM
Joined: Apr 2012
Posts: 238
UK
Pernod Online content OP
Senior Member
Pernod  Online Content OP
Senior Member
Joined: Apr 2012
Posts: 238
UK
I've been looking at the EuroBEEB/EuroCUBE-65:
[Linked Image]
It's usually provided with a 4 slot rack (cube) where you can add video and IO boards.

It's nothing complicated but I have 5 different versions of the MOS. Each MOS can be generated using software AutoMOS (which I have) where you select which additional boards you want supported in the MOS. The boards supported are TELETEXT/CU-GRAPH for video output, CU-KEY-99/CU-KEY-53/CU-KEY for keyboards/keypad. If the MOS doesn't contain drivers for these boards then it can be driven via a serial port.

The EuroCUBE running with a serial terminal attached:
[Linked Image]

I could support all MOS configurations with the BIOS option, but then the user would have to know exactly how the CUBE should be configured for each MOS version.

Here's the EuroBEEB with a TELETEXT card and a serial keyboard:
[Linked Image]
It says Bad Program as this MOS was configured to Autorun a BASIC program contained in ROM which is MIA.

I currently have machines eucube65 and eurobeeb defined, but am considering adding each MOS version as a clone so that I can pre-configure the machines card slots with the expected cards and serial device.

Additionally, I also need to make the EuroBEEB a serial device itself so that it can be connected to the BBC Micro RS423 port instead of using a generic serial keyboard/terminal.

Unfortunately I don't have the monitor ROM for the 6809 unit.

Last edited by Pernod; 06/07/19 01:18 PM.

BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
Re: BBC expansion devices WIP [Re: R. Belmont] #115461
06/26/19 04:38 PM
06/26/19 04:38 PM
Joined: Apr 2012
Posts: 238
UK
Pernod Online content OP
Senior Member
Pernod  Online Content OP
Senior Member
Joined: Apr 2012
Posts: 238
UK
Originally Posted by R. Belmont
Originally Posted by Pernod
So overall, how can a slot device directly access a device defined in the driver?


In general you pass a reference to the device to the slot device, the way some of the buses do with the CPU.

That was what I was implying with set_romslots in my post above. I need to use this reference in device_add_mconfig though, and don't think this is possible, is it?

If I end up using an array of bbc_romslot_device in the machine and the slot device then it will get overly complicated as the machine should see them as a single array, so would need to always check whether the slot device implements a particular bbc_romslot_device before falling back on the machine bbc_romslot_device. This would also confuse users as the order of slots would be incorrect, ie. from commandline -rom1 would refer to slot12 and -rom5 would be slot0.

In more familiar terms, say you have a machine with:
Code
RS232_PORT(config, m_rs232, default_rs232_devices, "keyboard");

and in a slot device I want to change the default rs232_device with:
Code
m_rs232->set_default_option("terminal");

This is exactly the type of change I'm trying to do with my bbc_romslot_device.

Maybe a better alternative is to move the 4 default romslots to the slot device, so that all bbc_romslot_device config is handled in the slot device without having to manipulate anything that may have been configured in the machine. I did this for the default 8271 in my bbc_fdc_slot_device so should be easy to implement.


BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
Page 5 of 5 1 2 3 4 5

Who's Online Now
4 registered members (Stick, R. Belmont, Praxis, mfm005), 137 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Shout Box
Forum Statistics
Forums9
Topics8,664
Posts113,575
Members4,848
Most Online324
Dec 20th, 2018
Powered by UBB.threads™ PHP Forum Software 7.6.1.1
(Release build 20180111)
Page Time: 0.038s Queries: 15 (0.014s) Memory: 5.7340 MB (Peak: 5.9589 MB) Zlib enabled. Server Time: 2019-07-15 18:00:51 UTC