Значок ресурса

M-Doc

Нет прав на скачивание
Автор: Ray J. Eckersley
Год: 1985
Издатели: Seven Stars Publishing
Языки: 🇬🇧 Английский
Формат: 📼 TZX лента
Требования: 🖥️ ZX Spectrum 48K

Ссылки:
Страница на ZXArt
Страница на World Of Spectrum
Страница на Spectrum Computing

Скриншоты:
M-Doc.gif
M-Doc.png


M-Doc.jpg
M-DOC


OPERATING MANUAL





M-Doc is a utility program for the Spectrum 48k/Plus which


allows you to inspect files on a Microdrive cartridge and see


where any faults lie. If an unloadable file can still be listed


in a CAT, you should in most cases be able to repair the faulty


part, at least enough to ensure the whole file loads again.





We recommend that you read these instructions right through


before commencing to use M-Doc.





CARTRIDGE FILES


Unlike cassette tape files, which consist of a single header and


then a continuous block of data, cartridge files are split into


a number of records, each containing up to 512 bytes of data,


which are stored in areas of the tape called sectors.





Each sector consists of a header and a data block. The header


is established when the cartridge is formatted, and is unchanged


by any Microdrive operations. The data block consists of two


sections. The first is a list of details about the record, eg


whether or not that sector is used or free, the filename and


record number and so on. The second section is the data itself.


The number of sectors present on a cartridge varies; sector 0


is always missing, as are the sectors over about 190. The


formatting routines also will mark any that are unreliable -


usually the couple of sectors over the Join in the tape loop.





The exact format of each sector is shown in Appendix 3 of the


Sinclair "Microdrive and Interface 1 Manual", which shows a


Microdrive channel. The sector header starts at location 28 in


the channel, and consists of 12 bytes of preamble (10 zeros and


two FF hex bytes), followed by HDFLAG-HDCHK inclusive. The data


block starts at location 55 and consists of 12 bytes of


preamble, followed by RECFLG-DCHK inclusive. Note that bit 1 of


RECFLG, if set, indicates that the record is the end-of-file


(EOF). A sector which is unused will have this bit reset and


RECLEN set to zero.





The first nine bytes of data in record 0 of a non-PRINT file


(ie a program, array or bytes) are used to store its attributes;


these are similar to the system variables HD_00 to HD_11 as


listed in Appendix 2 of the "Manual". Note that the first byte


contains a code denoting the type of file: 0 = program, 1 =


number array, 2 = character array, 3 = bytes.





Serious users of M-Doc are recommended to obtain one of the


various books on Microdrives, eg "Master Your ZX Microdrive" by


Andrew Pennell (Sunshine Books), for more details.





LOADING M-DOC


Use LOAD "". This loads a short BASIC program which puts up the


title screen, and then loads and runs the machine code (which


occupies from 55000 to 63794). It also issues a CLEAR 54999


command so that RAMTOP (which represents the highest address


that BASIC can use) is safely below the machine code. NEW will


thus not affect M-Doc. After loading, the screen will clear and


the main options will be displayed.





SCREEN DISPLAY AND KEYBOARD INPUT


All the display takes place in the main part of the screen, with


a maximum of 42 characters per line. Character codes below 31


and above 127 (including keywords) are represented by dots.





The keyboard input routine is much simpler than that used with


BASIC, and the various modes (including keywords) are not


available. The Cursor does not flash and simply shows the


position of the next character to be entered. The cursor left


and cursor right keys operate in the normal way, but characters


typed in the middle of an existing line do not insert as they do


in BASIC. CAPS SHIFT and SYMBOL SHIFT work in the usual way but;


since E mode isn't available, the characters printed in red


below the keys, eg "[", cannot be accessed at all. The maximum


line length is only 24 characters; however, this will be found


to be more than adequate.





Whenever a numeric input is requested, either decimal or hex


numbers (0-65535) are allowed. Hex should be preceded by a "#"


sign, eg #A4. Numeric output is always three or five digits for


decimal and two or four digits for hex.





M-Doc's error messages are shown in inverse characters and


return you to the main menu; Microdrive error messages will


leave you in BASIC.





MAIN OPTIONS


