10 ! ********************************************************************** 11 ! Program KORTVAR2.800 Utg}va 1.0 1983-12-03 12 ! av Bo Kullmar 13 ! Ins{nd av Bo Kullmar, 1789. 14 ! F|r ABC800M ABC800C ABC802 ABC806 15 ! Testad p} ABC806 16 ! Programmet anropas av KORTVAR.800, se detta program. 17 ! ********************************************************************** 18 ! 60 EXTEND : INTEGER 300 DIM Karta$(65:93,-1:9)=1,Var$=160,Kvar$=160,Utfil$=0,Text$=0 1000 ; CHR$(12) DBLE 'Konvetering till korta variabelnamn' : ; : ; 1010 ! Matrisen tilldelas v{rdet "0" 1020 FOR I=65 TO 93 1030 FOR Y=-1 TO 9 1040 Karta$(I,Y)='0' 1050 NEXT Y 1060 NEXT I 1070 ! Kopiering av infilen till utfilen, vilken {ven anv{ndas som arbetsfil 1080 POKE VAROOT(Utfil$),16,0,1,250,PEEK(64000),0 1090 OPEN Utfil$ AS FILE 2 1100 Antvar=FNL{sblock 1110 POKE 65506,0 1120 FOR I=1 TO Antvar 1130 Var$='' 1140 POSIT #2,Liststart. 1150 Pekare.=Liststart. 1160 GET #2,Tecken$ : Tecken=ASCII(Tecken$) 1170 WHILE (Tecken AND 254)<>254 1180 Var$=Var$+Tecken$ 1190 GET #2,Tecken$ : Tecken=ASCII(Tecken$) 1200 WEND 1210 Tvar$=Var$ 1220 Liststart.=POSIT(2) 1230 FOR Y=-1 TO 9 1240 IF Karta$(ASCII(Var$),Y)='0' THEN Kortvar$=FNByt$ : GOTO 1270 1250 NEXT Y 1260 Z=FNFullt : GOTO 1210 1270 POSIT #2,Pekare. 1280 PUT #2,Kortvar$ 1290 NEXT I 1300 POKE VAROOT(Text$),0,1,69,251,0,0 ! DIM Text$=256 1310 Text$='LOAD '+Utfil$+CHR$(13)+'LIST '+Utfil$+CHR$(13)+CHR$(13)+'! Klart!'+CHR$(13,0) 1320 ; 'Autopilot s{ttes f|r att ladda in utfilen och lagra den som en textfil under' 1330 ; 'samma namn. Vill man i st{llet lagra den som en BAC-fil kan detta l{tt {ndras' 1340 ; 'genom att man l{gger till LOAD och SAVE p} textfilen i str{ngen Text$.' 1350 ; 'N{r programmet avslutas s} finns utfilen i minnet!' 1360 ; : ; 1370 Z=CALL(64258) 1380 END 2000 DEF FNByt$ LOCAL Kortvar$=200,L{ngd 2010 Karta$(ASCII(Var$),Y)='1' 2020 IF Y=-1 THEN Kortvar$=CHR$(ASCII(Var$)) ELSE Kortvar$=CHR$(ASCII(Var$))+NUM$(Y) 2025 L{ngd=LEN(Var$)-LEN(Kortvar$) 2027 Kortvar$=Kortvar$+STRING$(L{ngd,254) 2030 RETURN Kortvar$ 2040 FNEND 3000 DEF FNFullt 3001 ; 'Hej' 3005 ; 'Variabel: ' Tvar$ 3010 ; 'Alla variabler som b|rjar p} ' LEFT$(Var$,1) ' {r upptagna!' 3020 ; 'Ange en ny bokstav som varibalen skall f} i st{llet. Ev siffra till' 3030 ; 'variabeln tilldelas automatiskt.' 3040 INPUT 'Ange en bokstav! 'Svar$ 3050 Svar$=FNStora$(Svar$) 3060 IF ASCII(Svar$)<65 OR ASCII(Svar$)>93 THEN ; RED 'Felaktigt tecken! Det skall vara en bokstav!' : GOTO 3040 3070 MID$(Var$,1,1)=LEFT$(Svar$,1) 3080 RETURN 0 3090 FNEND 5000 DEF FNL{sblock LOCAL Block$=253,Teck1,Teck2,L{ngd.,Antvar 5010 GET #2,Block$ COUNT 253 5020 Teck1=ASCII(MID$(Block$,5,1)) 5030 Teck2=ASCII(MID$(Block$,6,1)) 5040 L{ngd.=FNTal2(Teck1,Teck2) 5045 Eofa.=L{ngd.-2 5050 Teck1=ASCII(MID$(Block$,11,1)) 5060 Teck2=ASCII(MID$(Block$,12,1)) 5070 Antvar=FNTal2(Teck1,Teck2) 5131 POSIT #2,Eofa. 5132 GET #2,Teck$ : Teck1=ASCII(Teck$) : GET #2,Teck$ : Teck2=ASCII(Teck$) 5133 Liststart.=FNTal2(Teck1,Teck2)+Eofa.+5 5140 RETURN Antvar 5150 FNEND 5160 DEF FNTal2(T0,T1)=T1*256+T0 5170 DEF FNStora$(Ord$) 5180 FOR Ii=1 TO LEN(Ord$) 5190 As.=ASCII(MID$(Ord$,Ii,1)) 5200 IF As.>95 AND As.<127 THEN MID$(Ord$,Ii,1)=CHR$(ASCII(MID$(Ord$,Ii,1)) AND 223) 5210 NEXT Ii 5220 RETURN Ord$ 5230 FNEND