home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 June
/
SIMTEL_0692.cdr
/
msdos
/
dskutl
/
wd.arc
/
EVAL.DOC
< prev
next >
Wrap
Text File
|
1988-02-04
|
32KB
|
1,325 lines
PRELIMINARY
PROGRAM SPECIFICATION
STORAGE MANAGEMENT EVALUATOR
(EVAL)
SPECIFICATION NO. XX-XXXXXX
FEBRUARY 4,1988
1.0 SCOPE
This document describes the functional characteristics of the Storage
Management Evaluator (EVAL). EVAL is a diagnostic program designed for use
with the IBM AT to test and evaluate hard and floppy storage management
subsystems. It is especially suited for error rate testing. The Features
section describes the operation and features of the program, including how to
invoke EVAL, diagnostic screen definition command structure error methodology
and miscellaneous features. The Commands section describes the command set,
giving a detailed explanation of each command. Appendix A and B describe each
status code, task file, and associated error reporting.
2.0 FEATURES
2.1 Invoking EVAL
EVAL is invoked at the PC-DOS command line, or batch file command line, as
follows:
c>EVAL [cmd-file]
The optional cmd-file parameter specifies a file from which EVAL will read
commands until it encounters an "end" command. All commands described in this
specification may be used in command files except "edit", "run", "def",
"duw", and "dur".
2.2 Floppy Diagnostic Screen
Figure 1 shows the main floppy diagnostic screen. The screen is divided into 4
windows, a command line, and a message line. The command line will be
described in 3.0, and the message line will be referred to throughout the
specification. The following is a brief description of the 4 windows.
2.2.1 Parameter Window
The upper left window of the screen is the parameter window. The parameters
shown will be used for the next disk operation. The parameters are: drive
type, drive number, cylinder number, head number, sector number, and block
size. The parameters are updated dynamically during command execution, if the
operation changes a parameter (see individual commands in section 3).
2.2.2 Status Window
The status window (lower left) shows the latest status returned after
execution of a command which accesses the controller. The status information
includes the status code, status registers and cylinder, head, and sector
numbers returned by the controller. Appendix B gives a detailed explanation of
status codes and associated errors.
2.2.3 Error Count Window
The error count window (upper right) shows total error counts, as well as
individual error counts for 5 groups of errors. The counts are kept for both
hard and soft errors. See 2.5.1 for an explanation of hard and soft errors and
appendix B for a detailed explanation of error reporting.
2.2.4 Error Report Window
The error report window (lower right) shows the last 5 errors which have
occurred since the diagnostic began, or since the last "zero" command was.
issued Appendix B explains each error in full detail.
2.3 Hard Diagnostic Screen
Figure 2 shows the main hard diagnostic screen. The screen is divided into 4
windows, a command line, and a message line. The command line will be
described in 3.0, and the message line will be referred to throughout the
specification. The following is a brief description of the 4 windows.
2.3.1 Parameter Window
The upper left window of the screen is the parameter window. The parameters
shown will be used for the next disk operation. The parameters are: drive
number, cylinder number, head number, sector number, and block size. The
parameters are updated dynamically during command execution, if the operation
changes a parameter (see individual commands in section 3).
2.3.2 Disk Type Window
The disk type window (lower left) shows the disk drive boundary parameters.
The type information includes the maximum cylinders, maximum heads, maximum
sectors, precomp cylinder number, retry flag, step rate, and interleave
value.
2.3.3 Task File Window
The task file window (upper right) shows the task file returned from the
controller after the command was completed. Appendix A gives a detailed
explanation of the task file and associated errors.
2.3.4 Error Report Window
The error report window (lower right) shows the last 5 errors which have
occurred since the diagnostic began, or since the last "zero" command was
issued. Appendix A explains each error in full detail.
2.4 Command Structure
In the interactive mode (commands being input from the keyboard), the cursor
will reside on the command line, which begins with the CMD> prompt. Commands
are typed in lower or upper case. A carriage return <CR> ends command entry
and initiates command execution. Multiple commands may be entered on the same
line, separated by commas. Commands are separated from parameters by one or
more of the following: space tab = / : ( )
2.4.1 Command Types
From a command entry standpoint, there are 6 types of commands:
type 1 cmd
type 2 cmd|<choice>
type 3 cmd|<param>
type 4 cmd|<string>
type 5 cmd|<test>
type 6 cmd|<special>
The six types of commands may be freely mixed on the same line. See section
3.0 for complete listing.
2.4.2 Command Line Repeat
A command line may be repeated up to 32,762 times, simply by entering the
desired command (or a string of commands) followed by a #, followed by a
number. After the <CR> is entered, the commands on the line will be executed
repeatedly, just as if the line were entered the number of times specified
behind the #. In addition, a repeat count is shown on the message line, and
decrements down with each command line execution.
If the Escape key is hit during a line repeat, the repeat count is
automatically zeroed.
Example:
CMD>r,incs #30
will perform a read, increment the sector count operation 30 times.
2.5 Error Methodology
2.5.1 Hard and Soft Errors
Errors are separated into two categories - hard errors and soft errors. A hard
error is defined as an error which is not recoverable after a specified number
of retries (see "rc"). A soft error is defined as an error which is recovered
during retries. In other words, a hard error persists through the specified
number of retries; a soft error does not.
A hard error is distinguished in the error report window, and in the error
file by a 'H' prefix and a soft error is prefixed by a 'S'.
2.5.2 Error logging
In addition to showing the last 5 errors in the error reporting window, an
error log file can be kept on disk for later review. Upon invocation, all
errors are logged to a specified file (see "errlog"). The file may later be
dumped to the screen interactively (see "def").
2.6 Buffer Screen
The buffer screen can be reached from the Floppy or Hard screen by giving a
dur (dump read buffer) or duw (dump write buffer). The buffer screen displays
one sector of data at a time that can be edited. The arrow keys are used to
select the byte to edit and the page keys are used to choose the sector.
2.7 Help Screen
The help screen can be reached from the floppy or hard screen by giving a help
command. The help screen displays all of the commands in alphabetical order
with a short description after it.
3.0 COMMANDS
The command set in EVAL closely resembles that of VHD. Bellow one will find a
list of all the commands by type and alphabetic. Before getting into the
commands we should look at the formats of the commands.
type 1 cmd
type 2 cmd|<choice>
type 3 cmd|<param>
type 4 cmd|<string>
type 5 cmd|<test>
type 6 cmd|<special>
cmd this is the command name
| one or more of the following delimiters:
space = : / ( ) tab
some examples :
h 3
h=3
h:3
h = 3
h/3 are all valid commands to set h to 3
h3 is not valid
<choice> one of the following
true t
false f
yes y
no n
<param> a parameter value of one of the following forms
var1 the value of var1 is used
. .
. .
. .
var8 the value of var8 is used
0 ... 32762
0h ... 7FFFh
rstat the value in the status register
rerr the value in the error register
rsecc the value in the sector count register
rsecn the value in the sector number register
rcyll the value in the cylinder low register
rcylh the value in the cylinder high register
rsdh the value in the SDH register
rdata the value in the data register
rastat the value in the alternate status register
rdin the value in the digital input register
<string> a string of text
<test> an expression to test that might look like this:
(var1 <= 4)
NOTE: there must be a space between the operands and
the operator i.e. (var1 <=4) is not valid
operators can be of the form:
== equal
!= not equal
<= less than or equal
>= greater than or equal
< less than
> greater than
<special> can be any thing, check individual command description
command type command example
1 r
2 upd yes
3 cyl 614
3 s=var1
3 c = 1DFh
4 print(hello out there)
5 while(var3 != var7) this type can only be
used in a batch file
6 etc 1e10
Commands are entered at the EVAL command prompt "CMD>". More than one command
can be entered on a line but each command must be separated by a coma. EVAL
reads and executes each command starting from the left most command i.e.
CMD> h 0,s 3,c 26,sk
EVAL allows the user to repeat a string of commands a specified number of
times. In the example bellow 100 sectors will be read.
CMD> r,incs #100
ALPHABETICAL LISTING OF COMMANDS
alt
alt|<choice>
Enable alternate sector during format
hard drive only
b
b|<param>
Set block size. Enter the number of sectors to read/write/verify
hard/floppy
bct
bct|<special>
Set bit terminate count
<special> is scientific notation bct=3e9
stop execution after 300,000,000 bits have been read/write/verify
floppy drive only
c
c|<param>
set cylinder value for next operation
hard/floppy
cmd
cmd|<param>
write to command register of task file
hard drive only
cmp
cmp
compare read buffer to write buffer and flag all errors
hard/floppy
copy
copy
move read buffer to write buffer
hard/floppy
cyl
cyl|<param>
set total number of cylinders on drive
hard drive only
d
d|<param>
set drive number for next operations
hard drive 0 <= param <= 1
floppy drive 0 <= param <= 3
def
def
dump error file. change screen to display error log
hard/floppy
diag
diag
diagnostic command. send diagnostic command to controller
hard drive only
dt
dt|<param>
set drive type
0 1.2 Meg floppy drive in a 1.2 Meg drive
1 360 K floppy drive in a 1.2 Meg drive
2 360 K floppy drive in a 360 K drive
floppy drive only
dur
dur
dump read buffer. display contents of read buffer
hard/floppy
duw
duw
dump write buffer. display contents of write buffer
hard/floppy
ecmd
ecmd|<param>
write to 1005 esdi task file command register
1005 esdi hard drive controller only
ecc
ecc|<param>
set number of ECC bytes
hard drive only
ecct ecct
test ECC and return the number of bits corrected
hard drive only
ecmd
ecmd|<param>
send <param> to esdi command reg
1005 only
edit
edit
enter a batch file from eval.
can not be used in a batch file.
hard/floppy
eelse
eelse
marks end of else statement in batch file
used in batch file only
eif
eif
marks end of if statement in batch file
used only in batch file
else
else
marks start of else statement in batch file. This block will
be executed only if the previous if command was false
used only in batch file
end
end
marks end of a batch file also used to exit the edit screen
used only in a batch file
er
er|<choice>
enable retries. will enable/disable retries on a hard drive
controller based on <choice>
true enable retries
false disable retries
errlog
errlog|<string>
enter name of error file to use
file will be opened in the append mode and a header is placed at
the top of the file depending if opened from floppy or hard window
esdi
esdi|<choice>
opens/closes a window for the 1005 esdi controller esdi task file
etc
etc|<special>
error terminate count
<special> is scientific notation ect=3e9
execution will stop after 10,000,000,000 errors have been found
ewhile
ewhile
marks end of while statement in batch file
used only in batch file
exfr
exfr|<param>
write to 1005 esdi transfer register
used only wilt 1005 esdi controller
fbs
fbs|<param>
format <sector number> as bad
hard drive only
fbt
fbt
format all of track as bad
hard drive only
fd
fd
format all of drive
floppy
floppy
goto floppy drive mode
hard drive only
ft
ft
format track
h
h|<param>
set head number
hard/floppy
hard
hard
goto hard drive mode
floppy drive only
heads
heads|<param>
set total number of heads
hard drive only
help
help
goto help screen
i
i|<param>
set interleave for next format command
hard/floppy
idc
idc
send idc command to controller with parameters of drive
hard drive only
if
if|<test>
marks start of if block. The if block will be executed
only when the condition of <test> is true.
used only in batch files
incc
incc
increment cylinder count
hard/floppy
inch
inch
increment head count
hard/floppy
incs
incs
increment sector count
hard/floppy
int
int|<choice>
enable / disable interrupts from controller
hard drive only
lrun
lrun|<string>
load and run a batch file <file name>
hard/floppy
ltt
ltt
write/read/compare all of disk
hard/floppy
multi
multi|<param>
set multi block transfer mode with <block size>
only on hard controllers that support this command
nop
nop
no operation does nothing
o
o|<param>
set the offset into the write buffer used with v command
pat
pat|<special>
fill write buffer with pattern pat=incr,pat 6db
<special>
incr fill write buffer with incriminating data
rand fill write buffer with random numbers
this command will take about 3 mins to complete
ilt fill write with interleave pattern
X...X fill write buffer with hex pattern X...X
i.e. pat 6db will make a pattern of 6db6db6db...
pause
pause
wait for key press. Will prompt user to press any key
an escape key will stop execution of batch file or repeat line
hard/floppy
precomp
precomp|<param>
set precomp cylinder number
hard drive only
print
print|<string>
print message to lower left corner of screen print(HI MOM)
hard/floppy
quit
quit
exit EVAL
hard/floppy
r
r
read command. read number of sectors described by block size
hard/floppy
ra
ra
read all of drive
hard/floppy
rb
rb
read buffer. read buffer of controller
hard drive only
rc
rc|<param>
retry count. set number of retries before calling an error hard
floppy drive only
rcmd
rcmd|<param>
write <param> to command register
hard drive only
rcylh
rcylh|<param>
write <param> to cylinder high register
hard drive only
rcyll
rcyll|<param>
write <param> to cylinder low register
hard drive only
rdata
rdata|<param>
write <param> to data register
hard drive only
recal
recal
recalibrate drive. move heads to track zero
hard drive only
reset
reset
reset drive. does a soft reset to drive.
in hard drive mode must be followed by 2 recals
hard/floppy
rfixd
rfixd|<param>
write <param> to fix disk register
hard drive only
rl
rl
read long command. Read all of block including ECC bytes
hard drive only
rm
rm
read mulit block
only on hard controller that support multi block
rsdh
rsdh|<param>
write <param> to SDH register
hard drive only
rsecc
rsecc|<param>
write <param> to sector count register
hard drive only
rsecn
rsecc|<param>
write <param> to sector number register
hard drive only
rtf
rtf
read task file. read task file from controller
hard drive only
run
run
run batch file. start execution of batch file
hard/floppy
rv
rv
read verify command. read block of sectors but do not transfer data
hard/floppy
rva
rva
read verify all. do a read verify on all of disk
hard/floppy
rwpre
rwpre|<param>
write <param> to write precomp register
hard drive only
s
s|<param>
set sector number for next command
hard/floppy
sectors
sectors|<param>
set total number of sectors per track
hard drive only
sk
sk
seek command. seek to track specified
hard drive only
skew
skew|<param>
set skew for next format
hard drive only
skt
skt
do a crescendo seek test
hard/floppy
show
show|<param>
display value to screen. will display value in lower right
corner of screen
hard/floppy
st st
start timer
this will zero the real time stop watch
ts time stamp
this will print the real time stop watch
to the screen and to the error file
upd
upd|<choice>
update command. enable/disable update of screen after every command
hard/floppy
v
v|<param>
set a value in write buffer at offset defined by o
v will also increment the offset value
var1...var8
var1...var8|<param>
set value of var1...var8
var1 = 2 set var1 to 2
var1 += 3 var1 = var1+3
var1 -= 1 var1 = var1 - 1
var1 &= 4 var1 AND 4
var1 |= 4 var1 OR 4
note : when using += ... |= there must be spaces seperating the operator
hard/floppy
w
w
write command. write number of sectors described by block size
hard/floppy
wa
wa
write all. send write buffer to all of drive
hard/floppy
wb
wb
write buffer. send write buffer to controller
hard drive only
while
while|<test>
mark start of while block The while block will be executed
as long as the condition of <test> is true.
used only in batch files
wid
wid
write the cylinder/head/sector number to the data sector on drive
hard drive only
wl
wl
write long command. write the write buffer to the drive
including ECC bytes
hard drive only
wm
wm
write multi block
only on hard controller that support multi block
wtf
wtf
write task file
send task file to controller
hard drive only
zero
zero
clear error counters
hard/floppy
4.0 Batch Files
Commands can be executed from a batch file in one of two ways. First by
entering the name of the batch file after EVAL at the DOS command line or by
using the edit command. In either case the format of the batch file is the
same. In a batch file all the command from the HARD or FLOPPY windows can be
used except : "edit", "run", "def", "duw", and "dur". While in the batch file
the "if", "else", and "while" commands can be used to control the flow of
commands. A batch file must end with the "end" command or it will not be
loaded. To execute a file one must type the "run" command. Below is an example
of a batch file:
Appendix (A)
HARD DRIVE TASK FILE
Here is a brief out line of the Task File for more information check the speck
sheet for the controller you are using.
D7 D0
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
Error register │ BB │ ECC │ 0 │ ID │ 0 │ AC │ TK │ DM │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Sector count │ number of sectors to transfer │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Sector number │ sector number │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
cylinder low │ cylinder number (low byte) │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
cylinder high │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ cyl. MSB │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
SDH │ 1 │ sec. size │ DS │ HS3 │ HS2 │ HS1 │ HS0 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Status reg. │ BSY │ RDY │ WF │ SC │ DRQ │ CRD │ IDX │ ERR │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
Error reg.
BB Bad Block
ECC Bad ECC bytes
ID ID not found
AC Aborted Command
TK Track zero error
DM Data Address Mark not found
Status reg.
BSY Busy flag
RDY Drive ready
WF Write Fault
SC Seek Complete
DRQ Data Transfer Request
CRD Corrected Data Flag
IDX Index pulse
ERR Error Flag
Sector count
The number of sectors to transfer
Sector number
The sector to start transfer at
Appendix (A)
Cylinder low/high
The cylinder to start transfer at
SDH
sec.size sector size
00 256 bytes
01 512 bytes
10 1024 bytes
11 128 bytes
DS drive select
HS3..HS1 head select
HARD DRIVE ERRORS
The format of the error messages from the hard drive looks like this
Err# CMD# SR ER C H S CMD MSG
Where
Err# is the error count
Cmd# is the command count
SR the value of the status register
ER the value of the error register
C the cylinder that the error occurred on
S the sector that the error occurred on
H the head that the error occurred on
CMD the command that was being executed
MSG a description of the error
Example:
Err# CMD# SR ER C S H CMD MSG
23 45 01 80 7 1A 3 r Bad Block mark
Appendix (B)
Floppy Status Codes:
Status Code Condition
0 Successful operation
2 Bad address mark. Either a data AM or IDAM was bad.
3 Diskette is write protected.
4 Record not found.
6 The media has been changed since the last operation.
8 DMA overrun. An illegal DMA condition has
occurred. The diagnostic is in an unknown
condition. The system should be re-booted.
9 DMA boundary exceeded. The system should be re-
booted.
10 Bad CRC. Either ID or data CRC did not match its
associated field.
20 Bad UPD 765 chip.
40 Bad seek.
80 Time-out error. Response from the floppy control-
ler was not received before the system timed out.
Can occur if the drive door is open.
Appendix (B)
FLOPPY ERROR MESSAGES
Messages not related to media records:
"Write protected" -
Results from a status code "3".
"Media change indicated" -
Results from a status code "6".
"DMA overrun!!!" -
Results from a status code "8".
"DMA boundary exceeded!!!" -
Results from a status code "9".
"Bad UPD 765 chip" -
Results from a status code "20".
Messages related to media records:
Message is composed of three parts -
1) Type of operation - Read, Write, Reset, Format, Verify.
2) Location - "c:n h:n s:n"
3) Type of error (in parentheses) -
"End of track"
"DAM not found"
"IDAM not found"
"Data CRC error"
"ID CRC error"
"Undefined"
Appendix (B)
Examples:
"Read error c:0 h:1 s:10 (DAM not found)"
"Write error c:10 h:0 s:1 (ID CRC error)"
COMMAND LIST BY FUNCTION
Setup Commands
alt |<choice> enable alternate sectors T/F
b |<param> set block size
bct |<special> set bit terminate count i.e. btc=1e30
cyl |<param> set total number of cylinders
dt drive type { floppy }
ecc |<param> set number of ecc bytes
er |<param> retries enable T/F
errlog |<string> enter name of error file to use
esdi |<choice> 1005 esdi mode
etc |<special> error terminate count i.e. etc=1e30
floppy |<choice> goto floppy drive mode
hard |<choice> goto hard drive mode
heads |<param> set total number of heads
i |<param> set interleave
idc send idc command
multi |<param> set multi block size
reset reset drive parameters
rc |<param> retry count { floppy }
sectors |<param> set total number of sectors per track
skew |<param> set skew size
precomp |<param> set precomp cylinder number
zero clear error counters
Transfer Commands
cmd |<param> write to command register
copy move read buffer to write buffer
dur dump read buffer
duw dump write buffer
ecmd |<param> write to 1005 esdi command register
exfer |<param> write to 1005 esdi transfer register
fbs |<param> format bad sector <sector number>
fbt format bad track
fd format drive
ft format track
ltt write/read/compare all of disk
pat |<special> fill write buffer with pattern pat=incr,pat=6db
o |<param> offset into write buffer (1 sector = 520)
r read command
ra read all
rb read buffer
rl read long command
rm read multi block
rv read verify command
rva all
v |<param> value to put into write buffer at offset
w write command
wa write all
wb write buffer
wid write cylinder/head/sector number to each setor
wl write long command
wm write multi block
wtf write task file
Batch File Commands
edit enter batch file from eval
eelese end of else statement { batch file }
eif end of if statement { batch file }
else else statement { batch file }
end end of batch file
ewhile end of while statement { batch file }
if |<test> if statement { batch file }
lrun |<string> load and run <file name>
nop no operation
run run batch file
while |<test> while statement { batch file }
Head Movement Commends
c |<param> set cylinder count
d |<param> set drive number
h |<param> set head count
incc increment cylinder count
inch increment head count
incs increment sector count
recal recalibrate drive
s |<param> set sector count
sk seek command
skt seek test
Hard Drive Register commands
rcmd |<param> write <param> to command registor
rcylh |<param> write <param> to cylinder high registor
rcyll |<param> write <param> to cylinder low registor
rdata |<param> write <param> to data registor
rfixd |<param> write <param> to fix disk registor
rsdh |<param> write <param> to SDH registor
rsecc |<param> write <param> to sector count registor
rsecn |<param> write <param> to sector number registor
rwpre |<param> write <param> to write precomp registor
Other
cmp compare buffers
def dump error file
diag diagnostic command
ecct ecc test
help goto help screen
pause wait for key press
print |<string> print message to screen
quit exit eval
rtf read task file { hard }
show |<param> display value to screen
st start timer
ts time stamp
ta test all
upd |<choice> update command T/F
var1...var8 |<param> set value of var1...var8
ALPHABETICAL LISTING OF COMMANDS
alt |<choice> enable alternate sectors T/F
b |<param> set block size
bct |<special> set bit terminate count bct=3e9
c |<param> set cylinder count
cmd |<param> write to command register
copy move read buffer to write buffer
cyl |<param> set total number of cylinders
d |<param> set drive number
def dump error file
diag diagnostic command
dt |<param> drive type { floppy }
dur dump read buffer
duw dump write buffer
ecmd |<param> write to 1005 esdi command register
edit enter batch file from eval
eelese end of else statement { batch file }
eif end of if statement { batch file }
else else statement { batch file }
end end of batch file
er |<choice> retries enable T/F
errlog |<string> enter name of error file to use
esdi |<choice> 1005 esdi mode
etc |<special> error terminate count etc=1e10
ewhile end of while statement { batch file }
exfer |<param> write to 1005 esdi transfer register
fd format drive
fds |<param> format drive with skew
floppy |<choice> goto floppy drive mode
ft format track
fts |<param> format track with skew
h |<param> set head count
hard |<choice> goto hard drive mode
heads |<param> set total number of heads
help goto help screen
i |<param> set interleave
idc send idc command
if |<test> if statement { batch file }
incc increment cylinder count
inch increment head count
incs increment sector count
o |<param> offset into write buffer (1 sector = 520)
pat |<special> fill write buffer with pattern pat=incr,pat 6db
pause wait for key press
precomp |<param> set precomp cylinder number
print |<string> print message to screen
r read command
ra read all
rb read buffer
rc |<param> retry count { floppy }
recal recalibrate drive
reset reset drive parameters
rl read long command
rtf read task file { hard }
run run batch file
rv read verify command
rva all
s |<param> set sector count
sectors |<param> set total number of sectors per track
sk seek command
show |<param> display value to screen
st start timer
ts time stamp
upd |<choice> update command T/F
v |<param> value to put into write buffer at offset
var1...var8 |<param> set value of var1...var8
w write command
wa write all
wb write buffer
while |<test> while statement { batch file }
wl write long command
wtf write task file
zero clear error counters