Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View gabonator's full-sized avatar
👨‍🏭
at work

Gabriel Valky gabonator

👨‍🏭
at work
View GitHub Profile
@gabonator
gabonator / gccstdversion.sh
Last active July 12, 2023 13:38
gcc check standard version
# Requesting c++20 standard in gcc commandline does not ensure that it is supported or will be used,
# dumping the __cplusplus reveals that gcc completely ignores this request without any warning or error
# Such problems leads to similar error messages:
# main.cpp:1:24: error: ‘bit_cast’ is not a member of ‘std’; did you mean ‘bad_cast’?
#
#
# This shell script prints
# #define __cplusplus 202002L
# or
# #define __cplusplus 201709L
@gabonator
gabonator / gtest.sh
Created June 29, 2023 09:46
google test cross compile minimal setup with cmake
cat > main.cpp <<- EOM
#include <gtest/gtest.h>
TEST(group, name)
{
printf("Hello!\n");
}
EOM
cat > CMakeLists.txt <<- EOM
FROM node:10-alpine
RUN mkdir -p /src/app
WORKDIR /src/app
COPY package.json /src/app/package.json
RUN npm install
COPY . /src/app
EXPOSE 3000
@gabonator
gabonator / rle.c
Created February 14, 2023 10:05
run length encoder/decoder
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include "testrle.h"
typedef uint8_t UINT8;
typedef int INTN;
typedef void VOID;
#define ASSERT assert
@gabonator
gabonator / makefs.sh
Created February 14, 2023 10:04
make fat12/fat16/fat32 fs image
set -e
set -x
# FAT12 - min 64KB:
# dd if=/dev/zero of=test.img count=64 bs=1K
# mkfs.vfat -v -F 12 -S 512 -s 4 test.img
# FAT16 - min 9MB:
# dd if=/dev/zero of=test.img count=9 bs=1M
# mkfs.vfat -v -F 16 -S 512 -s 4 test.img
# FAT32 - min 256MB (cannot allocate):
# dd if=/dev/zero of=test.img count=256 bs=1M
@gabonator
gabonator / code.cpp
Created February 11, 2023 14:46
Novation mini mk3 hack - image editor
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
extern "C" uint32_t LED_BUFFER[];
extern "C" uint8_t MODE;
extern "C" int32_t TICKMS;
enum {Width = 32};
uint32_t image[Width][8] = {0};
uint32_t color = 0xab00cd;
@gabonator
gabonator / code.c
Created February 8, 2023 17:27
Novation mini mk3 hack - simple editor
#include <stdint.h>
#define LED_BUFFER ((uint32_t*)0x20000304)
#define REFRESH_BUFFER ((uint32_t*)0x20006754)
uint8_t buttonMap[8][8];
uint8_t image[8][8];
uint32_t getPixel(int x, int y)
{
@gabonator
gabonator / code.c
Created February 7, 2023 20:14
Novation mini mk3 hack
#include <stdint.h>
#define LED_BUFFER ((uint32_t*)0x20000304)
#define REFRESH_BUFFER ((uint32_t*)0x20006754)
#define draw(p) { \
uint8_t f = (9 - p / 10) * 10 + p % 10; \
LED_BUFFER[f] = c; \
REFRESH_BUFFER[f] = REFRESH_BUFFER[f] & 0xF8; \
}
@gabonator
gabonator / convert.js
Created February 6, 2023 07:12
novation mini mk3 disassembly
var fs=require("fs");
var input = fs.readFileSync("input.s").toString().split("\n");
var re = new RegExp("^ ([0-9a-f]{7}):\t(.*?)\t(.*)$")
var undef32 = new RegExp("; <UNDEFINED> instruction: 0x([0-9a-f]{8})$");
var comment = new RegExp("^(.+\t.+\t);( .*)$")
var wrong = ["vrev64.32", "stmia", "movs r0, r0", "lsrs",
"vshr.u32", "illegal", "UNDEFINED", "<und>", ".s", ".u", "hlt ",
"vst2", "mrrc2", ".f", "cdp2", "bhi.n", "vtbl.8", "mrc", "mcr", "undefined",
@gabonator
gabonator / uefiprint.c
Created January 26, 2023 11:26
uefi debug print, debug anywhere or in release
#include <Library/SerialPortLib.h>
#include <Library/PrintLib.h>
VOID EFIAPI InternalPrintMessage(IN CONST CHAR8 *Format, ...)
{
CHAR8 Buffer[1024];
VA_LIST Marker;
VA_START (Marker, Format);
AsciiVSPrint (Buffer, sizeof (Buffer), Format, Marker);
VA_END (Marker);