home.social

#asm — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #asm, aggregated by home.social.

  1. New title screens. Animated!

    See them live in web emulator: smol.p1x.in/assembly/game12/ga

    Or MS-DOS: smol.p1x.in/assembly/game12/ga

    p.s. the actual game is in alpha stage, middle of implementing core mechanisms. stay tooned.

  2. Cortex Labs (bootdisk and MS-DOS)

    TOTAL OPCODE INSTANCES: 2404
    UNIQUE OPCODES: 56
    BINARY SIZE: 14522 bytes

  3. @shriramk transpiling is such an interesting can of worms. Intuition suggests there shouldn’t be much different about adding #scheme at the end of the #c -> #asm -> machine code chain, but it also seems like C is a somewhat arbitrary detour, when scheme already looks a lot like the AST.

  4. Today's my 41th birthday 🍰

    I have a day off, perfect for some assembly!

  5. #asm deosynth spotted in the wild at #sheffield #folk sessions #music festival

  6. Happy to inaugurate Dandelion BASIC, a fugue on uxn's Sunflower BASIC.

    Technical Details:

    Bare metal AVR assembly for the ATmega2560 (Arduino Mega 2560).

    RAM Usage: ~85 bytes + stack.

    Flash Usage: ~2KB.

    git.sr.ht/~vidak/dandelion

    #basic #retrocomputing #asm #assembly #arduino

  7. FOOF. Воспроизводим легендарный баг в процессоре Pentium

    Приветствую всех! Думаю, при упоминании знаменитого бага в процессоре Intel Pentium на ум сразу приходит ошибка деления . Но, как оказывается, она была не единственным косяком этих чипов. Первые “пеньки” имели ещё одну интересную особенность: существовали “роковые” четыре байта, выполнение которых заставляло компьютер зависнуть намертво. Что же это была за ошибка, как она проявлялась и как её воспроизвести? Сейчас и узнаем. Press F1 to continue

    habr.com/ru/companies/timeweb/

    #timeweb_статьи #pentium #asm #windows_98 #windows_2000 #шина_данных #озу #os2 #visual_c++ #p55c

  8. I'm evaluating to replace some time-critic AMOS routines with assembler, I've made a very simple test to check if it really works.
    Ok, it's just an RTS but I wanted to test it😃
    One part I'd like to replace is the calculation to check whether the player is within the enemy's detection range or not.

    I may gain some cycles to allow expanded A500 to run the game smoothly.

    ❌ Bad idea?
    ✅ Good idea?
    :amiga: 😁
    ---
    #TheGate #AMOS #IndieDev #Assembly #Amiga #asmone #retroprogramming #asm

  9. PSG are the slight favorites over Monaco in L1. Expect a vibrant 20:45 CET clash as both sides push for momentum.

    FC Paris Saint-Germain 59.1%
    Draw 25.5%
    AS Monaco 15.5%

    #Football #Soccer #Ligue1 #PSG #ASM #PSGASM

  10. Comenzamos sesión de NES!!! vamos a mejorar el código y organizar mejor todo nuestro juego...

    Además habrá una sorpresita....

    #gamedev #retrodev #nesdev #asm

    twitch.tv/makeclassicgames/

  11. helenOS

    Quote

    HelenOS is a portable microkernel-based multiserver operating system designed and implemented from scratch. It decomposes key operating system functionality such as file systems, networking, device drivers and graphical user interface into a collection of fine-grained user space components that interact with each other via message passing. A failure or crash of one component does not directly harm others. HelenOS is therefore flexible, modular, extensible, fault tolerant and easy to understand.

    Since this is a today I've learned I will learn about helenOS just like you, when you follow the links

    Micro kernels can be very interesting

    Sources

    helenos.org/
    github.com/HelenOS/helenos
    en.wikipedia.org/wiki/HelenOS

    #TIL #noLinux #micro #kernel #programming #GCC #g_plus_plus #ASM #technology #OpenSource #POSIX

    @rl_dane the scroll bars look normal!

  12. ASM-SCO : les tops et les flops
    🗞️ ASM-Supporters - 🕐 01/03 05:33
    Alors que l’AS Monaco s’est brillamment imposé contre Angers ce soir, voici les tops et les flops.
    Les tops
    Balogun. Encore une fois, l’inévitable américain a fait mal entre les lignes angevines. Cette fois chanceux sur un coup de billard après un ce... [576 chars]
    🔗 asm-supporters.fr/actualites/6
    #actu #news #presse #asm-supporters

  13. Kernel programming lore

    Orientating myself in the kernel lore

    I haven't looked at the linux kernel source in too long a time. I just grabbed a section that was on top and started reading and learning

    Source code is nice to read IMHO

    lore.kernel.org/linux-input/20

    #kernel #lore #Linux #programming #OpenSource #POSIX #technology #modules #configure #make #asm #assembler #test #install

  14. PSG hold a clear edge in the UCL clash with Monaco, 21:00 CET kickoff. Fans anticipate a lively, confident showdown.

    FC Paris Saint-Germain 60.8%
    Draw 24.8%
    AS Monaco 14.5%

    #Football #Soccer #UEFAChampionsLeague #PSG #ASM #PSGASM

  15. Wow and flutter from Tapes long Past

    I know a man who decades ago, wanted to get a GUI {graphical user interface} on an Open Source Operating System where the coders and maintainers didn't see the need.
    He primarily wanted that just for himself.**

    The man has neither written nor compiled one line of programming code in his life

    • He first learned how to do basic coding in an interpreted language then learned the basics in C** he went to a physical library first** He has read a lot of /man/ pages in the process
    • He then compiled the sources for X himself and installed it
    • Next he learned how to compile a WM of his choosing and installed it
    • Then he compiled X userland programs of his choosing
    • After that he compiled other software that needed X windows.

    It took him more than a year and a half to get so far!

    He not only proofed to himself that determination and planning can get you to any achievement, he learned advanced programming and computing skills in the process. He also had a great Guru (you may guess who)

    His skills became so good, that he could even write a FAQ for everyone who wants to run an OS but can't configure a X interface because they can't comprehend the (excellent, technical) documentation.

    #programming #mathematics #logic #coding #interpreted #language #compiler #gcc #ASM #ln #aout #link #library #technology #C #BASIC #OpenSource #XWindows #Xorg

  16. PSG favored in this tight UCL duel; Monaco carry hopefuls for an upset; a plausible draw keeps fans buzzing. Kickoff 21:00 CET

    AS Monaco 13.9%
    Draw 24.4%
    FC Paris Saint-Germain 61.7%

    #Football #Soccer #UEFAChampionsLeague #ASM #PSG #ASMPSG

  17. I've an idea for quite a useful tool. But in order to program it I'd have to in-depth learn x86-64 ASM including all of it's quirks.

    So maybe not going to happen BUT also something I'll keep in mind as it may be the practical application I've been looking for to have an excuse to learn it...

    (And no, C, C++, or Rust won't do here...)

    #ASM #development

  18. CTEM для внешнего периметра

    Привет, Хабр! Я Айдар Фатыхов, менеджер продуктов в Innostage. Хочу разобрать практическую задачу, с которой регулярно сталкиваются ИБ-команды крупных компаний: защита самой горячей точки в инфраструктуре – внешнего сетевого периметра. Отчёты по уязвимостям растут, поверхность атаки постоянно меняется и увеличивается, рук для закрытия рисков постоянно не хватает и ясного ответа, что закрывать в первую очередь по внешнему периметру нет. И вроде бы внедряются технические средства, различные сканеры, межсетевые экраны, WAF и другие средства, но во многих случаях проблема не в отсутствии инструментов, а в разрыве между выявленными уязвимостями и бизнес-ценностью активов, фрагментированной работой с данными разных средств защиты, и в отсутствии правильного сведения в единую картину данных от внешних и внутренних сканеров. Дальше разберу, как подойти к этой задаче с помощью фреймворка CTEM: связать результаты обнаружения с контекстом и телеметрией, получить управляемые приоритеты и доводить устранение до подтверждённого результата через повторную проверку. Почему именно периметр? Перед тем, как переходить к методологии, важно зафиксировать, почему внешний периметр почти всегда оказывается в фокусе. Периметр меняется быстрее всего. Появляются новые сервисы, конфигурации правятся, порты открываются и закрываются, где-то всплывают временные стенды и пилоты. И значительная часть рисков возникает именно на стыке изменений и контроля. По итогам 1-го полугодия 2025 года наши эксперты Innostage SOC CyberART зафиксировали рост OSINT-инцидентов на 50% почти до 10 тысяч. При этом более 70% таких инцидентов было связано с изменениями на периметре: открытие портов, смена конфигураций сервисов, появление новых ресурсов или изменения сведений о существующих. Это важный сигнал: периметр часто уязвим не только из-за конкретной уязвимости, а из-за неуправляемых изменений и слабого контроля того, что именно и как выставлено наружу.

    habr.com/ru/companies/innostag

    #CTEM #Внешний_сетевой_периметр #управление_уязвимостями #ASM #Приоритизация_рисков #SIEM #телеметрия_безопасности #Проактивное_управление_угрозами #threat_intelligence #osint

  19. CTEM для внешнего периметра

    Привет, Хабр! Я Айдар Фатыхов, менеджер продуктов в Innostage. Хочу разобрать практическую задачу, с которой регулярно сталкиваются ИБ-команды крупных компаний: защита самой горячей точки в инфраструктуре – внешнего сетевого периметра. Отчёты по уязвимостям растут, поверхность атаки постоянно меняется и увеличивается, рук для закрытия рисков постоянно не хватает и ясного ответа, что закрывать в первую очередь по внешнему периметру нет. И вроде бы внедряются технические средства, различные сканеры, межсетевые экраны, WAF и другие средства, но во многих случаях проблема не в отсутствии инструментов, а в разрыве между выявленными уязвимостями и бизнес-ценностью активов, фрагментированной работой с данными разных средств защиты, и в отсутствии правильного сведения в единую картину данных от внешних и внутренних сканеров. Дальше разберу, как подойти к этой задаче с помощью фреймворка CTEM: связать результаты обнаружения с контекстом и телеметрией, получить управляемые приоритеты и доводить устранение до подтверждённого результата через повторную проверку. Почему именно периметр? Перед тем, как переходить к методологии, важно зафиксировать, почему внешний периметр почти всегда оказывается в фокусе. Периметр меняется быстрее всего. Появляются новые сервисы, конфигурации правятся, порты открываются и закрываются, где-то всплывают временные стенды и пилоты. И значительная часть рисков возникает именно на стыке изменений и контроля. По итогам 1-го полугодия 2025 года наши эксперты Innostage SOC CyberART зафиксировали рост OSINT-инцидентов на 50% почти до 10 тысяч. При этом более 70% таких инцидентов было связано с изменениями на периметре: открытие портов, смена конфигураций сервисов, появление новых ресурсов или изменения сведений о существующих. Это важный сигнал: периметр часто уязвим не только из-за конкретной уязвимости, а из-за неуправляемых изменений и слабого контроля того, что именно и как выставлено наружу.

    habr.com/ru/companies/innostag

    #CTEM #Внешний_сетевой_периметр #управление_уязвимостями #ASM #Приоритизация_рисков #SIEM #телеметрия_безопасности #Проактивное_управление_угрозами #threat_intelligence #osint

  20. CTEM для внешнего периметра

    Привет, Хабр! Я Айдар Фатыхов, менеджер продуктов в Innostage. Хочу разобрать практическую задачу, с которой регулярно сталкиваются ИБ-команды крупных компаний: защита самой горячей точки в инфраструктуре – внешнего сетевого периметра. Отчёты по уязвимостям растут, поверхность атаки постоянно меняется и увеличивается, рук для закрытия рисков постоянно не хватает и ясного ответа, что закрывать в первую очередь по внешнему периметру нет. И вроде бы внедряются технические средства, различные сканеры, межсетевые экраны, WAF и другие средства, но во многих случаях проблема не в отсутствии инструментов, а в разрыве между выявленными уязвимостями и бизнес-ценностью активов, фрагментированной работой с данными разных средств защиты, и в отсутствии правильного сведения в единую картину данных от внешних и внутренних сканеров. Дальше разберу, как подойти к этой задаче с помощью фреймворка CTEM: связать результаты обнаружения с контекстом и телеметрией, получить управляемые приоритеты и доводить устранение до подтверждённого результата через повторную проверку. Почему именно периметр? Перед тем, как переходить к методологии, важно зафиксировать, почему внешний периметр почти всегда оказывается в фокусе. Периметр меняется быстрее всего. Появляются новые сервисы, конфигурации правятся, порты открываются и закрываются, где-то всплывают временные стенды и пилоты. И значительная часть рисков возникает именно на стыке изменений и контроля. По итогам 1-го полугодия 2025 года наши эксперты Innostage SOC CyberART зафиксировали рост OSINT-инцидентов на 50% почти до 10 тысяч. При этом более 70% таких инцидентов было связано с изменениями на периметре: открытие портов, смена конфигураций сервисов, появление новых ресурсов или изменения сведений о существующих. Это важный сигнал: периметр часто уязвим не только из-за конкретной уязвимости, а из-за неуправляемых изменений и слабого контроля того, что именно и как выставлено наружу.

    habr.com/ru/companies/innostag

    #CTEM #Внешний_сетевой_периметр #управление_уязвимостями #ASM #Приоритизация_рисков #SIEM #телеметрия_безопасности #Проактивное_управление_угрозами #threat_intelligence #osint

  21. CTEM для внешнего периметра

    Привет, Хабр! Я Айдар Фатыхов, менеджер продуктов в Innostage. Хочу разобрать практическую задачу, с которой регулярно сталкиваются ИБ-команды крупных компаний: защита самой горячей точки в инфраструктуре – внешнего сетевого периметра. Отчёты по уязвимостям растут, поверхность атаки постоянно меняется и увеличивается, рук для закрытия рисков постоянно не хватает и ясного ответа, что закрывать в первую очередь по внешнему периметру нет. И вроде бы внедряются технические средства, различные сканеры, межсетевые экраны, WAF и другие средства, но во многих случаях проблема не в отсутствии инструментов, а в разрыве между выявленными уязвимостями и бизнес-ценностью активов, фрагментированной работой с данными разных средств защиты, и в отсутствии правильного сведения в единую картину данных от внешних и внутренних сканеров. Дальше разберу, как подойти к этой задаче с помощью фреймворка CTEM: связать результаты обнаружения с контекстом и телеметрией, получить управляемые приоритеты и доводить устранение до подтверждённого результата через повторную проверку. Почему именно периметр? Перед тем, как переходить к методологии, важно зафиксировать, почему внешний периметр почти всегда оказывается в фокусе. Периметр меняется быстрее всего. Появляются новые сервисы, конфигурации правятся, порты открываются и закрываются, где-то всплывают временные стенды и пилоты. И значительная часть рисков возникает именно на стыке изменений и контроля. По итогам 1-го полугодия 2025 года наши эксперты Innostage SOC CyberART зафиксировали рост OSINT-инцидентов на 50% почти до 10 тысяч. При этом более 70% таких инцидентов было связано с изменениями на периметре: открытие портов, смена конфигураций сервисов, появление новых ресурсов или изменения сведений о существующих. Это важный сигнал: периметр часто уязвим не только из-за конкретной уязвимости, а из-за неуправляемых изменений и слабого контроля того, что именно и как выставлено наружу.

    habr.com/ru/companies/innostag

    #CTEM #Внешний_сетевой_периметр #управление_уязвимостями #ASM #Приоритизация_рисков #SIEM #телеметрия_безопасности #Проактивное_управление_угрозами #threat_intelligence #osint

  22. Hoy es viernes y sabéis que significa... NES!!

    Volvemos con la programación en ensamblador para NES. Pintaremos nuestro pato completo??

    twitch.tv/makeclassicgames/

    #gamedev #retrodev #asm #nes

  23. Monaco vs Juve in the UCL: Juve favored, Monaco pressing for an upset, and a tight draw on the cards. Kickoff 21:00 CET (UTC+01:00).

    AS Monaco 27.5%
    Draw 30.2%
    Juventus Turin 42.3%

    #Football #Soccer #UEFAChampionsLeague #ASM #JUV #ASMJUV

  24. Building tiny CPUs in the terminal! 🤯

    🧬 **NanoCore** — An 8-bit CPU emulator + assembler + TUI debugger

    🔥 Fully minimal 256-byte memory with variable-length opcodes

    🦀 Written in Rust & built with @ratatui_rs

    ⭐ GitHub: github.com/AfaanBilal/NanoCore

  25. go-simd-softmax

    Is a Go-oriented SIMD/avx softmax implementation with optimisations in amd64 / x64 assembler.

    Up to 3.5x faster than equivalent function written using stdlib only. See benchmarks.

    github.com/ha1tch/go-simd-soft

    #go #foss #softmax #asm #assembler #x86_64 #x64 #amd64 #assembly #golang

  26. If you love Assembly, I am sure you'll love my #UltimASM #DSL it allows you to design the Assembly of your dreams or to code in #6502asm , #MC6809 , #mc68000 and even #VAX #ASM on #RISC_OS (and all other supported platform by my #UltimaVM).

    Want to know more? Come at the RISC OS London Show Saturday 25th October!

    #riscos #bytecode #virtualMachine

  27. 🔜📝 Sebastien #Pocognoli will be new #ASMonaco’s coach. Ready a contract until 2027 with the option for 2028. Talks in progress with #UnionSG for the termination of the contract. Then he will sign for #ASM. #transfers

  28. 🔜📝 Sebastien #Pocognoli will be new #ASMonaco’s coach. Ready a contract until 2027 with the option for 2028. Talks in progress with #UnionSG for the termination of the contract. Then he will sign for #ASM. #transfers

  29. These are parts of code in Brataccas that may have been written originally targeting the 68008 processor of the Sinclair QL before they were ported to the Atari ST

    After some cursory scanning of the Brataccas code, some patterns emerged:

    Case 1: Bit-reversal lookup table

    This seems unusual and suggests graphics conversion between platforms with different pixel bit-ordering. The QL stored pixels in a different bit order than the ST - this table appears to be useful to convert graphics assets that were originally in Sinclair QL format.

    ; Bit-Reversal Table (L00A0-L00A4)

    L00A0:DS.W 128,0
    L00A2:LEA L00A0(PC),A0
    MOVE.W #$FF,D7
    L00A3:MOVE.B D0,D1
    MOVEQ #6,D2
    ROXR.B #1,D1
    ROXL.B #1,D4
    L00A4:ROXR.B #1,D1
    ROXL.B

    Case 2 Excessive byte operations

    Throughout the code, there's an unusual preference for byte operations:

    MOVE.B    (A0)+,D0
    MOVE.B (A0)+,D1

    On the 68000 (ST/Amiga/Mac), word operations are typically preferred for performance. But the QL's 68008 CPU had an 8-bit external bus - byte vs word operations had similar performance. This coding style hints at optimisation for the 68008, not the 68000.

    The disassembly available at the Brataccas website seems to have been produced from a QL to Atari ST port, not the Amiga as I originally thought.
    brataccas.com/Page28.php

    The first part of the code (first 1000-1500 lines or so) is a music tracker, and it's clearly a separate module from the rest, clearly designed to be reusable. There are hints that the I/O ports are Atari-specific and that the engine allows for developers to perform hot-editing of music notes via the MIDI port, which was something incredibly sophisticated for 1985. Some other parts of the code deal with vibrato, legato, and effects during realtime play.

    After that block there's what seems to be a sprite blitting engine, but that's as far as I got.

    To be continued...

    #brataccas #retrocomputing #retrogaming #m68k #SinclairQL #QL #asm #assembler #m68008

  30. These are parts of code in Brataccas that may have been written originally targeting the 68008 processor of the Sinclair QL before they were ported to the Atari ST

    After some cursory scanning of the Brataccas code, some patterns emerged:

    Case 1: Bit-reversal lookup table

    This seems unusual and suggests graphics conversion between platforms with different pixel bit-ordering. The QL stored pixels in a different bit order than the ST - this table appears to be useful to convert graphics assets that were originally in Sinclair QL format.

    ; Bit-Reversal Table (L00A0-L00A4)

    L00A0:DS.W 128,0
    L00A2:LEA L00A0(PC),A0
    MOVE.W #$FF,D7
    L00A3:MOVE.B D0,D1
    MOVEQ #6,D2
    ROXR.B #1,D1
    ROXL.B #1,D4
    L00A4:ROXR.B #1,D1
    ROXL.B

    Case 2 Excessive byte operations

    Throughout the code, there's an unusual preference for byte operations:

    MOVE.B    (A0)+,D0
    MOVE.B (A0)+,D1

    On the 68000 (ST/Amiga/Mac), word operations are typically preferred for performance. But the QL's 68008 CPU had an 8-bit external bus - byte vs word operations had similar performance. This coding style hints at optimisation for the 68008, not the 68000.

    The disassembly available at the Brataccas website seems to have been produced from a QL to Atari ST port, not the Amiga as I originally thought.
    brataccas.com/Page28.php

    The first part of the code (first 1000-1500 lines or so) is a music tracker, and it's clearly a separate module from the rest, clearly designed to be reusable. There are hints that the I/O ports are Atari-specific and that the engine allows for developers to perform hot-editing of music notes via the MIDI port, which was something incredibly sophisticated for 1985. Some other parts of the code deal with vibrato, legato, and effects during realtime play.

    After that block there's what seems to be a sprite blitting engine, but that's as far as I got.

    To be continued...

    #brataccas #retrocomputing #retrogaming #m68k #SinclairQL #QL #asm #assembler #m68008

  31. These are parts of code in Brataccas that may have been written originally targeting the 68008 processor of the Sinclair QL before they were ported to the Atari ST

    After some cursory scanning of the Brataccas code, some patterns emerged:

    Case 1: Bit-reversal lookup table

    This seems unusual and suggests graphics conversion between platforms with different pixel bit-ordering. The QL stored pixels in a different bit order than the ST - this table appears to be useful to convert graphics assets that were originally in Sinclair QL format.

    ; Bit-Reversal Table (L00A0-L00A4)

    L00A0:DS.W 128,0
    L00A2:LEA L00A0(PC),A0
    MOVE.W #$FF,D7
    L00A3:MOVE.B D0,D1
    MOVEQ #6,D2
    ROXR.B #1,D1
    ROXL.B #1,D4
    L00A4:ROXR.B #1,D1
    ROXL.B

    Case 2 Excessive byte operations

    Throughout the code, there's an unusual preference for byte operations:

    MOVE.B    (A0)+,D0
    MOVE.B (A0)+,D1

    On the 68000 (ST/Amiga/Mac), word operations are typically preferred for performance. But the QL's 68008 CPU had an 8-bit external bus - byte vs word operations had similar performance. This coding style hints at optimisation for the 68008, not the 68000.

    The disassembly available at the Brataccas website seems to have been produced from a QL to Atari ST port, not the Amiga as I originally thought.
    brataccas.com/Page28.php

    The first part of the code (first 1000-1500 lines or so) is a music tracker, and it's clearly a separate module from the rest, clearly designed to be reusable. There are hints that the I/O ports are Atari-specific and that the engine allows for developers to perform hot-editing of music notes via the MIDI port, which was something incredibly sophisticated for 1985. Some other parts of the code deal with vibrato, legato, and effects during realtime play.

    After that block there's what seems to be a sprite blitting engine, but that's as far as I got.

    To be continued...

    #brataccas #retrocomputing #retrogaming #m68k #SinclairQL #QL #asm #assembler #m68008

  32. These are parts of code in Brataccas that may have been written originally targeting the 68008 processor of the Sinclair QL before they were ported to the Atari ST

    After some cursory scanning of the Brataccas code, some patterns emerged:

    Case 1: Bit-reversal lookup table

    This seems unusual and suggests graphics conversion between platforms with different pixel bit-ordering. The QL stored pixels in a different bit order than the ST - this table appears to be useful to convert graphics assets that were originally in Sinclair QL format.

    ; Bit-Reversal Table (L00A0-L00A4)

    L00A0:DS.W 128,0
    L00A2:LEA L00A0(PC),A0
    MOVE.W #$FF,D7
    L00A3:MOVE.B D0,D1
    MOVEQ #6,D2
    ROXR.B #1,D1
    ROXL.B #1,D4
    L00A4:ROXR.B #1,D1
    ROXL.B

    Case 2 Excessive byte operations

    Throughout the code, there's an unusual preference for byte operations:

    MOVE.B    (A0)+,D0
    MOVE.B (A0)+,D1

    On the 68000 (ST/Amiga/Mac), word operations are typically preferred for performance. But the QL's 68008 CPU had an 8-bit external bus - byte vs word operations had similar performance. This coding style hints at optimisation for the 68008, not the 68000.

    The disassembly available at the Brataccas website seems to have been produced from a QL to Atari ST port, not the Amiga as I originally thought.
    brataccas.com/Page28.php

    The first part of the code (first 1000-1500 lines or so) is a music tracker, and it's clearly a separate module from the rest, clearly designed to be reusable. There are hints that the I/O ports are Atari-specific and that the engine allows for developers to perform hot-editing of music notes via the MIDI port, which was something incredibly sophisticated for 1985. Some other parts of the code deal with vibrato, legato, and effects during realtime play.

    After that block there's what seems to be a sprite blitting engine, but that's as far as I got.

    To be continued...

    #brataccas #retrocomputing #retrogaming #m68k #SinclairQL #QL #asm #assembler #m68008

  33. These are parts of code in Brataccas that may have been written originally targeting the 68008 processor of the Sinclair QL before they were ported to the Atari ST

    After some cursory scanning of the Brataccas code, some patterns emerged:

    Case 1: Bit-reversal lookup table

    This seems unusual and suggests graphics conversion between platforms with different pixel bit-ordering. The QL stored pixels in a different bit order than the ST - this table appears to be useful to convert graphics assets that were originally in Sinclair QL format.

    ; Bit-Reversal Table (L00A0-L00A4)

    L00A0:DS.W 128,0
    L00A2:LEA L00A0(PC),A0
    MOVE.W #$FF,D7
    L00A3:MOVE.B D0,D1
    MOVEQ #6,D2
    ROXR.B #1,D1
    ROXL.B #1,D4
    L00A4:ROXR.B #1,D1
    ROXL.B

    Case 2 Excessive byte operations

    Throughout the code, there's an unusual preference for byte operations:

    MOVE.B    (A0)+,D0
    MOVE.B (A0)+,D1

    On the 68000 (ST/Amiga/Mac), word operations are typically preferred for performance. But the QL's 68008 CPU had an 8-bit external bus - byte vs word operations had similar performance. This coding style hints at optimisation for the 68008, not the 68000.

    The disassembly available at the Brataccas website seems to have been produced from a QL to Atari ST port, not the Amiga as I originally thought.
    brataccas.com/Page28.php

    The first part of the code (first 1000-1500 lines or so) is a music tracker, and it's clearly a separate module from the rest, clearly designed to be reusable. There are hints that the I/O ports are Atari-specific and that the engine allows for developers to perform hot-editing of music notes via the MIDI port, which was something incredibly sophisticated for 1985. Some other parts of the code deal with vibrato, legato, and effects during realtime play.

    After that block there's what seems to be a sprite blitting engine, but that's as far as I got.

    To be continued...

    #brataccas #retrocomputing #retrogaming #m68k #SinclairQL #QL #asm #assembler #m68008

  34. Have you ever wanted to load arbitrary Microdrive files using machine code, but Sinclair’s hook codes let you down? Well: want no longer and behold: SHADOWLOAD!

    #zxSpectrum #microdrive #interface1 #asm #z80 github.com/flatduckrecords/zx-

  35. Would it be interesting to add ez80 support to the zenas assembler?

    In my first attempt when I wrote the (still incomplete) assembler callled zxa, I had already implemented the entire Z80 instruction set, and also the Spectrum Next's-specific Z80N extensions. That didn't work too well, but at least I learnt what not to do, or how not to do it.

    I'm trying to think what would be the better way to support different variants and extensions.

    Some Z80 variants also existed in the world of MSX when various Japanese chipmakers produced their own, improved and extended versions of the Z80.

    The question to me is not so much whether ez80 and Z80N support should be implemented, but HOW as in what's a clean way to support them. Via directives?
    With pragmas or ifdefs?
    Via command line switches?

    What do you think?

    #z80 #asm #assembler #ez80

  36. zenas - z80 assembler

    zenas gains basic C-style macros. The .MACRO_STYLE directive works for the most basic cases passing simple parameters.

    Notice the very subtle difference between these two most basic code examples. One of them uses a constant value, the other uses a variable parameter to perform an operation.

    Up next I'm working on call-block style (not inline) function calls, juggling multiple parameters, return values and other nice things on the drawing board. Possibly the most important external tool is the z88dk library importer, which I'm still drafting on the back of my mind.

    #zenas #asm #assembler #z80 #golang #foss

  37. Experimental. Doesn't work well yet. Will take time to get this right.

    #zenas #z80 #assembler #asm

  38. So... I've had this under wraps for months, whilst I've been adding features and ironing out bugs...

    I've already been showing:

    The next logical piece is:

    • zenas: Z80 assembler (WIP)

    zenas is a new Z80 assembler (work in progress) following a simpler design than my earlier attempt. This is designed to work together with zen80 and zenZX, to hot test and benchmark the code the assembler emits

    I'm already seeing some promising results. I think it's a cool feature if your assembler can actually run the code it emits (using zen80) with the potential to verify your object code actually works, and every single cycle is accounted for. I can imagine in the future we can expect to have things like register colouring and other neat features.

    If we consider the zenXX tools together with the tape handling tools, and with the floppy image tools, we're approaching the status of lovely toolset that could one day be quite useful.

    #zen80 #zenzx #zenas #asm #z80 #golang #foss #assembler #retrocomputing