10 ! ********************************************************************** 11 ! Program KORTVAR.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 {ndra ett BASIC II programs globala variabler till korta dito 17 ! ********************************************************************** 18 ! 50 ON ERROR GOTO 4000 60 EXTEND : INTEGER 300 DIM Text$=0,Utfil$=0 700 POKE -1280,69,251,42,145,255,34,44,251,33,21,251,34,145,255 710 POKE -1266,42,0,251,34,42,251,201,229,42,42,251,126,35 720 POKE -1253,34,42,251,225,167,192,229,42,44,251,34,145,255 730 POKE -1240,227,201,0,251,0,0 1000 ; CHR$(12) DBLE 'Konvetering till korta variabelnamn' : ; : ; 1010 ; 'OBS eftersom programmet laddar och listar filer i textformat, s} m}ste det i' 1020 ; 'infilen finnas FLOAT eller INTEGER och EXTEND annars g}r programmet snettt!' 1030 ; 'Endast globala variabler {ndras, lokal variabel m}ste g|ras globala genom' 1040 ; 'att REM/! s{ttes f|re LOCAL i en funktion f|r att dessa namn skall {ndras' 1050 ; 'automatiskt.' 1060 ; 'Autopilot s{ttes f|r att ladda infilen, se till s} att variabellistan' 1070 ; '{r intakt och lagra infilen som en utfil i BAC-format. Sedan anropas KORTVAR.BAC' 1080 POKE VAROOT(Utfil$),16,0,1,250,0,0 1090 Enh$=FNRunenh$ : ; : ; 1100 INPUT 'Infil? 'Infil$ 1110 INPUT 'Utfil? 'Utfil$ 1120 Infil$=FNStora$(Infil$) 1130 Utfil$=FNStora$(Utfil$) 1140 L{ngd=LEN(Utfil$) 1150 POKE 64000,L{ngd 1160 ! Kopiering av infilen till utfilen, vilken {ven anv{ndas som arbetsfil 1170 OPEN Infil$ AS FILE 1 1180 CLOSE 1190 POKE VAROOT(Text$),0,1,69,251,0,0 ! DIM Text$=256 1200 Text$='LOAD '+Infil$+CHR$(13)+'LIST '+Utfil$+CHR$(13)+'LOAD '+Utfil$+CHR$(13) 1210 Text$=Text$+'SAVE '+Utfil$+CHR$(13)+'RUN '+Enh$+'KORTVAR2.BAC'+CHR$(13,0) 1220 ; : ; 1230 Z=CALL(64258) 1240 END 2000 DEF FNStora$(Ord$) 2010 FOR Ii=1 TO LEN(Ord$) 2020 As.=ASCII(MID$(Ord$,Ii,1)) 2030 IF As.>95 AND As.<127 THEN MID$(Ord$,Ii,1)=CHR$(ASCII(MID$(Ord$,Ii,1)) AND 223) 2040 NEXT Ii 2050 RETURN Ord$ 2060 FNEND 3000 DEF FNRunenh$ LOCAL Drive,Adrenhl,Enh$=4,Dselect 3010 Drive=PEEK(64769) 3020 Adrenhl=PEEK2(SYS(10)+123) 3030 WHILE Adrenhl<>0 3040 Enh$=CHR$(PEEK(Adrenhl+2),PEEK(Adrenhl+3),PEEK(Adrenhl+4),58) 3050 Dselect=PEEK(Adrenhl+7) 3060 IF Drive=Dselect THEN RETURN Enh$ 3070 Adrenhl=PEEK2(Adrenhl) 3080 I=I+1 3090 WEND 3100 FNEND 4000 IF ERRCODE=21 THEN ; RED 'Infilen saknas!' : RESUME 1070 4010 ; RED 'Fel nr' ERRCODE 4020 END