File tree Expand file tree Collapse file tree 2 files changed +23
-4
lines changed Expand file tree Collapse file tree 2 files changed +23
-4
lines changed Original file line number Diff line number Diff line change @@ -113,6 +113,9 @@ extern int get_7track_record (FILE *f, word_t **buffer);
113113extern int get_9track_record (FILE * f , word_t * * buffer );
114114extern void write_7track_record (FILE * f , word_t * buffer , int );
115115extern void write_9track_record (FILE * f , word_t * buffer , int );
116+ extern void write_tape_mark (FILE * f );
117+ extern void write_tape_eof (FILE * f );
118+ extern void write_tape_eot (FILE * f );
116119extern word_t get_core_word (FILE * f );
117120extern void write_core_word (FILE * f , word_t word );
118121extern void read_raw_at (FILE * f , struct pdp10_memory * memory ,
Original file line number Diff line number Diff line change 2121static word_t record [65536 ];
2222static int reclen = 0 ;
2323static int beginning_of_tape = 1 ;
24+ static int marks = 0 ;
2425
2526static int
2627get_byte (FILE * f )
@@ -76,6 +77,11 @@ static void write_reclen (FILE *f, int n)
7677 fputc ((n >> 8 ) & 0377 , f );
7778 fputc ((n >> 16 ) & 0377 , f );
7879 fputc ((n >> 24 ) & 0377 , f );
80+
81+ if (n == 0 )
82+ marks ++ ;
83+ else
84+ marks = 0 ;
7985}
8086
8187int get_9track_record (FILE * f , word_t * * buffer )
@@ -290,11 +296,20 @@ write_tape_mark (FILE *f)
290296 write_tape_record (f , NULL , 0 );
291297}
292298
299+ void
300+ write_tape_eof (FILE * f )
301+ {
302+ int i ;
303+ for (i = marks ; i < 1 ; i ++ )
304+ write_tape_mark (f );
305+ }
306+
293307void
294308write_tape_eot (FILE * f )
295309{
296- write_tape_mark (f );
297- write_tape_mark (f );
310+ int i ;
311+ for (i = marks ; i < 2 ; i ++ )
312+ write_tape_mark (f );
298313}
299314
300315static void
@@ -311,10 +326,10 @@ write_tape_word (FILE *f, word_t word)
311326 {
312327 if (word & (START_RECORD |START_FILE |START_TAPE ))
313328 flush_record (f );
314- if (word & ( START_FILE | START_TAPE ) )
329+ if (word & START_FILE )
315330 write_tape_mark (f );
316331 if (word & START_TAPE )
317- write_tape_mark (f );
332+ write_tape_eot (f );
318333 }
319334 beginning_of_tape = 0 ;
320335
@@ -327,6 +342,7 @@ flush_tape_word (FILE *f)
327342 flush_record (f );
328343 write_tape_eot (f );
329344 beginning_of_tape = 1 ;
345+ marks = 0 ;
330346}
331347
332348struct word_format tape_word_format = {
You can’t perform that action at this time.
0 commit comments