EDOSPAT revision history Greg Cook Version Date Release letter 4.82 2009-08-11 b - *RUN, */ and OSFILE can load and save files up to the maximum allowed size (359 KB), useful for larger coprocessors, and will not call OSWORD &7F to transfer zero sectors, with unpredictable results. - OSFILE converts load and execution addresses in full 18 bit resolution. Addresses in the catalogue are mapped to external addresses 0..&2FFFF and &FFFF0000..&FFFFFFFF and vice versa. An input address outside these ranges is stored in the catalogue as &3FFFF. As EDOS does not recognise shadow memory, segment 2 was prioritised for the coprocessor rather than the shadow area (&FFFExxxx.) - An excess call to GSINIT has been removed from OSFILE, OSFIND and OSFSC. These functions now understand file names enclosed in double quotes just as *commands do. 4.81 2009-07-30 a - In OSGBPB, a write ending in a whole sector transfer sets the correct file size. This was a 'dogfood' bug as EDOSpat was producing empty files. In making a longer jump to reopen the Tube channel the main thread reached a test for L>0 and returned without copying PTR to EXT; thus OSGBPB is not entirely restartable at the jump point. 4.80 2009-07-28 Z - OSGBPB restructured so that the Tube data channel is reopened after direct transfers. This eliminates the need for the broken fix to OSWORD &7F. - In the Read ID command the settling delay bit is cleared on all targets. 4.71 2009-07-17 Y - *TITLE now works following the GSINIT fix of v4.70. - While OSGBPB has a data channel open to the Tube, OSWORD &7F will use it instead of opening its own channel. Whole and part sectors can now be transferred in one OSGBPB call. - The 50 us delay after storing the latch, introduced in v4.70, was found to be a red herring and has been removed. - The latch value construction code has been placed inline in OSWORD &7F to save space and time. 4.70 2009-07-07 X - New target: the Slogger Pegasus 400 board for the Electron (untested). - An excess call to GSINIT has been removed, so *commands of the form *LOCK"PROG" etc. address the correct filename, PROG. This was a big compatibility problem with commercial programs. - Delays for 50 us after writing the control latch. The latch write strobe is connected to the WD2791 master reset in Opus boards. Modified boards are now stable when switching between 250 kHz and 500 kHz operation. - By adjusting the latch parameters in the controller record, either the DFS or the DDOS format can be made to work at 500 kHz FM (8" floppy style) for reliable performance on 3.5" HD discs. Standard DFS or DDOS discs, respectively, will not be readable with the same ROM. - Improved the volume fix introduced in v4.51. 4.60 2009-02-20 W - EDOSPAT has been adapted to use the controller records from my multiformatter program. This makes available two new targets: the early Watford Electronics 1770 controller and the Opus Challenger 3-in-1 unit. - The disc catalogue is written with version number &20 and the sector count in big-endian form as written by DDOS. 4.52 2008-09-09 V - When track stepping auto-detection is enabled with *OPT 8,255 or similar, *VERIFY verifies the entire surface including tracks 0 and 1. 4.51 2008-02-25 U - EDOSPAT version string format changed and Master target binary file renamed at the suggestion of a binary sent by Steve Bass. - The yes/no question prompt flushes the current input buffer, not the keyboard buffer specifically. - *FORMAT now succeeds when the *OPT 7 volume setting is 1. The single volume occupies the whole disc apart from the catalogue track. 4.50 2008-02-10 T - New target: the BBC Master controller. - Acorn 1770 target now works. Many thanks to Steve Bass for his investigation and sample code for both targets. - The control latch conversion routine is now table-based. - Prints a newline before the banner in *HELP. - Files are created with load and execution addresses of &3FFFF. - OSFILE can unlock Locked files, or change their catalogue information. The attribute is returned as per Acorn DFS: &00 if unlocked, &08 if locked. Bits 1 and 3 are tested on input, as before. - OSWORD calls &7D and &7E are only answered if EDOS owns the shared workspace. Otherwise they are passed on so that a client filing system (such as HADFS) can query the volume in its own format. As before, OSWORD &7F responds if EDOS owns the workspace or keyboard link 1 is made (HADFS compatibility option). - Further reduced stack load and overhead of OSARGS wrapper. 4.40 2007-05-27 S - Paged ROM header standardised to J.G.Harston's preferred format. - EDOSPAT version string format changed. - OSWORD calls &7D..&7F proceed regardless of workspace ownership if keyboard link 1 is made. As before, this link also activates the 1770 emulation hooks. - *HELP . is recognised and gives help for all recognised keywords (EDOS, DFS and UTILS). - *HELP "" is ignored. - *DUMP prints DEL characters as dots. - The EDOS banner is printed with one newline in *HELP. - edospat_gb_sector_op expects and returns the address in locations &BC,&BD,&1073 and &1074. 4.30 2007-04-30 Q - Further comments added. - *DRIVE is made an alias of *VOL. The drive identifier returned by OSGBPB calls 6 and 7 becomes a valid argument to *DRIVE, and EDOS becomes compatible with the DDOS usage of this command. - Paged ROM calls &0A (absolute workspace claim) and &0F (vectors changed) cause EDOS to flush all open files, so that other ROMs cannot affect the contents of files by claiming and overwriting the workspace. - The OSARGS wrapper is optimised to save space. As a result OSARGS returns C=1 iff the command is not recognised. The specification does not define the state of the carry flag, so this behaviour should not be expected in other filing systems. - OSGBPB 5 returns the drive number after the volume title and boot option. - OSWORD calls &7D..7F are ignored if EDOS does not own the absolute workspace, to prevent corruption of data. Note that no monitor message will be printed either. 4.22 2007-04-26 Q (Unreleased) - Page &A5 cleared of garbage. - The address of the extended vector table is fetched using OSBYTE &A8. - OSFSC 7 returns the correct range of file handles, &11..15. - The peak stack load of the OSARGS wrapper is reduced. - The OPUS EDOS banner is printed with the conventional double newline. 4.21 2006-11-27 P - LBA transfers (as used by OSFILE and OSGBPB) do a 24 bit add to update the OSWORD &7F address after transferring each track. This fixes a bug affecting larger Tube coprocessors. 4.20 2006-11-24 N - Patch blocks rearranged. - OSGBPB read/write routine compacted. - OSARGS returns a value in A depending on the call, in accordance with J.G.Harston's documentation. - OSGBPB returns A=0 on exit from recognised calls. - OSGBPB calls 6 (get CSD) and 7 (get library directory) return the volume identifier as , so that the path is completely described. - Whole sector transfers clear the channel's EOF warning flag, as with bytewise transfers. - After transferring a single byte in OSGBPB, the data pointer is incremented in 32-bits. 4.10 2006-11-15 M - Patch blocks rearranged. - Entry conditions of edospat_gb_lba changed. - OSGBPB whole sector transfers are done to the correct drive when multiple drives are in use. 4.04 2006-08-16 L - OSWORD calls above &7F are passed to lower paged ROM slots. - OSWORD calls &7D and &7E are not passed, having being serviced. - In OSWORD &7F, the Lost Data / Late DMA error is translated to its 8271 equivalent. - The routine to skip sectors of deleted data decrements the read address correctly. 4.00 2006-05-10 K - Patch blocks rearranged. - Page &92 cleared of garbage. - OSGBPB reads and writes whole sectors where possible. Carry-setting wrapper replaced with inline routine. 3.00 2006-04-04 J - Disc operation loop reassembled. - Waits for non-accepting state { NotReady SpinUpComplete } to clear before issuing command to controller. + This fixes a problem that caused part of the Opus 2791 image to be incorrect in the 2.02 release. 2.02 2006-03-13 H - When keyboard link 1 is made, emulation hooks default to accessing standard controller (so link state doesn't matter.) - *HELP HELP renamed *HELP EDOS. - EDOSPAT version string format changed. - Sense of Index and Track 0 flags determined. 2.01 2005-08-03 G - Some variable names contracted. 2.00 2005-07-02 F (Unreleased) - EDOSPAT patches image in parts using OSGBPB. - 8271 command table and NMI handlers reassembled. - All hardware access goes through hook routines, activated by keyboard link 1. 1.20 2005-06-16 E - When reading from disc, OSGBPB stops at end of file instead of raising an EOF error. - OSGBPB carry-setting wrapper rewritten to use existing routine to test length field. 1.15 2005-06-14 E (Unreleased) - *HELP HELP co-opted to display EDOSPAT version and target. - 'Force motor on' instructions for 1770 controller replaced with no-ops. - Comments reworked. 1.14 2005-06-04 D (Unreleased) - OSGBPB carry-setting wrapper made re-entrant. - More comments and abstraction. 1.13 2005-02-08 C (Unreleased) - In OSWORD &7D..E, the destination address is correct when copying the default path to the immediate path. 1.12 2005-02-02 - No changes. Updates to notes.txt. 1.11 2005-02-01 - No functional changes. Comments added. 1.10 2005-02-01 B - NMI handlers ignore INTRQ. + Patching is done by inserting code and replacing values according to a DATA table. + Multiple target DATA table dependent on this patch. 1.00 2005-01-27 A - Patching for multiple floppy drive controllers. + Patching is done by replacing instruction operands according to a DATA table. - OSWORD &7D, &7E implemented, based on DDOS 3.45. - OSGBPB exits with C=1 if the length field >0 on exit (EOF), or if the call is invalid. - Pages &85, &89, &9E, &9F, &AF and &B9 cleared of garbage.