Skip to content

Instantly share code, notes, and snippets.

@wolfmanjm
Created July 12, 2025 10:27
Show Gist options
  • Select an option

  • Save wolfmanjm/3d210dfdf6384a4c8f38623b31b41daa to your computer and use it in GitHub Desktop.

Select an option

Save wolfmanjm/3d210dfdf6384a4c8f38623b31b41daa to your computer and use it in GitHub Desktop.
neopixel.fs
\ neopixel.fs traffic lights a neopixel on pin 16, done in assembly bit blitting the data
: neopixel
[
$7179 h, \ addi sp,sp,-48
$c006 h, \ sw ra,0(sp)
$c20e h, \ sw gp,4(sp)
$c412 h, \ sw tp,8(sp)
$c616 h, \ sw t0,12(sp)
$c81a h, \ sw t1,16(sp)
$ca1e h, \ sw t2,20(sp)
$cc22 h, \ sw s0,24(sp)
$ce26 h, \ sw s1,28(sp)
$d02a h, \ sw a0,32(sp)
$d22e h, \ sw a1,36(sp)
$d432 h, \ sw a2,40(sp)
$d636 h, \ sw a3,44(sp)
$22f1 h, \ jal 20000248 <main>
$4082 h, \ lw ra,0(sp)
$4192 h, \ lw gp,4(sp)
$4222 h, \ lw tp,8(sp)
$42b2 h, \ lw t0,12(sp)
$4342 h, \ lw t1,16(sp)
$43d2 h, \ lw t2,20(sp)
$4462 h, \ lw s0,24(sp)
$44f2 h, \ lw s1,28(sp)
$5502 h, \ lw a0,32(sp)
$5592 h, \ lw a1,36(sp)
$5622 h, \ lw a2,40(sp)
$56b2 h, \ lw a3,44(sp)
$6145 h, \ addi sp,sp,48
$8082 h, \ ret
$b0002373 , \ csrr t1,mcycle
$06830293 , \ addi t0,t1,104
$b0002373 , \ csrr t1,mcycle
$fe536ee3 , \ bltu t1,t0,200000a2 <delay800ns+0x8>
$8082 h, \ ret
$b0002373 , \ csrr t1,mcycle
$06330293 , \ addi t0,t1,99
$b0002373 , \ csrr t1,mcycle
$fe536ee3 , \ bltu t1,t0,200000b4 <delay850ns+0x8>
$8082 h, \ ret
$b0002373 , \ csrr t1,mcycle
$02930293 , \ addi t0,t1,41
$b0002373 , \ csrr t1,mcycle
$fe536ee3 , \ bltu t1,t0,200000c6 <delay450ns+0x8>
$8082 h, \ ret
$b0002373 , \ csrr t1,mcycle
$02d30293 , \ addi t0,t1,45
$b0002373 , \ csrr t1,mcycle
$fe536ee3 , \ bltu t1,t0,200000d8 <delay400ns+0x8>
$8082 h, \ ret
$1171 h, \ addi sp,sp,-4
$c006 h, \ sw ra,0(sp)
$3e800293 , \ li t0,1000
$02550533 , \ mul a0,a0,t0
$3775 h, \ jal 2000009a <delay800ns>
$ce050513 , \ addi a0,a0,-800
$fea04de3 , \ bgtz a0,200000ee <delayus+0xc>
$4082 h, \ lw ra,0(sp)
$0111 h, \ addi sp,sp,4
$8082 h, \ ret
$1171 h, \ addi sp,sp,-4
$c006 h, \ sw ra,0(sp)
$85aa h, \ mv a1,a0
$3e800513 , \ li a0,1000
$3fe9 h, \ jal 200000e2 <delayus>
$15fd h, \ addi a1,a1,-1
$feb04ce3 , \ bgtz a1,20000104 <delayms+0x6>
$4082 h, \ lw ra,0(sp)
$0111 h, \ addi sp,sp,4
$8082 h, \ ret
$28a01333 , \ bset t1,zero,a0
$d00002b7 , \ lui t0,0xd0000
$0062ac23 , \ sw t1,24(t0) # d0000018 <GPIO_OUT+0x8>
$8082 h, \ ret
$28a01333 , \ bset t1,zero,a0
$d00002b7 , \ lui t0,0xd0000
$0262a023 , \ sw t1,32(t0) # d0000020 <GPIO_OUT+0x10>
$8082 h, \ ret
$400382b7 , \ lui t0,0x40038
$205542b3 , \ sh2add t0,a0,t0
$0042a303 , \ lw t1,4(t0) # 40038004 <GPIO_0_PAD>
$04034313 , \ xori t1,t1,64
$0c037313 , \ andi t1,t1,192
$6385 h, \ lui t2,0x1
$0072e2b3 , \ or t0,t0,t2
$0062a223 , \ sw t1,4(t0)
$400282b7 , \ lui t0,0x40028
$205562b3 , \ sh3add t0,a0,t0
$00b2a223 , \ sw a1,4(t0) # 40028004 <GPIO_0_CTRL>
$4003b2b7 , \ lui t0,0x4003b
$205542b3 , \ sh2add t0,a0,t0
$10000313 , \ li t1,256
$0062a223 , \ sw t1,4(t0) # 4003b004 <GPIO_25_PAD+0x2f9c>
$8082 h, \ ret
$400382b7 , \ lui t0,0x40038
$205542b3 , \ sh2add t0,a0,t0
$0042a303 , \ lw t1,4(t0) # 40038004 <GPIO_0_PAD>
$fcf00393 , \ li t2,-49
$00737333 , \ and t1,t1,t2
$00459393 , \ slli t2,a1,0x4
$00736333 , \ or t1,t1,t2
$0062a223 , \ sw t1,4(t0)
$8082 h, \ ret
$1161 h, \ addi sp,sp,-8
$c006 h, \ sw ra,0(sp)
$c226 h, \ sw s1,4(sp)
$84aa h, \ mv s1,a0
$d00002b7 , \ lui t0,0xd0000
$28901333 , \ bset t1,zero,s1
$0462a023 , \ sw t1,64(t0) # d0000040 <GPIO_OE+0x10>
$0262a023 , \ sw t1,32(t0)
$8526 h, \ mv a0,s1
$4595 h, \ li a1,5
$3759 h, \ jal 20000132 <set_function>
$d00002b7 , \ lui t0,0xd0000
$28901333 , \ bset t1,zero,s1
$0262ac23 , \ sw t1,56(t0) # d0000038 <GPIO_OE+0x8>
$8526 h, \ mv a0,s1
$458d h, \ li a1,3
$3f45 h, \ jal 2000016e <set_drive>
$4082 h, \ lw ra,0(sp)
$4492 h, \ lw s1,4(sp)
$0121 h, \ addi sp,sp,8
$8082 h, \ ret
$1171 h, \ addi sp,sp,-4
$c006 h, \ sw ra,0(sp)
$4541 h, \ li a0,16
$37a1 h, \ jal 20000116 <pin_high>
$35e9 h, \ jal 2000009a <delay800ns>
$3f89 h, \ jal 20000124 <pin_low>
$35ed h, \ jal 200000be <delay450ns>
$4082 h, \ lw ra,0(sp)
$0111 h, \ addi sp,sp,4
$8082 h, \ ret
$1171 h, \ addi sp,sp,-4
$c006 h, \ sw ra,0(sp)
$4541 h, \ li a0,16
$3f15 h, \ jal 20000116 <pin_high>
$35f5 h, \ jal 200000d0 <delay400ns>
$3f3d h, \ jal 20000124 <pin_low>
$35d1 h, \ jal 200000ac <delay850ns>
$4082 h, \ lw ra,0(sp)
$0111 h, \ addi sp,sp,4
$8082 h, \ ret
$1171 h, \ addi sp,sp,-4
$c006 h, \ sw ra,0(sp)
$8e2a h, \ mv t3,a0
$43dd h, \ li t2,23
$487e5eb3 , \ bext t4,t3,t2
$000e8463 , \ beqz t4,20000204 <np_send+0x14>
$37e1 h, \ jal 200001c8 <np_one>
$a011 h, \ j 20000206 <np_send+0x16>
$3fe1 h, \ jal 200001dc <np_zero>
$13fd h, \ addi t2,t2,-1 # fff <RVCSR_MEINEXT_OFFSET+0x41b>
$fe03d8e3 , \ bgez t2,200001f8 <np_send+0x8>
$4082 h, \ lw ra,0(sp)
$0111 h, \ addi sp,sp,4
$8082 h, \ ret
$01059293 , \ slli t0,a1,0x10
$00851313 , \ slli t1,a0,0x8
$0062e2b3 , \ or t0,t0,t1
$00c2e2b3 , \ or t0,t0,a2
$8516 h, \ mv a0,t0
$8082 h, \ ret
$1171 h, \ addi sp,sp,-4
$c006 h, \ sw ra,0(sp)
$37e5 h, \ jal 20000212 <np_setrgb>
$37d1 h, \ jal 200001f0 <np_send>
$4082 h, \ lw ra,0(sp)
$0111 h, \ addi sp,sp,4
$8082 h, \ ret
$1171 h, \ addi sp,sp,-4
$c006 h, \ sw ra,0(sp)
$4541 h, \ li a0,16
$35ed h, \ jal 20000124 <pin_low>
$06400513 , \ li a0,100
$354d h, \ jal 200000e2 <delayus>
$4082 h, \ lw ra,0(sp)
$0111 h, \ addi sp,sp,4
$8082 h, \ ret
$1171 h, \ addi sp,sp,-4
$c006 h, \ sw ra,0(sp)
$32025073 , \ csrwi mcountinhibit,4
$4541 h, \ li a0,16
$3f3d h, \ jal 20000190 <set_pin_output>
$3dc1 h, \ jal 20000124 <pin_low>
$0ff00513 , \ li a0,255
$4581 h, \ li a1,0
$4601 h, \ li a2,0
$37e1 h, \ jal 20000226 <np_send_rgb>
$3fd1 h, \ jal 20000234 <np_reset>
$3e800513 , \ li a0,1000
$3d61 h, \ jal 200000fe <delayms>
$4501 h, \ li a0,0
$0ff00593 , \ li a1,255
$4601 h, \ li a2,0
$3f5d h, \ jal 20000226 <np_send_rgb>
$37c9 h, \ jal 20000234 <np_reset>
$3e800513 , \ li a0,1000
$3559 h, \ jal 200000fe <delayms>
$4501 h, \ li a0,0
$4581 h, \ li a1,0
$0ff00613 , \ li a2,255
$3755 h, \ jal 20000226 <np_send_rgb>
$3f45 h, \ jal 20000234 <np_reset>
$3e800513 , \ li a0,1000
$3d95 h, \ jal 200000fe <delayms>
$0ff00513 , \ li a0,255
$0ff00593 , \ li a1,255
$0ff00613 , \ li a2,255
$3779 h, \ jal 20000226 <np_send_rgb>
$3f69 h, \ jal 20000234 <np_reset>
$3e800513 , \ li a0,1000
$3db9 h, \ jal 200000fe <delayms>
\ $bf55 h, \ j 20000256 <main+0xe>
$4082 h, \ lw ra,0(sp)
$0111 h, \ addi sp,sp,4
$8082 h, \ ret
]
;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment