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 |