mirror of
https://github.com/TomHarte/CLK.git
synced 2024-12-23 20:29:42 +00:00
Introduces EmuTOS, and starts constructing test cases around it.
This commit is contained in:
parent
a4f6db6719
commit
89c71f9119
@ -661,6 +661,7 @@
|
||||
4BFE7B881FC39D8900160B38 /* StandardOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BFE7B851FC39BF100160B38 /* StandardOptions.cpp */; };
|
||||
4BFF1D3922337B0300838EA1 /* 68000Storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BFF1D3822337B0300838EA1 /* 68000Storage.cpp */; };
|
||||
4BFF1D3A22337B0300838EA1 /* 68000Storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BFF1D3822337B0300838EA1 /* 68000Storage.cpp */; };
|
||||
4BFF1D3D2235C3C100838EA1 /* EmuTOSTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BFF1D3C2235C3C100838EA1 /* EmuTOSTests.mm */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@ -1462,6 +1463,7 @@
|
||||
4BFF1D37223379D500838EA1 /* 68000Storage.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 68000Storage.hpp; sourceTree = "<group>"; };
|
||||
4BFF1D3822337B0300838EA1 /* 68000Storage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 68000Storage.cpp; sourceTree = "<group>"; };
|
||||
4BFF1D3B2235714900838EA1 /* 68000Implementation.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = 68000Implementation.hpp; sourceTree = "<group>"; };
|
||||
4BFF1D3C2235C3C100838EA1 /* EmuTOSTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = EmuTOSTests.mm; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@ -2822,6 +2824,7 @@
|
||||
children = (
|
||||
4B924E981E74D22700B76AF1 /* AtariStaticAnalyserTests.mm */,
|
||||
4BB2A9AE1E13367E001A5C23 /* CRCTests.mm */,
|
||||
4BFF1D3C2235C3C100838EA1 /* EmuTOSTests.mm */,
|
||||
4BA91E1C216D85BA00F79557 /* MasterSystemVDPTests.mm */,
|
||||
4B98A0601FFADCDE00ADF63B /* MSXStaticAnalyserTests.mm */,
|
||||
4B121F9A1E06293F00BFDA12 /* PCMSegmentEventSourceTests.mm */,
|
||||
@ -4003,6 +4006,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4BFF1D3D2235C3C100838EA1 /* EmuTOSTests.mm in Sources */,
|
||||
4B1E85811D176468001EF87D /* 6532Tests.swift in Sources */,
|
||||
4BDDBA991EF3451200347E61 /* Z80MachineCycleTests.swift in Sources */,
|
||||
4B98A05F1FFAD62400ADF63B /* CSROMFetcher.mm in Sources */,
|
||||
|
76
OSBindings/Mac/Clock SignalTests/EmuTOSTests.mm
Normal file
76
OSBindings/Mac/Clock SignalTests/EmuTOSTests.mm
Normal file
@ -0,0 +1,76 @@
|
||||
//
|
||||
// EmuTOSTests.m
|
||||
// Clock SignalTests
|
||||
//
|
||||
// Created by Thomas Harte on 10/03/2019.
|
||||
// Copyright © 2019 Thomas Harte. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#include <cassert>
|
||||
#include "68000.hpp"
|
||||
#include "CSROMFetcher.hpp"
|
||||
|
||||
class EmuTOS: public CPU::MC68000::BusHandler {
|
||||
public:
|
||||
EmuTOS(const std::vector<uint8_t> &emuTOS) : m68000_(*this) {
|
||||
assert(!(emuTOS.size() & 1));
|
||||
emuTOS_.resize(emuTOS.size() / 2);
|
||||
|
||||
for(size_t c = 0; c < emuTOS_.size(); ++c) {
|
||||
emuTOS_[c] = (emuTOS[c << 1] << 8) | emuTOS[(c << 1) + 1];
|
||||
}
|
||||
}
|
||||
|
||||
void run_for(HalfCycles cycles) {
|
||||
m68000_.run_for(cycles);
|
||||
}
|
||||
|
||||
HalfCycles perform_bus_operation(const CPU::MC68000::Microcycle &cycle, int is_supervisor) {
|
||||
switch(cycle.operation & (CPU::MC68000::Microcycle::LowerData | CPU::MC68000::Microcycle::UpperData)) {
|
||||
case 0: break;
|
||||
case CPU::MC68000::Microcycle::LowerData:
|
||||
cycle.value->halves.low = emuTOS_[*cycle.address >> 1] >> 8;
|
||||
break;
|
||||
case CPU::MC68000::Microcycle::UpperData:
|
||||
cycle.value->halves.high = emuTOS_[*cycle.address >> 1] & 0xff;
|
||||
break;
|
||||
case CPU::MC68000::Microcycle::UpperData | CPU::MC68000::Microcycle::LowerData:
|
||||
cycle.value->full = emuTOS_[*cycle.address >> 1];
|
||||
break;
|
||||
}
|
||||
|
||||
return HalfCycles(0);
|
||||
}
|
||||
|
||||
private:
|
||||
CPU::MC68000::Processor<EmuTOS, true> m68000_;
|
||||
|
||||
std::vector<uint16_t> emuTOS_;
|
||||
};
|
||||
|
||||
@interface EmuTOSTests : XCTestCase
|
||||
@end
|
||||
|
||||
@implementation EmuTOSTests {
|
||||
std::unique_ptr<EmuTOS> _machine;
|
||||
}
|
||||
|
||||
- (void)setUp {
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
const auto roms = CSROMFetcher()("AtariST", {"etos192uk.img"});
|
||||
_machine.reset(new EmuTOS(*roms[0]));
|
||||
}
|
||||
|
||||
- (void)tearDown {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
- (void)testExample {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
_machine->run_for(HalfCycles(400));
|
||||
}
|
||||
|
||||
@end
|
@ -95,7 +95,9 @@ class ProcessorBase: public ProcessorStorage {
|
||||
|
||||
template <class T, bool dtack_is_implicit> class Processor: public ProcessorBase {
|
||||
public:
|
||||
void run_for(const Cycles cycles);
|
||||
Processor(T &bus_handler) : ProcessorBase(), bus_handler_(bus_handler) {}
|
||||
|
||||
void run_for(HalfCycles duration);
|
||||
|
||||
private:
|
||||
T &bus_handler_;
|
||||
|
@ -6,7 +6,7 @@
|
||||
// Copyright © 2019 Thomas Harte. All rights reserved.
|
||||
//
|
||||
|
||||
template <class T, bool dtack_is_implicit> void Processor<T, dtack_is_implicit>::run_for(Cycles cycles) {
|
||||
template <class T, bool dtack_is_implicit> void Processor<T, dtack_is_implicit>::run_for(HalfCycles duration) {
|
||||
// TODO: obey the 'cycles' count.
|
||||
while(true) {
|
||||
// Check whether the program is exhausted.
|
||||
@ -44,5 +44,8 @@ template <class T, bool dtack_is_implicit> void Processor<T, dtack_is_implicit>:
|
||||
prefetch_queue_[0] = prefetch_queue_[1];
|
||||
break;
|
||||
}
|
||||
|
||||
// Move to the next program step.
|
||||
++active_program_;
|
||||
}
|
||||
}
|
||||
|
174
ROMImages/AtariST/doc/announce.txt
Normal file
174
ROMImages/AtariST/doc/announce.txt
Normal file
@ -0,0 +1,174 @@
|
||||
Dear Atari Community!
|
||||
|
||||
|
||||
We are happy to announce a new public release of EmuTOS:
|
||||
|
||||
EmuTOS 0.9.10 -- December 23, 2018
|
||||
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
EmuTOS is a single-user single-tasking operating system for 32-bit Atari
|
||||
computers, clones and emulators. It can be used as a replacement for the
|
||||
TOS images typically needed by emulators and can also run on some real
|
||||
hardware, including the Atari ST(e), TT, and Falcon, and the FireBee. It
|
||||
can even run on non-Atari hardware such as Amiga and ColdFire Evaluation
|
||||
Boards. All the source code is open and free, licensed under the GNU
|
||||
General Public License (GPL).
|
||||
|
||||
|
||||
|
||||
CHANGES SINCE RELEASE 0.9.4
|
||||
|
||||
For a quick summary of changes by release since release 0.9.4, please
|
||||
refer to doc/changelog.txt.
|
||||
|
||||
For a detailed list of all changes since the project started, refer to
|
||||
the Git repository.
|
||||
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
EmuTOS is basically made up of the following:
|
||||
|
||||
- The BIOS, which is the basic input output system
|
||||
- The XBIOS, which provides the interface to the hardware
|
||||
- The BDOS, which are the high level OS routines, often known as GEMDOS
|
||||
- The VDI, the virtual device interface, i.e. the screen driver
|
||||
- The AES, the application environment services or window manager
|
||||
- The EmuDesk desktop, which is the graphical shell to the user
|
||||
- EmuCON2, the command-line interpreter
|
||||
|
||||
The BIOS and XBIOS code is our own development. It is written from
|
||||
scratch and implements all relevant TOS 3 BIOS & XBIOS functionality,
|
||||
and a bit more, e.g. hard disk access. See doc/status.txt for details.
|
||||
|
||||
The GEMDOS part is based on Digital Research's GEMDOS sources, which were
|
||||
made available under GPL license in 1999 by Caldera.
|
||||
|
||||
The graphical parts like VDI and AES are now more or less fully
|
||||
implemented up to TOS v1.04 level. They work in all the graphics modes
|
||||
of the original Atari ST, with some extensions. For example, systems with
|
||||
VIDEL support 256 colours and 640x480 screen resolution. Some emulators
|
||||
can patch EmuTOS to work with much bigger screen resolutions.
|
||||
|
||||
The desktop is now almost as nice as the one in TOS 2 or higher (although
|
||||
there is still work to be done). Of course you are always free to use a
|
||||
more advanced desktop replacement like TeraDesk.
|
||||
|
||||
EmuCON2 is a basic but useful command-line interpreter, written from scratch
|
||||
by Roger Burrows in 2013 to replace the original CLI.
|
||||
|
||||
Since EmuTOS just implements TOS functionality, you might want to use
|
||||
MiNT on top of it in order to run more modern software. EmuTOS is not
|
||||
an alternative to MiNT, but it's the only free base OS to boot MiNT.
|
||||
|
||||
|
||||
|
||||
EMULATION AND FUTURE PLATFORMS
|
||||
|
||||
EmuTOS and MiNT cooperate well. Both can utilize the Native Features
|
||||
(NatFeats) interface for emulators:
|
||||
https://github.com/aranym/aranym/wiki/natfeats-about
|
||||
|
||||
EmuTOS uses this new standard interface for all the relevant native
|
||||
functions supported by an emulator on which it's running. This interface
|
||||
proxies the calls to the underlying host OS so that these features don't
|
||||
need to be emulated. This is both faster and can provide features that
|
||||
would be infeasible on a real machine. It may allow using modern graphics
|
||||
cards, provide fast native filesystem access and enable you to use
|
||||
networking with all bells and whistles - and many other things you might
|
||||
not have even dreamed of.
|
||||
|
||||
The ARAnyM emulator has the most extensive support for NatFeats.
|
||||
The Hatari emulator supports the basic NatFeats facilities.
|
||||
|
||||
|
||||
|
||||
HARDWARE
|
||||
|
||||
Making EmuTOS run natively on a new hardware platform is more or less just
|
||||
a question of driver support for EmuTOS. The same for MiNT, if you'd like
|
||||
to have it running on top of EmuTOS.
|
||||
|
||||
This is the currently supported original Atari hardware:
|
||||
- CPU support for M68000, M68030
|
||||
- FPU detection
|
||||
- 68030 MMU and cache
|
||||
- Memory controller (both ST and Falcon)
|
||||
- TT-RAM
|
||||
- Monitor type detection (mono, RGB or VGA)
|
||||
- DMA controller
|
||||
- WD 1772 / AJAX Floppy disk controller
|
||||
- MFP, MFP #2
|
||||
- PSG
|
||||
- ST shifter
|
||||
- STe shifter
|
||||
- TT shifter
|
||||
- VIDEL
|
||||
- ACIAs, IKBD protocol, mouse
|
||||
- MegaST Real-Time Clock (set clock not tested)
|
||||
- NVRAM (including RTC)
|
||||
- Blitter
|
||||
- Microwire
|
||||
- SCC
|
||||
- IDE
|
||||
- SCSI
|
||||
- ACSI
|
||||
|
||||
EmuTOS also supports the following Atari-compatible hardware:
|
||||
- CPU support for M68010, M68020, M68040, M68060, ColdFire V4e, and Apollo 68080
|
||||
- ICD AdSCSI Plus ST Real-Time Clock
|
||||
- MonSTer expansion card
|
||||
- Nova/ET4000 graphics card
|
||||
- SD/MMC
|
||||
- The Native Features interface to some degree
|
||||
|
||||
Currently unsupported hardware features:
|
||||
- DSP
|
||||
|
||||
EmuTOS is also available on some non-Atari hardware:
|
||||
- Amiga (floppy or ROM for any Amiga, including MapROM support)
|
||||
- ColdFire Evaluation Boards (M5484LITE, M5485EVB)
|
||||
|
||||
|
||||
|
||||
AVAILABILITY
|
||||
|
||||
The EmuTOS home page is:
|
||||
|
||||
http://emutos.sourceforge.net/
|
||||
|
||||
The project home is on SourceForge:
|
||||
|
||||
http://sourceforge.net/projects/emutos/
|
||||
|
||||
The latest releases can be downloaded from:
|
||||
|
||||
http://sourceforge.net/projects/emutos/files/emutos/
|
||||
|
||||
Development snapshots allow you to test the current development progress:
|
||||
|
||||
http://sourceforge.net/projects/emutos/files/snapshots/
|
||||
|
||||
The latest sources are always available on GitHub:
|
||||
|
||||
https://github.com/emutos/emutos
|
||||
|
||||
If you are just curious or would like to help us develop this nice little
|
||||
OS, you are invited to subscribe to our mailing list for developers at:
|
||||
|
||||
https://lists.sourceforge.net/lists/listinfo/emutos-devel
|
||||
|
||||
|
||||
We hope that you like EmuTOS. If you have any suggestions or comments, we
|
||||
always appreciate hearing both the good and the bad things about it.
|
||||
|
||||
|
||||
The EmuTOS development team.
|
||||
|
||||
--
|
||||
Originally written by Martin Doering
|
||||
http://emutos.sourceforge.net/
|
254
ROMImages/AtariST/doc/authors.txt
Normal file
254
ROMImages/AtariST/doc/authors.txt
Normal file
@ -0,0 +1,254 @@
|
||||
EmuTOS source code consists of several parts, and includes code taken from
|
||||
other projects - Many thanks to them and to their authors for releasing the
|
||||
code under GPL.
|
||||
|
||||
The 'historical' authors - those who wrote the code before the start of the
|
||||
EmuTOS project - are mentioned in the individual files they've authored.
|
||||
Major 'historical' parts are:
|
||||
- BDOS, VDI - both come from the latest known GEMDOS version from
|
||||
Digital Research (later versions seem to have been developed by Atari).
|
||||
- AES, desktop - The C source code for GEM comes from the x86 version.
|
||||
- Some GEM assembler files come from the AES for the Apple LISA.
|
||||
|
||||
All these historical parts were released under the General Public License
|
||||
by Caldera, Inc. in mid april 2000 (?) (For the record, Caldera bought it
|
||||
from Novell in 1997 along with DR-DOS; later Caldera disappeared and this
|
||||
is the copyright notice that refers to Lineo)
|
||||
|
||||
Minor borrowed stuff:
|
||||
- the printf and memcpy stuff is inspired by the Minix kernel and library;
|
||||
- the processor/FPU detection is taken from the MiNT kernel;
|
||||
- "Bug" includes parts of the original gettext source code;
|
||||
- some low-level hardware stuff comes from the Linux kernel;
|
||||
|
||||
While the main Amiga support was written from scratch by the EmuTOS team,
|
||||
some advanced code (FastRAM support for ROM versions) has been borrowed from the
|
||||
AROS project. Due to license incompatibilities, that code is shipped in the
|
||||
source archive, but not compiled into the official binaries.
|
||||
|
||||
The following is a list of 'recent' contributors - individuals involved in the
|
||||
EmuTOS project. In this project virtually everybody modifies every file;
|
||||
nevertheless here is an attempt at identifying who's guilty of what:
|
||||
|
||||
Roger Burrows (RFB) <rfburrows at ymail.com>
|
||||
- Current project admin
|
||||
- Support for SD/MMC Cards on the FireBee
|
||||
- SCSI support
|
||||
- Improvements to IDE, CompactFlash, ACSI, and other mass-storage support
|
||||
- FAT16 partitions up to 2 GB (inspired by Didier Méquignon's BDOS fork)
|
||||
- Full support for Falcon video hardware
|
||||
- Real Falcon 030 support (cache, MMU, SCC, HD floppy)
|
||||
- Real TT 030 support (video, MFP2)
|
||||
- Blitter support for horizontal lines/filled rectangles/raster graphics
|
||||
- Desktop and file selector improvements
|
||||
- EmuCON2
|
||||
- Tools: erd (EmuTOS Resource Decompiler) & draft (deletes items from desktop resource)
|
||||
- Various bugfixes and cleanups
|
||||
|
||||
Vincent Rivière (VRI) <vincent.riviere at freesbee.fr>
|
||||
- Many improvements to the build and configuration process
|
||||
- Moved project from CVS to Git, and from SourceForge to GitHub
|
||||
- Implemented automatic builds via Travis CI
|
||||
- Patches for compiling with GCC 4.x
|
||||
- ColdFire CPU and FireBee support
|
||||
- Initial IDE driver
|
||||
- Big improvements to FastRAM/Alt-RAM handling
|
||||
- Amiga support
|
||||
- ColdFire Evaluation Boards support
|
||||
- Apollo 68080 support
|
||||
- Various bug fixes and cleanups
|
||||
|
||||
Thomas Huth (THH) <huth at tuxfamily.org>
|
||||
- Lots of bugfixes & cleanups all over the place
|
||||
- Integration and maintenance of the AES and GEM-Desktop
|
||||
- XBIOS DMA sound functions
|
||||
|
||||
Petr Stehlik (PES) <pstehlik at sophics.cz>
|
||||
- BIOS disk interface, BDOS filesystem
|
||||
- Falcon and ARAnyM support
|
||||
|
||||
Laurent Vogel (LVL) <lvl at club-internet.fr>
|
||||
- Original ST hardware (MFP, ACIA, parport, sound, floppy, ACSI)
|
||||
- Makefile tricks and tools
|
||||
- NLS support
|
||||
|
||||
Martin Doering (MAD) <mdoering at users.sourceforge.net>
|
||||
- Original project initiator (but retired many years ago)
|
||||
- Memory setup, VT52 console, Line A, mouse
|
||||
- Virtually everything not modified later by the others
|
||||
|
||||
|
||||
Thanks to all current and previous translators, who have helped us keep
|
||||
EmuTOS multi-lingual:
|
||||
|
||||
- Czech translation
|
||||
Bohdan Milar <milarb at volny.cz>
|
||||
Petr Stehlik <pstehlik at sophics.cz>
|
||||
Pavel Salač <salac.pavel at gmail.com>
|
||||
Jan Krupka <krupkaj at centrum.cz>
|
||||
|
||||
- Finnish translation
|
||||
Eero Tamminen
|
||||
|
||||
- French translation
|
||||
Laurent Vogel
|
||||
Vincent Rivière
|
||||
|
||||
- German translation
|
||||
Thomas Huth
|
||||
|
||||
- Greek translation
|
||||
George Nakos
|
||||
Christos Tziotzis <ctziotzis at gmail.com>
|
||||
|
||||
- Italian translation
|
||||
Lodovico Zanier <lvc958 at libero.it>
|
||||
|
||||
- Spanish translation
|
||||
Gabriel Huertas
|
||||
David Gálvez <dgalvez75 at gmail.com>
|
||||
Jordi Mestres Ruiz <ataristfan at gmail.com>
|
||||
|
||||
- Russian translation
|
||||
Dima Sobolev <avtandil33 at gmail.com>
|
||||
|
||||
|
||||
Thanks also to all mailing list contributors for their help, and
|
||||
especially:
|
||||
|
||||
Stanislav Opichal (SOP) <opichals at seznam.cz>
|
||||
- FreeMiNT kernel bootstrap via BOOTSTRAP NatFeat
|
||||
|
||||
Frank Naumann
|
||||
- FreeMiNT
|
||||
|
||||
Ctirad Fertr <phanatic at volny.cz>,
|
||||
Milan Jurik <M.Jurik at sh.cvut.cz>
|
||||
- The ARanyM team
|
||||
|
||||
Johan Klockars <rand at cd.chalmers.se>
|
||||
- fVDI
|
||||
|
||||
Henk Robbers <h.robbers at chello.nl>
|
||||
- XaAES, AHCC
|
||||
|
||||
Jacques-Etienne Rahon "Kevin Flynn" <kevin.flynn at wanadoo.fr>
|
||||
- Extensive demo testing on STeeM
|
||||
|
||||
Patrice Mandin and Markus Oberhumer
|
||||
- Hints and patches for compiling EmuTOS with GCC 3.x
|
||||
|
||||
Eero Tamminen
|
||||
- Many bug reports, extensive testing, testcases supply
|
||||
- Many documentation updates
|
||||
- Finnish keyboard mapping
|
||||
- Hatari debug symbols
|
||||
- Static source analysis and cleanup
|
||||
- Line-A implementation
|
||||
|
||||
Gerhard Stoll
|
||||
- Improved our nvmaccess() function
|
||||
- TOS hypertext
|
||||
|
||||
Roger Crettol
|
||||
- Found and fixed a bug in GEMDOS Pterm() function
|
||||
- Support for swiss german keyboard
|
||||
- Some EmuCON improvements
|
||||
|
||||
David Savinkoff
|
||||
- Bug fixes for the BIOS parallel port code
|
||||
- Improved Isqrt() function
|
||||
- Other various bugfixes
|
||||
|
||||
Olivier Landemarre <olivier.landemarre at free.fr>
|
||||
- Renamed internal VDI functions to avoid name conflicts
|
||||
|
||||
Jean-François Del Nero <jeanfrancoisdelnero at free.fr>
|
||||
- Improved memory detection on cold boot
|
||||
- Tested the EmuTOS ROM on real STe hardware
|
||||
- Various bugfixes
|
||||
- Invaluable HxC Floppy Emulator for tests on real hardware
|
||||
|
||||
David Gálvez <dgalvez75 at gmail.com>
|
||||
- XHNewCookie() implementation
|
||||
|
||||
Fredi Aschwanden <mcs at kingx.com>
|
||||
and all the ACP team
|
||||
- Tests on the FireBee hardware
|
||||
|
||||
James Boulton <james.boulton at eiconic.com>
|
||||
- floprw() fix for reading multiple sectors
|
||||
|
||||
Stephen Leary <sleary at vavi.co.uk>
|
||||
- Fixed support for IDE slave device
|
||||
|
||||
Miro Kropáček <miro.kropacek at gmail.com>
|
||||
- Experimental 68040 MMU support
|
||||
|
||||
WongCK on Atari-Forum
|
||||
- Tests on real Falcon 030
|
||||
|
||||
Michaël Gibs on English Amiga Board
|
||||
- Tests on Amiga 1200 with Blizzard 1260 accelerator
|
||||
|
||||
Amiman99 on English Amiga Board
|
||||
- Tests on Amiga 1000
|
||||
|
||||
Radoslaw Kujawa
|
||||
- Compilation fix on 64-bit build systems
|
||||
|
||||
Hampa Hug
|
||||
- Fixed ACSI bugs
|
||||
|
||||
Markus Fröschle
|
||||
- Tests on the FireBee and BaS_gcc support
|
||||
- Inspired the support for the blitter
|
||||
- Fix various AES & VDI bugs
|
||||
|
||||
Christian Zietz <czietz at gmx.net>
|
||||
- ROM tests on real ST/STe hardware
|
||||
- Fix floppy/ACSI bug
|
||||
- Fix memory detection to support STs as well as STes
|
||||
- Support for extended MBR partitions
|
||||
- Add IDE 'twisted cable' support
|
||||
- IDE performance improvements
|
||||
- Fix cold boot problems caused by some ST MMUs
|
||||
- Fix screen corruption after a reset on some Mega(STe) systems
|
||||
- ET4000/Nova support
|
||||
- Miscellaneous bug fixes
|
||||
|
||||
Jo Even Skarstein <joska at online.no>
|
||||
- Support for Norwegian & Swedish keyboards
|
||||
- Support for MonSTer add-on board
|
||||
|
||||
Thorsten Otto <admin at tho-otto.de>
|
||||
- Make EmuTOS more compatible with Atari TOS in several areas
|
||||
- Add check_read_byte() workaround for ARAnyM-JIT
|
||||
- Fixes to 68040 PMMU setup
|
||||
- Inspired the support for window/desktop background configuration
|
||||
- Found many bugs in desktop shortcut handling
|
||||
- Help with resource manipulation programs
|
||||
- Miscellaneous bug fixes
|
||||
- Lots of source code cleanup
|
||||
|
||||
Apollo Team: Gunnar von Boehn, Philippe Flype, Simo Koivukoski,
|
||||
pisklak, guibrush, TuKo, and all other members...
|
||||
- Apollo 68080 and Amiga support
|
||||
|
||||
Steven Seagal
|
||||
- Steem SSE support
|
||||
|
||||
Stefan Niestegge
|
||||
- ROM tests on real hardware: STe, Falcon and Amiga 600
|
||||
|
||||
Ingo Uhlemann
|
||||
- ROM tests on real TT hardware
|
||||
|
||||
Stefan Haubenthal
|
||||
- EmuTOS packaging on Aminet: http://aminet.net/package/misc/emu/emutos
|
||||
|
||||
Christian Quante
|
||||
- Various desktop bug fixes & improvements
|
||||
|
||||
Keli Hlodversson
|
||||
- Replaced form_alert() icons with more TOS-like ones
|
59
ROMImages/AtariST/doc/bugs.txt
Normal file
59
ROMImages/AtariST/doc/bugs.txt
Normal file
@ -0,0 +1,59 @@
|
||||
AES/VDI/Line-A bugs:
|
||||
- The right side of outline characters are clipped e.g. in "LaserChess",
|
||||
"Diamond miner" & "Minigolf" games, and in vditext tester:
|
||||
https://sourceforge.net/p/emutos/mailman/message/29276993/
|
||||
This is due to a bug somewhere in the ugly text_blt() assembler
|
||||
function in vdi_tblit.S.
|
||||
- Thick arcs going partly outside of screen have incorrectly
|
||||
drawn pixels at top of screen in vdiline tester.
|
||||
- In "MathMaze" and "The Ultimate Minesweeper", game win and score
|
||||
dialogs leave left/bottom outline on screen when they close.
|
||||
- Dialog box at the end of Glücksrad game is missing text from
|
||||
the dialog button (and the button width isn't correct)
|
||||
- Line-A polygons are one pixel short at both sides. This is
|
||||
because clc_flit() function does it for VDI (where perimeter
|
||||
is drawn separately). It is visible e.g. in "Japlish" game.
|
||||
|
||||
Video problems:
|
||||
- Omega's XiTec presentations "swing.prg" throws privilege exception
|
||||
on exit. Both TOS v3 & EmuTOS survive that OK, but in EmuTOS both
|
||||
screen and mouse acceleration are messed up: EmuTOS exception restore
|
||||
is missing videomode & mouse reset.
|
||||
|
||||
Atari Falcon / TOS v4 compatibility bugs:
|
||||
- Escape Paint icons don't show in image operations window and their
|
||||
place in toolbar window is inverted on mouse click.
|
||||
- Falcon FalcAMP button icons aren't visible as EmuTOS doesn't support
|
||||
new style RSC files with CICONs.
|
||||
|
||||
Problems that also occur in Atari TOS:
|
||||
- VDI: when drawing a wide polyline with squared ends and more than one
|
||||
segment, if the width of the line is greater than twice the length of
|
||||
an ending segment, the end will have a bump rather than being square.
|
||||
This is because wideline segments are joined by using filled circles
|
||||
whose radius is half the width of the line: the bump is a protruding
|
||||
part of the circle that joins the end segment to the previous one.
|
||||
|
||||
Links to programs listed above:
|
||||
- Diamond Miner:
|
||||
http://www.atarimania.com/game-atari-st-diamond-miner_31993.html
|
||||
- Escape Paint:
|
||||
http://www.pouet.net/prod.php?which=25328
|
||||
- FalcAMP:
|
||||
http://deunstg.free.fr/sct1/falcamp/
|
||||
- Glücksrad:
|
||||
http://www.atarimania.com/game-atari-st-glucksrad-st_22001.html
|
||||
- Japlish:
|
||||
http://www.ntrautanen.fi/marko/arkisto.atari.org/sivut/menu_pelit.htm
|
||||
- Laserchess:
|
||||
http://www.atarimania.com/game-atari-st-laserchess_31257.html
|
||||
- Minigolf (GFA):
|
||||
http://eerott.mbnet.fi/hatari/sources/minigolf.zip
|
||||
- Swing:
|
||||
http://www.pouet.net/prod.php?which=52370
|
||||
- The Ultimate Minesweeper:
|
||||
http://www.pouet.net/prod.php?which=28904
|
||||
- VDI line/text tester:
|
||||
http://eerott.mbnet.fi/hatari/programs.shtml#vditest
|
||||
|
||||
(Links missing to: mathmaze.)
|
361
ROMImages/AtariST/doc/changelog.txt
Normal file
361
ROMImages/AtariST/doc/changelog.txt
Normal file
@ -0,0 +1,361 @@
|
||||
CHANGES BETWEEN RELEASE 0.9.9.1 AND RELEASE 0.9.10
|
||||
|
||||
Major changes:
|
||||
- AES: Avoid unnecessary redraws by AES window manager
|
||||
- AES: Fix shutdown bug in shel_write()
|
||||
- BDOS: Improve BDOS write file performance
|
||||
- BDOS: Improve BDOS sector caching algorithm
|
||||
- BDOS: Avoid unnecessary directory sector writes in BDOS
|
||||
- BDOS: Improve Fsnext() performance
|
||||
- BIOS: Add SCSI support for TT and Falcon
|
||||
- BIOS: Implement support for ET4000 graphics card
|
||||
- BIOS: Implement automatic verify for floppy writes
|
||||
- BIOS: Improve IDE data transfer speed
|
||||
- BIOS: Improve TT RAM size detection for Storm cards
|
||||
- BIOS: Fix reboot loop if Ctrl+Alt+Del held down
|
||||
- EmuCON: Allow resolution change in EmuCON
|
||||
- EmuDesk: Clean up if EmuDesk terminates abnormally
|
||||
- EmuDesk: Fix bug in EmuDesk copy function
|
||||
- EmuDesk: Fix EmuDesk out-of-sequence redraws
|
||||
- EmuDesk: Make EmuDesk menu for icon/text selection like Atari TOS
|
||||
- VDI: Improve the appearance of VDI curved lines
|
||||
|
||||
Other changes:
|
||||
- AES: Do not set the scrap directory in appl_init()
|
||||
- AES: Do not validate the path supplied to scrp_write()
|
||||
- AES: Fix appl_tplay()
|
||||
- AES: Fix appl_trecord()
|
||||
- AES: Fix bug in setting application directory
|
||||
- AES: Fix file selector bug
|
||||
- AES: Handle SHADOWED correctly for form_center()
|
||||
- AES: Make form_center() behave like Atari TOS
|
||||
- AES: Preserve DTA address across shel_find()
|
||||
- BDOS: Increase max length of fully-qualified filename
|
||||
- BIOS: Fix bug in VT52 emulation
|
||||
- BIOS: Fix bug in rsconf handling for SCC
|
||||
- BIOS: Fix bugs in keyboard mouse emulation
|
||||
- BIOS: Fix end-of-partition test in Rwabs()
|
||||
- BIOS: Fix screen corruption on some (Mega)STe systems
|
||||
- BIOS: Improve FAT12/FAT16/FAT32 detection
|
||||
- BIOS: Increase default keyboard auto-repeat speed
|
||||
- BIOS: Remove IDE delay on Amiga
|
||||
- BIOS: Remove unneeded delay when accessing the FDC
|
||||
- EmuDesk: Allow 'Show item' to handle multiple items
|
||||
- EmuDesk: Fix bug in EmuDesk change resolution handling
|
||||
- EmuDesk: Fix bug in EmuDesk copy process when disk is full
|
||||
- EmuDesk: Fix display bug in EmuDesk initialisation
|
||||
- EmuDesk: Fix EmuDesk mouse cursor initialisation
|
||||
- EmuDesk: Fix label bug when formatting floppy
|
||||
- EmuDesk: Fix 'name conflict' bug in copy/move folders
|
||||
- LineA: Fix bug that affected Aegis Animator
|
||||
- LineA: Implement early abort for lineA seedfill()
|
||||
- VDI: Fix bug in v_opnvwk()
|
||||
- VDI: Fix contourfill() for 8 planes
|
||||
- VDI: Fix design bug in VDI workstation creation
|
||||
- XBIOS: Fix crash if Vsetscreen() sets TrueColor mode
|
||||
- XBIOS: Improve performance of Flopver()
|
||||
- The usual source code cleanup and minor bug fixes
|
||||
|
||||
|
||||
CHANGES BETWEEN RELEASE 0.9.9 AND RELEASE 0.9.9.1
|
||||
|
||||
There was only one change, to fix a major bug in EmuDesk: if a desktop
|
||||
shortcut for a file/folder was dragged to the trash or a disk icon or
|
||||
an open window, then all the folders at the same level as the selected
|
||||
file/folder were included in the operation, causing unwanted deletes/
|
||||
moves/copies.
|
||||
|
||||
|
||||
CHANGES BETWEEN RELEASE 0.9.8 AND RELEASE 0.9.9
|
||||
|
||||
Major changes:
|
||||
- AES: Allow mouse cursors to be loaded at boot time
|
||||
- EmuDesk: Add 'Desktop configuration' dialog
|
||||
- EmuDesk: Allow configuration of window/desktop backgrounds
|
||||
- EmuDesk: Allow desktop window file mask to be specified
|
||||
- EmuDesk: Omit unused desktop menu items
|
||||
- EmuDesk: Open new window with Alt+doubleclick on folder
|
||||
- General: Automatically build snapshot releases when a commit is pushed
|
||||
- VDI: Add blitter support for horizontal line drawing
|
||||
- VDI: Add blitter support for filled rectangle drawing
|
||||
- VDI: Add blitter support for raster graphics
|
||||
|
||||
Other changes:
|
||||
- AES: Add growbox/shrinkbox effects to form_dial()
|
||||
- AES: Allow AES USERDEFs to clobber a2/d2 (improve compatibility)
|
||||
- AES: Call dsptch() on every AES call (improve responsiveness)
|
||||
- AES: Ensure all DAs see AC_CLOSE before app exits
|
||||
- AES: Fix problem with mouse clicks being ignored
|
||||
- AES: Improve mouse cursor images
|
||||
- AES: Only wait for interrupts when nobody is ready to run
|
||||
- AES: Replace icons used in alerts
|
||||
- BIOS: Do not use stack until memory is initialized
|
||||
- BIOS: Ensure ST MMU register contains valid value
|
||||
- BIOS: Ensure GetBPB() returns NULL for non-FAT partitions
|
||||
- BIOS: Fix Mega STe boot problem
|
||||
- BIOS: Fix XHDrvMap() to return correct value
|
||||
- BIOS: Fix bug in memset/bzero clearing only 16MB at most
|
||||
- BIOS: Implement XHDOSLimits (read only)
|
||||
- BIOS: Amiga/Vampire V2: do not enable Fast IDE by default
|
||||
- EmuDesk: Add blitter menu item to desktop
|
||||
- EmuDesk: Add support for desktop drag-and-drop in window
|
||||
- EmuDesk: Allow any character as date separator
|
||||
- EmuDesk: Allow copy/move to desktop shortcut for a folder
|
||||
- EmuDesk: Always issue alert if no windows are available
|
||||
- EmuDesk: Do not open desktop directory if error occurs
|
||||
- EmuDesk: Dragging to desktop shortcut for program now launches it
|
||||
- EmuDesk: Fix 'Install application' bug w/ desktop shortcut
|
||||
- EmuDesk: Fix alignment of desktop icons on a grid
|
||||
- EmuDesk: Fix bug: desktop didn't open window for empty drives
|
||||
- EmuDesk: Fix default dir for programs launched from desktop
|
||||
- EmuDesk: Fix tail passed by desktop to shel_write()
|
||||
- EmuDesk: Highlight file shortcut when dropping file on it
|
||||
- EmuDesk: Improve launching of programs via desktop shortcut
|
||||
- EmuDesk: Include wildcard spec in desktop window name
|
||||
- EmuDesk: Make the desktop shel_write() the full pathname
|
||||
- VDI: Add support for lineA TextBlt write modes 4-19
|
||||
- VDI: Fix VDI crash when running MiNT + memory protect
|
||||
- VDI: Fix crash when font scaling in lineA text_blt()
|
||||
- VDI: Handle bad rotation value in gdp_justified()
|
||||
- VDI: Translate text_blt() high level code to C
|
||||
- XBIOS: Fix EsetColor() when color < 0
|
||||
- The usual source code cleanup and minor bug fixes
|
||||
|
||||
|
||||
CHANGES BETWEEN RELEASE 0.9.7 AND RELEASE 0.9.8
|
||||
|
||||
Major changes:
|
||||
- Amiga: New boot floppy target
|
||||
- Amiga: Rewrite floppy routines
|
||||
- Amiga: Support multiple video modes
|
||||
- BIOS: Autodetect IDE interface with twisted cable at run-time
|
||||
- EmuDesk: Add support for desktop shortcuts
|
||||
- EmuDesk: Add support for formatting floppies
|
||||
- EmuDesk: Add support for user-assignable desktop icons
|
||||
|
||||
Other changes:
|
||||
- AES: Adjust file selector scroll bar width according to resolution
|
||||
- AES: Allocate Alt-RAM instead of ST-RAM where possible
|
||||
- AES: Do not use shel_find() to find autorun program
|
||||
- AES: Fix bug in rsrc_load() that affected PixArt4
|
||||
- AES: Fix error message if autorun program is not found
|
||||
- AES: Fix possible data corruption when launching accessories
|
||||
- AES: Increase min height of slider in file selector
|
||||
- Amiga: Add support for IKBD keyboard/mouse/joysticks on RS-232
|
||||
- Amiga: Fix interlaced display with fast CPU
|
||||
- Amiga: Add target to build ROM optimized for Vampire V2
|
||||
- Amiga: Add XBIOS joystick support
|
||||
- Amiga: Improve IDE performance on Vampire V2
|
||||
- Amiga: Improve IDE support
|
||||
- Amiga: Add proper floppy media change support
|
||||
- BDOS: Allow environment to be allocated in Alt-RAM
|
||||
- BDOS: Fix bug in updating date when month rolls over
|
||||
- BDOS: Fix Fsfirst(): wrong name format in DTA for label
|
||||
- BDOS: Speed up Dfree() for 16-bit FATs
|
||||
- BIOS: Add movep emulation for 68060
|
||||
- BIOS: Enable data cache on 68040 & 68060
|
||||
- BIOS: Enable instruction & branch caches on 68060
|
||||
- BIOS: Fix ACSI bug: non-word-aligned transfers failed
|
||||
- BIOS: Fix bug in IDE detection of slower devices
|
||||
- BIOS: Fix crash with unaligned IDE R/W buffer on 68000
|
||||
- BIOS: Fix floppy bug: non-word-aligned I/Os failed
|
||||
- BIOS: Improve IDE performance
|
||||
- BIOS: Improve mediachange detection
|
||||
- ColdFire: Add RAM TOS target for ColdFire Evaluation Boards
|
||||
- EmuDesk: Add documentation for new features
|
||||
- EmuDesk: Add read-only indicator for show-as-text display
|
||||
- EmuDesk: Allocate Alt-RAM instead of ST-RAM where possible
|
||||
- EmuDesk: Fix various bugs in desktop copy/move
|
||||
- EmuDesk: Handle desktop move/copy of folder to itself
|
||||
- EmuDesk: Holding Control at startup now bypasses all initialisation files
|
||||
- EmuDesk: Lookup desktop shortcuts directly in menu
|
||||
- EmuDesk: Make alt-X open the root of X in a window
|
||||
- EmuDesk: Make desktop keyboard shortcuts use Ctrl modifier
|
||||
- EmuDesk: Make desktop shortcut keys work for all keyboards
|
||||
- EmuDesk: Split preferences dialog to allow longer text
|
||||
- General: Allow EmuTOS static RAM to be allocated in Alt-RAM
|
||||
- The usual source code cleanup and minor bug fixes
|
||||
|
||||
|
||||
CHANGES BETWEEN RELEASE 0.9.6 AND RELEASE 0.9.7
|
||||
|
||||
Major changes:
|
||||
- BIOS: add support for extended MBR partitions
|
||||
- BIOS: add support for MonSTer board
|
||||
- BIOS: configure & size ST-RAM on TT
|
||||
- BIOS: add support for Eiffel on CAN bus on ColdFire EVB
|
||||
- BIOS: add _5MS cookie to support FreeMiNT on non-Atari hardware
|
||||
- BIOS: add support for Apollo Core 68080
|
||||
- BDOS: set archive flag when file is created/modified
|
||||
- EmuDesk: allow disk delete via desktop File menu item
|
||||
- EmuDesk: implement desktop 'Install devices'
|
||||
- EmuDesk: implement desktop 'Install icon'
|
||||
- EmuDesk: implement desktop 'Remove desktop icon'
|
||||
- EmuDesk: rewrite 'Install application'
|
||||
- EmuCON2: provide a standalone version of EmuCON2
|
||||
|
||||
Other changes:
|
||||
- AES: allow autorun program to start in character mode
|
||||
- AES: fix bug when File Selector accesses empty drive
|
||||
- AES: fix loop in file selector if filemask is too long
|
||||
- AES: fix bug: the file selector modified the DTA pointer
|
||||
- AES: rewrite wildcmp() to fix bug
|
||||
- BDOS: fix GEMDOS standard handle numbers
|
||||
- BDOS: rewrite Fsfirst/Fsnext to fix design problem
|
||||
- BDOS: use single pool for all internal memory requests
|
||||
- BDOS: fix I/O status for redirected character devices
|
||||
- BDOS: fix date stamp in . and .. directory entries
|
||||
- BDOS: fix return code for Fsfirst()
|
||||
- BDOS: make EmuTOS respect user-assigned FRB
|
||||
- BDOS: make ctl-C interrupt Cconin
|
||||
- BDOS: return EOF indicator on redirected char devices
|
||||
- BDOS: validate attribute bits passed to Fattrib()
|
||||
- BDOS: validate handles for Fseek()/Fread()/Fwrite()/Fdatime()
|
||||
- BIOS: add Norwegian & Swedish keyboard support
|
||||
- BIOS: add support for byte-swapped IDE cable (disabled by default)
|
||||
- BIOS: allow configuration of max logical sector size
|
||||
- BIOS: fix VDI->hardware colour calculation
|
||||
- BIOS: fix os_conf value and usage in multilanguage ROMs
|
||||
- BIOS: improve performance of Rwabs() on floppy disks
|
||||
- BIOS: make Ikbdws()/Midiws() handle 'cnt' like Atari TOS
|
||||
- BIOS: set density for read/write/format of HD floppies
|
||||
- BIOS: fix boot on Amiga with 68000 CPU
|
||||
- BIOS: fix RAM size with BaS_gcc on ColdFire EVB
|
||||
- BIOS: fix _FPU cookie for 68060 without FPU
|
||||
- BIOS: fix values returned by VgetRGB()/vq_color()
|
||||
- EmuDesk: make desktop shift-click behave the same as TOS
|
||||
- EmuDesk: prompt if folder name conflict during move/copy
|
||||
- EmuDesk: make many desktop and AES dialogs more concise
|
||||
- EmuDesk: fix desktop icon drag and drop positioning
|
||||
- EmuDesk: allow 'Too many windows' alert to be issued
|
||||
- EmuDesk: always issue extra alert if deleting entire disk
|
||||
- EmuDesk: always keep part of the mover gadget onscreen
|
||||
- EmuDesk: avoid unnecessary window refreshes
|
||||
- EmuDesk: handle name conflict during copy like Atari TOS
|
||||
- EmuDesk: support additional keys during "Show file"
|
||||
- EmuDesk: add copyright year in EmuDesk about dialog
|
||||
- General: display total RAM on welcome screen
|
||||
- General: fix _drvbits tests for drives > P
|
||||
- VDI: fix rectangle drawing errors
|
||||
- VDI: fix bug: v_bar() draws perimeter wrongly
|
||||
- VDI: fix vq_curaddress(), vs_curaddress()
|
||||
- Lots of source code cleanup and minor bug fixes
|
||||
|
||||
|
||||
CHANGES BETWEEN RELEASE 0.9.5 AND RELEASE 0.9.6
|
||||
|
||||
Major changes:
|
||||
- AES: fix pattern problem in window title line
|
||||
- AES: prevent crash when NVDI is installed
|
||||
- BDOS: fix bug: memory allocated by a TSR could be freed
|
||||
- BDOS: implement etv_term()
|
||||
- BIOS: clean up pending IRQ from flopunlk(), fixes some ACSI problems
|
||||
- BIOS: clear data cache after DMA read, fixes ACSI problem on TT
|
||||
- BIOS: do not clear the free ST-RAM on startup
|
||||
- BIOS: enable MIDI input
|
||||
- BIOS: initialise DMA sound matrix on Falcon
|
||||
- BIOS: fix Flopxxx XBIOS calls to work with FastRAM
|
||||
- BIOS: fix floppy motor-on problem during initialisation
|
||||
- BIOS: fix memory bank detection to work on ST and STe
|
||||
- BIOS: prevent reset vector being called on cold reset
|
||||
- EmuCON2: add 'mode' command
|
||||
- EmuCON2: fix EmuCON crash if system call is intercepted
|
||||
- EmuDesk: allow TT desktop to select TT medium res
|
||||
- EmuDesk: fix bug: copy/move could target the wrong folder
|
||||
- EmuDesk: fix display of numeric values in desktop dialogs
|
||||
- EmuDesk: fix rubber-banding for text-mode desktop windows
|
||||
- EmuDesk: hide Shutdown if the machine can't shutdown
|
||||
- EmuDesk: improve desktop move performance by using rename if possible
|
||||
- EmuDesk: change menu bar to be more like Atari TOS
|
||||
- General: fix EmuTOS to run on real TT hardware
|
||||
- General: merge boot.prg + ramtos.img into emutos.prg
|
||||
- VDI: fully implement VDI support for TT video
|
||||
|
||||
Other changes:
|
||||
- AES: clean up if program fails to issue appl_exit()
|
||||
- AES: fix loop when deleting non-existent object
|
||||
- AES: fix handling of Delete key by objc_edit()
|
||||
- AES: fix value returned by evnt_button()/evnt_multi()
|
||||
- AES: reset the default drive on resolution change
|
||||
- BDOS: fix volume label handling to conform to TOS standards
|
||||
- BIOS: add new cookie _MCF to the cookiejar
|
||||
- BIOS: add support for RTC on ICD AdSCSI Plus board
|
||||
- BIOS: add support for TT MFP (MFP #2)
|
||||
- BIOS: add support to run "reset-resident" code
|
||||
- BIOS: allow EmuTOS floppy to boot other floppies
|
||||
- BIOS: clear system variables if EmuTOS loads into RAM
|
||||
- BIOS: fix console font height with Hatari extended video modes
|
||||
- BIOS: fix ide_identify() on Amiga
|
||||
- BIOS: fix NVRAM year on TT
|
||||
- BIOS: fix return codes for dmasound functions on ST
|
||||
- BIOS: fix return codes for TT shifter functions
|
||||
- BIOS: fix some NVRAM reset problems
|
||||
- BIOS: fix sound volume on TT
|
||||
- BIOS: fix _screenpt processing for TT, Falcon
|
||||
- BIOS: flush the data cache before a warm or cold reset
|
||||
- BIOS: initialize the IKBD clock on first boot only
|
||||
- BIOS: rewrite MegaST(e) real time clock handler
|
||||
- EmuCON2: fix EmuCON welcome message for ST-Low
|
||||
- EmuDesk: add 'No sort' to desktop sort options
|
||||
- EmuDesk: add desktop shortcuts for scroll-by-page
|
||||
- EmuDesk: ensure desktop menu bar fits within screen
|
||||
- EmuDesk: fix display of volume label in disk info dialog
|
||||
- EmuDesk: improve EMUDESK.INF error checking
|
||||
- EmuDesk: show the emulated machine name on Hatari even with --natfeats yes
|
||||
- General: always use STOP instruction in 'wait for interrupt' loops
|
||||
- General: create valid filesystem with hidden EmuTOS image on auto-booting floppy
|
||||
- General: do not wait for a key at EMUTOS.PRG startup
|
||||
- General: pretend to be TOS 1.04 in 192k ROMs
|
||||
- General: use country id as part of emutos.prg/emutos.st name
|
||||
- VDI: fix v_curtext()
|
||||
- VDI: implement vq_curaddress()
|
||||
- VDI: improve performance of cursor display routine
|
||||
- VDI: rewrite vr_trnfm() to fix bugs and save space
|
||||
- Lots of source code cleanup and minor bug fixes
|
||||
|
||||
|
||||
CHANGES BETWEEN RELEASE 0.9.4 AND RELEASE 0.9.5
|
||||
|
||||
Major changes:
|
||||
- AES/BIOS: implement critical error handler
|
||||
- BDOS: fix file not found issues with Steem hard disk emulation
|
||||
- BDOS: implement Pexec mode 7
|
||||
- BIOS: add alt-arrow support (mouse actions via keyboard)
|
||||
- BIOS: add dual keyboard support (for Greek/Russian keyboards)
|
||||
- BIOS: allow user to specify boot partition at startup
|
||||
- BIOS: allow EmuTOS to recover from program exceptions in user programs
|
||||
- BIOS: auto-detect multiple IDE interfaces
|
||||
- BIOS: fix detection of C: drive with Steem
|
||||
- BIOS: fix early stack initialization on Amiga
|
||||
- EmuDesk: improve text object alignment for translated strings
|
||||
- VDI: add line-A flood fill; all line-A opcodes are now supported
|
||||
|
||||
Other changes:
|
||||
- AES: increase button spacing in alerts
|
||||
- AES: increase AES stack size for ColdFire machines
|
||||
- BDOS: evaluate TPAsize flags in Pexec processing
|
||||
- BDOS: fix bug in cross-directory rename
|
||||
- BIOS: use interrupts for serial console instead of polling
|
||||
- BIOS: fix FPU detection: 68881/68882 are now differentiated correctly
|
||||
- BIOS: fix delay_loop() timing for M548X machines
|
||||
- BIOS: fix key repeat bug when entering values via alt-keypad
|
||||
- BIOS: implement XHInqDriver() XHDI function
|
||||
- BIOS: fix some XHDI return codes (EDRIVE and EWRPRO)
|
||||
- BIOS: add explicit delay for parallel port strobe (fixes printing on fast systems)
|
||||
- BIOS: fix nationality code in ROM header
|
||||
- EmuCON2: translate text (note: some country codes use English by choice)
|
||||
- EmuDesk: allow folders being displayed in an open window to be moved/deleted
|
||||
- EmuDesk: allow desktop "rubber-banding" in all directions
|
||||
- EmuDesk: display year as 4 digits where possible
|
||||
- EmuDesk: use _IDT cookie for EmuDesk date/time formatting
|
||||
- EmuDesk: fix bug in "sort by date" for directory display
|
||||
- EmuDesk: allocate screen objects dynamically
|
||||
- General: convert source code repository to Git
|
||||
- General: implement error checking for translated alerts
|
||||
- General: replace "make release-version" with "make version"
|
||||
- VDI: ignore lineA variable 'multifill' for linea_rect() and linea_polygon()
|
||||
- VDI: speed up drawing of horizontal lines by v_pline()
|
||||
- VDI: fix lineA rectangle fill bugs
|
||||
- VDI: fix gap in circle drawn by v_arc()
|
||||
- VDI: fix VDI wideline display in 320x480 resolution
|
||||
- Lots of source code cleanup and minor bug fixes
|
295
ROMImages/AtariST/doc/emudesk.txt
Normal file
295
ROMImages/AtariST/doc/emudesk.txt
Normal file
@ -0,0 +1,295 @@
|
||||
A brief user's guide to the newer features of EmuDesk, the EmuTOS desktop
|
||||
=========================================================================
|
||||
|
||||
The current version of EmuDesk is based on the TOS 1 desktop, but with
|
||||
many improvements inspired by the TOS 2/3/4 desktop, including:
|
||||
|
||||
1) new menu items
|
||||
. set file mask
|
||||
. install icon
|
||||
. install application
|
||||
. install devices
|
||||
. remove desktop icon
|
||||
. desktop configuration
|
||||
. blitter
|
||||
Due to space limitations, the implementation of the above is somewhat
|
||||
restricted in the 192K ROMs (see the detailed descriptions below). If
|
||||
you make any changes to the desktop using the above features, you must
|
||||
save the desktop to preserve the changes.
|
||||
|
||||
2) other new features
|
||||
. user-assignable icons
|
||||
. user-assignable mouse cursors
|
||||
. open disk window via keyboard shortcut
|
||||
. desktop shortcuts
|
||||
Due to space limitations, desktop shortcuts are not available in the
|
||||
192K ROMs. Desktop shortcuts are preserved when you save the desktop.
|
||||
|
||||
|
||||
Set file mask
|
||||
=============
|
||||
192K ROMs:
|
||||
This is not available.
|
||||
|
||||
Other ROMs:
|
||||
This is used to change the file mask of the currently-topped window, to
|
||||
control which files are displayed within the window. Note that folders
|
||||
are always displayed; the mask affects the display of files only. The
|
||||
default file mask when a window is opened is "*.*"
|
||||
|
||||
|
||||
Install icon
|
||||
============
|
||||
192K ROMs:
|
||||
This may be used to associate a specific icon with a desktop item (disk
|
||||
or trash). You may select an existing desktop item and click on "Install
|
||||
icon...", or you may click on "Install icon..." with no item selected.
|
||||
If you click on a window icon (file or folder), it will be ignored.
|
||||
|
||||
Other ROMs:
|
||||
This may be used to associate a specific icon with a desktop item (disk
|
||||
or trash), or a window item (file or folder). You may select an existing
|
||||
icon and click on "Install icon...", or you may click on "Install icon..."
|
||||
with no item selected. In the latter case, you'll get a dialog requesting
|
||||
you to select the type of icon (desktop or window).
|
||||
|
||||
. Installing a desktop icon
|
||||
You may select the type (drive or trash), the label (displayed beneath
|
||||
it on the desktop), and the icon shape (use the up & down arrows to
|
||||
scroll through the available shapes). In addition, for drives you can
|
||||
select the drive letter.
|
||||
|
||||
. Installing a window icon
|
||||
If you pre-selected an icon, you may only change the shape of the icon
|
||||
for that specific file or folder. If you did not pre-select an item,
|
||||
you can select the files that the icon will apply to (standard TOS
|
||||
wildcards may be used), the type of item (file or folder), and the icon
|
||||
shape. In either case, to change the icon shape, use the up & down
|
||||
arrows to scroll through the available shapes.
|
||||
|
||||
|
||||
Install application
|
||||
===================
|
||||
The basic purpose of "Install application..." is to link an application
|
||||
to data files with a specified extension. After you have done this, when
|
||||
you use the desktop to open a file with the specified extension, the
|
||||
corresponding application is launched. For example, you could associate
|
||||
all .TXT files with a text editor; then, double-clicking on a .TXT file
|
||||
would automatically launch the editor.
|
||||
|
||||
In addition, you can assign a function key to an application; pressing
|
||||
the function key at the desktop will then launch the application.
|
||||
|
||||
Finally, you can set "autoboot" for one application (only): this will
|
||||
launch that application during system initialisation, immediately before
|
||||
the desktop itself runs.
|
||||
|
||||
To use "Install application...", highlight one or more applications and
|
||||
click on "Install application...". In the dialog box, the application
|
||||
name of the first application selected will be prefilled. The following
|
||||
fields and buttons specify in detail how the application is run:
|
||||
|
||||
. Arguments
|
||||
If you need to pass information (in addition to the name of the data
|
||||
file) to the application when it starts, you may specify it here. This
|
||||
is typically only relevant to utility programs, and the information
|
||||
needed will be in the application documentation. In most cases, you
|
||||
should leave this blank.
|
||||
|
||||
. Document type
|
||||
This specifies the extension to associate with this application, for
|
||||
example TXT or RSC, and is required. Wildcards are allowed.
|
||||
|
||||
. Install as F__
|
||||
This specifies the function key that will launch the application;
|
||||
values from 1 to 20 are allowed (11-20 are shift-F1 through shift-F10).
|
||||
Leaving this blank is valid, and means that no function key will launch
|
||||
the application.
|
||||
|
||||
. Boot status
|
||||
Select "Auto" to autoboot this application (see above). Since only one
|
||||
autoboot application is allowed, if you set "Auto" for an application,
|
||||
EmuTOS will automatically disable "Auto" for any existing autoboot
|
||||
application.
|
||||
|
||||
. Application type
|
||||
Selecting TOS or TTP will launch the program in character mode; GEM or
|
||||
GTP will launch the application in graphics mode. The appropriate
|
||||
value will be prefilled according to the type of application selected,
|
||||
and should not normally be changed.
|
||||
|
||||
. Default dir
|
||||
This specifies the default directory when the application is launched:
|
||||
either the directory of the application itself, or the top window (i.e.
|
||||
the directory of the data file). The one to choose depends on the
|
||||
specific application. If the application has supporting files (such as
|
||||
resource or help files), it typically will look for them in the default
|
||||
directory. For such an application, you will need to specify a default
|
||||
directory of "Application". Otherwise, specify "Window".
|
||||
|
||||
. Parameter
|
||||
When a program is launched due to it being an installed application,
|
||||
the desktop provides the application with the name of the data file
|
||||
that caused the launch: this is known as a parameter. In most cases,
|
||||
the application expects that the full path of the data file will be
|
||||
provided. Some (usually older) programs may expect the filename only.
|
||||
Unless the application's documentation indicates otherwise, you should
|
||||
normally try "Full path" first; if that does not work, you can try
|
||||
"File name", although that may require you to modify the "Default dir"
|
||||
specified above.
|
||||
|
||||
At the bottom of the dialog box are the following exit buttons:
|
||||
|
||||
. Install
|
||||
Installs the application. You must save the desktop afterwards if you
|
||||
want the change to be saved across boots.
|
||||
|
||||
. Remove
|
||||
Removes an existing installed application. You must save the desktop
|
||||
afterwards if you want the change to be saved across boots.
|
||||
|
||||
. Skip
|
||||
Skips installing/removing the current application, and moves on to the
|
||||
next one you specified. If you only specified one application, this
|
||||
is the same as Cancel.
|
||||
|
||||
. Cancel
|
||||
Skip installing/removing all remaining applications.
|
||||
|
||||
|
||||
Install devices
|
||||
===============
|
||||
This automatically installs icons for all devices that are currently
|
||||
known to GEMDOS (have an entry in _drvbits) and that do not currently
|
||||
have an icon. If the device is A: or B:, a floppy icon is installed;
|
||||
otherwise a hard disk icon is installed.
|
||||
|
||||
|
||||
Remove desktop icon
|
||||
===================
|
||||
This is used to remove a disk or trash icon. Highlight the icon you
|
||||
wish to remove, and click on "Remove desktop icon".
|
||||
|
||||
|
||||
Desktop configuration
|
||||
=====================
|
||||
192K ROMs:
|
||||
This is not available.
|
||||
|
||||
Other ROMs:
|
||||
This is a simplified version of the corresponding Atari TOS menu item.
|
||||
It allows you to specify the default directory and input parameter for
|
||||
all applications that are not installed applications. See "Install
|
||||
application" above, under 'Default dir' and 'Parameter', for further
|
||||
information about these options.
|
||||
|
||||
|
||||
Blitter
|
||||
=======
|
||||
This item allows you to enable or disable the use of the blitter by the
|
||||
desktop. The item is greyed-out if the system does not have a blitter.
|
||||
|
||||
|
||||
User-assignable icons
|
||||
=====================
|
||||
When EmuDesk starts, it looks for a file called EMUICON.RSC in the root
|
||||
of the boot drive. This file should be a standard Atari resource file,
|
||||
with at least eight icons. All icons in the file must be 32x32-pixel
|
||||
monochrome icons. If the file is found, these icons are used for the
|
||||
desktop and window displays; if not found, a standard set of eight
|
||||
builtin icons is used instead. The builtin icons (or the first eight
|
||||
of the loaded icons, if EMUICON.RSC is in use) have the following usage:
|
||||
0 hard drive
|
||||
1 floppy drive
|
||||
2 folder
|
||||
3 trash
|
||||
4 printer
|
||||
5 removable disk
|
||||
6 generic application icon
|
||||
7 generic document icon
|
||||
Icons 8 and above can be used as you wish.
|
||||
|
||||
Note that, for historical reasons, these assignments are different from
|
||||
those used by Atari TOS, so if you have an equivalent RSC file that works
|
||||
with Atari TOS, you will need to move the icons around to get the same
|
||||
desktop display.
|
||||
|
||||
A default EMUICON.RSC file (currently containing 41 icons) is shipped
|
||||
with the release; the first 8 icons are the same as the builtin ones.
|
||||
Also shipped is the corresponding EMUICON.DEF file for use by a resource
|
||||
editor. You should be aware that each icon consumes about 300 bytes of
|
||||
RAM, so if you are short of memory, avoid putting too many icons in
|
||||
EMUICON.RSC.
|
||||
|
||||
|
||||
User-assignable mouse cursors
|
||||
=============================
|
||||
When the AES starts, it looks for a file called EMUCURS.RSC in the root
|
||||
of the boot drive. This file should be a standard Atari resource file,
|
||||
containing 8 ICONBLKs; each ICONBLK is a container for a mouse cursor.
|
||||
If the file is found, these cursors are used instead of the builtin
|
||||
cursors. The usage is as described for the AES graf_mouse() call:
|
||||
0 arrow
|
||||
1 text cursor / i-beam
|
||||
2 busy bee / hourglass
|
||||
3 pointing hand
|
||||
4 flat hand
|
||||
5 thin cross
|
||||
6 thick cross
|
||||
7 outline cross
|
||||
|
||||
A default EMUCURS.RSC file is shipped with the release; the mouse cursors
|
||||
in it are the same as the builtin ones. Also shipped is the corresponding
|
||||
EMUCURS.DEF file for use by a resource editor.
|
||||
|
||||
NOTE: Because the mouse cursors are not really ICONBLKs (though they are
|
||||
stored as such within the resource), editing them with a standard resource
|
||||
editor is difficult. Thorsten Otto's ORCS resource editor has special
|
||||
support for mouse cursors and is the recommended tool for modifying them.
|
||||
|
||||
|
||||
Open disk window via keyboard shortcut
|
||||
======================================
|
||||
You may now use a keyboard shortcut to display the root directory of a
|
||||
drive in a new window. To display drive X, hold the Alt key down and
|
||||
type X, e.g. Alt-C displays drive C, Alt-D displays drive D, and so on.
|
||||
As in TOS2/3/4, these shortcuts are permanently assigned and cannot be
|
||||
changed by the user.
|
||||
|
||||
NOTE: unlike TOS2/3/4, shortcuts with the Ctrl modifier do NOT update
|
||||
the drive assigned to the currently topped window; instead, they are
|
||||
assigned to menu item shortcuts. At the moment, these assignments are
|
||||
also permanent.
|
||||
|
||||
|
||||
Desktop shortcuts
|
||||
=================
|
||||
You may now drag a file or folder to the desktop to create a desktop icon
|
||||
that is a shortcut to the original file/folder: manipulating the icon
|
||||
will have the same effect as manipulating the original file or folder.
|
||||
For example, it may be opened, copied, or moved or deleted; it may have
|
||||
an "Info/rename" performed on it. Currently, by design, the shortcut is
|
||||
NOT updated automatically if the original file or folder is moved or
|
||||
deleted.
|
||||
|
||||
The name and shape of the shortcut icon itself may be modified by the
|
||||
"Install icon" menu item; this does not change the name of the file or
|
||||
folder that the icon points to. The shortcut icon may be deleted by the
|
||||
"Remove icon" menu item. To preserve shortcut information across boots,
|
||||
you must save the desktop.
|
||||
|
||||
You may drag a file or folder to a desktop shortcut, with the following
|
||||
results:
|
||||
. dragging documents to a desktop shortcut for a folder will copy (or
|
||||
move, if the control key is held down) them to the folder
|
||||
. dragging documents to a desktop shortcut for a program will launch the
|
||||
program, passing the full pathname of the first document
|
||||
. dragging documents to a desktop shortcut for a non-executable file will
|
||||
do nothing
|
||||
|
||||
If you open a desktop shortcut that points to a file or folder that no
|
||||
longer exists, an alert will be issued, giving you the choice of removing
|
||||
the shortcut, locating the desired file or folder, or cancelling the
|
||||
action. If you choose locate, a file selector will be displayed to
|
||||
allow you to choose the desired file or folder, and the shortcut will be
|
||||
updated with the new information.
|
227
ROMImages/AtariST/doc/incompatible.txt
Normal file
227
ROMImages/AtariST/doc/incompatible.txt
Normal file
@ -0,0 +1,227 @@
|
||||
Programs incompatible with EmuTOS
|
||||
=================================
|
||||
This is a list of programs that have program bugs or shortcomings that
|
||||
prevent them from running properly with EmuTOS, and whose problem has
|
||||
been definitively identified. It is mainly intended to prevent these
|
||||
programs from being added to 'bugs.txt' in the future.
|
||||
|
||||
|
||||
Program: STOS programs
|
||||
----------------------
|
||||
Error 1: joystick and/or keyboard input doesn't work.
|
||||
|
||||
Bug analysis:
|
||||
STOS Basic compiler routines check for input using undocumented and
|
||||
TOS-specific locations. Programs using these routines work only with
|
||||
specific TOS versions, and not with EmuTOS.
|
||||
|
||||
Workaround:
|
||||
Use version of the program that has been fixed to work with modern TOS
|
||||
versions.
|
||||
|
||||
Error 2: STOS error message "Error #046, press any key" during startup.
|
||||
|
||||
Bug analysis:
|
||||
This is caused by a divide-by-zero error in vsm_height() when the
|
||||
program is run from the AUTO folder. VDI initialisation does not occur
|
||||
until after AUTO-folder programs have been run, so if a VDI function is
|
||||
called by an AUTO-folder program, internal variables have not been
|
||||
initialised. STOS tries to initialise these variables itself, based on
|
||||
a built-in table of TOS-specific locations. These locations are invalid
|
||||
for EmuTOS, so the required variables remain zero, causing the error.
|
||||
|
||||
Workaround:
|
||||
Move the program from the AUTO folder to the root of the drive, and run
|
||||
it from there. While STOS programs will then start, most of them will
|
||||
remain unusable due to error 1 above.
|
||||
|
||||
|
||||
Program: old game using fixed addresses
|
||||
---------------------------------------
|
||||
Error: panic during game startup.
|
||||
|
||||
Bug analysis:
|
||||
Several old, floppy-only games load their data into fixed memory
|
||||
addresses, which won't work when EmuTOS has loaded something else
|
||||
there. This can be detected by tracing programs' OS calls with Hatari
|
||||
(--trace os_all) and checking the used addresses. For example, under
|
||||
older EmuTOS versions, the Gods game demo (from an ST Format cover disk)
|
||||
overwrote itself with its game data because of this, and crashed.
|
||||
|
||||
Workarounds:
|
||||
In some games this can be worked around by either using the cartridge
|
||||
version of EmuTOS (which uses less memory) or by using a custom high-RAM
|
||||
build of EmuTOS, that uses higher RAM addresses for loading programs and
|
||||
for memory allocation:
|
||||
make 512 UNIQUE=uk DEF="-DSTATIC_ALT_RAM_ADDRESS=0x00080000 -DCONF_WITH_FRB=0"
|
||||
|
||||
However, this doesn't help with programs which also expect undocumented,
|
||||
OS internal functions and variables to be at certain locations. The
|
||||
best workaround is to use a version of the game that has been fixed to
|
||||
run from HD and with modern TOS versions.
|
||||
|
||||
|
||||
Program: Awele v1.01
|
||||
--------------------
|
||||
Error: mono desktop colours are inverted after exiting program.
|
||||
|
||||
Bug analysis:
|
||||
This version of Awele was compiled with PureC and linked with a very
|
||||
early version of Windform. During WinDOM initialisation, malloc() is
|
||||
called to allocate an area to save the palette in. However, although
|
||||
malloc() returns the pointer in A0, the WinDOM code assumes it is in D0.
|
||||
As a result, an area of low memory is pointed to, which is overwritten
|
||||
during Awele execution. At program termination, the palette is restored
|
||||
from the overwritten area, resulting in the error seen.
|
||||
|
||||
Workaround:
|
||||
Use v1.02 of the game.
|
||||
|
||||
|
||||
Program: Cameleon
|
||||
-----------------
|
||||
Error 1: program exits immediately when 'Start game' is selected.
|
||||
|
||||
Bug analysis:
|
||||
The program requires an STe. In order to determine whether it is
|
||||
running on an STe, it checks the contents of location 0x995 (hardcoded).
|
||||
On Atari TOS, this is where TOS initialisation happens to store the _MCH
|
||||
cookie but this is *not* how Atari says you should locate it (and it's
|
||||
not where EmuTOS stores it).
|
||||
|
||||
Error 2: program crashes with a Trace exception on any exit.
|
||||
|
||||
Bug analysis:
|
||||
During startup, the program switches to supervisor state via the Super()
|
||||
system call. Subsequently, the supervisor stack overwrites the program's
|
||||
user stack. On exit, the user stack pointer is restored and during this
|
||||
a corrupted value is loaded into the SR, causing a trace excpetion.
|
||||
|
||||
|
||||
Program: (VDI) Invaders and Anduril
|
||||
-----------------------------------
|
||||
Error: keys to move an object are ignored (in Invaders, the '-' key; in
|
||||
Anduril, the 'h' & 'j' keys)
|
||||
|
||||
Bug analysis:
|
||||
Both programs were written by "M.Dheus" who found that the most recent
|
||||
key input from the keyboard was stored at offset 0x6d from the address
|
||||
returned by Kbdvbase(), and used that to read the keyboard. This was
|
||||
never documented by Atari, but was apparently true for all versions of
|
||||
TOS 1. However it is not true for TOS 2, 3, or 4 (or EmuTOS).
|
||||
|
||||
|
||||
Program: Ramses
|
||||
---------------
|
||||
Error: panic
|
||||
|
||||
Bug analysis:
|
||||
Program calls the Line A initialization $A00A and gets the routine
|
||||
vectors in a2. It gets the address of _v_hide_c, then starts doing
|
||||
undocumented things with the bytes of the actual routine:
|
||||
https://sourceforge.net/p/emutos/mailman/message/30605378/
|
||||
|
||||
|
||||
Program: STVidPlay
|
||||
------------------
|
||||
Error: "Error in getting file location"
|
||||
|
||||
Bug analysis:
|
||||
Program looks for a specific 2-byte sequence in the hard disk driver
|
||||
code pointed to by hdv_rw ($476). If it doesn't find that sequence
|
||||
within bytes 6-48 (or thereabouts) of the start of the driver, it
|
||||
gives the error message.
|
||||
|
||||
|
||||
Program: Cubase Lite
|
||||
--------------------
|
||||
Error: panic
|
||||
|
||||
Bug analysis:
|
||||
On TOS 1.62 etv_timer vector is a delegate to an internal private
|
||||
function. Cubase Lite tries to guess the address of that private
|
||||
function in an undocumented way, which crashes on EmuTOS. (Somebody
|
||||
could write a loader or TSR to change the etv_timer function so that
|
||||
Cubase will not crash.)
|
||||
|
||||
|
||||
Program: Reservoir Gods games (Bugger, Bunion, SkyFall, Sworm)
|
||||
--------------------------------------------------------------
|
||||
Error: panic
|
||||
|
||||
Bug analysis:
|
||||
Games use an undocumented TOS4 vector for keyboard input instead of
|
||||
accessing kbdvec correctly. This causes EmuTOS to panic.
|
||||
|
||||
Workaround:
|
||||
This can be worked around with the following hack.prg:
|
||||
https://sourceforge.net/p/emutos/mailman/message/26841274/
|
||||
|
||||
|
||||
Program: OMIKRON.BASIC V3.01 (interpreter)
|
||||
------------------------------------------
|
||||
Error: Panic (bus error) during start
|
||||
|
||||
Bug analysis:
|
||||
The program relies on undocumented internal TOS variables at several
|
||||
points. First, it expects A0 upon return from Mediach (BIOS function)
|
||||
to point to wplatch (floppy write protect latch variable). On EmuTOS
|
||||
A0 is 0 and hence a bus error occurs when the program wants to modify
|
||||
that variable. Second, it parses the bytes of the 0xA00A (hide cursor)
|
||||
line-A routine to get the address of a variable reflecting the internal
|
||||
state of the mouse cursor. This is done with the same code used in
|
||||
"Ramses" (see above). This also fails on EmuTOS, resulting in another
|
||||
bus error. There may be more accesses to undocumented variables.
|
||||
|
||||
|
||||
Program: STSpeech v2.0
|
||||
----------------------
|
||||
Error: panics due to stack corruption
|
||||
|
||||
Bug analysis:
|
||||
The program installs a custom Timer A interrupt handler, and calls the
|
||||
XBIOS from it. If the Timer A interrupt happens to occur just when an
|
||||
unrelated BIOS/XBIOS call is manipulating _savptr (saving registers),
|
||||
then the nested XBIOS call inside the Timer A handler will trash that
|
||||
BIOS/XBIOS save area, possibly modifying the stack pointer. In the
|
||||
"Hitchhiker's Guide to the BIOS", Atari documented a workaround for this,
|
||||
but STSpeech does not use it.
|
||||
|
||||
Workaround:
|
||||
Because this problem is timing-dependent, it does not show up on Atari
|
||||
TOS, and only shows up in EmuTOS if BigDOS is installed (BigDOS issues
|
||||
many XBIOS calls). Use program without BigDOS, or anything else doing
|
||||
a lot of XBIOS calls.
|
||||
|
||||
|
||||
Program: Protracker v2 STE (Equinox version)
|
||||
--------------------------------------------
|
||||
Error: crash when "DISK OP." button is selected
|
||||
|
||||
Bug analysis:
|
||||
The program relies on a TOS-specific code sequence, as follows:
|
||||
1. it searches the ROM (pointed to by location 4) for the first word
|
||||
equal to 0x47e
|
||||
2. when found, it uses the longword immediately before as a pointer to
|
||||
an address; in TOS2, this is a pointer to the mediachange handler
|
||||
3. it stores the long at offset 0x1c from that address in its data
|
||||
segment; in TOS2, this is a pointer to (I think) two bytes of
|
||||
status for the floppy drives
|
||||
Subsequently, when "DISK OP." is selected, the stored long is used as a
|
||||
pointer. In TOS2, the value stored is $4216; in EmuTOS, it's zero,
|
||||
resulting in a crash.
|
||||
|
||||
|
||||
Program: Spectrum 512
|
||||
---------------------
|
||||
Error: crash during program initialisation
|
||||
|
||||
Bug analysis:
|
||||
The program relies on a TOS-specific code sequence, as follows:
|
||||
1. it searches the VBL handler (pointed to by location $70) for the
|
||||
first word containing a value of 0x6100
|
||||
2. when found, it uses the word immediately following as an index to
|
||||
generate an address, and starts searching at that address for a
|
||||
word containing a value of 0x8606
|
||||
Under EmuTOS, the address generated is a nonsense address which happens
|
||||
to be odd, causing an immediate address error.
|
339
ROMImages/AtariST/doc/license.txt
Normal file
339
ROMImages/AtariST/doc/license.txt
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
583
ROMImages/AtariST/doc/status.txt
Normal file
583
ROMImages/AtariST/doc/status.txt
Normal file
@ -0,0 +1,583 @@
|
||||
This file documents the status of the individual parts of EmuTOS.
|
||||
|
||||
Here is a quick list of supported emulators/hardware:
|
||||
This table should be updated regularly. When indicating failure,
|
||||
if possible add a line telling in which version it did run.
|
||||
Unless otherwise specified in 'details', systems were tested using
|
||||
a ROM version of EmuTOS.
|
||||
|
||||
system | ok? | who | date | details
|
||||
--------------------+-------+-----+-------------+----------------
|
||||
Emulators | | | |
|
||||
ARAnyM 1.0.2 | yes | VRI | 17 Dec 2018 |
|
||||
Hatari v2.1.0 | yes | VRI | 16 Dec 2018 |
|
||||
Pacifist v0.48 | yes | LVL | winter 2001 |
|
||||
SainT v2.40 | yes | (1) | 10 Dec 2017 | 192k ROM only
|
||||
STeem SSE 3.9.4 | yes | VRI | 16 Dec 2018 |
|
||||
STonC v0.8.1 | yes | LVL | 9 Feb 2003 |
|
||||
STonX 0.6.7.6 | yes | THH | 14 Nov 2008 |
|
||||
TOSBox 1.10a | no | ? | < Sep 2002 |
|
||||
WinSTon V0.1r2 | no | ? | < Sep 2002 |
|
||||
WinUAE 4.1.0 | yes | VRI | 19 Dec 2018 |
|
||||
--------------------+-------+-----+-------------+----------------
|
||||
Atari & compatibles | | | |
|
||||
STfm | yes | (1) | 23 Nov 2017 |
|
||||
Mega ST | yes | (8) | 7 Dec 2018 | tested with PRG
|
||||
STe | yes | (1) | 23 Nov 2017 |
|
||||
Mega STe | yes | (2) | 26 Jun 2004 | only RAMTOS tested
|
||||
TT030 | yes | RFB | 30 Nov 2018 | tested with PRG
|
||||
Falcon030 | yes | (7) | 31 Dec 2016 |
|
||||
Falcon030 | yes | RFB | 29 Nov 2018 | tested with PRG
|
||||
Falcon030 + CT60 | yes | RFB | 29 Nov 2018 | tested with PRG
|
||||
Suska III-C (2K15B) | yes | (5) | 23 Apr 2016 |
|
||||
--------------------+-------+-----+-------------+----------------
|
||||
Other systems | | | |
|
||||
Amiga Blizzard 1260 | yes | (3) | Aug 2012 | tested with BlizKick
|
||||
Amiga 500 + Vampire | yes | VRI | 21 Dec 2018 |
|
||||
Amiga 600 + Vampire | yes | (6) | Mar 2017 |
|
||||
Amiga 1000 | yes | (4) | Jul 2012 |
|
||||
FireBee | yes | VRI | 18 Dec 2018 |
|
||||
M5484LITE | yes | VRI | 18 Dec 2018 |
|
||||
|
||||
(1) reported by Christian Zietz
|
||||
(2) reported to LVL by Frédéric Pécourt
|
||||
(3) reported by Michaël Gibs
|
||||
(4) reported by amiman99
|
||||
(5) reported by Markus Fröschle
|
||||
(6) reported by Flype
|
||||
(7) reported by Stefan Niestegge
|
||||
(8) reported by Claude Labelle
|
||||
|
||||
Now let's talk about the different subsystems, and what is implemented.
|
||||
NOTE: the information in the following table may be somewhat dated. For
|
||||
example, most GEMDOS/BIOS/XBIOS functions are known to work without
|
||||
problems.
|
||||
|
||||
|
||||
This is what the first field of the following table means:
|
||||
|
||||
? status unknown
|
||||
- Not yet implemented
|
||||
> Partially implemented
|
||||
X Fully implemented and untested
|
||||
t Fully implemented and partially tested
|
||||
T tested and working on an emulator or real hardware
|
||||
|
||||
|
||||
Hardware initialization
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
T CPU setting, tested on: 68000 (real & emu), 68030 (real & emu), 68040 (emu),
|
||||
68060 (real), 68080 (real), V4e (real)
|
||||
T FPU
|
||||
T 68030 MMU and cache initialization
|
||||
T Memory controller (both ST and Falcon)
|
||||
T DMA controller
|
||||
T WD 1772 / AJAX Floppy disk controller
|
||||
T MFP, MFP#2
|
||||
T PSG
|
||||
T ST shifter
|
||||
T STe shifter
|
||||
T TT shifter
|
||||
T VIDEL
|
||||
T ACIAs, IKBD protocol
|
||||
t MegaST Real-Time Clock (set clock not tested)
|
||||
T NVRAM (including RTC)
|
||||
T Blitter
|
||||
T Microwire
|
||||
t DMA sound
|
||||
- DSP
|
||||
T SCC
|
||||
T IDE
|
||||
T ACSI
|
||||
T SCSI
|
||||
T SD/MMC
|
||||
T NatFeats (a framework for native features on emulators)
|
||||
|
||||
|
||||
BOOT sequence
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
T configure memory
|
||||
T execute reset routine
|
||||
T detect monitor type
|
||||
T detect graphics resolution
|
||||
T detect processor type, FPU type and hardware features
|
||||
T setup a cookie jar with system cookies
|
||||
...
|
||||
T init floppy drives
|
||||
T boot floppy
|
||||
t boot DMA (note it does not work with e.g. AHDI)
|
||||
T execute reset-resident prgs: undocumented TOS feature, disabled by default
|
||||
T run AUTO prgs
|
||||
T run 'command.prg'
|
||||
T run the default shell, EmuCON
|
||||
T run the GEM desktop
|
||||
|
||||
|
||||
BIOS devices
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
t 0 PRN: parallel port
|
||||
t 1 AUX: default serial port
|
||||
T 2 CON: console (screen)
|
||||
T 3 MIDI
|
||||
T 4 IKBD
|
||||
T 5 raw screen
|
||||
T 6 ST-compatible serial port
|
||||
T 7 SCC channel B
|
||||
T 8 TT-MFP serial port
|
||||
T 9 SCC channel A
|
||||
|
||||
|
||||
ACIA interrupt handlers
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
- midierr
|
||||
- ikbderr
|
||||
t midi input
|
||||
T ikbd key events
|
||||
T IKBD clock
|
||||
T mouse
|
||||
t joysticks
|
||||
|
||||
|
||||
BIOS Functions
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
T 0x00 Getmpb
|
||||
T 0x01 Bconstat
|
||||
T 0x02 Bconin
|
||||
T 0x03 Bconout
|
||||
T 0x04 Rwabs
|
||||
T 0x05 Setexc
|
||||
T 0x06 Tickcal
|
||||
T 0x07 Getbpb
|
||||
T 0x08 Bcostat
|
||||
T 0x09 Mediach
|
||||
T 0x0a Drvmap
|
||||
T 0x0b Kbshift
|
||||
|
||||
|
||||
XBIOS Functions
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
All XBIOS versions:
|
||||
X 0x00 Initmous
|
||||
- 0x01 Ssbrk (useless - will not be implemented)
|
||||
T 0x02 Physbase
|
||||
T 0x03 Logbase
|
||||
T 0x04 Getrez
|
||||
T 0x05 Setscreen
|
||||
T 0x06 Setpalette
|
||||
T 0x07 Setcolor
|
||||
T 0x08 Floprd
|
||||
T 0x09 Flopwr
|
||||
T 0x0a Flopfmt
|
||||
- 0x0b Dbmsg (useless - will not be implemented)
|
||||
T 0x0c Midiws
|
||||
X 0x0d Mfpint
|
||||
X 0x0e Iorec
|
||||
T 0x0f Rsconf
|
||||
T 0x10 Keytbl
|
||||
T 0x11 Random
|
||||
T 0x12 Protobt
|
||||
T 0x13 Flopver
|
||||
- 0x14 Scrdmp
|
||||
T 0x15 Cursconf
|
||||
T 0x16 Settime
|
||||
T 0x17 Gettime
|
||||
T 0x18 Bioskeys
|
||||
T 0x19 Ikbdws
|
||||
T 0x1a Jdisint
|
||||
T 0x1b Jenabint
|
||||
T 0x1c Giaccess
|
||||
T 0x1d Offgibit
|
||||
T 0x1e Ongibit
|
||||
T 0x1f Xbtimer
|
||||
T 0x20 Dosound
|
||||
- 0x21 Setprt (useless - will not be implemented)
|
||||
X 0x22 Kbdvbase
|
||||
T 0x23 Kbrate
|
||||
- 0x24 Prtblk (useless - will not be implemented)
|
||||
T 0x25 Vsync
|
||||
T 0x26 Supexec
|
||||
- 0x27 Puntaes (useless - will not be implemented)
|
||||
|
||||
TOS v1.02:
|
||||
T 0x29 Floprate
|
||||
T 0x40 Blitmode
|
||||
|
||||
TOS v2.0:
|
||||
t 0x2a DMAread
|
||||
t 0x2b DMAwrite
|
||||
t 0x2c Bconmap
|
||||
|
||||
TOS v3.00:
|
||||
T 0x2e NVMaccess
|
||||
|
||||
t 0x50 EsetShift (for TT shifter only)
|
||||
t 0x51 EgetShift (for TT shifter only)
|
||||
t 0x52 EsetBank (for TT shifter only)
|
||||
t 0x53 EsetColor (for TT shifter only)
|
||||
t 0x54 EsetPalette (for TT shifter only)
|
||||
t 0x55 EgetPalette (for TT shifter only)
|
||||
t 0x56 EsetGray (for TT shifter only)
|
||||
t 0x57 EsetSmear (for TT shifter only)
|
||||
|
||||
TOS v4.00:
|
||||
t 0x58 Vsetmode (for Falcon Videl only)
|
||||
t 0x59 Vmontype (for Falcon Videl only)
|
||||
t 0x5a VsetSync (for Falcon Videl only)
|
||||
t 0x5b VgetSize (for Falcon Videl only)
|
||||
|
||||
t 0x5d VsetRGB (for Falcon Videl only)
|
||||
t 0x5e VgetRGB (for Falcon Videl only)
|
||||
|
||||
- 0x96 VsetMask (for Falcon Videl only)
|
||||
|
||||
2nd bit in _SND is set:
|
||||
t 0x80 LockSnd
|
||||
t 0x81 UnlockSnd
|
||||
t 0x82 Soundcmd
|
||||
t 0x83 Setbuffer
|
||||
t 0x84 Setmode
|
||||
t 0x85 Settracks
|
||||
t 0x86 Setmontracks
|
||||
t 0x87 Setinterrupt
|
||||
t 0x8c Sndstatus
|
||||
|
||||
3rd bit in _SND is set:
|
||||
t 0x88 Buffoper
|
||||
t 0x8a Gpio
|
||||
t 0x8b Devconnect
|
||||
t 0x8d Buffptr
|
||||
|
||||
3&4 bits in _SND are set:
|
||||
t 0x89 Dsptristate
|
||||
|
||||
5th bit in _SND is set:
|
||||
- 0x60-0x7F, 32 Dsp_* functions
|
||||
|
||||
TOS v4 extended XBIOS functionality:
|
||||
- 16-bit Videl resolution setting
|
||||
|
||||
|
||||
GEMDOS Functions
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
All GEMDOS versions:
|
||||
T 0x00 Pterm0
|
||||
T 0x01 Cconin
|
||||
T 0x02 Cconout
|
||||
T 0x03 Cauxin
|
||||
T 0x04 Cauxout
|
||||
T 0x05 Cprnout
|
||||
T 0x06 Crawio
|
||||
T 0x07 Crawin
|
||||
T 0x08 Cnecin
|
||||
T 0x09 Cconws
|
||||
T 0x0a Cconrs
|
||||
T 0x0b Cconis
|
||||
|
||||
T 0x0e Dsetdrv
|
||||
|
||||
T 0x10 Cconos
|
||||
T 0x11 Cprnos
|
||||
T 0x12 Cauxis
|
||||
T 0x13 Cauxos
|
||||
|
||||
T 0x19 Dgetdrv
|
||||
T 0x1a Fsetdta
|
||||
|
||||
T 0x20 Super
|
||||
|
||||
T 0x2a Tgetdate
|
||||
T 0x2b Tsetdate
|
||||
T 0x2c Tgettime
|
||||
T 0x2d Tsettime
|
||||
|
||||
T 0x2f Fgetdta
|
||||
T 0x30 Sversion
|
||||
T 0x31 Ptermres
|
||||
|
||||
T 0x36 Dfree
|
||||
|
||||
T 0x39 Dcreate
|
||||
T 0x3a Ddelete
|
||||
T 0x3b Dsetpath
|
||||
T 0x3c Fcreate
|
||||
T 0x3d Fopen
|
||||
T 0x3e Fclose
|
||||
T 0x3f Fread
|
||||
T 0x40 Fwrite
|
||||
T 0x41 Fdelete
|
||||
T 0x42 Fseek
|
||||
T 0x43 Fattrib
|
||||
|
||||
T 0x45 Fdup
|
||||
T 0x46 Fforce
|
||||
T 0x47 Dgetpath
|
||||
T 0x48 Malloc
|
||||
T 0x49 Mfree
|
||||
T 0x4a Mshrink
|
||||
T 0x4b Pexec
|
||||
T 0x4c Pterm
|
||||
|
||||
T 0x4e Fsfirst
|
||||
T 0x4f Fsnext
|
||||
|
||||
T 0x56 Frename
|
||||
T 0x57 Fdatime
|
||||
|
||||
GEMDOS v0.19 (TOS v2):
|
||||
T 0x14 Maddalt
|
||||
T 0x44 Mxalloc
|
||||
(and Pexec mode 6)
|
||||
|
||||
|
||||
Line-A functions
|
||||
----------------------------------------------------------------------------
|
||||
T $0 - Initialization
|
||||
t $1 - Put pixel
|
||||
t $2 - Get pixel
|
||||
t $3 - Arbitrary line
|
||||
t $4 - Horizontal line
|
||||
t $5 - Filled rectangle
|
||||
t $6 - Filled polygon (see bugs.txt)
|
||||
t $7 - Bit block transfer (may miss options not needed by VDI)
|
||||
t $8 - Text block transfer
|
||||
T $9 - Show mouse
|
||||
T $A - Hide mouse
|
||||
t $B - Transform mouse
|
||||
t $C - Undraw sprite
|
||||
t $D - Draw sprite
|
||||
t $E - Copy raster form
|
||||
t $F - Seedfill
|
||||
|
||||
|
||||
VDI functions
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
All TOS 1.0 calls are implemented.
|
||||
|
||||
T v_opnwk
|
||||
X v_clswk
|
||||
T v_opnvwk
|
||||
T v_clsvwk
|
||||
T v_clrwk
|
||||
- v_updwk
|
||||
> vst_load_fonts (needs GDOS or equivalent)
|
||||
> vst_unload_fonts (needs GDOS or equivalent)
|
||||
t vs_clip
|
||||
T v_pline
|
||||
T v_pmarker
|
||||
T v_gtext
|
||||
T v_fillarea
|
||||
- v_cellarray (not supported by any current VDI driver)
|
||||
T v_contourfill
|
||||
T vr_recfl
|
||||
T v_bar
|
||||
T v_arc
|
||||
T v_pieslice
|
||||
T v_circle
|
||||
T v_ellipse
|
||||
T v_ellarc
|
||||
T v_ellpie
|
||||
X v_rbox
|
||||
T v_rfbox
|
||||
T v_justified
|
||||
T vswr_mode
|
||||
> vs_color
|
||||
T vsl_type
|
||||
X vsl_udsty
|
||||
T vsl_width
|
||||
> vsl_color
|
||||
T vsl_ends
|
||||
T vsm_type
|
||||
T vsm_height
|
||||
> vsm_color
|
||||
T vst_height
|
||||
T vst_point
|
||||
T vst_rotation
|
||||
X vst_font
|
||||
> vst_color
|
||||
T vst_effects
|
||||
T vst_alignment
|
||||
T vsf_interior
|
||||
T vsf_style
|
||||
t vsf_color
|
||||
T vsf_perimeter
|
||||
X vsf_udpat
|
||||
t vro_cpyfm
|
||||
> vrt_cpyfm
|
||||
T vr_trnfm
|
||||
> v_get_pixel
|
||||
X vsin_mode
|
||||
X vrq_locator
|
||||
X vsm_locator
|
||||
- vrq_valuator
|
||||
- vsm_valuator
|
||||
X vrq_choice
|
||||
X vsm_choice
|
||||
X vrq_string
|
||||
X vsm_string
|
||||
X vsc_form
|
||||
X vex_timv
|
||||
T v_show_c
|
||||
T v_hide_c
|
||||
X vq_mouse
|
||||
T vex_butv
|
||||
T vex_motv
|
||||
T vex_curv
|
||||
X vq_key_s
|
||||
t vq_extnd
|
||||
> vq_color
|
||||
> vql_attributes
|
||||
> vqm_attributes
|
||||
> vqf_attributes
|
||||
> vqt_attributes
|
||||
> vqt_extent
|
||||
X vqt_width
|
||||
X vqt_name
|
||||
- vq_cellarray (not supported by any current VDI driver)
|
||||
X vqin_mode
|
||||
X vqt_fontinfo
|
||||
T vq_chcells
|
||||
T v_exit_cur
|
||||
T v_enter_cur
|
||||
T v_curup
|
||||
T v_curdown
|
||||
T v_curright
|
||||
T v_curleft
|
||||
T v_curhome
|
||||
T v_eeos
|
||||
T v_eeol
|
||||
T vs_curaddress
|
||||
T v_curtext
|
||||
T v_rvon
|
||||
T v_rvoff
|
||||
T vq_curaddress
|
||||
T vq_tabstatus
|
||||
- v_hardcopy
|
||||
T v_dspcur (Atari docs are incorrect for this call)
|
||||
T v_rmcur (Atari docs are incorrect for this call)
|
||||
- v_form_adv
|
||||
- v_output_window
|
||||
- v_clear_disp_list
|
||||
- v_bit_image
|
||||
- vs_palette
|
||||
- vqp_films
|
||||
- vqp_state
|
||||
- vsp_state
|
||||
- vsp_save
|
||||
- vsp_message
|
||||
- vqp_error
|
||||
- v_meta_extents
|
||||
- v_write_meta
|
||||
- vm_filename
|
||||
|
||||
TOS v4 extended VDI functionality:
|
||||
- 16-bit support for graphics functions (for now, use fVDI)
|
||||
|
||||
|
||||
AES functions
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
All AES versions:
|
||||
t appl_init
|
||||
X appl_read
|
||||
X appl_write
|
||||
t appl_find
|
||||
t appl_tplay
|
||||
X appl_trecord
|
||||
X appl_yield (PC-GEM call)
|
||||
t appl_exit
|
||||
X evnt_keybd
|
||||
t evnt_button
|
||||
X evnt_mouse
|
||||
t evnt_mesag
|
||||
X evnt_timer
|
||||
t evnt_multi
|
||||
X evnt_dclick
|
||||
t menu_bar
|
||||
t menu_icheck
|
||||
X menu_ienable
|
||||
X menu_tnormal
|
||||
X menu_text
|
||||
t menu_register
|
||||
X menu_unregister (PC-GEM call)
|
||||
X menu_click (PC-GEM call)
|
||||
X objc_add
|
||||
X objc_delete
|
||||
t objc_draw
|
||||
X objc_find
|
||||
t objc_offset
|
||||
X objc_order
|
||||
X objc_edit
|
||||
t objc_change
|
||||
t form_do
|
||||
t form_dial
|
||||
t form_alert
|
||||
X form_error
|
||||
t form_center
|
||||
X form_keybd
|
||||
X form_button
|
||||
t graf_rubberbox
|
||||
X graf_dragbox
|
||||
X graf_mbox
|
||||
T graf_growbox
|
||||
T graf_shrinkbox
|
||||
X graf_watchbox
|
||||
X graf_slidebox
|
||||
t graf_handle
|
||||
t graf_mouse
|
||||
t graf_mkstate
|
||||
X scrp_read
|
||||
X scrp_write
|
||||
X scrp_clear (PC-GEM call)
|
||||
X fsel_input
|
||||
t wind_create
|
||||
t wind_open
|
||||
t wind_close
|
||||
t wind_delete
|
||||
t wind_get
|
||||
X wind_set
|
||||
X wind_find
|
||||
t wind_update
|
||||
t wind_calc
|
||||
t rsrc_load
|
||||
t rsrc_free
|
||||
t rsrc_gaddr
|
||||
X rsrc_saddr
|
||||
t rsrc_obfix
|
||||
X shel_read
|
||||
X shel_write
|
||||
X shel_get
|
||||
X shel_put
|
||||
T shel_find
|
||||
X shel_envrn
|
||||
X shel_rdef (PC-GEM call)
|
||||
X shel_wdef (PC-GEM call)
|
||||
|
||||
AES v1.40 (TOS >= v1.04):
|
||||
T fsel_exinput
|
||||
t wind_new
|
||||
|
||||
AES v3.30 (TOS > v3.06):
|
||||
- menu_attach
|
||||
- menu_istart
|
||||
- menu_popup
|
||||
- menu_settings
|
||||
|
||||
AES v3.40 (TOS >= v4):
|
||||
- objc_sysvar (3D look)
|
||||
|
||||
TOS v4 extended AES functionality:
|
||||
- RSC file color icon support
|
||||
|
||||
|
||||
Misc desktop functions
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
- Cartridge file system support (useless - will not be implemented)
|
25
ROMImages/AtariST/doc/todo.txt
Normal file
25
ROMImages/AtariST/doc/todo.txt
Normal file
@ -0,0 +1,25 @@
|
||||
General
|
||||
|
||||
BIOS/XBIOS
|
||||
- implement missing XBIOS calls (e.g. Falcon DSP functions)
|
||||
- reduce the number of 'extern' in .c files
|
||||
- check that RAM disks work
|
||||
- misc. TODOs in floppy.c
|
||||
- implement full XHDI 1.30
|
||||
- let EmuTOS set up correct MMU tree on 68040 (?)
|
||||
|
||||
BDOS (GEMDOS)
|
||||
- move mem-only routines out of proc.c into umem.c or iumem.c
|
||||
|
||||
VDI
|
||||
- The linemask for dashed lines is not calculated correct, depending on
|
||||
the internal calculations of increase in x direction, like in original TOS.
|
||||
|
||||
AES
|
||||
- Implement AES v3.x functions (TOS v3 menu functions and v4 3D look)
|
||||
|
||||
DESK
|
||||
- Add a dialog for configuring the NVRAM (keyboard, languages, ...)
|
||||
- Support for loading DESKTOP.INF (needs remapping of the icon indexes)
|
||||
|
||||
CLI
|
22
ROMImages/AtariST/doc/xhdi.txt
Normal file
22
ROMImages/AtariST/doc/xhdi.txt
Normal file
@ -0,0 +1,22 @@
|
||||
FUNCTION XHDI VERSION SUPPORTED BY EMUTOS
|
||||
----------------------------------------------------------------------
|
||||
XHGETVERSION 0 ALL YES
|
||||
XHINQTARGET 1 ALL YES
|
||||
XHRESERVE 2 ALL NO
|
||||
XHLOCK 3 ALL NO
|
||||
XHSTOP 4 ALL NO
|
||||
XHEJECT 5 ALL NO
|
||||
XHDRVMAP 6 ALL YES
|
||||
XHINQDEV 7 ALL YES
|
||||
XHINQDRIVER 8 ALL YES
|
||||
XHNEWCOOKIE 9 OPTIONAL YES
|
||||
XHREADWRITE 10 ALL YES
|
||||
XHINQTARGET2 11 >= 1.01 YES
|
||||
XHINQDEV2 12 >= 1.10 YES
|
||||
XHDRIVERSPECIAL 13 OPTIONAL NO
|
||||
XHGETCAPACITY 14 OPTIONAL YES
|
||||
XHMEDIUMCHANGED 15 OPTIONAL NO
|
||||
XHMINTINFO 16 OPTIONAL NO
|
||||
XHDOSLIMITS 17 OPTIONAL YES
|
||||
XHLASTACCESS 18 >= 1.25 NO
|
||||
XHREACCESS 19 >= 1.25 NO
|
BIN
ROMImages/AtariST/etos192uk.img
Normal file
BIN
ROMImages/AtariST/etos192uk.img
Normal file
Binary file not shown.
7
ROMImages/AtariST/readme.txt
Normal file
7
ROMImages/AtariST/readme.txt
Normal file
@ -0,0 +1,7 @@
|
||||
THIS EMULATOR DOES NOT EMULATE THE ATARI ST.
|
||||
|
||||
Included here are Atari ST-targeted versions of EmuTOS, being a significant chunk of freely available and redistributable 68000 code that can be used to test the 68000-in-progress.
|
||||
|
||||
EmuTOS is distributed under the GPL. See its licence and other information within the doc/ subdirectory.
|
||||
|
||||
It was obtained via http://emutos.sourceforge.net/en/
|
Loading…
Reference in New Issue
Block a user