============================ BDDE version 1.5c - 21/08/94 ============================ 1. What is BDDE . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Who produced BDDE . . . . . . . . . . . . . . . . . . . . . 3 3. Registering BDDE . . . . . . . . . . . . . . . . . . . . . . 3 4. The registered version . . . . . . . . . . . . . . . . . . . 4 5. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 4 6. BDDE and media-conversion . . . . . . . . . . . . . . . . . 4 7. Using BDDE . . . . . . . . . . . . . . . . . . . . . . . . . 5 8. Making the dump using AnaDisk . . . . . . . . . . . . . . . 5 9. Making the dump using ADU . . . . . . . . . . . . . . . . . 6 10. Putting BDDE to work . . . . . . . . . . . . . . . . . . . 6 11. A sample session . . . . . . . . . . . . . . . . . . . . . 8 12. Let's `ls` a little . . . . . . . . . . . . . . . . . . . . 8 13. `df` and `di` . . . . . . . . . . . . . . . . . . . . . . . 10 14. Getting down to business: `cp` . . . . . . . . . . . . . . 10 15. Debug Level . . . . . . . . . . . . . . . . . . . . . . . . 11 16. `cp` continued . . . . . . . . . . . . . . . . . . . . . . 12 17. Conditional extraction . . . . . . . . . . . . . . . . . . 18 18. Using listfiles . . . . . . . . . . . . . . . . . . . . . . 18 19. The interleave . . . . . . . . . . . . . . . . . . . . . . 19 20. Initializing BDDE . . . . . . . . . . . . . . . . . . . . . 21 21. Other options . . . . . . . . . . . . . . . . . . . . . . . 23 22. Just another `od`.. . . . . . . . . . . . . . . . . . . . . 23 23. SmartSeek . . . . . . . . . . . . . . . . . . . . . . . . . 25 24. I love it when a plan comes together.. . . . . . . . . . . 25 BDDE V1.5c User Guide page 1 - (c) 1992,4 HanSoft & Partners 25. Piping and redirecting . . . . . . . . . . . . . . . . . . 28 26. Mum, it doesn't work! . . . . . . . . . . . . . . . . . . . 29 27. (Error)messages . . . . . . . . . . . . . . . . . . . . . . 29 28. Tips and tricks . . . . . . . . . . . . . . . . . . . . . . 35 29. Finally.. . . . . . . . . . . . . . . . . . . . . . . . . . 35 BDDE V1.5c User Guide page 2 - (c) 1992,4 HanSoft & Partners 1. What is BDDE --------------- BDDE (BetaDisk Dump Extractor) is an MS-DOS utility that enables a former BetaDisk user to transfer his files to the IBM-PC or Atari-ST without fiddling around with serial cables and COM-ports. The resulting files can be read into the Spectrum Emulators of Gerton Lunter, Kevin Phair (MS-DOS) and of Christian Gandler (Atari-ST). Apart from all this you can retrieve *every* bit of information concerning your BetaDisk. Even more than you ever could on your own Spectrum! 2. Who produced BDDE -------------------- BDDE is produced by J.L. Bezemer under the HanSoft-label. The author was quite active in the Spectrum scene from 1983 until 1987 and ported packages like Micro-Prolog, Artic Forth and HiSoft BASIC to BetaDisk. Apart from that he cracked several protection-schemes like LensLok and SpeedLok. He also wrote several distinctive menu-programs, the last being FRED (FRont End Display) that featured a graphical user-interface not unlike the Apple Macintosh, previously unknown in the Spectrum environment. It is included in this package. 3. Registering BDDE ------------------- The registered version of BDDE is more expensive than a few packs of ciga- rettes, but you get a lot for your hard-earned money! Please send Dfl. 12.50 to account 86.87.11.853 of J.L. Bezemer in Den Haag (The Hague). Or just put a bill of DM 10 in an envelope. Registered users receive the complete version of BDDE, the C source-code (supporting K&R and ANSI compilers under Unix and MS-DOS), and some utility programs on an MS-DOS floppy disk. If you want an additional Windows version, please add Dfl. 2.50 (or 2 DM). Existing users can get an update for only Dfl. 5.00 (or 5 DM). Write to: J.L. Bezemer Turfmarkt 97 2511 DN Den Haag The Netherlands Registration for personal use is *not* mandatory. However, the use of this program in a governmental, institutional, commercial or business environment is limited to 2 disks only. After that you either register this program or stop using it. This program has been produced according to the European Legal Guidelines on Software. No information has been extracted from any product by reverse engineering. All information used has been published. THIS PROGRAM, BOTH SOURCE AND OBJECT, MAY NOT BE USED BY MILITARY OR POLITICAL ORGANIZATIONS OR USED FOR MILITARY OR POLITICAL PURPOSES. YOU MAY USE THE SOURCECODE OR PARTS OF THE SOURCECODE TO BUILD ANY PROGRAM AS LONG AS THE COPYRIGHT IS RECOGNIZED IN THE RESULTING PROGRAM (BOTH SOURCE AND OBJECT) AND ITS ASSOCIATED WRITTEN MATERIALS OR DOCUMENTATION. THIS EXCLUDES PROGRAMS BDDE V1.5c User Guide page 3 - (c) 1992,4 HanSoft & Partners CREATED FROM THE SOURCECODE OF BDDE WITH THE SAME FUNCTIONALITY AS BDDE. SUCH PROGRAMS MAY ONLY BE UTILIZED BY THE LICENSEE AND NOT BE DISTRIBUTED OR TRANSFERRED IN ANY WAY. 4. The registered version ------------------------- From a functionality point of view there is no difference between the regis- tered and the unregistered version. However, the registered version is more user-friendly and faster! E.g. a dump of track 159 takes the registered user only 7 seconds. The shareware version takes a vast 4 minutes. Using `cp` is about three times faster, although the difference is not that dramatic when using a hard-disk. These tests have been performed on a 80386sx with an 40 MB/28 ms hard-disk. The current version of BDDE can convert at a rate of about *120 kB/s* (using an 486/33 and an 335 MB/13 ms hard-disk). Furthermore the automatic interleave detection, the autoRUN linenumber report, list-file support and .TAP file conversion are disabled on the shareware version. 5. Requirements --------------- For the conversion of a 40 tracks BetaDisk a 5.25" 360 kB drive is required. To convert a 80 tracks BetaDisk you need either a 3.5" 720 kB drive or a 5.25" 1.2 MB drive. BDDE itself needs only a very modest configuration. Even a 128 kB machine with two 5.25" 360 kB drives will do in some circumstances. A rule of the thumb is, you'll need a machine with twice the online disk capacity of the size of the diskdump. BDDE is available for both MS-DOS and Unix. Tested platforms include several 80286, 80386sx, 80386, 80486 MS-DOS machines (MS-DOS), a Bull DPX/2 340 running BOS V2.00.69, a 486/33 clone running Coherent V4.2 and a RS/6000 250 running AIX V3.2 (Unix). 6. BDDE and media-conversion ---------------------------- There are three levels of conversion. The first just transfers the data from one medium to another, e.g. from harddisk to tape. This is called media- conversion. The second takes all data and transfers it from one file-format to another, e.g. when converting graphical data from a GIF-file into a BMP-file. This is called file-conversion. The final form of conversion is more diffi- cult. It's called data-conversion. Both formats are not compatible so some data has to be added manually or "guessed". You'll find these conversions a lot when you're transferring data from a non-relational database into a relational database. BDDE can do all file- and data-conversion, but is (still) unable to do media- conversion. Of course it can be done, but it takes a lot of low level program- ming. Worse, a solution can work on some hardware and refuse its services on other hardware. So I decided to leave that level of conversion alone and concentrate on file- and dataconversion, which is difficult enough. BDDE V1.5c User Guide page 4 - (c) 1992,4 HanSoft & Partners That means that you have to get yourself a nice diskanalyser, which can also dump the contents of the diskette examined on an MS-DOS (or Unix) readable disk. BDDE will then unpack these files for you. We are currently supporting "Anadisk" from Sydex and "ADU" from AME Computing Systems. Others might also be supported; just check your documentation on whether raw diskdumps are supported. We have found two programs suitable for doing this job and we support them both. Neither BDDE nor its producer are connected in any way to the companies or person(s) who produce the programs we support. BDDE is an independant conversion-program. If you need support on the use of any of these products, you have to contact these companies or person(s). 7. Using BDDE ------------- The conversion is done in two stages. First, the disk-analyser converts the entire BetaDisk to a MS-DOS file. BDDE converts this (dump)file to several MS- DOS or Unix files, each holding the equivalent to a BetaDisk file. These files can either be further converted or read in without any conversion into a Spectrum Emulator. There are Unix and MS-DOS versions of BDDE. They produce exactly the same files. 8. Making the dump using AnaDisk -------------------------------- Read the instructions in ANADISK.DOC concerning ADCONFIG.EXE and configure Anadisk accordingly. When you're done, put the BetaDisk in either drive A: or B: (depends on the kind of computer you use and the disk you want to convert). Now start Anadisk and a menu will appear. Use the cursor-keys to highlight DUMP and press . A next menu will appear. Use the cursorkeys again to highlight the A: or B: drive. Choose the drive where the BetaDisk is inserted. Don't press yet! Anadisk will ask you whether one side or both sides have to be dumped. Choose both sides (unless you're working with a single sided disk). Finally you're asked if you want to include sector-information. The default is "No". You can use these dumps with BDDE, but you make your life a lot easier by answering "Yes" to this question. You can safely press now. BDDE uses this sector-information to check its position. A real drive does the same thing. That is, except for drives that position the head using special disks and diodes. These are called hard-sectored disks, but I haven't seen one since the Exidy Sorcerer (and that was a long time ago!). We're almost there. Just enter the filename you want the dump written to (any valid MS-DOS filename will do) and press . Remember the drive must be able to hold all the data Anadisk writes to the dump-file (and please do not try to write a dump to a BetaDisk!). A dump from an 80 tracks, double sided disk (including sector-IDs) will result in a 660 kB file. Finally, you're asked which track to start from and which track to end the dump. If you're not sure, enter 0 and 79. If it's a 40 tracks disk Anadisk will adjust according- BDDE V1.5c User Guide page 5 - (c) 1992,4 HanSoft & Partners ly. But if you want to do it nice and clean enter 0 and 39 for 40 tracks disks.. Ok, sit back and relax. Anadisk will do the job for you. It will keep you posted with a pointer and messages (read/write, etc.). Don't let warning messages like a difference in Logical Side ID ruin your day. Everything is alright. When Anadisk is done, you can go back to the DOS-prompt by hitting the spacebar. Now let's put BDDE to work. 9. Making the dump using ADU ---------------------------- Read the instructions to ADU. When you're done, put the BetaDisk in either drive A: or B: (depends on the kind of computer you use and the disk you want to convert). Now start ADU and a prompt will appear. If you want to convert the BetaDisk in drive A: enter: L 0 Else enter: L 1 If you want to convert a single sided, 40 tracks BetaDisk enter: VB 16; VT 40; VZ 256; VH 1; VO 0; C 0/39; Q The entry stands for the name of your dumpfile. If you want to convert a double sided, 40 tracks BetaDisk enter: VB 16; VT 40; VZ 256; VH 2; VO 0; C 0/79; Q If you want to convert a single sided, 80 tracks BetaDisk enter: VB 16; VT 80; VZ 256; VH 1; VO 0; C 0/79; Q If you want to convert a double sided, 80 tracks BetaDisk enter: VB 16; VT 80; VZ 256; VH 2; VO 0; C 0/159; Q That should do it. When ADU is done, you are returned to the DOS-prompt. Now let's put BDDE to work. 10. Putting BDDE to work ----------------------- Let's do something very simple. Like displaying the help-screen. Type `bdde` at the prompt and press . The following screen will be displayed: BDDE V1.5c User Guide page 6 - (c) 1992,4 HanSoft & Partners BetaDisk Dump Extractor V1.5c - (c) 1991,94 HanSoft & Partners Usage: BDDE [command] <[filelist|@listfile] [directory]> Commands: ls, df, di, cp, od Options : -Dx (Set debug level to %u; all) -ix (Set interleave to %u; all) -Mx (Use mediatype %u; all) -Fx (Mount BetaDisk dumpfile %s; all) -Ix (Initialize using init-file %s; all) -l (Show a long directory listing; ls) -u (Use erased files too; cp, ls) -s (Force sector filesize on error; cp) -Cx (Use conversion method %u; cp) -dx (Set first array to variable %c; cp) -f (Use same variable for all arrays; cp) -# (Force numeric arrays; cp) -$ (Force character arrays; cp) -S (Use random seek; cp, od) -tx (Dump track %u; od) -c (Dump track in ascii; od) For those among you who know Unix there is not much special to see. Just think of BDDE as a very small Operating System. After I had written the low-level routines of BDDE the whole thing became very transparent. To me the higher level routines seemed to work with tracks and sectors. However, BDDE works only with dump-files. That is why it is portable. But let's take a closer look to this helpscreen. - With `bdde` we start our mini-OS. - Then we'll have to enter the command we want to execute. Only `ls`, `df`, `di`, `cp` and `od` are available. As a matter of fact, `ls` is a Unix-DIR and `cp` is a Unix-COPY. `df` indi- cates how much free disk-space is available, not unlike FREE in 4DOS or CHKDSK. `di` provides a lot of technical information, like DISKINFO in Norton Utilities V4.x, but is *not* a Unix command. Finally, there is `od` which means Octal Dump and does about the same thing as the 'D' command of DEBUG. I know, it's strange but `od` cannot do an octal dump. It can only dump in ASCII or hex. Please note that all of these commands are case-sensitive. `LS` will *not* work! - You can slightly alter the operation of a command by adding several options. All options are prefixed by '-' instead of '/' like MS-DOS. And they are case-sensitive just like Unix. - When using `cp` you must add a target-directory like 'c:\temp' (DOS) or '/tmp' (Unix). You can even add a trailing separator to the directory- name. If you do not use `cp` adding a target-directory is an error. If you violate any of these rules or the order of the arguments BDDE will either show you a helpscreen or issue an error-message. So don't call me if BDDE V1.5c User Guide page 7 - (c) 1992,4 HanSoft & Partners that's the only thing you see all the time: you're definitely doing something wrong! 11. A sample session -------------------- In this section we will make a quick tour through the world of BetaDisk conversion. We included a sample dumpfile (made by ADU) to play around with. It's called "bdde.dmp". Just put it anywhere you want. Any directory will do. Before BDDE can do anything you have to let it know what you're working with. If you're using a sector-headerless Anadisk dumpfile or an ADU dumpfile the option '-M0' will apply. If you're working with a Anadisk dump *WITH* sector- headers, you'll have to use the option '-M1'. Furthermore, you'll have to specify the dumpfile that you are using. Both absolute and relative pathnames are supported. If you want to save yourself some typing, it is wise to use the system- variable support this version of BDDE provides. It's very easy to use. E.g. if your 'bdde.dmp' is located in the '/home/john' directory of your Unix-system enter: BDDEINIT='-M0 -F/home/john/bdde.dmp'; export BDDEINIT Likewise, if your BDDE.DMP file is located in the C:\TEMP directory of you MS- DOS system enter: set BDDEINIT=-M0 -Fc:\temp\bdde.dmp Now you can start your tour with a minimum of key-strokes. Have fun! 12. Let's `ls` a little ----------------------- Well, let's say you successfully dumped a BetaDisk using Anadisk. We can read what is on the disk by typing this command: bdde ls -l A list not unlike this will appear: BDDE V1.5c User Guide page 8 - (c) 1992,4 HanSoft & Partners Addr Len B/D First First Last First Last Filename Type Len(B) Run(C) NEG Tk/Sd/Sc Abs.S Abs.S #Sc Tk/Sc Tk/Sc ============================================================================== index BASIC 9232 9232 240 1/0/01 16 52 37 1/00 3/04 FRED CODE 59769 64300 0 3/0/06 53 75 23 3/05 4/11 keynes BASIC 13223 13166 89 4/0/13 76 127 52 4/12 7/15 bt,ks&ei BASIC 2620 2620 196 8/0/01 128 138 11 8/00 8/10 probe BASIC 10143 10101 97 8/0/12 139 178 40 8/11 11/02 musicflr BASIC 6900 6900 12 11/0/04 179 205 27 11/03 12/13 musicode CODE 65333 0 0 12/0/15 206 206 1 12/14 12/14 flagrec BASIC 1542 1298 250 12/0/16 207 213 7 12/15 13/05 MakeDir (3): Erased file '?eynsdoc' found: skipped MakeDir (3): Erased file '?lide' found: skipped HanSoft CODE 16384 0 0 17/0/15 286 312 27 17/14 19/08 C CODE 16384 0 0 19/0/10 313 339 27 19/09 21/03 I wish.. CODE 16384 0 0 21/0/05 340 366 27 21/04 22/14 birthday CODE 16384 1627 0 22/0/16 367 393 27 22/15 24/09 slide BASIC 4152 4038 200 24/0/11 394 410 17 24/10 25/10 <0> DATA 33150 317 195 25/0/12 411 412 2 25/11 25/12 Left the BetaDisk filename. The next column shows the file type. The next two columns are only interesting when it's a CODE file. The Addr-column indicates the loading address, the next one indicates the starting address, that is when you own a BetaDisk V3 interface. When using BetaDisk+ it indicates the length of the CODE files. CODE files cannot autoRUN on a BetaDisk+ as a consequence. The B/D NEG column doesn't contain very interesting information for the average user. It was added to enable me to check the allocation algorithm. The First Tk/Sd/Sc column shows on which physical track/side/sector a file starts. Only interesting when you want to peek into a BetaDisk using Anadisk (see ANADISK.DOC). BDDE has a similar function. The First Abs.S column shows on which absolute sector a file starts (the very first sector is absolute sector 0 and so on). The Last Abs.S column indicates what sector is the last absolute sector which still belongs to the file. The #Sc column shows how many sectors the file spans. Finally the First Tk/Sc and Last Tk/Sc columns. This notation is used by TR-DOS itself. It indicates the first and last logical track and sector of the file. Both tracks and sectors are starting with 0. When you want to use the `od` command the track number is important. Not everything seemed to go *THAT* well. We've got two warnings on our hands. That is because BDDE found two erased files on our dump, which *CAN* be extracted! If you want to see them just add the '-u' option to your command- line: bdde ls -l -u The '&' indicates that the file has been erased (unless you put that '&' there yourself). If you do not use the '-l' option BDDE will only show you the names of the files on disk. This can be very useful as we will show you later on. BDDE V1.5c User Guide page 9 - (c) 1992,4 HanSoft & Partners 13. `df` and `di` ----------------- These two commands provide you with information on the BetaDisk as a whole. I added these commands to allow users to obtain every possible bit of informa- tion without returning to the BetaDisk environment. Some information can't even be obtained in this environment. Just type: bdde df And the following list will appear: Volume label is: BDDE test Password is: 160 kb, (640 sectors) total 99 kb, (397 sectors) in 16 files, 2 deleted 4 kb, (16 sectors) in directory 56 kb, (227 sectors) free It will show you the name of the disk, its password (Sure, when you're using BetaDisk V3 or below), and some other information on the disk usage. `di` gives you quite another kind of information: bdde di PHYSICAL DISK INFORMATION LOGICAL DISK INFORMATION ------------------------- ------------------------ Format.... 40 tracks, single sided Media descriptor................ 19h Heads.......................... 1 Total sectors................... 640 Cylinders...................... 40 Bytes per sector................ 256 Starting head.................. 0 First sector of directory....... 0 Starting cylinder.............. 0 Number of sectors on directory.. 16 Starting sector................ 1 Maximum number of dir. entries.. 128 Ending head.................... 0 First sector of data area....... 16 Ending cylinder................ 39 Ending sector.................. 16 Very technical indeed. When you don't know what to do with it, just forget it. It's not very important when you're only interested in converting files. May be you can do something with the Format-entry. It indicates the disk-type. Yep, and it's correct! 14. Getting down to business: `cp` ---------------------------------- May be you think: well, that's all very nice but when do I get the hack my files converted to my machine. Slow down, it's all there. Just use `cp`. Type: bdde cp * . BDDE V1.5c User Guide page 10 - (c) 1992,4 HanSoft & Partners or (when you're using some kind of Unix): bdde cp \* . All BetaDisk files are now copied to the default directory. Do you want to use another directory or drive? bdde cp * c:\emul The files will now be copied to the C:\EMUL directory. However, do *not* try to read these files into any other emulator than the one from Gerton Lunter. It won't work! Oh no, not another conversion.. You won't need one. If you're converting files to your Atari St you only have to add an option like: bdde cp -C2 * c:\emul The same applies when you're using the SpecEm emulator, only then you have to use the -C3 option. When you add -C0 all the files will be copied, but without a header. The emulators need these headers to see what file is coming. Files without a header can be very useful when you want to convert them into something else, e.g. Tasword II files to MS-DOS or Unix-files. Registered users get a small utility to do just that, by the way. The option -C1 is default and makes files for the emulator of Gerton Lunter. If you are using V2 of his fine emulator you can also use the -C4 option which creates .TAP files. And I find them a lot easier to handle! By the way, if you are using SMARTDRV.EXE V4 (or another cache-program with write-caching) this tip is for you! BDDE generates files very rapidly and (especially when you are using a large write-cache) sometimes it may seem that nothing is happening. Don't reset! You'll ruin all your work because resetting throws away the contents of the write cache. Your computer is just VERY busy writing all these files to disk. Just wait a minute so SMARTDRV can catch its breath again. Of course you can disable the write-cache, but that isn't really necessary. 15. Debug Level --------------- A special feature of BDDE is the debug level. BDDE has 6 debug-levels. Initially used by the author to see if this beautiful program worked as intended, but now for your convenience: 5) Fatal, the program aborts. BDDE can't recover from an error like this. Like there is no BetaDisk dump to read. 4) Warning level 1. There is probably something very wrong, but the program can recover from the error. E.g. a wrong sector has been read (that's why we need the sector-IDs). If you make debug-level 3 the standard level, the program aborts also when it encounters a level 4 error. This is not always necessary. Sometimes you can safely continue. BDDE V1.5c User Guide page 11 - (c) 1992,4 HanSoft & Partners 3) Warning level 2. There is something of special interest going on. The program can easily handle this kind of situation. E.g. an erased file is skipped. 2) Information. The user just wants to know what is going on. E.g. a BetaDisk file has been converted to a MS-DOS file. 16. `cp` continued ------------------ Now the story tends to get a little different for Atari-ST and MS-DOS users. Most current users are MS-DOS users, so we'll tell them first how it's done. We'll come back to you. Just skip everything until you see "*ATARI*" or "*SPECEM*" in the text. The complete command line for the users of Gerton Lunters emulator now reads: bdde cp * . The next messages will be shown on your screen (that is, if you haven't forgotten to erase previously generated files): MakeDir (3): Erased file '?eynsdoc' found: skipped MakeDir (3): Erased file '?lide' found: skipped RunLine (2): Program 'index' runs from line 10000 MakeCopy (2): BetaDisk file 'index' copied to '.\index.bas' MakeCopy (2): BetaDisk file 'FRED' copied to '.\fred.cod' RunLine (2): Program 'keynes' runs from line 200 MakeCopy (2): BetaDisk file 'keynes' copied to '.\keynes.bas' RunLine (2): Program 'bt,ks&ei' runs from line 1 MakeCopy (2): BetaDisk file 'bt,ks&ei' copied to '.\btks&ei.bas' RunLine (2): Program 'probe' runs from line 1 MakeCopy (2): BetaDisk file 'probe' copied to '.\probe.bas' RunLine (2): Program 'musicflr' runs from line 1 MakeCopy (2): BetaDisk file 'musicflr' copied to '.\musicflr.bas' MakeCopy (2): BetaDisk file 'musicode' copied to '.\musicode.cod' RunLine (2): Program 'flagrec' runs from line 10 MakeCopy (2): BetaDisk file 'flagrec' copied to '.\flagrec.bas' MakeCopy (2): BetaDisk file 'HanSoft' copied to '.\hansoft.cod' MakeCopy (2): BetaDisk file 'C' copied to '.\c.cod' MakeCopy (2): BetaDisk file 'I wish..' copied to '.\iwish.cod' MakeCopy (2): BetaDisk file 'birthday' copied to '.\birthday.cod' RunLine (2): Program 'slide' runs from line 1 MakeCopy (2): BetaDisk file 'slide' copied to '.\slide.bas' GetAType (2): '<0>' (317 bytes) contains character array A (312 elem. in 2 dims.) MakeCopy (2): BetaDisk file '<0>' copied to '.\0.chr' Every error message is shown in this format. First of all the C-function that generated the message, in this case MakeCopy() and RunLine(). Between paren- thesis the error level (which indicates this message is just a bit of informa- tion) and finally the message itself. BDDE V1.5c User Guide page 12 - (c) 1992,4 HanSoft & Partners Probably you won't get the RunLine() messages. That's alright, this is the unregistered version and the function is just not there (conditional compila- tion so don't try to hack it!). If you like it, you must register. One thing is very obvious: BDDE filters out all characters that cannot be part of a filename under DOS. Then the whole name is converted to lower case even when you're working with the Unix-version. Lower-case filenames are also very convenient when you're working with PC-NFS. If there are no characters in the BetaDisk filename that are allowed under DOS, the name 'noname' is assigned to this file. In case there would be a conflict between two filenames, e.g. 'STRIPOKR' and 'stripokr' which are two perfectly different filenames to TR-DOS, BDDE will still try to create two different filenames. If BDDE were a dumb program you could never retrieve the first file, because it would be overwritten by 'stripokr'. However, BDDE takes notice of the file on disk and changes the extension of 'stripokr'. If both are BASIC files the first one created would be called 'stripokr.bas' and the second 'stripokr.ba0'. And it continues to do so until 'stripokr.ba9' has been written. Then BDDE has got one other trick up its sleeve. It starts to generate files from AA.AA0 to ZZ.ZZZ. That's about 36^5 files. Most users don't even have that many files on disk.. And after that? Sorry.. Finally the extension indicates what kind of file has been extracted. The extension '.cod' is assigned to CODE files, the extension '.bas' to BASIC files and the extension '.nmb' or '.chr' to DATA files. The old Spec has got to know a little more to read a file using the RS232 port. That's also true in the emulated version. That's why BDDE automatically generates the necessary 9 byte header. The header tells the Spectrum what kind of file is being read, how long it is and where it's got to be loaded. Well, when reading BASIC and DATA files it ignores the starting address, but *not* when reading CODE files! If you want to know more about the 9 byte header, please register. It's all explained in the source. If you are currently using version 2.x of Gertons Z80 emulator you can also use .TAP file conversion. To activate it, just add the '-C4' option: bdde cp -C4 * . The next messages will be shown on your screen (that is, if you haven't forgotten to erase previously generated files): MakeDir (3): Erased file '?eynsdoc' found: skipped MakeDir (3): Erased file '?lide' found: skipped RunLine (2): Program 'index' runs from line 10000 MakeCopy (2): BetaDisk file 'index' copied to '.\index.tap' MakeCopy (2): BetaDisk file 'FRED' copied to '.\fred.tap' RunLine (2): Program 'keynes' runs from line 200 MakeCopy (2): BetaDisk file 'keynes' copied to '.\keynes.tap' RunLine (2): Program 'bt,ks&ei' runs from line 1 MakeCopy (2): BetaDisk file 'bt,ks&ei' copied to '.\btks&ei.tap' BDDE V1.5c User Guide page 13 - (c) 1992,4 HanSoft & Partners RunLine (2): Program 'probe' runs from line 1 MakeCopy (2): BetaDisk file 'probe' copied to '.\probe.tap' RunLine (2): Program 'musicflr' runs from line 1 MakeCopy (2): BetaDisk file 'musicflr' copied to '.\musicflr.tap' MakeCopy (2): BetaDisk file 'musicode' copied to '.\musicode.tap' RunLine (2): Program 'flagrec' runs from line 10 MakeCopy (2): BetaDisk file 'flagrec' copied to '.\flagrec.tap' MakeCopy (2): BetaDisk file 'HanSoft' copied to '.\hansoft.tap' MakeCopy (2): BetaDisk file 'C' copied to '.\c.tap' MakeCopy (2): BetaDisk file 'I wish..' copied to '.\iwish.tap' MakeCopy (2): BetaDisk file 'birthday' copied to '.\birthday.tap' RunLine (2): Program 'slide' runs from line 1 MakeCopy (2): BetaDisk file 'slide' copied to '.\slide.tap' GetAType (2): '<0>' (317 bytes) contains character array A (312 elem. in 2 dims.) MakeCopy (2): BetaDisk file '<0>' copied to '.\0.tap' Every error message is shown in this format. First of all the C-function that generated the message, in this case MakeCopy() and RunLine(). Between paren- thesis the error level (which indicates this message is just a bit of informa- tion) and finally the message itself. Probably you won't get the RunLine() messages. That's alright, this is the unregistered version and the function is just not there (conditional compila- tion so don't try to hack it!). If you like it, you must register. One thing is very obvious: BDDE filters out all characters that cannot be part of a filename under DOS. Then the whole name is converted to lower case even when you're working with the Unix-version. Lower-case filenames are also very convenient when you're working with PC-NFS. If there are no characters in the BetaDisk filename that are allowed under DOS, the name 'noname' is assigned to this file. In case there would be a conflict between two filenames, e.g. 'STRIPOKR' and 'stripokr' which are two perfectly different filenames to TR-DOS, BDDE will still try to create two different filenames. If BDDE were a dumb program you could never retrieve the first file, because it would be overwritten by 'stripokr'. However, BDDE takes notice of the file on disk and changes the first character of 'stripokr'. If both are BASIC files the first one created would be called 'stripokr.tap' and the second '0tripokr.tap'. And it continues to do so until '9tripokr.tap' has been written. Then BDDE has got one other trick up its sleeve. It starts to generate files from AA.AA0 to ZZ.ZZZ. That's about 36^5 files. Most users don't even have that many files on disk.. And after that? Sorry.. The old Spec has got to know a little more to read a file using the cassette-port. That's also true in the emulated version. That's why BDDE automatically generates the necessary 17 byte header. The header tells the Spectrum what kind of file is being read, how long it is and where it's got to be loaded. Well, when loading BASIC and DATA files the starting address isn't very important, but it is when loading CODE files! The filename is also BDDE V1.5c User Guide page 14 - (c) 1992,4 HanSoft & Partners included in the header. If you want to know more about the 17 byte header, please register. It's all explained in the source. YOU CAN'T USE THESE FILES ANYWAY IF YOU HAVEN'T REGISTERED. Some vital information is missing in the files the unregistered version creates. Sorry.. I think I've spend enough time with you MS-DOS junkies. Just continue to section 15. I'm now going to tell the Atari-ST users how it's done. *ATARI* You found this section? Great, then we'll continue. The complete command line for Atari-ST users reads: bdde cp -C2 * . The next messages will be shown on your screen (that is, if you haven't forgotten to erase previously generated files): MakeDir (3): Erased file '?eynsdoc' found: skipped MakeDir (3): Erased file '?lide' found: skipped RunLine (2): Program 'index' runs from line 10000 MakeCopy (2): BetaDisk file 'index' copied to '.\index' MakeCopy (2): BetaDisk file 'FRED' copied to '.\fred' RunLine (2): Program 'keynes' runs from line 200 MakeCopy (2): BetaDisk file 'keynes' copied to '.\keynes' RunLine (2): Program 'bt,ks&ei' runs from line 1 MakeCopy (2): BetaDisk file 'bt,ks&ei' copied to '.\btks&ei' RunLine (2): Program 'probe' runs from line 1 MakeCopy (2): BetaDisk file 'probe' copied to '.\probe' RunLine (2): Program 'musicflr' runs from line 1 MakeCopy (2): BetaDisk file 'musicflr' copied to '.\musicflr' MakeCopy (2): BetaDisk file 'musicode' copied to '.\musicode' RunLine (2): Program 'flagrec' runs from line 10 MakeCopy (2): BetaDisk file 'flagrec' copied to '.\flagrec' MakeCopy (2): BetaDisk file 'HanSoft' copied to '.\hansoft' MakeCopy (2): BetaDisk file 'C' copied to '.\c' MakeCopy (2): BetaDisk file 'I wish..' copied to '.\iwish' MakeCopy (2): BetaDisk file 'birthday' copied to '.\birthday' RunLine (2): Program 'slide' runs from line 1 MakeCopy (2): BetaDisk file 'slide' copied to '.\slide' GetAType (2): '<0>' (317 bytes) contains character array A (312 elem. in 2 dims.) MakeCopy (2): BetaDisk file '<0>' copied to '.\0' Every error message is shown in this format. First of all the C-function that generated the message, in this case MakeCopy() and RunLine(). Between paren- thesis the error level (which indicates this message is just a bit of informa- tion) and finally the message itself. Probably you won't get the RunLine() messages. That's alright, this is the unregistered version and the function is just not there (conditional compila- tion so don't try to hack it!). If you like it, you must register. BDDE V1.5c User Guide page 15 - (c) 1992,4 HanSoft & Partners One thing is very obvious: BDDE filters out all characters that cannot be part of a filename under DOS. Then the whole name is converted to lower case even when you're working with the Unix-version. Lower-case filenames are also very convenient when you're working with PC-NFS. If there are no characters in the BetaDisk filename that are allowed under DOS, the name 'noname' is assigned to this file. In case there would be a conflict between two filenames, e.g. 'STRIPOKR' and 'stripokr' which are two perfectly different filenames to TR-DOS, BDDE will still try to create two different filenames. If BDDE were a dumb program you could never retrieve the first file, because it would be overwritten by 'stripokr'. However, BDDE takes notice of the file on disk and changes the last character of 'stripokr'. If both are BASIC files the first one created would be called 'stripokr' and the second 'stripok0'. And it continues to do so until 'stripok9' has been written. Then BDDE has got one other trick up its sleeve. It starts to generate files from AA.AA0 to ZZ.ZZZ. That's about 36^5 files. Most users don't even have that many files on disk.. And after that? Sorry.. The old Spec has got to know a little more to read a file using the cassette- port. That's also true in the emulated version. That's why BDDE automatically generates the necessary 17 byte header. The header tells the Spectrum what kind of file is being read, how long it is and where it's got to be loaded. Well, when loading BASIC and DATA files the starting address isn't very important, but it is when loading CODE files! The filename is also included in the header. Christian Gandlers emulator insists that the physical filename *and* the name in the header are identical. That's the only reason why BDDE produces slightly different filenames for the Atari-ST. If you want to know more about the 17 byte header, please register. It's all explained in the source. So I guess you're going to be quite busy now on this machine with no buttons to click. In the meanwhile I got the time to explain the SpecEm fans a thing or two. Please continue with section 15. *SPECEM* You found this section? Great, then we'll continue. The complete command line for SpecEm users reads: bdde cp -C3 * . The next messages will be shown on your screen (that is, if you haven't forgotten to erase previously generated files): MakeDir (3): Erased file '?eynsdoc' found: skipped MakeDir (3): Erased file '?lide' found: skipped RunLine (2): Program 'index' runs from line 10000 MakeCopy (2): BetaDisk file 'index' copied to '.\index___.__b' MakeCopy (2): BetaDisk file 'FRED' copied to '.\fred____.__c' RunLine (2): Program 'keynes' runs from line 200 MakeCopy (2): BetaDisk file 'keynes' copied to '.\keynes__.__b' RunLine (2): Program 'bt,ks&ei' runs from line 1 MakeCopy (2): BetaDisk file 'bt,ks&ei' copied to '.\btks_ei_.__b' BDDE V1.5c User Guide page 16 - (c) 1992,4 HanSoft & Partners RunLine (2): Program 'probe' runs from line 1 MakeCopy (2): BetaDisk file 'probe' copied to '.\probe___.__b' RunLine (2): Program 'musicflr' runs from line 1 MakeCopy (2): BetaDisk file 'musicflr' copied to '.\musicflr.__b' MakeCopy (2): BetaDisk file 'musicode' copied to '.\musicode.__c' RunLine (2): Program 'flagrec' runs from line 10 MakeCopy (2): BetaDisk file 'flagrec' copied to '.\flagrec_.__b' MakeCopy (2): BetaDisk file 'HanSoft' copied to '.\hansoft_.__c' MakeCopy (2): BetaDisk file 'C' copied to '.\c_______.__c' MakeCopy (2): BetaDisk file 'I wish..' copied to '.\iwish___.__c' MakeCopy (2): BetaDisk file 'birthday' copied to '.\birthday.__c' RunLine (2): Program 'slide' runs from line 1 MakeCopy (2): BetaDisk file 'slide' copied to '.\slide___.__b' GetAType (2): '<0>' (317 bytes) contains character array A (312 elem. in 2 dims.) MakeCopy (2): BetaDisk file '<0>' copied to '.\0_______.__r' Every error message is shown in this format. First of all the C-function that generated the message, in this case MakeCopy() and RunLine(). Between paren- thesis the error level (which indicates this message is just a bit of informa- tion) and finally the message itself. Probably you won't get the RunLine() messages. That's alright, this is the unregistered version and the function is just not there (conditional compila- tion so don't try to hack it!). If you like it, you must register. One thing is very obvious: BDDE filters out all characters that cannot be part of a filename under DOS. Then the whole name is converted to lower case even when you're working with the Unix-version. Lower-case filenames are also very convenient when you're working with PC-NFS. If there are no characters in the BetaDisk filename that are allowed under DOS, the name 'noname' is assigned to this file. In case there would be a conflict between two filenames, e.g. 'STRIPOKR' and 'stripokr' which are two perfectly different filenames to TR-DOS, BDDE will still try to create two different filenames. If BDDE were a dumb program you could never retrieve the first file, because it would be overwritten by 'stripokr'. However, BDDE takes notice of the file on disk and changes the first character of 'stripokr'. If both are BASIC files the first one created would be called 'stripokr.__b' and the second '0tripokr.__b'. And it continues to do so until '9tripokr.__b' has been written. Then BDDE has got one other trick up its sleeve. It starts to generate files from AA.AA0 to ZZ.ZZZ. That's about 36^5 files. Most users don't even have that many files on disk.. And after that? Sorry.. The old Spec has got to know a little more to read a file using the cassette- port. That's also true in the emulated version. That's why BDDE automatically generates the necessary 17 byte header. The header tells the Spectrum what kind of file is being read, how long it is and where it's got to be loaded. Well, when loading BASIC and DATA files the starting address isn't very important, but it is when loading CODE files! The filename is also included in the header. Kevin Phairs emulator insists that the physical filename *and* the BDDE V1.5c User Guide page 17 - (c) 1992,4 HanSoft & Partners name in the header are identical. That's the only reason why BDDE produces slightly different filenames for the SpecEm. If you want to know more about the 17 byte header, please register. It's all explained in the source. 17. Conditional extraction -------------------------- But may be you don't want to extract all the files, but only the files that make up the 'musicfiler' program. You can do that with this version of BDDE! Just type: bdde cp musicflr musicode . Don't forget the '-Cx' option if you need it! BDDE will now only extract these two files. You may specify as many files as your Operating System allows, but please remember that only the original BetaDisk filenames are recognized. Issuing: bdde cp musicflr.bas musicode.cod . will *NOT* work. Sorry, no wildcards, so bdde cp music* . won't work either. There's got to be something left to wish for.. If the filename contains characters that have a special meaning to your Operating System like spaces or tabs, you'll have to enclose them by quotes, like: bdde cp "bt,ks&ei" "I wish.." . You can also extract erased files. E.g. if you want to extract the 'keynes' program together with its documentation, you have to use this command: bdde cp -u keynes "&eynsdoc" . The '-u' means you want BDDE to salvage erased files, like 'keynsdoc'. Since the BetaDisk discards the first character of an erased files, BDDE substitutes it with an ampersand. By the way, all this works with 'ls' as well. 18. Using listfiles ------------------- However, if you want to extract some multi-file games, the list can become very long. So BDDE has another trick up its sleeve to make your life easier. It is only available to *registered* users. It works quite simple. Just issue this command: bdde ls > filelist.txt The file 'filelist.txt' will now contain this information: BDDE V1.5c User Guide page 18 - (c) 1992,4 HanSoft & Partners index FRED keynes bt,ks&ei probe musicflr musicode flagrec HanSoft C I wish.. birthday slide <0> Now fire up your favorite editor and edit the file. Just delete the files you do *NOT* want to extract, e.g. let's say we only want the index-program (including its data) and the 'musicfiler' program: index FRED musicflr musicode <0> You can now extract these files by issuing this command: bdde cp @filelist.txt . That's it! Easy as pie, ain't it? 19. The interleave ------------------ This is a difficult subject and most users don't want to know about it and some don't have to know about it. Most registered users *never* have to do with the interleave, because BDDE is smart enough to sort it all out by itself. However, it needs a little help. Anadisk is a very nice program and highly recommended. If you dump your disks using this program and include sector-IDs in the proces you can forget all about interleaves. ADU can sort out the interleave as well, but BDDE can neither check nor correct the interleave. The interleave has to do with the way a disk is organized. Let's say you're working in some pizza parlor. The pizza is already cut in 8 slices and you have to put the slices in a box. Since this pizza parlor is highly automatized the pizza is lying on a turning table. However, there is a catch. Every slice is numbered and you'll have to put the slices in the box in the right order. So you wait until slice 1 appears. You pick it up and put it in the box as fast as you can. When you have turned back you see that you missed slices 2 and 3 and are facing slice 4. So you have to wait almost a full turn until you can pick up slice 2 again. That slows you down, doesn't it? BDDE V1.5c User Guide page 19 - (c) 1992,4 HanSoft & Partners To prevent this you have to put slice 2 at position 4. So when you're ready to pick up a slice again, it's there! Of course you'll have to put slice 3 at position 7. And slice 4 at position 2. And so on. Effectively, you've created an interleave of 3:1, while starting off with an interleave of 1:1. And that's the way *all* disks are organized, whether floppy or hard-disk. And just like you when packaging pizzas, they have an interleave that gives the highest performance. Well, that's all the explana- tion you boys are going to get. Now it's time for the Real Men. BDDE supports all interleaves from 1:1 up to 8:1. I haven't got the faintest idea whether they are necessary or not. But if you need them, they're there. BDDE expects an interleave of 1:1 in accordance with most disk-analysers. However, when you dump a disk with sector-IDs and BDDE reads a sector with a wrong ID, it will try to find out what the corresponding interleave is. If it is successful it will switch to that interleave and continue without a glitch. Of course it is possible that BDDE switches the interleave more often, but only in rare cases of data-corruption. When the going gets tough, the -i option gets going. Just add an interleave to -i, e.g. -i3. After that the interleave is fixed and BDDE won't try to change it again. Use with care! To determine the right interleave you'll have to follow this procedure: First, try this command: bdde di If it produces something like this: MountDisk (4): File 'bdde.dmp' probably not a BetaDisk; media descriptor: 00h PHYSICAL DISK INFORMATION LOGICAL DISK INFORMATION ------------------------- ------------------------ Format.... Unknown Media descriptor................ 0h Heads.......................... 2 Total sectors................... 2560 Cylinders...................... 80 Bytes per sector................ 256 Starting head.................. 0 First sector of directory....... 0 Starting cylinder.............. 0 Number of sectors on directory.. 16 Starting sector................ 1 Maximum number of dir. entries.. 128 Ending head.................... 1 First sector of data area....... 16 Ending cylinder................ 79 Ending sector.................. 16 then your disk-analyser probably did not sort out the interleave properly. Now try: bdde di -i2 It should produce something like this: BDDE V1.5c User Guide page 20 - (c) 1992,4 HanSoft & Partners PHYSICAL DISK INFORMATION LOGICAL DISK INFORMATION ------------------------- ------------------------ Format.... 40 tracks, single sided Media descriptor................ 19h Heads.......................... 1 Total sectors................... 640 Cylinders...................... 40 Bytes per sector................ 256 Starting head.................. 0 First sector of directory....... 0 Starting cylinder.............. 0 Number of sectors on directory.. 16 Starting sector................ 1 Maximum number of dir. entries.. 128 Ending head.................... 0 First sector of data area....... 16 Ending cylinder................ 39 Ending sector.................. 16 If it still fails to produce a report like this try: bdde di -i3 One of these should work in most cases. I've seen quite some BetaDisks, but none ever had an interleave of 4:1 or up. But you're welcome to try them. But we're not ready yet! Sometimes it just looks like BDDE has detected the right interleave, but the detection mechanism is not fail-safe. It is quite possi- ble that e.g. '-i1' and '-i3' produce the same results. So extract a non- trivial BASIC-file (size 4 kB or up), e.g. bdde cp -i1 keynes . and read it into your Spectrum emulator. Now list it by issuing: LIST to your (emulated) Spectrum. If the listing looks fine, you've got the right interleave. If it doesn't, try the other one. Repeat the procedure for all possible interleaves until you got the right one. Then you can handle your dump as easily as the one we provided you with. But you *HAVE* to issue the corrsponding '-ix' option with every command. Or just add it to your BDDE configuration. In the next section we'll explain you how to do just that. 20. Initializing BDDE --------------------- You can initialize BDDE in various ways. If you think the only thing that is coming is the BDDEINIT variable you're wrong. BDDE will collect its settings from various sources. First of all there is the initialization-file. If you're working with Unix, it's called '.bdderc' and ought to be placed in your $HOME-directory. If you're working with MS-DOS it's called BDDE.INI and is placed in the same directory where BDDE.COM is. If you do not want to place it there, you can place it somewhere else. Just add this line to your AUTOEXEC.BAT: set BDDE= e.g. BDDE V1.5c User Guide page 21 - (c) 1992,4 HanSoft & Partners set BDDE=d:\spec Or if you're working with Unix, add a line like this to your .profile: BDDE=/users/habe/data; export BDDE What does such an ini-file look like? Well, just like the commandline. However, all the arguments have their own line. BDDE can not generate such a file on its own. You have to create it with an ASII-editor like `vi`, EDLIN, etc. This is an example of an ini-file: -Fc:\spec\bdde.dmp -M0 -i3 -C4 -S When BDDE is started it will look for this file first. If it isn't there it will continue without an error, since you don't have to have an ini-file. Then it will look for an environment variable called BDDEINIT. The format for BDDEINIT is a little different. You issue the arguments just like on the commandline. If you're working with MS-DOS, you set BDDEINIT like this: set BDDEINIT=-Fc:\spec\bdde.dmp -M0 -i3 -C4 -S If you're working with Unix use this command: BDDEINIT="-F/home/habe/bdde.dmp -M0 -i3 -C4 -S" export BDDEINIT; And, just like we said before, BDDEINIT is interpreted *after* the ini-file. Then the command-options are interpreted. However, you can also add an ini- file on the commandline. Its format is exactly the same as BDDE.INI or '.bdderc'. Just use the '-Ix' option: bdde ls -l -Ialien.ini This way you can keep the options needed for a certain task neatly in an ini- file so you don't have to find it all out again or issue all the options at the commandline. You don't have to erase ini-files or environment-variables, since BDDE will only use the last value entered and cancel out all previous entered values. E.g. if your ini-file contains: -Fc:\spec\bdde.dmp -M0 -i3 -C4 and you issue this command: bdde cp -Fd:\temp\games1.dmp -M1 -i1 -C3 * . BDDE V1.5c User Guide page 22 - (c) 1992,4 HanSoft & Partners BDDE wil still use file D:\TEMP\GAMES1.DMP, treat it like an Anadisk-dump with interleave 1:1 and produce files for the SpecEm emulator. 21. Other options ----------------- -s When a different number of sectors has been allocated to a file then necessary (e.g. 2 sectors of 256 bytes have been allocated to a file of 256 bytes) this option comes in. It disregards the length of the file and forces BDDE to use the number-of-sectors entry. Use only when BDDE fails to produce a usable file. -dx When a DATA file is saved the BetaDisk doesn't seem to be store any information about the variable-name. Since it's vital to store some value in the header BDDE picks a variable-name, starting with 'A'. Then you want to use another character to start with use this option, e.g. -dd, which starts off with 'D'. After assigning a character to a DATA file this value is incremented, so the next DATA file would get 'E' assigned to it. However, the Spectrum doesn't seem to care to which variable it was originally assigned as long as the type and size are correct. Use only when the Spectrum fails to read the DATA file. -f This option fixes a variable-name. Usually used in combination with option -dx, e.g. `bdde cp -dh -f ...`. This will assign variable 'H' to every DATA file on the dump. -# The BetaDisk doesn't just discard the variable-name of DATA files, it even doesn't store what kind of file has been saved! This information is even more vital to the Spectrum. BDDE uses a smart algorithm to find out what kind of DATA file has been saved. It works excellent when using undamaged DATA files with no more than 127 dimensions. However, when for some reason this algorithm doesn't work you can force numeric arrays by using this option. Be careful: *ALL* arrays will be saved as numeric arrays when using this option. -$ The same as above. Forces string arrays. 22. Just another `od`.. ----------------------- Let's say you issue a simple `ls` and all you get is a lot of error-messages. So you want to see what the heck is wrong with track 0. Or you want to see what is on the Tasword II file on track 4 before copying it to disk. A simple file-viewer won't get you very far since Anadisk added sector-ID's. And when you're using an older version of Anadisk even the sectors may not be in the correct order. In these cases `od` will save you without resorting to your old BetaDisk. Let's see what's on track 0: bdde od `od` will generate this output: BDDE V1.5c User Guide page 23 - (c) 1992,4 HanSoft & Partners Track 0 (00h), sector 0 (00h) 0 (00h) 63 6f 70 79 - 20 20 20 20 - 42 28 01 20 - 01 02 00 01 16 (10h) 62 61 63 6b - 75 70 20 20 - 42 2c 01 24 - 01 02 02 01 32 (20h) 73 63 6f 70 - 79 20 20 20 - 43 00 80 00 - 80 0d 04 01 48 (30h) 66 6f 72 6d - 61 74 20 20 - 43 00 a0 00 - a0 0a 01 02 64 (40h) 66 6f 72 6d - 61 74 2a 20 - 43 00 a0 00 - a0 0a 0b 02 80 (50h) 73 63 6f 70 - 79 20 20 20 - 42 2a 01 22 - 01 02 05 03 96 (60h) 62 61 63 6b - 75 70 20 20 - 43 00 80 00 - 80 08 07 03 112 (70h) 63 6f 70 79 - 20 20 20 20 - 43 00 80 00 - 80 0e 0f 03 128 (80h) 00 6f 70 79 - 20 20 20 20 - 43 00 80 00 - 80 00 0d 04 144 (90h) 00 6f 70 79 - 20 20 20 20 - 43 00 80 00 - 80 00 0d 04 160 (A0h) 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00 176 (B0h) 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00 192 (C0h) 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00 208 (D0h) 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00 224 (E0h) 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00 240 (F0h) 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00 Track 0 (00h), sector 1 (01h) .... Sorry I didn't include al 16 screens.. It may not be very helpful either. That's why BDDE has its '-c' option (just like good old Unix). It shows the same information, but in ASCII. Track 0 (00h), sector 0 (00h) 0 (00h) copy B(. ....backup B,.$....scopy C.......format C....... 64 (40h) format* C.......scopy B*."....backup C.......copy C....... 128 (80h) .opy C........opy C....................................... 192 (C0h) ................................................................ Track 0 (00h), sector 1 (01h) .... If there are any hackers reading: you know what to do with this kind of stuff, don't you? If you don't have any use for it just forget it. When using the ASCII-display every non-printable character is shown as a dot. If you really need to distinguish between dots and non-printable characters use the hexadec- imal display. Finally, you can select any track on the BetaDisk (dump). Just use the '-tx' option. Replace the 'x' with any valid logical track number, e.g. to dump the fifth track issue this command: bdde od -t4 BDDE V1.5c User Guide page 24 - (c) 1992,4 HanSoft & Partners If you select a track beyond the disk an error message is displayed. 23. SmartSeek ------------- BDDE has two ways to access a track. The first is sequential, so first of all track 0 is read, then track 1 and so on. When using `od` you could be in for a long wait. Let's say you want to dump track 150. If BDDE would access this track sequential 150 tracks of 4 kB would have to be read. And if you don't register, that's what you're in for.. So register! Because the registered version has the SmartSeek option and dumping track 150 is just as fast as dumping track 0. It's also very handy when you haven't MOVEd your disk for some time and a lot of deleted files have to be skipped. Yes, of course when your old Spec is still working you can *still* MOVE it.. It can even jump back a few tracks when necessary but the chance of finding yourself in that kind of situation is very remote. Usually all files are sorted in order of allocation. BDDEs `ls` doesn't sort anything.. When SmartSeek is active the dump is really acting like it's a disk. BDDE can randomly access any 'track'. However, when you never issue an `od` or use 'cp' conditionally you won't need SmartSeek very often. SmartSeek is activated when you use the '-S' option. It actually works on every command, but since `ls`, `df` and `di` only access track 0 you won't experience any dramatic increases in performance when issuing these commands. An example of a sensible use of SmartSeek: bdde od -t150 -S But I've done enough advertising for one day. Let's continue to the final level in this great adventure named the 'Quest for the Lost Spectrum'. Reading the files in the emulators.. 24. I love it when a plan comes together.. ------------------------------------------ Actually I'm doing somebody elses job down here. It should all be in the manuals of the Spectrum Emulator, but when you hate to switch manuals as much as I do continue reading. Just a little tip before you get too enthusiastic and try to load in a multiple file program or something like that. Start off with something very easy, like a BASIC program. Be aware that BASIC programs which contain machine-code (e.g. in a REM statement) might *not* work! Because the memory layout of every emulator is different from that of a standard BetaDisk machine addresses may have been moved and this could easily "crash" the emulated Spectrum. However, registered users receive a small program that tries to emulate this layout while preserving all functionality so you don't have to hack a lot to get these programs up and running.. BDDE V1.5c User Guide page 25 - (c) 1992,4 HanSoft & Partners Sorry folks, I have to split you up again! First of all Gerton Lunters Spectrum Emulator for MS-DOS: If you want to read a file into this emulator there are two possible angles you can take. First of all, you can assign the file to the RS232 port using a command-line option: Z80 -u[SpecFile] Of course [SpecFile] is a '.bas', 'chr' or '.nmb' file generated by BDDE. Another way is to enter the Emulator, press and choose nput RS232. Then you can select your file using isk. Leave the menu by pressing and issue an RS232 command in Sinclair BASIC: LOAD *"b" to read a BASIC program LOAD *"b" CODE
to read a CODE program LOAD *"b" DATA [var]<$>() to read a DATA file E.g.: LOAD *"b" CODE 25000 LOAD *"b" DATA i$() LOAD *"b" DATA i() The border will flash for a while and hurray! There it is! You can now continue with section 20 unless you are using a *registered* copy of BDDE and a copy of Gerton Lunters Z80 emulator V2.x. If you want to read a file into this version of the emulator there are two possible angles you can take. First, if you use multiple .TAP file mode let BDDE write its files to your multiple .TAP file directory and start your emulator like this: Z80 -td [directory_multiple_tap] That is if you haven't added that option (yet) to your Z80.INI. You can also string .TAP files together and thus create a file you can use in single .TAP file mode. To read a file, just issue any valid Sinclair BASIC tape-command: LOAD "" to read a BASIC program LOAD "" CODE
to read a CODE program LOAD "" DATA [var]<$>() to read a DATA file E.g.: LOAD "format" CODE 25000 LOAD "" LOAD "backup" LOAD "mfiler" DATA i$() LOAD "smo" DATA i() BDDE V1.5c User Guide page 26 - (c) 1992,4 HanSoft & Partners There it is! It was worth the wait, wasn't it? Now continue with section 20. *ATARI* It seems that Christian Gandler doesn't like to write long manuals. But it is very easy anyway. The file INHALT.INF contains all information about the Spectrum tape-files in the directory. BDDE does *not* create this file, since the emulator creates it anyway when you issue a LOAD statement. This may take a while (I wouldn't know since I don't have an Atari-ST), especially when you put a full 640 kB BDDE-floppy in your drive. Don't write-protect the disk! It is very hard for any program to write a file to disk when you have enabled write-protection.. To read a file, just issue any valid Sinclair BASIC tape-command: LOAD "" to read a BASIC program LOAD "" CODE
to read a CODE program LOAD "" DATA [var]<$>() to read a DATA file E.g.: LOAD "format" CODE 25000 LOAD "" LOAD "backup" LOAD "mfiler" DATA i$() LOAD "smo" DATA i() A window will appear when you issue a null name (e.g. LOAD ""). At the bottom of the window you can select a directory. Other useful keys are: and Select a file Confirms your choice Reread INHALT.INF Regenerate INHALT.INF "Tape loading error" The name you'll have to use is exactly the same as your filename, e.g. when the Atari filename is "termina0", you'll have to load it into the emulator by issuing: LOAD "termina0" There it is! Now you can continue and read section 20 while I tribute the famous last words of this section to all SpecEm users.. *SPECEM* To read a file, just issue any valid Sinclair BASIC tape-command. Just be sure that the files that you want to read in are in the same directory as your SpecEm emulator: LOAD "" to read a BASIC program LOAD "" CODE
to read a CODE program LOAD "" DATA [var]<$>() to read a DATA file BDDE V1.5c User Guide page 27 - (c) 1992,4 HanSoft & Partners E.g.: LOAD "format" CODE 25000 LOAD "backup" LOAD "mfiler" DATA i$() LOAD "smo" DATA i() The name you'll have to use depends on your filename. Just ignore the exten- sion and trailing underscores, e.g. when the MS-DOS filename is "0ape_rd_.__b", you'll have to load it into the emulator by issuing: LOAD "0ape_rd" 25. Piping and redirecting -------------------------- I think you MS-DOS junkies have found out by now that I like to use another Operating System. Right. It's Unix. Unfriendly, chaotic, but awesome (believe me). If you compare the script language of `ksh` or `csh` to the batch- language of MS-DOS it looks like the latter has been designed a very drunk COBOL-programmer. Every Unix command has a very small but clearly defined task. The only way you can get a Unix-box to work is by putting these commands together by pipes, redirections, environment variables, etc. And you can tune the operation of these commands by using options. This philosophy has effected BDDE. There is no paging option, no printing option, or any option that every MS-DOS programmer usually includes in his program. But you can do all this with standard MS-DOS or Unix tools: Print `ls` output: bdde ls -l > prn bdde ls -l | lp (Unix) Show `ls` output per page: bdde ls -l | more bdde ls -l | pg (Unix) Remove headers from `od` output: bdde od -c | find h) | find /v sector bdde od -c | grep h\) | grep -v sector (Unix) Print 'od' output without headers: bdde od -c | find h) | find /v sector > prn bdde od -c | grep h\) | grep -v sector | pr | lp (Unix) Most MS-DOS users never utilize redirection and piping. That is a shame, because it is *very* powerful and has a great potential. Many examples in this documentation have been generated by redirecting the output of BDDE, e.g.: BDDE V1.5c User Guide page 28 - (c) 1992,4 HanSoft & Partners bdde ls -l > bdde.txt Of course, there a very few tools available when you use standard MS-DOS, and there are even fewer programmers that support this feature, although it is very easy (when you program in C) and even portable! Standard MS-DOS provides only `sort`, `more` and `find`, which are in fact (less capable) equivalents of the Unix commands `sort`, `more` and `grep`. But even then you can do quite a lot.. 26. Mum, it doesn't work! ------------------------- We really tried to test every possible BetaDisk we could lay our hands on, verify our documentation using different sources, etc. We even use the program ourselves and we never ran into trouble. However, every program has bugs and so has BDDE. Otherwise we would never find or fix any and we do. So you might experience problems. Read very carefully, I only write this once: WE CANNOT PAY ANY DAMAGES, LARGE OR SMALL. SO NEITHER THE AUTHOR NOR ANY DISTRIBUTOR SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THIS PRODUCT OR BUNDLED UTILITY-PROGRAMS, INCLUDING ANY DAMAGES RESULTING FROM ERRORS IN WRITTEN MATERIALS OR DOCUMENTATION. USE AT YOUR OWN RISK!! But we'll give you support and a nice smile when you stop by for a beer. We'll give the best support to registered users, but comments from unregistered users are welcome too. If you have any ideas for enhancement or help me to port this program to other Operating Systems or environments, please contact me. This includes adding support for more Spectrum Emulators (I never realized how many there are!). Of course, we only support BDDE. But what do you have to do when BDDE *really* doesn't work? It would be very nice if you send me your copy of BDDE and the dump that BDDE failed to convert. Then we can try to reproduce your problem. But if you try to convert your dairy in Tasword II and do not want so send me such personal or sensitive material please send me a diskette with your copy of BDDE and a debug listing. You can make a debug listing with this command: bdde [command] -D0 [filespec] [directory] > [filename] But you should be able to think of that yourself after our nice piping-and- redirecting tutorial ;-). 27. (Error)messages ------------------- BDDE can generate following messages. Usually only errors of debug-level 2 and higher will be reported, unless you specify another debug-level using the '-Dx' option. FillBuf (5): Unexpected end of 'dumpfile' FillBuf (5): Unknown error reading file 'dumpfile' BDDE V1.5c User Guide page 29 - (c) 1992,4 HanSoft & Partners BDDE detected an End-Of-File while reading a dumpfile. You may have forgotten to dump the whole disk or specified the wrong mediatype with the '-Mx' option. Can also be caused by data-corruption in track 0. GetTrk (4): Wrong track read: expected track x, got track y CheckHeader (4): Invalid sector header: Fys. track (xxh)/Log. track (xxh) CheckHeader (4): Invalid sector header: Fys. track (xxh)/Calc. track (xxh) CheckHeader (4): Invalid sector header: Fys. side (xxh)/Calc. side (xxh) CheckHeader (4): Invalid sector header: Fys. sector (xxh)/Calc. sector (xxh) GetILeave (4): Invalid sector header: Fys. sector (xxh)/Calc. sector (xxh) When you're using Anadisk and included sector-ID's BDDE incessantly checks which track/side/sector has been read. This error might be caused by inconsistency within the sector-ID itself. It might also be that the sector read wasn't the sector BDDE expected. Maybe the wrong file was read (e.g. COMMAND.COM). May be you didn't follow the instructions concerning Anadisk, specified the wrong mediatype or only dumped one side of a double-sided BetaDisk. May be you didn't compensate the interleave with the unregistered version of BDDE. SeekTrk (4): Random access failed on track x of file 'dumpfile' SeekTrk (4): Sequential access failed on track x of file 'dumpfile' The first message indicates that SmartSeek failed. It should never occur. The second message indicates that a track before the current track was requested. This message should never occur when using a clean dump-file. It may indicate a rare case of data-corruption in the BetaDisk directory. MountDisk (5): Unable to mount file 'dumpfile' Mapping a physical disk to a directory is called 'mounting' in Unix. If BDDE fails to find the dumpfile this message will be issued. Usually due to typing errors. MountDisk (4): Unable to assign buffer to file 'dumpfile' CopyFile (4): Unable to assign buffer to file 'DOSfile' Unregistered users never get these messages since they use standard buffers. The registered version of BDDE has two fairly large buffers. The dump-file buffer is exactly the size of a physical track (including sector-IDs when necessairy). The file-buffer is larger, more than 10 kB so even the largest files can be written to disk in only three write- actions. If a buffer cannot be assigned to a file, this message is display. Actually, it is rather hypothetical since the buffers are not allocated on the heap. MountDisk (4): File 'dumpfile' probably not a BetaDisk; media descriptor: xxh BDDE warns you that this dumpfile does not look like a BetaDisk. A valid BetaDisk has an indication of its file-format, called a media descriptor. However, the value of this media descriptor is out of range. This always indicates data corruption on track 0. BDDE V1.5c User Guide page 30 - (c) 1992,4 HanSoft & Partners GetAType (4): Too many dimensions: file 'DOSfile' written as CODE GetAType (4): Too many elements: file 'DOSfile' written as CODE GetAType (4): Corrupt data: file 'DOSfile' written as CODE GetAType (4): Unknown type: file 'DOSfile' written as CODE These messages are shown when there is something wrong with a DATA file and you didn't use the '-#' or '-$' options. The first message indicates that there are more than 127 dimensions and that is beyond the specifica- tions of the detection algorithm. When the second message occurs there is really something wrong. The algorithm detected more than 65536 elements and that's more than 64 kB. The third message is displayed when a checksum error is detected. The last message is shown when an entirely new data-type has been found. Most of the time these last three messages indicate data-corruption. The file will still be written, but with a CODE header. GetAType (2): 'Betafile' (xx bytes) contains numeric array A (x elem. in y dims.) GetAType (2): 'Betafile' (xx bytes) contains string array A (x elem. in y dims.) GetAType (2): 'Betafile' (xx bytes) contains invalid array A (x elem. in y dims.) The first two messages indicate that the detection algorithm performed perfectly. The last message will occur only when other DATA file errors have been displayed. It might be helpful in finding the cause of the error. PatchName (3): Rename file 'XX.XXX' to 'DOSfile' BDDE will try to synchronize the names in the tape-headers with the filenames of a specific emulator. However, once BDDE starts using random filenames it actually loses control. You are warned that this file can't be read into your emulator without renaming it first. Will only be shown when using a tape-header conversion like SpecEm. WriteBlock (4): Unknown error writing RS232 header to file 'DOSfile' WriteBlock (4): Unknown error writing tape header to file 'DOSfile' WriteBlock (4): Unknown error writing checksum to file 'DOSfile' WriteBlock (4): Unknown error writing data to file 'DOSfile' An error occurred while BDDE tried to write data to a DOS file. Most of the time these messages do not come alone. May be your disk is full or write-protected. CopyFile (4): Unable to open file 'DOSfile' BDDE is unable to create a DOS file. May be you specified an invalid target-directory. May be there are already too many files in the root- directory. CopyFile (4): Error closing file 'DOSfile' BDDE V1.5c User Guide page 31 - (c) 1992,4 HanSoft & Partners BDDE was unable to close the DOS file correctly. May be you removed the floppy or your disk is full. This message may be accompanied by other write-errors. RunLine (2): Program 'Betafile' runs from line xxxx RunLine (3): Unable to determine autoRUN linenumber of program 'Betafile' The method BDDE uses to determine the autoRUN linenumber works with 99.9% of all programs. In that case the first message is printed, the BetaDisk filename and the linenumber itself. When the method fails the second message is shown. MakeEntry (3): BetaDisk file 'Betafile' may be an unconvertible snapshot BDDE warns you that it has found a CODE file with a length of 192 sectors. This is an strong indication for a BetaDisk+ snapshot. BDDE can convert it, but you might be unable to use it. If anyone has some technical information concerning snapshots, write us! If we can use it you get a registered copy of BDDE for free! MakeEntry (4): Unknown type 'X' in file 'Betafile'; CODE assumed BDDE found another file-type than BASIC, CODE or DATA. So it was written to disk as a CODE file. Might be data-corruption or a BetaDisk+ disk. CheckLength (4): File 'Betafile' needs xx sectors but allocates yy The BetaDisk file has allocated another number of sectors than its filesize indicates. If you're unable to load the file correctly try the '-s' option. CheckLength (3): Filesize adjusted: 'Betafile' now xxx bytes long BDDE warns you, that the previous error has occurred and is corrected by the '-s' option. MakeDir (3): Erased file '?etafile' found: skipped BDDE warns it found an erased file. Since the '-u' option is not speci- fied, the file will be skipped. MakeDir (4): BetaDisk reported more files than BDDE found (xx vs. xx) MakeDir (4): BetaDisk reported less files than BDDE found (xx vs. xx) BDDE found more or less files than specified by the BetaDisk. Could be data-corruption. However, BDDE will still copy all the files it has found. MakeCopy (3): BetaDisk file 'Betafile' skipped BDDE V1.5c User Guide page 32 - (c) 1992,4 HanSoft & Partners BDDE warns that the BetaDisk file could not be copied and is skipped. It will continue with the next file. Will always be accompanied by other open- and/or write errors on the equivalent DOS-file. MakeCopy (2): BetaDisk file 'Betafile' copied to 'DOSfile' BDDE informs you that it successfully copied a BetaDisk file to its DOS file equivalent. MakeDump (5): Track xx does not exist; disk has only xx tracks The requested track is not present on the BetaDisk since the poor thing has only xx tracks. A double-sided 80 tracks disk has 160 logical tracks numbered from 0 to 159. A single-sided 40 tracks disk has 40 logical tracks numbered 0 to 39. All other disks have 80 tracks (0-79). When using the '-t' option please specify a valid track number. Possibly data corruption. MakeDump (5): Disk access failed on track xx of file 'dumpfile' Will always be accompanied by seek-errors. See SeekTrk() errors. GetListFile (5): List-file 'ListFile' not found BDDE checks whether an list-file is there before it tries to open it. This is always caused by typing errors at the '@' character. Unregistered users cannot get this message. GetListFile (5): Error reading list-file 'ListFile' This might be caused by a physical disk error or not enough memory. If it is a physical disk error you cannot access it with other utilities (e.g. copying it). Otherwise you might have consumed too much memory using init-files. GetOpts (3): Illegal option '-X' ignored You specified an option that is not supported by BDDE. Often the '-S' option that is not supported in the unregistered version. BDDE will ignore the option and continue. GetIniOptions (4): Init-file 'InitFile' not found BDDE checks whether an init-file is there before it tries to open it. This is always caused by typing errors at the '-I' option or init-files that are not properly configured. If you can't find the error check your init-file(s) and $BDDEINIT. GetIniOptions (4): Error reading init-file 'InitFile' This might be caused by a physical disk error or not enough memory. If it is a physical disk error you cannot access it with other utilities (e.g. BDDE V1.5c User Guide page 33 - (c) 1992,4 HanSoft & Partners copying it). You might have created a loop in your init-files (e.g. "bdde.ini" calling "atari.ini" and "z80v2.ini" calling "bdde.ini")! GetAllOptions (4): $HOME not defined; searching '.bdderc' in current directory Unix only. BDDE needs the $HOME variable to locate your .bdderc file. If it isn't set BDDE might not be able to find your default init-file. Since this might contain vital information about how your conversion has to be executed, it warns you. GetAllOptions (4): Definition of '$BDDEINIT' too long; truncated BDDEINIT may only be 256 bytes long. If it is longer BDDE cannot inter- pret it completely. This is to warn you that BDDE will truncate the contents of BDDEINIT. As a consequence some settings will be incomplete or even missing. GetAllOptions (4): Definition of 'drive:\path\bdde.com' too long; truncated DOS only. BDDE needs the full pathname of BDDE to locate your BDDE.INI file. If it gets truncated BDDE might not be able to find your default init-file. Since this might contain vital information about how your conversion has to be executed, it warns you. GetAllOptions (5): Target directory 'directory' does not exist BDDE first checks whether the target directory you specified exists. If it doesn't BDDE terminates. All files couldn't have been opened anyway. UnMountDisk (4): Error unmounting file 'dumpfile' BDDE could not close the dump-file correctly. Will probably be accompa- nied by other read-errors. BDDE V1.5c User Guide page 34 - (c) 1992,4 HanSoft & Partners 28. Tips and tricks ------------------- 1) The listings produced by `ls` and `cp` might be very useful when trans- ferring complicated programs (e.g. games) to disk. Print them. 2) Convert all your BetaDisks to dump-files before using BDDE. They can be handled more easily that way. Compress them to self-extracting files, e.g. with ARJ. You can put three or more compressed dumps on a single 720 kB floppy. 3) If you try to dump a BetaDisk using Anadisk and errors occur, write the faulty tracks down somewhere. When you generate `ls` output (First Tk/Sd/Sc) you can easily find out which files are still usable. 4) Even when BDDE doesn't support your emulator (yet) you might still be able to use it! How can I find this out? Easily. If your emulator has tape-support try the Atari-ST conversion or the .TAP files. If it has RS232 support, try the MS-DOS conversion. May be you only have to rename the file. 29. Finally.. ------------- -The MS-DOS Spectrum Emulator is a product of G.A. Lunter -The Atari-ST Spectrum Emulator is a product of Christian Gandler -ARJ is a product of Robert K. Jung -AnaDisk is a product of Sydex -ADU is a product of AME Computing Systems -Norton Utilities is a product of Symantics -Unix is a product of AT&T -DRC is a product of David Harris -MS-DOS is a product of MicroSoft -PC-NFS is a product of Sun Laboratories -Tasword II was a product of Tasman Software -ZX Spectrum was a product of Sinclair Research Ltd. -BetaDisk was a product of Technology Research Ltd. "All other trademarks mentioned in this documentation are property of their respective owners." Many thanks to Marcel and especially Jack Verheydt for their patience and support while adding the Atari-conversion. Thank you, boys for believing in me and this program! Thank you Tinus v/d Wouw for your BetaDisk+ snapshot. I still can't convert it, but now BDDE can at least issue a warning! And your BetaDisk with inter- leave 2:1 was very useful too! Many thanks to all users of the 'Tatort BBS' who downloaded this program, especially sysop Dick Pluym and Johan Muizelaar. And last but not least Gerton Lunter, who did not only write a great Spectrum Emulator but mentioned this program in his documentation so it could go where it never expected to go before! "BDDE was produced using Borland (MS-DOS) and Mark Williams (Unix) compilers. Some library functions used by BDDE are copyrighted by their respective owners. The read-me program was produced by David's Readme Compiler (DRC)." BDDE V1.5c User Guide page 35 - (c) 1992,4 HanSoft & Partners