Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PX-8 ROM generator 2/3: PXROM.PAS

31 views
Skip to first unread message

CP/M lives!

unread,
Jul 23, 1992, 1:58:39 PM7/23/92
to
{$U+}
Program Argh( Input, Output, InFile, ROMFile );
Label 1, 2, 3, 4, 5, 999;

Var
Buffer : Array [ 0..127 ] of Byte;
InFile, ROMFile : File;

Procedure Read_ROM( Block_Number : Integer; Var Buffer );
Begin
Seek( ROMFile, Block_Number );
BlockRead( ROMFile, Buffer, 1 );
End;

Procedure Write_ROM( Block_Number : Integer; Var Buffer );
Begin
Seek( ROMFile, Block_Number );
BlockWrite( ROMFile, Buffer, 1 );
End;

{$I PXFS.PAS}

Procedure Init_ROM( Blocks : Integer );
Begin
FillChar( Buffer, 128, $FF );
Seek( ROMFile, 0 );
While( Blocks > 0 ) Do
Begin
BlockWrite( ROMFile, Buffer, 1 );
Blocks := Blocks - 1;
End;
End;

Type
File_Name = String[ 14 ];

Var
ROM_FCB : Memory_FCB;
Blocks : Integer;
X : Char;
Name : File_Name;

Procedure Build_FCB( Name : File_Name; Var FCB : Memory_FCB );
Label 1, 2, 3, 4, 5, 6, 7, 8, 999;
Var
NIX, FIX : Integer;

Begin

1:
NIX := 1;
Goto 2;

2:
FCB.DRV := 0;
FCB.EX := 0;
For FIX := 0 to 10 do
FCB.NAME[ FIX ] := ' ';
FIX := 0;

3:
If( NIX > Ord( Name[ 0 ] ) ) Then Goto 999;
Goto 4;

4:
If( Name[ NIX ] = ':' ) Then goto 5;
If( Name[ NIX ] = '.' ) Then Goto 6;
Goto 7;

5:
NIX := NIX + 1;
Goto 2;

6:
NIX := NIX + 1;
For FIX := 8 to 10 do
FCB.NAME[ FIX ] := ' ';
FIX := 8;
Goto 3;

7:
If( FIX > 10 ) Then Goto 999;
Goto 8;

8:
FCB.NAME[ FIX ] := Name[ NIX ];
FIX := FIX + 1;
NIX := NIX + 1;
Goto 3;

999:
End;

Procedure Copy_File( Name : File_Name );
Label 1, 2, 3, 4, 5, 6, 999;
Var
Recs_Read : Integer;

Begin

1:
Assign( InFile, Name );
Reset( InFile );
Assign( ROMFile, 'ROM.DAT' );
Reset( ROMFile );
Goto 2;

2:
Build_FCB( Name, ROM_FCB );
If( Make_File( ROM_FCB ) ) Then Goto 3;
Goto 6;

3:
BlockRead( InFile, Buffer, 1, Recs_Read );
If( Recs_Read = 0 ) Then Goto 5;
Goto 4;

4:
If( Write_Sequential( ROM_FCB, Buffer ) ) Then Goto 3;
Goto 5;

5:
Close_File( ROM_FCB );
Goto 6;

6:
Close( ROMFile );
Close( InFile );
Goto 999;

999:
End;

Begin

Writeln( 'EPSON Geneva EPROM generator' );
1:
Write('PXRom> ');
Read( KBD, X );
If( ( X = 'I' ) or ( X = 'i' ) ) Then Goto 2;
If( X = Chr( 26 ) ) Then Goto 3;
IF( ( X = 'C' ) or ( X = 'c' ) ) Then Goto 4;
Goto 5;

2:
Write('Init. Kbytes? ');
Readln( Blocks );
Assign( ROMFile, 'ROM.DAT' );
Rewrite( ROMFile );
Write( 'Initializing...' );
Init_ROM( Blocks * 8 );
Write( 'Zeroing...');
Zero_Directory( Blocks * 8, 32 );
Writeln;
Goto 1;

3:
Writeln( '*EXIT*' );
Goto 999;

4:
Write('Copy file ');
Readln( Name );
Copy_File( Name );
Goto 1;

5:
Writeln( '?' );
Goto 1;

999:
End.

0 new messages