Jump to content
IGNORED

Compiling a new Atari OS...


reifsnyderb

Recommended Posts

Initial memory test code is in place....

 

618876244_selftestcurrent.thumb.jpg.f19f4f66ffb78448d28f37b43143a548.jpg

 

 

ROM file:

 

testos.rom

 

I used the original Atari code and modified it to display on the new Self Test screen.  I was quite surprised at how many delays Atari had in place.  Once they were removed, the memory test goes much faster.

XE banks need added.  Then I'll look to see how I can display which bit is failing so as to isolate the chip...if DRAM's are used.

 

I'll have to get my hands on some bad DRAM chips for proper testing.  I threw them away as I didn't figure I'd need bad DRAM chips.   lol

 

 

 

Edited by reifsnyderb
  • Like 4
Link to comment
Share on other sites

3 hours ago, ClausB said:

DRAMs leak charge naturally. Maybe the delays are there to test for excess leakage.

Thanks for pointing this out.  I just checked the code and there is one delay between writing to the memory and testing the memory.  That delay would make sense if it's to test for excess leakage.

 

Here's the OS ROM with that delay back in:

 

testos.rom

 

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

XE Bank testing re-added.  I also added a "T" to indicate the memory is being tested to show that something is happening.

 

107029253_selftestcurrent.thumb.jpg.5a0a22af2b227860d15fae9a06bdc51a.jpg

 

testos.rom

 

I think all of the basics have been re-added. 

 

The current advantages of this self test is that with the exception of the ROM testing it is now all located within the self test bank.  This leaves a 385 byte area free in the main OS region.  The other advantages are that the break key is now tested and the OS version is shown.

 

Planned improvements for the self test:

1.  Display BASIC version

2.  Add code to terminate a test.  (Use break key?)

3.  Display base memory

4.  Display the bit that failed during the memory test.  This should allow the chip to be quickly isolated.  (This assumes that enough of the memory works for the self test to work, of course.)

 

The more I think about it, the more it makes sense to me to try to re-add Atari's fast SIO code found in R4, V0, of Atari's 1450XLD fork of the OS.  I think there may be enough space now to do so.

 

This will result in an OS that has all of Atari's bug fixes and improvements as spread out through 10 versions of the XL/XE OS source code without removing anything.  (Note that I am not including a "Resident Help Text Viewer" as an improvement.)

 

 

 

Edited by reifsnyderb
  • Like 12
Link to comment
Share on other sites

5 hours ago, kheller2 said:

Hmmm.. I wonder if it would be possible to toggle stock SIO and something like Hassoft's high speed code....

There should be a way to do this.  From what I've read in the documentation, @HiassofT 's code doesn't use a standard vector.  I'd guess a special version would have to be made.

 

Another option would be to add to Atari's high speed SIO code.

Link to comment
Share on other sites

Version 6.00, Alpha 1

 

Atari's SIO fast mode support (38400 baud) has been patched in.  I don't have any hardware to test this with, though.  Testing on both Altirra and my 600XL appears that nothing broke, anyhow.  If somebody with faster SIO hardware can test and report in, that would be great!

 

testos.rom

  • Like 5
Link to comment
Share on other sites

Source Code

 

OS 6 Alpha 1.zip

 

I do need to do some more source code cleanup.  This source code differs from the compiled Alpha 1 in that the CX85 Numeric Keypad Code has been installed.  Also, the version has been changed to "Alpha 2" but it is not Alpha 2, yet.

Edited by reifsnyderb
  • Like 2
Link to comment
Share on other sites

Version 6.00, Alpha 2 is now out.

 

testos.rom

 

The CX85 Numeric Keypad handler works great.  Just plug the keypad into the 2nd Joystick port and enable the driver with SHIFT-CONTROL-3.

 

I found and fixed a bug with the memory test...and had to re-write the memory test code.  I still need to add code for the entire XE banks to be scanned and not just the one K of each.  That's coming.  Also, the re-write will probably make it easier to display which bit, and chip, failed.

 

If Atari BASIC is installed, it's version is displayed below the OS version.  To save space, I didn't worry about Altirra BASIC as it's version is displayed upon boot-up.  Amusingly, and as expected, if a BASIC R. A cartridge is installed it's version will be displayed too.

 

There was a bug with HATABS that, while probably never encountered, is fixed.  It was noted in the source code comments for some of the Atari versions of the OS.

 

If running on a 1200XL, the function keys will appear in the keyboard test if they are pressed.

 

As always, Fast Math F+ is patched in so as to have the fastest math pack possible.

 

The break key now terminates the memory and sound test.

 

1047718739_selftestcurrent.thumb.jpg.f3550169a1927043788dd81d3b50e973.jpg

 

 

 

Edited by reifsnyderb
  • Like 8
Link to comment
Share on other sites

Hello Brian

 

The fact that the keyboard on the test screen isn't centered has been bugging me for a while.  Since you are testing for stereo, you could put V5-V8 to the right of the keyboard to get the keyboard centered. ;-)

 

Sincerely

 

Mathy

 

  • Like 2
Link to comment
Share on other sites

55 minutes ago, Mathy said:

Hello Brian

 

The fact that the keyboard on the test screen isn't centered has been bugging me for a while.  Since you are testing for stereo, you could put V5-V8 to the right of the keyboard to get the keyboard centered. ;-)

 

Sincerely

 

Mathy

 

Testing for stereo?  lol

 

I decided to put the voice indicators there because there is some extra space.

Link to comment
Share on other sites

Hello Brian

 

17 hours ago, reifsnyderb said:

Testing for stereo?  lol

 

I decided to put the voice indicators there because there is some extra space.

 

I was under the impression that your new OS tests if a second Pokey is present.

 

