You are on page 1of 27

____ _ _ _ ____ ____ ____ ____ ____ ____

/ __ \ / \/ \ | | / ___| / __ \ / __ \ | _ \ / __ \ / ___|
| |__| || || || | _ | |__| | __ | | | || | \ \| | | | \_ \
| __ || |\/| || || |__| || __ | |__| | |_/ \| |_/ /| |__| | __\ \
|_| |_||_| |_||_| \____/ |_| |_| \___/\/|____/ \____/ |____/

S O F T W A R E Q D O S E M U L A T O R F O R T H E A M I G A

--------------------------------------------------------------------------

VERSION 3.24 ARCHIVE CONTENTS

'QDOS4amiga1.lha' QL clone (binaries and documentation)

'QDOS4amiga2.lha' QL clone (assembly source)

'QDOS4amiga3.lha' QL clone (QDOS utilities disk)


Mount the QLfilesystem, then copy the files from
this archive onto a QDOS format disk.

--------------------------------------------------------------------------

AMIGA-QDOS v3.24 FEATURES

* FASTER than the original QL


* LOADS/SAVES to QL floppy disks
* SOUND supported in full (all possible convolutions of BEEP)
* SYSTEM VARIABLES movable (even into FAST RAM).
* 2ND-SCREEN fully usable (like MINERVA ROM)
* SCREEN modes 4 and 8 BOTH supported
* KEYBOARD history from standard <ALT><ENTER> combination
* ALL known machines supported A500, A500+, A600, A1200, A4000 etc
* FOR COMPATIBILITY, data and instruction caches can be enabled/disabled
* FOR COMPATIBILITY, emulates MOVE SR,<ea> in user mode on 68020 & above
(the instruction is priviledged on 020+).
* FOR COMPATIBILITY, emulates MOVEP instruction on 68060
(the instruction is not implemented on the 68060).
* QDOS utilties disk included with release
* FILESYSTEM for reading and writing QDOS disks from AmigaDOS
* BASED ON a JS ROM with many JS ROM bug fixes.
* SOURCE included

--------------------------------------------------------------------------

WHAT'S NEW IN VERSION 3.24

* QDOS ROM relocatable into FAST RAM


* some bug fixes

--------------------------------------------------------------------------

QUICK OVERVIEW

This is a major reworking of Rainer Kowallik's QL emulator for the


Amiga. Most of the new features have been added by Mark J Swift
(e-mail: msw@blackpool.ac.uk) - Rainer is no-longer involved in
the project. The release includes full assembler source and a QDOS
utilities disk. Also included is a filesystem by Francis N Swift for
handling QDOS disks from the Amiga side.

--------------------------------------------------------------------------

QL FILESYSTEM

The QL filesystem is a handler written by F N Swift that allows


transparent access to QDOS (QL) disks. The file system requires a device
driver that can read and write PC style sectors, such as mfm.device or
messydisk.device.
The QL filesystem makes it possible to insert a QL disk into an Amiga
drive and use it like any other disk. Files can be renamed, deleted or
copied to and from QL disks, file dates can be set, disks can be relabled
and so on...

Please read QLfilesystem.doc for more information.

--------------------------------------------------------------------------

THE SINCLAIR QL...

,--------------------------------------------/|/|/|/|/|/|/|/|/|/|/|
/ /_//_//_//_//_//_//_//_//_//_//_//_//_//_/ / /|
/ /_//__//_//_//_//_//_//_//_//_//_//_//_/ / / / /
/ /_//____//_//_//_//_//_//_//_//_//_//____/ / / /
/ /_//__//_//_//_________________//_//_//__/ /_____________________/ /
/_'__________________________________________/|__.====== .====== __|/
|_____________________________________________:======================/
|________________________________________________________________|/

The Sinclair QL is a black slab-like computer based around Motorola's


68008 micro-processor. The QL was launched as the follow-up to the
ZX Spectrum, aimed at the business market rather than the games market
and was supplied with wordprocessor, spreadsheet, database and charting
programs. It features a fully multi-tasking operating system (QDOS)
and a very good built-in BASIC. The QL failed to achieve the mass-market
appeal of its predecessor, but nevertheless attracted a large dedicated
user base... which is still going strong.

--------------------------------------------------------------------------

QUICK START

INSTALLING THE EMULATOR

1. Create a directory on your destination volume for the Amiga-QDOS


binaries and documentation.

2. Make an assignment to this directory as "QLBOOT:". Consider making


the same assignment in your start-up sequence.

3. Copy the contents of the archive QDOS4amiga1.lha to QLBOOT:

4. Move the contents of 'c','devs' and 'l' to the relevant system


directories and remove them from QLBOOT:.

MOUNTING THE QL FILESYSTEM

Under WB1.3 mountlst.ql should be placed in devs: and messydisk.device


should be available. Type 'MOUNT QL0: from devs:mountlst.ql' in a
Shell or add the command to your start-up device and REBOOT.

Under WB2 with crossDOS, make sure that you have at least MOUNT 40.4
and SETPATCH 40.16 installed (distributed with AmiCDFS). Then install
as in WB3 below. If you do not have crossDOS, install as in WB1.3.

Under WB3 copy the provided QL0 and QL1 definition files to
devs:dosdrivers. Check that your start-up sequence contains the
command 'MOUNT Devs/dosdrivers/~(#?.info)', then REBOOT.

RECREATING THE QDOS UTILITIES DISK

1. Mount the QLfilesystem.

2. Copy QDOS4amiga3.lha to RAM:

3. Double-click on the 'QLdisk.unLHA' script icon.


Insert a blank disk into DF0: at the appropriate moment... then wait.
Rename the resultant QDOS (QL) disk as 'QLutils:'

Alternatively you may launch 'QLdisk.unlha' with QDOS4amiga3.lha


SHIFT-selected. This way the archive need not be copied to RAM:

STARTING THE EMULATOR

1. Double-click on the 'Start_QDOS_UK' icon.

2. At the F1/F2 prompt, insert QLutils: into DF0: and press F1.

--------------------------------------------------------------------------

A QUICK TOUR OF THE QL

When you first switch on a QL (or when you run the emulator) you are
presented with a screen requiring you to press F1 or F2.

