1 REM Ins{nd av: Kristoffer Eriksson <5357> 1987-05-26 03.06.02 (WRITE) 20 ! DATERAZ - Ett enkelt program f|r datumm{rkning av AZZAM-BAC-program. 30 ! Av Kristoffer Eriksson 40 ! 50 ! Ver / Datum / Sign / Kom 60 ! 1.0 / 870525 / SKE / 70 ! 80 INTEGER : EXTEND : DIM I$=253 90 ! 100 INPUT "Fil att datumm{rka eller titta p}: "Fil$ 110 IF INSTR(1,Fil$,".")=0 THEN Fil$=Fil$+".BAC" 120 OPEN Fil$ AS FILE 1 130 ! 140 GET #1 I$ COUNT 23 150 Basver=ASCII(I$) 160 Prstat=ASCII(RIGHT$(I$,3)) 170 Pgmlen=CVT$%(MID$(I$,5,2)) 180 Kgoto=ASCII(RIGHT$(I$,21)) 190 Relgoto=CVT$%(MID$(I$,22,2)) 200 ! 210 IF Basver<>143 AND Basver<>144 THEN ; "[r inte ett Basic-program." : STOP 220 IF (Prstat AND 1)=0 THEN ; "[r ej k|rklart (Fixed-up)." : STOP 230 IF Kgoto<>129 THEN ; "Inneh}ller ej maskinkod fr}n AZZAM." : STOP 240 ! 250 POSIT #1,22+Relgoto 260 GET #1 I$ 270 IF ASCII(I$)<>203 THEN ; "Inneh}ller ej maskinkod fr}n AZZAM." : STOP 280 GET #1 I$ 290 IF ASCII(I$)=29 THEN ; "Ej m{rkningsbar version av relokeringsrutinen." : STOP 300 ! 310 POSIT #1,23 320 GET #1 I$ 330 IF ASCII(I$)=0 THEN GET #1 I$ COUNT 2 : GET #1 Org$ COUNT CVT$%(I$) 340 ! 350 ; 360 IF LEN(Org$) THEN ; "Nuvarande data:" ELSE ; "Ingen m{rkning." 370 Tidp=0 380 P=1 : WHILE P0 THEN ; MID$(Org$,P+2,L) 410 IF L>=8 IF MID$(Org$,P+2,8)="SKAPTID=" THEN Tidp=P 420 P=P+L+2 430 WEND 440 ; 450 ! 460 WHILE 1 470 INPUT "Ska jag m{rka filen med nuvarande tid? J/N/R "I$ 480 IF I$="" THEN ; "N{h{..." : CLOSE : GOTO 1130 490 IF INSTR(1,"Nn",LEFT$(I$,1)) THEN CLOSE : GOTO 1130 500 IF INSTR(1,"Rr",LEFT$(I$,1)) THEN Ny$="" : GOTO 580 510 IF INSTR(1,"Jj",LEFT$(I$,1))=0 WEND 520 ! 530 Tid$=TIME$ 540 Tid$=MID$(Tid$,3,2)+MID$(Tid$,6,2)+MID$(Tid$,9,2)+MID$(Tid$,12,2)+MID$(Tid$,15,2) 550 Tid$=CVT%$(8+LEN(Tid$))+"SKAPTID="+Tid$ 560 IF Tidp THEN Ny$=LEFT$(Org$,Tidp-1)+Tid$+RIGHT$(Org$,Tidp+2+CVT$%(MID$(Org$,Tidp,2))) ELSE Ny$=Tid$+CVT%$(0) 570 ! 580 Orglen=LEN(Org$)+(3 AND LEN(Org$)>0) 590 Nylen=LEN(Ny$)+(3 AND LEN(Ny$)>0) 600 Slutsektor.=INT(FNUs.(Pgmlen)/253.) 610 L{gst.=INT((23.+FNUs.(Orglen)+252.)/253.) 620 ! 630 WHILE LEN(Ny$)>LEN(Org$) 640 ! F|rl{ng filen. 650 Sektor.=Slutsektor. 660 Sektorlen=FNUs.(Pgmlen)-Slutsektor.*253 670 WHILE Sektor.>=L{gst. 680 POSIT #1,Sektor.*253. : GET #1 I$ COUNT Sektorlen 690 POSIT #1,Sektor.*253.+Nylen-Orglen : PUT #1 I$ 700 Sektor.=Sektor.-1. 710 Sektorlen=253 720 WEND 730 POSIT #1,23+Orglen : GET #1 I$ COUNT L{gst.*253.-23-Orglen 740 POSIT #1,23+Nylen : PUT #1 I$ 750 POSIT #1,21 : PUT #1 CVT%$(Relgoto+Nylen-Orglen) 760 POSIT #1,23 : PUT #1 CHR$(0)+CVT%$(LEN(Ny$)) : PUT #1 Ny$ 770 POSIT #1,4 : PUT #1 CVT%$(Pgmlen+Nylen-Orglen) 780 IF 0 WEND 790 ! 800 WHILE LEN(Ny$)=LEN(Org$) 810 IF LEN(Ny$) THEN POSIT #1,23 : PUT #1 CHR$(0)+CVT%$(LEN(Ny$)) : PUT #1 Ny$ 820 IF 0 WEND 830 ! 840 WHILE LEN(Ny$)0 1210 IF MID$(Fil$,P,1)="/" OR MID$(Fil$,P,1)=":" THEN RETURN LEFT$(Fil$,P) 1220 P=P-1 : WEND 1230 RETURN "" 1240 FNEND