10 ' UNERA from BASIC
20 ' by Dave Atherton 17/06/85
30 '
40 MEMORY &4FFF : CLEAR : DEFINT A-z
50 sector=&6000:par=&7000
52 łA
54 
57968 =PEEK(&BE40)+PEEK(&BE41)*256+10
56 sec=PEEK(PEEK(
57968 )+PEEK(
57968 +1)*256+15)
58 IF sec=&C1 THEN tr=0 ELSE tr=2
60 PRINT"UNERA - Deleted files on this disc:"
70 U%=0 ' user number for undeleted files
80 F%=0 ' flag for alterations
90 GOSUB 350 ' Assembly
100 op=4:GOSUB 310 ' read sectors
110 FOR i=0 TO 63:Z%=I*32+&5000
120 X%=PEEK(Z%):IF X%<>&E5 GOTO 220
130 IF PEEK(Z%+1)=&E5 GOTO 220
140 IF F%<1 THEN F%=1
150 FOR j=Z%+1 TO Z%+11
160 PRINT CHR$(1);CHR$(PEEK(j));
170 IF j=(Z%+8) THEN PRINT ".";
180 NEXT
190 PRINTTAB(30);"Restore? Y/N ";
200 a$=INKEY$:IF a$="" GOTO 200
210 IF UPPER$(a$)="Y" THEN PRINT"Y":POKE Z%,U%:F%=2 ELSE PRINT"N"
220 NEXT i
230 IF F%=0 THEN PRINT "No deleted files" : END
240 IF F%=1 THEN PRINT "No changes required" : END
250 PRINT "Press a key to re-write sector":WHILE INKEY$="":WEND
260 op=5:GOSUB 310
270 CAT:END
280 '
290 ' Disc access : see assembler for param details op 4=rd 5=wr
300 '
310 FOR s=0 TO 3:POKE par,0:POKE par+1,tr:POKE par+2,sec+s
320 POKE par+7,0:POKE par+8,&50+2*s:POKE par+3,op
330 CALL sector : NEXT : RETURN
340 '
350 RESTORE 370
360 FOR i=&6000 TO &603A : READ j : POKE i,j : NEXT
370 DATA &21,&31,&60,&16,&00,&3A,&03,&70,&5F,&19,&CD,&23,&60,&21,&02,&70,&4E,&21,&01,&70,&56,&21,&00,&70,&5E,&2A,&07,&70,&DF,&2E,&60,&32,&04,&70,&C9,&CD,&D4,&BC,&22,&2E,&60,&79,&32,&30,&60,&C9,&3C,&C0,&07,&00,&81,&82,&83,&84,&85,&86,&87,&88,&89
380 RETURN