home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Elysian Archive
/
AmigaElysianArchive.iso
/
emulate
/
qdos4ami.lha
/
docs
/
updates.txt
< prev
next >
Wrap
Text File
|
1990-05-26
|
15KB
|
345 lines
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<ssp>] A value for the system stack.
[-m<lomem><+len|-himem>] Which area of memory should be used.
[-c<lomem><+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