EUPHORIC : Reference Manual

0. Simple Windows Usage

1. Command line options

2. INI file

3. Cassette images

4. Disk images

5. Using the Microdisc drive

6. Using the Jasmin drive

7. Using the Telestrat

8. Printer

9. Joystick

10. RS232

11. Light pen

12. Mouse

13. Keyboard

14. Save and resume

15. Screen copy

A1. Hardware configuration : special VGA mode, SoundBlaster

A2. Copyright and credits


0. Simple Windows usage

After having unzipped the distribution in the directory of your choice, double-click the setup script (setup.js).  Then it's really simple indeed: if you want to run an Oric program contained in a tape or disk image, you just have to double-click on it, this will start a standard Oric configuration (Atmos with or without Microdisc). If you want to run your program using another Oric configuration (e.g. Oric-1, or Atmos with a Jasmin controller, or Telestrat), you just have to click on it once with the right button, this will pop-up the contextual menu associated with the file, giving you the opportunity to choose your Oric configuration.

If you don't want to run an Oric program, you can also start the desired configuration through Windows Programs Menu (Euphoric folder).

1. Command line options

Euphoric recognises the following command line options :

  • -m : use a grey level palette for monochrome VGA monitors
  • -r : resume a session (saved with F9)
  • -1 : start as Oric-1
  • -a : start as Atmos
  • -t : start as TéléStrat
  • -d : start with Microdisc controller
  • -j : start with Jasmin controller

Any other parameter is treated as a file containing a disk or tape image.

2. INI file

When run, Euphoric starts by reading the configuration contained in an initialisation file, then analyses the options on the command line. The INI file enables the construction of an Oric configuration, by selecting any of the supported peripherals. Normally the initialisation file is named 'euphoric.ini' and stored in Euphoric’s directory. Windows users can access this file through Windows’ Programs Menu (Euphoric folder). Those who are running MSDOS and wish to say that they can launch Oric from any directory can do so once they have correctly initialised the ORIC system variable (for example, if you have installed Euphoric in c:\oric\system, use the DOS command "set oric=c:\oric\system"). You can equally use several different INI files provided you give each copy of the program a different name. For example, if you have copied euphoric.exe to atmos.exe, when you run atmos.exe it will look for atmos.ini.

3. Cassette images

Two formats of cassette images are supported, corresponding to two types of emulation. The first emulation is called 'software': access to several ROM routines is redirected. The second is a pure hardware emulation. Cassette images for software emulation contain the same bytes as those that the Oric ROM routines save on cassette (although the number of synchronisation bytes has been reduced to 3). This is the most common format, and it is also used by the Amoric, Arcoric and Atoric emulators. Virtually all the Oric programs available on the archive servers use this format. The standard extension for this format is .TAP. The second format is only used by Euphoric, and represents the electronic signal between the Oric and the cassette player, set at 4800 Hz. It permits a very exact emulation of cassettes, useful for transfers between Oric and PC or to run programs which do not use the routines in ROM. The standard extension for this format is .WAV.

3.1. Using cassettes with the software emulation

