54 |
|
functions (do_get_mem_long() etc.) that translate addresses. This slows |
55 |
|
down the emulator, of course. |
56 |
|
|
57 |
< |
2. Emulated CPU, "real" addressing (EMULATED_68K = 1, REAL_ADDRESSING = 0): |
57 |
> |
2. Emulated CPU, "real" addressing (EMULATED_68K = 1, REAL_ADDRESSING = 1): |
58 |
|
This mode is intended for big-endian non-68k systems that do allow access to |
59 |
|
RAM at 0x0000..0x1fff. As in the virtual addressing mode, the 68k processor |
60 |
|
is emulated with the UAE CPU engine and two areas are set up for RAM and ROM |
105 |
|
priviledged instructions, mostly for interrupt control). So either |
106 |
|
the whole emulator has to be run in supervisor mode (which usually is |
107 |
|
not possible on multitasking systems) or priviledged instructions have |
108 |
< |
to be trapped and emulated. The Amiga version of Basilisk II uses the |
109 |
< |
latter approach (it is possible to run supervisor mode tasks under |
110 |
< |
the AmigaOS multitasking kernel (ShapeShifter does this) but it |
111 |
< |
requires modifying the task switcher and makes the emulator more |
112 |
< |
unstable). |
108 |
> |
to be trapped and emulated. The Amiga and NetBSD/m68k versions of |
109 |
> |
Basilisk II use the latter approach (it is possible to run supervisor |
110 |
> |
mode tasks under the AmigaOS multitasking kernel (ShapeShifter does |
111 |
> |
this) but it requires modifying the Exec task switcher and makes the |
112 |
> |
emulator more unstable). |
113 |
|
c) On multitasking systems, interrupts can usually not be handled as on |
114 |
|
a real Mac (or with the UAE CPU). The interrupt levels of the host |
115 |
|
will not be the same as on a Mac, and the operating systems might not |
239 |
|
- floppy driver ("sony.cpp") |
240 |
|
- disk driver ("disk.cpp") |
241 |
|
- CD-ROM driver ("cdrom.cpp") |
242 |
+ |
- external file system ("extfs.cpp") |
243 |
|
- serial drivers ("serial.cpp") |
244 |
|
- Ethernet driver ("ether.cpp") |
245 |
|
- system-dependant device access ("sys_*.cpp") |
381 |
|
Mac models was custom-built for Apple by Sony (this was one of the first |
382 |
|
applications of the 3.5" floppy format which was also invented by Sony). |
383 |
|
|
384 |
< |
6.10. Serial drivers |
384 |
> |
6.10. External file system |
385 |
> |
-------------------------- |
386 |
> |
|
387 |
> |
Basilisk II also provides a method for accessing files and direcories on the |
388 |
> |
host OS from the MacOS side by means of an "external" file system (henceforth |
389 |
> |
called "ExtFS"). The ExtFS is built upon the File System Manager 1.2 interface |
390 |
> |
that is built into MacOS 7.6 (and later) and available as a system extension |
391 |
> |
for earlier MacOS versions. Unlike other parts of Basilisk II, extfs.cpp |
392 |
> |
requires POSIX file I/O and this is not going to change any time soon, so if |
393 |
> |
you are porting Basilisk II to a system without POSIX file functions, you |
394 |
> |
should emulate them. |
395 |
> |
|
396 |
> |
6.11. Serial drivers |
397 |
|
-------------------- |
398 |
|
|
399 |
|
Similar to the disk drivers, Basilisk II contains replacement serial drivers |
417 |
|
MacOS when it returns to interrupt level 0. This mechanism sounds complicated |
418 |
|
but is necessary to ensure stable operation of the serial driver. |
419 |
|
|
420 |
< |
6.11. Ethernet driver |
420 |
> |
6.12. Ethernet driver |
421 |
|
--------------------- |
422 |
|
|
423 |
|
A driver for Ethernet networking is also contained in the NuBus slot ROM. |
487 |
|
|
488 |
|
For a more detailed description of the Ethernet driver, see "Inside AppleTalk". |
489 |
|
|
490 |
< |
6.12. System-dependant device access |
490 |
> |
6.13. System-dependant device access |
491 |
|
------------------------------------ |
492 |
|
|
493 |
|
The method for accessing floppy drives, hard disks, CD-ROM drives and files |
496 |
|
implemented by the (system-dependant) "sys_*.cpp" modules which provides a |
497 |
|
standard, Unix-like interface to all kinds of devices. |
498 |
|
|
499 |
< |
6.13. User interface strings |
499 |
> |
6.14. User interface strings |
500 |
|
---------------------------- |
501 |
|
|
502 |
|
To aid in localization, all user interface strings of Basilisk II are collected |
503 |
< |
in "user_strings.cpp" and accessed via the GetString() function. This way, |
504 |
< |
Basilisk II may be easily translated to different languages. |
503 |
> |
in "user_strings.cpp" (for common strings) and "user_strings_*.cpp" (for |
504 |
> |
platform-specific strings), and accessed via the GetString() function. This |
505 |
> |
way, Basilisk II may be easily translated to different languages. |
506 |
|
|
507 |
< |
6.14. Preferences management |
507 |
> |
6.15. Preferences management |
508 |
|
---------------------------- |
509 |
|
|
510 |
|
The module "prefs.cpp" handles user preferences in a system-independant way. |