Active Threads | Active Posts | Unanswered Today | Since Yesterday | This Week
MAME Jump to new posts
Re: COMELTA Sistema CR jlopezm 12/09/25 01:52 PM
Originally Posted by R. Belmont
The Drac-1 should presumably be a clone system in the main aim65.cpp.
Probably yes, but maybe it is not the best option. The Drac-1 is not a SBC, but an instance of application of Sistema CR of backplane-based computers. It is compatible with the AIM at the same time it is expandable with the CR modules... and other computers built with the very same modules may not be AIM compatible.

At this moment I have updated my source code at github. For some reason, still doesn't like the VIAs.

Thank you in advance!
2 89 Read More
MAME Jump to new posts
Re: COMELTA Sistema CR R. Belmont 12/09/25 12:49 PM
For the jumper, I'd do it as a DIP switch.

There's a working AIM-65 driver (aim65.cpp) and a bare skeleton for the later AIM-65/40 (aim65_40.cpp). The Drac-1 should presumably be a clone system in the main aim65.cpp.
2 89 Read More
MAME Jump to new posts
COMELTA Sistema CR jlopezm 12/09/25 09:56 AM
Hello,

It's been some time since I went here.

I will tell you a bit of history first, then I will ask a few things if you don't mind.

Back in late 70s, the Rockwell corporation made the AIM-65 SBC. And they wanted to enter Spain but had no distribution lines there for their computers, so they relied in a company called COMELTA (Compañía Electrónica de Técnicas Aplicadas). And they distributed the computer. That being said, COMELTA cloned the computer and modularized for industrial use, the product was called "Sistema CR", and as an instance of that ecosystem the fully AIM-65 compatible "Drac-1" was released.

While the Drac-1 had the CR-101 of which I have practically no data, I was able to study a bit the CR-124 and two of their derivatives: the PYCMESA EP-324 and the J.B. Electrónica Industrial JB-176. For some reasons I am making also my own derivative too.

I would like to first emulate my derivative and then emulate the three other related boards. The reason is that I modified the design to add self-diagnostics capabilities to the board, and I have a version of the diagnostics ready but no hardware to test it. At the same time, I can obtain the original cards, but without firmware.

I cannot remember many things that are required of a basic driver to work. For starters, I have a 64KB ROM at 8000h-FFFFh, which contains two pages of 32KB. Page 0 contains the diagnostics, page 1 is left at discretion of the user (in practice is as if they were two different memories of 32KB). The page is switched by means of a jumper. What would be the best way to implement this?

At the card there's also RAM memory from 0000h-03FFh and two VIAs at 04xx and 08xx respectively. Being a backplane-based computer, functionality of a single card is very minimal.

It is a bit embarrassing, but I forgot how to write a skeleton driver...

Thank you in advance
2 89 Read More
MAME Jump to new posts
Re: Install_write_tap in lua Golden Child 12/08/25 02:10 PM
Try adding this line to src/frontend/mame/luaengine.cpp

Code
machine_type["exit_pending"] = sol::property(&running_machine::exit_pending);
// add this line
machine_type["side_effects_disabled"] = sol::property(&running_machine::side_effects_disabled);
machine_type["hard_reset_pending"] = sol::property(&running_machine::hard_reset_pending);


then you can do

if not manager.machine.side_effects_disabled then
...
end
16 4,120 Read More
MAME Jump to new posts
Re: 2025: Bringing your WIP to a gun fight Kale 12/07/25 03:42 PM
Brainchild PLS-1000, an handheld recently dumped by Sean Riddle:

[Linked Image from mamedev.emulab.it]

[Linked Image from mamedev.emulab.it]

[Linked Image from mamedev.emulab.it]

[Linked Image from mamedev.emulab.it]

System looks functional beyond limited in scope by the dumped carts (and a lack of an user manual or any real info on the net whatsoever)
29 18,899 Read More
MAME Jump to new posts
Re: Intellivision progress Golden Child 12/05/25 11:49 PM
Nanochess has written an extended ECS Basic (which looks really cool) and I'm going to try to see if I can get it running.

https://github.com/nanochess/ecsbasic

It wants some additional memory at: $8000-$9fff, not quite sure how to do that.


from basic.cfg on the github:

[mapping]
$0000 - $0FFF = $5000
$1000 - $1FA4 = $6000
$1FA5 - $2A9F = $D000

[memattr]
$8000 - $8FFF = RAM 16
$9000 - $9FFF = RAM 16



