![]() |
|
|
|
|
|
#1 |
|
Veteran
Join Date: 1st December 2010
Location: Архангельск
Posts: 1,597
Thanks: 512
Thanked 1,173 Times in 556 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А я игрушку для БК написал.
![]() ROM-файл Исходники на ассемблере (О системе команд 1801ВМ1 узнал только два дня назад, поэтому стиль такой) ... И еще написал компилятор PDP11 => ROM-файл, по образу sjasm. Который и скомпилировал эту игру. Но компилятор еще надо допиливать. Там есть ляпы и макросов нет. Потом выложу, а пока только кусочек исходников. Last edited by vinxru; 6th March 2012 at 16:30. |
|
|
|
| The Following 13 Users Say Thank You to vinxru For This Useful Post: | 13joe (7th March 2012), BYTEMAN (8th March 2012), CodeMaster (6th March 2012), DATAsoft (7th March 2012), Doronetty (6th March 2012), hobot (20th April 2012), KokaF77 (6th March 2012), Mad Killer/PG (7th March 2012), Murzik (7th March 2012), Slava95 (24th November 2014), svofski (8th March 2012), Titus (6th March 2012), Woland (7th March 2012) |
|
|
#2 |
|
Veteran
Join Date: 1st December 2010
Location: Архангельск
Posts: 1,597
Thanks: 512
Thanked 1,173 Times in 556 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
На плате БК0010 (не -01) то же есть цветной видеовыход? Только не впаяны детали, да?
UPD: Точнее... существуют ли платы без цветного выхода вообще? Last edited by vinxru; 7th March 2012 at 15:38. |
|
|
|
|
|
#3 | |
|
Member
Join Date: 10th February 2012
Location: г. Челябинск
Posts: 92
Thanks: 45
Thanked 20 Times in 14 Posts
![]() |
Quote:
в одном из номеров "В помощь радиолюбителю" №108 доработка описана. Last edited by dmluk; 8th March 2012 at 16:44. |
|
|
|
|
| The Following User Says Thank You to dmluk For This Useful Post: | vinxru (7th March 2012) |
|
|
#4 |
|
Veteran
Join Date: 1st December 2010
Location: Архангельск
Posts: 1,597
Thanks: 512
Thanked 1,173 Times in 556 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Еще есть идея оконный интерфейс с мышкой на БК сделать. Воссоздать Windows 3 (возможно с панелью ПУСК от Windows 95+) на БК0010/11.
P.S. У меня еще висит проект переноса Zeliard на Радио-86РК, но это дизассемблирование - это такая скучная задача, что я засыпаю. Меня никто не торопит, до смерти успею
Last edited by vinxru; 7th March 2012 at 15:41. |
|
|
|
| The Following User Says Thank You to vinxru For This Useful Post: | Mad Killer/PG (7th March 2012) |
|
|
#5 |
|
Veteran
Join Date: 20th June 2007
Location: С.-Петербург
Posts: 1,224
Thanks: 434
Thanked 264 Times in 163 Posts
![]() ![]() ![]() ![]() |
vinxru, ты в курсе, что есть pdp11-gcc, который работает и которым можно писать для БК? Это, конечно, не так компактно, как на ассемблере, но имеет свои преимущества. Если у тебя есть что-то юниксоподобное, то все тулзы собираются одним скриптом.
__________________
Больше игр нет |
|
|
|
|
|
#6 |
|
Veteran
Join Date: 1st December 2010
Location: Архангельск
Posts: 1,597
Thanks: 512
Thanked 1,173 Times in 556 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я подозреваю, что существуют компиляторы для PDP-11. Лично я искал компиляторы ассемблера. (В компьютере всего 16 Кб ОЗУ, не разбежишься).
Компилятор Си мне лениво писать (хотя реально). Найденные мной компиляторы создавали OBJ файлы (в лучшем случае). И я не нашел линкера, для превращения OBJ в ROM (или что то подобное). Я спрашивал фанатов, как мне поступить, и все они говорили пиши прямо на PDP-11 в эмуляторе, там софт есть. ---------- Post added at 16:59 ---------- Previous post was at 16:55 ---------- У меня есть идея, добавить в ассемблер конструкции if(R0>R4) { ..do { ..} while(--R4>0) } Строка "} while(--R4>0)" это команда SOB R4, ptr Строка "if(R0>R4) {" это команды CMP R0, R4 / BGT ptr |
|
|
|
|
|
#7 | |
|
Guru
Join Date: 11th September 2009
Location: Москва
Posts: 2,976
Thanks: 60
Thanked 1,785 Times in 1,099 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
Вот пример реализации конструкций IF, CASE и других: Code:
.MACRO MACSP L,I
.IF B,I
.MCALL IF,IFB,IFC,ELSE,FI,CALL,PROC,BEGIN,END
.MCALL LOOP,LOOPB,EXLOOP,REPEAT,CASE
.MCALL $20,$22,$90,$91,$92,$93,$94
$10=0
.IIF NB,L,$10=1
$11=1000
.ENDC
$0=20
$1=1
$2=0
$3=0
$4=0
$8=0
$9=1
$12=77777
.ENDM
.MACRO IF S,Q,D,T
$20 ,<S>,<Q>,<D>
IFC <Q>,<T>
.ENDM
.MACRO IFB S,Q,D,T
$20 B,<S>,<Q>,<D>
IFC <Q>,<T>
.ENDM
.MACRO $20 V,S,Q,D
.IF DIF,<Q>,<IN>
.IF DIF,<Q>,<NI>
.IF IDN,<D>,<#0>
$93 <TST'V S>
.IFF
$93 <CMP'V S,D>
.ENDC
.MEXIT
.ENDC
.ENDC
$93 <BIT'V S,D>
.ENDM
.MACRO IFC Q,T
.IF IDN,<T>,<THEN>
.IIF NE,$4,.ERROR ;U
.IIF EQ,$2,$92 $2
$90 $2*2,4,\$0
$22 F,<Q>,\$2
$2=0
.IIF NE,$3,$94 \$3,$:
$3=0
.MEXIT
.ENDC
.IF B,T
.IIF EQ,$4,.ERROR ;U
$4=0
$22 ,<Q>,\$3
$3=0
.IIF NE,$2,$94 \$2,$:
$2=0
.MEXIT
.ENDC
.IF IDN <T>,<AND>
.IIF EQ,$2,$92 $2
$22 F,<Q>,\$2
.MEXIT
.ENDC
.IF IDN,<T>,<OR>
.IIF EQ,$3,$92 $3
$22 ,<Q>,\$3
.MEXIT
.ENDC
.ERROR ;U
.ENDM
.MACRO $22 F,Q,L
$6=0
.IIF IDN,<Q>,<SLT>,$6=BLT
.IIF IDN,<Q>,<SLE>,$6=BLE
.IIF IDN,<Q>,<SGE>,$6=BGE
.IIF IDN,<Q>,<SGT>,$6=BGT
.IIF IDN,<Q>,<ULT>,$6=BLO
.IIF IDN,<Q>,<ULE>,$6=BLOS
.IIF IDN,<Q>,<UGE>,$6=BHIS
.IIF IDN,<Q>,<UGT>,$6=BHI
.IIF IDN,<Q>,<IN>,$6=BNE
.IIF IDN,<Q>,<NI>,$6=BEQ
.IIF EQ,$6,$6=B'Q
.IIF NE,$6&74377,.ERROR ;U
$6=$6/400&377
.IIF NB,F,$6=$6!1-<$6&1>
$93 BR,L
$94 .=.-1
$93 <.BYTE $6>
.ENDM
.MACRO ELSE
$91 $6,4,\$0-1
.IIF NE,$6&1,.ERROR ;N
$93 BR,\$1
$90 $1*2+1,4,\$0
$92
$94 \$6/2,$:
.ENDM
.MACRO FI
$91 $6,4,\$0-1
$94 \$6/2,$:
.ENDM
.MACRO CALL L
$93 <JSR %7,L>
.ENDM
.MACRO PROC L,S,B,C,T
;IF 'T' BLANK - FOR PDP-11, IF 'T' LSI - FOR LSI-11
$6=0
.IF NB,L
.IIF NE,$0-20,.ERROR ;N
MACSP ,I
$6=4
$90 7,0,\$0
$94 L:
.ENDC
$5=-1
.IRP R,<S>
.NTYPE $5,R
.IIF GT,$5-5,.ERROR ;T
$6=$6+4
$90 $5,0,\$0
$93 <MOV R,-(%6)>
.ENDR
.IF NB,B
.IIF LT,$5,.ERROR ;P
.IIF LE,B,.ERROR ;V
$7=B+1/2*2
.IIF GT,$7-7776,.ERROR ;V
$93 <SUB #$7,%6>
$93\10600+$5
$90 $7,0,\$0
$6=$6+2
.ENDC
.IF NB,C
.IIF DIF,<C>,<CRITICAL>,.ERROR ;U
$6=$6+1
.IF B,T
$93 <MOV @#-2,-(%6)>
$93 <MOV #340,@#-2>
$13=0
.IFF
.IIF DIF,<T>,<LSI>,.ERROR ;U
$93 <MFPS -(%6)>
$93 <MTPS #340>
$13=1
.ENDC
.ENDC
$90 $6,1,\$0
$9=$9+1
.ENDM
.MACRO BEGIN S,B,C
PROC ,<S>,<B>,<C>
.ENDM
.MACRO END
$9=$9-1
$91 $6,1,\$0-1
;.IIF NE,$6&1,$93 <MOV (%6)+,@#-2>
.IF NE,$6&1
.IF EQ,$13
$93 <MOV (%6)+,@#-2>
.IFF
$93 <MTPS (%6)+>
.ENDC
.ENDC
.IF NE,$6&2
$91 $7,0,\$0-1
$93 <ADD #$7,%6>
.ENDC
.REPT $6/4
$91 $5,0,\$0-1
$93 \12600+$5
.ENDR
.ENDM
.MACRO LOOP S
$90 $8,0,\$0
$8=0
$90 $9,0,\$0
$9=0
$5=0
.IF NB,S
.NTYPE $5,S
.IF EQ,$5-26
$93 <TST @%6>
.IFF
.IIF NE,$5-47,$93 <MOV S,-(%6)>
.ENDC
.IF EQ,$5-27
$94 <$94 $5=,^>,S,#
.IIF EQ,$5,.ERROR ;Z
.IFF
$92 $8
$93 BEQ,\$8
.ENDC
$5=1
.ENDC
$90 $1*2+$5,2,\$0
$94 \$1,$:
$92
.ENDM
.MACRO LOOPB S
.NTYPE $5,S
.IF EQ,$5&7-6
.IIF NE,$5-26,$93 <MOVB S,-(%6)>
$93 <BIC #177400,@%6>
.IFF
$93 <CLR -(%6)>
$93 <MOVB S,@%6>
.ENDC
LOOP -(%7)
.ENDM
.MACRO EXLOOP I,S,Q,D,T
.IIF NE,$9,.ERROR ;N
.IIF EQ,$8,$92 $8
.IF B,I
$93 BR,\$8
.IFF
$4=1
$3=$8
I S Q D T
.ENDC
.ENDM
.MACRO REPEAT
$91 $6,2,\$0-1
.IF NE,$6&1
$93 <DEC @%6>
$93 BNE,\$6/2
.IFF
$93 BR,\$6/2
.IFTF
.IIF NE,$8,$94 \$8,$:
.IFT
$93 <TST (%6)+>
.ENDC
$91 $9,0,\$0-1
$91 $8,0,\$0-1
.ENDM
.MACRO CASE R,L,P
.MCALL $24,VALUE,CASEND
$24 <R>,<L>,<P>
.ENDM
.MACRO $24 R,L,P
.IIF LE,L,.ERROR ;V
.IIF GT,L-7777,.ERROR ;V
$93 <CMP R,#L>
$5=$11*2
.IF B,P
.IF LE,L-172
$93 <BHI L+6*2+.>
.IFF
$93 <BLOS .+6>
$93 <JMP L+7*2+.>
.ENDC
$93 <ASL R>
$93 <ADD %7,R>
$93 <ADD 4(R),%7>
$94 $,\$11,=.
$94 $6=$,\$11+1,-.
.REPT L+1
$93 <.WORD $6>
.ENDR
.IFF
.IIF DIF,<P>,<PACKED>,.ERROR ;U
.IF LE,L-357
$93 <BHI L/2+11*2+.>
.IFF
$93 <BLOS .+6>
$93 <JMP L/2+12*2+.>
.ENDC
$93 <ADD %7,R>
$93 <MOVB 14(R),R>
$93 <BIC #177400,R>
$93 <ASL R>
$93 <ADD R,%7>
$94 $,\$11,=.
$94 $6=$,\$11+1,-.
.REPT L+1
$93 <.BYTE $6/2>
.ENDR
.EVEN
$5=$5+1
.ENDC
$94 $,\$11+1,=.
$90 <L>,0,\$0
$90 $5,3,\$0
$11=$11+3
.ENDM
.MACRO VALUE L
$91 $5,3,\$0-1
$94 $6=$,\$5/2+2
$93 <JMP $6>
.IF IDN,<L>,<>
$0=$0+1
$94 $,\$5/2+1,=.
.IFF
$91 $7,0,\$0-1
$0=$0+2
$94 $6=.-$,\$5/2
.IRP V,<L>
.IF GE,V
.IIF GT,V-$7,.ERROR ;R
.IF EQ,$5&1
$94 .=V*2+$,\$5/2
$93 <.WORD $6>
.IFF
$94 .=V+$,\$5/2
$93 <.BYTE $6/2>
.ENDC
$12=V
.IFF
.IIF GT,-<V>-$7,.ERROR ;R
.IIF LE,-<V>-$12,.ERROR ;R
.REPT -<V>-$12
.IF EQ,$5&1
$93 <.WORD $6>
.IFF
$93 <.BYTE $6/2>
.ENDC
.ENDR
$12=77777
.ENDC
.ENDR
$12=77777
$94 .=$6+$,\$5/2
.ENDC
.ENDM
.MACRO CASEND
$91 $5,3,\$0-1
$94 $,\$5/2+2,=.
$0=$0-1
.ENDM
.MACRO $90 V,T,X
$'X=V*10+T
$0=$0+1
.ENDM
.MACRO $91 V,T,X
$0=$0-1
.IIF LT,$0-20,.ERROR ;N
.IIF NE,$'X&7-T,.ERROR ;N
V=$'X/10
.ENDM
.MACRO $92 D
.IIF NB,D,D=$1
$1=$1+1
.ENDM
.MACRO $93 I,L
.IIF NE,$10,.LIST MEB
.IF B,L
I
.IFF
I L'$
.ENDC
.IIF NE,$10,.NLIST MEB
.ENDM
.MACRO $94 L,M,R
.IIF NE,$10,.LIST ME
L''M''R
.IIF NE,$10,.NLIST ME
.ENDM
|
|
|
|
|
| The Following User Says Thank You to Patron For This Useful Post: | hobot (20th April 2012) |
|
|
#8 |
|
Veteran
Join Date: 20th June 2007
Location: С.-Петербург
Posts: 1,224
Thanks: 434
Thanked 264 Times in 163 Posts
![]() ![]() ![]() ![]() |
Я говорю про кросс-компиляторы, ибо иначе практичность под вопросом. Их существует не так много. Один —*pcc, которым vak делал bkunix. Им же я пользовался для биоса своего БК-ФПГА. Он работает но безбожно глючный и ему нужна 32-битная система, на 64 не соберется. И есть pdp11-gcc, который стараниями felix-а снова генерит вполне адекватный код. И то и другое может делать bin-ы пригодные для БК.
__________________
Больше игр нет |
|
|
|
| The Following User Says Thank You to svofski For This Useful Post: | vinxru (8th March 2012) |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|