PROGRAM LOCOSCRIPT_KONVERTIERUNG; (* LOCOCONZ.PAS *) (* Version 2.03 (c) W.Otternberg *) CONST CursorAus = #27#102; CursorEin = #27#101; Pufferbloecke = 17; Puffergroesse = 2176; {17 Bloecke mit je 128 byte} MaxDir = 64; TYPE Zeile = string[90]; MiniString = string[6]; VAR Puffer : Array[0..Puffergroesse] OF byte; LayoutTabelle : Array[0..10,0..5] OF byte; CodeTabelle : Array[0..3,0..9] OF MiniString; DirFeld : Array[1..MaxDir] OF string[17]; Zieldatei : text; Quelldatei : file; Quelldateiname, Zieldateiname : string[15]; SIOWahl, PTRWahl, Druckertyp, User, StartBlock, BloeckeEin, ErsteSeite, LetzteSeite, VonSeite, BisSeite, LiRand, Kopfteil, Dirzahl,Pause, i,n,m : integer; DriveNr : byte; DirGelesen, FormatGeaendert, DateiVorhanden : boolean; Laufwerk, KonvWahl, Eingabe, MitRand, Hauptmodus, Ausgabemodus,c : char; {$I LOCO1Z.INC } {$I LOCO2Z.INC } {$I LOCO3Z.INC } PROCEDURE Ausgabe; BEGIN REPEAT ClrScr; write(CursorAus); Menuebild('A U S G A B E - M E N U E', 'Die Ausgabe soll erfolgen auf :', 'B = Bildschirm P = Printer/JOYCE-Drucker', 'S = SIO-Schnittstelle C = CENTRONICS-Schnittstelle', 'D = Diskette', '', 'K = zum Konvert-Menue Z = zur Zeiteinstellung', 'F = zum Format-Menue', 'X = zum Haupt-Menue / neue Datei bearbeiten'); gotoxy(5,29); write('Bezugslaufwerk: ',chr(DriveNr+65)); gotoxy(55,29); write('User: ',User); gotoxy(68,29); write('Datei: ',Quelldateiname); read(KBD,Eingabe); Ausgabemodus:=upcase(Eingabe); write(CursorEin); CASE Ausgabemodus OF 'B' : assign(Zieldatei,'CON:'); 'P' : BEGIN assign(Zieldatei,'LST:'); Druckertyp:=PTRWahl; END; 'S', 'C' : BEGIN IF Ausgabemodus='C' THEN MEM[$FBC5]:=$10 ELSE MEM[$FBC5]:=$20; assign(Zieldatei,'AUX:'); Druckertyp:=SIOWahl; END; 'D' : BEGIN BDOS(32,0); {User=0} ZieldateinameHolen; assign(Zieldatei,Zieldateiname); {$I-} rewrite(Zieldatei); {$I+} IF IOresult<>0 THEN EXIT; END; 'K' : KonvertMenue; 'F' : FormatWahl; 'Z' : BEGIN ClrScr; Kasten(13,5,64,8); gotoxy(22,7); write('Verzoegerungszeit bei der Ausgabe (0 .... 200)'); gotoxy(29,9); write('bisher: ',Pause,' jetzt: '); readln(Pause); END; END; IF Ausgabemodus IN ['B','P','S','C','D'] THEN IF Hauptmodus='L' THEN LocoDateiBearbeiten ELSE ASCIIDateiBearbeiten; UNTIL Ausgabemodus='X'; END; {Ausgabe} BEGIN {LOCOCON} Anfang; Laufwerk:='A'; Quelldateiname:=''; FormatGeaendert:=False; KonvWahl:='A'; MitRand:='J'; DirGelesen:=False; Pause:=2; FormatdateiEinlesen; REPEAT ClrScr; write(CursorAus); Menuebild('H A U P T - M E N U E ', '', ' L = LOCOSCRIPT-Datei bearbeiten', ' A = ASCII-Datei bearbeiten', ' D = Disketten- oder Laufwerkswechsel', ' K = Konvertierungs-Menue', ' F = Format-Menue fuer Drucker und SIO/CEN', ' S = Steuerzeichen-Sequenzen aendern', ' E = Programm beenden'); gotoxy(5,29); write('Bezugslaufwerk: ',Laufwerk); read(KBD,Eingabe); write(CursorEin); Hauptmodus:=upcase(Eingabe); CASE Hauptmodus OF 'L' : BEGIN IF DirGelesen=False THEN DirectoryLesen; IF QuelldateinameHolen THEN BEGIN QuelldateiOeffnen; IF DateiVorhanden THEN IF LocoVorhanden THEN BEGIN close(Quelldatei); Ausgabe; END; END; END; 'A' : BEGIN IF DirGelesen=False THEN DirectoryLesen; IF QuelldateinameHolen THEN Ausgabe; END; 'D' : DirectoryLesen; 'K' : KonvertMenue; 'F' : FormatWahl; 'S' : SteuerzeichenAendern; END; UNTIL Hauptmodus='E'; BDOS(32,0); {User = 0} IF FormatGeaendert THEN FormatdateiSpeichern; ClrScr; END.