10 REM DOSCREEN 15 REM Program av Gunnar Tidner 1982-06-23 20 DIM B$=768 30 ; CHR$(12);"Detta program l{gger screens p} DR0:" 40 ; "S{tt en ny formaterad skiva i DR0:" 50 ; "eller tidigare Forth systemskiva" 60 ; "Tryck tangent!" : GET C$ 70 ; CHR$(7,12);"VARNING!" 80 ; "Andra filer kan komma att tas bort och" 90 ; "{ldre screens med samma nr skrivs |ver!" 100 ; "[r det klart?"; : GET C$ : ; C$ : IF INSTR(1%,'jJ',C$)=0% THEN 100 110 ; "Finns redan directory med tillr{cklig plats?"; : GET C$ : ; C$ 120 IF INSTR(1%,'jJ',C$) THEN 450 130 P%=62720 140 POKE -767%,0% 150 Z%=CALL(24678%,32%*7%) : REM L{s sektor 0,7 160 POKE P%+239%,2% 170 ONERRORGOTO 180 180 ; "Ange h|gsta m|jliga Screen-nummer /75/:"; : INPUT F$ 190 IF LEN(F$) THEN M%=VAL(F$) ELSE M%=75 200 M%=M%*3%+1% : ; "Reserverar";M%;" sektorer i filen" 210 ; "'Forthscr.een' p} DR0:" 220 L%=M%/8% : R%=M%-8%*L% 230 FOR I%=1% TO L% 240 POKE P%+2%+I%,255% 250 NEXT I% 260 POKE P%+3%+L%,256%-2%^(8%-R%) 270 Z%=CALL(24675%,32%*6%) : REM Fixat bitkartan i 0,6 280 FOR I%=0% TO 15% 290 POKE P%+I%,0% 300 NEXT I% 310 POKE P%+16%,3,3,0,0,70,111,114,116,104,115,99,114,101,101,110 320 FOR I%=31% TO 255% 330 POKE P%+I%,255% 340 NEXT I% 350 Z%=CALL(24675,32%*8%) : REM Fixat Filnamn i 1,0 360 Z%=CALL(24675,32%*16%) : REM Fixat Filnamn i 2,0 370 Z%=CALL(24678,32*6) : REM L{s fixad bitkarta 380 L%=M%/32% : R%=M%-32%*L% 390 POKE P%,16,0,0,255 400 FOR I%=1% TO L% 410 POKE P%+2%+2%*I%,4%*I%-1%,31 420 NEXT I% 430 IF R% THEN POKE P%+4%+2%*L%,4%*L%+3%,R%-1%,255,255 ELSE POKE P%+4%+2%*L%,255,255 440 Z%=CALL(24675%,32%*24%) : REM Fixat Header i 3,0 450 REM ***** Directoryt fixat ***** 460 B$=SPACE$(256%) : REM Fyll med blanka 470 DEFFNS%(X%)=PEEK(X%)+256*PEEK(X%+1%) 480 A%=FNS%(65065%)+6% : POKE A%,0%,247% 490 ; "L{s Screens fr}n textfil i drive 1" 500 ; "Filnamn:"; : INPUT F$ 510 OPEN "DR1:"+F$ ASFILE 1 520 INPUTLINE #1,A$ : A$=LEFT$(A$,LEN(A$)-2%) 530 IF ASC(A$)=35% THEN S%=VAL(RIGHT$(A$,2%)) 540 ; "L{gger screens p} disketten i DR0:" 550 FOR I%=1% TO 100% 560 ; '#';S% 570 S1%=S%*3%+22% : REM S%=Screen nr 580 GOSUB 660 590 POKE -767%,0 600 FOR J%=0% TO 2% 610 POKE -750%,0%,247%+J% 620 Z%=CALL(24675%,32%*(S1%+J%)) 630 NEXT J% 640 IF ERRCODE=34 THEN POKE -750%,0%,245% : END 650 NEXT I% 660 REM Make B$ 670 ONERRORGOTO 760 680 POKE -767%,1% 690 POKE -750%,0%,245% 700 B$="" 710 FOR J%=1 TO 22% 720 INPUTLINE #1,A$ : A$=LEFT$(A$,LEN(A$)-2%) 730 IF ASC(A$)=35% THEN S%=VAL(RIGHT$(A$,2%)) : GOTO 760 740 B$=B$+A$+SPACE$(36%-LEN(A$)) 750 NEXT J% 760 B$=B$+SPACE$(768%-LEN(B$)) 770 RETURN