Jump to content
IGNORED

Compiling a new Atari OS...


reifsnyderb

Recommended Posts

No you are cold starting the computer in the beginning of your video, you are not warm starting the computer, which is the reset key on the real machine...

it's not until the very end that you warm started and were running everything including OSS BASIC XE that you did the ROM to RAM copy.

The fresh disk helped but I am not certain at this point because the comparisons mean little when each test session is done differently

Edited by _The Doctor__
Link to comment
Share on other sites

2 minutes ago, reifsnyderb said:

Looking at the thread, am I correct in assuming there is no problem?

Can't speak for @_The Doctor__ but on my end the self test screen is corrupted when using a rom to ram handler w/ DOS 2.5.

Not a big deal by any stretch cause I'm assuming most won't bother with a R to R handler. 

 

Link to comment
Share on other sites

16 minutes ago, Ricky Spanish said:

Can't speak for @_The Doctor__ but on my end the self test screen is corrupted when using a rom to ram handler w/ DOS 2.5.

Not a big deal by any stretch cause I'm assuming most won't bother with a R to R handler. 

 

I just tested it in OS R 2 and Altirra.  If I am in BASIC, hit reset, then type "BYE" it locks up.  A ROM to RAM handler can do strange things.  I've found that out with the firmware board and OS 6.01 dev.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

When going from ROM to RAM, protection for warm start reset and other vectors need to be protected so that the system jumps to the ram OS on reset and when self test etc launch they don't twiddle the old OS back on or use formerly free hidden under the OS ram area that is now occupied by the RAM OS

 

I see you verified what I pointed out about stock OS moved to RAM and the self test

Edited by _The Doctor__
Link to comment
Share on other sites

11 minutes ago, reifsnyderb said:

I just tested it in OS R 2 and Altirra.  If I am in BASIC, hit reset, then type "BYE" it locks up.  A ROM to RAM handler can do strange things.  I've found that out with the firmware board and OS 6.01 dev.

I don't have a 600/800XL O/S to test with but this is what it looks like with r2r plus 6.0 O/S

Again.. Not a big deal. 

 

 

20230425_205322_HDR.jpg

Edited by Ricky Spanish
Link to comment
Share on other sites

9 minutes ago, Ricky Spanish said:

I don't have a 600/800XL O/S to test with but this is what it looks like with r2r plus 6.0 O/S

Again.. Not a big deal. 

 

 

20230425_205322_HDR.jpg

I am unable to reproduce that.  Ram to ROM + OS 6.00 just locks up when going into self test.  I just checked the source code and it should be only changing bit 7. 

 

There is the possibility that this is related to screen memory and I am pretty sure the screen memory region isn't cleared before use when going into self test.  I'll put a note in the to-do list to clear the screen memory for the self test prior to use.  Maybe that will clear it up.

Edited by reifsnyderb
  • Thanks 1
Link to comment
Share on other sites

On 4/20/2023 at 11:27 PM, manterola said:

If I remember correctly, you can also just subtract 0x20 to checksum at the end, and then the ROM file should be valid and ready to use with the reverse Option for Basic.

 

Actually, the change needs to be done at the beginning of the ROM.

In this case in particular, to implement the reverse BASIC Option button, the position $04b7 needs to be changed from $f0 to $d0 ($20 difference). But then to make it pass the ROM check we also can subtract $20 to the word (first two bytes Lo/Hi order). So have to change the first two bytes from 1A 64 to FA 63.

 

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...
5 hours ago, w1k said:

any news?

I spent a lot of time getting the OS to run off of the 1090XL firmware board.  There needs to be a couple changes made to the firmware board to get it to work better.  I was able to hack the board to get this to work, ordered new boards with the changes, and have the board to assemble. 

 

There are 2 ways to run the OS off of the firmware board.

 

1.  Copy the ROM to RAM:  This works but requires a lot of changes.  For example, the OS uses write tests to determine where the top of RAM is.  If the OS is in RAM, the top of RAM is within the OS region and, therefore, overwritten.  So, a hard limit needed to be put in place to prevent this.  In the end, I was able to get the OS to run in RAM.  Obviously, this won't work with any software that changes PORTB, bit 0.  The changes necessary to make this happen also took up a lot of the available space.  Because of these reasons, I didn't pursue this avenue any further.  So, it was an interesting learning experience at best.

 

2.  Run the ROM straight off of the 1090 firmware board.  This worked the best and required the fewest OS changes.  Once again, any software that makes changes to PORTB, bit 0, will botch this up.

 

So it is clearly possible to upgrade the OS from a 1090XL.  However, software compatibility is a major issue.

 

Then I started looking even more into adding high speed SIO support to the OS.  I think it's possible to do so by re-using or modifying existing code and not use up too much space.  Unfortunately, even with the available documentation, there is a lot of R&D involved in getting this to work.

 

I was able to make even more space by moving some additional self-test code to the self-test bank.  So, I don't think space is a big issue.

 

 

  • Like 4
Link to comment
Share on other sites

Paging @HiassofT

 