There's a bunch of interesting stuff about the cassette format in this forum thread:


https://forums.atariage.com/topic/223343-intellivision-ecs-programs-on-wav-files/
131 163,243 Read More
MAME Jump to new posts
Re: machine_config and emu_options Bletch 12/05/25 08:15 PM
I've created a draft PR that is an attempt to be a minimal attempt to remove the emu_options reference from machine_config. Minimal means that it does not completely fix the problems with software list devices, but this is an attempt to improve things without making things worse.

Take note that because of a number of communications devices (e.g. - m3comm_device) that accessed emu_options in their constructors to identify socket settings. This is a bad pattern that should probably be addressed in a fashion that is not simply lazy loading them.

I'm particularly interested in AJR's opinion
5 322 Read More
MAME Jump to new posts
Re: Intellivision progress Golden Child 12/05/25 11:47 AM
[Linked Image from i.imgur.com]



So I thought, why not try to make a cassette saving routine? It's kind of a manual process, you have to set the play or record mode with some function calls from the console.


play()
rec()
rewind()
clear()

filesave()
fileload()

can give a filename for filesave and fileload
filesave("test.bin")
fileload("test.bin")


Seems to work for my ECS test program.

Code

function hex(x) return string.format("%02x",x) end

function rec()
mode = "rec"
end

writefunc = function(offset,data) 
if data < 32 then io.write(".") else io.write(string.char(data)) end io.write("   ")  
print (hex(offset).."="..hex(data)) 
if offset==0xe1 then out = out..string.char(data) end 
return data end


readfunc = function(offset) 
print("READ "..hex(offset)) 
if offset==0xe1 then pos = pos + 1 
if pos <= #out then return out:byte(pos) else return 0x0 end  
else return 3  
end end

function clear()
out = ""
pos = 1
end

function rewind()
pos = 1
end


function play()
mode = "play"
rewind()
end

function filesave(filename)
filename = filename or "ecssave.txt"
f = io.open(filename,"w") f:write(out) f:close()
end


function fileload(filename)
filename = filename or "ecssave.txt"
f=io.open(filename,"r") out = f:read("*a") f:close()
end


rec()
osdshow = true
out = ""
rewind()

