Size: a a a

Ассемблер

2021 March 22

A

Aleksandr in Ассемблер
Конец восьмидесятых
источник

L

Lee in Ассемблер
А ну тогда вопросов нет
источник

AM

Alexander Morozov in Ассемблер
Аналог Ctrl на этой клавиатуре - СУ
источник

D

Den in Ассемблер
Помню там клавиши прикольно так щелкали, на герконах что ли были, приятная клава была тактильно
источник

AM

Alexander Morozov in Ассемблер
Den
Помню там клавиши прикольно так щелкали, на герконах что ли были, приятная клава была тактильно
Увы, клавиатура БК0010-01 весьма капризна. У более новых моделей и БК0011 она другая, с пленкой внутри, практически аналог современных.
источник

ST

Saenro T in Ассемблер
А я тут на х86 из 39 байт собрал псевдослучайную заливку, а хочу ещё меньше...
источник

AM

Alexander Morozov in Ассемблер
источник

AM

Alexander Morozov in Ассемблер
На БК получилось 40 байт, из которых 4-заголовок для программы пересылки файла с PC, на БК передается только 36 байт.
источник

D

Den in Ассемблер
Saenro T
А я тут на х86 из 39 байт собрал псевдослучайную заливку, а хочу ещё меньше...
Под nasm наверное и такого размера не добиться
источник

D

Den in Ассемблер
это под эмулятором запускать?
источник

AM

Alexander Morozov in Ассемблер
Den
это под эмулятором запускать?
Это формат для эмуляторов либо передачи на железо через эмулятор магнитофона. Первое слово - стартовый адрес, второе слово - размер файла. Дальше бинарный код PDP11.
источник

AM

Alexander Morozov in Ассемблер
    clr r0
   inc r0            ; Начальная позиция
1:
   mov r0,r1
   asl r1
   add #40000-2,r1
   mov #177777,(r1)  ; Вывод на экран
   clc
   ror r0
   bcc 2             ; Не нужен XOR
   mov #0x100D,r1
   xor r1,r0         ; МАГИЯ!
2:
   cmp #1,r0        
   bne 1             ; Еще не конец
   ret
источник

ST

Saenro T in Ассемблер
Alexander Morozov
#!/usr/bin/python3

from PIL import Image, ImageDraw, ImageFont

text_1 = '''\
   clr r0
   inc r0            ; Начальная позиция
1:
   mov r0,r1
   asl r1
   add #40000-2,r1
   mov #177777,(r1)  ; Вывод на экран
   clc
   ror r0
   bcc 2             ; Не нужен XOR
   mov #0x100D,r1
   xor r1,r0         ; МАГИЯ!
2:
   cmp #1,r0        
   bne 1             ; Еще не конец
   ret'''

text_2 = '''\
АССЕМБЛЕР
           ЭТО
       КРУТО!'''

# Ширина и высота, размеры шрифта
width, height = 512, 256
font_size_1 = 10
font_size_2 = 60

font_1 = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold', font_size_1)
font_2 = ImageFont.truetype('/usr/share/fonts/opentype/cantarell/Cantarell-ExtraBold.otf', font_size_2)

# Инверсия порядка бит в байте
def invert(b):
   return ((b&1)<<7) | ((b&2)<<5) | ((b&4)<<3) | ((b&8)<<1) | ((b&16)>>1) | ((b&32)>>3) | ((b&64)>>5) | ((b&128)>>7)

# Сохранить bitmap
def save_bin(bitmap, filename):
   f = open(filename, 'wb').write(bitmap)

# Сохранить сжатый mac
def save_zip_mac_b(bitmap, filename):
   with open(filename, 'w', encoding='utf-8') as f:
       ba = bytearray(bitmap)
       b = ba[0]
       count = 1
       for next_index in range(1, len(ba)):
           next_b = ba[next_index]
           if b == next_b and count < 256:
               count += 1
           else:
               f.write('    .BYTE 0x%02x, %03d.\n' % ( (b, count & 0xFF) ))
               b = next_b
               count = 1
       f.write('    .BYTE 0x%02x, %03d.\n' % ( (b, count & 0xFF) ))

i = Image.new('1', (width, height))
d = ImageDraw.Draw(i)
x_size_1, y_size_1 = d.textsize(text_1, font=font_1)
d.text(((width - x_size_1) // 2, 10), text_1, 0xFF, font=font_1)
i.save('ASM.png')
bitmap = bytes(invert(b) for b in i.tobytes())
del(i)
save_bin(bitmap, 'ASM.bitmap')
save_zip_mac_b(bitmap, 'ASMb.mac')

i = Image.new('1', (width, height), 0xFF)
d = ImageDraw.Draw(i)
x_size_1, y_size_1 = d.textsize(text_2, font=font_2)
d.text(((width - x_size_1) // 2, 10), text_2, 0x00, font=font_2)
i.save('COOL.png')
bitmap = bytes(invert(b) for b in i.tobytes())
del(i)
save_bin(bitmap, 'COOL.bitmap')
save_zip_mac_b(bitmap, 'COOLb.mac')
Подожди, а как оно заполняет все 16384 если там 16383 шага?
источник

AM

Alexander Morozov in Ассемблер
Saenro T
Подожди, а как оно заполняет все 16384 если там 16383 шага?
А последний шаг заполняется уже не рандомом, это уже конец финальной картинки!
источник

AM

Alexander Morozov in Ассемблер
Кстати, в статье о LFSR в Википедии есть ссылка на справочник с готовыми решениями для регистров разной длины http://users.ece.cmu.edu/~koopman/lfsr/index.html
источник

ST

Saenro T in Ассемблер
Вообще-то действительно хорошие LFSR не афишируют.
источник

ST

Saenro T in Ассемблер
Alexander Morozov
Кстати, в статье о LFSR в Википедии есть ссылка на справочник с готовыми решениями для регистров разной длины http://users.ece.cmu.edu/~koopman/lfsr/index.html
Здесь указано что на 16-ти битах их 2048. И таки да, тоже нашёл все 2048 штук перебором.
источник

AM

Alexander Morozov in Ассемблер
А что входит в критерии «хорошего»? Сравнение функции распределения псевдослучайной последовательности с теоретически вычисленным идеальным распределением для истинно случайной?
источник

ST

Saenro T in Ассемблер
Хорошая должна дать максимальный период.
Если взять 32 битную, то максимальный период = 2³²-1 т.е. если на входе было 12345678, то на выходе 12345678 появится через 4294967295 циклов, а если полином абы какой, то это число на выходе появится скажем через 356 циклов.
источник

ST

Saenro T in Ассемблер
Вот был бы у тебя плохой полином, то закрасило бы тебе всего треть экрана, а то и того меньше.
источник