home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-03-03 | 59.0 KB | 1,832 lines |
- ____ _ _ _ ____ ____ ____ ____ ____ ____
- / __ \ / \/ \ | | / ___| / __ \ / __ \ | _ \ / __ \ / ___|
- | |__| || || || | _ | |__| | __ | | | || | \ \| | | | \_ \
- | __ || |\/| || || |__| || __ | |__| | |_/ \| |_/ /| |__| | __\ \
- |_| |_||_| |_||_| \____/ |_| |_| \___/\/|____/ \____/ |____/
-
- 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
-
- --------------------------------------------------------------------------
-
- 1m4mQUICK OVERVIEW0m
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mVERSION 3.24 ARCHIVE CONTENTS0m
-
- 'QDOS4amiga1.lha' QL clone v3.24 (binaries and documentation)
-
- 'QDOS4amiga2.lha' QL clone v3.24 (assembly source)
-
- 'QDOS4amiga3.zip' QL clone v3.24 (QDOS support disk)
- Format a QL (QDOS) disk and copy the contents of this
- archive onto it to create a BOOTable QDOS support disk
- for the Sinclair QL emulator.
-
- --------------------------------------------------------------------------
-
- 1m4mAMIGA-QDOS v3.24 FEATURES0m
-
- * FASTER than the original QL
- * LOADS/SAVES to QL floppy disks
- * Hard disk support via QubIDE ROM
- * 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
- * QDOS support disk included with release
- * BASED ON a JS ROM with many JS ROM bug fixes.
- * SOURCE included
-
- --------------------------------------------------------------------------
-
- 1m4mWHAT'S NEW IN VERSION 3.240m
-
- * QDOS ROM relocatable into FAST RAM
- * Hard disk support via QubIDE ROM
- * some bug fixes
-
- --------------------------------------------------------------------------
-
- 1m4mTHE SINCLAIR QL...0m
-
- ,--------------------------------------------/|/|/|/|/|/|/|/|/|/|/|
- / /_//_//_//_//_//_//_//_//_//_//_//_//_//_/ / /|
- / /_//__//_//_//_//_//_//_//_//_//_//_//_/ / / / /
- / /_//____//_//_//_//_//_//_//_//_//_//____/ / / /
- / /_//__//_//_//_________________//_//_//__/ /_____________________/ /
- /_'__________________________________________/|__.====== .====== __|/
- |_____________________________________________:======================/
- |________________________________________________________________|/
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mQUICK START0m
-
- 1mINSTALLING THE EMULATOR0m
-
- 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 QLBOOT:c to your own 'c' directory.
-
- 1mCREATING THE QDOS SUPPORT DISK0m
-
- Creating the QDOS support disk on an Amiga requires that the xfs
- filesystem is mounted. XFS allows access to a multitude of disk
- formats including QL (QDOS) disks. XFS is can be found on the aminet
- in disk/misc.
-
- 1. Mount the xfsd filesystem.
-
- 2. Copy QDOS4amiga3.lha to RAM: - or into the same directory
- as 'QLdisk.unLHA'.
-
- 3. Double-click on the 'QLdisk.unLHA' icon.
- Insert a blank disk into DF0: at the appropriate moment... then wait.
- Rename the resultant QDOS (QL) disk as 'QLutils:'
-
- Alternatively you could follow the instructions in the file
- 'QDOS4amiga3.readme' which explains how to create the disk from a CLI.
-
- 1mSTARTING THE EMULATOR0m
-
- 1. Double-click on the 'Start_QDOS_UK' icon.
-
- 2. Insert QLutils: into DF0: and at the F1/F2 prompt and press F1.
-
- --------------------------------------------------------------------------
-
- 1m4mA QUICK TOUR OF THE QL0m
-
- 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:
-
- 3mNEW0m
- 3m10 PRINT "Hello World!"0m
- 3mRUN0m
-
- ...the words 'Hello World!' are printed on screen.
- If you add the following:
-
- 3m20 GOTO 100m
- 3mRUN0m
-
- ...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:
-
- 3mSAVE FLP1_HELLOWORLD_bas0m
-
- or, if there is no room on disk, you can FORMAT a new disk with the
- command:
-
- 3mFORMAT FLP1_WORKDISK0m
-
- ...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:
-
- 3mDIR FLP1_0m
-
- Loading a BASIC program from floppy disk is a simple matter:
-
- 3mLOAD FLP1_PLAY_MUSIC_bas0m
-
- You can then type:
-
- 3mLIST0m
-
- ...to see the BASIC listing, or:
-
- 3mRUN0m
-
- ...to execute the BASIC program.
-
- To execute a machine code task, use the EXEC_W keyword.
- For example:
-
- 3mEXEC_W FLP1_XCHANGE0m
-
- ...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.
-
- --------------------------------------------------------------------------
-
- 1m4mCUSTOM STARTUP0m
-
- 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.
-
- 3mQDOS_128K0m
-
- This icon gives you a memory configuration similar to the original
- unexpanded 128K QL.
-
- 3mCHIP_ONLY0m
-
- Run QDOS from CHIP memory, and ignore all memory expansions.
-
- 3mCHIP+2ndSCRN0m
-
- Run QDOS from CHIP memory and install a second screen similar to the
- Minerva one.
-
- 3mA500_RANGER_ONLY0m
-
- 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.
-
- 3mA500_FAST_ONLY0m
-
- 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.
-
- 1mCREATING YOUR OWN CUSTOM START-UP ICON0m
-
- 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:
-
- 3m-m<lomem>-<himem>0m
-
- This sets the area of memory available to QDOS. <lomem> corresponds to the
- start of the system variable area and <himem> corresponds to RAMTOP.
-
- 3m-q<QDOS system ROM>0m
-
- This sets the name of the required QDOS system ROM. The default name is
- 'SYS_cde'
-
- 3m-p<patcher ROM>0m
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mQDOS SYSTEM ROM0m
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mO/S HOOKS0m
-
- 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.
-
- 1mADDITIONAL BASIC EXTENSIONS0m
-
- There are seven keywords associated with "MAIN_cde"
-
- 3mRESET_TOP <oldtop>,<newtop>0m
-
- 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:
-
- 3mRESET_TOP hex("C80000"),hex("80000")0m
-
- or without TK2 or PDTK...
-
- 3mRESET_TOP 13107200,5242880m
-
- afterwards, to re-use the memory - issue the command...
-
- 3mRESET_TOP 524288,131072000m
-
-
- 3mRESET_SV <newsv>0m
-
- 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:
-
- 3mRESET_SV 1966080m
-
- To move the system variables back to their default position:
-
- 3mRESET_SV 1638400m
-
- 3mRESET_EXTENTS <oldtop>,<newtop>,<newsv>0m
-
- 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:
-
- 3mRESET_EXTENTS HEX("200000"),HEX("8000000"),HEX("7E00000")0m
-
- QDOS tasks loaded into FAST RAM, run significantly faster. Running QDOS in
- FAST RAM relies on QDOS tasks being 32-bit clean.
-
- 3mICACHE_ON0m and 3mICACHE_OFF0m
-
- 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).
-
- 3mDCACHE_ON0m and 3mDCACHE_OFF0m
-
- These two commands allow the data cache to be turned on and off
- respectively. Amiga-QDOS boots with the data cache disabled.
-
- 3mCOPYBACK_ON0m and 3mCOPYBACK_OFF0m
-
- These two commands allow copyback mode to be turned on and off
- respectively. Amiga-QDOS boots with copyback mode disabled.
-
- --------------------------------------------------------------------------
-
- 1m4mCLOCK0m
-
- 1mINITIALISATION0m
-
- 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.
-
- 1mBUGS0m
-
- Doesn't find the battery backed-up clock in the A4000. The hardware has
- probably moved.
-
- --------------------------------------------------------------------------
-
- 1m4mVDU0m
-
- 1mSECOND SCREEN0m
-
- 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:
-
- 3mMODE -128+n*(k-256),-10m
-
- 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...
-
- 3mMODE -128 + 2*(0-256) + 16*(1-256) + 32*(1-256),-10m
-
- ...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:
-
- 3mRESET_SV 196608 0m move system variables & reset
-
- 3mMODE -128+32*(1-256),-10m set default screen to scr1
- 3mEXEC flp1_XCHANGE 0m launch application
- 3mMODE -128+32*(0-256),-10m 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.
-
- 1mHARDWARE REGISTERS0m
-
- 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.
-
- 1mMOUSE POINTER0m
-
- 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.
-
- 1mADDITIONAL BASIC EXTENSIONS0m
-
- There are five keywords associated with the VDU driver.
-
- 3mBLIT_OFF0m
-
- The BLIT_OFF command turns all blitter activity off. This will prevent the
- VDU driver from refreshing the QL screen.
-
- 3mBLIT_ON0m
-
- The BLIT_ON command turns blitter activity back on allowing the VDU driver
- to properly refresh the QL screen.
-
- 3mSCR_PRIORITY <inc>, <bnd>0m
-
- 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:
-
- 3mSCR_PRIORITY 4,10m
-
- This will refresh (4/1)*(1/16) = 4/16 =1/4 of the screen every 1/50th of
- a second.
-
- 3mSCR_PRIORITY 8,10m
-
- This will refresh (8/1)*(1/16) = 8/16 =1/2 of the screen every 1/50th of
- a second.
-
- 3mSCR_PRIORITY 16,10m
-
- 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:
-
- 3mSCR_PRIORITY 1,20m
-
- 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.
-
- 3mPTR_ON0m
-
- This command displays a SPRITE on screen, relating to the position of the
- mouse pointer.
-
- 3mPTR_OFF0m
-
- This command hides the SPRITE relating to the position of the mouse
- pointer.
-
- 1mBUGS0m
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mACE0m
-
- 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.
-
- 1mWhy?0m
-
- 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.
-
- 1mHow?0m
-
- 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.
-
- 1mReally, How?0m
-
- 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.
-
- 1mACE v BLITTER - raw CPU power versus custom chips0m
-
- 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.
-
- 1mADDITIONAL BASIC EXTENSIONS0m
-
- There are five keywords associated with ACE.
-
- 3mACE_OFF0m
-
- The ACE_OFF command turns off ACE screen emulation and re-enables blitter
- screen emulation.
-
- 3mACE_ON0m
-
- The ACE_ON command disables blitter screen emulation and enables ACEs'
- processor dependent screen emulation.
-
- 3mACE_PRIORITY <inc>, <bnd>0m
-
- 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.
-
- 3mACE_RATE%0m
-
- This function returns the number of fields that are output to the screen
- between one ACE update and the next.
-
- 3mACE_SIZE%0m
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mKEYBOARD0m
-
- 1mQL RESET0m
-
- 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.
-
- 1mSECOND SCREEN0m
-
- It is possible to flick between the second screen and the standard screen
- by pressing CTRL-TAB.
-
- 1mINTERRUPTS0m
-
- 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.
-
- 1mSPECIAL KEYS0m
-
- Keys F6-F10 produce the same codes as SHIFT F1-F5
-
- 1mNEW TRAP #1 CALL0m
-
- 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).
-
- 1mADDITIONAL BASIC EXTENSIONS0m
-
- There are six keywords associated with the keyboard.
-
- 3mKEYDT0m
-
- This command sets a German keymap (the default)
-
- 3mKEYUK0m
-
- This command sets a UK keymap (only available if you load KEYUK_cde).
-
- 3mPTR_LIMITS [<Xleft>,<Ytop>,<Xright>,<Ybottom>]0m
-
- This command sets limiting bounds for the position of the mouse pointer.
- The default limits are 0,0,256,256
-
- 3mPTR_INC [<Xdist>,<Ydist>]0m
-
- 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.
-
- 3mPTR_X%0m
-
- This function returns the X coordinate of the mouse pointer. Mouse
- coordinates are measured in low resolution pixels (a limit imposed on
- Amiga sprites).
-
- 3mPTR_Y%0m
-
- This function returns the Y coordinate of the mouse pointer. Mouse
- coordinates are measured in low resolution pixels (a limit imposed on
- Amiga sprites).
-
- --------------------------------------------------------------------------
-
- 1m4mSOUND0m
-
- QDOS sounds are supported in full, via the SuperBASIC BEEP command and its
- equivalent machine code MT.IPCOM command (Trap#1 with d0=$11).
-
- --------------------------------------------------------------------------
-
- 1m4mSER DEVICE0m
-
- The serial device is pretty reliable - even at high speeds!
-
- 1mSER DESCRIPTION0m
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mPAR DEVICE0m
-
- The parallel device is buffered and interrupt driven - so within the
- constraints of printer speed, output via the parallel port is very fast.
-
- 1mPAR DESCRIPTION0m
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mFLP DEVICE0m
-
- 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.
-
- 1mADDITIONAL BASIC EXTENSIONS0m
-
- 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.
-
- 3mMOUNT <drive>0m
-
- 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.
-
- 3mDSKCNG <drive>0m
-
- 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.
-
- 3mDISKCOPY [#<channel>]0m
-
- 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.
-
- 3mFLP_USE <name>0m
-
- 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.
-
- 3mPROG_USE <name>0m
-
- Sets the default device/directory for programs and executables.
-
- 3mDATA_USE <name>0m
-
- Sets the default directory data files.
-
- 3mSPL_USE <name>0m
-
- Sets the name of the default copy/spool device/directory.
-
- 3mDEST_USE <name>0m
-
- As SPL_USE except that this command appends an underline the the <name> if
- none is present.
-
- 3mPROGD$0m
-
- Returns the name of the default program device/directory.
-
- 3mDATAD$0m
-
- Returns the name of the default device/directory for data files.
-
- 3mDESTD$0m
-
- Returns the name of the default copy/spool device/directory.
-
- --------------------------------------------------------------------------
-
- 1m4mJAN DEVICE0m
-
- 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.
-
- 1mADDITIONAL BASIC EXTENSIONS0m
-
- 3mCHDIR <"path">0m
-
- changes the subdirectory path (CD on IBM)
-
- 3mMKDIR <"name">0m
-
- make subdirectory (MKDIR on IBM)
-
- 3mRMDIR <"path">0m
-
- remove subdirectory (RMDIR on IBM)
-
- 3mSHODIR0m
-
- display the actual path at channel #1
-
- 3mJAN_USE <"abc">0m
-
- set up a new device name for JAN (eg MDV)
-
- --------------------------------------------------------------------------
-
- 1m4mQUBIDE QDOS harddisk driver0m
-
- At present, the emulator can only access dedicated QubIDE partitions on
- the built-in IDE drives of an A4000 or A1200.
-
- In order to access your IDE drive, add an entry 3mQLboot:roms/QubA1200_rom0m
- or 3mQLboot:roms/QubA4000_rom0m in the tooltypes of the Amiga QDOS start icon
- between 3mQLboot:roms/MDV0m and 3mQLboot:roms/FLP0m.
-
- Amiga-QDOS cannot access data on AmigaDOS volumes, so to use a hard disk
- you should find yourself a spare IDE drive, connect it up and format it
- as a QDOS volume with the command 3mFORMAT WIN1_diskname0m
-
- REMEMBER THIS COMMAND WILL ERASE ALL DATA FROM THE HARDDISK
-
- --------------------------------------------------------------------------
-
- 1m4mHARDWARE DIFFERENCES0m
-
- 1mTAS INSTRUCTION PROBLEMS:0m
-
- 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.
-
- 1mNO_TAS0m
-
- 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.
-
- 3mFIXES FOR QLIBERATOR0m
-
- 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.
-
- 3mFIXES FOR TURBO COMPILER0m
-
- 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.
-
- 3mFIXES FOR NON QLIB/TURBO CODE0m
-
- 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
-
- 1mRESTORE_TAS0m
-
- Use this program to 'put-back' TAS instructions into programs that have
- been altered by NO_TAS.
-
- --------------------------------------------------------------------------
-
- 1m4mSOURCE FILES0m
-
- The complete assembly source for the emulator is included with this
- release.
-
- 1mEDITING THE SOURCE0m
-
- 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.
-
- 1mRE-ASSEMBLING THE SOURCE0m
-
- 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.
-
- 1mCOMMENTS IN THE SOURCE0m
-
- 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:
-
- 3m;*/note0m
-
- This indicates a point that you should be aware of.
-
- 3m;*/mend0m
-
- This indicates a bug fix.
-
- 3m;*/modify0m
-
- This indicates that the code remains functionally equivalent to the JS
- version, but is changed in some way.
-
- 3m;*/overlay0m
-
- This indicates that the code differs significantly from the JS version.
-
- 3m;*/insert0m
-
- This indicates a new piece of code.
-
- 1mKEY MODIFIERS0m
-
- key modifiers precede a key, altering its meaning in some way.
-
- 3mundo0m
-
- This indicates that previous amendments were discarded in favour of the
- original JS source. For example:
-
- 3m;*/undomend0m
-
- This means that an apparent bug, fixed in a previous release, was not a
- bug after all.
-
- 3mbegin and end0m
-
- These key modifiers bracket an amended section of code. e.g:
-
- 3m;*/begininsert and ;*/endinsert0m
-
- These indicate the start and end of a section of code that is inserted
- anew.
-
- --------------------------------------------------------------------------
-
- 1m4mOTHER UTILITIES ON THE QL SUPPORT DISK0m
-
- 1mPLAY_SCALE_bas0m and 1mPLAY_MUSIC_bas0m
-
- Two programs to demonstrate the capabilities of the SuperBASIC BEEP
- command.
-
- 1mSER_TRANSFER_bas0m
-
- 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.
-
- 1mPOKE_DIGITS_bas0m
-
- 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.
-
- 1mBOOT0m
-
- The boot program on the 'QLutils' disk loads a number of toolkits into
- memory, and sets up a small RAM disk.
-
- 1mPD RAM-disk0m
-
- 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.
-
- 1mPDTK_rext0m
-
- 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.
-
- 1mD68K_rext0m
-
- 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.
-
- 1mSYS_REF_task0m
-
- 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.
-
- 1mC68PATCH0m
-
- Patch C68 programs to be COPYBACK friendly
-
- 1mDOC2RTF0m
-
- Translate QUILL DOC files into .RTF form
-
- 1mMEMORY_MAP0m
-
- Simple program to display the QL memory map
-
- --------------------------------------------------------------------------
-
- 1mINTRODUCTION AND MOTIVATION0m
-
- 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
-
- --------------------------------------------------------------------------
-
- 1m4mADDENDUM0m
-
- 1mCONTINUING DEVELOPMENT0m
-
- 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
-
- --------------------------------------------------------------------------
-
- 1m4mSOFTWARE OVERVIEW0m
-
- 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
-
- --------------------------------------------------------------------------
-
- 1m4mSOFTWARE OVERVIEW - TOOLKITS0m
-
- 1mT. Tebby Toolkit 2 [Qjump]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Use NO_TAS_task to remove all TAS instructions.
-
-
- 1mT. Tebby pointer interface and Window manager [Qjump]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- 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.
-
-
- 1mT. Tebby Ramdisk [Qjump]0m
-
- Bundled with the pointer environment and the QRAM 'workbench' equivalent.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- 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.
-
-
- 1mGiga-BASIC [ABC elektronik]0m
-
- A lot of commands! - some useful, some superfluous. mostly concerned with
- mouse and menu handling.
-
- 3mIMPLEMENTATION NOTES0m
-
- Problems with compiler?
-
- --------------------------------------------------------------------------
-
- 1m4mSOFTWARE OVERVIEW - LANGUAGES AND ASSEMBLERS0m
-
- 1mQLiberator (BASIC compiler) [Liberation Software]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- 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.
-
-
- 1mTurbo (BASIC compiler) [Digital Precision]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES - 3.24 MJS0m
-
- 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.
-
- 1mFORTRAN 77 and PASCAL [Prospero Software]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES0m
-
- 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?
-
-
- 1mComputer one PASCAL [Computer one]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES0m
-
- This Compiler only works with less than 1MB RAM.
-
-
- 1mMetacomco PASCAL [Metacomco]0m
-
- 3mIMPLEMENTATION NOTES0m
-
- Forget it !
-
-
- 1mLattice C [Metacomco]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES0m
-
- 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.
-
-
- 1mQC [GST]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES0m
-
- Not tested on Amiga-QDOS.
-
-
- 1mDigital C [Digital Precision]0m
-
- Integer C without STRUCTures, UNIONs and #ASM. restricted to 32 Kbyte
- code. Derived from a Public Domain C for CP/M.
-
- 3mIMPLEMENTATION NOTES0m
-
- Not tested on Amiga-QDOS.
-
-
- 1mBCPL [Metacomco]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES0m
-
- Runs without problems on Amiga-QDOS.
-
-
- 1mLISP [Metacomco]0m
-
- A very special Version of LISP, seemingly unrelated to common LISP.
- Graphics and QDOS facilities are implemented.
-
- 3mIMPLEMENTATION NOTES0m
-
- Runs without problems on Amiga-QDOS.
-
-
- 1mFORTH-83 [Computer one]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES0m
-
- Runs without problems on Amiga-QDOS.
-
-
- 1mFORTH [Digital Precision]0m
-
- Another Forth implementation.
-
- 3mIMPLEMENTATION NOTES0m
-
- Not tested on Amiga-QDOS.
-
-
- 1mGST Macro Assembler [GST]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Runs without problems on Amiga-QDOS.
-
-
- 1mMetacomco Assembler [Metacomco]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES0m
-
- Not tested on Amiga-QDOS.
-
-
- 1mComputer one Assembler [Computer one]0m
-
- Fast, small, no Macros, no linker.
-
- 3mIMPLEMENTATION NOTES0m
-
- Not tested on Amiga-QDOS.
-
-
- 1mGenQL [HiSoft]0m
-
- Together with the MonQL monitor, and a special editor it provides an
- integrated environment. A useful Program.
-
- 3mIMPLEMENTATION NOTES0m
-
- Works fine on Amiga-QDOS.
-
-
- 1mAssembler Workbench [Eddy Yeung]0m
-
- Another integrated environment for assembler programmers. It provides
- on-line Help and an in-line assembler.
-
- 3mIMPLEMENTATION NOTES0m
-
- Protected against copying, and available only on Microdrive cartridges.
- The cracked Version runs on Amiga-QDOS.
-
-
- 1mQMON monitor [Qjump]0m
-
- A nice M-Code monitor also available as ROM. It is a good tool to have at
- hand.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Works without problems on Amiga-QDOS
-
-
- 1mMonQL monitor [HiSoft]0m
-
- A generally useful monitor/debugger with a corresponding assembler
- (GenQL).
-
- 3mIMPLEMENTATION NOTES0m
-
- 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.
-
- --------------------------------------------------------------------------
-
- 1m4mSOFTWARE OVERVIEW - EMULATORS0m
-
- 1mSolution (MS-DOS emulator) [Digital Precision]0m
-
- Slow, but CGA graphics is included and it is said to be faster than the
- Amiga Transformer.
-
- 3mIMPLEMENTATION NOTES0m
-
- Not Tested on Amiga-QDOS.
-
-
- 1mCPMulator (CP/M emulator)0m
-
- An 0.5 MHz Z80 with a few bugs.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Tested briefly on Amiga-QDOS and worked OK.
-
- --------------------------------------------------------------------------
-
- 1m4mSOFTWARE OVERVIEW - UTILITIES0m
-
- 1mSuper Media Manager [Digital Precision]0m
-
- Compiled SuperBASIC. Contains a useful description of how QDOS handles
- Disks.
-
- --------------------------------------------------------------------------
-
- 1m4mSOFTWARE OVERVIEW - EDITORS, WORDPROCESSORS, AND GRAPHICS0m
-
- 1mEDITOR [Eddy Yeung] [Qjump]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES0m
-
- Runs without problems on Amiga-QDOS.
-
-
- 1mED [Metacomco]0m
-
- You should know it from the Amiga.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Runs on Amiga-QDOS without problems.
-
-
- 1mC1Edit [Computer one]0m
-
- The editor supplied with all Computer one programs. It is menu driven, but
- not very advanced.
-
- 3mIMPLEMENTATION NOTES0m
-
- Runs without problems on Amiga-QDOS.
-
-
- 1mEDIT [Digital Precision]0m
-
- Very advanced editor, including a lot of macro features. Compiled
- SuperBASIC and very big.
-
- 3mIMPLEMENTATION NOTES0m
-
- Not tested on Amiga-QDOS.
-
-
- 1mQuill [Psion]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Works well on Amiga-QDOS.
-
-
- 1mArchive [Psion]0m
-
- 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)
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Runs on Amiga-QDOS without problems.
-
-
- 1mEasel [Psion]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Runs on Amiga-QDOS without problems.
-
-
- 1mAbacus [Psion]0m
-
- The original Spreadsheet that was bundled with the QL. It cannot handle
- graphics, but is still state of the art.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- Runs on Amiga-QDOS without problems.
-
-
- 1mXchange [Psion]0m
-
- 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.
-
- 3mIMPLEMENTATION NOTES - 3.22 MJS0m
-
- You need memory expansion to use this program. Runs on Amiga-QDOS
- without problems.
-
-
- 1mText 870m
-
- An advanced Word processor for QDOS supporting proportional type and
- varying fonts and type sizes.
-
- 3mIMPLEMENTATION NOTES0m
-
- 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.
-
-
- 1mGraphiQL [Talent]0m
-
- A picture drawing program for low resolution mode.
-
- 3mIMPLEMENTATION NOTES0m
-
- Protected against piracy. The cracked Version runs on Amiga-QDOS
-
-
- 1mTechniQL [Talent]0m
-
- Another drawing program but for high resolution mode. It has interesting
- features, including a plotter driver, and may well be worth using.
-
- 3mIMPLEMENTATION NOTES0m
-
- The cracked Version runs on Amiga-QDOS but with problems.
-
-
- 1mQL Art0m
-
- A nice picture drawing program.
-
- 3mIMPLEMENTATION NOTES0m
-
- Is copy-protected and will not run on Amiga-QDOS.
-
-
- 1mMPaint [Medic Datasystems]0m
-
- The first picture drawing program for the QL that supported the mouse. It
- is a Basic program with some M-code extensions.
-
- 3mIMPLEMENTATION NOTES0m
-
- The cracked and compiled Version runs on Amiga-QDOS, but with problems
-
- --------------------------------------------------------------------------
-
- 1m4mSOFTWARE OVERVIEW - GAMES0m
-
- Games are mostly protected against copying and many are only available on
- Microdrive cartridges.
-
- 1mChess [Psion]0m
-
- Really good, a classic.
-
- 3mIMPLEMENTATION NOTES0m
-
- 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?
-
-
- 1mMatch (Tennis) [Psion]0m
-
- Another classic.
-
- 3mIMPLEMENTATION NOTES0m
-
- It works on the Amiga, but is too fast to play, since the QL had only
- 1/4 of the Speed.
-
-
- 1mQL Cavern [JMF]0m
-
- Graphic adventure (not comparable of course to Amiga games)
-
- 3mIMPLEMENTATION NOTES0m
-
- Not too bad, runs on the Amiga with modifications (Interrupts must be
- enabled!)
-
- --------------------------------------------------------------------------
-
- 1m4mBIBLIOGRAPHY0m
-
- A list of books/publications that proved useful:
-
- 1mQL BOOKS0m
-
- 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.
-
- 1mAMIGA BOOKS0m
-
- 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
-
- 1m680X0 BOOKS0m
-
- 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
-
- 1mPUBLICATIONS0m
-
- 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
-
- --------------------------------------------------------------------------
-