2 ! **********************************************************************
3 ! Program          RAMCOPY.BAS      Utg}va  1.0      1983-10-05
4 ! av Bo Kullmar
5 ! Ins{nd av Bo Kullmar, 1789
6 ! F|r ABC806, kan k|ras p} ABC800 om med RAM-minne om man tar bort ATTRIBUTE
8 ! Testad p} ABC806
9 ! Programmet kan anv{ndas p} all maskiner som har en RAM-floppy.
10 ! **********************************************************************
60 INTEGER : EXTEND : ATTRIBUTE 3
300 DIM Block$=253
500 DATA DISKSTAT.BAC,FILSTAT.BAC,L[SDISK.BAC,
600 DATA ASM.BAC,ASM2.BAC,ASMCON.NYA,
700 DATA DISASEM.BAC,FILDIS.BAC,OPCODE1.TXT,OPCODE2.TXT,
800 DATA ABCTERM.BAC,ABCFIL.BAC,SETUP.BAC,PARV24.BAC,PARPR.BAC,
900 DATA KOMTERM.BAC,TVKOM.BAC,TVKMAIN.BAC,TVSUB800.ABS,KOMFIL.BAC,NAME.BAC,
1000 ! Huvudprogram
1020 ON FNMeny GOTO 1030,1040,1050,1060
1030 Z=FNKommando : Antal=FNReadname : Z=FNCopylib : GOTO 1060
1040 Z=FNCopy('RAM:','RAM:','') : GOTO 1060
1050 Z=FNCopy('','DR:','RAM:') : GOTO 1060
1060 ; : ; : OUT 53,3
1070 END 
2000 DEF FNMeny
2010   ; CHR$(12);DBLE YEL 'ABC806 RAMCOPY' : ; : ; BLU STRING$(80,61) : ; : ; 
2020   ; CYA 'Meny:' : ; 
2030   ; GRN 'Programmet kopierar filer med samma filnamn fr}n RAM: till disk'
2040   ; GRN 'och tv{rt om.' : ; 
2050   ; YEL '1  Kopiera fr}n kommandofil'
2060   ; YEL '2  Kopiera DR  -->  RAM'
2070   ; YEL '3  Kopiera RAM -->  DR'
2080   ; YEL '4  Avsluta' : ; : ; 
2090   ; CYA 'V{lj rutin (1-4) '; : GET Svar$ : ; Svar$;
2100   IF INSTR(1,'1234',Svar$)=0 THEN ; TAB(30) RED 'Fel svar!' : GOTO 2090
2110   RETURN VAL(Svar$)
2120 FNEND 
3000 DEF FNReadname LOCAL I
3010   DIM Filnamn$(50)=12
3020   READ Filnamn$(I)
3030   WHILE Filnamn$(I)<>''
3040     I=I+1
3050     READ Filnamn$(I)
3060   WEND 
3070   RETURN I-1
3080 FNEND 
3090 DEF FNKommando LOCAL Svar$=1,Svar2$=1,Svar2
3100   ; CHR$(12);DBLE YEL 'ABC806 RAMCOPY' : ; : ; BLU STRING$(80,61) : ; : ; 
3110   ; YEL 'Kopiering fr}n kommandofiler:' : ; 
3120   ; YEL 'F|ljande kommandofiler finns:' : ; 
3130   ; CYA '1  DISKSTAT, FILSTAT och L[SDISK'
3140   ; CYA '2  Assemblator'
3150   ; CYA '3  Dissassemblator med fildissamblator'
3160   ; CYA '4  ABCTERM med tillh|rande program'
3170   ; CYA '5  KOMTERM med tillh|rande program'
3180   ; : ; YEL 'V{lj (1-5) '; : GET Svar2$
3190   IF INSTR(1,'12345',Svar2$)=0 THEN ; RED 'Felaktigt val!' : GOTO 3120
3200   ; YEL Svar2$ : ; : Svar2=VAL(Svar2$)
3210   ON Svar2 RESTORE 500,600,700,800,900 : RETURN -1
3220 FNEND 
3230 DEF FNCopylib LOCAL Block$=253,I
3240   ON ERROR GOTO 3360
3250   WHILE I<=Antal
3260     OPEN Filnamn$(I) AS FILE 1
3270     PREPARE 'RAM:'+Filnamn$(I) AS FILE 2
3280     ; YEL Filnamn$(I),'Kopieras nu till RAM:';
3290     WHILE -1
3300       GET #1,Block$ COUNT 253
3310       PUT #2,Block$
3320     WEND 
3330     I=I+1
3340   WEND 
3350   RETURN 0
3360   IF ERRCODE=21 ; RED Filnamn$(I),'Finns ej p} skivorna!' : RESUME 3330
3370   IF ERRCODE=38 THEN ; CUR(PEEK(65363),14) YEL '[r kopierad till RAM:' : RESUME 3330
3380   ; RED 'Fel nr' ERRCODE : RESUME 3350
3390 FNEND 
4000 DEF FNCopy(Utenhet$,Utenhet2$,Inenhet$) LOCAL Block$=253
4010   ; CHR$(12);DBLE YEL 'ABC806 RAMCOPY' : ; : ; BLU STRING$(80,61) : ; : ; 
4020   ; YEL 'Kopiering ' Inenhet$ ' --> ' Utenhet2$
4030   ; : ; YEL; : INPUT 'Ange filnamnet! 'Infil$ : Utfil$=Infil$
4040   OUT 34,8 : ; : ; 
4050   ON ERROR GOTO 4130
4060   OPEN Inenhet$+Infil$ AS FILE 1
4070   PREPARE Utenhet$+Utfil$ AS FILE 2
4080   ; YEL Infil$,'Kopieras nu till ' Utenhet2$;
4090   WHILE -1
4100     GET #1,Block$ COUNT 253
4110     PUT #2,Block$
4120   WEND 
4130   IF ERRCODE=21 ; RED 'Hittar ej filen!' : RESUME 4030
4140   IF ERRCODE=38 THEN ; CUR(PEEK(65363),14) YEL '[r kopierad till ' Utenhet2$ : RESUME 4160
4150   ; RED 'Felkod nr' ERRCODE
4160   RETURN 0
4170 FNEND 
