3-Pixels wide ASCII Font

AllyCat

Senior Member
Around Maximum Size (10,000 bytes) for a Forum Post. Updated font data,
Character Rounding Pixels Patching data, and some #DEFINEs added. 5/4/26
Code:
data 24,(0 ,$21 ,$41)                 ; "14"    ; Single patchbytes
data 27,($20,$50 ,$24,$54 ,$2C,$6B)  ; "MmQ"   ; Two pixels per character
data    ($2D,$5D ,$2D,$5D)            ; "Ww"
data 37,($48,$49,$44,$45)             ; "N"     ; Four pixels per char
data 41,($14,$16,$37,$44,$54,$56)    ; "~"     ; Six pixels per char
#define rep
#define ppad
#define padp

tree:
  REPT = pix              ; Store last value in case repeat required
  rank = chr / 16 - 2    ; First 32 codes skipped, then blocks of 16 ASCII codes
  sub = chr AND 15       ; Subgroup
again:
  pix = NOPIX      ; To trap any missing characters and columns of pixels
   on rank goto SYM,NUM,CAP1,CAP2,LOW1,LOW2 ,EXT1,EXT2
eac7: lookup pcol,($3E, $22, $3E),pix : Return ;  Box ; Delete = Not Found
; Catch all undefined
SYM:  on sub goto a32,a33,a34,a35,a36,a37,a38,a39, t40,a41,a42,a43,a44,a45,a46,a47
a32: lookup pcol,(ppad $80 padp),pix : Return ; half-width ; space (underlined)
a33: lookup pcol,(ppad $5F padp),pix : Return              ; !
a34: lookup pcol,($03, $00, $03),pix : Return    ; quotes ; "
a35: lookup pcol,($3E, $14, $3E),pix : Return             ; #
a36: lookup pcol,($2C, $7F, $1A),pix : Return             ; $
a37: lookup pcol,($33, $08, $66),pix : Return ; Vert dots ; %
a38: lookup pcol,($3E, $4D, $76),pix : Return             ; &
a39: lookup pcol,(ppad $03 padp),pix : Return      ; quote ; '
t40: lookup pcol,($1C, $22, $41),pix : Return             ; (
a41: lookup pcol,($41, $22, $1C),pix : Return             ; )
a42: lookup pcol,($2A, $1C, $2A),pix : Return             ; *
a43: lookup pcol,($08, $3E, $08),pix : Return             ; +
a44: lookup pcol,($40, $30 padp),pix : Return     ; comma ; ,
a45: lookup pcol,($08, $08 rep, $08),pix : Return ; minus ; -
a46: lookup pcol,(ppad $30 padp),pix : Return ; larger dot ; .
a47: lookup pcol,($60, $18, $06),pix   : Return           ; /

NUM:  on sub goto a48,a49,t50,a51,a52,a53,a54,a55, a56,a57,a58,a59,t60,a61,a62,a63
a48: lookup pcol,($7F, $41 rep, $7F),pix : Return ; square ; 0
a49: lookup pcol,($42, $7F, $40),pix : Return              ; 1
t50: lookup pcol,($62, $51, $4E),pix : Return              ; 2
a51: lookup pcol,($22, $49, $36),pix : Return              ; 3
a52: lookup pcol,($1C, $12, $7F),pix : Return              ; 4
a53: lookup pcol,($27, $45, $39),pix : Return ;     higher ; 5
a54: lookup pcol,($3C, $4A, $31),pix : Return              ; 6
a55: lookup pcol,($71, $09, $07),pix : Return              ; 7
a56: lookup pcol,($36, $49, $36),pix : Return              ; 8
a57: lookup pcol,($46, $29, $1E),pix : Return              ; 9
a58: lookup pcol,(ppad $36 rep padp),pix : Return ;   Colon ; :
a59: lookup pcol,($40, $36 rep padp),pix : Return ; S_colon ; ;
t60: lookup pcol,($08, $14, $22),pix : Return              ; <
a61: lookup pcol,($14, $14 rep, $14),pix : Return          ; =
a62: lookup pcol,($22, $14, $08),pix : Return              ; >
a63: lookup pcol,($02, $59, $06),pix : Return              ; ?

CAP1: on sub goto a64,a65,a66,a67,a68,a69,t70,a71, a72,a73,a74,a75,a76,a77,a78,a79
a64: lookup pcol,($3E, $45, $2E),pix : Return       ; @
a65: lookup pcol,($7E, $09 rep, $7E),pix : Return   ; A
a66: lookup pcol,($7F, $49 rep, $36),pix : Return   ; B
a67: lookup pcol,($3E, $41 rep, $22),pix : Return   ; C
a68: lookup pcol,($7F, $41 rep, $3E),pix : Return   ; D
a69: lookup pcol,($7F, $49 rep, $41),pix : Return   ; E
t70: lookup pcol,($7F, $09 rep, $01),pix : Return   ; F
a71: lookup pcol,($3E, $41 rep, $72),pix : Return   ; G
a72: lookup pcol,($7F, $08 rep, $7F),pix : Return   ; H
a73: lookup pcol,($41, $7F, $41),pix : Return       ; I
a74: lookup pcol,($21, $41, $3F),pix : Return       ; J
a75: lookup pcol,($7F, $14, $63),pix : Return       ; K
a76: lookup pcol,($7F, $40 rep, $40),pix : Return   ; L
a77: lookup pcol,($7F, $02, $7F),pix : Return       ; M
a78: lookup pcol,($7F, $0C, $7F),pix : Return       ; N
a79: lookup pcol,($3E, $41 rep, $3E ),pix : Return  ; O

