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%'FULL' AND Dval$<>'HALV' ; RED ' Giltiga svar: FULL,full,HALV,halv' : GOTO 6160 6190 IF Dval$='FULL' THEN MID$(Par$,10%,1%)='C' ELSE MID$(Par$,10%,1%)='O' 6200 ; : ; YEL ' \verf|ringshastigheter:' 6210 ; 6220 IF Prom=7.1 THEN ; CYA ' 300,1200,2400' ELSE ; CYA ' 300,1200,2400,75/1200' 6230 ; 6240 ; CYA ' '; : INPUT 'V{lj hastighet! 'Hast$ 6250 I%=0% 6255 IF Prom=7.1 RESTORE 400 ELSE RESTORE 410 6257 READ Antal% 6260 WHILE I%95% THEN X$=X$+CHR$(A% AND 223%) ELSE X$=X$+CHR$(A%) 6940 NEXT J% 6950 RETURN X$ 6960 FNEND 7000 DEF FNDumpa%(Fil$) LOCAL Dummy$=1,Tpar$=15 7010 Lmeny$=YEL+' Pf 1 Meny Pf 2 FF Pf 8 Avslta' 7045 ; Lmeny$ 7050 CLOSE V24% 7060 Tpar$=Par$ : MID$(Tpar$,5%,1%)='V' 7070 OPEN Tpar$ AS FILE V24% 7080 PREPARE Fil$ AS FILE 8% 7085 ; CYA ' Klart! Obs mark|ren visas ej!' 7090 WHILE -1% 7110 IF PEEK2(PEEK2(65500%)+6%)<>0% THEN ; FNInchr$; 7120 IF SYS(5%)=128% THEN Dummy$=FNInkey$ ELSE Dummy$='' 7130 As%=ASCII(Dummy$) 7140 IF As%=199% THEN 7190 7150 IF As%=193% THEN ; #8%,CHR$(12%) 7160 IF As%=192% THEN ; Lmeny$ 7170 IF Duplex$='halv duplex' THEN ; Dummy$; 7180 WEND 7190 CLOSE V24%,8% 7200 OPEN Par$ AS FILE V24% 7210 RETURN 0% 7220 FNEND 7230 DEF FNInchr$ LOCAL Dummy$=1 7250 GET #V24%,Buffert$ 7260 Dummy$=CHR$(ASCII(Buffert$) AND 127%) 7270 ; #8%,Dummy$; 7280 RETURN Dummy$ 7290 FNEND 7300 DEF FNInkey$ LOCAL Dummy$=1 7320 GET Dummy$ 7330 As%=ASCII(Dummy$) 7340 IF As%=192% OR As%=193% OR As%=199% THEN RETURN Dummy$ 7350 ; #V24%,Dummy$; 7360 RETURN Dummy$ 7370 FNEND 7510 DEF FNDumpapr% 7513 IF PEEK2(PEEK2(65500%))<>8% THEN ; RED ' Fel typ av options-prom!' : RETURN 0% 7515 IF Hast$<>'300' THEN ; RED ' Fel hastighet f|r denna funktion!' : RETURN 0% 7520 ; YEL ' Dumpa text till skrivare!' : ; 7530 Z%=FNDumpa%(Pr$) 7540 RETURN 0% 7550 FNEND 7560 DEF FNDumpafil% 7563 IF PEEK2(PEEK2(65500%))<>8% THEN ; RED ' Fel typ av options-prom!' : RETURN 0% 7565 ! **** IF Hast$<>'300' THEN ; RED ' Fel hastighet f|r denna funktion!' : RETURN 0 ***** 7570 ; RED ' Local Mode!' : ; 7580 ; YEL ' Dumpa inkommande text till fil!' 7590 ; YEL ' '; : INPUT 'Ange filnamn! 'Fil$ 7600 Z%=FNDumpa%(Fil$) 7610 RETURN 0% 7620 FNEND 9000 DEF FNDelay%(Y%) LOCAL I% 9010 WHILE I%191% AND Pf%<200% THEN RESUME 10060 10040 IF Pf%>207% AND Pf%<216% THEN RESUME 10070 10050 IF Pf%>223% AND Pf%<232% THEN RESUME 10080 10055 IF Pf%>239% AND Pf%<248% THEN RESUME 10090 ELSE RESUME 10990 10060 ON Pf%-191% GOTO 10100,10200,10300,10400,10990,10600,10990,10800 10070 ON Pf%-207% GOTO 10990,10990,10990,10990,10990,10990,10990,10990 10080 ON Pf%-223% GOTO 10990,10990,10990,10990,10990,10990,10990,10990 10090 ON Pf%-239% GOTO 10990,10990,10990,10990,10990,10990,10990,10990 10100 Z%=FNMeny% : GOTO 1050 10200 Z%=FNNyhast% : GOTO 1030 10300 Z%=FNDumpafil% : GOTO 1050 10400 Z%=FNDumpapr% : GOTO 1050 10600 Z%=FNHardcopy% : GOTO 1050 10800 POKE 65413%,35%,255% ! CTRL-C s{tts p} igen 10810 END 10990 ; CHR$(7%);RED 'Denna tangent saknar funktion!' : GOTO 1050 15000 DEF FNHardcopy% LOCAL Max%,Adress%,Teck% 15010 OPEN Pr$ AS FILE 9% 15020 Max%=PEEK(-172%) 15030 FOR I%=0% TO 23% 15040 IF Max%=40% THEN ; #9%,TAB(20%); 15050 IF Max%=40% THEN Adress%=31744%+I%*128%-I%/8%*984% ELSE Adress%=30720%+I%*80% 15060 FOR Y%=Adress% TO Adress%+Max%-1% 15070 Teck%=PEEK(Y%) 15080 IF Teck%<32% THEN Teck%=32% 15090 ; #9%,CHR$(Teck%); 15100 NEXT Y% 15110 ; #9% 15120 NEXT I% 15130 CLOSE 9% 15140 RETURN 0% 15150 FNEND