The Problems with some Floppy drives were caused by a missing Diskchange signal from those floppy drives. This Bug is fixed by a new command: DSKCNG (means DISKCHANGE). This command must be given after the new Disk is inserted. Then you should access this Disk by a DIR command. Another Problem was caused by the missing hardware clock on some Amiga 1000 and Amiga 500 computers. Okay, forget it. The IO.FLINE bug (caused crash on BASIC LOAD) in the Janus device driver is removed. Please install the new QLDISK.COM on your PC side. -------------------------------------------------------------------------- Thanks to Rod Crookes, who send me his patched Version of the QDOS for english keyboards. This was the main Reason for this Update He had send to me much more usefull stuff, but i think it is better not to include such software in a PD-Disk, since there may be a copyright on it... The Load_QDOS routine has been changed to avoid loading QDOS at absolute addresses. This should be of great use to all of you, who had trouble with the second floppy drive. There are now two different files QL2MB, which can cope with different addresses of fast memory, namely $200000 and $400000. These files now contain this address as second part of theier name. In general, this update is more "Amigaized", and so, perhaps more easy to understand. Thanks to Joern Ryba for the nice Icons. At the last update, I asked for Help with the CRC-sum of the WD1770. Two weeks after the update was released, I got a Disk from Mark J. Swift with a patch to the FLOPPY_CDE driver. Actually, this program was some months older, but late is better than never ! You should now be able to read Disks on a normal QL which have been written to by QDOS on the Amiga. May be, if i have more time, i will include the CRC generator in the assembler source, and enable checking of bad data again. But up to now it should be enough to have normal QDOS disks. Attention ! you should not expect, that you only have to show your Disks to QDOS to get them corrected ! You will have to format another Disk, and copy ALL files to the new Disk ! Thanks to Mark J. Swift. 18.3.1990 ******************************** * * * VERSION 3.10 UPDATES * * * ******************************** Since most of the material for this Update comes from M.J.Swift, I include his last comment here. After this I will continue with my own remarks to this Update: ------------------------------------------------------------------- VARIOUS BUG FIXES BY M.J.SWIFT AND F.N.SWIFT APRIL 1990 ------------------------------------------------------------------- CONTENT. This text file describes the changes that my brother and I have made to the the files on the QDOS3.03C release. Each change takes the form of a patch, the various source files concerned were NOT re-assembled. Here is a list of the relevant patches. Patch to QDOS_cde Offset $2C8, $11A bytes long. Patches to FLOPPY_cde Offset $10E8, $5E bytes long. Offset $14A2, $E bytes long. Offset $1710, $C bytes long. Offset $1A44, $2A bytes long. ------------------------------------------------------------------- CHANGES TO QDOS_uk, QDOS_dt and QDOS_2000B ------------------------------------------------------------------- A PROBLEM WITH SV.BTPNT There was an obscure bug which caused the machine to crash whenever the slave blocks filled up. The bug meant that on a small machine QDOS was extremely unreliable. A brief explanation. Every block of 512 bytes above the start of the system variables is a potential slave block and has an entry of eight bytes in a table which starts at SV.BTBAS and finishes at SV.BTTOP. Great care is taken to make sure that the length of this table IS divisible by eight. The system variable SV.BTPNT points to the most recent slave block entry and is initially set to point half way through the table. Unfortunately no checks are made on the value of SV.BTPNT itself which should also be divisible by eight. As it turns out, SV.BTPNT was ALWAYS initialised incorrectly. In my version I correctly initialise the table for values of lomem that are higher than the system tables (which was formerly accomplished in the initialisation routine for BASIC) and set SV.BTBAS to be half way between the first usable entry, and the first unusable entry. The slave block pointed to by SV.BTBAS is now guaranteed to be usable. As a result the "no clear" flag used by MM_ALCHP is possibly now redundant, although I've left it alone as it might be called by another routine. A PROBLEM WITH SV.RAMT Before this patch it was very difficult to choose a value for ramtop, (besides the defaults) that did not cause the machine to crash. This problem was again due to bad initialisation. In essence the start of the common heap has to fall on a 512 byte boundary and certain values of ramtop meant that this was not always the case. With the patch shown here, ramtop can be set to any value that is divisible by 512. THE QDOS PATCH. . . (* I have removed the Patch, since it is done now RAKO *) . ------------------------------------------------------------------- CHANGES TO FLOPPY_cde ------------------------------------------------------------------- DIRTY BOOTS. There is a puzzling bug in the floppy code which prevents the machine from automatically running the BOOT program from a QDOS disk, should there be one in the drive when you invoke QDOS. Also any attempt to access such a disk will be greeted with a 'not found' or a corrupt directory unless you physically remove and then re-insert the disk in the drive. I couldn't trace the bugs down (they are somewhere in the FLOPPY1_asm code) but managed to over-ride them by signalling a disk change in the initialisation routine of FLOPPY2_asm. . . (* again the patch is left out here. RAKO *) . This works fine when booting from flp1_ but what if you want to boot from the second drive? The same old problem crops up again. As it is at the moment the software disk change flag (CNG_FLG) can only handle one disk change at a time. We need to signal that the disks in ALL drives have changed, it is therefore necessary to change the way the flag is accessed. . . (* I don't want to bother you with this Patch RAKO *) . ------------------------------------------------------------------- CHANGES TO THE LOAD_QDOS ROUTINE ------------------------------------------------------------------- The newer loader New_Load_QDOS is certainly better than the old, but it still requires you to allocate absolute areas of memory which is not guaranteed, particularly if you are starting QDOS from the ramdisk, or if memory has become fragmented by other applications. L_QDOS COMES TO THE RESCUE The loader routine L_QDOS makes no assumptions about the availability of particular areas of memory and can be started from CLI or workbench without having to use IconX. To use L_QDOS from the workbench, create a project icon that has L_QDOS as the DEFAULT TOOL. When you double click on the icon, L_QDOS will take its parameters from the icons' TOOLTYPES field. The files QL512 QL512x QL1MB_chip QL2MB_20000 and QL2MB_40000 all use this method when loading QDOS. If you click once on any of these icons and then choose 'info' from the workbench menu, you will be presented with an example of parameter passing through the TOOLTYPES field. STARTING QDOS FROM RAMDISK Q. Why should I want to? A. If you only have one drive, its the easiest way to do an auto-boot of a QL disk. If you wish to start QDOS from ramdisk, copy all the necessary files into the ramdisk, remove the Amiga disk and put in a QL disk (it will show up as bad on the workbench). Open up the ramdisk and start QDOS as normal. When QDOS has loaded it will automatically load and then run the BOOT program from your QL disk. In order to make the process easier I have placed two files on disk called UKtoRAM and DTtoRAM which do most of the hard work for you. You should note that if you start QDOS from RAM on an unexpanded A500 with a 'Friends only' version of the QDOS disk, L_QDOS will run out of memory due to the size of the file MIXTOOL_cde. If you do not possess MIXTOOL_cde or if you delete it from the disk, there should be no problems. SYNTAX FOR THE LOADER ROUTINE L_QDOS usage: L_QDOS [QDOS_file] The name of the QDOS rom file. [-s] A value for the system stack. [-m<+len|-himem>] Which area of memory should be used. [-c<+len|-himem>] Which area(s) of memory should be cleared. [-r[himem] rom1 rom2..] The upper limit for memory to be used by ROMs, followed by the names of each ROM file. Example: L_QDOS QDOS_uk -s$28480 m$0-$80000 -c$0-$80000 -r$80000 TKamiga_cde JAN_cde FLOPPY_cde SERPAR_cde ...loads the British version of QDOS, sets the system stack to its normal value, sets the bottom and top of usable RAM to be in CHIP memory, clears all remaining CHIP memory, loads the relevant ROM images, and surrenders the Amiga to QDOS. If you have extended memory at $C80000 then you might like to try: L_QDOS QDOS_uk -s$28480 m$C00000-$C80000 -c$0-$80000 -c$C00000-$C80000 -r$80000 TKamiga_cde JAN_cde FLOPPY_cde SERPAR_cde ...sets the bottom and top of RAM to be in extended memory, loads the stated ROMs in CHIP memory, clears all remaining memory and initiates QDOS. The C and assembly source for L_QDOS are called 'L_QDOS.c' and 'SUB.asm' and can be found in the directory ':src'. L_QDOS uses a customized Cstartup code which allows a C program to treat the TOOLTYPES of an icon as if they were the parameters of a CLI command. Cstartup.o can also be found in the ':src' directory and should be BLINKed with L_QDOS.o and SUB.o should you feel the need to alter L_QDOS. ------------------------------------------------------------------- A FINAL WORD. ------------------------------------------------------------------- Finally, I created a new file called QL512x for people with extended memory at $C00000, moved all the QDOS rom image files into a directory called 'roms' and added this file to the docs directory. Mark J. Swift - Manchester, England. - 18th April 1990 ------------------------------------------------------------------- ************************************************************************ RAKO RAKO RAKO RAKO RAKO RAKO ************************************************************************ Here I'm back again. I have changed the source code according to Marks patches (GRRMPF!) and recompiled everything to a new Version of QDOS. The following changes have been added by me now: 1) The foreign Keyboard Manager TRAP #1 , D0=$27 , D1=Address of table is used to alter the keyboard table (default is German) Look at the file QL_EMU:src/QLASCII_asm. You can not use an Amiga assembler ! As a consequence of this TRAP , there is no more need for two Versions of QDOS. You will not have QDOS_dt and QDOS_uk anymore. 2) QDOS_2000B is not supported anymore, since I hope you have upgraded your Amiga to 1MB chipmemory. If not, then you should do so as fast as possible ! 3) I have added batch files for starting QDOS to aid you in creating a "turnkey Disk". You can use these Batchfiles from the WB by changing the default tool to "c:IconX". 4) some minor inconsistencies have been removed (The PAL bit is set, the Modulo is set correct) ›33m 5) QDOS itself (and the Floppy device) should now be 68010/20/30/40 proof. I have tested it shortly, and it seemed to work. To keep further compatibility, and make software devellopment more easy, I have added a new feature to the TRAP #0 (enter supervisor mode). It now saves the old Status Register as a word in the new defined System Variable SV.SR = $28024 All you have to do now to get the current Statusregister saved is TRAP #0 MOVE.W $28024,anywhere (Since the MOVE SR,anywhere instruction is privileged in 68010/20/30/40) Of course, this applies only for QDOS programms which are designed for the Amiga only, since the above feature is shurely not supported on ATARI, THOR, and QL machines. The other difference between 68000 and 68010/20/30/40 machines is that all TRAPs save an additional (Vector Base) Register on the Stack. So you should avoid to use RTE instruction, when you want to pop the SR and return to the calling programm. A last word about this: All TAS replaced programms will show (at least) a very strange behaviour when you try to run them on a 68030 machine with coprocessor, since the line $F... emulator is used for coprocessor implementation. I am writing a new TAS replacer for this purpose, which don`t generate line $F... instructions anymore. This will have the name ***************************************** * * * No_TAS_30_BAS. * * * ***************************************** Please look, if this file is allready included in the src directory. 6) There are new Toolkits (even for the PD-Disk) named BTOOL_cde and MATCH_cde, both from Boris Jakubith, and both Freeware. Please refer to the separate Manual for these. !! I did not appended them to the List of TOOLTYPES in the QL-Icons, because 1. The BTOOL has functions with the same name as those from the Toolkit II, but with incompatible arguments ! 2. The L_QDOS from M.J.Swift does (yet) not allow so much Toolkits to be specified in the TOOLTYPES. (Next time I'll return to the good old ICONX) !! (It took me nearly a whole day to get to this point! People seem to think, I have nothing else to do ! Perhaps next time I remove these stupid Toolkits, when I need the Diskspace for something else. The documentation from Boris is in German anyway.) AND NOW I HAVE TO SAY SOMETHINGS ABOUT HOW TO MAKE CHANGES TO QDOS: PLEASE DO CHANGE THE SOURCES, AND MARK ALL CHANGES WITH A SPECIAL COMMENT (e.g. a unique combination of special characters). WRITE DOWN (on white paper) WHICH ROUTINES (Label names) YOU HAVE MODIFIED, AND SEND BOTH (DISK AND PAPER) AS FAST AS POSSIBLE TO ME. I will put all changes together to make a new Version of QDOS. ›31m Thank you, Rainer Kowallik , May 1990 Eisackstr. 14 1000 Berlin 62 (030) 855 866 5 Kowallik@vax@hmi@dbp.de