home *** CD-ROM | disk | FTP | other *** search
/ PC Elektro 1 / PC-Elektro-cd1.bin / EPROMEMU / EPROMEMU.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-06-24  |  3.6 KB  |  111 lines

  1. PROGRAM eprom_emulator;
  2.  
  3. USES crt;
  4.  
  5. CONST eprom_size = 8191;     { EPROM size - 1 = max adress }
  6.  
  7. TYPE memar = array[0..eprom_size] of byte;
  8.  
  9. VAR filename : string;
  10.     filen    : FILE OF byte;
  11.     blok     : memar ABSOLUTE $D800:$0000;
  12.     s        : char;
  13.     stop     : boolean;
  14.  
  15.  
  16. PROCEDURE upload;
  17.  
  18. VAR i     : integer;
  19.     m     : memar;
  20.     s     : char;
  21.  
  22. BEGIN
  23.     clrscr;
  24.     assign(filen,filename+'.pc');
  25.  
  26.     writeln('Reading file ',filename,'.epr.');
  27.     reset(filen);                                 { open file for reading }
  28.     FOR i := 0 TO eprom_size DO read(filen,m[i]);        { read from disk }
  29.     close(filen);                                            { close file }
  30.  
  31.     writeln('Uploading data to EPROM emulator...');
  32.     port[$340] := 3;                           { enable acces to emulator }
  33.     FOR i := 0 TO eprom_size DO blok[i] := m[i];       { copy to emulator }
  34.     port[$340] := 0;                          { disable acces to emulator }
  35.     writeln('Done uploading data.');
  36.     writeln('Press any key to return to the menu...');
  37.     REPEAT UNTIL keypressed; s:=readkey;
  38. END;
  39.  
  40. PROCEDURE download;
  41.  
  42. VAR i     : integer;
  43.     m     : memar;
  44.     s     : char;
  45.  
  46. BEGIN
  47.     clrscr;
  48.     assign(filen,filename+'.epr');
  49.  
  50.     writeln('Downloading data from EPROM emulator...');
  51.     port[$340] := 3;                           { enable acces to emulator }
  52.     FOR i := 0 TO eprom_size DO m[i] := blok[i];      { copy to PC memory }
  53.     port[$340] := 0;                          { disable acces to emulator }
  54.     writeln('Done downloading data.');
  55.  
  56.     writeln('Writing to file ',filename,' .');
  57.     rewrite(filen);                               { open file for reading }
  58.     FOR i := 0 TO eprom_size DO write(filen,m[i]);        { write to disk }
  59.     close(filen);                                            { close file }
  60.  
  61.  
  62.     writeln('Press any key to return to the menu...');
  63.     REPEAT UNTIL keypressed; s:=readkey;
  64. END;
  65.  
  66.  
  67.  
  68. BEGIN
  69. clrscr;
  70. writeln('Je moet kaal (dus zonder EMM386 en HIMEM) opgestart zijn om de');
  71. writeln('te kunnen gebruiken !!!');
  72. writeln;
  73. REPEAT UNTIL keypressed; s:=readkey;
  74.  
  75. IF (paramcount = 1) THEN filename := paramstr(1)
  76.                     ELSE BEGIN
  77.                             writeln('Default extensions: .epr for data from EPROM to file.');
  78.                             writeln('                    .pc  for data from file to EPROM.');
  79.                             writeln;
  80.                             write('Hex filename (no extension) :  ');
  81.                             readln(filename);
  82.                          END;
  83.  
  84. stop:=FALSE;
  85. REPEAT
  86.     clrscr;
  87.     writeln;writeln;
  88.     writeln('Choose :');
  89.     writeln;writeln;
  90.     writeln('      1.  Write / Upload To emulator.');
  91.     writeln('      2.  Read / Download From emulator.');
  92.     writeln('      3.  Quit.');
  93.     s:=readkey;
  94.     CASE s OF
  95.       '1','u','U','w','W','t','T'   : upload;
  96.       '2','d','D','r','R','f','F'   : download;
  97.       '3','q','Q','e','E',       { all known ways to end a program; if you know }
  98.       chr(27),chr(45),chr(79),   { any other not listed here, please contact    }
  99.       chr(68),chr(17)            { SW-tronics, Calslaan 3-102, 7522-MH,         }
  100.                                  { Enschede, The Netherlands or Email to        }
  101.                                  { s.wieman@student.utwente.nl                  }
  102.                                  { NB. F7 will not be implemented because of    }
  103.                                  { strictly personal reasons.                   }
  104.                                     : stop := TRUE;
  105.     END; {CASE}
  106. UNTIL stop;
  107.  
  108.  
  109. END.
  110.  
  111.