1 REM Ins{nd av Sigvard Nilsson <3018> 1987-04-16 18.37.03 (SEND)
10 ! DISKCAS.BAS version 3
12 REM Ins{nd av John Stagg <5741> 1985-07-07 16.08.23
15 ! Fil/diskkopiering n{r man bara har tillg}ng till en enda drive
16 ! Programmet {ndrat till DISKCAS.800 av <3018> Sigvard Nilsson
17 ! den 27 mars 1987. Programmet {r f|r UFD-DOS och DRIVE 832/834
18 ! PROVK\RT P] ABC-800 och 802
19 ! Sm{rre {ndringar inf|rt 1987-04-15
20 FLOAT : EXTEND
25 Bm%=6% : ! Bimappsektor
30 DIM Lib$(256%)=12%,A%(15%),Sektor%(256%)
35 DIM Block$=253
40 DEF FNLib%
50 Antal%=0% : L{s%=24678% : Disksel%=64769% : Diskerror%=64789% : Dosbuf0%=62720%
60 POKE Disksel%,PEEK(Disksel%) AND 254%
70 Z%=CALL(L{s%,Bm%)
80 IF PEEK(Diskerror%) AND 128% THEN 270
90 FOR I%=0% TO 15%
100 A%(I%)=PEEK(Dosbuf0%+239%+I%)
110 NEXT I%
120 FOR I%=0% TO 15%
130 IF A%(I%)=0% THEN 250
140 Z%=CALL(L{s%,16%+I%)
150 FOR J%=Dosbuf0%-16%*(I%=0%) TO Dosbuf0%+240% STEP 16%
160 IF PEEK(J%)=0% OR PEEK(J%)=255% THEN 240
170 F$=''
180 FOR K%=4% TO 14%
190 IF K%=12% THEN F$=F$+'.'
200 F$=F$+CHR$(PEEK(J%+K%))
210 NEXT K%
220 F$=FNBlank$(F$) : IF F$='SYSDIR.SYS' THEN GOTO 240
230 Lib$(Antal%)=F$ : Antal%=Antal%+1%
240 NEXT J%
250 NEXT I%
260 Antal%=Antal%-1%
270 RETURN 0%
280 FNEND
290 DEF FNBlank$(T$) LOCAL T1$=12
300 T1$=T$ : Punkt%=INSTR(1%,T$,'.') : Blank%=INSTR(1%,T$,' ')
310 IF Blank%<>0% THEN IF Blank%0% THEN T1$=LEFT$(T$,Blank%-1%)
340 RETURN T1$
350 FNEND
360 DEF FNSvar%
370 INPUT T$ : RETURN (T$='J' OR T$='j')
380 FNEND
390 DEF FNCas%(N%)
400 IF Lib$(N%)='' THEN RETURN 0%
410 ON ERROR GOTO 490
420 OPEN Lib$(N%) AS FILE 1%
430 Storlek=PEEK2(64778)+1
440 OUT 67,5 : OUT 67,128
450 PREPARE 'CAS:'+Lib$(N%) AS FILE 2%
460 GET #1%,Block$ COUNT 253% : PUT #2%,Block$
470 GOTO 460
480 OUT 67%,5% : OUT 67%,0%
490 IF ERRCODE=34% OR ERRCODE=38% OR ERRCODE=37% THEN RESUME 510
500 ; ERRCODE ' Vid Fil ' Lib$(N%) : Fel%=-1% : RESUME 510
510 CLOSE : RETURN 0%
520 FNEND
530 ON ERROR GOTO 540
540 IF ERRCODE=34% OR ERRCODE=38% OR ERRCODE=37% THEN 550 ELSE ; 'Fel nr.' ERRCODE : Fel%=-1%
550 CLOSE
560 DEF FNEnd%
570 ;
580 END
590 FNEND
600 ; CHR$(12%) '** DISKCAS - kopiering till kassettbandspelaren **' : ;
610 ; '1. Kopiera hela skivan' : ; '2. Kopiera delar av skivan' : ; : ; 'V{lj 1/2 ';
620 INPUT LINE T$ : T$=LEFT$(T$,1%) : IF T$='1' THEN Hela%=-1% ELSE IF T$<>'2' THEN Z%=FNEnd%
630 ; : Z%=FNLib% : IF Hela% THEN GOTO 690
640 ; : ; 'Ange J f|r kopiering, return f|r ingen kopiering' : ;
650 FOR Fil%=Start% TO Antal%
660 ; 'Kopiera fil ';Lib$(Fil%);
670 IF NOT FNSvar% THEN Lib$(Fil%)=''
680 NEXT Fil% : ;
690 ; '(Avbryt med "S")'
700 FOR Fil%=Start% TO Antal%
710 Z%=FNCas%(Fil%)
720 IF Fel% OR Lib$(Fil%)='' THEN Fel%=0% : GOTO 760
730 ; Lib$(Fil%);' kopierat till CAS!'
740 ; Storlek
750 IF SYS(5%) THEN GET T$ : IF T$='s' OR T$='S' THEN Z%=FNEnd%
760 !
770 NEXT Fil%
780 ; CHR$(7%) : ; 'KLART !'
790 END
800 Copybot%=Start% : ; : ; '(Avbryt med "S")'
810 IF Fel% OR Lib$(Fil%)='' THEN Fel%=0% : GOTO 830
820 IF SYS(5%) THEN GET T$ : IF T$='s' OR T$='S' THEN Z%=FNEnd%
830 END