UNIT portovr; {written by Frank Riemenschneider Postfach 730309 3000 Hannover 71} INTERFACE FUNCTION Speichern(VAR erste; VAR letzte; platz : word; name,datei : string) : boolean; FUNCTION Laden(VAR erste; datei : string) : boolean; IMPLEMENTATION USES dos; FUNCTION Speichern(VAR erste; VAR letzte; platz : word; name,datei : string) : boolean; CONST scan : array[0..64] of byte = ($39,$02,$03,$2B,$05,$06,$07,$0D,$09,$0A, $1B,$1B,$33,$35,$34,$08,$0B,$02,$03,$04, $05,$06,$07,$08,$09,$0A,$34,$33,$29,$0B, $29,$0C,$00,$1E,$30,$2E,$20,$12,$21,$22, $23,$17,$24,$25,$26,$32,$31,$18,$19,$10, $13,$1F,$14,$16,$2F,$11,$2D,$2C,$15,$09, $0C,$0A,$00,$35,$0D); VAR startof,endof,anzahl,zahl,i: word; f : file; help : byte; flag : boolean; BEGIN flag := false; startof := ofs(erste); endof := ofs(letzte); zahl := (endof-startof)+platz; assign(f,datei); rewrite(f,1); IF IOResult = 0 THEN BEGIN blockwrite(f,zahl,2,anzahl); blockwrite(f,erste,zahl,anzahl); close(f); IF ((anzahl = zahl) and (IOResult = 0)) THEN BEGIN flag := true; name := Copy(name,1,15); FOR i:= 1 to length(name) DO BEGIN name[i] := Upcase(name[i]); help := Ord(name[i]); mem[$0040:$001C+2*i] := help; mem[$0040:$001D+2*i] := scan[help-32]; END; help := 2*length(name); memw[$0040:$001E+help] := 13; memw[$0040:$001F+help] := $1C; memw[$0040:$001A] := $1E; memw[$0040:$001C] := $1E+help+2; END; END; Speichern := flag; END; FUNCTION Laden(VAR erste; datei : string) : boolean; VAR anzahl,zahl : word; f : file; flag : boolean; BEGIN flag := false; assign(f,datei); reset(f,1); blockread(f,zahl,2,anzahl); blockread(f,erste,zahl,anzahl); close(f); IF ((IOResult = 0) and (zahl = anzahl)) THEN flag := true; END; BEGIN END.