Pressing STOP (SYMBOL SHIFT/A) while an option is waiting for a


key press abandons the option and returns to the main menu.





1. Read cartridge


This scans the whole cartridge, reading details about every


sector into a buffer area within M-Doc. Each sector is only read


once, So the results are on the pessimistic side (Interface 1


normally tries several times to get a perfect result). The


process takes about a minute as several passes are made through


the tape loop. Options 2-5 are only possible if this option has


been first carried out.





2. List all sectors


All sectors are listed in sector number order. The sector


number, filename and record number (if any) are shown, together


with the status. as follows:





BAD - the data block may have been corrupted; it will however be


possible to read that sector in using options 6 or 7.





GOOD - header and data block are in good order.





MISSING - the sector does not exist or has a corrupted header;


it will be impossible to read it in using options 6 or 7.





UNRELIABLE - the sector was marked as such during formatting and


should not be used.





UNUSED - the sector does not contain a record.





If a cartridge is in poor condition the sectors marked BAD in


this list may vary considerably the first time option 1 is


performed. In this case the files should be removed and it


should be reformatted.





3. List bad records


This is option 2 confined to bad records.





4. List unused sectors


This is option 2 confined to unused sectors.





5. Give file report


A named file (do not enclose it in quotes) is listed in record


number order, showing the sector number and status. Note that


the last record should be marked "EOF". If this is not the case,


it means that further records with higher numbers are missing.





6. Read record and give report


This reads a record in from a file and gives a full report on


the sector, including the checksums (HDCHK, DESCHK and DCHK). Up


to five attempts are made and the best is selected. After this


has been done, the whole Microdrive channel (595 bytes) is


transferred to a buffer area in M-Doc, so that it can be


examined and altered, and the channel is closed. (The buffer is


located at addresses 63200-63794, eg location 82 is at 63282.)


Note that options 8-12 are only possible if this option or


option 7 has first been carried out.





7. Read sector and give report


This is like option 6 but searches by sector number instead of


record number.





8. Examine channel


The channel which has been loaded into the buffer can be


examined using this option, which gives a hex/ASCII dump,


commencing at a given location. Each line gives the location


within the channel in decimal, then eight bytes in hex, then the


same eight bytes in ASCII characters (bit 7 reset).


Non-printable characters are shown as dots. The scrolling


display can be paused (and restarted) by pressing any key.





9. Modify channel


This allows you to modify the channel buffer, commencing at a


given location. Each line displays the current location in


decimal, then its contents in both hex and decimal. If no change


is required, Just press ENTER and the next byte will be shown.


To modify the byte, type in one or more numbers in decimal, hex


(precede with "#" as usual), or as an ASCII character string


(enclose in quotes). When the line is ready, press ENTER to


write it to the buffer.





You can go back a byte by entering ":" at the beginning of a


line. To quit this option, enter "." at the beginning of a line.





10. Filter data


In some cases it may be desirable to filter the data before


writing it back to the cartridge, to ensure for example that


non-text characters are not present in a text file. This option


allows you to specify an upper and lower limit for the data, and


bytes outside this range in locations 82-593 will be given the


default value. It is also possible to use this option to fill


this data area with any code if both limits and the default are


set to the code. The first nine data bytes of record 0 of a


non-PRINT file will not be affected by this option.





11. Redisplay record/sector report


After modifying the channel buffer, you can redisplay the report


using this option, as a final check before writing it to


cartridge. The check sums are rechecked so that you can see if


your corrections have restored the original sector. However, if


you are making changes rather than corrections, ignore the


integrity reports - the checksums will be recalculated in any


case when the sector is written to cartridge.





12. Write sector


This option opens a Microdrive channel and then partially


overwrites it with the modified channel in the buffer (which is


retained). The data block (RECFLG-DCHK) is written to the


specified sector, and then this rewritten sector is verified.


Finally, the Microdrive channel is closed. Note that an attempt


to write to a missing sector will give a "File not found" error.





13.Hex-dec-hex converter


This displays the decimal and hex equivalents of any decimal or


hex number.





14. Set printer mode


This option allows you to print the screen displays in options


2-8 and 11 on a "full size" or ZX printer. The current mode is


