When Steem was first written by Russel and Anthony Hayward, performance of contemporary computers was an issue, and some compromises were necessary. Timings were computed in one go (14 cycles at once for instance). For register as well as memory operations, a pointer was used to write the result and update flags. It was smart and fast, but hard to follow. In the source, Steem authors recommended to treat CPU emulation as a black box indeed.
Long (32bit) operations were executed in one go, but the real CPU must use two 16bit bus accesses, which can change the outcome in corner cases.
Prefetching (getting operands from memory) used a fast, simplified way, a bounded pointer.
Today, our computers are more powerful, and we can afford to be more precise, closer to the hardware, within limits. On the other hand, it is possible to improve the performance of some operations.... read more
It wasn't a blitter bug
A blitter bug in Steem SSE was reported some time ago, that caused bad display of some project.
It was disappointing as blitter emulation had been improved in recent versions. However tests showed that the issue was something else. In appearance it had something to do with the "line +20" shifter trick, but it looked odd. I left it alone while working on the new video logic. When that was done, the issue remained. Quite the mystery as the handling of this trick was now totally different!
The real reason can be found in the recovered MCU schematics. It turned out to be not a timing bug nor a blitter bug nor a shifter trick bug, but a missing part of LINEWID emulation. This register contains the number of words to add to the video counter after Display Enable. It is only useful for horizontal scrolling on the STE. When the program directly writes to the video counter registers, the MCU cannot at the same time add the LINEWID offset to this counter, it's one or the other.... read more
In a few weeks, Steem v4 will be released. Time to check the links included in one of the dialog boxes (General Info).
All those seem to be dead unfortunately:
Niclas Pennskog's Atari Page
http://www.pennskog.com/niclas/atari/
Hang Loose
http://www.climatics.com/
Berlin FTP
ftp://ftp.cs.tu-berlin.de/pub/atari/
GokMasE's Atari Page
http://aicq.atari-users.net/
Padua FTP
ftp://ftp.padua.org/pub/atari
ATARItoday
http://www.ataritoday.com/index.htm
ST Encyclopedia
http://encyclopedia.atari.org/
Tim's Atari MIDI World
http://tamw.atari-users.net/
Atari Users Network
http://www.atari-users.net/
The Orphaned Projects Page
http://www.ataricq.org/index.php?option=com_content&view=article&id=186&Itemid=76
The Game Archives
http://thegamearchives.com/?val=0_2_1_0_0_4_25_0_0_0_0
The Gamebase ST Project
http://www.gamebasest.pwp.blueyonder.co.uk/
Persistence of Vision
http://povcd.info/
dev-doc
http://dev-docs.atariforge.org/... read more
Steem 4.0 will feature a new interrupt model.
The real MC68000 checks for interrutps sometime during the instruction, not between instructions as in the previous model (Motorola Application Note 1012). More precisely, it scans the IPL (Interrupt Priority Level) pins every cycle, but it makes the decision to take an interrupt at a point defined by microcodes, once per instruction (Motorola patent US4325121, ijor's FX68K FPGA core).
The new model is based on this. We don't check IPL every cycle, but we emulate the last TVN (trap vector number) latch. Generally, it happens when the second operand of the prefetch queue is being fetched, but there are a few exceptions, notably the one described in AN1012 (MOVEM).
For the record, I first used the patent to place the macros, later checked with FX68K and there were only a few corrections!... read more
Keyboard control of an interface is often neglected, especially in amateur projects. It can be important when you're on a laptop as there's still no good pointer system on those. And in the case of an emulator, it can be handy, because some people use a dedicated system without a mouse.
In Steem, many options could be changed with the keyboard, but there was no way to open the option box or the disk manager with only the keyboard.
In v4, there's a new alternative menu that appears if you press Alt while the emulator is not running. It's a classic menu and it is controllable with the keyboard.... read more
In Steem, profiles were in fact configurations... I didn't even know that when the "SSE" configuration feature was done (the little blue wrench in the tool bar). I somehow thought that profiles were meant for multiple users of a single computer, maybe because of the icon.
It is true that everything internally seemed to be ready for configuration files, just call it another name than steem.ini and it's done...
Unfortunately, not only did I duplicate a feature, I also bugged it. Nobody complained because I think the Profile feature wasn't much used, probably because people, just like me, don't really know what it does - or alternatively, everybody's still using Steem 3.2!
In Steem v4, the bugs I introduced have been fixed, profiles have been renamed "configurations" and the icon changed for clarity, and if you name a config like one of the available ST models, "STF.ini" for example, it will be automatically loaded each time you select the model. This is optional behaviour (Misc. option page). Steem will look into the current config folder (as chosen in the option page).... read more
Yes, it's finally coming!
It took only a few hours, it should have been done before.
I thought it would be more difficult because some variables were used as both data and pointer.
Namely ST addresses coded on 32bit were used to store PC addresses (64 bit now) as well.
Also fixed the destination values after the instruction. Everything was ready but the final step (calling an existing function and assigning those values) was missing, only Steem authors know why (or probably they forgot).
On the way I fixed quite a lot of potential 64bit build problems, signalled by the compiler.
I wouldn't be surprised if people had random bugs with the current 64bit build...... read more
In Steem v4 there is a new option to run emulation in an apart thread. It was rather easy to do because Steem was well programmed - just encapsulate run() in the thread, basically - but you never know, there could be some bugs (it is "thread-safe"?... maybe not), so it's optional (on the Misc. option page). There are no designed locks (mutexes) in any case. The only parts needing attention were the reset exception (because of the longjmp) and the agendas (used in regular disk drive emulation), which had a useless (IMO) critical section.
This apart thread should make Steem more responsive.
Steem gets a tad more system resources for its supplementary thread, but it's for a good reason. One thread is busy with those pesky Windows messages, another thread runs the ST.
This should mean that input (keyboard...) is handled in almost real time, not with more than one frame delay, but maybe I'm dreaming.
Without that option, everything is handled by one single thread like before, messages are handled between frames, and emulation freezes while you use the GUI (with the funny sound loop effect).
Some TOS image files are corrupt. There's a note about it in the manual, especially TOS 1.62 UK has bad versions around.
This gave me an idea: when Steem recognises a TOS based on the checksum, it will display it in green, instead of black. I only added the UK TOS, I know the ones I have work.
For the record, and the checksum is just adding every byte:
case 0xFECDEE: // 1.0 UK
case 0x104157E: // 1.02 UK
case 0x10576E0: // 1.04 UK
case 0x1ED55B5: // 1.06 UK
case 0x1ECC678: // 1.62 UK
The 'requests' and 'support' forums have been deleted, there was no activity. Still think it was a good idea.
If anybody wonders, there have been no Steem release in 2018 and no code upload for a while, but it doesn't mean that the code wasn't updated.
Steem SSE v4.0 should be released this year with few new features but much refactoring. The code will be uploaded in one go, there's so much refactoring going on that partial uploads make little sense. After that effort, the source should be more readable - a downside of the current version, one must admit. Too conservative.... read more
There's a quite annoying problem in Steem SSE when emulating the high resolution (monochrome). In that mode, the emulated ST video runs at 72hz. But most current PC screens refresh at 60hz. In that case, with the D3D9 build (main build), emulation is then slowed down if the frameskip option is set to 'none', as it should be if your PC is fast enough (all are).
There's no slowdown if you can set the refresh rate to something higher (75hz is often available).... read more
It's STeven.
Not that I don't like Mr Seagal anymore, but the name is a bit confusing, and can lead people to disregard Steem SSE as a "serious" emulator (are we doing serious stuff?) It was a forum handle, where the joke could be understood by most, it's less appropriate out of forums.
The program is still Steem SSE, whose name has some internet presence.
Though I'm struggling to find another meaning for SSE! A reason could be a requirement for an SSE-enabled microprocessor (a Pentium 3 will do, it's not exorbitant), but it's far-fetched.... read more
I opened a bug reporting forum section but only one bug was reported until now (a good one fortunately). Hey, maybe they're getting rare!
Here is the list of bugs I found in current release (3.9.4):
D3D: Moving window between monitors while running.
D3D: Window going back to main monitor at each resizing or reset.
Display: Hires black borders missing.
GUI: Crash on renaming a disk image with no extension.... read more
A forum section has been opened for Steem SSE bug reports:
https://sourceforge.net/p/steemsse/forum/bugs/
•This is the only place where Steem SSE bug reports should be posted. It is now useless to post reports at atari-forum.
•This section is strictly for Steem SSE bug reports (no requests, no support).
•Please include all necessary information to make the bug reproducible, such as version, configuration (STF/STE, TOS...), program (link if not widely available). If possible, indicate if it works on a real ST or on another emulator.
•Anonymous posting is possible for the moment (no need to register), but maybe the posts must be approved.... read more
Forget the previous enthusiastic parts 1-3 of "The future of Steem", a release of Steem SSE featuring low level video logic emulation isn't planned anymore, not sure there was a high demand for it anyway.
Steem SSE isn't discontinued. Next release of Steem SSE will be v3.9.5 instead of 4.0. There's no more big improvements planned, it will be more like some bugfixes and minor adaptations. There will be a release when enough features and bugfixes have been put together. ... read more
There is no more "ataristeven" website dedicated to Steem SSE.
Unfortunately some spiteful person could disparage Steem without evidence on the former website host's forum, and ignore my request for clarification. Steem SSE couldn't stay there. The Atari ST scene never disappoints.
HighResMode
It's a spectrum-like effort, but mind that it's in medium resolution. The picture looks shifted to the top because the program runs at 60hz. Maybe in a later build we'll try to centre the picture as it currently is in Steem.
To remove the left border, the program does a high/med resolution switch very close to the timing at which the video logic decides to negate HSYNC. Fortunately, on the STE this timing doesn't vary relative to the CPU's timeline as on the STF, or HSYNC would never stop in some cases, which probably wasn't very good for monitors!... read more
LEGACY
This demo was the cause for some high res video timing adjustments in previous versions of Steem. It's simpler in this build.
Overscan Demos
To get a clean picture in Spectrum 512 mode, we need to emulate the (not so) little delay between pixel shifting and palette lookup. No surprise here. But we also needed to eliminate an old hack in Steem, a negative CPU timing compensating a forward positive one on long writes (32bit). This is because the low level video logic is driven by CPU timings, and can't deal with negative timings (can't go backward).... read more
This may not be the most impressive screenshot ever but it is significant.
It is a proof of concept for the new video logic in Steem. Yes, it can work.
The GLUE, the MMU and the Shifter are emulated at a lower level, based on ijor's findings (at atari-forum) and on recovered schematics (by czietz), to produce the image.
It was deceptively easy to obtain, but to emulate cases more complex than the GEM desktop, the video logic will have to be called very often, and there will be a performance hit. The hope is that this can be somehow compensated by the elimination of higher level overscan tests. This remains to be seen.
Steem SSE 3.9.4 was released on 30/11/2017.
v3.9.4 Features
Dongles: Jeanne d'Arc (French).
A DirectDraw build of the Boiler is now available.
Notice:
Option 'Alt YM2149 emu' (MAME-like PSG emulation) moved to sound page.
Option 'Machine/Wake-up' is now persistent (and the default is STE
demo-friendly as requested).
v3.9.4 Emulation improvements
_______... read more
Steem SSE 3.9.3 has been released on 30/09/2017.
v3.9.3 Features
Record to YM file.
'Advanced Settings' option (D3D). When unchecked, other options
are simplified.
New Option General/Mute sound when inactive.
Notice: 'Macros' option page renamed 'Record Input'.
When running a new version for the first time (based on existing ini if
any), you get dialogs prompting you for a shortcut, home directories, etc.
This is to give you a chance to update the link in the Start Menu, but it's
optional and you may skip the rest too. ... read more
Steem SSE 3.9.2 has been released on 30/06/2017.
v3.9.2 Features
Can copy from the 'readme' texts to the clipboard.
Can use Steem on a second monitor (D3D).
Optional borderless window fullscreen mode for even more compatibility
(D3D).
'Laptop' fullscreen mode renamed 'Max Resolution', now with correct aspect
ratio + optional ST aspect ratio (DD).
Sound: more sampling rates are managed, up to 384Khz.
Higher rates depend on your hardware. They can reduce aliasing in some
cases (Star Trek, Union Demo). ... read more
Steem SSE 3.9.1 has been released on 28/02/2017.
This is mainly a bugfix release, as v3.9.0 wasn't as definitive as one could
hope...
v3.9.1 Features
Save PNG or JPG screenshots without FreeImage.dll (D3D).
Fullscreen: new option to use the desktop refresh rate (D3D).
v3.9.1 Emulation improvements
Delay before bus error triggers.
Blitter:
In blit mode, the blitter can interrupt an operation between read and write.
The CPU can surrender bus control during an instruction.
Steem emulates this, but it's not 100% accurate.... read more
Steem SSE 3.9.0 has been released on 24 December 2016.
v3.9.0 Features
Gamma correction settings.
Steem SSE also includes controls for gamma correction, one slider per RGB
colour.
Comparing with a CRT display, I couldn't confirm that Steem needs gamma
correction, but it's always a handy setting.
Option 'Brightness/Control' has been renamed 'Colour Control'.
Support for the sound playing cartridges MV16 (B.A.T I, B.A.T II, Music
Master) and Replay 16 (Microdeal). Fake STC dumps of these are included in
the download.... read more