Sincerely

 

Mathy

 

Link to comment
Share on other sites

47 minutes ago, Mathy said:

Hello Brian

 

 

I was under the impression that your new OS tests if a second Pokey is present.

 

Sincerely

 

Mathy

 

It won't test for much more than what it tested for originally.  By condensing the self test, I was able to remove almost all of the self test code from the non-banked OS region.  (Only the ROM checksum code is still in the non-banked region.)  There isn't enough space to add much to the self test without having to use space in the non-banked OS region.  A small addition to the self-test code is to display the Atari BASIC revision, if installed. 

 

The advantage of this OS is that all of Atari's bug fixes, patches, and useful upgrades, from the 1200XL-1450XLD branch, have been applied without removing anything.  Some improvements have been taken from later XE versions of the OS and some nice usability improvements have been added.  (i.e.  faster key movement and repeat)  Even the Peripheral Handler Loading Facility is still installed and untouched.  (More space could be made available by removing the PHLF, if necessary.  I still believe that since it hasn't ever been used in 40 years, there is a high probability it will never be used.)  While Atari's high speed SIO has been added, it supports 38,400 baud.  As there is still space available (216 bytes), there may be space available to add additional high speed SIO support as well.  The CX85 numeric keypad is now natively supported for any application that takes it's keyboard input from the OS character buffer.

 

I still need to add a little better memory testing to the self test and have the self test keep track of which bit failed so as to try to isolate which chip is bad.

 

Also, I don't know how much space it would take up but I was wondering how much space XEP-80 support would take.

Edit:  I just checked and the driver file is about 1.4k.  So, maybe a 1090XL firmware card would be a better option to extend the OS for an XEP-80 or XEP80-II....

Edited by reifsnyderb
  • Like 4
Link to comment
Share on other sites

28 minutes ago, reifsnyderb said:

So, maybe a 1090XL firmware card would be a better option to extend the OS for an XEP-80 or XEP80-II....

Does this make much sense when you can have the 1090 card be a 80-column card itself (with much faster access to its memory than over the joystick port and) without all the video syncing hassle of the XEP-80?

Link to comment
Share on other sites

22 minutes ago, DjayBee said:

Does this make much sense when you can have the 1090 card be a 80-column card itself (with much faster access to its memory than over the joystick port and) without all the video syncing hassle of the XEP-80?

I built a modernized version of the 1090 80 column card.  It seems to require an older monitor and won't work with a composite input on a modern TV.  Well, at least I ultimately had very little luck with it.  (The little "luck" I did have with it, and where I had a partial signal, was because I mis-wired the video output....go figure.  Once I fixed that problem, there was no output.  From looking at the scope, it appears the TV puts too much of a load on the card.  I tried some other options....but no success.)  It also bothers me the 1090 80 column card is that the 1090 80 column card is black and white only.  So, to use your Atari for everything, you either need 2 monitors or you need to plug and unplug things.  The 1090 80 column card is also quite expensive to make.  If you use all of the original chips, the cost would be crazy.  (I made a "modernized" version with SMT chips and flash memory as it is much cheaper.)  My thought is that if you are already setup for the XEP-80 that placing it's drivers in the firmware would save base memory and could make it easier to use the XEP-80.  Maybe I am wrong?

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

Hello Brian

 

I can see why you'd want to CX-85 driver in the OS, because, what else could/would you input via any type of keyboard extension, but the stuff a numerical keyboard can input.  But "80 columns" can (and already did) come in many variations.  XEP-80 (I and II), VBXE, Austin80, Bit3, etc.  It MIGHT be useful to have something in the OS that can handle 80 columns, all those 80 column devices probably have something in common when it comes to handling text, but I'd leave the device specific (in this case XEP80 specific) stuff out.

 

Sincerely

 

Mathy

 

Edited by Mathy
  • Like 3
Link to comment
Share on other sites

Here's OS Version 6.00, Beta 1     🙂

 

In theory, the memory test now keeps track of which bits failed and displays the individual bits on the bottom, right, row of "P"s just above the keyboard.  Each "P" represents a bit that has passed the test.  Failed bits will display as inverse "F"s.  The lowest row is for the XE banks, if they exist, and the second lowest row is the base memory.  On a 64k machine, since each chip handles a single bit, the failed chip should be able to be isolated by this test.  (i.e.  The second, right-hand, "P" would be for the chip that handles bit 1.  On the 800XL, this would be the 2nd from the top DRAM chip.)  Since I stupidly threw out my failed DRAM chips, I can't test this yet.

 

Also, since I've been learning 6502 assembly, I originally used some self-modifying assembly code to index and copy data using the 16 bit memory addresses.  With the above change, I ran out of space by a single byte.  So, I tried and successfully used zero page indirect y-indexed op codes and was able to remove my self-modifying code.  This resulted in a 40 byte savings.   🙂

 

Here's the new ROM image:

testos.rom

 

Source code:

source.zip

 

Screenshot of the new test screen:

 

beta1.thumb.JPG.64a438660bbd5f6aa7f01a443e31e2b5.JPG

 

Screenshot if Function Keys are tested.  (They will appear automatically.)

 

osbeta1_w_fkeys.thumb.JPG.a062f126593f3453bf3c7e4464cf14e4.JPG

 

 

 

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

5 hours ago, Caterpiggle said:

hello reifsnyderb,

 

I tried to run your lovely self-test ROM on XL or 1200XL OS on Altirra. But it seems failed to boot up. It fall back original self-test mode. Yes, I clicked all the varies of OS types and still failed. 

 

5 hours ago, Caterpiggle said:

Oh ... Okay, I will check it out.

 

Did you get it running as the OS in Altirra?

 

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