I was playing around with the High Speed SIO patch, on OS R 6, and while running MULE found out that one of the voices still plays when loading the game from the setup screen.  So, I took Atari's OS R 2 and found out that it does the same thing.  So, for example, with a Happy 1050 emulated one of the last tones played is playing for around 18 seconds while the game loads.  Is there a simple fix for this?

 

Thanks!

 

Brian

 

Link to comment
Share on other sites

@reifsnyderb

ah so then that leaves you with setting up the emulator to the exact timing modes / full emulation settings along with whatever roms etc.

what sound are you hearing, the SIO beep or some music from pokey?

high speed and burst modes can sound like staccato blasts and higher pitched longer tones. 18 seconds is a long time of continuous tone...

Edited by _The Doctor__
Link to comment
Share on other sites

Just now, _The Doctor__ said:

ah so then that leaves you with setting up the emulator to the exact timing modes / full emulation settings along with whatever roms etc.

what sound are you hearing, the SIO beep or some music from pokey?

It's POKEY music.  The last tone playing as I hit the start button.

Link to comment
Share on other sites

1 minute ago, _The Doctor__ said:

That is quite strange, something is definitely amiss.

It's definitely not the SIO loading staccato beeping noise.  When loading MULE, you have to wait until the melody is playing on the setup screen.  Then press start.  The last note, of the melody, will be sounding continuously and the loading staccato beeping noise is also heard at the same time.  That last melody note will play until the game starts.

Link to comment
Share on other sites

The highspeed SIO code only touches pokey channels 2 and 3, channels 0 and 1 aren't used/needed by the SIO code so are left intact.

 

So if the porgram running didn't disable sound on channel 0/1 before calling SIO it will continue playing. I'd like to call that an issue of the program then (it shouldn't assume SIO will mute channels 0/1).

 

Very likely you'd have similar issues with PBI devices which don't use POKEY for SIO at all so won't clear any channels (but still accessing sectors on a HDD could take some time so you'd hear the channels playing as well for a while).

 

so long,

 

Hias

Edited by HiassofT
Link to comment
Share on other sites

27 minutes ago, HiassofT said:

The highspeed SIO code only touches pokey channels 2 and 3, channels 0 and 1 aren't used/needed by the SIO code so are left intact.

 

So if the porgram running didn't disable sound on channel 0/1 before calling SIO it will continue playing. I'd like to call that an issue of the program then (it shouldn't assume SIO will mute channels 0/1).

 

Very likely you'd have similar issues with PBI devices which don't use POKEY for SIO at all so won't clear any channels (but still accessing sectors on a HDD could take some time so you'd hear the channels playing as well for a while).

 

so long,

 

Hias

That all makes perfect sense.  Thanks for the info as that has to be what is happening.  It's odd, however, that MULE doesn't do the same thing without the patch, but computers can be odd.  🙂  Is there enough space to make it a feature request for the next version of the patch to turn off channels 0/1 just to be sure?

 

Thanks!

 

Brian

 

Link to comment
Share on other sites

It's kind of a weird thing, because you can silence SIO beeps, and some games/demos play music or animations during loading... depends if they are set up to do so, I am not sure how HSIO deals with any of it... does it leave everything as it was or does it change some things. Would changing any of HSIO break anything, I know on some HSIO loaders etc, the choice is HSIO on or HSIO off as a user choice. That choice allows you to load non HSIO friendly software.

Edited by _The Doctor__
  • Like 1
Link to comment
Share on other sites

2 hours ago, HiassofT said:

The highspeed SIO code only touches pokey channels 2 and 3, channels 0 and 1 aren't used/needed by the SIO code so are left intact.

 

So if the porgram running didn't disable sound on channel 0/1 before calling SIO it will continue playing. I'd like to call that an issue of the program then (it shouldn't assume SIO will mute channels 0/1).

 

Very likely you'd have similar issues with PBI devices which don't use POKEY for SIO at all so won't clear any channels (but still accessing sectors on a HDD could take some time so you'd hear the channels playing as well for a while).

 

so long,

 

Hias

I just confirmed that the same problem occurs on a patched OS, on real hardware, when no fast SIO hardware is present.

Link to comment
Share on other sites

Ok.  There is no longer any POKEY tones still playing if the High Speed SIO patch is applied to the OS.  I fixed it with the following:

 

;    SPACE    4,10
;**    SIO - Serial Input/Output
;*
;*    ENTRY    JSR    SIO
;*
;*     NOTE
;*        $E971 is entry point for High Speed SIO Patch.
;*
;*    MODS
;*        Original Author Unknown
;*        1. Bring closer to Coding Standard (object unchanged).
;*           R. K. Nordin    11/01/83
;*        2. Set SIO to $E96E so as to silence all POKEY music prior to SIO call.  Actual beginning of
;*            SIO is still at $E971 so as to ensure compatibility with High Speed SIO Patch.
;*          Brian E. Reifsnyder   5/24/2023

FIX $E96E
SIO    =    *    ;entry
    JSR    SAS        ; Silence POKEY.

FIX $E971

;    Initialize.

    TSX
    STX    STACKP    ;save stack pointer
    LDA    #1    ;critical section indicator
    STA    CRITIC    ;indicate critical section

  • Like 4
Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...