comparison simtool/writecmd.c @ 202:3f6f50103dd3

fc-simtool: update-rec-prev separate command eliminated, absorbed into regular update-rec
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 07 Mar 2021 04:06:39 +0000
parents a1aa8ee2da85
children 647267e39c21
comparison
equal deleted inserted replaced
201:fc1635333d81 202:3f6f50103dd3
1 #include <sys/types.h> 1 #include <sys/types.h>
2 #include <stdio.h> 2 #include <stdio.h>
3 #include <stdlib.h> 3 #include <stdlib.h>
4 #include <string.h>
5 #include <strings.h>
4 #include "curfile.h" 6 #include "curfile.h"
5 7
6 cmd_update_bin(argc, argv) 8 cmd_update_bin(argc, argv)
7 char **argv; 9 char **argv;
8 { 10 {
42 } 44 }
43 45
44 cmd_update_rec(argc, argv) 46 cmd_update_rec(argc, argv)
45 char **argv; 47 char **argv;
46 { 48 {
47 unsigned recno; 49 unsigned recno, mode;
48 u_char data[255]; 50 u_char data[255];
49 int rc; 51 int rc;
50 52
51 recno = strtoul(argv[1], 0, 0); 53 if (!strcmp(argv[1], "prev")) {
52 if (recno < 1 || recno > 255) { 54 recno = 0;
53 fprintf(stderr, 55 mode = 0x03;
56 } else {
57 recno = strtoul(argv[1], 0, 0);
58 if (recno < 1 || recno > 255) {
59 fprintf(stderr,
54 "error: record number argument is out of range\n"); 60 "error: record number argument is out of range\n");
55 return(-1); 61 return(-1);
62 }
63 mode = 0x04;
56 } 64 }
57 rc = read_hex_data_file(argv[2], data, 255); 65 rc = read_hex_data_file(argv[2], data, 255);
58 if (rc < 0) 66 if (rc < 0)
59 return(rc); 67 return(rc);
60 if (rc != curfile_record_len) { 68 if (rc != curfile_record_len) {
61 fprintf(stderr, "error: hex data length != EF record length\n"); 69 fprintf(stderr, "error: hex data length != EF record length\n");
62 return(-1); 70 return(-1);
63 } 71 }
64 return update_rec_op(recno, 0x04, data, curfile_record_len); 72 return update_rec_op(recno, mode, data, curfile_record_len);
65 } 73 }
66
67 cmd_update_rec_prev(argc, argv)
68 char **argv;
69 {
70 u_char data[255];
71 int rc;
72
73 rc = read_hex_data_file(argv[1], data, 255);
74 if (rc < 0)
75 return(rc);
76 if (rc != curfile_record_len) {
77 fprintf(stderr, "error: hex data length != EF record length\n");
78 return(-1);
79 }
80 return update_rec_op(0, 0x03, data, curfile_record_len);
81 }