2 ! ********************************************************************** 3 ! Program VIRTUELL.BAS Utg}va 1.1 1983-07-21 4 ! av Bo Kullmar 5 ! Ins{nd av Bo Kullmar 6 ! F|r ABC800M ABC800C ABC802 ABC806 8 ! Testad p} ABC806 9 ! Huvudprogram med ett exempel p} en subrutin, som anropas in medan huvud 10 ! programmet finns kvar i minnet. Subrutinen finns i programmet SUBRUT1. 11 ! F|r att det skall fungera m}te b}de SUBRUT1 lagras i BAC-format. 12 ! ********************************************************************** 60 INTEGER : EXTEND : OPTION BASE 0 1000 COMMON Bofa,Eofa,Top 1010 ; CHR$(12) 1020 Z=FNList 1030 ; : ; 1040 ; 'Tryck f|r |verg}ng till subrutinen! '; : GET \$ 1050 Z=FNSub('SUBRUT1.BAC') 2000 DEF FNSub(Subfil$) LOCAL T.,Tal 2010 Bofa=SYS(11) : Eofa=PEEK2(-248) 2020 Top=PEEK2(-242) 2030 T.=(Bofa+65536.)-(Eofa+65536.) 2040 IF SGN(T.)=-1 THEN Tal=Bofa-1 ELSE Tal=Eofa+1 2050 POKE -242,Tal,SWAP%(Tal) 2060 CHAIN Subfil$ 2070 FNEND 3000 DEF FNList LOCAL Par$=20,Par 3010 Par$='1-1050'+CHR$(13) 3020 Par=VARPTR(Par$) 3030 POKE 65512,213,33,Par,SWAP%(Par),201 3040 Z=CALL(65512,FNListadr) 3050 RETURN 0 3060 FNEND 10000 DEF FNListadr LOCAL Adr,Tolk$=0 10010 POKE VAROOT(Tolk$),0,96,0,0,0,96 10020 Adr=INSTR(1,Tolk$,"UNSAVE") 10030 Adr=INSTR(Adr,Tolk$,CHR$(255))+VARPTR(Tolk$) 10040 ! RUN = Adr, LOAD = Adr + 4, SAVE = Adr + 22 osv 10050 RETURN PEEK2(Adr+8) 10060 FNEND