2 ! +++++++++++++++++++++++++++++++++++
3 ! Program ....     ABCTRANS.800
4 ! Utg}va  2.0      1983-03-27
5 ! av (c) Bo Kullmar
8 ! Ins{nt av Bo Kullmar, medl 1789.
9 ! +++++++++++++++++++++++++++++++++++
50 ON ERROR GOTO 10000
80 EXTEND : FLOAT 
300 DIM Rad$=159%,Buffert$=10000%
310 IF PEEK2(PEEK2(65500%))<>8% THEN Prom=7.1 ELSE Prom=7.2
320 IF Prom=7.2 THEN POKE PEEK2(65500%)+2%,VAROOT(Buffert$),SWAP%(VAROOT(Buffert$))
400 DATA 2,1,2,4,5
410 DATA 3,2,22,44,55,40
500 ! ******** Konstanter: **********
510 Rubrik$=CHR$(12%)+YEL+DBLE+'ABCTRANS FIL\VERF\RINGSPROGRAM'
520 IF Prom=7.1 THEN Par$='V24:TEA70C72.2' ELSE Par$='V24:TEA70C72.22' ! Default parameter
530 Filslut$='/*' ! Filslut f|r ABCFIL
540 V24%=1%
550 Pr$='PR:VSA30C72.5' ! Parameter f|r printer
560 Hast$(0%)='300' : Hast$(1%)='1200' : Hast$(2%)='2400'
570 Hast$(3%)='75/1200'
1000 ! *** Initiering ****
1010 Z%=FNMeny%
1020 ! POKE 65413,0,0 ! CTRL-C st{ngs av
1030 OPEN Par$ AS FILE V24%
1040 ! *** Huvudloop
1050 INPUT #V24%,Rad$
1060 IF Rad$='SYNK' THEN Z%=FNGetfil% : GOTO 1050
1070 IF Rad$='SENDFIL' THEN Z%=FNSendfil% : GOTO 1050
1080 ; RED Rad$
1090 IF LEN(Rad$)=0% THEN 10800 ELSE 1050
2000 DEF FNMeny%
2010   ; Rubrik$ : ; : ; 
2020   ; YEL ' Meny:' : ; 
2030   ; CYA ' Pf 1  Meny, ej local mode'
2040   ; CYA ' Pf 2  [ndra hastighet'
2050   ; CYA ' Pf 3  Dumpa Fil'
2060   ; CYA ' Pf 4  Dumpa PR:'
2070   ; CYA ' Pf 5  Ej anv{nd'
2080   ; CYA ' Pf 6  Hardcopy'
2090   ; CYA ' Pf 7  Ej anv{nd'
2100   ; CYA ' Pf 8  Avsluta programmet'
2110   ; 
2170   ; YEL ' \verf|r.hast.' CYA FNHast$
2180   ; : ; 
2190   RETURN 0%
2200 FNEND 
3000 DEF FNGetfil%
3010   ON ERROR GOTO 3340
3020   POKE -30%,0% : ; 
3030   ; RED 'Local mode!';
3040   ; 
3050   ; YEL '  ******  Mottaga fil  ******' : ; 
3060   ; YEL 'Filnamn vid MONITORN: '; : INPUT LINE F1$ : ; 
3070   F1$=LEFT$(F1$,LEN(F1$)-2%)
3080   ; YEL 'Filnamn h{r: '; : INPUT ''F2$
3090   IF F2$='' THEN F2$=F1$ : ; CUR(PEEK(-173%)-1%,14%) F2$
3100   ; #V24%,'Hejsan'
3110   INPUT #V24%,Rad$
3120   IF Rad$<>'SYNK' THEN 3100
3130   Z%=FNDelay%(100%)
3140   ; #V24%,'SYNKSVAR'
3150   Z%=FNDelay%(200%)
3160   ; #V24%,F1$
3170   INPUT LINE #V24%,Rad$ : Rad$=LEFT$(Rad$,LEN(Rad$)-2%)
3180   IF Rad$<>'OPENED' THEN ; RED Rad$ : ; : Z%=FNDelay%(2000%) : GOTO 3330
3190   PREPARE F2$ AS FILE 2%
3200   FOR I%=1% TO 10000%
3210     Z%=FNDelay%(100%)
3220     ; #V24%,'>'
3230     INPUT LINE #V24%,Rad$
3240     IF LEFT$(Rad$,2%)=Filslut$ THEN 3290
3250     ; #2%,Rad$;
3260     ; GRN 'Rad nr' I%
3270     POKE -173%,PEEK(-173%)-1%
3280   NEXT I% 
3290   CLOSE 2%
3300   ; : ; YEL 'Antal rader =' I%-1% : ; 
3310   ; CHR$(7%,7%,7%); : POKE -30%,0%
3320   ; #V24%,'Tack!'
3330   RETURN 0%
3340   ; RED ' FEL NR' ERRCODE ', ABCFIL STOPPAS!'
3360   RETURN 0%
3370 FNEND 
4000 DEF FNSendfil%
4010   POKE -188%,0%
4015   POKE -30%,0% : ; 
4020   ; RED 'Local mode';
4030   ; 
4040   ; YEL '  ******  S{nda fil  ******' : ; 
4050   ; YEL 'Filnamn h{r: '; : INPUT ''F2$
4060   ; YEL 'Lagras vid MONITORN'
4070   ; YEL 'under filnamn: '; : INPUT LINE F1$ : ; 
4075   F1$=LEFT$(F1$,LEN(F1$)-2%)
4080   IF F1$='' THEN F1$=F2$ : ; CUR(PEEK(-173%)-1%,16%) F1$
4090   OPEN F2$ AS FILE 2%
4100   ; #V24%,'Hejsan'
4110   INPUT #V24%,Rad$
4120   IF Rad$<>'SENDFIL' THEN 4100
4130   Z%=FNDelay%(100%)
4140   ; #V24%,'SYNKSVAR'
4150   Z%=FNDelay%(200%)
4160   ; #V24%,F1$
4170   ON ERROR GOTO 4270
4180   FOR I%=1% TO 10000%
4190     INPUT LINE #V24%,Dummy$
4200     INPUT LINE #2%,Rad$ : Rad$=LEFT$(Rad$,LEN(Rad$)-2%)
4210     ; GRN 'Rad nr' I%
4220     POKE -173%,PEEK(-173%)-1%
4230     Z%=FNDelay%(100%)
4240     ; #V24%,Rad$
4250   NEXT I% 
4270   IF ERRCODE=34% THEN RESUME 4300
4275   IF ERRCODE THEN RESUME 4280
4280   ; CHR$(7%,7%,7%);RED 'Fel nr' ERRCODE
4285   ; #V24%,'FILSLUT, ERROR NR' ERRCODE '(ABC800)!'
4290   ; RED 'Jag s{nder filslutsm{rke nu!'
4300   Z%=FNDelay%(100%)
4310   ; #V24%,Filslut$
4320   CLOSE 2%
4340   ; 
4350   ; YEL 'Antal rader =' I%-1% : ; 
4360   Z%=FNDelay%(1000%)
4370   ; CHR$(7%,7%,7%); : POKE -30%,0%
4380   ; #V24%,'Tack!'
4390   RETURN 0%
4400 FNEND 
6000 DEF FNHast$ LOCAL I%
6010   IF MID$(Par$,10%,1%)='C' THEN Duplex$='full duplex' ELSE Duplex$='halv duplex'
6020   IF Prom=7.1 RESTORE 400 ELSE RESTORE 410
6030   READ Antal%,Ver%
6040   WHILE I%