Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-source)

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

Shaos wrote: Ну так это от автора компилируемой программы зависит - если поставил ключевое слово far, то ожидай что будет чуть медленнее, а если хочешь быстрее - не ставь far :)
Но это наверное тут оффтоп :)
Если это компилятор для БК0011, то не оффтоп.
alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

Новая порция багов

Баг 6

в листинге для PDP11 адреса почему то всё-равно идут в hex.

(Это кстати для совместимости с эмулятором b2m)

Баг 7

trap nn - ставит код 1137nn ( вместо 1044nn)

Баг 8

bitmap max 252*200

Баг 9

при make_binary_file "name" листинг не формируется, а не всегда надо make_bk0010_rom "name"
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

alemorf wrote:
Shaos wrote: Ну так это от автора компилируемой программы зависит - если поставил ключевое слово far, то ожидай что будет чуть медленнее, а если хочешь быстрее - не ставь far :)
Но это наверное тут оффтоп :)
Если это компилятор для БК0011, то не оффтоп.
А на БК можно банками щёлкать?
Я тут за главного - если что шлите мыло на me собака shaos точка net
alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

Shaos wrote:
alemorf wrote:Если это компилятор для БК0011, то не оффтоп.
А на БК можно банками щёлкать?
БК-0011М - Руководство системного программиста

http://emuverse.ru/wiki/%D0%91%D0%9A-00 ... 1.8C.D1.8E
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

alemorf wrote:
Shaos wrote:
alemorf wrote:Если это компилятор для БК0011, то не оффтоп.
А на БК можно банками щёлкать?
БК-0011М - Руководство системного программиста

http://emuverse.ru/wiki/%D0%91%D0%9A-00 ... 1.8C.D1.8E
ну круто чо :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

А где бы найти готовые математические функции для PDP11 (БК0010)

Умножение, деление int16, uint16, float, double
Ну и весь math.h для float, double

Должно же быть где то готовое.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

Гугл PDP11 math algorithm или что-то типа этого не помогают? ;)

Я могу порыться в своих PDP-шных бумажных книжках...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Lavr »

Стопроцентно софт для PDP11 есть вкупе с её имеющимися эмуляторами.
К сожалению, у меня сейчас это тематика в архиве.
iLavr
alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

Shaos wrote:Гугл PDP11 math algorithm или что-то типа этого не помогают? ;)
Ну а зачем тогда форум нужен?

Я в первых строках не нашел. Да и брать первое попавшееся не хорошо. Сколько раз я не находил алгоритмы, например архивации, шифрования, рисования и т.п., спустя некотрое время на форумах мне говорили - вот же в 3 раза более быстрый алгоритм!
Shaos wrote:Я могу порыться в своих PDP-шных бумажных книжках...
Да не. Я думал у кого то эти алгоритмы на диске лежат. Он ими 20 лет подряд пользовался.
alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

Выгрузил первый релиз компилятора Си.

Пока в нем многое не прикручено. Оно готово, только не прикручено. Макросы, глобальные переменые и т.п.

Скомпилировал простую демо для БК. Экран неспешно инвертируется XOR-ом свеху-вниз и наоборот.

Image

Код тут:

 

Code: Select all

