1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-06-09 01:29:44 +00:00

Introduces EmuTOS, and starts constructing test cases around it.

This commit is contained in:
Thomas Harte 2019-03-10 18:40:12 -04:00
parent a4f6db6719
commit 89c71f9119
16 changed files with 2433 additions and 2 deletions

View File

@ -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 */,

View 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

View File

@ -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_;

View File

@ -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_;
}
}

View 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/

View 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

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

View 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

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

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

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

View 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)

View 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

View 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

Binary file not shown.

View 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/