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