Size: a a a

Ассемблер

2021 March 22

AM

Alexander Morozov in Ассемблер
Den
Здорово получилось! А как такой большой шрифт на экран вывести?
Это картинка.
источник

D

Den in Ассемблер
а понятно, 😁
источник

AM

Alexander Morozov in Ассемблер
#!/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')
источник

D

Den 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')
да, ты легких путей не ищешь 😁 в хорошем смысле
источник

A

Aleksandr in Ассемблер
На чем запускаешь?
источник

AM

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

A

Aleksandr in Ассемблер
Херасе
источник

A

Aleksandr in Ассемблер
Я на днях начал искать спектрумы. Отечественных клонов - сколько угодно, а оригинальных мало и дорогущие
источник

L

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

A

Aleksandr in Ассемблер
дак там и латиница есть
источник

L

Lee in Ассемблер
да, но как можно ctrl превратить в РУС
источник

L

Lee in Ассемблер
привыкни ещё к этому
источник

A

Aleksandr in Ассемблер
а это и не CTRL
источник

L

Lee in Ассемблер
а что это
источник

A

Aleksandr in Ассемблер
это управляющая клавиша другого рода
источник

A

Aleksandr in Ассемблер
привыкли к PC-клавиатурам
источник

L

Lee in Ассемблер
ну видишь, смотря на неё даже ничего не понятно
источник

A

Aleksandr in Ассемблер
А глядя на CTRL - понятно?
источник

L

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

L

Lee in Ассемблер
Aleksandr
А глядя на CTRL - понятно?
Да, это дефолт
источник