Кодинг для Спектрум и 8бит

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Кодинг для Спектрум и 8бит » Прочее » Little Man Computer


Little Man Computer

Сообщений 1 страница 8 из 8

1

https://peterhigginson.co.uk/LMC/lmcgraphic_plh.gif

Очередная бестолковая игрушка

Эмулятор
Большинство эмуляторов просто уродские - либо капризны к ассемблеру, либо работают кое-как.

В общем, набор команд мизерный, я решил организовать бинарный вывод

Код:
	LDA B1
	STA C
	LDA V
	SUB V7
	BRP T6
	ADD V7
	STA V
	LDA B0
	STA C
	LDA V
T6	STA V
	LDA C
	OUT
	LDA B1
	STA C
	LDA V
	SUB V6
	BRP T5
	ADD V6
	STA V
	LDA B0
	STA C
	LDA V
T5	STA V
	LDA C
	OUT
	LDA B1
	STA C
	LDA V
	SUB V5
	BRP T4
	ADD V5
	STA V
	LDA B0
	STA C
	LDA V
T4	STA V
	LDA C
	OUT
	LDA B1
	STA C
	LDA V
	SUB V4
	BRP T3
	ADD V6
	STA V
	LDA B0
	STA C
	LDA V
T3	STA V
	LDA C
	OUT
	LDA B1
	STA C
	LDA V
	SUB V3
	BRP T2
	ADD V6
	STA V
	LDA B0
	STA C
	LDA V
T2	STA V
	LDA C
	OUT
	LDA B1
	STA C
	LDA V
	SUB V2
	BRP T1
	ADD V6
	STA V
	LDA B0
	STA C
	LDA V
T1	STA V
	LDA C
	OUT
	LDA B1
	STA C
	LDA V
	SUB V1
	BRP T0
	ADD V6
	STA V
	LDA B0
	STA C
	LDA V
T0	STA V
	LDA C
	OUT
	LDA V
	OUT
	HLT
C DAT 0
B0 DAT 0
B1 DAT 1
V DAT 85
V7 DAT 128
V6 DAT 64
V5 DAT 32
V4 DAT 16
V3 DAT 8
V2 DAT 4
V1 DAT 2


Жаль, ассемблер на остатках давится. Разбираться с другими уже нет сил.

2

хм. Разобрался, почему давится эмулятор - нет контроля на количество строк - вышло больше 99.

Говнокод подавился на говнокоде, гггг.

Код:
L LDA D1
0 STA O
 LDA V
 ADD V
 SUB B
 BRP POSI
 ADD B
 STA V
 LDA D0
 STA O
 LDA V
POSI STA V
 LDA O
 OUT
 LDA C
 SUB D1
 STA C
 BRP L
 HLT
V DAT 170
C DAT 7
B DAT 256
D1 DAT 1
D0 DAT 0
O DAT 0


Эмулятор

3

Еще один код  - зеркальное отображение числа 0-99

Код:
0 INP
1 STA V
2 LDA M
3 STA C
L LDA C
ADD O
STA C
LDA V
SUB D
STA V
BRP L
ADD D
STA V
STA T
ADD V
STA V
ADD V
ADD T
STA T
ADD T
ADD C
OUT
HLT
D DAT 10
M DAT -1
O DAT 1
V DAT 0
C DAT 0
T DAT 0

4

Вычисление корня(старая тема)

Код:
0 INP
1 STA V
 LDA ONE
STA SUBS
LDA ZERO
STA C
BRA L2
L1 LDA SUBS
ADD TWO
STA SUBS
L2 LDA C
ADD ONE
STA C
LDA V
SUB SUBS
STA V
BRP L1
LDA C
OUT
HLT
V DAT 0
ONE DAT 1
SUBS DAT 0
TWO DAT 2
ZERO DAT -1
C DAT 0

5

Т.к. программист я неважный (в плане сочинения хитрых алгоритмов), то для меня этот эмулятор интересен тем, что он реально содержит недокументированные инструкции, которые интересно исследовать. Кстати это первый из виденных мной эмуляторов LMC, где официально задокументирована команда 4хх -- как недопустимая, выдающая ошибку. А вот например команды 0хх вполне проходят (проверил пока не все) и даже как-то отрабатывают (жалко флаги не отображаются). Также интересно как отработают команды 9хх (исключая задокументированных 901, 902 и 922). Спасибо за интересную игру! Хорошая головоломка на гибкость мышления! :-) СПАСИБО! :-)

6

Вобщем 0хх это всё равно, что HLT, вместо NOP наверное надо ставить ADD 0 или SUB 0, 9хх (кроме документированных) выдают ошибки. Пока что не понял что выдает OUT. Думал, что аккумулятор, но нет. Попробую внимательней перечитать доку :-)

7

))))))))) С OUT всё нормально, не так с ADD 0 или SUB 0 -- цифра это не константа, а адрес ячейки. (Дима, это я не для тебя пишу, а для новичка, который возможно прочтет эти строки)

8

Зачем тебе NOP?

Да, игрушка знатная, но без бинарных операций приходится извращаться.


Вы здесь » Кодинг для Спектрум и 8бит » Прочее » Little Man Computer