Jump to content
IGNORED

Saved an Aquarius from a hipster


orion1052003

Recommended Posts

2 minutes ago, jaybird3rd said:

"SN Error" is a syntax error.  When I got errors of this kind after loading a program from tape, it was usually because a flaw in the tape resulted in a garbled or scrambled program instruction.  If the tape loads and runs properly with the 32K RAM module, the program might somehow be getting scrambled after it has been loaded into RAM.

 

Line number 2 is pretty early in the program, so perhaps when data is loaded into one of the RAM chips higher up in the memory map, something in the cartridge is somehow causing previously-loaded data in one of the lower RAM chips to be damaged.  That might also explain why the module also appears to be passing the diagnostic test: as I recall, that particular test is linear, testing each RAM chip in isolation.

So, what you’re saying is that the 16K memory is actually functional, it’s just that the cassette is messing up a certain part of the ram and as a result actually needs more than 16K? In that case, would that mean it is damaging the 32K ram cart or is it just requiring more RAM? Or did I just completely misunderstand what you said?

Link to comment
Share on other sites

I don't think it's the cassette specifically that's doing it.  Here's how the 16K module works: there are eight RAM chips of 2KB each inside the module, but the module makes it appear to the Aquarius as if they are a single 16K "window" of memory.  This is made possible by a few other chips in the module which perform two main jobs: address decoding, and chip selection.

 

When the Aquarius refers to a specific memory location within that 16K "window," whether it wants to read data from it or write data into it, the address decoder specifies which one of the eight RAM chips corresponds to that particular location.  Only one RAM chip must be active at a time, so the chip select logic sends the necessary signals to enable that particular RAM chip, and to disable all the others.  When the Aquarius moves on to another location, the process is repeated: the corresponding chip is enabled, and all the others are disabled.  In effect, the module is "swapping in" RAM chips as needed, turning them on and off super-rapidly to make it appear as if they are all available to the Aquarius, all the time.  This process is completely invisible to the Aquarius; it all happens automatically inside the module.

 

If any part of the module were to fail, it could cause the data in memory to become corrupted in unpredictable ways.  For example, in the process of loading a program from tape, the Aquarius might fill up the first four RAM chips in the module, one at a time.  Suppose that the chip select logic were to fail in such a way that causes RAM chips #1 and #3 to be momentarily enabled at the same time.  In that case, the new data being saved into chip #3 might also partially overwrite the data that had been previously saved into chip #1, causing the corresponding part of the program to appear "garbled" when you attempt to run it.  This is unlikely, but it is possible, even if the individual RAM chips are working perfectly.

 

Hopefully this makes sense!  In any case, I don't think you have to worry about the RAM modules being damaged through normal use; that wouldn't happen unless there were some sort of electrical problem with the Aquarius itself.

Link to comment
Share on other sites

7 hours ago, jaybird3rd said:

I don't think it's the cassette specifically that's doing it.  Here's how the 16K module works: there are eight RAM chips of 2KB each inside the module, but the module makes it appear to the Aquarius as if they are a single 16K "window" of memory.  This is made possible by a few other chips in the module which perform two main jobs: address decoding, and chip selection.

 

When the Aquarius refers to a specific memory location within that 16K "window," whether it wants to read data from it or write data into it, the address decoder specifies which one of the eight RAM chips corresponds to that particular location.  Only one RAM chip must be active at a time, so the chip select logic sends the necessary signals to enable that particular RAM chip, and to disable all the others.  When the Aquarius moves on to another location, the process is repeated: the corresponding chip is enabled, and all the others are disabled.  In effect, the module is "swapping in" RAM chips as needed, turning them on and off super-rapidly to make it appear as if they are all available to the Aquarius, all the time.  This process is completely invisible to the Aquarius; it all happens automatically inside the module.

 

If any part of the module were to fail, it could cause the data in memory to become corrupted in unpredictable ways.  For example, in the process of loading a program from tape, the Aquarius might fill up the first four RAM chips in the module, one at a time.  Suppose that the chip select logic were to fail in such a way that causes RAM chips #1 and #3 to be momentarily enabled at the same time.  In that case, the new data being saved into chip #3 might also partially overwrite the data that had been previously saved into chip #1, causing the corresponding part of the program to appear "garbled" when you attempt to run it.  This is unlikely, but it is possible, even if the individual RAM chips are working perfectly.

 

Hopefully this makes sense!  In any case, I don't think you have to worry about the RAM modules being damaged through normal use; that wouldn't happen unless there were some sort of electrical problem with the Aquarius itself.

Ohhhh. Ok, that makes a lot more sense, thanks. Was a little confused before.

Link to comment
Share on other sites

On 2/11/2020 at 6:38 AM, jaybird3rd said:

