home *** CD-ROM | disk | FTP | other *** search
- PROGRAM CREATEDB; {Create or Modify data base for CROSSPRINT}
- {$R+}
- {$U+}
-
- CONST
- FormFeed= ^L;
- LineFeed= ^J;
- CompPrtOn= #15;
- CompPrtOff= #18;
- ClrEol= #24;
- ClrEos= #17;
- ClrScrn= #26;
- Escape= #27;
-
- TYPE
- CharData= Record
- PinCode: 0..255;
- End; {CharData}
-
- VAR
- Ascii, I, J: Byte;
- Resp: Char;
- K: Integer;
- FontData: File of CharData;
- Ltrs: Array[32..127, 1..20] of Byte;
- Letter: CharData;
- Cursor: String[2];
-
- PROCEDURE GETFONT; {Read data base to create sideways letters}
-
- VAR
- OK: Boolean;
-
- Begin
- Assign(FontData, 'XPRINT.FNT');
- Repeat
- {$I-}
- Reset(FontData);
- {$I+}
- OK:= (IOResult= 0);
- If Not OK Then
- Begin
- Writeln(LineFeed, 'Can''t find ''XPRINT.FNT'' on default drive.':60);
- Write('Press RETURN when ready. ':53);
- Readln(Resp);
- End; {If Not OK}
- Until OK;
- K:= 0;
- For I:= 32 to 127 Do {ASCII values from 32 to 127}
- For J:= 1 to 20 Do {20 bytes per character}
- Begin
- Seek(FontData, K);
- Read(FontData, Letter);
- Ltrs[I,J]:= Letter.PinCode;
- K:= K + 1;
- End; {For J ...}
- Close(FontData);
- End; {Procedure GetFont}
-
- PROCEDURE PUTFONT; {Write data base file: XPRINT.FNT}
-
- Begin
- Assign(FontData, 'XPRINT.FNT');
- Rewrite(FontData);
- K:= 0;
- For I:=32 to 127 Do
- For J:=1 to 20 Do
- Begin
- Letter.PinCode:= Ltrs[I,J];
- Seek(FontData, K);
- Write(FontData, Letter);
- K:= K + 1;
- End; {For J ...}
- Close(FontData);
- End; {PutFont}
-
- PROCEDURE PRINTFONT; {Print XPRINT.FNT}
-
- Begin
- Writeln(Lst, 'CROSSPRINT Data Base':50, LineFeed, LineFeed);
- Write(Lst, CompPrtOn);
- Write(Lst, 'ASCII ':25);
- For J:=1 to 20 Do
- Begin
- Write(Lst, J:4);
- If J= 10 Then Write(Lst, ' ':4);
- End; {For J ...}
- Writeln(Lst, 'Character':12, LineFeed);
-
- For I:=32 to 127 Do
- Begin
- Write(Lst, I:21, ' ');
- For J:= 1 to 20 Do
- Begin
- Write(Lst, Ltrs[I,J]:4);
- If J= 10 Then Write(Lst, ' ':4);
- End; {For J ...}
- If I< 127 Then
- Writeln(Lst, '(':7, CHR(I), ')')
- Else
- Writeln(Lst, '(Del)':11);
- If I= 90 Then Writeln(Lst, FormFeed);
- End; {For I ...}
- Write(Lst, CompPrtOff, FormFeed);
- End; {Procedure PrintFont}
-
- PROCEDURE VIEWFONT; {Write XPRINT.FNT to screen}
-
- Begin
- I:= 32;
- Repeat
- Writeln(ClrScrn, 'CROSSPRINT Data Base':45);
- Write(' ');
- For J:=1 to 20 Do
- Begin
- Write(J:3);
- If J = 10 Then Write(' ':3)
- End; {For J ...}
- Writeln(LineFeed);
-
- Repeat
- Write(I:3);
- For J:= 1 to 20 Do
- Begin
- Write(Ltrs[I,J]:3);
- If J = 10 Then Write(' ':3);
- End; {For J ...}
- Writeln(LineFeed);
- I:= I + 1;
- Until ((I Mod 10 = 0) or (I > 127));
- Write('Press RETURN to continue. ':45);
- Readln(Resp);
- Until I > 127;
- End; {Procedure ViewFont}
-
- PROCEDURE GETCODE; {Get code for ASCII character}
-
- Begin
- Write(Cursor, '( ', ClrEol,
- 'Enter code for ASCII: ', Ascii, ', Character: ', CHR(Ascii));
- For J:= 1 to 20 Do
- Begin
- Repeat
- Write(Cursor, '.', CHR(33+4*(J-1)), ClrEol);
- Readln(Ltrs[Ascii, J]);
- Until Ltrs[I, J] in [0..255];
-
- Write(Cursor, '.', CHR(32+4*(J-1)), ClrEol, Ltrs[Ascii, J]:4);
- End; {For J ...}
- End; {Procedure GetCode}
-
- Begin
- Cursor:= Escape + '=';
- Repeat
- Writeln(ClrScrn, 'Maintain Data Base for CROSSPRINT':50);
- Writeln(Cursor, '&6', 'Create data base.');
- Writeln(Cursor, ')6', 'Modify data base.');
- Writeln(Cursor, ',6', 'Print data base.');
- Writeln(Cursor, '/6', 'View data base.');
- Writeln(Cursor, '26', 'eXit.');
- Repeat
- Write(Cursor, '60', ClrEos, 'Enter your choice (C, M, P, V, X): ');
- Readln(Resp);
- Resp:= UpCase(Resp);
- Until Resp In ['C', 'M', 'P', 'V', 'X'];
- Write(ClrScrn);
-
- Case Resp of
-
- 'C':Begin
- Writeln('Create Data Base':46);
- For I:= 32 to 127 Do
- For J:= 1 to 20 Do
- Ltrs[I, J]:= 0;
-
- Writeln(Cursor, '* ', 'Byte Number':44);
- For J:= 1 to 20 Do
- Write(J:4);
-
- For Ascii:= 32 to 127 Do
- GetCode;
-
- PutFont; {Write XPRINT.FNT file}
- End; {Case 'C'}
-
- 'M':Begin
- Writeln('Modify Existing Data Base':48);
- GetFont;
- Repeat
- Repeat
- Write(Cursor, '# ', ClrEos, Cursor, '6 ',
- 'Enter ASCII value of character to modify (0 to end): ');
- Readln(Ascii);
- Write(Cursor, '6 ', ClrEol);
- Until Ascii in [0, 32..127];
-
- If Ascii > 31 Then
- Begin
- Writeln(Cursor, '* ', 'Byte Number':44);
- For J:= 1 to 20 Do
- Write(J:4);
-
- GetCode;
- End; {If Ascii > 31}
- Until Ascii< 32;
- PutFont; {Write XPRINT.FNT file}
- End; {Case 'M'}
-
- 'P':Begin
- Writeln('Printing CROSSPRINT Data Base':50);
- GetFont;
- PrintFont;
- End; {Case 'P'}
-
- 'V':Begin
- Writeln('View CROSSPRINT Data Base':47);
- GetFont;
- ViewFont;
- End; {Case 'V'}
-
- End; {Case}
- Until UpCase(Resp)= 'X';
- Write(ClrScrn);
- End.