As you have no doubt already realised, the Basic CLOAD command searches for the required program on the host system (DOS or Linux). It is the same with saving programs with CSAVE. This enables a very intuitive and perfectly compatible use of the commands with all programs intended for use with a cassette recorder, even those written in machine code, or which are well protected. For advanced use when you wish to store your Oric programs in different directories, write programs in several parts, or use the short command (CLOAD""), read on :

  • CLOAD and CSAVE transmit the specified program name to the host operating system. A .TAP extension is automatically added if none has been specified. Also, if no path has been given, tape images are searched in the TAPES. Example: CLOAD"HOUSEOF" loads the HOUSEOF.TAP file found in the TAPES directory. BEWARE! The Oric truncates the program name to 16 characters
  • an exception is made for programs without a name : you know that is possible to save a program using CSAVE "" or to load in the same way with the CLOAD command. As the host systems will not accept an unnamed file, the file takes the name "________.TAP" on the host (8 underscore characters). You are strongly advised to save a program with a name; otherwise you may not recall its contents, and you risk overwriting it with your next save of another program without a name. Should this pseudo-filename appear in your directory, you know that a program has made a save (a saved game for example) without giving it a name. Using the host system commands, you can easily have several of these saves by renaming them differently.
  • it is very easy to use a program in several parts. Ignore the fact provided the parts are concatenated into a single file. To load such a program use CLOAD with the filename: the first program contained in the file will be loaded, and the successive CLOAD commands will load the other parts of the program in the same file. The logic of the emulator for loading programs is as follows: the first CLOAD command determines the filename opened for reading, then loads the first Oric program found in the file. The file remains open for reading, and the following CLOAD commands treat the file as a cassette (sequential access). In particular, this means that a program in the file can be jumped if its name does not correspond to that required. If a CLOAD command is outstanding when the end of the file is reached, that file is closed and a new file opened of the name on the host system that the outstanding CLOAD has required. Unclear? Take an example : suppose that The Hobbit is a program in four parts, concatenated into a file named HOBBIT. With CLOAD"HOBBIT" you request the opening of the file HOBBIT.TAP and the reading of the first Oric program which is found within it. This executes automatically and starts to load the three following segements (the instructions being in machine code in this instance). You can then load a saved game from an earlier occasion: in the vocabulary within The Hobbit, you use the LOAD command which looks to load the first program without a name. However the end of the HOBBIT file has already been reached, so a new file (here the special _________.TAP file since the name required is empty) is opened. And so on : if you want to reload this same saved game, the end of file will already have been reached, and so it will be closed and then re-opened. And if you now decide to reboot the Oric with F8, and then load a new game? As always, since the end of the file has been reached, a new file will be opened... In short you do not normally have to bother thinking - everything happens as though you have a robot who puts your cassettes in your cassette recorder, and then plays the cassette just in time for you to load programs. An understanding of this logic will be of use to you only if you are creating your own "cassettes". What about CSAVE? Because you don't want to write your programs in any old place, and certainly don't want to overwrite your existing "cassettes", a new file is always opened to save a program. Two different programs cannot be saved successively on the same "cassette" (to do that there is always the possibility of using the host system commands, such as 'cat' under Linux or 'COPY /B' in Dos). One exception to this rule : the saving of programs without a name. The first save without a name is placed in the ________.TAP file (overwriting the previous contents); successive such saves are joined on to this file.

3.2. Using cassettes with the hardware emulation

To activate the "cassette hardware" option, select the "Hardware tape" line on the configuration screen (F1), then select a cassette image name. The hardware system is very (too?) faithful to the use of cassettes in reality: the interface of the configuration screen (F1) provides you with a recorder with the commands: fast forward, play, fast rewind and save, tape volume level and even a minutes/seconds counter to find programs on a tape. Loading a cassette presents no particular problems: just note that the Play button of the recorder used alone enables you to hear the recording so as to locate a program (ah... nostalgia...) but is not needed in order to load a program: the Oric is able to use the relay line to operate the tape recorder. During emulation, the play button is therefore always on, and the Oric operates the tape motor relay. So a CLOAD"" will load the first program on the cassette, and a CLOAD"program_name" will load a particular program. Thanks to the relay you do not need to stop the tape recorder after loading a program, the Oric routines take care of it for you. Writing to a cassette demands more care, as with real cassettes. You need to go to the configuration screen and press the Record button (select the line with Enter, the button changes to inverse video) and then key in your CSAVE command. As for saving, the relay controls the cassette motor, keeping it halted until CSAVE is used, and halting recording when the save is complete. On the other hand, don't forget to press the Record button again to release it after your save, or you risk erasing a cassette on the next CLOAD!! Be careful also if you save a program on a cassette you have already used. Position the tape in an empty section, such as the end of the tape, or you will overwrite a program. You are advised to put only one program (or set of part-programs) on one tape, unless you want to prepare a tape for use on a real Oric. Also do not forget to write-protect your precious cassettes, by "breaking" the small virtual plastic part of the cassette (next to its name), this will put the read-only attribute on the file.

3.3. Booting on a cassette, displaying the cassette in-lay

A gadget which adds to the atmosphere: when you start Euphoric with a cassette image on the command line (or if you double-click on the cassette image file), the cassette's inlay will be first displayed if you have it in the JPEG directory (the name of the JPG file should be the same, except for the extension). Then press a key to boot the Oric, Euphoric will issue a CLOAD command automatically.

