diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index cf183ae97..060a2356a 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -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 = ""; }; 4BFF1D3822337B0300838EA1 /* 68000Storage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 68000Storage.cpp; sourceTree = ""; }; 4BFF1D3B2235714900838EA1 /* 68000Implementation.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = 68000Implementation.hpp; sourceTree = ""; }; + 4BFF1D3C2235C3C100838EA1 /* EmuTOSTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = EmuTOSTests.mm; sourceTree = ""; }; /* 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 */, diff --git a/OSBindings/Mac/Clock SignalTests/EmuTOSTests.mm b/OSBindings/Mac/Clock SignalTests/EmuTOSTests.mm new file mode 100644 index 000000000..435e42bff --- /dev/null +++ b/OSBindings/Mac/Clock SignalTests/EmuTOSTests.mm @@ -0,0 +1,76 @@ +// +// EmuTOSTests.m +// Clock SignalTests +// +// Created by Thomas Harte on 10/03/2019. +// Copyright © 2019 Thomas Harte. All rights reserved. +// + +#import + +#include +#include "68000.hpp" +#include "CSROMFetcher.hpp" + +class EmuTOS: public CPU::MC68000::BusHandler { + public: + EmuTOS(const std::vector &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 m68000_; + + std::vector emuTOS_; +}; + +@interface EmuTOSTests : XCTestCase +@end + +@implementation EmuTOSTests { + std::unique_ptr _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 diff --git a/Processors/68000/68000.hpp b/Processors/68000/68000.hpp index 8442f7f96..872e86b68 100644 --- a/Processors/68000/68000.hpp +++ b/Processors/68000/68000.hpp @@ -95,7 +95,9 @@ class ProcessorBase: public ProcessorStorage { template 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_; diff --git a/Processors/68000/Implementation/68000Implementation.hpp b/Processors/68000/Implementation/68000Implementation.hpp index 8c570d128..393f53d80 100644 --- a/Processors/68000/Implementation/68000Implementation.hpp +++ b/Processors/68000/Implementation/68000Implementation.hpp @@ -6,7 +6,7 @@ // Copyright © 2019 Thomas Harte. All rights reserved. // -template void Processor::run_for(Cycles cycles) { +template void Processor::run_for(HalfCycles duration) { // TODO: obey the 'cycles' count. while(true) { // Check whether the program is exhausted. @@ -44,5 +44,8 @@ template void Processor: prefetch_queue_[0] = prefetch_queue_[1]; break; } + + // Move to the next program step. + ++active_program_; } } diff --git a/ROMImages/AtariST/doc/announce.txt b/ROMImages/AtariST/doc/announce.txt new file mode 100644 index 000000000..d3c6ae046 --- /dev/null +++ b/ROMImages/AtariST/doc/announce.txt @@ -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/ diff --git a/ROMImages/AtariST/doc/authors.txt b/ROMImages/AtariST/doc/authors.txt new file mode 100644 index 000000000..936761e3c --- /dev/null +++ b/ROMImages/AtariST/doc/authors.txt @@ -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) +- 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) +- 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) +- Lots of bugfixes & cleanups all over the place +- Integration and maintenance of the AES and GEM-Desktop +- XBIOS DMA sound functions + +Petr Stehlik (PES) +- BIOS disk interface, BDOS filesystem +- Falcon and ARAnyM support + +Laurent Vogel (LVL) +- Original ST hardware (MFP, ACIA, parport, sound, floppy, ACSI) +- Makefile tricks and tools +- NLS support + +Martin Doering (MAD) +- 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 + Petr Stehlik + Pavel Salač + Jan Krupka + +- Finnish translation + Eero Tamminen + +- French translation + Laurent Vogel + Vincent Rivière + +- German translation + Thomas Huth + +- Greek translation + George Nakos + Christos Tziotzis + +- Italian translation + Lodovico Zanier + +- Spanish translation + Gabriel Huertas + David Gálvez + Jordi Mestres Ruiz + +- Russian translation + Dima Sobolev + + +Thanks also to all mailing list contributors for their help, and +especially: + +Stanislav Opichal (SOP) +- FreeMiNT kernel bootstrap via BOOTSTRAP NatFeat + +Frank Naumann +- FreeMiNT + +Ctirad Fertr , +Milan Jurik +- The ARanyM team + +Johan Klockars +- fVDI + +Henk Robbers +- XaAES, AHCC + +Jacques-Etienne Rahon "Kevin Flynn" +- 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 +- Renamed internal VDI functions to avoid name conflicts + +Jean-François Del Nero +- 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 +- XHNewCookie() implementation + +Fredi Aschwanden +and all the ACP team +- Tests on the FireBee hardware + +James Boulton +- floprw() fix for reading multiple sectors + +Stephen Leary +- Fixed support for IDE slave device + +Miro Kropáček +- 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 +- 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 +- Support for Norwegian & Swedish keyboards +- Support for MonSTer add-on board + +Thorsten Otto +- 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 diff --git a/ROMImages/AtariST/doc/bugs.txt b/ROMImages/AtariST/doc/bugs.txt new file mode 100644 index 000000000..bebf96f71 --- /dev/null +++ b/ROMImages/AtariST/doc/bugs.txt @@ -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.) diff --git a/ROMImages/AtariST/doc/changelog.txt b/ROMImages/AtariST/doc/changelog.txt new file mode 100644 index 000000000..d3246e237 --- /dev/null +++ b/ROMImages/AtariST/doc/changelog.txt @@ -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 diff --git a/ROMImages/AtariST/doc/emudesk.txt b/ROMImages/AtariST/doc/emudesk.txt new file mode 100644 index 000000000..300d88c8f --- /dev/null +++ b/ROMImages/AtariST/doc/emudesk.txt @@ -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. diff --git a/ROMImages/AtariST/doc/incompatible.txt b/ROMImages/AtariST/doc/incompatible.txt new file mode 100644 index 000000000..32f35cf79 --- /dev/null +++ b/ROMImages/AtariST/doc/incompatible.txt @@ -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. diff --git a/ROMImages/AtariST/doc/license.txt b/ROMImages/AtariST/doc/license.txt new file mode 100644 index 000000000..82fa1daad --- /dev/null +++ b/ROMImages/AtariST/doc/license.txt @@ -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. + + + Copyright (C) + + 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. + + , 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. diff --git a/ROMImages/AtariST/doc/status.txt b/ROMImages/AtariST/doc/status.txt new file mode 100644 index 000000000..596913c7d --- /dev/null +++ b/ROMImages/AtariST/doc/status.txt @@ -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) diff --git a/ROMImages/AtariST/doc/todo.txt b/ROMImages/AtariST/doc/todo.txt new file mode 100644 index 000000000..7aa0fbc50 --- /dev/null +++ b/ROMImages/AtariST/doc/todo.txt @@ -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 diff --git a/ROMImages/AtariST/doc/xhdi.txt b/ROMImages/AtariST/doc/xhdi.txt new file mode 100644 index 000000000..8f1287017 --- /dev/null +++ b/ROMImages/AtariST/doc/xhdi.txt @@ -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 diff --git a/ROMImages/AtariST/etos192uk.img b/ROMImages/AtariST/etos192uk.img new file mode 100644 index 000000000..4df163713 Binary files /dev/null and b/ROMImages/AtariST/etos192uk.img differ diff --git a/ROMImages/AtariST/readme.txt b/ROMImages/AtariST/readme.txt new file mode 100644 index 000000000..2a40ac2d3 --- /dev/null +++ b/ROMImages/AtariST/readme.txt @@ -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/ \ No newline at end of file