1 REM Ins{nd av: Kristoffer Eriksson <5357> 1988-02-15 22.39.27 (WRITE) 10 ! save MERMINNE, 880215 20 ! Krymper antal dosbuffertar, och |verf|r dem till fritt arbetsminne. 30 ! Experimentell version. Programmets funktion garanteras EJ! 40 ! Inga residenta program f}r vara laddade i |vre delen av minnet vid k|rning 50 ! av detta program, vilket bl a innefattar alla .REL-program. 60 ! Av Kristoffer Eriksson, f|r ABC800-serien. 70 ! 80 ! Normal minneskarta: 90 ! 62720-... Dosbuffertar 100 ! 62680-62719 L{nkar i enhetslista och instruktionslista f|r optionsprommet 110 ! (65500)-62679 Optionsprommets dataarea (ca 220 bytes) 120 ! (Y.TOP)- (Y.CMDSP)-1 Kommandostacken. (Y.CMDSP)=(65500). 130 ! (Y.BOTM)-(Y.TOP) Tillg{ngligt minne, storlek SYS(2). 140 ! 150 INTEGER 160 ! Antal dosbuffertar som ska bort. Totalt finns 8, minst 1 m}ste vara kvar. 170 ! Varje dosbuffert ger 256 bytes. 180 N=4 190 ! 200 IF PEEK2(65500)<>PEEK2(65302) THEN ; "Residenta rutiner laddade!" : STOP 210 B=N*256 ! Antal bytes 220 A=253-PEEK(64787)-N 230 IF A<1 THEN ; "F|r f} dosbuffertar kvar!" : STOP 240 ; A "dosbuffertar kvar." 250 ! 260 P=SWAP%(PEEK(64787)) ! Startadress f|r dosbuffertar 270 POKE 64787,PEEK(64787)+N 280 ! Upptagetmarkera |verblivna dosbuffertar. 290 FOR I=0 TO N-1 300 POKE 64945-I*16,0 310 NEXT I 320 ! 330 ! Flytta upp vissa listl{nkar tillh|riga optionsprommet. 340 FOR I=P-40 TO P-1 350 POKE I+B,PEEK(I) 360 NEXT I 370 L=65403 : GOSUB 530 ! Justera DEVTBA 380 L=65405 : GOSUB 530 ! Justera STMTBA 390 L=65407 : GOSUB 530 ! Justera FNKTBA 400 ! 410 P=PEEK2(65500) ! Optionsprommets area 420 POKE 65500,P+B,SWAP%(P+B) 430 POKE P+B,PEEK(P),PEEK(P+1) ! Optionsprommets versionsnr 440 ! Nollst{ll arean 450 FOR I=P+B+2 TO P+B+219 460 POKE I,0 470 NEXT I 480 POKE 65302,P+B,SWAP%(P+B) ! H|j Y.CMDSP kommandostackpekaren 490 POKE 65294,P+B-630,SWAP%(P+B-630) ! H|j Y.TOP, inkl INPUT-bufferten 500 CHAIN "NUL:" ! Justera |vriga pekare 510 ! 520 ! H|j pekare till flyttade listl{nkar 530 WHILE L<>0 540 L2=PEEK2(L) 550 IF L2>=P-40 AND L2