4. Disk images

Disk images are files on the host system reproducing bit by bit the contents of MFM disks (DD) (in fact the format does not memorise clock transitions, only the contents after decoding: everything the disk controller can provide to the CPU is memorised). Images are conventionally named with a ".dsk" suffix. For the Pravetz 8D (Bulgarian Oric clone), the acceptable disk images are in .NIB format, this format is quite popular among Apple emulators, and carries the most precise information. There are several ways to obtain a disk image: download it from a server, create it by an Oric to PC transfer, or format a new virtual disk within Euphoric (for which, of course, you must already have a system disk image).

4.1. Creating disks with the configuration screen

If you start Euphoric configured with disc drives (Microdisc, Jasmin or Telestrat), you will see on the configuration screen (F1) 4 lines (or less) corresponding to the disk drives which you activated in the initialisation (INI) file: Disk A, Disk B, etc (if you are sure that you started Euphoric with a disk controller and yet you see no Disk line, check in the INI file that you have connected at least one drive in a line such as DriveA=Yes). For any action on a disk drive you must place the cursor (the blue line) on the line of the drive. After the drive name is the name of the disk image inserted in that drive (if it is blank, the drive is empty), and right on the left is a small symbol indicating whether the disk is write protected or not (the symbol represents the small protection hole on a 3.5" disk). You can change the write protection with the left and right arrow keys. To eject a disk press the DEL or BackSpace keys. Pressing Enter enables you to select a disk to insert in the drive: the contents of the current PC directory are then displayed. The Up, Down, Page Up, Page Down, Home and End keys are used to move around the list Select a disk image or a directory with Enter or abandon the selection with Escape. If you need a new blank disk, press Space with the cursor on the disk line. You get a new disk named ________.dsk (or _______1.dsk, _______2.dsk, etc if the files exist already in the current PC directory). Note that the new disk is not formatted, you must format it using the Oric DOS system disk of your choice (OricDos, FT-DOS, Sedoric, Stratsed, etc). When you quit Euphoric, rather than put a label on your new disk, I suggest you rename it to something more descriptive.

5. Using a Microdisc

To use the Microdisc controller, either specify one or more disk image names on the command line, or use the command line option -d, or specify DiskController=Microdisc in the INI file (in both cases, the MicrodiscEprom=... line must point to a ROM image. Note that you are not obliged to use an EPROM of only 8k, you can program one of 16k, or indeed a smaller one). If you specify disk images on the command line, they are inserted in successive drives (up to 4), and the Oric boots the first. While running the emulator you can eject and insert new disks via the configuration screen (but don't do it during a disk write: you will damage the disk just as if you were using a real one!)

6. Using Jasmin

To use a Jasmin controller, start Euphoric with the command line option -j and then one or more disk image names, or specify DiskController=Jasmin in the initialisation file (in both cases the line JasminEprom=... must point to a ROM image). Remember that the electronics of the Jasmin controller does not interfere with the normal booting of the Oric. You must wait for the usual "Ready" message, then press on the boot button of the interface unit (F6 on the emulator). A disk with the Tran DOS system must of course be present in the first drive.

7. Telestrat

To boot a Telestrat instead of an Oric 1/Atmos simply add the -t option to the command line (together with one or more disk image names) or specify the line Computer=Telestrat in the INI file. The contents of the cartridges to be inserted in the Telestrat must be specified bank by bank in the INI file (see paragraph below).

For those who do not know the machine, the Telestrat was the last Oric machine produced by Oric France, although Oric UK set the wheels in motion. The project was started in England under the codename IQ64 and the machine was called the Stratos. This superb machine is backwards compatible with the Atmos+Microdisc, and includes among other things cartridges (all system software is in cartridges), an integrated disk controller, RS232 and Minitel interfaces, and joystick and mouse ports. The cartridges can contain the Rom, additional RAM, or a peripheral (although no peripheral was developed in cartridge form). Cartridges that were produced included one with 64K of RAM, and a number with ROMs for different purposes. These ROMs and RAMs are always accessed in the top 16K of memory, using overlay. There are 8 banks 16K accessible, bank 0 consisting of the upper part of the 64K of internal RAM in the Telestrat. The Telestrat needs at least one ROM cartridge in bank 7 to boot, usually containing the Telemon software (the Telestrat monitor software). A range of other ROMs can be used in the other banks, generally associated with a fixed Bank number, such as Hyper basic in bank 6, TeleAss (an assembler) in bank 5 or Telematic in bank 3 (this last only using 8K). Euphoric allows you to specify directly the contents of each memory Bank in the INI file using lines such as Bank7=... which fixes the Bank as ROM. Each Bank not initialised is automatically considered to be a RAM bank. So, if you boot with a Telemon cartridge image in Bank 7 and a Hyper basic image in Bank 6, you have a Telestrat with 48 + 6 * 16 = 144K of RAM ! (however, Bank 0 is RAM overlay and will usually be used by Stratsed). On booting, Telemon tests the contents of the other Banks, displays the copyright messages of the different ROMs, and tries to load the Stratsed system from the first drive into Bank 0. If the disk in the drive contains a file named BONJOUR.COM, it is executed; if not control is passed to the first Bank with a ROM inserted reading numerically downwards, usually 6 containing Hyper basic. The latest versions of this Bank display a menu giving a choice between the Telematic bank (if present) or a language bank, then in the latter case one between Hyper-Basic or TeleAss (if present).

8. Printer output

To connect a printer to your virtual Oric, ensure that the line Printer=Yes is present in the INI file and set the destination for the output in the line PrinterOutput=... You can specify an output file, which allows later editing of the file, or a printer (or a MCP40 emulator, for example). Again, you can opt for direct output to a real printer by specifying the special corresponding filename, for example: PrinterOutput=lpt1. Finally, ensure that you have activated the printer in the configuration screen, it is off by default for the reason that certain games written to work with the IJK joystick via the printer port do not detect that a printer is connected and pour binary data into it.. The PASE joystick does not interfere with printing (but can interfere with sound...) All these quirks have an explanation, and of course are identical to the real Oric...

9. Joysticks

Euphoric can emulate a joystick using the numeric keypad on the PC (2,4,6,8 for direction and 0 for shoot). Select a type of joystick interface with the line Joystick=... Indicate IJK or PASE for the corresponding interfaces, or No if you don't want a joystick emulated. If you want to emulate a joystick on the integrated left port of the Telestrat, remove the emulation of an IJK or PASE joystick and set the line JoystickPort=Yes in the INI file.

10. RS232

The Oric-1 and Atmos have no standard serial port, but it is very easy to equip them with such an extension (with just 4 chips on a board the size of a matchbox). Euphoric provides you with such an extension based on an ACIA 6551 at address #031C. To activate it, set the line AsynchronousController=Yes in the INI file, and specify the name of the serial port of the PC which serves as an ACIA simulator in the line SerialPort=...

The Telestrat comes with such a serial controller as standard, its communication port can be either the V24 connection (EIA standard level), or the Minitel connector (TTL level). The PC has no Minitel connector, but a commercial PC/Minitel cable can be used to connect a Minitel terminal and use it, for example, with the Telematic cartridge (however, you will also need a small extra piece of kit if you want your PC to detect telephone rings). While simulating an Oric-1/Atmos or a Telestrat, you can of course connect what you like to the serial port, for example a modem or serial printer. Finally, note that you can also use part of the ACIA simulator if you don't have a free serial port on your, or if you don't possess the necessary peripheral for the proper functioning of apiece of software (for example, the system software of the Telestrat hangs if its serial output buffer is full and a data path is not signalled to it): in that case set the line SerialPort=No.

11. Light pen

To use the light pen, simply specify the line LightPen=Yes in the INI file. The light pen is simulated by the PC mouse, and a small grey marker appears at the position of the light pen on the screen. But do not forget that the pen must touch the screen to point to a zone: this action is replaced by pressing the mouse button. Also don't forget that the pen can only work on light areas of the screen, so don't try to select a black zone...

You must have a mouse driver working before you start Euphoric, otherwise the grey marker won't move.

12. Mouse

To use the Telestrat mouse, just specify the line Mouse=Yes in the INI file. You need a mouse driver in place before running Euphoric, otherwise it will move the cursor in one direction only.

13. Keyboard

The Euphoric keyboard precisely emulates that of the real Oric. Thus you can, for example, press the QD5VBL' keys together to succeed at Damsel in Distress... However, if you don't have a US keyboard (despite its british origins, the Oric keyboard was US), there are chances you need to use a keyboard driver if you want to get a WYSIWYG feeling and still play games without sending your fingers to exotic places on your keyboard. Let me just take an example : on the swedish keyboard, the '2' character is at the same location as on the US keyboard, but the shifted key returns " (double-quote) whereas the key has a third symbol (@) which is accessed through the use of the AltGr key. To handle a national keyboard and still have a sound keyboard matrix, it is not possible to have a mapping between PC keys and Oric keys. Instead, the Oric has to run a national keyboard driver: that's what I provide in the "nationalized" roms. These roms allow a WYSIWYG behavior when you type on your PC keyboard, and yet the keys are still at the right places when you play games (these programs access the hardware matrix).

However, I've not written keyboard drivers for every country, and some people may still prefer to use their PC keyboard in a PC way. If you are one of these people, you may switch to the ASCII mode (F3), but be aware you won't be able to press several keys together in this mode, nor play games.

13.1. The "raw" keyboard

In raw mode, there's a direct mapping between one PC key and one Oric key. To every matrix location of the Oric keyboard is assigned a PC key: a default mapping is done inside Euphoric and this can be modified with the configuration file (KbdMatrixRow0..7 lines). The default mapping follows the location of most Oric keys, most noticeable exceptions are the CTRL key of the Oric which is lower down on the PC, the FUNCT key of the Atmos which becomes ALT on the PC, and the arrow keys of the Oric which become the grey arrows of the PC. In order to support nationalized keyboards, there are several additional keys added by Euphoric into the emulation of the Oric matrix: the AltGr key and the second Ctrl key to the right of the space bar, and the CAPS key. Finally, on international PC keyboards there is one key more than on American PC keyboards, found beside the left Shift

This default mapping is entirely redefinable, you just need to specify PC scancodes in the euphoric.ini file.

For example, if you are a purist and want to get one step nearer to the true Oric keyboard with the CTRL key of the Oric next to the A key and the arrow keys around the space bar stay in place, using respectively the CAPS key of the PC and the Ctrl and Alt either side of the space bar, then you would write:

KbdMatrixRow3= 47, 33, 5, 12,-56, 25, 18, 53 ; for VF4-­ PE/

KbdMatrixRow4=999,999, 58,999, 42, 999,999,54 ; for Ctrl, Left-Shift, Right-Shift

KbdMatrixRow5= 2, 1, 44,999, 29, 14, 30, 28 ; for 1eZ ¬ dAr

KbdMatrixRow6= 45, 16, 3, 43, 56, 27, 31, 58 ; for XQ2\¯ ]S

KbdMatrixRow7= 4, 32, 46, 40,-29, 26, 17, 13 ; for 3DC'® [W=

 

In the other hand, I strongly recommend not to use configuration lines for national keyboards. Once again, it is better to write an Oric driver for the national keyboard, this is what you find in the provided roms (bas11_uk.rom for example is for the UK keyboard). This way, the keys stays in place when the matrix is tested by programs (e.g games).

13.2. The ASCII keyboard

With the ASCII mode, there's no need for an Oric national keyboard driver anymore, but there are many drawbacks. First, it's true you can use the original rom, but that's just because the keyboard routines are redirected: the routines are not used, the Oric keyboard matrix is not used, and games won't detect any key. Instead, the PC keyboard driver is used, it provides ASCII codes to the Oric. So, you use the PC keyboard in a PC way, but this means you can't do whatever you want because of limitations introduced in the early days by IBM and Microsoft. E.g you can't type Funct+Shift+key combinations (these are used by Sedoric).

So, you are warned, you should better use Raw mode...

Anyway, I understand some people may prefer the ASCII mode for typing, because the oric keyboard routines are not perfect (they don't choose the right key when several are active), so it is not easy to type fast. With the ASCII mode, you will be able to type faster. However, please note the following limitations:

  • don't type Funct and - (resp. =) on the Telestrat to get a © (resp. a gray square), instead you just have to type ` (backquote) (resp. ~ ), these are the standard ASCII characters which have the same code.
  • Instead of Shift-¬ , Shift-® and Shift-BackSp, use Home, End and Del.
  • Alt-Space does not work, use Alt with the top-left key (beside the '1' key)
  • Alt-Shift-key does not work
  • Ctrl-H generates a BackSpace instead of a left cursor movement.

4. Save and resume

By pressing the F9 key when running the emulator, you can save the state and memory of the Oric in a file (you can specify its name in the INI file with the line DumpFile=...). You can then start Euphoric later on with the command line option -r to recommence at the precise point of the save. You must restart with exactly the same configuration, please don't try to restart an Atmos save on a Telestrat!. If you have a disk configuration, restart Euphoric with the same disks in the drives. For example, if you start Euphoric like this : euphoric -t hypercat.dsk, you must restart it with euphoric -t hypercat.dsk -r to restart in the saved state.

15. Screen dump

Done simply with the PrtSc key... A file in BMP format is generated in the current directory, and each press of the PrtSc key creates a new file: Screen01.bmp, Screen02.bmp, etc. Users of Windows: ensure that PrtSc is not intercepted by Windows (it is by default: clear the PrtSc shortkey in the misc tab of euphoric's shortcut or program information file).

A1. Hardware configuration : special VGA mode, SoundBlaster.

VGA: Euphoric runs on any VGA card in mode Q (Cube) 256x256x256. This mode might not be supported by some LCD panels, try the different settings in Euphoric.ini.

SoundBlaster: to have sound, your machine must have hardware which is compatible with legacy ISA SoundBlaster cards. If Euphoric fails to initialise your card, it is because the card is not truly compatible. If you have good emulation, that works as well (the Gravis UltraSound for example). But you won’t get sound if you are using a Windows system based on NT technology, or if your Soundcard does not have DOS drivers.

A2. Copyright and thanks

Euphoric is copyright Fabrice Francès. Euphoric was developed in 386 assembler under Linux, the freeware Unix operating system, with the whole GNU development environment, in particular the gas assembler and gcc C/C++ compiler. The same source (but for a few details) is assembled with the DOS port of the GNU environment (DJGPP), and runs in 32 bit mode with a DPMI server. Standard IO routines (fopen, fread, fwrite...) from the C library are copyright "The Regents of the University of California" (UCB), which is why I say "This product includes software developed by the University of California, Berkeley and its contributors". No code from the Free Software Foundation is included in this program, it doesn't fall within the GNU General Public License, nor the GNU Library Public License. JPEG display uses free code from the IJG. The svgalib library (Harm Hanemaayer) is used under Linux to switch screen mode.

Thanks to those who have continued to support the Oric over all these years : the members of Oric User Monthly and of Club Europe Oric. Thanks to all testers for their patience, in particular Philippe Mulrane, Bruno Thiebot, Laurent Chiacchierini, Vaggelis Blathras, Mike Pointié and many others... And thanks also to several generous supporters of this development : Roger Barbier, Marc Chamaillou, Roger Barthès, Simon Guyart, Jérémie Petit, Eric Février, Pierre Guyon, André Franz, Rodolphe Bottosso, Jean-David Olekhnovitch.

Euphoric is freeware (but not Public Domain). It is, I believe, one of the best emulators, nothing like those developed in a few weeks, so why don't I charge for it? Because I want to encourage a renaissance of the Oric, to encourage those who remember their good times with this machine to rediscover different values from those that surround today' computers. Don't you find it frustrating that your computer is "obsolete" after 18 months ? Is not ridiculous that we now have rampant technology treacle-coated with badly written software, or games that don't give a tenth of the pleasure of the old 8-bit hits? Aren't you fed up with paying for successive versions of Word (TM), which then oblige you to buy a new computer? Instead of contributing to the ever-increasing wealth of Bill Gates, you would do better to send me the money: a Euphoric for life, instead of a bugged Windows (TM). I no longer give my address (I received 10 times more requests for help than support...), but you can easily find help if you contact the Oric community.