Skip to content

Instantly share code, notes, and snippets.


Sam Castleberry castleberrysam

View GitHub Profile
View configuration.nix
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, ... }:
imports = [ ./hardware-configuration.nix ];
# Use the systemd-boot EFI boot loader.
View snprintf_double.S
;; compiled with -O0
ldr r2, .L14+56
ldr r3, [r7, #52]
ldr r3, [r2, r3, lsl #2]
lsrs r3, r3, #2
str r3, [r7, #28]
ldr r0, [r7, #28]
bl __aeabi_ui2d
View aeabi_ui2d.S
ARM_FUNC_ALIAS aeabi_ui2d floatunsidf
teq r0, #0
do_it eq, t
moveq r1, #0
do_push {r4, r5, lr} @ sp -= 12
.cfi_adjust_cfa_offset 12 @ CFA is now sp + previousOffset + 12
View macros.lua
Generates a diagram for bitfields in a register, data type, or data structure.
The single arg is a comma separated list.
A normal entry is two elements, the first is the field name and the second is the bit width.
There are also directives, starting with !, to change the table formatting.
Inserts a visual break in the row, for grouping fields together into larger objects.
castleberrysam / pinout.txt
Created Aug 9, 2018
GPIO connections for BYK870 based keyboards (WIP)
View pinout.txt
rows and column numbers start at the bottom left
P0.2: USB pin D+
P0.3: USB pin D-
P0.4: USB pin D+ pulldown (used during reset)
P2.0: USB pin D- pullup (used during reset)
P0.5: switch row 6 drive
P0.6: switch row 5 drive
P0.7: switch row 4 drive
castleberrysam / byk8xx.cpp
Last active Nov 24, 2018
Some reverse engineered C++ code from the BYK8xx firmware update utility
View byk8xx.cpp
#include <stdio.h>
extern char *fw_data;
extern int fw_len;
// used to hold the RunOnlyOneUpdateTools mutex
extern HANDLE dword_458908;
// used to hold the first byte pair after the firmware header
extern int dword_45868c;
castleberrysam /
Created Jul 29, 2018
Image extractor/decrypter for Beiying K8xx firmware updater utilities
#!/usr/bin/env python3
import sys
from struct import *
def decrypt8(int0, int1, key):
garbage = 0xc6ed3720
for i in range(32):
edi = (key[3] + (int0 >> 5)) & 0xffffffff
ebx = (key[2] + (int0 << 4)) & 0xffffffff
View forth.txt
(mov %r4 0) ; zero KEY input buffer count
(mov (@+ %r4 #xffe0) %r4)
(mov (@+ %r4 #x8014) %r4) ; zero end of CONTEXT
(mov %r5 (@+ %r4 |FORTH-PTR|)) ; initialize FORTH dictionary
(mov (@+ %r4 #x8018) %r5)
(mov %r5 (@+ %r4 |ROOT-PTR|)) ; initialize ROOT dictionary
(mov (@+ %r4 #x801a) %r5)
View fibonacci.txt
uint16_t fibonacci(uint16_t n)
uint16_t first = 1;
uint16_t second = 1;
while(n > 1) {
uint16_t tmp = first + second;
second = first;
first = tmp;
View insn_set_v3.txt
16 registers
R0: program counter
R1: stack pointer
R15: link register
PUSH R 0000rrrr
CALL R, C 1001rrrr cccccccc cccccccc
POP R 0001rrrr