function drawosd()
if osdshow then manager.machine.screens:at(1):draw_text(0,0,mode.." : "..pos.."/"..#out) end 
end

emu.register_frame_done(function() drawosd() end)

readhandle = manager.machine.devices[":maincpu"].spaces["program"]:install_read_tap(0xe0,0xe3,"read_tap",readfunc)
writehandle = manager.machine.devices[":maincpu"].spaces["program"]:install_write_tap(0xe0,0xe3,"write_tap",writefunc)




You can also save multiple programs in one stream of bytes, if you give it a name:


manager.machine.natkeyboard:post([[
100 FOR I = 1 TO 10
110 PRIN I
120 NEXT I
]])


CSAV COUN

CLOD COUN

Now it will scan through until it finds the program called COUN (only 4 characters in the identifier)
(No quotes should be used or they become part of the filename, CSAV "COUNT" becomes CSAV "COU )

Note that when you just do CLOD it will load the next program that it finds, once it loads it will tell you the name on the right side of the screen. That way you can just CLOD the next program in the stream without specifying the name.


It will also pass the CVRF cassette verify check against the current program in memory.
You can save the file with CSAV then immediately run CVRF and it will check it.



You can also use this to save the printer output:

This is a sample, it uses CTRL+M for line breaks.

So first clear the buffer, then set to record mode:

clear()
rec()

then do D=-1 and then CALL OUTP and then LIST

filesave("testing_printer.txt")


less testing_printer.txt
100 FOR I=1 TO 10^M110 PRIN I^M120 NEXT I
testing_printer.txt (END)



I thought about it and just realized that you don't need to make a distinction between rec and play modes, any data written gets tacked onto the end and you can just rewind() to start at the beginning for playback.
131 163,243 Read More
MAME Jump to new posts
Re: Intellivision progress Golden Child 12/04/25 05:30 PM
Just for fun, I wanted to see if I could "play back" the data to load a cassette save by storing the data written to 0xe1 with CSAV, writing to a file, then relaunching mame and running CLOD, replaying it when it reads from 0xe1.

Seems to work, at least with a test program.



lua to save the data:

Code
--save to out
out=""
function hex(x) return string.format("%02x",x) end
writefunc = function(offset,data) if data < 32 then io.write(".") else io.write(string.char(data)) end io.write("   ")  print (hex(offset).."="..hex(data)) if offset==0xe1 then out = out..string.char(data) end return data end
readfunc = function(offset) print("READ "..hex(offset)) return 3 end
readhandle = manager.machine.devices[":maincpu"].spaces["program"]:install_read_tap(0xe0,0xe3,"read_tap",readfunc)
writehandle = manager.machine.devices[":maincpu"].spaces["program"]:install_write_tap(0xe0,0xe3,"write_tap",writefunc)

-- after the CSAV then write the out variable to a file

f = io.open("testout.txt","w") f:write(out) f:close()



lua to read the data:

Code
-- load from out

f=io.open("testout.txt","r") out = f:read("*a") f:close()
pos=1
function hex(x) return string.format("%02x",x) end
writefunc = function(offset,data) if data < 32 then io.write(".") else io.write(string.char(data)) end io.write("   ")  print (hex(offset).."="..hex(data)) return data end
readfunc = function(offset) print("READ "..hex(offset)) if offset==0xe1 then pos = pos + 1 return out:byte(pos) else return 3  end end
readhandle = manager.machine.devices[":maincpu"].spaces["program"]:install_read_tap(0xe0,0xe3,"read_tap",readfunc)
writehandle = manager.machine.devices[":maincpu"].spaces["program"]:install_write_tap(0xe0,0xe3,"write_tap",writefunc)



and a little program to test:

Code
manager.machine.natkeyboard:post([[
100 PRIN "THIS IS A TEST"
110 PRIN "OF THE ECS"
120 PRIN "THE ENTERTAINMENT"
130 PRIN "COMPUTER SYSTEM"
140 PRIN "THIS IS ONLY A TEST"
150 PRIN "HAD THIS BEEN A REAL"
160 PRIN "EMERGENCY YOU WOULD"
170 PRIN "HAVE BEEN INSTRUCTED TO"
180 PRIN "RUN ASTROSMASH"
]])
131 163,243 Read More
MAME Jump to new posts
Re: Intellivision progress Golden Child 12/04/25 01:25 AM
I got interested in the Intellivision ECS and was reading the Intellivision Computer Module Owner's Guide which said that it uses the same printer as the aquarius.


https://forums.atariage.com/topic/323929-aquarius-printer-technical-info-and-reverse-engineering/

https://forums.atariage.com/topic/196015-need-all-information-on-the-ecs-computer-module/



So can we get some data out of it?

A little bit of lua code:

Code
writefuncprt = function(offset,data) 
if offset==0xe1 then 
line = line or ""  line = line..string.char(data) 
if data==0xd then print(line) line = "" 
end end return data end
readfunc = function(offset) return 2 end
writehandle = manager.machine.devices[":maincpu"].spaces["program"]:install_write_tap(0xe0,0xe3,"write_tap",writefuncprt)
readhandle = manager.machine.devices[":maincpu"].spaces["program"]:install_read_tap(0xe0,0xe3,"read_tap",readfunc)
manager.machine.natkeyboard:post("100 PRIN A\nD = -1\nCALL OUTP\nLIST\\n")

[Linked Image from i.imgur.com]


100 PRIN A
100 PRIN A
100 PRIN A
110 GOTO 100
HI
THERE



and if you do CSAV it will send a bunch of data

to see the writing, you might use this writefunc instead:


Code

function hex(x) return string.format("%02x",x) end
writefunc = function(offset,data) if data < 32 then io.write(".") else io.write(string.char(data)) end io.write("   ")  print (hex(offset).."="..hex(data)) return data end
readfunc = function(offset) return 2 end
readhandle = manager.machine.devices[":maincpu"].spaces["program"]:install_read_tap(0xe0,0xe3,"read_tap",readfunc)
writehandle = manager.machine.devices[":maincpu"].spaces["program"]:install_write_tap(0xe0,0xe3,"write_tap",writefunc)
manager.machine.natkeyboard:post("100 PRIN A\nD = -1\nCALL OUTP\nLIST\n")



Code
[MAME]>  running CSAV
[MAME]> .   e2=1d
.   e2=00
9   e2=39
.   e0=1d
�   e1=aa
�   e1=aa
�   e1=aa
�   e1=aa
�   e1=aa
�   e1=aa
�   e1=aa
�   e1=aa
�   e1=aa
.   e1=00
�   e1=e6
�   e1=ff
    e1=20
    e1=20
    e1=20
    e1=20
.   e1=00
.   e1=00
.   e1=00
.   e1=00
.   e1=00
.   e1=00
.   e1=00
.   e1=00
.   e1=00
.   e1=12
A   e1=41
.   e1=0a
G   e1=47
d   e1=64
.   e1=00
.   e1=07
�   e1=a6
.   e1=01
A   e1=41
.   e1=0d
.   e1=00
.   e1=00
.   e2=00

131 163,243 Read More
MAME Jump to new posts
Re: machine_config and emu_options Bletch 12/03/25 06:05 PM
IMHO cases where software lists mutate machine_config objects need to be pulled outside of the software list devices.
5 322 Read More
MAME Jump to new posts
Re: machine_config and emu_options Bletch 12/03/25 05:12 PM
The proximate motivation would be to be able to initialize machine_config with an emu_options * instead of a reference. This would allow -listxml to pass nullptr, so that the resulting Info XML would not be polluted with unwanted <deviceref> entries that pertain to slots.
5 322 Read More
MAME Jump to new posts
Re: machine_config and emu_options AJR 12/03/25 01:39 PM
There seem to be no more than a handful of cases where emu_options is accessed through machine_config, and of those only a few may really need it to exist independently of running_machine. One of the more worrying cases is device_image_interface::software_get_default_slot, which needs the options to look up the software list entry. Also software_list_device::parse needs it to locate the XML list through -hashpath, including during validity checking.
5 322 Read More
MAME Jump to new posts
Re: machine_config and emu_options R. Belmont 12/03/25 12:57 PM
I think that's reasonable at a glance, but I'd run it by Vas before doing any work on it, because that's potentially a lot to do if there is some good reason for it.
5 322 Read More
MAME Jump to new posts
Re: PC98 Kale 12/03/25 11:14 AM
As per this commit is now pretty safe to test the newly added lha201 C-Bus slot as extra storage/OSes of the internal IDE handling.

A quick tutorial/testflight rundown, assuming you already have a bootable MS-DOS for IDE adapter (pc98_hdd:yahdi should work as well):

1. create a new chd, this BIOS shouldn't be bound to 543 MB limit as most internal IDEs does, apparently the limit is -chs 13329,15,63

Code
./chdman createhd -o "<path_to_extra>.chd" -c none -chs 13329,15,63

2. start the emulation with only the lha201 attached, bring TAB menu, disable IDE BIOS and move INT to anything that isn't INT3 and BIOS ROM location to anything that isn't 0xdc000 (those will clash later on).

3. attach the harddisk and install DOS 6.22 on it, as normal. Note that DOS can't recognize partitions bigger than 2047, it's a good idea to make it smaller (can always create a new partition later).

Code
./mame pc9801rs -cbus:1 lha201 -cbus:1:lha201:scsi:0 harddisk -hard1 "<path_to_extra>.chd"

4. now, reenable the IDE BIOS, close and restart emulation with:

Code
./mame pc9801rs -cbus:1 lha201 -cbus:1:lha201:scsi:0 harddisk -hard1 "<path_to_extra>.chd" -hard2 "<path_to_ide>.chd"

5. following are example screenshots of what a successful IPL detection should look. In particular if the device highlight isn't reversed but underscored it means that it's clashing with the configuration also mentioned in point 2.

[Linked Image from mamedev.emulab.it]

[Linked Image from mamedev.emulab.it]

Enjoy the virtually unlimited space wink
166 240,429 Read More
MAME Jump to new posts
machine_config and emu_options Bletch 12/03/25 11:11 AM
Is there any good reason that machine_config has an emu_options reference?

It seems to me that this could go away because the only time it needs one directly is when the machine_config is initialized, and it needs to know what slots need to be specified. Changing machine_config so that the emu_options is only used here seems straight forward, and if it was optional it would fix the problem where -listxml shows a bunch of device_ref for the default configuration.

The bigger problem seems to be the rest of the codebase which seems to expect that emu_options is hitching a ride on the machine_config, but at first glance this seems to be just a question of slogging through it.
5 322 Read More
Who's Online Now
2 members (Kaylee, 1 invisible), 214 guests, and 4 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,405
Posts122,916
Members5,092
Most Online3,327
Nov 10th, 2025
Our Sponsor
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!

Superior Solitaire
Powered by UBB.threads™ PHP Forum Software 8.0.0