2 ! ********************************************************************** 3 ! Program FILTRANS.BAS Utg}va 1.9 1985-10-25 4 ! av Bo Kullmar 5 ! Ins{nd av Bo Kullmar 6 ! F|r ABC800M ABC800C ABC802 ABC806 8 ! Testad p} ABC806 9 ! Programmet {r anpassat till nya monitorn i Stockhom. Den som vill anv{nda 10 ! ett b{ttre program kan anv{nda QZ-programmet eller ABCTERM-paketet. QZ- 11 ! programmet kr{ver lite programmeringsvana, men ABCTERM {r anv{ndarv{nligt. 12 ! ********************************************************************** 50 ON ERROR GOTO 10000 80 EXTEND : INTEGER : OPTION BASE 0 300 DIM Rad$=159,Radin$=159 310 DIM N$=256,A(31) 500 ! Konstanter: 520 Medlemsnr$='' ! ******* Fyll i h{r ********* 530 Password$='' ! ******* Fyll i h{r ********* 540 Rubrik$=CHR$(12)+YEL+DBLE+'FIL\VERF\RINGSPROGRAMMET FILTRANS' 550 Halfd$='V24:TSA70G72.22E' 560 Fulld$='V24:TSA70C72.22E' 562 Fulld120075$='V24:TSA70C72.40E' 564 Fulld12001200$='V24:TSA70C72.44E' 570 Monitor$='V24:VEA70G72.22E' 580 Filslut$='/*' 590 Ctrlb$=CHR$(2) 600 Ctrld$=CHR$(4,0) 610 V24=1 780 Mon$='MONITOR' 790 Tid=0 ! Avkopplad, p}kopplad = 9 800 P}$='av' ! Tidv kopplas p} vid inloggning med Pf1 810 Ctrlmj$=CHR$(13,10) 820 Kom$=' KOM!'+Ctrlmj$ 830 Slav$=Ctrlb$+Mon$ 840 \ppna=-1 1000 Z=FNMeny 1010 ; YEL ' Tryck f|r ny bild! '; : GET Svar$ 1020 ; Rubrik$ : ; : ; : ; 1030 ; YEL ' V{lj mode:' : ; : ; 1040 ; CYA ' 1 Terminal halv duplex 300/300 bps' 1050 ; CYA ' 2 Terminal full duplex 300/300 bps' 1060 ; CYA ' 3 ABC800 slavad som monitor' 1070 ; CYA ' 4 Avsluta' 1072 ; CYA ' 5 Terminal full duplex 1200/75 bps' 1074 ; CYA ' 6 Terminal full duplex 1200/1200 bps' 1080 ; : ; 1090 ; YEL ' V{lj (1-6)! '; : GET Svar$ 1100 IF Svar$<'1' OR Svar$>'6' THEN Svar$='4' 1110 ; Svar$ : ; : ; 1120 Svar=VAL(Svar$) 1130 ON Svar GOTO 1140,1150,1160,1180,1162,1164 1140 Par$=Halfd$ : GOTO 1200 1150 Par$=Fulld$ : GOTO 1200 1160 Z=FNMonitor 1162 Par$=Fulld120075$ : GOTO 1200 1164 Par$=Fulld12001200$ : GOTO 1200 1170 OPEN Halfd$ AS FILE V24 : GOTO 2010 1180 ; : ; 1190 END 1195 ON ERROR GOTO 1205 1200 OPEN Par$ AS FILE V24 : \ppna=0 1205 IF \ppna Par$=LEFT$(Par$,15) : \ppna=0 : RESUME 1200 1207 ON ERROR GOTO 10000 1210 DEF FNMeny LOCAL Tabb,Tabb0 1215 IF PEEK(65364)=40 Tabb=27 : Tabb0=15 ELSE Tabb=55 : Tabb0=30 1220 ; Rubrik$ : ; 1230 ; YEL ' Meny:' TAB(Tabb0) '+SHIFT:' TAB(Tabb) '+CTRL:' : ; 1240 ; CYA ' Pf 1 Login' TAB(Tabb) 'Menyn ej local' 1250 ; CYA ' Pf 2 ' TAB(Tabb) 'Tidv ' P}$ 1260 ; CYA ' Pf 3 ' 1270 ; CYA ' Pf 4 ' TAB(Tabb) 'Slava B-datorn' 1280 ; CYA ' Pf 5 ' TAB(Tabb) 'CTRL-J-M' 1290 ; CYA ' Pf 6 ' TAB(Tabb) 'Hardcopy' 1300 ; CYA ' Pf 7' 1310 ; CYA ' Pf 8 ' TAB(Tabb) 'Local mode' 1320 ; 1330 ; CYA ' Pf 5+SHIFT+CTRL = "KOM!" + CTRL-J + CR' 1340 ; 1350 ; YEL ' Inloggningskoder f|r ABC-MONITORN:' 1360 ; 1380 ; CYA ' Medlemsnummer: ' Medlemsnr$ 1390 ; CYA ' L|sen: ' Password$ 1400 ; : ; 1410 RETURN 0 1420 FNEND 2000 ! Huvudloop 2010 INPUT #V24,Rad$ 2020 IF Rad$='SYNK' THEN Z=FNGetfil : GOTO 2010 2030 IF Rad$='SENDFIL' THEN Z=FNSendfil : GOTO 2010 2040 IF Rad$='SIGNAL' THEN Z=FNSignal : GOTO 2010 2045 IF Rad$='MONITOR' OR Rad$='monitor' THEN Z=FNMonitor : GOTO 1140 2050 ; RED Rad$ 2060 IF LEN(Rad$)=0 THEN 1020 ELSE 2010 3000 DEF FNGetfil LOCAL I 3020 POKE -30,0 : ; 3030 ; RED 'Local mode!'; : Z=FNTid 3040 ; 3050 ; YEL ' ****** Mottaga fil ******' : ; 3055 ; YEL 'Filnamn vid monitorn beh|ver ej anges mot nya monitorn i Stockholm!' 3060 ; YEL 'Filnamn vid MONITORN: '; : INPUT ''F1$ 3070 ; YEL 'Filnamn h{r: '; : INPUT ''F2$ 3080 IF F2$='' THEN F2$=F1$ : ; CUR(PEEK(-173)-1,18) F2$ 3090 ; #V24,'Hejsan' 3100 INPUT #V24,Radin$ 3110 IF Radin$<>'SYNK' THEN 3090 3120 Z=FNDelay(100.) 3130 ; #V24,'SYNKSVAR' 3140 Z=FNDelay(200.) 3150 ; #V24,F1$ 3160 INPUT LINE #V24,Radin$ : Radin$=LEFT$(Radin$,LEN(Radin$)-2) 3170 IF Radin$<>'OPENED' THEN ; RED Radin$ : ; : Z=FNDelay(2000.) : GOTO 3320 3180 PREPARE F2$ AS FILE 2 3190 WHILE -1 3200 Z=FNDelay(100.) 3210 ; #V24,'>' 3220 INPUT LINE #V24,Radin$ 3230 IF LEFT$(Radin$,2)=Filslut$ THEN 3280 3240 ; #2,Radin$; 3260 POKE -173,PEEK(-173)-1 : ; GRN Radin$; : I=I+1 3270 WEND 3280 CLOSE 2 3290 ; : ; YEL 'Antal rader =' I : ; 3300 ; CHR$(7,7,7); : POKE -30,0 3310 ; #V24,'Tack!' 3320 RETURN 0 3330 FNEND 4000 DEF FNSendfil LOCAL I 4010 POKE -188,0 4015 POKE -30,0 : ; 4020 ; RED 'Local mode'; : Z=FNTid 4030 ; 4040 ; YEL ' ****** S{nda fil ******' : ; 4044 ; YEL 'Filnamn vid monitorn beh|ver ej anges mot nya monitorn i Stockholm!' 4050 ; YEL 'Filnamn h{r: '; : INPUT ''F2$ 4060 ; YEL 'Lagras vid MONITORN' 4070 ; YEL 'under filnamn: '; : INPUT ''F1$ 4080 IF F1$='' THEN F1$=F2$ : ; CUR(PEEK(-173)-1,15) 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 WHILE -1 4190 INPUT LINE #V24,Dummy$ 4200 INPUT LINE #2,Rad$ : Rad$=LEFT$(Rad$,LEN(Rad$)-2) 4220 POKE -173,PEEK(-173)-1 4230 Z=FNDelay(100.) 4240 ; #V24,Rad$ : ; GRN Rad$ : I=I+1 4250 WEND 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 p} grund av lokalt fel nr' ERRCODE 'i ABC800-serien!' 4290 ; RED 'Jag s{nder filslutsm{rke nu!' 4300 Z=FNDelay(100.) 4310 ; #V24,Filslut$ 4320 CLOSE 2 4340 ; 4350 ; YEL 'Antal rader =' I : ; 4360 Z=FNDelay(1000.) 4370 ; CHR$(7,7,7); : POKE -30,0 4380 ; #V24,'Tack!' 4390 RETURN 0 4400 FNEND 5000 DEF FNMonitor LOCAL \ppna 5005 ON ERROR GOTO 5260 : \ppna=-1 5010 V24=3 : OPEN Monitor$ AS FILE V24 : \ppna=0 5020 ; CHR$(7,12) DBLE GRN 'Denna ABC800 {r nu slavad som MONITOR' : ; : ; 5030 ; #V24,'ABC800 Mini-Monitor' 5040 ; #V24,'Vad vill du g|ra?' 5060 INPUT #V24,\$ : \$=FNCtrlh$(\$) 5070 IF LEN(\$)=0 THEN 5040 ELSE \$=FNStora$(\$) 5090 IF INSTR(1,Se$,\$) THEN Z=FNMsend : GOTO 5030 5100 IF INSTR(1,Ge$,\$) THEN Z=FNMget : GOTO 5030 5110 IF INSTR(1,By$,\$) THEN 5210 5120 ; #V24,\$ ' finns ej!' 5130 ; #V24 5140 ; #V24,'Meny:' : ; #V24 : ; YEL ' Menyn visas' 5160 ; #V24 'SENDFIL S{nda fil' 5170 ; #V24,'GETFIL H{mta fil' 5180 ; #V24,'BYE Avsluta' 5190 ; #V24 5200 GOTO 5040 5210 ; #V24,'Remote ABC800 upph|r att vara Monitor!' 5220 ; CHR$(12) DBLE CYA 'Jag {r klar! ]terg} till terminal' : ; : ; 5230 ; CHR$(7,7,7); : CLOSE V24 : V24=1 5250 RETURN 0 5260 IF \ppna Monitor$=LEFT$(Monitor$,15) : \ppna=0 : Halfd$=LEFT$(Halfd$,15) : RESUME 5010 5270 FNEND 5280 DEF FNMsend 5290 ON ERROR GOTO 5580 5300 Z=FNDelay(1000.) 5310 ; #V24,Ctrlb$ 'SENDFIL' 5320 INPUT #V24,\$ 5330 IF \$='SYNKSVAR' THEN 5340 ELSE 5300 5340 ! Synkroniserad 5350 INPUT #V24,\$ : IF LEN(\$)=0 THEN 5530 5360 IF LEN(\$)>12 THEN 5560 5370 \$='DR0:'+\$ 5380 ON ERROR GOTO 5570 5390 ; YEL ' Send: ' \$ 5400 PREPARE \$ AS FILE 2 5410 ; #V24,Ctrlb$ \$;' |ppnad, v{ntar p} rad nr 1' 5420 FOR I=1 TO 2000 5430 INPUT LINE #V24,Radin$ 5440 IF LEFT$(Radin$,2)=Filslut$ THEN 5490 5450 ; #2,Radin$; 5460 Z=FNDelay(100.) 5470 ; #V24,Ctrlb$ '>' 5480 NEXT I 5490 CLOSE 2 5500 INPUT #V24,Radin$ 5510 Z=FNDelay(100.) 5520 ; #V24,'Filen har lagrats som ';\$ 5530 ; #V24,'Vill du s{nda n}gon mer fil? (J/N) ' 5540 INPUT #V24,\$ : \$=FNCtrlh$(\$) 5550 IF (ASCII(\$) AND 223)=74 THEN 5290 5560 RETURN 0 5570 RESUME 5530 5580 RESUME 5560 5590 FNEND 5600 DEF FNMget 5610 ON ERROR GOTO 5890 5620 Z=FNDelay(1000.) 5630 ; #V24,Ctrlb$ 'SYNK' 5640 INPUT #V24,\$ 5650 IF \$='SYNKSVAR' THEN 5660 ELSE 5620 5660 ! Synkroniserad 5670 INPUT #V24,\$ ! Filnamnet 5680 POKE -188,0 5690 IF INSTR(1,\$,'.bac') THEN ; #V24,Ctrlb$;\$;' ej ASCII' : GOTO 5830 5700 IF INSTR(1,\$,'.BAC') THEN ; #V24,Ctrlb$;\$;' ej ASCII' : GOTO 5830 5710 OPEN \$ AS FILE 2 5715 Z=FNDelay(2000.) 5720 ; YEL ' Get: ' \$ : ; #V24,Ctrlb$ 'OPENED' 5730 INPUT #V24,C$ 5740 FOR I=1 TO 10000 5750 INPUT LINE #2,Rad$ 5760 Z=FNDelay(200.) 5770 ; #V24,Ctrlb$ Rad$; 5780 INPUT LINE #V24,C$ 5790 NEXT I 5800 IF ERRCODE=21 THEN ; #V24,Ctrlb$;"Filen "+\$+" finns ej" : GOTO 5830 5810 ; #V24,Ctrlb$ Filslut$ 5820 INPUT #V24,Rad$ 5830 Z=FNDelay(1000.) 5840 IF ERRCODE=34 THEN ; #V24,'Slut p} filen ' \$ 5850 ; #V24,'Vill du ha n}gon mer fil? (J/N) ' 5860 INPUT #V24,\$ : \$=FNCtrlh$(\$) 5870 IF (ASCII(\$) AND 223)=74 THEN 5620 5880 RETURN 0 5890 IF ERRCODE=21 THEN RESUME 5800 5900 IF ERRCODE=34 THEN Z=FNDelay(200.) : RESUME 5810 5910 RESUME 5880 5920 FNEND 5930 DEF FNStora$(\$) LOCAL X$=40,A 5940 FOR J=1 TO LEN(\$) 5950 A=ASCII(RIGHT$(\$,J)) 5960 IF A>95 THEN X$=X$+CHR$(A AND 223) ELSE X$=X$+CHR$(A) 5970 NEXT J 5980 RETURN X$ 5990 FNEND 6000 DEF FNNolltid 6010 IF PEEK(-17)=255 THEN POKE -17,200,12,24,0,0,0,0 ELSE POKE -14,0,0,0 6015 Tid=9 : P}$='p}' 6020 RETURN 0 6030 FNEND 7000 DEF FNTid 7010 Ti$=RIGHT$(TIME$,12) 7020 IF Tid=9 THEN ; TAB(20) YEL 'Tid: ' Ti$ 7025 IF Tid=0 THEN ; 7030 RETURN 0 7040 FNEND 9000 DEF FNDelay(Y.) LOCAL I. 9010 WHILE I.191 AND Pf<200 THEN 10060 10040 IF Pf>207 AND Pf<216 THEN 10070 10050 IF Pf>223 AND Pf<232 THEN 10080 10055 IF Pf>239 AND Pf<248 THEN 10090 ELSE 10990 10060 ON Pf-191 GOTO 10100,10990,10990,10990,10990,10990,10990,10990 10070 GOTO 10990 10080 ON Pf-223 GOTO 12100,12200,10990,12400,12500,13600,10990,12800 10090 ON Pf-239 GOTO 10990,10990,10990,10990,13500,10990,10990,10990 10100 ! inloggning 10110 Z=FNNolltid 10120 ; #V24,Medlemsnr$+CHR$(13)+Password$ : RESUME 10990 ; CHR$(7);RED 'Denna tangent saknar funktion!' : RESUME 11810 ; #V24,Mon$ : RESUME 12100 Z=FNMeny : RESUME 12200 IF Tid=9 THEN Tid=0 : P}$='av' ELSE Tid=9 : P}$='p}' 12220 ; YEL 'Tidfunktionen {r nu ' P}$ : RESUME 12400 ; CYA 'Slava B-datorn! (CTRL-B+"MONITOR")' 12410 ; #V24,Slav$ : RESUME 1140 12500 ; #V24,Ctrlmj$; : ; : RESUME 12800 RESUME 12810 12810 GOTO 1020 13500 ; ' KOM!' 13510 ; #V24,Kom$; : RESUME 13600 Z=FNHardcopy : RESUME 15000 DEF FNHardcopy LOCAL Max,Adress,Teck 15010 PREPARE 'PR:VSA36C72.5' 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 16000 DEF FNCtrlh$(I$) LOCAL I 16010 I=0 16020 In$=I$ 16030 WHILE I