{$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.