home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
200-299
/
ff239.lzh
/
JGoodies
/
HeadClean
/
disk_tools
< prev
next >
Wrap
Text File
|
1989-08-21
|
3KB
|
116 lines
\ Tools for use with the Amiga TrackDisk driver.
\ These were written to support a head cleaning program.
\
\ Author: Phil Burk
\
\ This file is hereby placed in the Public Domain and may be
\ freely distributed.
getmodule includes
include? TD_MOTOR ji:devices/trackdisk.j
include? td.format disk_support
ANEW TASK-DISK_TOOLS
variable DISKPORT
variable DISKREQ
variable DISKBUFFER
: TDT.CHANGE ( -- #changes , #times a disk has been put in or out )
diskreq @ td.changenum
;
: TDT.DELETE ( -- , delete port and requestor when done )
diskport @ diskreq @ td.delete
diskport off diskreq off
;
: TDT.TERM ( -- , clean up )
diskport @
IF diskreq @
closedevice()
tdt.delete
ELSE ." TD.TERM - Not INITed!" cr
THEN
diskbuffer @ ?dup
IF freeblock diskbuffer off
THEN
;
variable td-ok?
: TDT.INIT ( unit# -- ok? , open device and port for unit given )
false td-ok? !
td.create ?dup
IF dup diskreq !
swap diskport ! ( -- unit# diskreq )
td.open ?dup
IF ." Error on Open in TDT.INIT = " .hex cr
tdt.delete
ELSE MEMF_CHIP MEMF_CLEAR | NUMSECS TD_SECTOR * allocblock ?dup
IF diskbuffer !
tdt.change drop
td-ok? on
THEN
THEN
ELSE ." TDT.INIT - Couldn't create ports!" cr
THEN
td-ok? @
;
: TDT.FILL ( byte -- , fill disk buffer with byte )
diskbuffer @
NUMSECS TD_SECTOR *
rot fill
;
: TDT.OFF ( -- , turn off motor )
0 diskreq @ td.motor drop
;
: TDT.UNFORMATTED? ( -- flag , true if UNformatted disk )
diskbuffer @ 1 0 diskreq @
td.read ?dup
tdt.off
IF dup 21 27 within?
IF drop true
ELSE ." !! TDT.UNFORMATTED - Error = " . cr false
THEN
ELSE false
THEN
;
: TDT.FORMAT.CYL ( cyl -- , format both sides )
diskbuffer @ ?dup
IF swap 2* 2dup diskreq @ td.format
1+ diskreq @ td.format
ELSE drop ." Allocate buffer first!" cr abort
THEN
;
: TDT.FORMAT.CYL.MANY ( start #cyl -- )
0
DO i over + tdt.format.cyl
LOOP drop
tdt.off
;
: TEST.MOTOR ( -- , test turning motor on and off ) cr
255 diskreq @ td.motor ." State was " . cr
." Hit key" cr key drop
0 diskreq @ td.motor ." State was " . cr
;
: DUMP.SHC ( sector head cyl -- , dump sector from disk )
td.hc>sector +
diskbuffer @ ?dup
IF 1 rot diskreq @
td.read?
tdt.off
ELSE ." Allocate buffer first!" cr abort
THEN
diskbuffer @ td_sector dump
;