Go to the source code of this file.
|
| struct pdp_11_t * | pdp_new () |
| | Создает новый экземпляр структуры PDP-11.
|
| |
| void | pdp_create (struct pdp_11_t *) |
| | Инициализирует компоненты PDP-11 (память, устройства ввода-вывода, регистры, команды).
|
| |
| void | pdp_destroy (struct pdp_11_t *) |
| | Освобождает ресурсы, связанные с экземпляром PDP-11.
|
| |
| void | b_write (struct pdp_11_t *, const address_byte_t, byte_t) |
| | Записывает байт в память PDP-11.
|
| |
| byte_t | b_read (struct pdp_11_t *, const address_byte_t) |
| | Читает байт из памяти PDP-11.
|
| |
| void | w_write (struct pdp_11_t *, const address_word_t, word_t) |
| | Записывает слово (16 бит) в память PDP-11.
|
| |
| word_t | w_read (struct pdp_11_t *, const address_word_t) |
| | Читает слово (16 бит) из памяти PDP-11.
|
| |
| void | pdp_load_data (struct pdp_11_t *pdp, byte_t *filename) |
| | Загружает данные в PDP-11 из файла или терминала.
|
| |
| void | pdp_mem_dump (struct pdp_11_t *pdp, address_word_t addr, word_t size) |
| | Выводит дамп памяти в форматированном виде.
|
| |
| byte_t * | pdp_parse_filename (int argc, char **argv) |
| | Разбирает аргументы командной строки для поиска имени файла.
|
| |
| word_t * | do_command (struct pdp_11_t *, struct command_t **, const address_word_t) |
| | Выполняет одну машинную команду по указанному адресу.
|
| |
◆ b_read()
Читает байт из памяти PDP-11.
- Parameters
-
| pdp | Указатель на экземпляр PDP-11. |
| addr | Адрес памяти для чтения. |
- Returns
- Прочитанный байт.
93{
96}
byte_t byte_read(struct mem_t *, address_byte_t)
Definition mem.c:89
struct mem_t * memory
Definition pdp_11_p.h:5
unsigned char byte_t
Definition types.h:6
int __is_valid_address(const address_byte_t)
Definition utils.c:13
◆ b_write()
Записывает байт в память PDP-11.
- Parameters
-
| pdp | Указатель на экземпляр PDP-11. |
| addr | Адрес памяти для записи. |
| data | Данные (байт) для записи. |
80{
83}
void byte_write(struct mem_t *, address_byte_t, byte_t)
Definition mem.c:74
◆ do_command()
Выполняет одну машинную команду по указанному адресу.
- Parameters
-
| pdp | Указатель на экземпляр PDP-11. |
| commands | Список доступных команд. |
| addr | Адрес команды для выполнения. |
- Returns
- Указатель на обновленный Program Counter (PC).
191{
194 *ptr_pc = addr;
196
198 word_command =
w_read(pdp, *ptr_pc);
199
201 if ((word_command & commands[i]->mask) == commands[i]->opcode) {
203 (
struct pdp_11_t *) pdp, addr, word_command);
204 flag = 1;
205 break;
206 }
207 }
208
209 if (!flag) {
211 (
struct pdp_11_t *) pdp, addr, word_command);
212 }
213
214 *ptr_pc += 2;
215 return ptr_pc;
216}
byte_t commands_list
Definition command.c:21
word_t w_read(pdp_11_t *pdp, address_word_t addr)
Читает слово (16 бит) из памяти PDP-11.
Definition pdp_11.c:118
void(* do_commands_command)(struct pdp_11_t *, address_word_t, word_t)
Definition command_p.h:9
word_t * PC
Definition pdp_11_p.h:16
unsigned short int word_t
Definition types.h:7
◆ pdp_create()
Инициализирует компоненты PDP-11 (память, устройства ввода-вывода, регистры, команды).
- Parameters
-
| pdp | Указатель на экземпляр PDP-11. |
38{
43
48
53}
struct command_t * command_new()
Definition command.c:24
void command_create(struct command_t **)
Definition command.c:32
void dev_io_create(struct dev_io_t *)
Definition device_io.c:19
struct dev_io_t * dev_io_new()
Definition device_io.c:12
void mem_create(struct mem_t *)
Definition mem.c:18
struct mem_t * mem_new()
Definition mem.c:12
void reg_create(struct pdp_11_t *, struct reg_t *)
Definition register.c:16
struct reg_t * register_new()
Definition register.c:10
Definition device_io_p.h:9
struct reg_t * regist
Definition pdp_11_p.h:7
struct dev_io_t * device_io
Definition pdp_11_p.h:6
struct command_t ** command
Definition pdp_11_p.h:8
Definition register_p.h:2
◆ pdp_destroy()
Освобождает ресурсы, связанные с экземпляром PDP-11.
- Parameters
-
| pdp | Указатель на экземпляр PDP-11 для уничтожения. |
61{
70}
void command_destroy(struct command_t **)
Definition command.c:43
void dev_io_destroy(struct dev_io_t *)
Definition device_io.c:25
void mem_destroy(struct mem_t *)
Definition mem.c:34
void reg_destroy(struct pdp_11_t *)
Definition register.c:39
◆ pdp_load_data()
Загружает данные в PDP-11 из файла или терминала.
- Parameters
-
| pdp | Указатель на экземпляр PDP-11. |
| filename | Путь к файлу (если NULL, чтение из терминала). |
131{
135}
void dev_io_load_data(struct pdp_11_t *, struct dev_io_t *, byte_t *)
Definition device_io.c:33
◆ pdp_mem_dump()
Выводит дамп памяти в форматированном виде.
- Parameters
-
| pdp | Указатель на экземпляр PDP-11. |
| addr | Начальный адрес. |
| size | Количество байт для вывода. |
145{
147}
void dev_io_mem_dump(struct pdp_11_t *, address_word_t, word_t)
Definition device_io.c:43
◆ pdp_new()
Создает новый экземпляр структуры PDP-11.
- Returns
- Указатель на выделенную память для pdp_11_t.
◆ pdp_parse_filename()
| byte_t * pdp_parse_filename |
( |
int |
argc, |
|
|
char ** |
argv |
|
) |
| |
Разбирает аргументы командной строки для поиска имени файла.
- Parameters
-
| argc | Количество аргументов. |
| argv | Массив строк аргументов. |
- Returns
- Указатель на имя файла или 0, если файл не найден/не указан.
157{
158 if (1 == argc) {
161 }
162 if (2 == argc) {
163 if (!strcmp("-d", argv[1])) {
165 }
166 }
167 if (3 <= argc) {
168 for (int i = 0; i < argc; i++) {
169 if (!strcmp("-t", argv[i])) {
170 for (int j = (i + 1); j < argc; j++) {
171 if (strlen(argv[j]) > 4) {
172 return (
byte_t *) argv[j];
173 }
174 }
175 }
176 }
177 }
178 assert(!argv[0]);
179 exit(1);
180}
void usage(const byte_t *progname)
Definition utils.c:24
◆ w_read()
Читает слово (16 бит) из памяти PDP-11.
- Parameters
-
| pdp | Указатель на экземпляр PDP-11. |
| addr | Адрес памяти для чтения. |
- Returns
- Прочитанное слово.
119{
122}
word_t word_read(struct mem_t *, address_word_t)
Definition mem.c:117
◆ w_write()
Записывает слово (16 бит) в память PDP-11.
- Parameters
-
| pdp | Указатель на экземпляр PDP-11. |
| addr | Адрес памяти для записи. |
| data | Данные (слово) для записи. |
106{
109}
void word_write(struct mem_t *, address_word_t, word_t)
Definition mem.c:103