Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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 на 0

ccc Выставление всех флагов на 0
cln Выставление флага N на 0
clz Выставление флага Z на 0
clv Выставление флага V на 0
clc Выставление флага C на 0

scc Выставление всех флагов на 1
sen Выставление флага N на 1
sez Выставление флага Z на 1
sev Выставление флага V на 1
sec Выставление флага C на 1

br 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 = 1

halt Остановка программы
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-lvl

File:
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))