I think Aquarius BASIC is pretty respectable as far as 1980s BASIC interpreters go.  It's still orders of magnitude slower than assembly language, of course, but it's considerably faster than TI BASIC (and as someone who first learned programming on my beloved TI 99/4A, I should know).

I looked up the Rugg/Feldman benchmarks which once were printed in Kilobaud 1977, later picked up by Personal Computer World which added an eighth benchmark with those new-fangled mathematics and trigonometry operators LOG and SIN. First I tried to enter the benchmarks in the Virtual Aquarius emulator, but I failed to find a way to type in the equals sign so I had to switch over to MAME emulation.

 

I combined some of the data from the Wikipedia article with my own data obtained through the years, and added the emulated Aquarius to the list. I used hand timing so the tenths of a second are not correct but it gives a rough estimate. For being a 3.5 MHz Z80 with Microsoft BASIC, it performs quite well. Best comparison would be the SVI-328 with what I think is Microsoft Extended BASIC. Perhaps the MAME emulator is not running at a reliable speed? Otherwise it would be a rather speedy computer, however with severe limitations on the graphics side.

             BM1   BM2   BM3   BM4   BM5   BM6   BM7   BM8  Avg
---------------------------------------------------------------
BBC Model B  0.6   3.2   8.1   8.8   9.9  14.3  21.9   48  14.3
Apple II     1.3   3.1   7.2   7.2   8.8  18.5  28.0            (Integer BASIC)
IBM PC       1.5   5.2  12.1  12.6  13.6  23.5  37.4   35  17.6
Aquarius     1.0   5.5  12.0  12.0  13.5  21.0  31.0   60  19.5
Acorn Atom   0.5   5.1   9.5  10.8  13.9  19.1  31.1   92  22.8
SWTPC 6800   1.4   9.0  16.8  18.1  20.0  31.0  45.2  53.7 24.4 (SWT 8K BASIC)
VIC-20       1.4   8.3  15.5  17.1  18.3  27.2  42.7   99  28.7
Apple II     1.3   8.5  16.0  17.8  19.1  28.6  44.8  107  30.4 (Applesoft *)
Dragon 32    1.6  10.2  19.7  21.6  23.3  34.3  50.0  129  36.2
Oric Atmos   1.6  15.2  25.4  27.4  33.0  45.6  68.5  136  44.1
SVI-328      1.6   5.4  17.9  19.6  20.6  30.7  42.2  236  46.7
ZX81 "fast"  4.5   6.9  16.4  15.8  18.6  49.7  68.5  229  51.2
Microtan65   1.9  12.8  24.7  27.8  29.6  43.2  68.9  243  56.5
ZX Spectrum  4.8   8.7  21.1  20.4  24.0  55.3  80.7  253  58.5
Oric-1       1.8  17.1  29.0  31.4  38.0  51.8  77.8  230  59.6
Atari 600XL  2.2   7.2  19.1  22.8  25.8  37.6  58.3  412  73.1
TI-99/4A     2.9   8.8  22.8  24.5  26.1  61.6  84.4  382  76.6

(*) The Wikipedia data says Applesoft runs BM8 on 55.5 seconds, but my source says 107 seconds.
Edited by carlsson
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Yeah, except for the LOG/SIN stuff it is just about as fast as a 4.77 MHz IBM PC with ROM BASIC (*). We have an Aquarius in the computer club, I might redo the benchmark on it some time to see if MAME is that accurate. Somehow I would assume the contemporary magazine reviews would have mentioned something about the BASIC too or perhaps they rarely ran any benchmarks to get a feel for that.

 

In the long run one would want even more complex benchmarks, there is also the one by David H. Ahl published in Creative Computing. It has been discussed and used a couple times elsewhere here on AtariAge, and it might be useful to run that one as well since it is a rather well established BASIC benchmark from the old days.

 

(*) It might be the only time in history where IBM and Mattel could be compared on equal terms.

Edited by carlsson
Link to comment
Share on other sites

Mame's goal is accuracy first, but confirmation on real hardware is always good.  My understanding is that, for example, the TI-99/4a uses slow to access graphics ram for it's basic interpreter killing it's performance, plus it's double interpreted going through a GPL interpreter.  The Aquarius is a simple straightforward computer it should perform similarly to the zx spectrum, the difference should be the interpreter itself.  I guess Bill Gates is not a bad programmer after all. 

Edited by mr_me
Link to comment
Share on other sites

6 hours ago, carlsson said:

I looked up the Rugg/Feldman benchmarks which once were printed in Kilobaud 1977, later picked up by Personal Computer World which added an eighth benchmark with those new-fangled mathematics and trigonometry operators LOG and SIN. First I tried to enter the benchmarks in the Virtual Aquarius emulator, but I failed to find a way to type in the equals sign so I had to switch over to MAME emulation.

 