0001 0000                      		    org 1000h
0002 1000                      		entry:
0003 1000 012706 010000        		    MOV #1000h, SP
0004 1004 000410               		    BR MAIN
0057 1006                      		test:
0057 1006 162706 000002        		    sub #2, SP
0057 100A                      		//9     int a = b;
0057 100A 016666 000000 000002 		    mov 0(SP), 2(SP)
0057 1010 062706 000002        		    add #2, SP
0057 1014 000207               		    ret
0057 1016                      		main:
0057 1016 162706 000006        		    sub #6, SP
0057 101A                      		//14     int16_t o = 1;
0057 101A 012766 000001 000002 		    mov #1, 2(SP)
0057 1020                      		//15     o = o-o;
0057 1020 016600 000002        		    mov 2(SP), R0
0057 1024 166600 000002        		    sub 2(SP), R0
0057 1028 010066 000002        		    mov R0, 2(SP)
0057 102C                      		//17     test(1);
0057 102C 012746 000001        		    mov #1, -(SP)
0057 1030 004727 010006        		    jsr PC, #4102
0057 1034 062706 000002        		    add #2, SP
0057 1038                      		//18     for(;;)
0057 1038                      		//19     {
0057 1038 012766 040000 000004 		    mov #16384, 4(SP)
0057 103E                      		//21 	do
0057 103E                      		//22         {
0057 103E 005066 000006        		    clr 6(SP)
0057 1042                      		//24 	    do {
0057 1042                      		//24 	    do {
0057 1042 017600 000004        		    mov @4(SP), R0
0057 1046 012704 125252        		    mov #43690, R4
0057 104A 074400               		    xor R4, R0
0057 104C 010076 000004        		    mov R0, @4(SP)
0057 1050                      		//26         	a++;
0057 1050 062766 000002 000004 		    add #2, 4(SP)
0057 1056                      		//27 		x++;
0057 1056 005266 000006        		    inc 6(SP)
0057 105A                      		//28 	    } while(x < 32);
0057 105A 022766 000040 000006 		    cmp #32, 6(SP)
0057 1060 101360               		    bhi 01042h
0057 1062                      		//29 	    do {
0057 1062                      		//29 	    do {
0057 1062 017600 000004        		    mov @4(SP), R0
0057 1066 012704 052525        		    mov #21845, R4
0057 106A 074400               		    xor R4, R0
0057 106C 010076 000004        		    mov R0, @4(SP)
0057 1070                      		//31         	a++;
0057 1070 062766 000002 000004 		    add #2, 4(SP)
0057 1076                      		//32 		x++;
0057 1076 005266 000006        		    inc 6(SP)
0057 107A                      		//33 	    } while(x < 64);
0057 107A 022766 000100 000006 		    cmp #64, 6(SP)
0057 1080 101360               		    bhi 01062h
0057 1082                      		//35 	while(a < (uint16_t*)0x8000);
0057 1082 022766 100000 000004 		    cmp #32768, 4(SP)
0057 1088 101332               		    bhi 0103Eh
0057 108A                      		//37         a = (uint16_t*)0x8000;
0057 108A 012766 100000 000004 		    mov #32768, 4(SP)
0057 1090                      		//38 	do
0057 1090                      		//39         {
0057 1090 005066 000006        		    clr 6(SP)
0057 1094                      		//41 	    do {
0057 1094                      		//41 	    do {
0057 1094 162766 000002 000004 		    sub #2, 4(SP)
0057 109A                      		//43         	*a ^= 0xAAAA;
0057 109A 017600 000004        		    mov @4(SP), R0
0057 109E 012704 125252        		    mov #43690, R4
0057 10A2 074400               		    xor R4, R0
0057 10A4 010076 000004        		    mov R0, @4(SP)
0057 10A8                      		//44 		x++;
0057 10A8 005266 000006        		    inc 6(SP)
0057 10AC                      		//45 	    } while(x < 32);
0057 10AC 022766 000040 000006 		    cmp #32, 6(SP)
0057 10B2 101360               		    bhi 01094h
0057 10B4                      		//46 	    do {
0057 10B4                      		//46 	    do {
0057 10B4 162766 000002 000004 		    sub #2, 4(SP)
0057 10BA                      		//48         	*a ^= 0x5555;
0057 10BA 017600 000004        		    mov @4(SP), R0
0057 10BE 012704 052525        		    mov #21845, R4
0057 10C2 074400               		    xor R4, R0
0057 10C4 010076 000004        		    mov R0, @4(SP)
0057 10C8                      		//49 		x++;
0057 10C8 005266 000006        		    inc 6(SP)
0057 10CC                      		//50 	    } while(x < 64);
0057 10CC 022766 000100 000006 		    cmp #64, 6(SP)
0057 10D2 101360               		    bhi 010B4h
0057 10D4                      		//52 	while(a > (uint16_t*)0x4000);
0057 10D4 022766 040000 000004 		    cmp #16384, 4(SP)
0057 10DA 103732               		    blo 01090h
0057 10DC 000655               		    br 01038h
0057 10DE 062706 000006        		    add #6, SP
0057 10E2 000207               		    ret
0058 10E4 

alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

Для отладки компилятора нужно разработать какую нибудь простую игру. Поэтому возникло два вопроса:
1) УКНЦ или БК0010
2) Какую простую игру выбрать?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

Я голосую за БК :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by jdigreze »

Простую игру? Например "Десятка". Игровой алгоритм, по сути, сводится к созданию массива из не зачёркнутых значений, ну, может быть факультативно - к подсказкам.

 Если кто не помнит со студенческой скамьи
Начальный расклад:
123456789
111213141
516171819
;)

P.S. Если кто совсем не знаком, то отпишитесь, попробую изложить суть более подробно.
alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

Я думаю может что то типа

Image

И тут УКНЦ с большим кол-вом цветов с двумя процессорами на вдвое большей скорости будут чуть более уместны. Но с другой стороны на УКНЦ я еще ничего не писал.

Или такое

Image
alemorf
Senior
Posts: 132
Joined: 03 Jan 2017 08:58
Location: SPb

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by alemorf »

Или SD карту припаять?

За одно с STM32 разберусь. Я два года назад закупился ими, но так и не прикоснулся.