Jump to content
twh/f2

dump my Atari OS ROM

Recommended Posts

Hey *,

 

how can I dump the Atari ROM ? I understand that the 16k ROM is mapped into the memory this way:

 

$0000 - $0FFF $C000 - $CFFF Interrupt handlers, misc routines

$1000 - $17FF $5000 - $57FF Self Test code (enabled by PORTB)

$1800 - $1FFF $D800 - $DFFF Floating Point routines

$2000 - $3FFF $E000 - $FFFF Operating System

 

I thought that it would be fairly easy to do, but I was not able to dump the ROM of my Atari 130 XE and to use the ROM data eventually in the emulator. I must do something wrong.

 

I used the tool "copy-os" .. http://mixinc.net/atari/copyos12.htm#top

 

however, the file created by this tool does not work with Atari800Win. any ideas? is it also possible to "binary save" the rom using dos or spartados?

 

and btw, it's not the dos2.5 header. I removed the 4 leading bytes FF FF 00 00 ...

 

grtx,

\twh

COPYOS.zip

Share this post


Link to post
Share on other sites

Binary files have an initial header of 6 bytes (FF,FF, segment start L/H, segment end L/H)

 

The order you've specified is right. You could just do it with a quick BASIC program:

 

10 OPEN #1,8,0,"H:OSIMG.ROM"
20 POKE 54017,125
30 A=12*4096:L=4095:GOSUB 500
40 A=5*4096:L=2047:GOSUB 500
50 A=13*4096+2048:L=8192+2047:GOSUB 500
60 CLOSE #1:POKE 54017,253:END
500 FOR D=A TO A+L:PUT #1,PEEK(D):NEXT D
510 RETURN

Edited by Rybags
  • Thanks 1

Share this post


Link to post
Share on other sites

There is a very fast & easy to use machine language program that comes with REALDOS that will do that..

Ask Steve carden about it..

Share this post


Link to post
Share on other sites

rybags,

 

you are great! the basic program is a bit slow though, but the result works perfectly! thx!!

 

grtx,

\twh

 

Binary files have an initial header of 6 bytes (FF,FF, segment start L/H, segment end L/H)

 

The order you've specified is right. You could just do it with a quick BASIC program:

 

10 OPEN #1,8,0,"H:OSIMG.ROM"
20 POKE 54017,125
30 A=12*4096:L=4095:GOSUB 500
40 A=5*4096:L=2047:GOSUB 500
50 A=13*4096+2048:L=8192+2047:GOSUB 500
60 CLOSE #1:POKE 54017,253:END
500 FOR D=A TO A+L:PUT #1,PEEK(D):NEXT D
510 RETURN

Share this post


Link to post
Share on other sites

Anyone ever compare the output of the CopyOS program and the one-byte-at-a-time Basic program? I'm curious because you have to explicitly clear Bit 7 of PORTB to see the Self Test routines, and parts of the OS are banked out (on XL/XE machines) during disk I/O. I suppose the OS is being banked out and back in between each byte the Basic program is writing. But CopyOS should produce the same output (perhaps minus the binary header).

Share this post


Link to post
Share on other sites

The OS isn't typically banked out during IO. Maybe you're thinking of a PBI BIOS, which maps itself in place of the FP ROM ($D800-$DFFF) every time the external device is selected.

Share this post


Link to post
Share on other sites

It's buffered IO so any Rom config change wouldn't make a difference anyway.

 

It is possible though to run into problems if Dos tries to do burst mode output and the target area is Rom, though that's an unrelated thing.

Share this post


Link to post
Share on other sites

I'm guessing the addresses are slightly different on my Rev.1 600XL (Swedish)? I just ran through this and the emulator crashed when I tried the resulting file. Can anyone point a very rusty scandinavian in the right direction? Google hasn't been very helpful on the subject...

 

 

Binary files have an initial header of 6 bytes (FF,FF, segment start L/H, segment end L/H)

The order you've specified is right. You could just do it with a quick BASIC program:

10 OPEN #1,8,0,"H:OSIMG.ROM"
20 POKE 54017,125
30 A=12*4096:L=4095:GOSUB 500
40 A=5*4096:L=2047:GOSUB 500
50 A=13*4096+2048:L=8192+2047:GOSUB 500
60 CLOSE #1:POKE 54017,253:END
500 FOR D=A TO A+L:PUT #1,PEEK(D):NEXT D
510 RETURN

Share this post


Link to post
Share on other sites

For emulation the OS you provide should be a raw image without binary headers. I don't think any form of .Rom file headers are supported either.

 

As such the file size should be an exact multiple of 1024. 10K for 800 OS, 16K for XL, 32K for XEGS.

XL OS I believe the order should be $C000 area (4K) followed by Self-Test (2K) followed by $D800 (10K).

Share this post


Link to post
Share on other sites

Is it possible to do this via an EPROM writer such as the TL866?

Yes, as long as your EPROM writer supports the pinout of the EPROM you're trying to read. XL and XE lines tended to us 27 series EPROMs for the ROMs (with the exception of BASIC), but 400/800 used two 2532's and a 2516 for the FP ROM, which many modern EPROM writers won't work with unless they have an adapter.

  • Like 1

Share this post


Link to post
Share on other sites