I combined some of the data from the Wikipedia article with my own data obtained through the years, and added the emulated Aquarius to the list. I used hand timing so the tenths of a second are not correct but it gives a rough estimate. For being a 3.5 MHz Z80 with Microsoft BASIC, it performs quite well. Best comparison would be the SVI-328 with what I think is Microsoft Extended BASIC. Perhaps the MAME emulator is not running at a reliable speed? Otherwise it would be a rather speedy computer, however with severe limitations on the graphics side.


             BM1   BM2   BM3   BM4   BM5   BM6   BM7   BM8  Avg
---------------------------------------------------------------
BBC Model B  0.6   3.2   8.1   8.8   9.9  14.3  21.9   48  14.3
Apple II     1.3   3.1   7.2   7.2   8.8  18.5  28.0            (Integer BASIC)
IBM PC       1.5   5.2  12.1  12.6  13.6  23.5  37.4   35  17.6
Aquarius     1.0   5.5  12.0  12.0  13.5  21.0  31.0   60  19.5
Acorn Atom   0.5   5.1   9.5  10.8  13.9  19.1  31.1   92  22.8
SWTPC 6800   1.4   9.0  16.8  18.1  20.0  31.0  45.2  53.7 24.4 (SWT 8K BASIC)
VIC-20       1.4   8.3  15.5  17.1  18.3  27.2  42.7   99  28.7
Apple II     1.3   8.5  16.0  17.8  19.1  28.6  44.8  107  30.4 (Applesoft *)
Dragon 32    1.6  10.2  19.7  21.6  23.3  34.3  50.0  129  36.2
Oric Atmos   1.6  15.2  25.4  27.4  33.0  45.6  68.5  136  44.1
SVI-328      1.6   5.4  17.9  19.6  20.6  30.7  42.2  236  46.7
ZX81 "fast"  4.5   6.9  16.4  15.8  18.6  49.7  68.5  229  51.2
Microtan65   1.9  12.8  24.7  27.8  29.6  43.2  68.9  243  56.5
ZX Spectrum  4.8   8.7  21.1  20.4  24.0  55.3  80.7  253  58.5
Oric-1       1.8  17.1  29.0  31.4  38.0  51.8  77.8  230  59.6
Atari 600XL  2.2   7.2  19.1  22.8  25.8  37.6  58.3  412  73.1
TI-99/4A     2.9   8.8  22.8  24.5  26.1  61.6  84.4  382  76.6

(*) The Wikipedia data says Applesoft runs BM8 on 55.5 seconds, but my source says 107 seconds.

Slightly off-topic: I wonder how the ECS and Keyboard Component BASIC performance would stack up...

Link to comment
Share on other sites

6 hours ago, carlsson said:

Yeah, except for the LOG/SIN stuff it is just about as fast as a 4.77 MHz IBM PC with ROM BASIC (*). We have an Aquarius in the computer club, I might redo the benchmark on it some time to see if MAME is that accurate. Somehow I would assume the contemporary magazine reviews would have mentioned something about the BASIC too or perhaps they rarely ran any benchmarks to get a feel for that.

 

In the long run one would want even more complex benchmarks, there is also the one by David H. Ahl published in Creative Computing. It has been discussed and used a couple times elsewhere here on AtariAge, and it might be useful to run that one as well since it is a rather well established BASIC benchmark from the old days.

 

(*) It might be the only time in history where IBM and Mattel could be compared on equal terms.

This one, you mean? The Aquarius is still reasonably fast in comparison to other computers, but scores poor on the accuracy.

CreativeComputingBenchmark-Jan84.pdf

  • Like 1
Link to comment
Share on other sites

2 hours ago, Lathe26 said:

Slightly off-topic: I wonder how the ECS and Keyboard Component BASIC performance would stack up...

Remember this.

https://atariage.com/forums/topic/272846-intellivision-keyboard-component-pics/?do=findComment&comment=3987407

 

Keyboard Component clocked the David Ahl test at 1:38 a little slower than the Aquarius at 1:17.

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

intvnut made his own simple benchmark before and ran it on ECS BASIC and found that it is almost 30 times slower than Applesoft BASIC or even 15 times slower than the TI-99/4A. Even the slow BASIC on the VTech Creativision, which runs through the VDP just like the TI does, was almost 5 times faster than ECS and the same goes for the Comx 35 which is infamous for a very slow BASIC. Neither of those are mentioned in the summary of the David H. Ahl benchmark, nor in the other benchmark linked to.

 

But even without running any benchmarks, we can assume that the Aquarius BASIC probably is some 20-30 times faster than the ECS BASIC, but roughly on par with the KCS BASIC. Much probably is due to the 20 Hz duty cycle in EXEC, plus other implementation details of the ECS BASIC that in hindsight were not stellar.

 

 

 

Edited by carlsson
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...