#asm — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #asm, aggregated by home.social.
-
-
New title screens. Animated!
See them live in web emulator: https://smol.p1x.in/assembly/game12/game12.html
Or MS-DOS: https://smol.p1x.in/assembly/game12/game12.com
p.s. the actual game is in alpha stage, middle of implementing core mechanisms. stay tooned.
-
El lado del mal - Bug Hunting and Vibe-Exploiting en 86-DOS "High-performance operating system for the 8086" version 1.00 del 04/28/81 https://www.elladodelmal.com/2026/04/bug-hunting-and-vibe-exploiting-en-86.html #MSDOS #ASM #Bug #Exploit #Microsoft #IA #AI #Gemini #InteligenciaArtificial
-
https://www.europesays.com/it/462715/ Giardini Grimani, nuova chiusura – La Voce di Rovigo #asm #BadenPowel #comune #DueTorri #FrancescoCampi #IT #Italia #Italy #ParcoDiViaGrimani #PonteMarabin #rovigo #Rugby #Sport #Sports #ViaForlanini #voce
-
Today's my 41th birthday 🍰
I have a day off, perfect for some assembly!
-
#asm deosynth spotted in the wild at #sheffield #folk sessions #music festival
-
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.
-
FOOF. Воспроизводим легендарный баг в процессоре Pentium
Приветствую всех! Думаю, при упоминании знаменитого бага в процессоре Intel Pentium на ум сразу приходит ошибка деления . Но, как оказывается, она была не единственным косяком этих чипов. Первые “пеньки” имели ещё одну интересную особенность: существовали “роковые” четыре байта, выполнение которых заставляло компьютер зависнуть намертво. Что же это была за ошибка, как она проявлялась и как её воспроизвести? Сейчас и узнаем. Press F1 to continue
https://habr.com/ru/companies/timeweb/articles/1015016/
#timeweb_статьи #pentium #asm #windows_98 #windows_2000 #шина_данных #озу #os2 #visual_c++ #p55c
-
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 -
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
https://www.helenos.org/
https://github.com/HelenOS/helenos
https://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!
-
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]
🔗 https://asm-supporters.fr/actualites/65346-asm-sco-les-tops-et-les-flops-4
#actu #news #presse #asm-supporters -
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
https://lore.kernel.org/linux-input/20[email protected]/T/#u
#kernel #lore #Linux #programming #OpenSource #POSIX #technology #modules #configure #make #asm #assembler #test #install
-
Kernel.org kernel dev
Reading a bit up on the Linux kernel doc
https://www.kernel.org/doc/html/latest/process/index.html
#kernel #Linux #programming #OpenSource #POSIX #technology #modules #configure #make #asm #assembler #test #install
-
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% -
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
-
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% -
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...)
-
CTEM для внешнего периметра
Привет, Хабр! Я Айдар Фатыхов, менеджер продуктов в Innostage. Хочу разобрать практическую задачу, с которой регулярно сталкиваются ИБ-команды крупных компаний: защита самой горячей точки в инфраструктуре – внешнего сетевого периметра. Отчёты по уязвимостям растут, поверхность атаки постоянно меняется и увеличивается, рук для закрытия рисков постоянно не хватает и ясного ответа, что закрывать в первую очередь по внешнему периметру нет. И вроде бы внедряются технические средства, различные сканеры, межсетевые экраны, WAF и другие средства, но во многих случаях проблема не в отсутствии инструментов, а в разрыве между выявленными уязвимостями и бизнес-ценностью активов, фрагментированной работой с данными разных средств защиты, и в отсутствии правильного сведения в единую картину данных от внешних и внутренних сканеров. Дальше разберу, как подойти к этой задаче с помощью фреймворка CTEM: связать результаты обнаружения с контекстом и телеметрией, получить управляемые приоритеты и доводить устранение до подтверждённого результата через повторную проверку. Почему именно периметр? Перед тем, как переходить к методологии, важно зафиксировать, почему внешний периметр почти всегда оказывается в фокусе. Периметр меняется быстрее всего. Появляются новые сервисы, конфигурации правятся, порты открываются и закрываются, где-то всплывают временные стенды и пилоты. И значительная часть рисков возникает именно на стыке изменений и контроля. По итогам 1-го полугодия 2025 года наши эксперты Innostage SOC CyberART зафиксировали рост OSINT-инцидентов на 50% почти до 10 тысяч. При этом более 70% таких инцидентов было связано с изменениями на периметре: открытие портов, смена конфигураций сервисов, появление новых ресурсов или изменения сведений о существующих. Это важный сигнал: периметр часто уязвим не только из-за конкретной уязвимости, а из-за неуправляемых изменений и слабого контроля того, что именно и как выставлено наружу.
https://habr.com/ru/companies/innostage/articles/995384/
#CTEM #Внешний_сетевой_периметр #управление_уязвимостями #ASM #Приоритизация_рисков #SIEM #телеметрия_безопасности #Проактивное_управление_угрозами #threat_intelligence #osint
-
CTEM для внешнего периметра
Привет, Хабр! Я Айдар Фатыхов, менеджер продуктов в Innostage. Хочу разобрать практическую задачу, с которой регулярно сталкиваются ИБ-команды крупных компаний: защита самой горячей точки в инфраструктуре – внешнего сетевого периметра. Отчёты по уязвимостям растут, поверхность атаки постоянно меняется и увеличивается, рук для закрытия рисков постоянно не хватает и ясного ответа, что закрывать в первую очередь по внешнему периметру нет. И вроде бы внедряются технические средства, различные сканеры, межсетевые экраны, WAF и другие средства, но во многих случаях проблема не в отсутствии инструментов, а в разрыве между выявленными уязвимостями и бизнес-ценностью активов, фрагментированной работой с данными разных средств защиты, и в отсутствии правильного сведения в единую картину данных от внешних и внутренних сканеров. Дальше разберу, как подойти к этой задаче с помощью фреймворка CTEM: связать результаты обнаружения с контекстом и телеметрией, получить управляемые приоритеты и доводить устранение до подтверждённого результата через повторную проверку. Почему именно периметр? Перед тем, как переходить к методологии, важно зафиксировать, почему внешний периметр почти всегда оказывается в фокусе. Периметр меняется быстрее всего. Появляются новые сервисы, конфигурации правятся, порты открываются и закрываются, где-то всплывают временные стенды и пилоты. И значительная часть рисков возникает именно на стыке изменений и контроля. По итогам 1-го полугодия 2025 года наши эксперты Innostage SOC CyberART зафиксировали рост OSINT-инцидентов на 50% почти до 10 тысяч. При этом более 70% таких инцидентов было связано с изменениями на периметре: открытие портов, смена конфигураций сервисов, появление новых ресурсов или изменения сведений о существующих. Это важный сигнал: периметр часто уязвим не только из-за конкретной уязвимости, а из-за неуправляемых изменений и слабого контроля того, что именно и как выставлено наружу.
https://habr.com/ru/companies/innostage/articles/995384/
#CTEM #Внешний_сетевой_периметр #управление_уязвимостями #ASM #Приоритизация_рисков #SIEM #телеметрия_безопасности #Проактивное_управление_угрозами #threat_intelligence #osint
-
CTEM для внешнего периметра
Привет, Хабр! Я Айдар Фатыхов, менеджер продуктов в Innostage. Хочу разобрать практическую задачу, с которой регулярно сталкиваются ИБ-команды крупных компаний: защита самой горячей точки в инфраструктуре – внешнего сетевого периметра. Отчёты по уязвимостям растут, поверхность атаки постоянно меняется и увеличивается, рук для закрытия рисков постоянно не хватает и ясного ответа, что закрывать в первую очередь по внешнему периметру нет. И вроде бы внедряются технические средства, различные сканеры, межсетевые экраны, WAF и другие средства, но во многих случаях проблема не в отсутствии инструментов, а в разрыве между выявленными уязвимостями и бизнес-ценностью активов, фрагментированной работой с данными разных средств защиты, и в отсутствии правильного сведения в единую картину данных от внешних и внутренних сканеров. Дальше разберу, как подойти к этой задаче с помощью фреймворка CTEM: связать результаты обнаружения с контекстом и телеметрией, получить управляемые приоритеты и доводить устранение до подтверждённого результата через повторную проверку. Почему именно периметр? Перед тем, как переходить к методологии, важно зафиксировать, почему внешний периметр почти всегда оказывается в фокусе. Периметр меняется быстрее всего. Появляются новые сервисы, конфигурации правятся, порты открываются и закрываются, где-то всплывают временные стенды и пилоты. И значительная часть рисков возникает именно на стыке изменений и контроля. По итогам 1-го полугодия 2025 года наши эксперты Innostage SOC CyberART зафиксировали рост OSINT-инцидентов на 50% почти до 10 тысяч. При этом более 70% таких инцидентов было связано с изменениями на периметре: открытие портов, смена конфигураций сервисов, появление новых ресурсов или изменения сведений о существующих. Это важный сигнал: периметр часто уязвим не только из-за конкретной уязвимости, а из-за неуправляемых изменений и слабого контроля того, что именно и как выставлено наружу.
https://habr.com/ru/companies/innostage/articles/995384/
#CTEM #Внешний_сетевой_периметр #управление_уязвимостями #ASM #Приоритизация_рисков #SIEM #телеметрия_безопасности #Проактивное_управление_угрозами #threat_intelligence #osint
-
CTEM для внешнего периметра
Привет, Хабр! Я Айдар Фатыхов, менеджер продуктов в Innostage. Хочу разобрать практическую задачу, с которой регулярно сталкиваются ИБ-команды крупных компаний: защита самой горячей точки в инфраструктуре – внешнего сетевого периметра. Отчёты по уязвимостям растут, поверхность атаки постоянно меняется и увеличивается, рук для закрытия рисков постоянно не хватает и ясного ответа, что закрывать в первую очередь по внешнему периметру нет. И вроде бы внедряются технические средства, различные сканеры, межсетевые экраны, WAF и другие средства, но во многих случаях проблема не в отсутствии инструментов, а в разрыве между выявленными уязвимостями и бизнес-ценностью активов, фрагментированной работой с данными разных средств защиты, и в отсутствии правильного сведения в единую картину данных от внешних и внутренних сканеров. Дальше разберу, как подойти к этой задаче с помощью фреймворка CTEM: связать результаты обнаружения с контекстом и телеметрией, получить управляемые приоритеты и доводить устранение до подтверждённого результата через повторную проверку. Почему именно периметр? Перед тем, как переходить к методологии, важно зафиксировать, почему внешний периметр почти всегда оказывается в фокусе. Периметр меняется быстрее всего. Появляются новые сервисы, конфигурации правятся, порты открываются и закрываются, где-то всплывают временные стенды и пилоты. И значительная часть рисков возникает именно на стыке изменений и контроля. По итогам 1-го полугодия 2025 года наши эксперты Innostage SOC CyberART зафиксировали рост OSINT-инцидентов на 50% почти до 10 тысяч. При этом более 70% таких инцидентов было связано с изменениями на периметре: открытие портов, смена конфигураций сервисов, появление новых ресурсов или изменения сведений о существующих. Это важный сигнал: периметр часто уязвим не только из-за конкретной уязвимости, а из-за неуправляемых изменений и слабого контроля того, что именно и как выставлено наружу.
https://habr.com/ru/companies/innostage/articles/995384/
#CTEM #Внешний_сетевой_периметр #управление_уязвимостями #ASM #Приоритизация_рисков #SIEM #телеметрия_безопасности #Проактивное_управление_угрозами #threat_intelligence #osint
-
Hoy es viernes y sabéis que significa... NES!!
Volvemos con la programación en ensamblador para NES. Pintaremos nuestro pato completo??
-
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% -
https://basiclang.solarpunk.au/d/9-tiny-basic-in-2k/5
for those interested in the code
-
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: https://github.com/AfaanBilal/NanoCore
#rustlang #ratatui #tui #emulator #asm #cpudev #lowlevel #terminal
-
Unloading LD_PRELOADed libraries.
#C #ASM #LowLevel #DynamicLinker #libC #ld_preload #programming #programacion #hacking
https://ibolcode.net/dmo-blog/2025-11-how-to-unload-a-ld-preload-library-the-hard-way
-
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.
https://github.com/ha1tch/go-simd-softmax?tab=readme-ov-file#simd-accelerated-softmax
#go #foss #softmax #asm #assembler #x86_64 #x64 #amd64 #assembly #golang
-
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!
-
🔜📝 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
-
🔜📝 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
-
Your digital perimeter isn’t what it used to be. ReversingLabs lays out 10 must-do moves to defang your attack surface before it bites back. https://jpmellojr.blogspot.com/2025/10/the-attack-surface-is-expanding-10-ways.html #AttackSurface #RiskManagement #ASM - #SecurityStrategy #AppSec
-
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.BCase 2 Excessive byte operations
Throughout the code, there's an unusual preference for byte operations:
MOVE.B (A0)+,D0
MOVE.B (A0)+,D1On 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.
https://www.brataccas.com/Page28.phpThe 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
-
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.BCase 2 Excessive byte operations
Throughout the code, there's an unusual preference for byte operations:
MOVE.B (A0)+,D0
MOVE.B (A0)+,D1On 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.
https://www.brataccas.com/Page28.phpThe 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
-
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.BCase 2 Excessive byte operations
Throughout the code, there's an unusual preference for byte operations:
MOVE.B (A0)+,D0
MOVE.B (A0)+,D1On 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.
https://www.brataccas.com/Page28.phpThe 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
-
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.BCase 2 Excessive byte operations
Throughout the code, there's an unusual preference for byte operations:
MOVE.B (A0)+,D0
MOVE.B (A0)+,D1On 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.
https://www.brataccas.com/Page28.phpThe 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
-
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.BCase 2 Excessive byte operations
Throughout the code, there's an unusual preference for byte operations:
MOVE.B (A0)+,D0
MOVE.B (A0)+,D1On 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.
https://www.brataccas.com/Page28.phpThe 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
-
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 https://github.com/flatduckrecords/zx-interface-1/blob/main/shadowload.asm
-
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?
-
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.
-
-
Experimental. Doesn't work well yet. Will take time to get this right.
-
So... I've had this under wraps for months, whilst I've been adding features and ironing out bugs...
I've already been showing:
zen80: zexall-tested z80 emulator
https://github.com/ha1tch/zen80zenZX: ZX Spectrum emulator (WIP)
https://oldbytes.space/@haitchfive/115159221509967137
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