1 ! ! N U L L 2! Program: NULL 3! Version: V01A 4! Edit: 01 7! Edit Date: 18-Jun-80 9! Author: Brant Cheikes 20 ! ! M o d i f i c a t i o n H i s t o r y ! Version/Edit Edit Date Reason 21! V01A-01 18-Jun-80 New release 50 ! ! P r o g r a m D e s c r i p t i o n 60 ! ! NULL writes zeros on a magnetic tape, zeroing it completely, and ! writes a LEOT at BOT to perform a normal zero operation. It ! removes all sorts of garbage from a magtape, insuring safety of ! data stored on the tape. ! 1000 ! ! M a i n P r o g r a m C o d i n g 1010 V$ = "V01A-01" ! Set up version/edit level 1020 ON ERROR GOTO 30000 \ PRINT \ PRINT "NULL "+V$+" "+ CVT$$(RIGHT(SYS(CHR$(6%)+CHR$(9%)),3%),4%) \ PRINT "Magtape Eraser" \ PRINT ! Output the system header 1025 OPEN "MM0:" AS FILE 1%, RECORDSIZE 8192%, MODE 12% ! Open magtape 1027 INPUT "Detach";D$ \ PRINT \ GOTO 1030 UNLESS D$ = "Y" \ PRINT "Detaching..." \ PRINT CHR$(12%); \ S$ = SYS(CHR$(6%)+CHR$(7%)) \ D% = -1% \ GOTO 1040 ! Allow detached processing 1030 PRINT "Erasing MM0:, wait please..." \ PRINT 1040 FIELD #1%, 8192% AS B$ \ I% = MAGTAPE(3%,0%,1%) ! Field buffer and rewind tape 1045 LSET B$ = STRING$(8192%,0%) ! Null out buffer 1050 PUT #1% \ GOTO 1050 30000 ! ! E r r o r H a n d l i n g 30010 IF ERR = 4% THEN I% = MAGTAPE(3%,0%,1%) \ I% = MAGTAPE(2%,0%,1%) FOR C% = 1% TO 3% \ I% = MAGTAPE(3%,0%,1%) \ CLOSE #1% \ RESUME 32000 IF D% \ PRINT "Magnetic tape on drive 0 has been erased and zeroed." \ RESUME 32000 ! When we run out of room, rewind the tape; write LEOT (3 tapemarks); ! rewind tape again, close it, tell user and exit 30020 IF ERL = 1025% THEN PRINT CHR$(7%);CHR$(7%);CHR$(7%); \ PRINT "Please mount tape to be zeroed on drive 0" \ PRINT "Hit the RETURN key to proceed" \ GET \ PRINT \ RESUME 1025 ! Handle tape not mounted errors 30030 IF ERR = 39% AND ERL = 1050% THEN PRINT CHR$(7%); \ RESUME 32000 IF D% \ PRINT "Magnetic tape on drive has no EOT mark - please fix it" \ CLOSE #1% \ RESUME 32000 30900 RESUME 32000 IF D% \ PRINT "?Error erasing tape - "; CVT$$(RIGHT(SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)),3%),4%); " (ERR=";NUM1$(ERR);") at line";ERL \ CLOSE #1% \ RESUME 32000 32000 ! ! E x i t 32010 S$ = SYS(CHR$(6%)+CHR$(5%)) IF D% ! Logout if detached 32700 S$ = SYS(CHR$(9%)) ! Clear core and exit fast 32767 END