Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/temikfart/pdp11-emulator
16-bit computer emulator from the 70s-80s: PDP-11
https://github.com/temikfart/pdp11-emulator
emulator pdp-11
Last synced: about 1 month ago
JSON representation
16-bit computer emulator from the 70s-80s: PDP-11
- Host: GitHub
- URL: https://github.com/temikfart/pdp11-emulator
- Owner: temikfart
- License: mit
- Created: 2021-02-07T16:15:02.000Z (almost 4 years ago)
- Default Branch: develop
- Last Pushed: 2023-02-01T16:19:04.000Z (almost 2 years ago)
- Last Synced: 2023-06-14T18:53:31.598Z (over 1 year ago)
- Topics: emulator, pdp-11
- Language: C
- Homepage:
- Size: 2.05 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README-RU.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Эмулятор PDP-11
-----------------PDP-11 — это серия 16-разрядных мини-ЭВМ компании DEC, серийно производившихся и продававшихся в 1970-80-х годах.
Наш проект — это эмулятор PDP-11.
В силу ограниченности нашего времени на разработку, мы реализовали лишь часть функций.## Что эмулятор умеет? Какие функции реализованы?
-------------------------------------------------На данный момент в нашем эмуляторе реализована функция загрузки программы,
которая может включать в себя следующие команды:
```
add Сложение
mov Присваивание
movb Побитовое присваивание
cmp Сравнение двух слов без их изменения
cmpb Сравнение двух байтов без их изменения
sob Суммирование массива целых чиселclr Обнуление регистра
tst Тестовая команда выставления флагов N и Z, а V, C на 0
tstb Тестовая команда выставления флагов N и Z, а V, C на 0ccc Выставление всех флагов на 0
cln Выставление флага N на 0
clz Выставление флага Z на 0
clv Выставление флага V на 0
clc Выставление флага C на 0scc Выставление всех флагов на 1
sen Выставление флага N на 1
sez Выставление флага Z на 1
sev Выставление флага V на 1
sec Выставление флага C на 1br Br (Ветвление)
bcc Br, если C = 0
bcs Br, если C = 1
beq Br, если Z = 0
bge Br, если N и V = 0
bgt Br, если Z или (N и V) = 0
bhi Br, если C или Z = 0
ble Br, если Z или (N и V) = 1
blt Br, если N и V = 1
blo Br, если C = 1
bmi Br, если N = 1
bne Br, если Z = 1
bpl Br, если N = 0
bvc Br, если V = 0
bvs Br, если V = 1halt Остановка программы
nop Нет операций
```## Как запустить наш эмулятор?
------------------------------После того как вы скачали весь исходный код эмулятора вам нужно будет запустить его.
Для этого можно использовать командную строку Ubuntu:1. Запустите командную строку Ubuntu;
2. Перейдите в директорию с файлом `pdp11.exe`;
3. Запустите `Makefile` с помощью команды `make`;
4. После компиляции, запустите эмулятор командой `./pdp11.exe`;
5. Вы увидите **USAGE**:
```
USAGE: pdp11.exe [options] [file]Options:
-d set debug print-lvl
-t set trace print-lvlFile:
filepath путь до вашей программы Пример: ../programs/my_pr.o
```
6. Приятного использования.## Как протестировать эмулятор PDP-11?
-------------------------------------->Возможно наши [тесты](https://github.com/tatyderb/pdp11_tests) Вам пригодятся.
Для того, чтобы протестировать на эмуляторе PDP-11 свою программу вам понадобится:
1. Переводчик `as11`, который можно скачать здесь:[Linux](http://acm.mipt.ru/twiki/pub/Cintro/PDPIntro/pdp11em-linux.zip)
[Windows](http://acm.mipt.ru/twiki/pub/Cintro/PDPIntro/pdp11em-win32.rar)
[Mac OS](http://acm.mipt.ru/twiki/pub/Cintro/PDPIntro/mac_exe.zip)
3. Командная строка.Чтобы написать программу, которая будет принята эмулятором вам потребуется:
1. Напишите ваш ассемблер-код в виде текстового файла;
2. Запустите с помощью командной строки переводчик `as11.exe`.
Чтобы создать файл, который будет содержать машинный код для эмулятора PDP-11,
вам нужно ввести следующую команду:
```
>./as11.exe -l [listing] -o [object] [your program][listing] Путь для файла listing *.l Пример: /tests/sum/mytest_sum.l
[object] Путь для объектного файла *.o Пример: /tests/sum/mytest_sum.o
[your program] Ваша программа на ассемблере Пример: /tests/sum/mytest_sumПример:
>./as11.exe -l /tests/sum/mytest_sum.l -o /tests/sum/mytest_sum.o /tests/sum/mytest_sum
... //Мы здесь
|__Folder1
|__Folder2
|__tests
. |__sum
. . |__mytest_sum
. . |__mytest_sum.l
. . |__mytest_sum.o
. |__subtr
. |__div
|__Folder3
```## Разработчики
---------------#### Артём Фартыгин ([temikfart](https://github.com/temikfart))
#### Роман Ганьков ([hankou](https://github.com/hankou-code))
## Наставники
-------------#### Георгий Виноградов ([gvino](https://github.com/gvino))
#### Татьяна Дербышева ([tatyderb](https://github.com/tatyderb))