CAP2: on sub goto t80,a81,a82,a83,a84,a85,a86,a87, a88,a89,t90,a91,a92,a93,a94,a95
t80: lookup pcol,($7F, $09 rep, $06),pix : Return     ; P
a81: lookup pcol,($3E, $61, $7E),pix : Return         ; Q
a82: lookup pcol,($7F, $19, $66),pix : Return         ; R
a83: lookup pcol,($26, $49 rep, $32),pix : Return     ; S
a84: lookup pcol,($01 rep, $7F, $01 rep),pix : Return ; T
a85: lookup pcol,($3F, $40 rep, $3F),pix : Return     ; U
a86: lookup pcol,($1F, $60, $1F),pix : Return         ; V
a87: lookup pcol,($7F, $30, $7F),pix : Return ;       ; W
a88: lookup pcol,($63, $1C, $63),pix : Return ;       ; X
a89: lookup pcol,($07, $78, $07),pix : Return         ; Y
t90: lookup pcol,($71, $49, $47),pix : Return         ; Z
a91: lookup pcol,(ppad $7F, $41),pix  : Return        ; [
a92: lookup pcol,($06, $18, $60),pix : Return         ; \
a93: lookup pcol,($41, $7F padp),pix : Return         ; ]
a94: lookup pcol,($02, $01, $02),pix  : Return ; T caret ; ^
a95: lookup pcol,($40, $40 rep, $40),pix : Return ;  ; _

