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