shown on the main menu.





In "fullsize" mode, characters are sent via stream #3. M-Doc


does not contain printer interface software so, if your


interface requires software to be loaded from tape, ensure this


is done and the interface is ready first. Some interfaces


require their software to loaded at the top of memory and


sufficient space has been allowed for this. For Interface 1's


RS232 output, do FORMAT "t";n (n = baud rate) and OPEN #3;"t".





In "ZX" mode, a special routine is used to send the 42-column


display to a ZX or similar printer.





Note that if either printer mode is enabled, the screen


displays will scroll right through to the end of an option


without a pause (however, the BREAK key is operative).





15. Return to BASIC


A straightforward return to BASIC. If you wish to re-enter


M-Doc, use RANDOMIZE USR 55000.





CHECKING FILES


Always check the cartridge after any Microdrive malfunction. Use


options 1 then 3 to find any bad records. If any file ever fails


to load, use options 1 then 5 to give a file report indicating


any missing or possibly bad records. However, a record may be


shown as missing simply because its filename has got corrupted,


so check all bad records using option 3 and see if any have that


filename corrupted. Sometimes a perfectly good file may fail to


load if one of its sectors precedes a damaged sector.





Note that if the EOF record is missing, then several records


with higher numbers may be missing; if it is a non-PRINT file


you can work out how many from the attributes of record 0 and


the formula given later.





REPLACING BAD RECORDS


First use option 6 to confirm that the record really is bad -


you may find it loads correctly using this option because


multiple attempts are made.





The report will show which parts, if any, are corrupted. If


the first part of the data block giving the record details


(filename, record number etc) is bad, carefully check these


details. If the error cannot be seen, then use option 8 with a


start location of 55 to inspect it byte by byte. Correct any


errors using option 9. Once this is done, you can use option 11


to check it has been restored.





If the second part of the data block (ie the actual data) is


corrupted, you can inspect it using option 8, starting at


location 82. You need only correct it to the extent that it can


be edited using the program that created it in the first place.





If it is part of a BASIC program, leave it alone at this


stage. (Once you can load the whole program, you can use B-Doc


to make it editable again.) Ensure the program does not auto-run


by amending the record 0 attributes if necessary (see below).





If the data is from a text file, such as a Tasword Two file,


it need only be filtered using option 10 so that spurious


characters which may upset editing are replaced by valid ones.


(For Tasword Two, set a lower limit of 32, an upper limit of


143, and a default code of 42. Corrupted characters will be


replaced by asterisks, which can be deleted using Tasword.)





Other data types can be corrected using option 9, though this


will be difficult for machine code, numeric arrays and SCREEN$.





Once the record has been repaired. it should be written to an


unused sector using option 12. (When rewriting several records


with ascending numbers, choose unused sectors in descending


number order.) The original bad record must now be deleted (see


below). If it fails to verify, mark the sector "unreliable".





REPLACING MISSING RECORDS


Any missing records should be replaced with dummy records


bearing the correct record numbers. The easiest way to do this


is to read in a good record (not the EOF) from the file, using


option 6. Then change its record number to the missing one using


option 9. Finally, fill its data area with, say, question marks


(code 63) using option 10 so you can see where where the missing


record was when you reload the complete file.





If record 0 of a non-PRINT file is missing, there is a


complication: the first nine bytes of its data are attributes


and must be recreated.





For a program, set the first byte (location 82) to 0 and


locations 83/84 and 87/88 to the length of the program and any


variables in hex, most significant byte last. This is given by:





(Number of records-1)*512+Length of EOF record-9





Use option 13 to work out the hex once you have calculated it in


decimal. Ideally, 87/88 should be set to the length of the


program without its variables, otherwise these will appear as


rubbish at the end of the program listing. Set locations 89/90


(auto-run line number) to FFFF hex to prevent auto-run.





For a number or character array, set location 82 to 1 or 2


respectively. Set locations 83/84 to the length of the file,


determined as above. Set location 87 to the variable name of the


array in upper-case ASCII. Then add to this number 64 if it is a


numeric array or 128 if it is a character array, eg b$ = 194.