LOW1: on sub goto a96,a97,a98,a99,ta0,aa1,aa2,aa3, aa4,aa5,aa6,aa7,aa8,aa9,tb0,ab1
a96: lookup pcol,($01, $02 padp),pix : Return ; backquote ; `
a97: lookup pcol,($24, $54 rep, $78),pix : Return       ; a
a98: lookup pcol,($7F, $48 rep, $30),pix : Return       ; b
a99: lookup pcol,($38, $44 rep, $44),pix : Return       ; c
ta0: lookup pcol,($30, $48 rep, $7F),pix : Return       ; d
aa1: lookup pcol,($38, $54 rep, $58),pix : Return       ; e
aa2: lookup pcol,($08, $7E ,$09),pix : Return           ; f
aa3: lookup pcol,($98, $A4 rep, $78),pix : Return       ; g
aa4: lookup pcol,($7F, $08 rep, $70),pix : Return       ; h
aa5: lookup pcol,(ppad $3A, $40),pix : Return ; cursive ; i
aa6: lookup pcol,($40, $80, $7A),pix : Return           ; j
aa7: lookup pcol,($7F, $38, $44),pix : Return ;  narrow ; k
aa8: lookup pcol,(ppad $3F, $40),pix : Return ;  cursive ; l
aa9: lookup pcol,($7C, $08, $7C),pix : Return           ; m
tb0: lookup pcol,($7C, $04, $78),pix : Return           ; n

LOW2: on sub goto ab2,ab3,ab4,ab5,ab6,ab7,ab8,ab9, tc0,ac1,ac2,ac3,ac4,ac5,ac6,ac7
ab1: lookup pcol,($38, $44 rep, $38),pix : Return        ; o
ab2: lookup pcol,($FC, $24 rep, $18),pix : Return        ; p
ab3: lookup pcol,($18, $24 rep, $FC),pix : Return        ; q
ab4: lookup pcol,($7C, $08, $04),pix : Return            ; r
ab5: lookup pcol,($48, $54 rep, $24),pix : Return        ; s
ab6: lookup pcol,($04, $3F, $44),pix : Return            ; t
ab7: lookup pcol,($3C, $40 rep, $7C),pix : Return        ; u
ab8: lookup pcol,($1C, $60, $1C),pix : Return            ; v
ab9: lookup pcol,($7C, $20, $7C),pix : Return ;   narrow ; w
tc0: lookup pcol,($44, $38, $44),pix : Return ;  rounded ; x
ac1: lookup pcol,($9C, $A0, $7C),pix : Return            ; y
ac2: lookup pcol,($64, $54, $4C),pix : Return            ; z
ac3: lookup pcol,($04, $3E, $04),pix : Return ;  Obelisk ; Dagger
ac4: lookup pcol,(ppad $77 padp),pix  : Return ; Pipe/Bar ; |
ac5: lookup pcol,($22, $7F, $22),pix : Return ;   Diesis ; Double dagger
ac6: lookup pcol,($04, $0C, $04),pix : Return ;    Tilde ; T
ac7: lookup pcol,($80, $80, $80),pix : Return ;  3-width ; space (underlined)

#IFDEF ALTCHARS       ; remove e/f prefix to use in main routine
EXT1: on sub goto ea35,ea36,ea37,ea38,ea42,ea46,ea58,ea59, fa59,ea64,fa64,ea71,ea75,ea77,ea78,fa78
ea35: lookup pcol,($14, $3E, $14, $3E, $14),pix : Return       ; # 
ea36: lookup pcol,($24, $2A, $7F, $2A, $12),pix : Return       ; $
ea37: lookup pcol,($63, $13, $08, $64, $63),pix : Return ;   5 ; %
ea38: lookup pcol,($36, $49, $36, $50),pix : Return            ; &
ea42: lookup pcol,($22, $14, $7F, $14, $22),pix : Return       ; *
ea46: lookup pcol,(ppad $20 padp),pix : Return ;       small dot ; . 
' ea58: lookup pcol,(ppad $14 padp),pix  : Return ;     Small Colon ; :
fa59: lookup pcol,(ppad $20, $14),pix : Return ;  Small Semicolon ; ;
ea58: lookup pcol,(ppad $36, $36),pix : Return ;    Large Colon ; :
ea59: lookup pcol,(ppad $56, $36),pix : Return ; Large Semicolon ; ;
ea64: lookup pcol,($2E, $65, $2E),pix : Return ;             AT ; @
fa64: lookup pcol,($1C, $22, $49, $55, $5E),pix : Return ;   5 ; @
ea71: lookup pcol,($3E, $41, $51, $72),pix : Return             ; G
ea75: lookup pcol,($7F, $1C, $22, $41),pix : Return             ; K
ea77: lookup pcol,($7F, $02, $0C, $02, $7F),pix : Return ;  5 ; M
ea78: lookup pcol,($7F, $02, $7C),pix : Return ;         tall n ; N
' fa78: lookup pcol,($7F, $06, $18, $7F),pix : Return ;         4 ; N
fa78: lookup pcol,($7F, $04, $08, $10, $7F),pix : Return ;  5 ; N

EXT2:
on sub goto ea81,ea86,ea87,ea88,eaa5,eaa6,eaa7,eaa8, eaa9,etb0,eab8,eab9,etc0,eac3,eac5,eac6
ea81: lookup pcol,($3E, $41, $61, $5E),pix : Return             ; Q
ea86: lookup pcol,($07, $18, $60, $18, $07),pix : Return       ; V
ea87: lookup pcol,($3F, $40, $38, $40, $3F),pix : Return ;     ; W
ea88: lookup pcol,($63, $14, $08, $14, $63),pix : Return ;     ; X
eaa5: lookup pcol,(ppad $7A padp),pix : Return    ; narrow short ; i
eaa6: lookup pcol,($44, $7D, $40),pix : Return         ; serifs ; i
eaa7: lookup pcol,($7F, $10, $28, $44),pix : Return             ; k
eaa8: lookup pcol,(ppad $7F padp),pix : Return ;          narrow ; l
eaa9: lookup pcol,($7C, $04, $78, $04, $78),pix : Return ; Wide ; m
etb0: lookup pcol,($7C, $08, $04, $78),pix : Return             ; n
eab8: lookup pcol,($1C, $20, $40, $20, $1C),pix : Return ; wide ; v
eab9: lookup pcol,($3C, $40, $30, $40, $3C),pix : Return ; wide ; w
; etc0: lookup pcol,($6C, $38, $6C),pix : Return ;       no rounding ; x
etc0: lookup pcol,($44, $28, $10, $28, $44),pix : Return ; wide ; x
eac3: lookup pcol,($08, $36, $41),pix : Return                  ; {
eac5: lookup pcol,($41, $36, $08),pix : Return                  ; }
eac6: lookup pcol,($08, $04, $08, $04),pix : Return     ; Tilde 4 ; ~
#ELSE     ; No ALTCHARS
EXT1:
EXT2:
#ENDIF
 
Last edited:
Hi,

From Google: "..an isolated, secure environment used for safely testing software, running untrusted code, or allowing creative, unrestricted play in video games". I used it to check that the (currently unfinished/unverified) code module will fit within the forum's infuriating 10,000 characters limit, whilst preparing text for the thread HERE, that will explain how to use it. Should be posted within a few days, but seems it will need three separate posts !

Cheers, Alan.
 
Last edited:
I created a similar 3x5 font HERE in this post. See it working in the video.

Sorry, the question was a bit rhetorical, have been using sandboxes since I was 5...

Solderless breadboards could be considered as a sandboxes for prototyping. Today, I use virtual machines such as VMware (when I was working) and currently VirtualBox (in retirement) as sandboxes to test software distributions. If it doesn't work, blow it away and reload from a NAS.

I follow your posts closely as there is a wealth of information in them. THANKS
 
Back
Top