On an actual QL, pressing F2 initialises the 3 standard windows (BASICs


#0, #1 and #2) such that they do not lie off the side of the screen when
viewed on a PAL TV. Since the video on the Amiga is very much compressed
relative to the QL, it is always best to choose the monitor setting - F1,
on the emulator.

Upon pressing F1 or F2, the system will attempt to load and run a file
called 'BOOT' from the disk inserted in the internal drive (FLP1_). With
the QDOS QLutils: disk inserted, a BASIC BOOT program will run that loads
a number of toolkits and installs a small RAM disk.

In any case, you will eventually be presented with a flashing cursor. This
is your bog-standard home-computer flashing-cursor, waiting for a NEW
program to be typed-in and RUN, or LOADed from floppy disk.

For example, if you type in the following:

NEW
10 PRINT "Hello World!"
RUN

...the words 'Hello World!' are printed on screen.


If you add the following:

20 GOTO 10
RUN

...then the same words will be repeatedly printed until you BREAK the
program with the keys <CTRL><SPACE>.

You can save the program to the disk in the internal drive with the
command:

SAVE FLP1_HELLOWORLD_bas

or, if there is no room on disk, you can FORMAT a new disk with the
command:

FORMAT FLP1_WORKDISK

...which formats the disk in the internal drive and gives it the name
'WORKDISK'. Remember there is no going back once a disk is formatted.

To list the contents of the internal floppy drive type:

DIR FLP1_

Loading a BASIC program from floppy disk is a simple matter:


LOAD FLP1_PLAY_MUSIC_bas

You can then type:

LIST

...to see the BASIC listing, or:

RUN

...to execute the BASIC program.

To execute a machine code task, use the EXEC_W keyword.


For example:

EXEC_W FLP1_XCHANGE

...will load and execute the stated program from the disk in the
internal drive. At the same time it will suspend BASIC ( _W = wait ).
To multi-task, use EXEC and press CTRL-C to task switch.

--------------------------------------------------------------------------

CUSTOM STARTUP

The default 'Start_QDOS' icons are configured to make best-use of your


machines' RAM. For example on a QDOS will automatically be loaded into
FAST RAM (if available) which is significantly faster than CHIP. In some
cases however it may be that you want to force a particular configuration.
For example Running QDOS from CHIP makes for a significantly more QL-like
(and hence QL compatible) environment than running from FAST RAM.

The directories CUSTOM_UK and CUSTOM_DT contain customised start-up icons


for different machine configurations.

QDOS_128K

This icon gives you a memory configuration similar to the original


unexpanded 128K QL.

CHIP_ONLY

Run QDOS from CHIP memory, and ignore all memory expansions.

A500_RANGER_ONLY

For A500s only. Ignore all other memory ranges and run QDOS from RANGER
memory (address $C00000 onwards). A memory board fitted in the trap-door
beneath the machine gives you this type of memory.

A500_EXPANSION_ONLY

For A500s only. Ignore all other memory ranges and run QDOS from EXPANSION
memory (address $200000 onwards). Some A500 peripherals that fit to the
expansion port on the left of the machine give you this type of memory.

CREATING YOUR OWN CUSTOM START-UP ICON

If none of the provided custom start-up icons reflect the set-up you
require for your machine, it is possible to create your own. Click on any
start-up icon and select copy (WB 2.0), or duplicate (WB 1.3). Click on
the copy and rename it accordingly. Go to information from the workbench
menus and change the tool type arguments as follows:

-m<lomem>-<himem>

This sets the area of memory available to QDOS. <lomem> corresponds to the
start of the system variable area and <himem> corresponds to RAMTOP.
-q<QDOS system ROM>

This sets the name of the required QDOS system ROM. The default name is
'SYS_cde'

-p<patcher ROM>

The patcher ROM does most of the work of getting the almost QL-like system
ROM to work on the Amiga. The default name is 'MAIN_cde'

Following all other parameters is a list of ROMs to load.

--------------------------------------------------------------------------

QDOS SYSTEM ROM

The Amiga-QDOS system ROM is a JS equivalent, with all machine dependant


routines patched out, a number of bug fixes, in-built exception handling
and improved floating-point output routines.

It is possible to edit and print floating point numbers in up to 8 digits


before going into E notation. QDOS normally enters E notation after 7
digits, which can make it difficult if you're working with long integers
or 32 bit addresses.

The exception handling routines allow programs to terminate gracefully


should an instruction error, bus error or general exception occur.

The move sr,<address> instruction in user mode is emulated in software for


machines with 680X0 processors. This instruction is not priviledged on the
68000/68008, and can be executed while in user mode. On later processors
the instruction can only be executed in supervisor mode, and causes a
PRIVILEDGE VIOLATION if executed in user mode.

Programs (user or supervisor) can be single-stepped by setting bit 15 of


the status register. The current register contents are dumped to BASICs'
#0 with each depression of the <SPACE> bar. Pressing <ENTER> exits trace
mode. If #0 is not a CON channel, TRACE information is listed to the
channel continuously without any need of user intervention.

External ROMs handle all machine dependant activities; such as display,


keyboard and system time. The system recognises EPROMs at $1C000 and $C000
only. The external ROM "MAIN_cde" hijacks the BOOT procedure temporarily
to look for ROMs situated in memory peculiar to the Amiga.

--------------------------------------------------------------------------

O/S HOOKS

The external ROM "MAIN_cde" does most of the work necessary to get the
QDOS system ROM operating correctly by hooking itself into the relevant
system vectors. L_QDOS currently puts "MAIN_cde" at $1C000, well within
the first 512 K of CHIP RAM. Once loaded, "MAIN_cde" searches for
expansion ROMs situated in areas of memory peculiar to the Amiga.

ADDITIONAL BASIC EXTENSIONS

There are seven keywords associated with "MAIN_cde"

RESET_TOP <oldtop>,<newtop>

This keyword allows users to re-boot with a new RAMTOP.

Altering RAMTOP for Amiga-QDOS is not as simple as poking the system


variable SV_RAMT and doing a re-boot, because AmigaQDOS ROMs (VDU, KBD
etc) are ALWAYS loaded between RAMTOP and the end of physical memory.
This means that moving RAMTOP requires you to move the ROMs also.
This keyword does all the dirty work for you and takes two parameters.
<oldtop> is the old top of physical memory and <newtop> is the required
top of physical memory.

For example on an A500, having booted Amiga-QDOS to make use of ranger RAM
at $C00000-$C80000 and wishing to reboot leaving ranger RAM free and using
the bottom 512K only, one could use the command:

RESET_TOP hex("C80000"),hex("80000")

or without TK2 or PDTK...

RESET_TOP 13107200,524288

afterwards, to re-use the memory - issue the command...

RESET_TOP 524288,13107200

RESET_SV <newsv>

This keyword allows users to reposition the system variables and re-boot.

For example to move the system variables so as to free the second screen
area:

RESET_SV 196608

To move the system variables back to their default position:

RESET_SV 163840

RESET_EXTENTS <oldtop>,<newtop>,<newsv>

This keyword allows users to simulataneously reposition the system


variables and RAMTOP and then re-boot.

For example on an A4000 with 2MB CHIP and 2MB of expansion ($7E00000-
$8000000), one could move the QDOS work area from CHIP to FAST RAM with
the following command:

RESET_EXTENTS HEX("200000"),HEX("8000000"),HEX("7E00000")

QDOS tasks loaded into FAST RAM, run significantly faster. Running QDOS in
FAST RAM relies on QDOS tasks being 32-bit clean.

ICACHE_ON and ICACHE_OFF

These two commands allow the instruction cache to be turned on and off
respectively. Amiga-QDOS boots with the instruction cache disabled.
Turning the instruction cache on can speed up QDOS tasks considerably but
relies on tasks to be well behaved (and not self modifying).

DCACHE_ON and DCACHE_OFF

These two commands allow the data cache to be turned on and off
respectively. Amiga-QDOS boots with the data cache disabled.

COPYBACK_ON and COPYBACK_OFF

These two commands allow copyback mode to be turned on and off


respectively. Amiga-QDOS boots with copyback mode disabled.

--------------------------------------------------------------------------

CLOCK
INITIALISATION

The system fully supports the Amiga's battery backed-up clock, and will
provide you with the correct date and time by way of the SuperBASIC
commands DATE and DATE$ or the equivalent machine code TRAP instruction.
If your Amiga does not include a clock, the system time will default to a
value passed from AmigaDOS.

BUGS

Doesn't find the battery backed-up clock in the A4000. The hardware has
probably moved.

--------------------------------------------------------------------------

VDU

SECOND SCREEN

The JS system ROM is altered to allow the system variables to be moved and
for the second screen to be used. The MODE command is altered accordingly,
to act more like the Minerva version.

If you are familiar with the way Minerva handles its screens then you
should be able to understand the following.

The normal parameters for MODE still apply but if a second parameter is
given, then both parameters are passed on to the MT.DMODE system trap in D1
and D2 without alteration. D1 then takes on the following meaning:

bit(s) function (clear) | (set)

0 other screen visible | blank


1 default screen visible | blank
2 other screen mode mode4 | mode8
3 default screen mode mode4 | mode8
4 show screen scr0 | scr1
5 set default screen scr0 | scr1
6 D1 usage D1.W | D1.B (D1.W - msb all ones)

7 opposite to bit 6 i.e bits 7/6 always = 0/1 or 1/0

8-15 ignored if bit 6 set. Otherwise...

8-13 associated with bits 0-5 (clear=set/clr, set=toggle)

14 redraw other screen


15 redraw default screen

Thus to clear, set or toggle just ONE attribute of the display mode, the
mode command takes the following form:

MODE -128+n*(k-256),-1

where:
(k=0) | (k=1) | (k=257)

(n=1) - other screen state: visible | blank | toggle


(n=2) - default screen state: visible | blank | toggle
(n=4) - other screen mode: 4 colour | 8 colour | toggle
(n=8) - default screen mode: 4 colour | 8 colour | toggle
(n=16) - show screen: scr0 | scr1 | toggle
(n=32) - set default screen: scr0 | scr1 | toggle

You can of course mix and match...

MODE -128 + 2*(0-256) + 16*(1-256) + 32*(1-256),-1


...performs the following:

default screen = Scr1


default screen = visible
show Scr1

Note that the default screen is set BEFORE any other operations are
performed.

It is now possible to launch tasks in Amiga-QDOS that default to scr1 for


output:

RESET_SV 196608 move system variables & reset

MODE -128+32*(1-256),-1 set default screen to scr1


EXEC flp1_XCHANGE launch application
MODE -128+32*(0-256),-1 re-set default screen to scr0

CTRL-C will switch screens if the enabled task requires it. You can also
switch screens by pressing CTRL-TAB, or by poking the relevant hardware
register.

HARDWARE REGISTERS

Amiga-QDOS emulates the hardware register MC_STAT ($18063) to an extent.


You can blank the screen by setting bit 1. You can switch screens by
toggling bit 7. You can switch screen modes by toggling bit 3.

MOUSE POINTER

The emulator can display, and return the screen co-ordinates of a simple
mouse pointer (SPRITE). Although the mouse routines work correctly with
QRAM pointer software, the co-ordinates of the sprite do not correspond
with the co-ordinates of the QRAM pointer. When using QRAM, you should
therefore not have the Amiga SPRITE pointer active.

ADDITIONAL BASIC EXTENSIONS

There are five keywords associated with the VDU driver.

BLIT_OFF

The BLIT_OFF command turns all blitter activity off. This will prevent the
VDU driver from refreshing the QL screen.

BLIT_ON

The BLIT_ON command turns blitter activity back on allowing the VDU driver
to properly refresh the QL screen.

SCR_PRIORITY <inc>, <bnd>

This command sets the speed at the VDU driver refreshes the QL screen. It
allows the blitter to move (inc/bnd)*(1/16) th of the screen every 1/50th
of a second - for example:

SCR_PRIORITY 4,1

This will refresh (4/1)*(1/16) = 4/16 =1/4 of the screen every 1/50th of
a second.

SCR_PRIORITY 8,1

This will refresh (8/1)*(1/16) = 8/16 =1/2 of the screen every 1/50th of
a second.
SCR_PRIORITY 16,1

This will refresh (16/1)*(1/16) = 16/16 = whole of the screen every 1/50th
of a second.

If you want maximum CPU speed and don't mind a slow display, you could
try:

SCR_PRIORITY 1,2

Please experiment, but remember - refreshing more than half the screen in
1/50th of a second is just not physically possible. The default setting is
SCR_PRIORITY 4,1.

PTR_ON

This command displays a SPRITE on screen, relating to the position of the


mouse pointer.

PTR_OFF

This command hides the SPRITE relating to the position of the mouse
pointer.

BUGS

Due to a timing fault, for certain values of SCR_PRIORITY the first byte
of every 32 nd line flickers spuriously. The VDU driver could time BLITTER
access to screen memory more precisely, if the BLITTER commands were part
of a general COPPER list. This would reduce screen flicker since memory
access would sync with the vertical refresh automatically.

--------------------------------------------------------------------------

ACE

This ROM takes over from the blitter providing QL screen emulation via the
processor. On 68030 processors and above, screen emulation is both
smoother and faster. On earlier processors it can be too processor
intensive - so is not enabled on the F1/F2 boot screen but can be enabled
with the ACE_ON command. The ACE routines (written by S N Goodwin) have an
advantage over the blitter routines in that they fully support BOTH MODE 4
and MODE 8.

Why?

The 32 bit CPU can convert the QL interleaved display into two Amiga bit
planes faster than the Blitter in the AGA chip-set. If the CPU is used the
Qdos kernel in chip RAM runs faster and the top display update rate is
increased to a full flicker-free 50/60 Hertz. You might also like to try
it on OCS/ECS systems with a processor accelerator, but the 16 bit chip
RAM will limit the cpu's advantage. If you only have a 68000 you're almost
certainly better off using the blitter.

How?

The ACCELERATOR is a normal Qdos server in the polled list, performed 50


times per second while the machine is in User mode (and skipped in
Supervisor mode). It does the same job as the blitter interrupt server, so
that is turned off - to free extra bus bandwidth - once ACE is up and
running.

Really, How?

The method relies on the caches for code and data and is optimised for the
68040. We copy alternate bytes from Qdos screen memory to alternate
bit-planes. The method used in ACE_CODE reads eight bytes at a time then
swaps registers around to generate two or three long words for the
bitplanes. This is much faster than the use of MOVE.B or MOVEP for byte
access.

This program detects the data cache on the 68030/40/60 and temporarily
turns it off for top speed when reading and writing chip memory.

ACE v BLITTER - raw CPU power versus custom chips

TEST RESULTS for ACE runing on a CBM A4000/040 with Chip RAM only or with
copyback on or off in Fast RAM. These tests used ACE version 3.15, MODE 4
and the DIY Toolkit timers to time one 10,000 iteration FOR loop.

ACE_PRIORITY CHIP QDOS FAST QDOS COPYBACK

16,1 17.18 4.66 3.46


16,2 5.04 1.50 1.12
16,3 4.08 1.22 0.90
16,4 3.72 1.10 0.84
16,5 3.52 1.06 0.80
16,6 3.42 1.02 0.78
16,7 3.34 1.00 0.76
16,8 3.28 0.98 0.74

At ACE_PRIORITY 16,N the 68040 spends about three quarters of 1 in N


fields servicing the display. Chip RAM access time predominates. Note that
Copyback speeds up SuperBASIC by over 30 per cent compared with Write
Through cacheing, and the emulator is four or fives times faster if you
run it from fast RAM even though the 'QL ROM' is still in Chip!

In a system with 32 bit fast memory the speed of tasks and extensions is
much increased, but the screens, Qdos and SuperBASIC interpreter routines
remain in chip memory, for compatability reasons, and that is relatively
slow. CPU caches can soak up some but not all of the difference.

Both blitter and CPU display updates are slowed if chip memory is already
busy, e.g. because of Qdos ROM reads or screen writes. The difference is
that the blitter contention is asynchronous, while the CPU is the only
thing (other than DMA) accessing chip memory during ACE screen updates.

ADDITIONAL BASIC EXTENSIONS

There are five keywords associated with ACE.

ACE_OFF

The ACE_OFF command turns off ACE screen emulation and re-enables blitter
screen emulation.

ACE_ON

The ACE_ON command disables blitter screen emulation and enables ACEs'
processor dependent screen emulation.

ACE_PRIORITY <inc>, <bnd>

This procedure determines the number of 2K chunks and number of fields per
update, 1..16 and 1..255 respectively. The default 8,2 is the equivalent
of SCR_PRIORITY 4,1.

The parameters correspond to those of SCR_PRIORITY.

The first parameter controls the smoothness of the update, in units of


1/16 of a screen. If you have a fast processor (68040 or better) you can
use 16 and have the entire screen updated in one go - twice as fast as the
quickest blitter setting, 8,1 - but this is too much for a 25 MHz 68030,
which struggles to complete a field in 20 milliseconds. Lower values mean
the processor tries to do less in a single field, which means you may see
a line across the screen during rapid screen updates, at the point where
one update stops and the next takes over.

Qdos does not allow an interrupt server to take more than 20 mS to run -
the time up to the next interrupt - so you should not experiment with high
values for ACE_PRIORITY unless you have a fast processor. Ignore this and
Qdos may lock up!

The second parameter controls the number of fields that are displayed
between one full (or partial) update and the next. A value of 1 means that
ACE runs 50 times per second (every 1 field) which imposes a heavy CPU
load but gives the most rapid screen response. A value of 2 means that ACE
runs every other frame; 3 means ACE runs once every three frames, giving
more time for programs at the price of only about 17 full or paritial
updates per second. The second value can be up to 255, which leaves 99.6
per cent or more of the CPU time for 'real' programs but gives a very slow
screen update - about one update every 5.1 seconds! If you have fast
memory you're probably better off using the blitter than ACE in this case.

ACE_ON and ACE_OFF link and unlink the interrupt handler. ACE_PRIORITY
reports 'not found' if you try to use it when ACE is not linked in.

ACE_RATE%

This function returns the number of fields that are output to the screen
between one ACE update and the next.

ACE_SIZE%

This function returns the number of 2K sections of the Qdos screen to be


copied to Amiga bitplanes at each update.

Together these functions ACE_RATE% and ACE_SIZE% let you read the current
ACE_PRIORITY settings.

--------------------------------------------------------------------------

KEYBOARD

QL RESET

You can perform a QL cold-reset by holding down CTRL-SHIFT-ALT-TAB. It is


therefore possible to load an expansion ROM into memory at $C000, and have
the emulator install it upon the next cold-reset.

SECOND SCREEN

It is possible to flick between the second screen and the standard screen
by pressing CTRL-TAB.

INTERRUPTS

You can simulate a level 7, 5 or 2 interrupt by pressing CTRL-ALT and the


relevant number (i.e. 7,5 or 2). The level 7 interrupt (CTRL-ALT-7)
performs the equivalent of a non-maskable interrupt (NMI) and can be used
to resume the machine from fatal system hang-up. It Restores BASIC'S A6
and A7, sets its Priority to 32, releases the Job and continues execution
at the Warm-start address.

SPECIAL KEYS

Keys F6-F10 produce the same codes as SHIFT F1-F5

NEW TRAP #1 CALL

Amiga-QDOS includes a new foreign Keyboard Manager TRAP #1, D0=$27,


D1=Address of table, that allows for a customisable keyboard table (the
default is German).
ADDITIONAL BASIC EXTENSIONS

There are six keywords associated with the keyboard.

KEYDT

This command sets a German keymap (the default)

KEYUK

This command sets a UK keymap (only available if you load KEYUK_cde).

PTR_LIMITS [<Xleft>,<Ytop>,<Xright>,<Ybottom>]

This command sets limiting bounds for the position of the mouse pointer.
The default limits are 0,0,256,256

PTR_INC [<Xdist>,<Ydist>]

This command sets how far the mouse must be moved before the KEYROW
function registers cursor movement. By default Xdist is 4 and Ydist is 8.

PTR_X%

This function returns the X coordinate of the mouse pointer. Mouse


coordinates are measured in low resolution pixels (a limit imposed on
Amiga sprites).

PTR_Y%

This function returns the Y coordinate of the mouse pointer. Mouse


coordinates are measured in low resolution pixels (a limit imposed on
Amiga sprites).

--------------------------------------------------------------------------

SOUND

QDOS sounds are supported in full, via the SuperBASIC BEEP command and its
equivalent machine code MT.IPCOM command (Trap#1 with d0=$11).

--------------------------------------------------------------------------

SER DEVICE

The serial device is pretty reliable - even at high speeds!

SER DESCRIPTION

Following is a complete description of the SER device syntax, which


includes a number of useful additions.

OEMS - ODD, EVEN, MARK or SPACE parity (default = none)

IH - IGNORE or use HANDSHAKE (default = ignore)

RNCL - RAW, CR/LF, CR or LF end of line protocol (default = raw)

ZF - CTRL-Z or FORMFEED end of file (CLOSE) protocol


(default= none)

For example the command OPEN#4;"SER1INF" opens the serial channel to


ignore H/W handshakes, translate end of line characters into CR/LF and
send a form-feed at the next CLOSE#4.

On input, CR, LF and the CR/LF couple are translated into a single LF
character - unless RAW is selected as the end of line protocol.
In future releases 'IH' may be extended to 'IHX', allowing for Xon/Xoff
(software) handshake.

--------------------------------------------------------------------------

PAR DEVICE

The parallel device is buffered and interrupt driven - so within the


constraints of printer speed, output via the parallel port is very fast.

PAR DESCRIPTION

Following is a complete description of the PAR device syntax which


includes useful end of line and end of file protocols.

RNCL - RAW, CR/LF, CR or LF end of line protocol (default = raw)

F - use FORMFEED as end of file (CLOSE) protocol


(default = none)

For example the command OPEN#4;"PARNF" opens a channel to the parallel


port, translating end of line characters into CR/LF, and sending a form-
feed at the next CLOSE#4.

In future releases 'IO' may be added to the syntax, allowing for input
and output to the parallel device.

--------------------------------------------------------------------------

FLP DEVICE

The Format of a QDOS filename on the floppydisk is FLPn_name_ext, where


FLPn_ is the device name. FLP1_ represents the internal drive, FLP2_ the
first external drive and so on. Filenames consist of up to 32 characters.
The *D2D random access convention is emulated in full, so CP/M and MS-DOS
emulators should work without problems.

ADDITIONAL BASIC EXTENSIONS

The floppy driver has a number of associated keywords. The commands MOUNT
and DSKCNG are necessary for older drives that do not respond correctly to
disk changes, or do not supply a disk ID. The command DISKCOPY is included
because it is incredibly useful. FLP_USE, PROG_USE, DATA_USE etc are
implemented for compatibility with QL disk interfaces that invariably
include such commands.

MOUNT <drive>

Use MOUNT 1 for FLP2_, MOUNT 2 for FLP3_, or MOUNT 3 for FLP4_. The
emulator tries to read a disk ID from every drive, and only allocates
drive buffers for those drives that respond correctly. Unfortunately some
older drives do not have this feature, and on such drives you will need
to use the MOUNT command. Issue this command once only, immediately after
a boot, and only if the drive is not recognised.

DSKCNG <drive>

Use DSKCNG 1 for FLP2_, DSKCNG 2 for FLP3_, or DSKCNG 3 for FLP4_. The
Amiga hardware automatically recognises when you insert a new disk into a
drive. Unfortunately some older drives do not have this feature, and on
such drives you will need to use the DSKCNG command each time you insert
a disk afresh.

DISKCOPY [#<channel>]

DISKCOPY duplicates the disk in Flp1_ onto the disk in Flp2_. You require
two drives in order to use this command. DISKCOPY will ask you to insert
the source and destination disks before proceeding. Messages are printed
on the specified channel, or to #0 if no channel number is given. It is
possible to BREAK from this command with CTRL-SPACE.

FLP_USE <name>

Sets the name of the floppy disk system. By default the name of the floppy
disk system is 'FLP', but this can be changed for example to 'MDV' or any
other three-character string.

PROG_USE <name>

Sets the default device/directory for programs and executables.

DATA_USE <name>

Sets the default directory data files.

SPL_USE <name>

Sets the name of the default copy/spool device/directory.

DEST_USE <name>

As SPL_USE except that this command appends an underline the the <name> if
none is present.

PROGD$

Returns the name of the default program device/directory.

DATAD$

Returns the name of the default device/directory for data files.

DESTD$

Returns the name of the default copy/spool device/directory.

--------------------------------------------------------------------------

JAN DEVICE

The JANus device driver gives you access to the Harddisk from the IBM
Sidecar within QDOS.

The JANus device driver expects the program QLDISK.COM running on the IBM
side. This program is also included in source format (QLDISK.PAS) and must
be compiled with TURBO pascal 3.0! Any filename has the form: JAN1_name_ext
where 1 [,2,3,4,5,6,7,8] has no function. The extension is converted from
_ext to .ext automatically. Names consist of capital letters only and must
not be longer than 8 characters.

Subdirectories and file conventions of MS-DOS are used. If you try to read
MS-DOS files from QDOS, you will experience some trouble, since QDOS needs
a 64 byte fileheader, which is of course not present in MS-DOS files. The
other way around, you will find 64 additional bytes at the top of any QDOS
file, when you try to read QDOS files from the IBM side.

ADDITIONAL BASIC EXTENSIONS

CHDIR <"path">

changes the subdirectory path (CD on IBM)

MKDIR <"name">

make subdirectory (MKDIR on IBM)


RMDIR <"path">

remove subdirectory (RMDIR on IBM)

SHODIR

display the actual path at channel #1

JAN_USE <"abc">

set up a new device name for JAN (eg MDV)

At present, the emulator cannot access data on hard-disks, except via the
JAN device on JAN drives on a machine with a Bridgeboard installed.

--------------------------------------------------------------------------

HARDWARE DIFFERENCES

TAS INSTRUCTION PROBLEMS:

This emulator is a good QL-clone, however there are hardware differences


that may cause initial problems:

The Amiga hardware does not allow the CPU two contiguous bus cycles. This
means that any READ-MODIFY-WRITE cycle fails, and as a result the machine-
code instruction 'TAS' does not function correctly on the Amiga.

It must be understood that a fair number of QL programs have been compiled


from BASIC and that both the leading QL BASIC compilers 'TURBO' & 'QLIB',
contain TAS instructions - as do all TURBO'd and QLIB'd tasks. It follows
that without modification a large number of QL programs will fail.

To remedy the problem, Line-A (instruction: %1010111XXXXXXXXX) is


programmed to emulate TAS, and a utility is included on the 'QLutils' disk
that makes QL tasks Amiga friendly by replacing all TAS instructions with
Line-A.

NO_TAS

This program removes TAS instructions in recognised TURBO'ed and QLIB'ed


tasks, substituting equivalent code. If the code is not thus recognised,
TAS will be replaced by a Line-A instruction (which is programmed to
emulate TAS but is not QL-compatible) or by extending the code.

FIXES FOR QLIBERATOR

The Q_Liberator runtime libraries contain a single TAS instruction...


TAS $8F(A6) in v3.22 and TAS $8F(A4) in the library used with the budget
compiler. As a result any program compiled to include libraries will also
contain this instruction.

NO_TAS automatically recognises QLIB'ed tasks, removes the TAS instruction


and substitutes equivalent code. The result is a task that is compatible
with a 'real' QL and runs within Amiga-QDOS without problems.

FIXES FOR TURBO COMPILER

The TURBO compiler package contains a single TAS $8F(A6) in PARSER_task


and two TAS instructions ( TAS $8F(a6) and TAS $17(a2) ) in CODEGEN_task.
Any program compiled with TURBO may also contain these instructions.

NO_TAS automatically recognises TURBO'ed tasks, removes the TAS


instructions and substitutes equivalent code. The result is a task that is
compatible with a 'real' QL and runs within Amiga-QDOS without problems.

FIXES FOR NON QLIB/TURBO CODE


If the code is not recognisable as having been produced by QLIB or TURBO,
NO_TAS will check the code and process it dependent on its size;

SMALL CODE FIX

If the code is less than 32K in size, NO_TAS will attempt to replace all
TAS instructions by a branch to an equivalent subroutine. The subroutine
is tagged onto the end of the code, so any file processed in such a way
will 'grow'. The result is a task that is compatible with both
Amiga-QDOS and a 'real' QL, but which might confuse tasks that make
assumptions upon their own length.

LARGE CODE FIX

If the code is bigger than 32K in size, TAS instructions will be


replaced by a Line-A instruction which is programmed to emulate TAS. The
Line-A code is INCOMPATIBLE with a 'real' QL. Code modified in this way
will cause a total system crash if run on a real QL.

With both the small and large code fixes, a disassembly is shown and you
will be asked whether or not to replace the code. Note however that the
program may display TAS instructions where none are present (i.e. within
program DATA). A good rule-of-thumb is that true CODE is usually
surrounded by other machine code instructions, whereas DATA is liberally
sprinkled with DC.Ws

RESTORE_TAS

Use this program to 'put-back' TAS instructions into programs that have
been altered by NO_TAS.

--------------------------------------------------------------------------

SOURCE FILES

The complete assembly source for the emulator is included with this
release.

EDITING THE SOURCE

If you need to alter a source file in any way, use an editor that
preserves TABS. If you use an editor that expands tabs to spaces during a
SAVE, you will find that file will increase in size dramatically - to a
point where it may exceed available disk space.

If you are looking for a reasonably small, WB1.3 compatible, simple,


TAB preserving PD text editor - try JED.

In order to view the source files correctly, tabs should be set to NINE
characters.

RE-ASSEMBLING THE SOURCE

Original sources were assembled in QDOS with GST's Macro assembler.


Current sources are assembled on the Amiga with A68k.

Expansion ROMs handle all Amiga specific functions, freeing the QDOS ROM
of any hardware dependent source. There are separate ROMs for VDU, Clock,
Keyboard, PAR device, SER device and FLP device. This makes de-bugging a
lot easier.

Each ROM has its own MAKE file. CD into a make directory and type the
name of the relevent script file to rebuild a particular ROM.

COMMENTS IN THE SOURCE

I have commented the QDOS ROM source wherever it differs from either the
original JS source, or from Rainer Kowallik's version. Comments begin with
the characters ";*/" so are easily found. There are a number of keys
following these characters, that identify the kind of modification. These
are:

;*/note

This indicates a point that you should be aware of.

;*/mend

This indicates a bug fix.

;*/modify

This indicates that the code remains functionally equivalent to the JS


version, but is changed in some way.

;*/overlay

This indicates that the code differs significantly from the JS version.

;*/insert

This indicates a new piece of code.

KEY MODIFIERS

key modifiers precede a key, altering its meaning in some way.

undo

This indicates that previous amendments were discarded in favour of the


original JS source. For example:

;*/undomend

This means that an apparent bug, fixed in a previous release, was not a
bug after all.

begin and end

These key modifiers bracket an amended section of code. e.g:

;*/begininsert and ;*/endinsert

These indicate the start and end of a section of code that is inserted
anew.

--------------------------------------------------------------------------

OTHER UTILITIES ON THE QL SUPPORT DISK

PLAY_SCALE_bas and PLAY_MUSIC_bas

Two programs to demonstrate the capabilities of the SuperBASIC BEEP


command.

SER_TRANSFER_bas

This is an old program (formerly QLTRA_bas) that allows you to transfer


files between two QDOS machines via a cable and the serial device. The
program transfers a complete volume.

POKE_DIGITS_bas

This utility allows you to alter QDOS so as to handle 5, 6, 7 or 8 digit


numbers before entering E notation. The emulator uses eight digit numbers
as opposed to the standard seven digits. If this proves to be a problem,
use POKE_DIGITS_bas to change back to seven digits.

BOOT

The boot program on the 'QLutils' disk loads a number of toolkits into
memory, and sets up a small RAM disk.

PD RAM-disk

The QL support disk now contains a Public domain RAM disk. It is


relatively slow but functions reasonably well. If anyone knows who wrote
it, please let me know so that I can credit the author in these docs.

PDTK_rext

This Freeware BASIC toolkit includes a small number of SuperBASIC


commands. Some of these are required by the programs SYS_REF, NO_TAS
etc., others are included because I find them incredibly useful. See the
documentation on the QLutils disk.

D68K_rext

This disassembly toolkit includes a small number of SuperBASIC commands to


help you to disassemble files and memory. The toolkit is required by
NO_TAS. See the documentation on the QLutils disk.

SYS_REF_task

SYS_REF is a utility that patches tasks & M/C which rely on the system
variables being at $28000, to work when the sys vars are elsewhere (i.e.
with the second screen enabled).

It has been tested on several programs (even TURBO) under Minerva and
Amiga-QDOS (with 2nd screen enabled), and WORKS!

SYS_REF also makes TURBO & TURBO-compiled programs 32-bit clean.

--------------------------------------------------------------------------

INTRODUCTION AND MOTIVATION

I bought my first QL in 1984 in Berlin, and since this time the QL has
proved to be a very handy tool for all kinds of computer work.
Unfortunately the QL was not very popular. It has an active user group,
but little software or hardware. With the arrival of the ATARI 520 ST and
the increasing popularity of the IBM clone the QL became less and less
interesting to new users, until eventually even Sinclair himself lost
interest.

So far so bad, but after checking the possible alternatives, there was no
computer that was any better than the QL. Then came the idea of building a
new computer with QDOS, a 68000 CPU and a reasonable keyboard -- but why
build a new computer, when you can buy one?

For this purpose the AMIGA seemed best suited. It is highly expandable and
has excellent hardware. Furthermore, it seemed easier to emulate a QL
screen on the AMIGA, than on the ATARI.

The emulator is based around a JS-ROM disassembly, expanded in some


features, and initially tested on a real QL. The BLITTER performs QL
screen emulation, which makes it a very fast process costing nearly no CPU
time. Keyboard emulation includes Ctrl-Alt-7 , KEYROW and IPC calls.
Additionally upon a system error, a default trap handler will tell you
what happened at what address, and return you to SuperBASIC.

Apart from the MicroDriVes and NETwork, the emulator implements all the
standard QL devices (CON_, SCR_, PIPE_, SER1, PAR, FLPn_).
RAINER KOWALLIK

--------------------------------------------------------------------------

ADDENDUM

CONTINUING DEVELOPMENT

I am under the impression that due to recent commitments, Rainer has very
little time to make any further improvements to the emulator. Therefore,
in Rainers absence, I have taken on the responsibility for the emulators'
continuing development.

MARK J SWIFT

--------------------------------------------------------------------------

SOFTWARE OVERVIEW

This section contains a list of QDOS programs with specific implementation


notes for Amiga-QDOS. The list was part of the original emulator
documentation, so many of the problems mentioned may not now be relevant.

Most of the descriptions do not mention which version of the emulator the
software was tested on, or who did the testing. I have included a version
number and my initials wherever I have been able to confirm the validity
of a particular statement. If you would like to add you're own comments on
a particular program, please let me know.

MARK J SWIFT

--------------------------------------------------------------------------

SOFTWARE OVERVIEW - TOOLKITS

T. Tebby Toolkit 2 [Qjump]

This Toolkit is almost an essential for Working with QDOS. It provides you
with JOB handling, parameter passing facilities, a full screen BASIC
editor, a command line stack, wild card file functions, default devices,
definable keys and many other useful commands. It's a shame there's no
public domain equivalent.

IMPLEMENTATION NOTES - 3.22 MJS

Use NO_TAS_task to remove all TAS instructions.

T. Tebby pointer interface and Window manager [Qjump]

For those who miss the Workbench and mouse handling, this is the QDOS
equivalent. There are more and more programs appearing on the QL that use
this interface as a front-end. It takes some getting used to.

IMPLEMENTATION NOTES - 3.22 MJS

At the very least PTR_GEN must have TAS instructions removed. Other
files may also need to be fixed. Be very careful however not to
TAS-replace DATA.

T. Tebby Ramdisk [Qjump]

Bundled with the pointer environment and the QRAM 'workbench' equivalent.

IMPLEMENTATION NOTES - 3.22 MJS

The original emulator documentation mentions this 'behaving strangely'


when you try to FORMAT a fixed RAM disk. I've not been able to pin-point
any problems whatsoever. Contains TAS instructions - use 'NO_TAS' to
remove them.

Giga-BASIC [ABC elektronik]

A lot of commands! - some useful, some superfluous. mostly concerned with


mouse and menu handling.

IMPLEMENTATION NOTES

Problems with compiler?

--------------------------------------------------------------------------

SOFTWARE OVERVIEW - LANGUAGES AND ASSEMBLERS

QLiberator (BASIC compiler) [Liberation Software]

This compiler has almost the same degree of usefulness as the T. Tebby
toolkit. The compiled programs are not among the fastest, but the compiler
can cope with nearly every program. It can include M-Code toolkits in the
object file, and produces small code when used in conjunction with the
resident runtime library. Compiled programs can be linked as resident
toolkits to the interpreter, and procedures can made accessible to BASIC.

IMPLEMENTATION NOTES - 3.22 MJS

Use 'NO_TAS' to remove TAS instructions. Also use 'NO_TAS' on any


runtime libraries and any programs compiled prior to 'fixing'. Programs
compiled with a 'fixed' version of QLIBerator will not contain TAS
instructions and will work perfectly well on a QL or within Amiga-QDOS.

Turbo (BASIC compiler) [Digital Precision]

Much faster than the Qliberator, but can not pass parameters back to the
caller, and has many small quirks. Supercharge was a precursor to Turbo
with a very remarkable copy protection 'device'. Turbo itself is not
protected anymore.

IMPLEMENTATION NOTES - 3.24 MJS

Use the program NO_TAS_task to remove TAS instructions in PARSER_task


and CODEGEN_task. Once 'fixed' TURBO and TURBO compiled tasks will run
on Amiga-QDOS without problems.

If you wish to make use of the second screen under Amiga-QDOS (or
Minerva) you must use SYS_REF to remove all references to the system
variables (which are moved with 2nd screen enabled)

When SYS_REFing CODEGEN_task of the TURBO compiler, patch all references


EXCEPT the two that refer to $28010. These are not part of the CODEGEN
code, but are included in all TURBO compiled programs.

When SYS_REFing PARSER_task, or any other TURBO program replace ALL


references.

The SYS_REF'ed version of TURBO works under Minerva and Amiga-QDOS with
the second screen enabled. It produces code identical to the unpatched
version, so remember to patch all TURBO-compiled tasks!

SYS_REF makes TURBO & TURBO-compiled programs 32-bit clean.

FORTRAN 77 and PASCAL [Prospero Software]

These are the QDOS Versions of the widely used Prospero compilers. There
are few bugs (in my Version the Double Precision Arithmetic gives problems
when passed through Functions), and they give access to all QDOS
functions. They produce QDOS standard relocatable format and use the same
Linker that comes with the GST Macro assembler and the GST QC compiler.

IMPLEMENTATION NOTES

Program copy protection is by means of an EPROM that contains part of


the runtime library. You can get round this by using the supplied PRL
(Prospero Resident Library) from RAM, but you have to reload it after
every pass of the compiler. The supplied compiler supervisor does not
work on the Amiga?

Computer one PASCAL [Computer one]

A generally useful PASCAL compiler with a kind of integrated environment.


The newer version can generate executable Jobs, but it is still a P-code
Pascal. String handling is not implemented.

IMPLEMENTATION NOTES

This Compiler only works with less than 1MB RAM.

Metacomco PASCAL [Metacomco]

IMPLEMENTATION NOTES

Forget it !

Lattice C [Metacomco]

The only full scale C implementation for the QL. There are bugs and the
Floating-point arithmetic is terribly slow. It uses QDOS standard
relocatable format as opposed to Metacomco's own format. As with Lattice
standard #ASM is not allowed, you have to write machine code programs
separately.

IMPLEMENTATION NOTES

Program copy protection consists of an 8K EPROM that occupies addresses


$C000 - $FFFF, mirrored at $E000. Make a copy from a normal QL with
SBYTES FLP1_QLC_ROM,48*1024,16*1024. This file can then be loaded on the
Amiga at the same address. Use CTRL-ALT-SHIFT-TAB to re-boot and
initialise the EPROM.

QC [GST]

An integer C without STRUCTures and UNIONs. It contains some bugs but


allows the inclusion of machine code via #ASM. Consider it as an
interesting alternative to Assembler. Output can be assembled via GST's
macro assembler.

IMPLEMENTATION NOTES

Not tested on Amiga-QDOS.

Digital C [Digital Precision]

Integer C without STRUCTures, UNIONs and #ASM. restricted to 32 Kbyte


code. Derived from a Public Domain C for CP/M.

IMPLEMENTATION NOTES
Not tested on Amiga-QDOS.

BCPL [Metacomco]

BCPL is an ancestor of C, and was the first Compiler for QDOS.


Floating-point arithmetic is implemented via procedures, and is thus
difficult to use. The compiler uses Metacomcos own special linker.

IMPLEMENTATION NOTES

Runs without problems on Amiga-QDOS.

LISP [Metacomco]

A very special Version of LISP, seemingly unrelated to common LISP.


Graphics and QDOS facilities are implemented.

IMPLEMENTATION NOTES

Runs without problems on Amiga-QDOS.

FORTH-83 [Computer one]

Forth started life in pocket calculators and is the language that


POSTSCRIPT was based upon. Multitasking, graphics, floating point
arithmetics and QDOS access are all integrated.

IMPLEMENTATION NOTES

Runs without problems on Amiga-QDOS.

FORTH [Digital Precision]

Another Forth implementation.

IMPLEMENTATION NOTES

Not tested on Amiga-QDOS.

GST Macro Assembler [GST]

The professional Assembler for QDOS. Macro facilities far beyond the
standard. The assembler is small, fast, and produces standard QDOS
relocatable Format. Recently re-vamped by QUANTA programmers.

IMPLEMENTATION NOTES - 3.22 MJS

Runs without problems on Amiga-QDOS.

Metacomco Assembler [Metacomco]

Very big (3 overlays), very slow, lots of bugs. Can be used to link
M-Code routines to other Metacomco programs, since the linker for all
Metacomco programs are compatible.

IMPLEMENTATION NOTES

Not tested on Amiga-QDOS.

Computer one Assembler [Computer one]


Fast, small, no Macros, no linker.

IMPLEMENTATION NOTES

Not tested on Amiga-QDOS.

GenQL [HiSoft]

Together with the MonQL monitor, and a special editor it provides an


integrated environment. A useful Program.

IMPLEMENTATION NOTES

Works fine on Amiga-QDOS.

Assembler Workbench [Eddy Yeung]

Another integrated environment for assembler programmers. It provides


on-line Help and an in-line assembler.

IMPLEMENTATION NOTES

Protected against copying, and available only on Microdrive cartridges.


The cracked Version runs on Amiga-QDOS.

QMON monitor [Qjump]

A nice M-Code monitor also available as ROM. It is a good tool to have at


hand.

IMPLEMENTATION NOTES - 3.22 MJS

Works without problems on Amiga-QDOS

MonQL monitor [HiSoft]

A generally useful monitor/debugger with a corresponding assembler


(GenQL).

IMPLEMENTATION NOTES

Cannot cope with addresses longer than 20 bits, so you can only debug
programs in CHIP memory. Perhaps some day HiSoft will make a new Version
for Atari/Amiga/Thor2 users. We will be grateful.

--------------------------------------------------------------------------

SOFTWARE OVERVIEW - EMULATORS

Solution (MS-DOS emulator) [Digital Precision]

Slow, but CGA graphics is included and it is said to be faster than the
Amiga Transformer.

IMPLEMENTATION NOTES

Not Tested on Amiga-QDOS.

CPMulator (CP/M emulator)

An 0.5 MHz Z80 with a few bugs.

IMPLEMENTATION NOTES - 3.22 MJS


Tested briefly on Amiga-QDOS and worked OK.

--------------------------------------------------------------------------

SOFTWARE OVERVIEW - UTILITIES

Super Media Manager [Digital Precision]

Compiled SuperBASIC. Contains a useful description of how QDOS handles


Disks.

--------------------------------------------------------------------------

SOFTWARE OVERVIEW - EDITORS, WORDPROCESSORS, AND GRAPHICS

EDITOR [Eddy Yeung] [Qjump]

This editor comes together with the Assembler Workbench. It is related in


most functions to the well known (at least to Amiga users) Metacomco ED,
but is much faster. Macros are not provided. It is my favourite Editor.

IMPLEMENTATION NOTES

Runs without problems on Amiga-QDOS.

ED [Metacomco]

You should know it from the Amiga.

IMPLEMENTATION NOTES - 3.22 MJS

Runs on Amiga-QDOS without problems.

C1Edit [Computer one]

The editor supplied with all Computer one programs. It is menu driven, but
not very advanced.

IMPLEMENTATION NOTES

Runs without problems on Amiga-QDOS.

EDIT [Digital Precision]

Very advanced editor, including a lot of macro features. Compiled


SuperBASIC and very big.

IMPLEMENTATION NOTES

Not tested on Amiga-QDOS.

Quill [Psion]

The original wordprocessor that was bundled with the QL. Handles
formatting well, supports bold, italic underline etc., and can create text
only files via print-to-file option.

IMPLEMENTATION NOTES - 3.22 MJS

Works well on Amiga-QDOS.

Archive [Psion]
The original Data Base that was bundled with the QL. Although not very
advanced, and though it doesn't handle pictures or sound, it is still
sufficient for most applications. (This is the kind of Data Base, that
makes use of a special Language that looks a little bit like BASIC)

IMPLEMENTATION NOTES - 3.22 MJS

Runs on Amiga-QDOS without problems.

Easel [Psion]

The original Business Graphic program that was bundled with the QL. You
may find better programs on the IBM (for example Boing graph), but it is
still state of the art.

IMPLEMENTATION NOTES - 3.22 MJS

Runs on Amiga-QDOS without problems.

Abacus [Psion]

The original Spreadsheet that was bundled with the QL. It cannot handle
graphics, but is still state of the art.

IMPLEMENTATION NOTES - 3.22 MJS

Runs on Amiga-QDOS without problems.

Xchange [Psion]

The combined Quill/Easel/Abacus/Archive program, able to multitask, and


including a 'Task Sequence Language' that allows you to write macros for
all 4 programs.

IMPLEMENTATION NOTES - 3.22 MJS

You need memory expansion to use this program. Runs on Amiga-QDOS


without problems.

Text 87

An advanced Word processor for QDOS supporting proportional type and


varying fonts and type sizes.

IMPLEMENTATION NOTES

Newer versions run without problems on Amiga-QDOS, though older


Versions may cause trouble since they cause a divide by zero error that
is now trapped by QDOS.

GraphiQL [Talent]

A picture drawing program for low resolution mode.

IMPLEMENTATION NOTES

Protected against piracy. The cracked Version runs on Amiga-QDOS

TechniQL [Talent]

Another drawing program but for high resolution mode. It has interesting
features, including a plotter driver, and may well be worth using.

IMPLEMENTATION NOTES

The cracked Version runs on Amiga-QDOS but with problems.

QL Art

A nice picture drawing program.

IMPLEMENTATION NOTES

Is copy-protected and will not run on Amiga-QDOS.

MPaint [Medic Datasystems]

The first picture drawing program for the QL that supported the mouse. It
is a Basic program with some M-code extensions.

IMPLEMENTATION NOTES

The cracked and compiled Version runs on Amiga-QDOS, but with problems

--------------------------------------------------------------------------

SOFTWARE OVERVIEW - GAMES

Games are mostly protected against copying and many are only available on
Microdrive cartridges.

Chess [Psion]

Really good, a classic.

IMPLEMENTATION NOTES

It will probably never run on the Amiga since it contains TAS


instructions and attempts to change the contents of the operating
system ROM, which is now RAM?

Match (Tennis) [Psion]

Another classic.

IMPLEMENTATION NOTES

It works on the Amiga, but is too fast to play, since the QL had only
1/4 of the Speed.

QL Cavern [JMF]

Graphic adventure (not comparable of course to Amiga games)

IMPLEMENTATION NOTES

Not too bad, runs on the Amiga with modifications (Interrupts must be
enabled!)

--------------------------------------------------------------------------

BIBLIOGRAPHY

A list of books/publications that proved useful:


QL BOOKS

QL Assembly Language Programming by Colin Opie


McGraw-Hill Book Company ISBN 0-07-084777-0

The Sinclair QDOS Companion by Andrew Pennell


Sunshine Books ISBN 0-946408-69-9

Assembly Language Programming on the Sinclair QL by Andrew Pennell


Sunshine Books ISBN 0-946408-42-4

QL SuperBASIC The Definitive Handbook by Jan Jones


First published by McGraw-Hill ISBN 0-07-084784-3
Limited reprint by QUANTA: The Independent QL User Group.

AMIGA BOOKS

Amiga System Programmer's Guide by Dittrich, Gelfand & Schemmel


Abacus/Data Becker ISBN 1-55755-034-4

Amiga Hardware Reference Manual,


Amiga Intuition Reference Manual,
Amiga ROM Kernel Reference Manual: Exec,
Amiga ROM Kernel Reference Manual: Libraries and Devices
Addison-Wesley Publishing Company Inc.

The 'Kickstart' Guide to the Amiga


Ariadne Software Ltd. ISBN 0 9512921 0 2

680X0 BOOKS

680X0 Programming by example by Stan Kelly-Bootle


Howard W Sams & Company ISBN 0-672-22544-1

MicroComputer Architecture and programming by John F Wakerly


John Wiley & Sons Inc. ISBN 0-471-50021-6

PUBLICATIONS

QL World Magazine
(Alas, mo longer in print).

QREVIEW - news, reviews and articles for QL compatibles


(incorporated into IQLR, but...)

IQLR - International QL Report


(...no longer around)

QUANTA - newsletter (by membership).


QUANTA: The independant QL users group.
Membership: Bill Newell, QUANTA (UK),
213 Manor Rd, Benfleet, Essex, SS7 4JD

QLtoday - magazine for QL, QDOS, Sinclair Computers, SMSQ etc...


(bi-monthly, by subscription)
English Office: German Office:
Miracle Systems Ltd., Jochen Merz Software
20 Mow Barton Im stillen Winkel 12
Yate, Bristol 47169 Duisburg
United Kingdom BS17 5NF Germany
Tel: +44 1248 354023 Tel: +49 203 502011

--------------------------------------------------------------------------

You might also like