1 /* $Revision Header built automatically *************** (do not edit) ************
3 ** © Copyright by Michiel Pelt
5 ** File : ProfFileSystem
6 ** Created on : Wednesday, 01-May-93 23:53:02
7 ** Created by : Michiel Pelt
8 ** Current revision : V18.4
13 ** A filesystem for the C= Amiga.
18 ** Added support for larger files and volumes
22 ** The first open source release based on 18.4 sources and updated by
23 ** the open source development team
24 ** - updated to 18.5 specs
26 ** - bugfix for large disks
27 ** - MorphOs compatibility
32 ** The last commercial release, PFS V5.3
34 ** Revision V18.4 bugfix
36 ** created on Saturday, 11.09.99 18:02:53 by Michiel Pelt. LogMessage :
37 ** - fixed deldir bugs 152, 153 and 154
38 ** (deldir datestamps and block locking)
40 ** Revision V18.3 release
42 ** created on Sunday, 13.06.99 17:48:37 by Michiel Pelt. LogMessage :
43 ** - Fixed bug related to rblkcluster sanity check
45 ** Revision V18.2 beta
47 ** created on Wednesday, 19.05.99 12:49:03 by Michiel Pelt. LogMessage :
48 ** - Fixed bugs found during test procedure
50 ** Revision V18.1 beta
52 ** created on Thursday, 13.05.99 17:12:06 by Michiel Pelt. LogMessage :
53 ** - Support for long filenames
55 ** Revision V17.14 beta
57 ** created on Monday, 26.04.99 17:19:25 by Michiel Pelt. LogMessage :
58 ** - beta warning 1 bug (142) fixed
59 ** - device name in error messages
60 ** - 30 buffers reset to 150
61 ** - grotere reserved area schijven
63 ** Revision V17.13 beta
65 ** created on Monday, 29.03.99 10:11:37 by Michiel Pelt. LogMessage :
66 ** - Autoupgrade bug fixed
68 ** Revision V17.12 beta
70 ** created on Thursday, 11.03.99 12:25:03 by Michiel Pelt. LogMessage :
71 ** - fixed superdeldir bugs and enhanced setdeldir
72 ** - releasenumbers with mu and ds indication in format requester
74 ** Revision V17.11 beta
76 ** created on Tuesday, 09.03.99 11:46:01 by Michiel Pelt. LogMessage :
78 ** - releasenumbers in versionhistory.doc
80 ** Revision V17.10 beta
82 ** created on Saturday, 06.03.99 21:45:40 by Michiel Pelt. LogMessage :
83 ** - Fixed bug 00136: KB blocks didn't work
84 ** - MODE_EXTROVING: bitrovingpointer voor reserved area (00114)
86 ** Revision V17.9 beta
88 ** created on Tuesday, 23.02.99 07:44:39 by Michiel Pelt. LogMessage :
89 ** - Larger delete directory: zie source/doc/deldir2.doc
90 ** - Bugfix 00132, 00134, 00135
94 ** created on Saturday, 27.09.98 12:25:13 by Michiel Pelt. LogMessage :
95 ** - Writeprotection softprotect can be disabled by c:Lock
96 ** - Copyprotection fail results in readonly disk
97 ** - ErrorMsg from macro to function -> save > 1K
99 ** Revision V17.7 not released
101 ** created on Friday, 25.09.98 23:17:48 by Michiel Pelt. LogMessage :
102 ** - Release version 4.4
104 ** Revision V17.6 beta
106 ** created on Sunday, 20.09.98 18:17:39 by Michiel Pelt. LogMessage :
107 ** - Fixed superindex mode problems
109 ** Revision V17.5 beta
111 ** created on Monday, 14.09.98 20:12:55 by Michiel Pelt. LogMessage :
112 ** - Test version for Phase 5 bug
114 ** Revision V17.4 beta
116 ** created on Tuesday, 01.09.98 07:13:41 by Michiel Pelt. LogMessage :
117 ** - Support for TD64
118 ** - New blocktype: anode superindex, plus more bitmapindexblocks
119 ** - Error if disk > 4G en geen DS of TD64
120 ** - Fixed issues 118, 121, 123
122 ** Revision V17.3 release 4.1
124 ** created on Tuesday, 16.06.98 12:40:38 by Michiel Pelt. LogMessage :
125 ** - Fixed issues 116, 117: problems with formatting 4G disks.
129 ** created on Thursday, 30.05.98 17:26:23 by Michiel Pelt. LogMessage :
130 ** - fixed bugs 106-109 plus part of 105
131 ** - max buffers to 600
132 ** - added ACTION_IS_PFS2
134 ** Revision V17.1 beta
136 ** created on Wednesday, 27.05.98 22:02:27 by Mark Harden. LogMessage :
137 ** - Added second DMAMask failover to include MEMF_LOCAL
139 ** Revision V17.0 beta
141 ** created on Friday, 22.05.98 23:09:01 by Michiel Pelt. LogMessage :
142 ** - Added datestamps, OPTION_DATESTAMP (Issue 00103)
143 ** - Updated custom packets for PFS2
144 ** - Compiled with SAS/C 6.58
145 ** - Built version for 060 (040 is the same as 020)
147 ** Revision V16.23 release
149 ** created on Wednesday, 22.04.98 20:37:38 by Michiel Pelt. LogMessage :
150 ** - Copyright transferred from FLD to GREED
151 ** - Changed name from AFS to PFS-II
152 ** - fixed filecorruption bug in Allocation.c
154 ** Revision V16.22 beta
156 ** created on Sunday, 19.04.98 02:33:20 by Michiel Pelt. LogMessage :
157 ** - fixed munglist problem reported by ATL
159 ** Revision V16.21 release
161 ** created on Wednesday, 19.02.97 21:50:39 by Michiel Pelt. LogMessage :
162 ** - Update procedure is aborted when error occurs (saver)
167 ** created on Sunday, 18.08.96 11:36:22 by Michiel Pelt. LogMessage :
168 ** - Empty directoryblocks written by AllocLRU() now detectable
169 ** by ignoring dirtystate in update:RemoveEmptyDBlocks()
170 ** - Global dirty flag set on each write (better for idle signal)
174 ** created on Monday, 29.07.96 21:17:38 by Michiel Pelt. LogMessage :
175 ** - ACTION_ADD_IDLE_SIGNAL added
176 ** - Maskfail -> MEMF_24BITDMA
180 ** created on Sunday, 23.06.96 17:05:10 by Michiel Pelt. LogMessage :
181 ** - BUGFIX: When entering sleepmode flushed references were
182 ** ignored, causing enforcer hits and crashes when awaking
186 ** created on Saturday, 08.06.96 16:15:36 by Michiel Pelt. LogMessage :
187 ** - Overwriting a file caused hardlinks to that file to become
188 ** corrupt (caused by NewFile())
189 ** - SetDate op deldirfile gaf 'Please Insert Volume' requester
193 ** created on Monday, 01.04.96 11:03:24 by Michiel Pelt. LogMessage :
194 ** - ACTION_DIE problems fixed (see dd_Quit)
198 ** created on Thursday, 14.03.96 23:20:46 by Michiel Pelt. LogMessage :
199 ** - bugfix: SetFileSize didn't work if #blocks remained constant
200 ** - big directory performance improvement
201 ** - fixed bug in diskchange code (FreeVec(rootblock) instead of FreeBufmem())
205 ** created on Thursday, 07.03.96 10:15:11 by Michiel Pelt. LogMessage :
206 ** - FreeBlocksAC: updatedisk, but no tobefreed_index update
207 ** > Fixes from 17 (Working) tree
208 ** - enforcer hit in checkupdate fixed
210 ** - rename muAF access fixed
211 ** - realloc anodebitmap bug fixed
212 ** - number of reserved blocks calculation
216 ** created on Monday, 19.02.96 10:12:07 by Michiel Pelt. LogMessage :
217 ** - Fixed DICE MakeIndex bug: CD file, Lock file/"". Fix in dd_Lock
218 ** routine (bug in this fix fixed in 16.14)
220 ** Revision V16.12 -- working tree overlap --
222 ** created on Monday, 29.01.96 23:21:31 by Michiel Pelt. LogMessage :
223 ** - Anodebitmap implemented
224 ** |-> less cache need and much faster file-create on large disks
226 ** Revision V16.11 -- working tree overlap --
228 ** created on Wednesday, 24.01.96 13:47:59 by Michiel Pelt. LogMessage :
229 ** - Notification problems fixed
230 ** Softlink problem fixed
231 ** Rootblock not updated after reinsertion of known disk
235 ** created on Friday, 29.12.95 12:05:49 by Michiel Pelt. LogMessage :
236 ** - ACTION_SET_ROLLOVER added
237 ** - overwriting rollover files doesn't cause them to become
242 ** created on Thursday, 21.12.95 13:06:33 by Michiel Pelt. LogMessage :
243 ** - Several significant bugfixes
247 ** created on Monday, 11.12.95 18:35:14 by Michiel Pelt. LogMessage :
248 ** - Direct SCSI support
252 ** created on Saturday, 09.12.95 17:15:44 by Michiel Pelt. LogMessage :
253 ** - bugfix: virtualsize of rollover files was limited to 64K
254 ** - bugfix: enforcer hit when reading from .deldir
258 ** created on Monday, 04.12.95 13:24:34 by Michiel Pelt. LogMessage :
259 ** - Rollover files implemented
260 ** - Reserved area roving pointer stored in rootblockextension
261 ** - bugfix: format deldir creation
262 ** - bugfix: makedirentry error handling
263 ** - bugfix: crossvolume hardlinks
264 ** - various other bugfixes
268 ** created on Wednesday, 22.11.95 16:38:12 by Michiel Pelt. LogMessage :
269 ** - bugfix: Sleepmode was unintentionally disabled
270 ** - bugfix: ACTION_UPDATE_ANODE sent wrong result on error
271 ** - bugfix: Reserved block allocation sometimes compromised atomic commit
272 ** - afsversion field in rootblock extension used now
273 ** - bugfix: rootblock wasn't reloaded after SLEEP_MODE was left
277 ** created on Wednesday, 15.11.95 17:02:01 by Michiel Pelt. LogMessage :
278 ** - Rootblock extension implemented
279 ** - Postponed operations implemented
280 ** - bugfix: IsTail() could cause crash after diskchange (or uninhibit)
281 ** - bugfix: 16.3 had a bug in ChangeFileSize online dir. update
285 ** created on Tuesday, 07.11.95 14:52:17 by Michiel Pelt. LogMessage :
286 ** - True Atomic Update
287 ** -> only 'postponed' delete is still missing
288 ** - No volume datestamp update (ever)
292 ** created on Thursday, 12.10.95 00:23:44 by Michiel Pelt. LogMessage :
293 ** - new data caching algortihm, improving random write access
297 ** created on Wednesday, 04.10.95 15:02:01 by Michiel Pelt. LogMessage :
298 ** - preallocation for extended files implemented
299 ** - Checking allocated buffer memory against memorymask
300 ** - 2.0 now profits from memorypools too
304 ** created on Tuesday, 03.10.95 15:07:59 by Michiel Pelt. LogMessage :
305 ** - Merged develop tree: anodecache included
309 ** created on Thursday, 28.09.95 13:15:21 by Michiel Pelt. LogMessage :
310 ** - DeleteDir didn't free oldblocknr of dirty dirblocks.
314 ** created on Sunday, 17.09.95 17:28:46 by Michiel Pelt. LogMessage :
315 ** - deldir creation bug fixed
316 ** - CreateLink and CreateSoftLink didn't check namelength
320 ** created on Wednesday, 30.08.95 16:38:21 by Michiel Pelt. LogMessage :
321 ** - dd_Open now opens file dp_Arg2 argument if filename empty
323 ** - dd_Open returned ERROR_OBJECT_WRONG_TYPE instead of ERROR_SOFT_LINK
324 ** when opening soft linked object
325 ** - Error requester changed: only one button ('OK')
326 ** - Retry possible when Read/Write error occurs, including check if
327 ** the same disk is still present (by CheckCurrentVolumeBack())
331 ** created on Friday, 25.08.95 09:38:00 by Michiel Pelt. LogMessage :
332 ** - bugfix: rename .deldir
333 ** - diskchange check in RawRead & RawWrite
334 ** - rootblock not touched by Touch(), but by UpdateDisk(). Needed
335 ** because otherwise the disk won't be recognized after removal and
340 ** created on Sunday, 13.08.95 11:12:07 by Michiel Pelt. LogMessage :
341 ** - fixed deldir related bug in delete
342 ** - fixed bug in hardlink remapping
343 ** - Improved dostohandlerinterface (performance increase)
347 ** created on Saturday, 05.08.95 16:00:21 by Michiel Pelt. LogMessage :
348 ** - writetofile did not free blocks when memory alloc fails
349 ** - bugfix in new startup code
350 ** - deldir automatically created if it isn't there
354 ** created on Friday, 04.08.95 16:48:03 by Michiel Pelt. LogMessage :
355 ** - Better memory check
356 ** - bugfix: rename should fail on volumes
357 ** - bugfix: now limiting filenamesize in rename too
358 ** - ACTION_KILL_EMPTY: delete directory with empty name if found
362 ** created on Thursday, 03.08.95 13:34:21 by Michiel Pelt. LogMessage :
363 ** - CUTDOWN: limit reserved area size
364 ** - Multiuser deldir
365 ** - SetOwner and SetProtection (limited) possible on deldir
366 ** (not on deldirentries)
370 ** created on Friday, 28.07.95 13:00:49 by Michiel Pelt. LogMessage :
371 ** - Empty dir and filenames (namelenght 0) not accepted anymore
372 ** - Implemented deldirentry validity check
373 ** - Fixed deldir related UpdateLE problem
374 ** - Filenamesize truncate in SearchInDir and SearchInDeldir
375 ** - Disksize check (rootblock->disksize field etc.)
379 ** created on Thursday, 27.07.95 10:19:20 by Michiel Pelt. LogMessage :
380 ** - Updated ACTION_DIE. Works now; except for the WB problem (not
385 ** created on Monday, 24.07.95 09:19:36 by Michiel Pelt. LogMessage :
386 ** - Limited filename size to 31 characters
387 ** - 'CD file' problem solved by clearing dp_Res2 field
391 ** created on Wednesday, 19.07.95 17:17:47 by Michiel Pelt. LogMessage :
392 ** - Deldir finished, but not entirely complete
393 ** (validity-check and diskspace freeing not yet implemented)
394 ** - bugfix: Newdir checks for disk writeprotection
395 ** - bugfix: Root-dir datestamp was not updated
396 ** - DiskInfo of an AFS disk now shows ID_INTER_FFS_DISK (was ID_DOS_DISK)
397 ** - bugfix: double recording of size in AllocBufmemR
398 ** - bugfix: crashed if MaxTransfer wasn't a multiple of the BLOCKSIZE
399 ** - bugfix: freeing exactly one anode worth of blocks from a file could
400 ** cause an anode problem (FreeBlocks())
404 ** created on Tuesday, 13.07.95 22:32:49 by Michiel Pelt. LogMessage :
405 ** - Made localisable (at linktime) by using different message files
406 ** - No directorycheck in multiuser (for muFS compat.)
407 ** - ReadWrite lock now is shared
408 ** - Changed Lite (User) version
412 ** created on Friday, 07.07.95 12:14:15 by Michiel Pelt. LogMessage :
413 ** - Fixed syquest diskchange problem (CheckVolume & dd_Close)
414 ** - Made a V36 stackswap..
418 ** created on Thursday, 06.07.95 16:54:56 by Michiel Pelt. LogMessage :
419 ** - muFS protection problem fixed: Lock now accepts 'Property access'
423 ** created on Friday, 23.06.95 22:21:25 by Michiel Pelt. LogMessage :
424 ** - Multiuser support
428 ** created on Friday, 23.06.95 19:30:43 by Michiel Pelt. LogMessage :
429 ** - Added minimum (50) and maximum (300) to number of buffers
430 ** - Protection extrafields only when needed
434 ** created on Wednesday, 21.06.95 13:14:40 by Michiel Pelt. LogMessage :
435 ** - fixed bug in checkvolume: should be called before UpdateLE
440 ** created on Tuesday, 20.06.95 19:29:55 by Michiel Pelt. LogMessage :
441 ** - Info() and Examine() now show read only if softprotected
442 ** - FreeAnodeBlocks bug fixed
443 ** - DoNotify called before fail check (dd_CreateDir) fixed
447 ** created on Friday, 16.06.95 16:13:03 by Michiel Pelt. LogMessage :
448 ** - softprotect disk after error occurs
449 ** (implemented by changing ErrorMsg macro and RawWrite)
453 ** created on Friday, 16.06.95 15:28:41 by Michiel Pelt. LogMessage :
454 ** - fixed an UpdateLE bug in Rename
458 ** created on Friday, 16.06.95 11:52:15 by Michiel Pelt. LogMessage :
459 ** - added bufferPool for WriteToDisk
460 ** - removed Touch() from WriteToDisk
464 ** created on Thursday, 15.06.95 22:37:43 by Michiel Pelt. LogMessage :
465 ** - Uses exec memory pools now
469 ** created on Thursday, 08.06.95 19:13:42 by Michiel Pelt. LogMessage :
470 ** - check-if-parent-is-dir bug fix (GetFullPath)
474 ** created on Thursday, 04.06.95 07:43:54 by Michiel Pelt. LogMessage :
475 ** - Implemented longword protection
479 ** created on Thursday, 04.05.95 00:12:04 by Michiel Pelt. LogMessage :
480 ** - Link bug fixed: forgot UpdateLE
484 ** created on Friday, 14.04.95 13:54:47 by Michiel Pelt. LogMessage :
485 ** - Cache inconsistency bug solved
489 ** created on Wednesday, 29.03.95 23:45:56 by Michiel Pelt. LogMessage :
490 ** - ACTION_MORE_CACHE implemented
491 ** - Notification support implemented
495 ** created on Friday, 24.03.95 21:39:52 by Michiel Pelt. LogMessage :
496 ** - Softlinks implemented
497 ** - Bugs in hardlinks handling fixed
498 ** - Bug in diskchange interrupt fixed
502 ** created on Tuesday, 28.02.95 23:38:15 by Michiel Pelt. LogMessage :
503 ** - '12.6' bugfix (12.5.1): Solves out of buffers problem
504 ** - Links & handling implemented
508 ** created on Thursday, 23.02.95 11:59:31 by Michiel Pelt. LogMessage :
509 ** - Directory extension
510 ** - SetOwner implemented
514 ** created on Saturday, 18.02.95 11:30:37 by Michiel Pelt. LogMessage :
515 ** - Added g->blocks_dirty field + usage
516 ** Updated AllocReservedBlockSave + call it
517 ** AllocReservedBlock(Save) can fail!
521 ** created on Tuesday, 14.02.95 18:16:52 by Michiel Pelt. LogMessage :
522 ** - Changed anodeblocks: 16 byte header, 84 anodes
526 ** created on Monday, 13.02.95 10:26:10 by Michiel Pelt. LogMessage :
527 ** - bugfix: Disksize as shown by dd_info was 1 too big
531 ** created on Monday, 13.02.95 09:57:15 by Michiel Pelt. LogMessage :
532 ** - ULONG anode fields in directory block & entry
536 ** created on Thursday, 09.02.95 09:59:44 by Michiel Pelt. LogMessage :
537 ** - MakeBlockDirty LOCKed blocks. PFS could run out of buffers.
541 ** created on Tuesday, 07.02.95 23:36:18 by Michiel Pelt. LogMessage :
542 ** - Enforcer hit fixed
543 ** - OpenFromLock access right bug fixed (ObjectArchive works now)
547 ** created on Sunday, 29.01.95 11:18:51 by Michiel Pelt. LogMessage :
548 ** - Rewritten most disk.c routines for better performance
549 ** - Full de_Mask and de_BufMemType support
550 ** - Implemented hash table for cache
552 ** - LOCKing changed; no longer in read routines
553 ** - Reserved blocks are now RawRead/RawWrite
557 ** created on Wednesday, 18.01.95 by Michiel Pelt. LogMessage :
558 ** - Completely new block allocation algorithm and routines
559 ** - New freeblock management (use bitmap now)
560 ** - New blocktypes: Bitmap, BitmapIndex, Index
561 ** - 1024 byte reserved blocks
562 ** - 1024 byte block support
563 ** - New Update algorithm
564 ** - Integrated Format
565 ** - PFS 9.5 compatibility dropped
569 ** V10.6 (05.10.94): Bugs fixed: FlushBlock didn't Remove blockchain (did only
570 ** lruchain), GetAnode now MakeLRUs indexblock.
571 ** V10.5 (01.10.94): UpdateLE, UpdateLE_exa, LOCK, UNLOCKALL,
572 ** ISLOCKED, DirectUpdate(). PLUS usage.
573 ** V10.4 (23.09.94): ChangeDirEntry check on ETF_VOLUME removed
574 ** Extended listentry_t and moved from struct * to *_t
575 ** Added LRU:FlushBlock, killed LRU:BlockUsed (nu macro)
576 ** V10.3 (21.09.94): Removed all references to block->usecount (11 places)
580 ** created on Monday, 12.09.94 21:22:41 by Michiel Pelt. LogMessage :
582 ** - MakeVolumeData: allocate blockpool (using de_NumBuffers &
583 ** de_BufMemType) --> CAN FAIL NOW (return 0)
584 ** - CountUseCount --> BlockInUse
588 ** created on Monday, 12.09.94 19:22:26 by Michiel Pelt. LogMessage :
589 ** - Added indexblocks with acc. functions
590 ** - Longword anodes with MODE_SMALL, MODE_BIG
591 ** - Modules new_anodes.c new_format.c tobedef.h
593 ** Revision V9.5.3: taken over from V9.5 parallel version
595 ** - RawRead and RawWrite now use CMD_ commands i.p.v. ETD_ comm.
596 ** - A nasty bug created in 9.5.1 fixed: the trackbuffer was flushed
597 ** by UpdateDisk->RequestCurrVolBack. Moved RCVB from TD to DiskRemove
598 ** Sequence and made it local to Volume.c
600 ** Revision V9.5.2: last common version
602 ** created on Wednesday, 24.08.94 21:40:54 by Michiel Pelt. LogMessage :
603 ** -*- changed on Tuesday, 06.09.94 19:01:49 by Michiel Pelt. LogMessage :
604 ** - Upgraded to 9.5.3 from floppy version
605 ** -*- created on Wednesday, 24.08.94 21:40:54 by Michiel Pelt. LogMessage :
606 ** - SetFileSize() now returns new length instead of BOOL (ADOS manual bug)
607 ** - Added Touch() to SetFileSize()
611 ** created on Thursday, 18.08.94 10:22:54 by Michiel Pelt. LogMessage :
612 ** - I now do a CMD_CLEAR in GetCurrentRoot. If this is not present
613 ** diskspare gets in trouble after interleaving with FFS
614 ** - Added a diskcache invalidate to NewVolume()
615 ** - Restricted TD_FORMAT to inhibited mode. Removed NewVolume() from
616 ** Format() (not allowed during inhibit)
620 ** created on Sunday, 15.08.94 by Michiel Pelt
621 ** - All 'name relative to path' packets now ignore name upto
622 ** first colon (CreateDir, DeleteObject, Rename, Protect, SetComment,
623 ** SetFileDate). Cut out assign/colon related parts in Directory.c and
624 ** Volume.c: GetFullPath (edited), GetVolume (killed), GetVolumeN with
625 ** locals ScanAssignlist etc (killed).
626 ** -> All assign related problems (multiassign, PROGDIR:..) solved
627 ** - Serialize disk now also updates DosList.
628 ** -> SD problem fixed. Diskcopy should work
629 ** - VolumeRequest now uses ErrorReport
630 ** - VolumeRequest, PleaseInsertVolume killed
631 ** - Serialize disk still didn't work: called within tick after diskcopy
632 ** and is called from Inhibited state.
636 ** created on Thursday, 02.06.94 15:45:39 by Michiel Pelt. LogMessage :
637 ** -*- 9.4.4: Friday, 05.08.94 17:44:26
638 ** - The trackdisk buffer is now cleared after diskremove and
640 ** -*- 9.4.3: Tuesday, 02.08.94 16:01:55
641 ** - PFS respects MaxTransfer now
642 ** -*- 9.4.2: Monday, 01.08.94 09:11:06
643 ** - bugfix DiskRead: UpdateCache if last block tbr in cache
644 ** DiskSpare compatibility fix: CMD_UPDATE after FlushCache.
645 ** -*- 9.4.1: Wednesday, 20.07.94 09:12:24
646 ** - Accept diskspare as a trackdisk device
647 ** - DiskInfo NumBlocks now does not include the reserved blocks
648 ** -*- 9.4: Friday, 10.06.94 17:14:05
649 ** - Added TD_Format and TD_WriteToCache to improve floppy write
650 ** performace. Can now copy c: (782K) to PFS: in 44 seconds.
651 ** - rewritten WriteToFile, ReadFromFile, DiskRead and DiskWrite
652 ** to solve SAS C write/seek bug
653 ** - Diskspare.device supported by changing ETD_MOTOR to TD_MOTOR
654 ** - Check DOSFALSE i.p.v. DOSTRUE with INHIBIT (Holger Kruse)
658 ** created on Monday, 30.05.94 21:32:50 by Michiel Pelt. LogMessage :
659 ** - Now creates inputevents on diskchange
660 ** - PFS now adds FS to FileSysResource list (Nicola3005)
661 ** - Added disktypes for ACTION_DISK_INFO: NDOS, BUSY (Nicola3005)
662 ** - trackdisk.device flag added (H Kruse) i.v.m. TD_GETGEOMETRY
666 ** created on Saturday, 28.05.94 10:52:14 by Michiel Pelt. LogMessage :
667 ** - international mode casecompare implemented. BOOTABLE NOW (Holger Kruse)
668 ** - bugfix: empty files (was caused by 8.1->8.3 conv) (Rougier)
672 ** created on Friday, 20.05.94 13:11:02 by Michiel Pelt. LogMessage :
673 ** -*- changed on Wednesday, 25.05.94
674 ** - bugfix: Rename 'yourself' (e.g 'hello' to 'Hello')
675 ** - Exec lijsten (dubbel gelinkt) voor alles
679 ** created on Thursday, 12.05.94 22:59:52 by Michiel Pelt. LogMessage :
680 ** - RDB installable version (using HDToolBox!), added StackSwap()
681 ** in Boot.c (Rougier: StackSwap)
685 ** created on Monday, 09.05.94 22:00:35 by Michiel Pelt. LogMessage :
686 ** -*- changed on Thursday, 12.05.94
687 ** - Removable if <=2 heads and LowCyl == 0: for diskspare.device
688 ** - bugfix: NewFile didn't check disk condition (like write-prot)
689 ** - Bugfix: parameter-inversion of ctrl->matchfunc
690 ** - Format dynamicly chooses reserved area-size now
694 ** created on Friday, 06.05.94 13:33:10 by Michiel Pelt. LogMessage :
695 ** - Optimized DiskRead & DiskWrite (added cache); added RawRead, RawWrite,
696 ** ReadFromCache, FillCache, FlushCache, WriteToCache
697 ** · structures.h: struct diskcache en g->diskcache added
698 ** · UpdateDisk: cache FlushCache()ed and RawWrite() used
699 ** · Format: FlushCache()
700 ** · Initialize: g->diskcache allocated
704 ** created on Wednesday, 04.05.94 12:22:47 by Michiel Pelt. LogMessage :
705 ** - Optimized ReadFromFile en WriteToFile (minimized diskaccesses)
709 ** created on Friday, 29.04.94 15:14:37 by Michiel Pelt. LogMessage :
710 ** - Slightly optimized WriteToFile (extended flag)
714 ** created on Friday, 29.04.94 10:23:35 by Michiel Pelt. LogMessage :
715 ** - First version that accepts harddisks (upto 32MB)
716 ** -> volume numblocks,numblocksused,numblocksfree nu LONG ipv WORD
717 ** + usage (in MakeVolumeData)
718 ** -> TestRemovability: default removable
720 ** Revision V7.5 (release 3)
722 ** created on Wednesday, 20.04.94 14:15:55 by Michiel Pelt. LogMessage :
723 ** - Nasty usecount bug 'fixed' (replaced by usecountcounter)
724 ** zie blz 103 schrift
725 ** - RemEmptyDBlk, -ABlk & DeleteDir: FreeVec added
729 ** created on Monday, 18.04.94 23:53:02 by Michiel Pelt. LogMessage :
730 ** - ACTION_SERIALIZE_DISK implemented
731 ** - ACTION_CURRENT_VOLUME fixed (zie DevKit3.1 tutorials)
732 ** - ACTION_WRITEPROTECT implemented
736 ** created on Monday, 18.04.94 22:09:18 by Michiel Pelt. LogMessage :
737 ** - A few CMD_UPDATES added:
738 ** 'DiskRelabel' en 'Timer-end unchanged'
739 ** - Examineall type-check added (BrowserII works now)
743 ** created on Monday, 18.04.94 11:50:30 by Michiel Pelt. LogMessage :
744 ** - Writeprotection & volumecheck bugfixes:
745 ** ChangeFileSize, dd_Rename, SetDate, ProtectFile, AddComment
746 ** - Diskchangeinterrupt-name now is mountname-specific (pfs_interrupt)
748 ** Revision V7.1 (not released)
750 ** created on Wednesday, 13.04.94 12:44:50 by Michiel Pelt. LogMessage :
751 ** - SetDate bug fixed: the arguments as specified in DOS manual
752 ** were incorrect (bug reported by Pierre Carrette)
754 ** Revision V7.0 (not released)
756 ** created on Wednesday, 13.04.94 12:24:17 by Michiel Pelt. LogMessage :
757 ** - Reentrant version:
758 ** all functions use a globaldata parameter g
759 ** timeout variable (DosToHandlerInterface) moved to globaldata
760 ** ! library-handling not yet fixed
762 ** Revision V6.14 (not released)
764 ** created on Wednesday, 13.04.94 12:23:27 by Michiel Pelt. LogMessage :
765 ** - added Removable flag to globaldata
766 ** - added Firstblock & lastblock entry to globaldata
767 ** - added TD_CHANGESTATE failure check to GetCurrentRoot
768 ** - now writes the two bootblocks in one access (format)
769 ** - constructed GetDriveGeometry() functie. Now gets geometry and
770 ** adapts (to) DosEnvec table (FillDosEnvec function killed)
772 ** Revision V6.13 (not released)
774 ** created on Sunday, 10.04.94 15:42:29 by Michiel Pelt. LogMessage :
775 ** - More specific DiskWrite() and DiskRead() error-messages
776 ** - Replaced LDF_WRITE with LDF_READ to prevent DeadLock
777 ** --> multiple treaded filesystem would be better (DOS is!)
779 ** Revision V6.12 (release 2)
781 ** created on Saturday, 26.03.94 08:28:14 by Michiel Pelt. LogMessage :
782 ** - 6.12: Devicenames of length 4 allowed now (init bug)
783 ** - 6.11: 'Ask for volume' 2.0 adaption; errormsgs revised (release 1)
784 ** - 6.10: reordered source; SetFileSize implemented
785 ** - 6.9: Blocksorted update; Disksize dependent reservedarea
786 ** - 6.8: time in ½ sec slices; FreeUnusedResources
787 ** - 6.7: Variable timeout, bugfixes
788 ** - 6.6: Beta release version
789 ** - 6.5: MotorOff() only after timeout; Added read-timeouts
790 ** - 6.4: ACTION_SAME_LOCK added
791 ** - 6.3: ExNext changed; dirlockentry added
792 ** - 6.2: Save saves, ook voor dir & anode blokken
793 ** - 6.1: Debuground (tstprg) of 6.0
794 ** - 6.0: Allocationroutines fully rewritten
796 ** Revision V5 - Timer and diskchangehandler
798 ** created on Wednesday, 06.10.93 23:26:15 by Michiel Pelt. LogMessage :
799 ** - 5.1: Added DiskChangeHandler
800 ** - 5.0: Added timer & ACTION_DIE
802 ** Revision V4 - All basic actions implemented
804 ** created on Sunday, 03.10.93 20:27:16 by Michiel Pelt. LogMessage :
805 ** - 4.7: IsChildOf(), upgraded easyrequest, listentry_ptr gone
806 ** - 4.6: Direntry-references restored after dirblockchange
807 ** - 4.5: Format, ACTION_INHIBIT, relabel
808 ** - 4.4: Full diskstate-handling (disktype en diskstate added)
809 ** - 4.3: Assigns supported; Uses GetDriveGeometry; ACTION_FLUSH implemented
810 ** - 4.2: Newvolume en diskchange aangepakt
811 ** - 4.1: New GetFullPath en FindObject
812 ** - 4.0: This will be the first version that actually does something.
814 ** Revision V3 - Compilefailurefree
816 ** created on Tuesday, 31.08.93 19:00:08 by Michiel Pelt. LogMessage :
817 ** - 3.1: Compiled & completed volumechecks and requests
818 ** - 3.0: New debugging step; diskchange; becoming real FileSystem
822 ** changed on Thursday, 02.06.93 12:19:47 by Michiel Pelt. LogMessage :
823 ** 2.4: Merged all levels in one file for easy debugging. Moved all
824 ** sources to main filesystem directory. V2.05: NextBlock ()++
825 ** 2.3: New function: GetFullPath. Changed prototype for FindObject
827 ** 2.2: Take account of rootblock case
828 ** 2.1: Some errors removed
829 ** 2.0: Compilation ready. All functions implemented. Go for test
830 ** program which uses functions defined here.
834 ** 1.3: Second compilation phase: use the generated protos. Only a
835 ** few NYI functions left. .o size stackcheck:11940; opti 5:9672
836 ** 1.2: First compilation phase: Prototype generation
837 ** 1.1: First walkthrough. Still a few functions to be implemented
838 ** 1.0: Initial release
840 *********************************************************************************/
841 #define REVISION "19.0"
842 #define AUTHOR "Michiel Pelt"
863 #define RELEASE RELNUM E1 E2 E3