Тёмный
No video :(

ARM 3D 10 PRINT using the BBC BASIC assembler 

Least Significant Byte
Подписаться 1,6 тыс.
Просмотров 1,6 тыс.
50% 1

My first ARM assembly language program - we convert the 3D 10 PRINT program from 6502 assembler to ARM assembler, using the built-in assembler in BBC BASIC V for the ARM on the ARM Native coprocessor on the PiTubeDirect, and the TWIN text editor from the ARM Evaluation System software discs.
We first do a straight conversion then optimise things by using LDRB with post-increment, some reverse subtracts and adds with the barrel shifter, then some conditional execution of instructions. We then rewrite the linear feedback shift register (LFSR) random number function into a more ARM-friendly version, using a routine from the ARM Evaluation System's assembler instruction manual.
Finally, we explore how the ADR instruction works and ARM code loads an address into a register, and see how that makes code automatically relocatable.
Then, for a bonus moment, we switch over to the PiTubeDirect hognose release's native frame buffer to give things a generous performance boost.

Опубликовано:

 

5 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 13   
@markfisher696
@markfisher696 3 месяца назад
This was another excellently paced and entertaining video, thank you! All the way through I was thinking "but surely the bottle neck is in displaying via the 8 bit hardware, so the speed ups can't be seen", and then wham you hit us with the pi vdu. Bravo
@hanniffydinn6019
@hanniffydinn6019 Год назад
Since ARM rules the world now, it must be the best machine Language! I love 6502 though, since it’s the first machine code I learnt as a kid! 😎😎😎👍👍👍
@edgeeffect
@edgeeffect 10 месяцев назад
Old school ARM is probably very nice... but I find "modern" ARM with multiple levels of "evolution" built on top to be nearly as complex as x86. Especially after a few years of AVR which has that delightful simplicity that I remember from my Z80/6502/6800 days.
@hanniffydinn6019
@hanniffydinn6019 10 месяцев назад
@@edgeeffect I dunno looking at original ARM, it was remarkably forward thinking with 32 bit registers etc…
@edgeeffect
@edgeeffect 10 месяцев назад
Woah... I last saw BBC BASIC on a Model B... this is all rather posh. I loved the assembler, in later years when I've used other assemblers, I always find myself thinking how much nicer/easier it would be if I had the BBC BASIC assembler.
@paulwratt
@paulwratt Год назад
Of all the ways to learn ARM Assembler (and machine code) I think this is probably one of the best, bonus being PiTUBE has access to various other CPU, and the idea of porting 3D 10PRINT is very practical - those small byte counts would also make for a good screensaver (except mostly we dont need them anymore)
@DAVIDGREGORYKERR
@DAVIDGREGORYKERR Год назад
The ARM chip has the MUL R0,R0,R8 instruction as well as DIV RO,RO,R8 as well as UMUL and UDIV
@lsbyte
@lsbyte Год назад
I think that the first register to be multiplied cannot be the same as the destination register - e.g. you can do MUL R0,R8,R0 but not MUL R0,R0,R8. DIV isn't supported in BBC BASIC V (although I think if I manually fed in the opcode, the code would run). That said, I don't think either would be helpful in this program. Also, I was trying to stick to the original ARM1/2 instruction sets (although I do know of a problem with that which I overlooked!) so I could run things under the ARM2 coprocessor on the PiTubeDirect. I had some problems with that which I've now resolved and could cover later - I decided the video was too long anyway, so didn't touch that!
@tim_jones
@tim_jones Год назад
Brilliant! Thoroughly enjoyed this.
@Spongman
@Spongman Год назад
Excellent. Again.
@edgeeffect
@edgeeffect 10 месяцев назад
Is there a MIPS processor option in that PiTube thingy?
@lsbyte
@lsbyte 10 месяцев назад
Don't think so - all the processors are listed when you do CALL &2000 on a 6502 copro, or do *HELP COPROS on the ARM Native processor, as shown here: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-AhAzVnUva-k.html
@DAVIDGREGORYKERR
@DAVIDGREGORYKERR Год назад
What about SEED=(((SEED*1103515245)+12345)%256), If you want totally no linear what about using DES64 in CBC mode to generate random numbers.
Далее
Acorn Archimedes A3010: Was It Better Than The Amiga?
21:57
Will A Guitar Boat Hold My Weight?
00:20
Просмотров 16 млн
6502 3D 10 PRINT using the BBC BASIC assembler
36:32
Просмотров 4,2 тыс.
BBC Master MegaROM customisation and MultiOS boards
17:04
Starting BASIC with the BBC Microcomputer - Master Class
1:02:05