For bytes set location 82 to 3, locations 83/84 to the


length of the file (see above), and H5/H6 to the start address.





Finally, check the attributes are OK using option 11. Once the


dummy record is ready, it may be written to cartridge in the


same way as for bad records (see above).





DELETING A BAD RECORD


Set locations 67-81 inclusive to zero and rewrite to cartridge


using option 12.





MARKING A SECTOR "UNRELIABLE"


Any sector which fails to verify after being written to is


probably physically damaged and should be marked "unreliable" so


the Microdrives will ignore it. Set location 67 to 2 and 68-81


inclusive to zero, and rewrite to cartridge using option 12.


Check that the sector now lists as "unreliable" in option 7.





MAKING BASIC PROGRAMS EDITABLE


Once you have used M-Doc to get your corrupted BASIC program to


load again, the next step is to ensure that it's in an editable


state. A separate program, B-Doc, is supplied for this purpose,


thus giving maximum room for your program.





B-Doc does several things. First, it goes through the program


ensuring that line numbers ascend and are in the range 1-9999,


that the line length bytes are correct, that the line text


commences with a keyword, and that the line is properly


terminated with an ENTER byte. Faulty line numbers are changed


to 9999; lines with other faults are turned into REM statements.


B-Doc then goes through the program again, and re-enters each


line, Just as if you had done this at the keyboard. This ensures


the hidden floating-point forms match the visible numbers, and


shows up syntax errors caused by corruption.





To use B-Doc, proceed as follows. First load it, using LOAD


"". This loads a short BASIC program, which puts up a title


screen and then loads the code (which occupies 65000-65535). It


also issues a CLEAR 64999 command but does not of course run the


code. Now load the BASIC program to be repaired (don't try to


run it yet!). Run B-Doc using RANDOMIZE USR 65000. The screen


will clear and show the title "B-DOC" but nothing else may


happen for a short while if the program is a long one or is


heavily corrupted. Eventually, one of the following messages


will be displayed and you will be returned to BASIC.





Bad line number means a 9999 line number was found in


B-Doc's second pass. Press ENTER to see the listing showing the


offending line and EDIT to bring it down for editing. Correct


its line number and then delete the original 9999 line (if there


are several 9999 lines only the first one will be affected by


this process). It is often worthwhile checking the preceding


line in case its number was corrupted and is now too high. This


could have caused B-Doc to assume the following line was out of


sequence, hence making it a 9999 line.





Nonsense in BASIC means a syntax error was found. Press


ENTER to see the offending line and EDIT to bring it down for


correction.





Always run B-Doc again after correcting faulty lines until you


get the Ready to edit message: you should now be able to edit


the program without any trouble. You must go through it


carefully, checking each statement, particularly REMs which may


contain the debris of corrupted lines.





Note that any variables which were originally stored with the


program may also have been corrupted by the Microdrive


malfunction - these can be removed using a CLEAR command.





SAVING M-DOC TO MICRODRIVE


Load the BASIC program. Press BREAK as soon as it is loaded and


immediately stop the tape. Then load the machine code using LOAD


"" CODE. Delete line 40 of the BASIC and change line 30 to:





LOAD *"m";n;"m-doc-code"CODE





where n is the drive number. Now save the BASIC with:





SAVE *"m";n;"m-doc" LINE 10





Finally, save the machine code with:





SAVE *"m";n;"m-doc-code"CODE 55000,5128





B-Doc can be saved in a similar way; the machine code should be


saved with:





SAVE *"m";n;"b-doc-code"CODE 65000,536





SEVEN STARS


Seven Stars Publishing,


34 Squirrel Rise, Marlow, Bucks SL7 3PN





Copyright (c) R.J. Eckersley, 1985. All rights reserved. Made in


UK. Every effort has been made to ensure there are no errors in


this product but the publisher can accept no responsibility for


any that may remain or for their consequences.
Автор
Verter_bot
Загрузки
0
Просмотры
8
Расширение
zip
Размер
5.2 КБ
Хэш
d4648e6b21f722e0d37ba98e7ab0e207
Первый выпуск
Последнее обновление

Оценки

0.00 звезд(ы) 0 оценок
Назад
Вверх