Yes, as long as your EPROM writer supports the pinout of the EPROM you're trying to read. XL and XE lines tended to us 27 series EPROMs for the ROMs (with the exception of BASIC), but 400/800 used two 2532's and a 2516 for the FP ROM, which many modern EPROM writers won't work with unless they have an adapter.

 

Specifying the IC type of 'STM27128A' I get a binary file with the MD5 hash "06DAAC977823773A3EEA3422FD26A703". I believe this is valid for the early 130XE and late 800XL.

 

Also, although not directly relevant to this thread could you tell me what type of EPROM I should identify the BASIC ROM as?

Share this post


Link to post
Share on other sites

 

Specifying the IC type of 'STM27128A' I get a binary file with the MD5 hash "06DAAC977823773A3EEA3422FD26A703". I believe this is valid for the early 130XE and late 800XL.

 

Also, although not directly relevant to this thread could you tell me what type of EPROM I should identify the BASIC ROM as?

I'm not so sure if the BASIC ROM was always like this, but on all the XL/XE I've seen, it's been a 2564 pinout, and it's doubtful again, that any modern EPROM programmer supports this pinout. With an adapter, however, you would probably have no issue reading it as if it were a 2764, just a matter of adapting pinout mostly.

  • Like 1

Share this post


Link to post
Share on other sites

 

Specifying the IC type of 'STM27128A' I get a binary file with the MD5 hash "06DAAC977823773A3EEA3422FD26A703". I believe this is valid for the early 130XE and late 800XL.

 

Also, although not directly relevant to this thread could you tell me what type of EPROM I should identify the BASIC ROM as?

There is no point of reading an Atari BASIC ROM, the BIN files are readily available at several sites including Atarimania.

http://www.atarimania.com/utility-atari-400-800-xl-xe-basic_s11533.html

 

The Atari BASIC ROM is a 2364, pin compatible with a 2564 EPROM, most modern EPROM programmers don't do 25XX series EPROMs.

 

Some Atari PCBs have paired configuration jumpers which allow changing between 2564/2764 configuration. On these models it\s possible to replace the BASIC ROM with a 2764 by changing the 2 jumpers.

 

Without the jumpers using a 2764 is possible using a socket adapter: http://atariage.com/forums/topic/110394-basic-rom-replacement-eproms/

Share this post


Link to post
Share on other sites

A 68764 or 68766 EPROM will also work. Expensive and hard to find. You need an older programmer for these as well. But, if you happen to find a lot of them cheap somewhere, they're a good buy.

 

I burned one for an Atari BASIC cart to put Rev. C on it.

Share this post


Link to post
Share on other sites

For emulation the OS you provide should be a raw image without binary headers. I don't think any form of .Rom file headers are supported either.

 

As such the file size should be an exact multiple of 1024. 10K for 800 OS, 16K for XL, 32K for XEGS.

XL OS I believe the order should be $C000 area (4K) followed by Self-Test (2K) followed by $D800 (10K).

 

 

Thanks for that quick response! Well, this is kind of weird now. The addresses you specify are the ones used in the basic routine, provided the self test is at $5000. The resulting file is exactly the right size and comparing it in a hex viewer with a working OS shows only minor differences, which I guess you would expect from the localised version. The first two bytes of the file were different so I'm going to edit them to be the same as the other one. My only issue now is that Atari800MacX hangs when I try the OS file and now won't let me open preferences to change it. ;(

Share this post


Link to post
Share on other sites

Well, that was interesting. I tried the Frankenstein tool and the same thing happens, completely hangs the emulator. Also, a brief check in a hex viewer would suggest that the file is identical to what Rybags's BASIC snippet generated. Suggestions as to what to try next are much appreciated...

Share this post


Link to post
Share on other sites

Your emulator does not like the use the 600xl rom. So throw the 600xl rom away and use an 800xl rom. Probably the REV2 rom is closest to 600xl rom.

Share this post


Link to post
Share on other sites

Did anyone ever compare the output of CopyOS to the other methods mentioned in this thread? I'm really curious about the results. There shouldn't be any difference besides a binary header.

Share this post


Link to post
Share on other sites

Your emulator does not like the use the 600xl rom. So throw the 600xl rom away and use an 800xl rom. Probably the REV2 rom is closest to 600xl rom.

 

 

Thanks for the tip rdea6, but the whole point of the exercise was to get a swedish rom going. I have an American rev2 working rom, so I thought perhaps more people were interested in another rom, as a curiosity if nothing else...

  • Like 1

Share this post


Link to post
Share on other sites

Check out this dumpos file it will probably be the same. But if you are just trying to get this Swedish rom going you should download it here to AtariAge Forums and I will run it through a CRC program and see if it is different or the same as a standard 600XL rom.

 

http://www.horus.com/~hias/atari/#hipatch

Edited by rdea6
  • Like 2

Share this post


Link to post
Share on other sites

Check out this dumpos file it will probably be the same. But if you are just trying to get this Swedish rom going you should download it here to AtariAge Forums and I will run it through a CRC program and see if it is different or the same as a standard 600XL rom.

 

http://www.horus.com/~hias/atari/#hipatch

 

 

Was that link correct? I didn't find any roms there?

I have uploaded my rom here.

 

Feel free to take a look. It does not have the same checksum as any other Atari rom I've tested, but surely that was to be expected? It is a translated version after all...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...