RSSAmplifier

Blog

Remy Noulin's Blog

about Linux and POSIX systems

noulin.netRSS feed ↗10 posts

Latest posts

I converted an xkcd drawing to unicode text

The drawing uses 2 by 3 pixel characters (sextant) from the symbols for legacy computers unicode block (unicode version 13). I resized the original drawing with gimp, decreased the color depth to 2 colors and converted the image using image magick convert to text. xkcd average familiarity Average familiarity Silicate chemestry is second nature to us geochemists, so it's easy to forget that the…

Comparing my C16 CPU to Intel CPU opcodes

I wrote a simple version of the Celeste game for my C16 CPU and then wrote the same program in Intel assembly. Celeste My C16 CPU isa When doing this, I felt like I was playing the TIS-100 game. TIS-100 - The Assembly Language Puzzle Game My celeste implementation likely doesn't work, only the clouds and snow are working. There are bugs, probably integer overflows (pico8 uses fixed point 16…

Computers I owned overtime

The computers I owned since 1982 are: Date Discarded Model CPU Freq Cores RAM Storage Resolution 1982-12-25 1986-12-25 Sinclair ZX spectrum 48 Z80 3.5Mhz 1 48KB Tape 256x192 15 colors 1986-12-25 1990-11-29 Amstrad CPC 6128 Z80 4Mhz 1 128KB 3inch disk 160×200 16 colors 320×200 4 colors, 640×200 2 colors 1990-12-15 1992-12-18 PC 286 12.5Mhz 1 1MB 40MB HD 640x480 256 colors 1992-12-05 1994-10-02 PC…

Goldschmidt division

The Goldschmidt division algorithm is a fast division using the Newton-Raphson approximation. Goldschmidt division on wikipedia It is an algorithm computing the quotient c of n (numerator) divided by d (divider). c = n / d The Newton-Raphson approximation estimates 1/d and the quotient is then: c = n * (1/d) 1/d is estimated by iterating this: x = x * (2 - x * d) The quotient c is estimated with:…

My system with the c16 CPU and Gpu1

My system has 2 devices: the 32bit c16 CPU and Gpu1 and I call it the nova system . C16 CPU Gpu1 Verilog tools The c16 is connected to Gpu1 with a 32 bit bus (point to point) and there is an interrupt line connected from the GPU to the CPU. The GPU triggers an interrupt (interrupt 8 in the CPU) at the end of each frame, 60 times per second. ┏━━━━━━━━━┓ ┏━━━━━━┓ ┏━━━━━━┓ Buttons━━━▶┃ c16 CPU…

PPM image format

The PPM image format is an evolution of the PBM which was monochrome, PPM has RGB colors. Netpbm wikipedia I use PPM images in P3 or P6 formats because they are easy to generate in programs and are supported by image magick, gimp, geeqie and many other software. The P3 format is regular text like this: P3 3 2 255 255 0 0 0 255 0 0 0 255 255 255 0 255 255 255 0 0 0 The first 3 lines are the header…

My 2D GPU: Gpu1

Gpu1 is a GPU without a framebuffer, the pixels are generated just in time to display like the arcade machine and game console from the 80s and 90s. Related: System with the c16 CPU and Gpu1 C16 CPU Verilog tools It has 128 hardware sprites of any size (no tiles) and 16 color palettes, each sprite has a single color palette. Current resolution is 320x480 and later will be 720x480 with a refresh…

Simple vim-like editor

I have a TUI widget library with a basic editbox which similar to the basic editbox in the web browsers. This editbox widget is used in my ink markdown editor. My TUIs Lately I thought I want something more advanced than a simple editbox and I created the viBox widget and the vink markdown editor. This viBox widget is vim-like and I didn't implement registers, scripting and many other things. vink…

Using Verilator and other EDA tools

The EDA tools I'm using are: verilator , gtkwave and vivado verilator is a verilog hardware simulator gtkwave is signal viewer for signals generated by verilator vivado is the Xilinx/AMD tool to compile verilog code and configure FPGAs verilator and gtkwave are open souce and vivado is free for small FPGAs. These tools are not well integrated together but they are good enough for small designs and…

My CPU - the C16

The C16 CPU has 32 general purpose registers each 16bit, 32bit or 64bit wide. Related: System with the c16 CPU and Gpu1 Gpu1 Verilog tools I don't use the version with 16bit wide registers because the address space is too small and it needed banking RAM to address more than 64KB. The ISAs for the 32bit and 64bit version are identical, a 64bit program can run on the 32bit CPU with small changes,…