____ _ _ _ ____ ____ ____ ____ ____ ____ / __ \ / \/ \ | | / ___| / __ \ / __ \ | _ \ / __ \ / ___| | |__| || || || | _ | |__| | __ | | | || | \ \| | | | \_ \ | __ || |\/| || || |__| || __ | |__| | |_/ \| |_/ /| |__| | __\ \ |_| |_||_| |_||_| \____/ |_| |_| \___/\/|____/ \____/ |____/ 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 -------------------------------------------------------------------------- ›1m›4mQUICK OVERVIEW›0m 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. -------------------------------------------------------------------------- ›1m›4mVERSION 3.24 ARCHIVE CONTENTS›0m '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. -------------------------------------------------------------------------- ›1m›4mAMIGA-QDOS v3.24 FEATURES›0m * 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 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 -------------------------------------------------------------------------- ›1m›4mWHAT'S NEW IN VERSION 3.24›0m * QDOS ROM relocatable into FAST RAM * Hard disk support via QubIDE ROM * some bug fixes -------------------------------------------------------------------------- ›1m›4mTHE 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. -------------------------------------------------------------------------- ›1m›4mQUICK START›0m ›1mINSTALLING THE EMULATOR›0m 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 DISK›0m 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 EMULATOR›0m 1. Double-click on the 'Start_QDOS_UK' icon. 2. Insert QLutils: into DF0: and at the F1/F2 prompt and press F1. -------------------------------------------------------------------------- ›1m›4mA QUICK TOUR OF THE QL›0m 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: ›3mNEW›0m ›3m10 PRINT "Hello World!"›0m ›3mRUN›0m ...the words 'Hello World!' are printed on screen. If you add the following: ›3m20 GOTO 10›0m ›3mRUN›0m ...then the same words will be repeatedly printed until you BREAK the program with the keys . You can save the program to the disk in the internal drive with the command: ›3mSAVE FLP1_HELLOWORLD_bas›0m or, if there is no room on disk, you can FORMAT a new disk with the command: ›3mFORMAT FLP1_WORKDISK›0m ...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_bas›0m You can then type: ›3mLIST›0m ...to see the BASIC listing, or: ›3mRUN›0m ...to execute the BASIC program. To execute a machine code task, use the EXEC_W keyword. For example: ›3mEXEC_W FLP1_XCHANGE›0m ...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. -------------------------------------------------------------------------- ›1m›4mCUSTOM STARTUP›0m 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_128K›0m This icon gives you a memory configuration similar to the original unexpanded 128K QL. ›3mCHIP_ONLY›0m Run QDOS from CHIP memory, and ignore all memory expansions. ›3mCHIP+2ndSCRN›0m Run QDOS from CHIP memory and install a second screen similar to the Minerva one. ›3mA500_RANGER_ONLY›0m 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_ONLY›0m 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 ICON›0m 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-›0m This sets the area of memory available to QDOS. corresponds to the start of the system variable area and corresponds to RAMTOP. ›3m-q›0m This sets the name of the required QDOS system ROM. The default name is 'SYS_cde' ›3m-p›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. -------------------------------------------------------------------------- ›1m›4mQDOS SYSTEM ROM›0m 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,
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 bar. Pressing 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. -------------------------------------------------------------------------- ›1m›4mO/S HOOKS›0m 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 EXTENSIONS›0m There are seven keywords associated with "MAIN_cde" ›3mRESET_TOP ,›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. is the old top of physical memory and 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,524288›0m afterwards, to re-use the memory - issue the command... ›3mRESET_TOP 524288,13107200›0m ›3mRESET_SV ›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 196608›0m To move the system variables back to their default position: ›3mRESET_SV 163840›0m ›3mRESET_EXTENTS ,,›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_ON›0m and ›3mICACHE_OFF›0m 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_ON›0m and ›3mDCACHE_OFF›0m These two commands allow the data cache to be turned on and off respectively. Amiga-QDOS boots with the data cache disabled. ›3mCOPYBACK_ON›0m and ›3mCOPYBACK_OFF›0m These two commands allow copyback mode to be turned on and off respectively. Amiga-QDOS boots with copyback mode disabled. -------------------------------------------------------------------------- ›1m›4mCLOCK›0m ›1mINITIALISATION›0m 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. ›1mBUGS›0m Doesn't find the battery backed-up clock in the A4000. The hardware has probably moved. -------------------------------------------------------------------------- ›1m›4mVDU›0m ›1mSECOND SCREEN›0m 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),-1›0m 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),-1›0m ...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),-1›0m set default screen to scr1 ›3mEXEC flp1_XCHANGE ›0m launch application ›3mMODE -128+32*(0-256),-1›0m 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 REGISTERS›0m 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 POINTER›0m 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 EXTENSIONS›0m There are five keywords associated with the VDU driver. ›3mBLIT_OFF›0m The BLIT_OFF command turns all blitter activity off. This will prevent the VDU driver from refreshing the QL screen. ›3mBLIT_ON›0m The BLIT_ON command turns blitter activity back on allowing the VDU driver to properly refresh the QL screen. ›3mSCR_PRIORITY , ›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,1›0m This will refresh (4/1)*(1/16) = 4/16 =1/4 of the screen every 1/50th of a second. ›3mSCR_PRIORITY 8,1›0m This will refresh (8/1)*(1/16) = 8/16 =1/2 of the screen every 1/50th of a second. ›3mSCR_PRIORITY 16,1›0m 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,2›0m 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_ON›0m This command displays a SPRITE on screen, relating to the position of the mouse pointer. ›3mPTR_OFF›0m This command hides the SPRITE relating to the position of the mouse pointer. ›1mBUGS›0m 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. -------------------------------------------------------------------------- ›1m›4mACE›0m 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 chips›0m 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 EXTENSIONS›0m There are five keywords associated with ACE. ›3mACE_OFF›0m The ACE_OFF command turns off ACE screen emulation and re-enables blitter screen emulation. ›3mACE_ON›0m The ACE_ON command disables blitter screen emulation and enables ACEs' processor dependent screen emulation. ›3mACE_PRIORITY , ›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. -------------------------------------------------------------------------- ›1m›4mKEYBOARD›0m ›1mQL RESET›0m 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 SCREEN›0m It is possible to flick between the second screen and the standard screen by pressing CTRL-TAB. ›1mINTERRUPTS›0m 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 KEYS›0m Keys F6-F10 produce the same codes as SHIFT F1-F5 ›1mNEW TRAP #1 CALL›0m 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 EXTENSIONS›0m There are six keywords associated with the keyboard. ›3mKEYDT›0m This command sets a German keymap (the default) ›3mKEYUK›0m This command sets a UK keymap (only available if you load KEYUK_cde). ›3mPTR_LIMITS [,,,]›0m This command sets limiting bounds for the position of the mouse pointer. The default limits are 0,0,256,256 ›3mPTR_INC [,]›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). -------------------------------------------------------------------------- ›1m›4mSOUND›0m QDOS sounds are supported in full, via the SuperBASIC BEEP command and its equivalent machine code MT.IPCOM command (Trap#1 with d0=$11). -------------------------------------------------------------------------- ›1m›4mSER DEVICE›0m The serial device is pretty reliable - even at high speeds! ›1mSER DESCRIPTION›0m 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. -------------------------------------------------------------------------- ›1m›4mPAR DEVICE›0m The parallel device is buffered and interrupt driven - so within the constraints of printer speed, output via the parallel port is very fast. ›1mPAR DESCRIPTION›0m 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. -------------------------------------------------------------------------- ›1m›4mFLP DEVICE›0m 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 EXTENSIONS›0m 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 ›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 ›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 [#]›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 ›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 ›0m Sets the default device/directory for programs and executables. ›3mDATA_USE ›0m Sets the default directory data files. ›3mSPL_USE ›0m Sets the name of the default copy/spool device/directory. ›3mDEST_USE ›0m As SPL_USE except that this command appends an underline the the 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. -------------------------------------------------------------------------- ›1m›4mJAN DEVICE›0m 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 EXTENSIONS›0m ›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) ›3mSHODIR›0m display the actual path at channel #1 ›3mJAN_USE <"abc">›0m set up a new device name for JAN (eg MDV) -------------------------------------------------------------------------- ›1m›4mQUBIDE QDOS harddisk driver›0m 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_rom›0m or ›3mQLboot:roms/QubA4000_rom›0m in the tooltypes of the Amiga QDOS start icon between ›3mQLboot:roms/MDV›0m and ›3mQLboot:roms/FLP›0m. 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_diskname›0m REMEMBER THIS COMMAND WILL ERASE ALL DATA FROM THE HARDDISK -------------------------------------------------------------------------- ›1m›4mHARDWARE DIFFERENCES›0m ›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_TAS›0m 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 QLIBERATOR›0m 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 COMPILER›0m 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 CODE›0m 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_TAS›0m Use this program to 'put-back' TAS instructions into programs that have been altered by NO_TAS. -------------------------------------------------------------------------- ›1m›4mSOURCE FILES›0m The complete assembly source for the emulator is included with this release. ›1mEDITING THE SOURCE›0m 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 SOURCE›0m 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 SOURCE›0m 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;*/note›0m This indicates a point that you should be aware of. ›3m;*/mend›0m This indicates a bug fix. ›3m;*/modify›0m This indicates that the code remains functionally equivalent to the JS version, but is changed in some way. ›3m;*/overlay›0m This indicates that the code differs significantly from the JS version. ›3m;*/insert›0m This indicates a new piece of code. ›1mKEY MODIFIERS›0m key modifiers precede a key, altering its meaning in some way. ›3mundo›0m This indicates that previous amendments were discarded in favour of the original JS source. For example: ›3m;*/undomend›0m This means that an apparent bug, fixed in a previous release, was not a bug after all. ›3mbegin and end›0m These key modifiers bracket an amended section of code. e.g: ›3m;*/begininsert and ;*/endinsert›0m These indicate the start and end of a section of code that is inserted anew. -------------------------------------------------------------------------- ›1m›4mOTHER UTILITIES ON THE QL SUPPORT DISK›0m ›1mPLAY_SCALE_bas›0m and ›1mPLAY_MUSIC_bas›0m Two programs to demonstrate the capabilities of the SuperBASIC BEEP command. ›1mSER_TRANSFER_bas›0m 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_bas›0m 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. ›1mBOOT›0m The boot program on the 'QLutils' disk loads a number of toolkits into memory, and sets up a small RAM disk. ›1mPD RAM-disk›0m 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_rext›0m 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_rext›0m 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_task›0m 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. ›1mC68PATCH›0m Patch C68 programs to be COPYBACK friendly ›1mDOC2RTF›0m Translate QUILL DOC files into .RTF form ›1mMEMORY_MAP›0m Simple program to display the QL memory map -------------------------------------------------------------------------- ›1mINTRODUCTION AND MOTIVATION›0m 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 -------------------------------------------------------------------------- ›1m›4mADDENDUM›0m ›1mCONTINUING DEVELOPMENT›0m 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 -------------------------------------------------------------------------- ›1m›4mSOFTWARE OVERVIEW›0m 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 -------------------------------------------------------------------------- ›1m›4mSOFTWARE OVERVIEW - TOOLKITS›0m ›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 MJS›0m 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 MJS›0m 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 MJS›0m 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 NOTES›0m Problems with compiler? -------------------------------------------------------------------------- ›1m›4mSOFTWARE OVERVIEW - LANGUAGES AND ASSEMBLERS›0m ›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 MJS›0m 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 MJS›0m 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 NOTES›0m 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 NOTES›0m This Compiler only works with less than 1MB RAM. ›1mMetacomco PASCAL [Metacomco]›0m ›3mIMPLEMENTATION NOTES›0m 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 NOTES›0m 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 NOTES›0m 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 NOTES›0m 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 NOTES›0m 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 NOTES›0m 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 NOTES›0m Runs without problems on Amiga-QDOS. ›1mFORTH [Digital Precision]›0m Another Forth implementation. ›3mIMPLEMENTATION NOTES›0m 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 MJS›0m 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 NOTES›0m Not tested on Amiga-QDOS. ›1mComputer one Assembler [Computer one]›0m Fast, small, no Macros, no linker. ›3mIMPLEMENTATION NOTES›0m 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 NOTES›0m 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 NOTES›0m 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 MJS›0m Works without problems on Amiga-QDOS ›1mMonQL monitor [HiSoft]›0m A generally useful monitor/debugger with a corresponding assembler (GenQL). ›3mIMPLEMENTATION NOTES›0m 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. -------------------------------------------------------------------------- ›1m›4mSOFTWARE OVERVIEW - EMULATORS›0m ›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 NOTES›0m Not Tested on Amiga-QDOS. ›1mCPMulator (CP/M emulator)›0m An 0.5 MHz Z80 with a few bugs. ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m Tested briefly on Amiga-QDOS and worked OK. -------------------------------------------------------------------------- ›1m›4mSOFTWARE OVERVIEW - UTILITIES›0m ›1mSuper Media Manager [Digital Precision]›0m Compiled SuperBASIC. Contains a useful description of how QDOS handles Disks. -------------------------------------------------------------------------- ›1m›4mSOFTWARE OVERVIEW - EDITORS, WORDPROCESSORS, AND GRAPHICS›0m ›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 NOTES›0m Runs without problems on Amiga-QDOS. ›1mED [Metacomco]›0m You should know it from the Amiga. ›3mIMPLEMENTATION NOTES - 3.22 MJS›0m 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 NOTES›0m 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 NOTES›0m 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 MJS›0m 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 MJS›0m 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 MJS›0m 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 MJS›0m 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 MJS›0m You need memory expansion to use this program. Runs on Amiga-QDOS without problems. ›1mText 87›0m An advanced Word processor for QDOS supporting proportional type and varying fonts and type sizes. ›3mIMPLEMENTATION NOTES›0m 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 NOTES›0m 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 NOTES›0m The cracked Version runs on Amiga-QDOS but with problems. ›1mQL Art›0m A nice picture drawing program. ›3mIMPLEMENTATION NOTES›0m 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 NOTES›0m The cracked and compiled Version runs on Amiga-QDOS, but with problems -------------------------------------------------------------------------- ›1m›4mSOFTWARE OVERVIEW - GAMES›0m Games are mostly protected against copying and many are only available on Microdrive cartridges. ›1mChess [Psion]›0m Really good, a classic. ›3mIMPLEMENTATION NOTES›0m 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 NOTES›0m 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 NOTES›0m Not too bad, runs on the Amiga with modifications (Interrupts must be enabled!) -------------------------------------------------------------------------- ›1m›4mBIBLIOGRAPHY›0m A list of books/publications that proved useful: ›1mQL BOOKS›0m 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 BOOKS›0m 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 BOOKS›0m 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 ›1mPUBLICATIONS›0m 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 --------------------------------------------------------------------------